2013년 2월 15일 금요일

Blackhole Toolkit 흐름도

q  개요

2012 9 Blackhole Exploit Toolkit의 최신버전인 Ver2.0에 대한 정보가 해외 보안사이트에서
확인 되었습니다. 그리고 9월 말 국내에서 Blackhole Exploit Toolkit 2.0을 이용한 악성코드 유포로
의심되는 이벤트가 발생되어 전체적인 흐름을 파악하기 위해 작성하였습니다. 오늘날까지 조금씩 변종되어
툴킷은 지속적으로 발생하고 있습니다.


q  악성코드 유포 흐름

1.    악성코드 유포 흐름도
- 해커가 Webhosting 업체를 장악 후 서비스를 받는 하위 웹사이트들을 이용하여 악성코드 유포 행위 포착

[그림 1. 악성코드 유포 흐름도]
√ 해커가 웹 호스트 업체 서버 장악 및 악성코드 유포지 선점
√ 사용자가 해당 업체에서 서비스 받는 웹사이트 접속 시 악성코드 유포지로 이동 (302 Redirection)
√ 악성코드 유포지로부터 악성파일이 설치되어 개인정보 유출
 
2.    확인된 악성코드 유포지 LIST (2012 10월 기준)

[그림 2. 악성코드 유포지 현황]


q  악성코드 분석

1.    요약

[그림 3. 악성코드 흐름도]
   사용자가 위/변조된 사이트(gxxxxx.co.kr/index.html) 접속 후 Blank.php 페이지 접속
   blank.php 코드의 특정조건(port:80 )에 맞으면 악성코드 유포지(Index_old.php) 302 redirect  
   시키고, 다르면 정상페이지로 이동
  paros 등을 사용하여 분석 시 어렵게 하기 위한 행위로 추정
   Index_old.php 코드에 의해 navigator.useragent 환경을 체크하여 복호화 수행
   Index2.php 코드는 러시아 성인사이트로 접속과 동시에 다양한 취약점을 내포하고 있는 main.php (blackhole exploit toolkit) 코드로 이동
   main.php 코드는 Java, PDF 취약점 존재 시 최종 악성파일을 다운받아 실행되도록 구현
   최종 악성파일(info.exe) 감염 시 외부로 SMTP 트래픽을 발생



2. 상세 분석

1) index.html (gxxxxx.co.kr/index.html)
- 해커가 삽입한 페이지로 추정되며 악성파일 다운로드를 유도하는 "blank.php" 와 정상 사이트의
  메인 페이지인 "main.php" 로 이동되게 구성



[그림 4. index.html 소스코드]

2) blank.php (gxxxxx.co.kr/blank.php)
- 특정조건(Port:80) 에 의해 맞으면 302 Redirection 기법으로 “index_old.php” 페이지로 이동

 
 [그림 5. Blank.php 접속화면]


3) index_old.php (wkxxxk.in/index_old.php -> wkxxxk.in/blank.php)
- index_old.php 코드에 의해 이동된 blank.php 파일은 난독화된 페이지로 “index2.php” 페이지로
접속을 유도하는 역할
- “navigator.useragent” 함수에 의해 분석자의 환경이 조건에 맞지 않는 경우 동작하지 않음
실제 분석 시 일부 코드를 수정하여 난독화 진행

[그림 6. Index_old.php 난독화]

4) index2.php (wkxxxk.in/index2.php)
- “blank.php” 와 동일한 방식으로 난독화된 페이지로 다양한 취약점을 내포하고 있는 “main.php”
   페이지로 접속을 유도하는 역할

[그림 7. index2.php 난독화]

5) main.php (wkxxxk.in/main.php)
- Blackhole Exploit Toolkit 2.0 Main으로 세 부분의 코드로 구분하여 확인
첫 번째 부분: “frame1.php” 페이지로 이동시키는 부분
두 번째 부분: PDF 취약점을 이용한 악성파일 다운로드 시도
세 번째 부분: java 취약점을 이용한 악성파일 다운로드 시도

첫 번째 부분 분석

 ≫ “blank.php” 와 동일한 패턴으로 난독화되어 있으며, “frame1.php” 페이지로 유도
A. 난독화 코드의 key 값을 찾은 후 “docment.write”를 이용하여 난독화 해제
    - “%(HEX) %(HEX)… “ 형태의 쉘코드 값을 확인
[그림 8-1. main.php 첫 번째 부분 난독화]

B. A에서 얻은 결과값에서 “%”를 모두 제거 후 malzilla Tool을 이용하여 XOR 연산
 - malzilla Tool을 사용하여 “http” 문자열의 Key 값을 찾아 XOR 연산
   - iframe 태그로 “wkmyk.in/frame1.php?src=14…” 연결 확인

[그림 8-2. main.php 첫 번째 부분 난독화]

≫ frame1.php 분석: “frame1.php”특정페이지로 접속을 시도하는 부분과 취약점을 이용하여  쉘코드를 실행하는 두 부분으로 이루어져 있다
A. iframe 태그를 이용하여 “frame2.php”으로 연결을 시도
  ⇒ “frame2.php접속 시 해당페이지는 존재하지 않음 (404 Not Found)

[그림 9-1. frame1.php 소스]

B. 취약점을 이용하여 쉘코드를 실행시키는 것으로 추정되지만, 코드가 손상되어 재현되지 않음

[그림 9-2. frame1.php 소스]

두 번째 부분 분석 (PDF 취약점)
 PDF 취약점을 이용한 ~/content/ap2.php (e8a11.pdf) 파일이 실행되어 악성코드에 감염
 A. PDF 파일에 삽입된 난독화 코드 복호화
[그림 10. ap2.php 복호화 과정]

▶ 세 번째 부분 분석 (Java 취약점)
- Java 취약점이 존재할 경우 Gam.jar 파일과 value 값을 이용하여 악성코드 유포지로 이동
- 제작자가 자신만의 키 값을 이용하여 value 값을 난독화
- “Secret Decoder Ring” Tool을 사용하여 악성코드 유포지 확인

[그림 11. main.php 세 번째 부분 난독화]


6) info.exe (wkxxk.in/g.php?f=952f5)
- Call 함수 내부 반복문 실행을 통하여 URL정보를 획득
악성코드 감염 시 사용자 정보를 수집하여 “http://wkxxxk.in/data/1209291325-2b51c555ec/590”에 전송 후
  응답에 따라 추가 행위를 할 것으로 추정되나 재현되지 않음
 


[그림 12. URL 정보 호출]

댓글 1개:

  1. 우왕! 너무 자세하게 잘 보았습니다~

    국내에도 익스플로릿 킷을 활동하는곳이 있다니 더더욱 놀라웠네요~

    답글삭제