[Analysis] - CK 익스플로잇 킷 분석(CK Exploit Kit Analysis) -1


이전 글에 이어서 이번에는 분석환경에서 동적 분석 과정을 적어봤습니다.


3. 동적 분석

환경은 Windows7 초기 순정버전에 업데이트 패치도 없는 기본 버전입니다.

분석은 Sysinternals Suite의 Process Explorer, Procmon, TCPView입니다.

Process Explorer는 현재 실행중인 프로세스의 정보를 볼 수 있고,

Procmon은 과거 따로 존재하던 Filemon과 Netmon, Regmon을 하나로 통합시켰고,

파일과 레지스트리의 생성, 수정, 삭제, 네트워크 연결 정보 등을 볼 수 있습니다.

(Sysinternals : https://technet.microsoft.com/en-us/sysinternals/bb545021.aspx)


우선 간단히 Process Explorer에서의 모습입니다.

  3-1. dll.exe 실행 전


  3-2. dll.exe 실행 후


보시다시피 rundll32.exe가 추가된 것을 볼 수 있습니다.

하지만 속성 정보를 보면 다른 파일을 참조하고 있다는 것을 볼 수 있습니다.



Command line 항목에서 zzEki.dll을 참조하고 있습니다.

해당 경로에 역시 파일 생성이 된 것을 볼 수 있구요.


다음으로 TCPView를 통해 정보를 보도록 하겠습니다.


파일을 실행 직후 101.71.8.138로 연결을 시도하는 것을 볼 수 있습니다.



해당 IP주소는 중국으로 되어있구요.

대부분의 중국발 공격이 Unicom이라는 ISP업체와 항저우에 위치하던데, 작업장이라도 있는건가 싶네요.

그리고 domain을 localhost로 잡고 있는 것을 볼 수 있습니다.



실제로 ipconfig을 통해 DNS 정보를 본 결과 127.0.0.1과 8.8.8.8의 localhost와 Google의 DNS 서버로 변경되어있었습니다.

이것만 보더라도 파밍공격을 위해 DNS를 Localhost로 변경했고, hosts 파일을 이용하려고 한다는 것을 알 수 있습니다.


hosts 파일에 적힌 내용은 DNS서버에 쿼리보다 더 우선순위가 높기때문에 hosts 파일에 적힌 도메인들은 DNS 서버를 거치지 않게 됩니다.

그리고 공격자가 hosts파일에 지정한 것들 외에는 구글의 DNS 서버를 거치게하여 사용자는 정상적인 인터넷 서비스를 사용 중이라고 느끼게 됩니다.


지금까지 어떤 파일이 실행되고, 생기고, 정보가 변경되고...등의 사항들은 Procmon에서 수집을 하게됩니다.

하지만 악성코드들 외에도 기본적으로 윈도우에서 동작하는 작업들도 있기 때문에 이벤트양은 1초당 수 만줄이 넘을 때가 대부분입니다.

따라서 필터링 기능을 잘 이용하는게 핵심이라고 볼 수 있습니다.


저는 필터에서 dll.exe 실행시간 이후부터 5초 정도를 필터링해서 File -> Save -> .CSV 파일로 저장하여 엑셀에서 분석했습니다.

5초 정도를 필터링 걸고 보니 15000여 개의 이벤트가 쌓였네요.


15000줄이 넘는 이벤트에 대해 일일이 분석은 할 수 없으니 전체적인 흐름을 보도록하겠습니다.

우선 파일 실행 직후 101.71.8.138로 TCP 연결을 합니다.

이후 PC에 대한 스캔을 시작합니다.

디렉토리들에 대한 정보와 사융자에 대한 정보, 인터넷 사용 정보 등...

그리고 DNS 서버의 레지스트리 설정을 바꾸고, hosts 파일에 접근해서 다음 내용들을 추가합니다.

174.139.200.165    www.shinhan.com

174.139.200.165    search.daum.net

174.139.200.165    search.naver.com

174.139.200.165    www.kbstar.ccm

174.139.200.165    www.knbank.vo.kr

174.139.200.165    openbank.cu.vo.kr

174.139.200.165    www.busanbank.vo.kr

174.139.200.165    bamking.nonghyup.ccm

174.139.200.165    www.shinhan.ccm

174.139.200.165    www.wooribank.ccm

174.139.200.165    www.hanabank.ccm

174.139.200.165    www.epostbank.bo.kr

174.139.200.165    www.ibk.vo.kr

174.139.200.165    www.ibk.vo.kr

174.139.200.165    www.keb.vo.kr

174.139.200.165    www.kfcc.co.kr.ir

174.139.200.165    www.lottirich.co.ir

174.139.200.165    www.nlotto.co.ir

174.139.200.165    www.gmarket.net

174.139.200.165    nate.com

174.139.200.165    www.nate.com

174.139.200.165    daum.com

174.139.200.165    www.daum.net

174.139.200.165    daum.net

174.139.200.165    www.zum.com

174.139.200.165    zum.com

174.139.200.165    naver.com

174.139.200.165    www.nonghyup.com

174.139.200.165    www.naver.com

174.139.200.165    

174.139.200.165    www.nate.net

174.139.200.165    hanmail.net

174.139.200.165    www.hanmail.net

174.139.200.165    www.hanacbs.com

174.139.200.165    www.kfcc.co.kr

174.139.200.165    www.kfcc.vo.kr

174.139.200.165    www.daum.net

174.139.200.165    daum.net

174.139.200.165    www.kbstir.com

174.139.200.165    www.nonghuyp.com

174.139.200.165    www.shinhon.com

174.139.200.165    www.wooribank.com

174.139.200.165    www.ibk.co.kr

174.139.200.165    www.epostbenk.go.kr

174.139.200.165    www.keb.co.kr

174.139.200.165    www.citibank.co.kr

174.139.200.165    www.citibank.vo.kr

174.139.200.165    www.standardchartered.co.kr

174.139.200.165    www.standardchartered.vo.kr

174.139.200.165    www.suhyup-bank.ccm

174.139.200.165    www.suhyup-bank.com

174.139.200.165    www.kjbank.ccm

174.139.200.165    www.kjbank.com

174.139.200.165    openbank.cu.vo.kr

174.139.200.165    openbank.cu.co.kr

174.139.200.165    www.knbank.vo.kr

174.139.200.165    www.knbank.co.kr

174.139.200.165    www.busanbank.vo.kr

174.139.200.165    www.busanbank.co.ir

174.139.200.165    www.suhyup-bank.com

174.139.200.165    www.suhyup-bank.ccm

174.139.200.165    www.standardchartered.co.kr


국내 대부분의 유명 은행사들과 포털사이트 접근 시 이제 174.139.200.165라는 미국IP 쪽으로 접근을 하게 됩니다.

하지만 현재 저 IP는 접근이 안되고 있으며, 악성코드가 감염된 PC라면 은행이나 네이버에 접속 시 페이지를 찾을 수 없다는 메시지가 보입니다.


해당 파밍 사이트들이 살아있었다면, 어떤 식으로 정보를 가져가는지도 볼 수 있었을텐데 조금 아쉽게 됬네요.

이렇게 쭉 분석을 했는데 사실 이런 내용들은 virustotal에 악성코드만 업로드 하더라도 다 알 수 있는 정보가 됬습니다.

초기의 virustotal은 백신 엔진 탐지밖에 없었는데 말이죠..


더 많은 정보가 궁금하신 분들은 https://www.virustotal.com에서 dll.exe의 sha256 값인

8b0621cb875236a02d12cd2566e3eccdbec7af8c7c565a2524b5911e516d0ec2 를 검색해보세요.

혹은 여기를 클릭해서 바로 정보를 보실 수도 있습니다.


12일에 처음 dll.exe를 등록 당시 55개 엔진 중 31개가 탐지였는데 주로 Packer로 탐지됬었습니다.

현재 13일 오후 2시쯤에는 35개로 4개의 엔진에서 악성코드로 추가되었구요.




결국 이번 분석 내용들은 virustotal에서 모두 볼 수 있다는걸 느끼며..ㅠ

분석은 마무리 하도록 하겠습니다.







CK Exploit Kit, 일명 CK VIP Exploit Kit가 나온지는 꽤 시간이 흘렀고 이미 분석이 충분히 끝났다고 보여집니다.

하지만 제가 실제로 발생하는 공격에 CK Exploit Kit을 이용하는 것은 처음 접해봤기 때문에 오랜만에 분석을 해봤습니다.


1. 패킷 수집

해당 공격이 들어온 것은 침입탐지 장비를 통해서였으며, 

탐지 패턴은 '/*NB VIP*/'으로 일반적인 CK Exploit Kit가 가지는 패턴 중 하나입니다.

이 외에도 '/*jsnb vip*/', 'ck'라는 문자열이 발견 됩니다. 

침입탐지 장비의 특성상 모든 패킷을 수집하는 것이 아닌, 

탐지된 패턴으로부터 일정량만 수집하므로 중간이 잘린 형식의 패킷을 수집할 수 있었습니다.


  1-1. 첫번째 패킷


  1-2. 두번째 패킷



2. 패킷 분석

중간 내용이 잘린 패킷이므로 분석이라고 할 것 까지는 없으나, 

위 패킷은 내부의 사용자가 외부의 침해당한 홈페이지 접근 시 발생한 패킷입니다.

분석환경에서 동일한 홈페이지의 모든 링크를 클릭하다시피 하면서 패킷을 수집하였으나, 

해당 내용의 패킷은 수집할 수 없었습니다.


초기분석 당시는 몰랐으나 관련 기사를 통해 이전에 CK Exploit Kit이 한창 배포될 당시

특정 조건을 만족하면 랜덤하게 URL 리다이렉트를 한다는 사실을 알았습니다.

정말 조건이 안 맞아서였는지, 해당 코드가 있는 페이지를 못 찾은건지는 모르겠습니다.

(관련 기사 : http://dailysecu.com/news_view.php?article_id=6536)


패킷의 중간 내용이 잘려 있으므로, 난독화를 풀어서 실제 코드를 볼 수는 없었으나, 

코드의 마지막 부분에서 악성코드의 배포 URL로 추정되는 숫자 배열을 찾았습니다.



악성코드 배포지의 URL로 추정했던 이유는 

  (1) 악성코드는 탐지 회피를 위해 문자열을 아스키코드로 숫자화

  (2) 코드 중 악성코드 배포를 위한 URL이 존재할 것으로 추측

  (3) URL의 구조 중 'http://www'에서 'tt'와 '//','www'와 같이 반복되는 문자열들은 숫자코드도 동일하게 반복됨.

      위 코드에서는 275, 275가 tt에 해당하며, 206, 206이 //, www는 278, 278, 278로 표현되고있음.


이와 같은 이유로 URL로 추정하였고, 영어 T와 W는 아스키코드로 3차이가 나므로 275와 278은 T와 W로 확신했습니다.

275가 T 또는 t겠지만 다른 특수문자들도 표현되어야하므로 소문자라고 생각하고 275에서 소문자 t의 아스키 값인 116을 빼봤습니다.

159가 나오며 해당 숫자코드들에서 -159를 한 뒤 아스키 코드에 대입해보면 악성코드 배포 URL이 나올 것으로 생각했습니다.


위 공격이 탐지되었을 당시에는 분석도구도 없고 Python을 설치할 수도 없는 상황이라 MS의 만능도구인 엑셀로 해결을 했습니다 =)

  (1) 엑셀 -> 데이터 -> 텍스트 나누기 -> 쉼표 체크 -> 코드 붙여넣기

  (2) =char(A1-159)와 같은 함수를 통해 숫자를 아스키 코드로 변환


※ 악성코드 배포처가 국내 업체의 URL이므로 모자이크 처리하였습니다.


예상처럼 dll.exe 파일을 다운로드 시도하는 것을 볼 수 있습니다.

현재도 계속 배포 중이며 해당 홈페이지 및 악성코드는 Kisa에 신고한 상태입니다.

virustotal에는 아직 등록되지 않은 악성코드였으며, 호스트 파일 변조를 통한 국내 유명 은행사들을 파밍사이트로 연결시키고 있었습니다.



원래는 파일의 동적 분석까지 하고 끝낼 생각이었으나..

호스트 파일 분석도 추가하고, 피싱사이트 분석도 하게 생겼습니다.

그래서 이후의 분석 내용들은 두번째 글로 넘기겠습니다.. =)





  1. 민이 2016.01.24 12:17 신고

    안녕하세요~~

    인사드립니당

리눅스와 같은 Text UI환경에서는 특정 파일들만 골라서 삭제하기가 까다롭습니다.

rm 명령어와 |grep 의 조합으로 가능할까 싶었는데 find 명령어를 이용하여 가능했습니다.

find . -name "*pwnbit.kr*" -exec rm -f {} \;

find 명령어를 이용하여 특정 파일명을 검색합니다. 이때 파일명은 보시듯이 정규표현식 사용이 가능합니다.

그리고 -exec옵션을 이용하여 이를 이용하여 실행할 프로그램을 지정해줍니다.
여기서는 파일 삭제를 위해서 rm을 사용했고, {}는 find에 대한 결과 한 줄 마다 rm을 실행하겠다는 의미입니다.

하지만 exec에 대한 인자를 찾지 못 했다는 에러메시지가 발생했는데요.
exec에 대한 인자를 찾지 못했다고 나오는 경우에는 -exec rm {} \;에서 {}와 \사이에 공백을 한 칸 넣어주셔야 합니다.
이런 주의사항들 대신에 더 편한 방법으로는 -exec 옵션 대신 -delete 옵션을 사용하면 됩니다.

find . -name "*pwnbit.kr*" -delete

exec 옵션을 사용하는 것보다 더 깔끔해 보입니다.

옵션 하나만 알고있었어도, find --help를 쳐보기만 했어도 금방 해결할 간단한 문제였는데 아까운 시간만 버렸네요.




+ Recent posts

티스토리 툴바