Sweet Orange exploit kit Analysis Bolaven 2015.02.05
개요 최근사용자들이인터넷을사용하던중에 CVE-2013-2460(Java), CVE-2013-2551(IE), CVE-2014-0515(Flash), CVE-2014-6332(IE) 취약점을이용한 sweet orange exploit kit 가전파되어이를연구하였으 며, 내용을전파하고자문서를제작하게되었다. [ 그림 1] sweet orange exploit kit Sweet orange exploit kit 소개 1. History 1) 외신에의하면 sweet orange exploit kit 은 2014년 4월경확인되었다. 2) Sweet orange exploit kit 은 Landing Page에서불어로표기되고있지만, 특정문자열이반복된다. - 문자열 : Xzqrf34_542 3) 우리가발견한 Sweet orange exploit kit 은 CK VIP가이용하는특정취약점 (CVE-2014-0515, CVE- 2014-6332) 를사용한다. 4) CVE-2014-0515는 Adobe Flash Player 취약점이며 4월 28일에발표되었고현재는패치가되었다 - 요약 : 비디오와이미지처리를위한 Pixel Bender 1 구성요소에존재하는취약점 5) CVE-2014-6332는 MS14-064 2 (Windows OLE의취약점으로인한원격코드실행문제점 (3011443)) 으로현재는패치가되었다. 1 이미지내용을만들거나조작하는데사용되는프로그래밍언어로, Piexel Bender 를사용하면셰이더라고도하는 커널을만들수있고셰이더는이미지의각픽셀에대해개별적으로실행되는단일함수를정의 2 IE 를사용하여특수하게조작된웹페이지를볼경우현재사용자의컨텍스트에서임의로코드를실행하는취약점 - 1 -
Adobe취약점 (CVE-2014-0515) 정보 : http://helpx.adobe.com/security/products/flash-player/apsb14-13.html MS취약점정보 - CVE-2014-0422: http://support.microsoft.com/kb/3011443/ko - CVE-2013-2551: https://technet.microsoft.com/ko-kr/library/security/ms13-037.aspx Java취약점 (CVE-2013-2460) 정보 - http://www.oracle.com/technetwork/topics/security/javacpujun2013-1899847.html sweet orange exploit kit 정보 http://malware.dontneedcoffee.com/2014/11/cve-2014-6332.html#!/2014/11/cve-2014-6332.html http://malware.dontneedcoffee.com/2014/06/cve-2014-0515-flash-1300182-and-earlier.html#!/2014/06/cve-2014-0515-flash-1300182-and-earlier.html http://blog.trendmicro.com/trendlabs-security-intelligence/youtube-ads-lead-to-exploit-kits-hit-us-victims/ 6) 국내에서는 11월경부터인터넷신문및블로거들에게확인이되었다. [ 그림 3] 국내확인정보 - 2 -
Sweet orange exploit kit sample analysis 1. Sweet orange exploit kit 요약 1) 위 / 변조및악성코드경유 / 유포에따른흐름도 - 지난 2014 년 11 월경세탁관련사이트를통해유포된정황이며, 샘플을발견하였을당시에는 html 파일과, exe 파일만재현이되었음을밝혀둔다. 그리하여본보고서에서는 html, exe 에대한부분이다. [ 그림 2] 흐름도개략 [ 그림 3] 흐름도상세 - 3 -
2. Sweet orange exploit kit 흐름분석 1) 위 / 변조 & 중간경유지사이트분석 요약 : 국내사이트가위 / 변조되어 [ 그림 3] 처럼쉘코드에의해다음악성코드경유사이트로이동된다. 중간경유지사이트에는 iframe 코드가삽입되어있었으며, 중국에위치한통계사이트 (xx.51yes.com) 로이동된다. 최종악성코드유포지는미국으로확인되며, 한개의파일만다운로드되어 smss.exe파일만분석을진행하였다. - 편의를위해위 / 변조사이트 js 파일만접속을해보았으며, 위 / 변조된사이트는확인결과, 세탁관련 사이트였다. 쉘코드로인해악성코드유포지로연결되는데, 외국에있는 LED 전구관련사이트로연 결되는모습이확인되었다. [ 그림 4] 위 / 변조된페이지 js 파일과 decode - 두번째로확인하는그림은위 / 변조사이트다음으로연결된첫번째악성코드경유지이며, 위 / 변 조사이트에 js 파일과마찬가지로다음악성코드경유지로연결되는쉘코드가삽입되어있었다. - 4 -
[ 그림 5] 악성코드경유페이지 html 파일과 decode - 세번째로확인하는그림은첫번째악성코드경유사이트다음으로연결된두번째악성코드경 유지이며, 일반적으로쓰이는 script tag 중에 iframe 을이용하여다음경유지로이동되는모습이 화인되었다. [ 그림 6] 악성코드경유페이지 html 파일 - 5 -
- 네번째로확인하는그림은두번째악성코드경유사이트다음으로연결된세번째악성코드경 유지이며, sweet orange exploit kit landing page 모습이확인되었다. - 추가적인분석은 3-1 을확인하기바란다. [ 그림 7] 악성코드경유페이지 html 파일 (Landing Page) - 다섯번째로확인하는그림은두번째악성코드경유사이트다음으로연결된세번째악성코드 경유지이며, VB Script 모습이확인되었다. - 추가적인분석은 3-2 를확인하기바란다 [ 그림 8] 악성코드경유페이지 html 파일 (VB Script) - 6 -
[ 그림 9] 최종악성코드유포지정보 3. Sweet orange exploit kit 흐름분석 3.1 index.html 분석 (Landing Page) 1) 위 / 변조 요약 : index.html 은크게상단부에불어로이뤄진내용과중간은반복적으로이루어진특정문자열 이며, 그리고하단부는중간부에이루어진특정문자열을복호화하기위한코드로나뉘어져있다 - 7 -
[ 그림 10] index.html 구조 - 상단부분의 <html lang="fr"> 을나타낸다음소개글이서술되어있다. 실행시다음과같은화면만표시된다 [ 그림 11] index.html 실행화면 - 8 -
- 1 차디코딩을위하여특정문자열이반복되는구문다음에나타나는복호화구문을찾아야한다. 코드의하단부분에중요한복호화구문이확인되어, document.write 를삽입하여코드확인이가능 하다. [ 그림 12] index.html 난독화디코딩과정 - 디코딩된코드를확인중 base64 로이루어진부분이확인되었으며, 특정키값으로인해복호화를 진행할수있다. [ 그림 13] index.html 디코딩후 base64 3.2 index.html 분석 (base64) - index.html 디코딩된후 [ 그림 12] 는크게상단부에서는 useraget 값 (=IE 값 ) 을체크하고 base64 를 디코딩하기위한부분과, 중간은 html 이라는변수안에 base64 코드를넣어둔부분으로이루어져 - 9 -
있다. 하단부는 Adobe Flash 를이용한취약점이존재하는지여부를체크하고, 그여부에따라 system.exe 파일을다운로드한다. [ 그림 14] index.html 디코딩후 base64 구조 - base64 를디코딩하기위해서는 IE 체크하는부분에서 base64 를디코딩하는함수와실질적인 html 변수안에있는 base64 코드를따로복사하여시도하여성공하였다. [ 그림 15] base64 디코딩하는방법 - 10 -
- base64 디코딩후에는하단부분에쉘코드가있는데이부분을복호화를진행해보았다. [ 그림 16] base64 디코딩후최종악성코드확인 3.3 sb2.html 분석 (VBScript) 요약 : sb2.html 은 runmumaa 함수를이용하여 smss.exe. 파일을다운로드받고실행하기위한 VBScript 부분과다중매체를통해정보를얻을수있는 god mode(cve-2014-6332) 를이용한 VBScript 짜여진부분으로확인되었다. god mode 란? IE가 OLE객체를처리하는과정에서원격으로코드를실행할수있는취약점이다. 일반적으로 IE에서 VBScript스크립트언어를통해시스템명령을실행하는것을불가능하지만갓모드를이용하게되면, 스크립트언어를통해명령을실행할수있다. 11월에보안패치를통해해결되었지만, 패치하지않은사용자가해킹에의해조작된홈페이지에접속할경우사용자의컴퓨터에악성코드가실행될수있다. - 11 -
[ 그림 11] sb2.html 파일구조 - 12 -
3.4 Smss.exe 분석 1) smss 파일분석개념도 - 실행파일이사용자 PC 에서실행되어정보유출까지되는간략적인개념도이다. [ 그림 12] smss.exe 개념도 - 실행파일이사용자 PC 에서실행되어정보유출까지되는간략적인개념도이다. - 현재는 V3 에서 Win-Trojan/Banki.Gen 으로진단되며항상최신업데이트가이루어지고있다면 감염되지않을것으로확인된다 [ 그림 13] V3 기진단파일 2) DJLK 리소스복호화 - Smss실행파일에 PE 구조를보면 rsrc Section 에 DJLK가있는것을알수있다. 리소스 DJLK 는암호화되어져있는파일임을특정툴을통해알수있으며, 아래코드를보며리소스 DJLK 가복호화되는코드를보겠다. - 13 -
[ 그림 14] smss 파일구조 - Smss 실행파일에서 FindResourceA/SizeofResource API 를이용하여 rsrc Section 에있는 DJLK 의 리소스를검색하고사이즈를구한다. [ 그림 15] resource 검색 API - 위그림에 SizeofResource API를이용하여 DJLK 리소스의사이즈를구한값은 0x1B000이며, 이값만큼반복문을실행한다. [ 그림 16] - 반복문중간에 AND EDX,80000001 구문을확인할수있으며해당구문에 EDX는반복문이실행한횟수를나타낸다. EDX값을 AND연산하여짝수 / 홀수를구분하여복호화하는루틴이달라지게된다. 아래 [ 그림16] 같이 40113E번지는 EDX값이홀수일때, 401153번지는짝수일때실행하여 DJLK 리소스를복호화한다. < 반복카운트 > < 짝수 / 홀수구분 > - 14 -
< 짝수 / 홀수복호화코드 > [ 그림 16] 복호화를위한코드 - 위복호화코드과정후아래그림과같이 DJLK 리소스가복호화된것을알수있다. 또한 복호화된값을확인하여보면 4D5A 로시작하는것으로보아실행파일임을알수있다. < DJLK 리소스암호화 > < DJLK 리소스복호화 > [ 그림 17] DJLK 리소스암 / 복호화 - 15 -
2) 복호화된파일 - 00401BF8 번지에서 Push 1000 으로확인되었으며, ImageBase 가 100000 번지로할당된다. - VirturalAlloc API 함수를이용하여 R/W 권한을설정하며복호화된실행파일에할당한다 < 각 Section 복사및할당 > <R/W 권한설정 > <IAT 3 복사 > [ 그림 18] 복호화된파일 - 위코드에서확인된것처럼복호화된실행코드를 10000000에복사하였다. 해당복호화된부분을 Memory Dump하여특정툴을통해 PE구조를확인하여보면 DLL 파일임을알수있으며, 아래 [ 그림19] 와같이 EAT 4 는 2개가있는것을확인할수있다. Smss 실행파일에서 Export 함수인 CTlint 의주소를찾고 [ 그림19] 과같이 004011F1 번지 5 를호출한다. 3 Import Address Table이라고하며프로그램이어떤라이브러리에서어떤함수를사용하고있는지를기술한테이블 4 Export Address Table이라고하며라이브러리파일에서제공하는특정함수를다른프로그램에가져다사용할수있는매커니즘 5 004011F1번지는 VMProtect가복호화되는번지로확인 - 16 -
<10000000 에복사된 DLL 파일, Export Address Table> < CTlnit 의주소찾는번지 > < CTlnit Export 함수호출 > <EBP-10 값 > [ 그림 19] CTlnit 파일 (VMProtect 복호화 ) - EBP-10 에저장된 1000DF07 번지는 CTlnit 가복호화되어나타나는번지이다 - 17 -
3) CTlnit DLL 분석 - DLL에서는맨처음 1000D3D1을호출한다. 해당구문은 XML 생성과랜덤한이름을갖는히든디렉토리를생성하며현재실행파일을복사한다. 이러한과정에대해서아래코드를보겠다. 아래 [ 그림20] 과같이 1001720C 주소에임의문자로하드코딩된 3EPT4XU~~YZ6 을갖고 srand/rand 함수를이용하여 <Random 문자열결과 > 와같은결과값을생성한다. 이결과값을이용하여 C:\ 밑에디렉토리이름으로지정한다. 해당디렉토리는 SetFileAttributesA API를이용하여 Hidden 으로변경한다. 또한디렉토리안에 setting.xml 을생성한다. <Random 문자열생성과정 > <Random 문자열결과 > <Random 이름디렉토리생성및숨김설정 > - 18 -
<Xml 생성 > <Xml 내용작성 > [ 그림 20] Xml 생성 - 현재실행되고있는 smss.exe 파일을 MoveFileExA API 를이용하여이동시키며, 이동할때파일 이름을랜덤한이름으로변경한다. 또한이동시킨파일을 CreateProcess API 를이용하여실행 시킨다. <Random 이름생성과파일이동코드 > < 파일이동 > - 19 -
< 파일실행 > [ 그림 21] 파일생성 ( 이동 ) 및실행 - 1000d634 번지에서 1000d34a 함수를호출한다. 이함수에서는 ASDSvc.exe, V3Lite.exe 를무력화 시키기위해 DebugActiveProcess API 를이용한다. 하지만이함수로무력화되는지는테스트를 해봐야할듯하다. [ 그림 22] DebugActiveProcess API - 위과정을거치고수많은 thread 함수를호출을하는데, 이때쓰이게되는 API 가시스템수준의 디버깅을목적으로 SeDebudPrivilege 6 을쓰며, 이함수는잠재적으로위험한함수다. - TerminateProcess(), CreateRemoteThread() 등여러함수가해당액세스하기위해쓰이기때문이다 [ 그림 23] SeDebugPrivilege API - 아래에서보는 [ 그림 24] 는수많은 thread 중에처음호출되는것으로 1000F0E0 번지에 CreateThread API 를이용하여실행한다 6 http://support.microsoft.com/kb/131065/ko - 20 -
[ 그림 24] CreateThread API - 1000C36F 에는레지스트에위과정에서숨김디렉토리안에있는실행파일을 Run 에등록한다. 먼저 1001728C 에하드코딩 (md5) 되어진문자열을이용하여레지스트리경로를복호화한다. 해당과정을복호화하는부분은 10001000 번지에서이루어진다. [ 그림 25] Run 레지스트리등록값 - 다음에는 RegCreateKeyExA, RegSetValueExa API 이용하여만들고등록한다.. 아래그림은분석중다시시작하여경로와실행파일이변경된것으로위그림들과실행파일및디렉토리경로가다른점이해 해주시기바랍니다. [ 그림 26] API 를이용하여만들고등록 - 21 -
- 두번째 thread 에서는 1000C22A 번지를실행하며, 이번지에들어있는매개변수값은 1001853C 이다. 이매개변수에는 IP 주소 98.126.xx.19 이다. [ 그림 27] 특정 IP 와통신을위한 thread - 또한위 thread 에서는아래와같이다시한번 CreateThread API 를이용하여 thread 를호출되며, while 문으로계속반복된다. 또한강제로오류를발생시켜자신이지정한예외처리번지 1000BF53 로이동한다. [ 그림 28] 지정된예외처리번지이동 - 1000BF53 번지에서는 98.126.xx.18:3204 로연결을하며, 감염된 PC 에 CPU 정보, 운영체제정보, MAC 주소정보, RAM 크기정보등을암호화하여전송하며, 아래 [ 그림 29] 는네트워크를연결하는 코드이다. <Port 변환 > <IP Adress 변환 > <Socket 정의 > <IP/Port 연결 > [ 그림 29] 네트워크연결코드 - 22 -
- 위와같이연결이되었으며, 아래 [ 그림 30] 과같이감염자 PC 의정보를수집한다. [ 그림 30] 감염자정보수집 (Ida) <CPU 정보수집 > <CPU 정보수집 > - 23 -
<OS 정보수집 > [ 그림 31] 감염자정보수집 (OllyDbg) - 감염자 PC 에서수집된정보들은 00EAFBE8 번지부터저장되고, 암호화과정을거쳐 Socket 으로 연결한 IP 주소로암호화된정보를전송한다. < 수집정보 > < 암호화과정 - OllyDbg 화면 > < 암호화과정 - IDA 화면 > - 24 -
< 암호화된정보 > < 암호화된정보전송 > [ 그림 32] 수집된정보를암호화하여전송 4) 공인인증서를찾고압축 (thread 1000dcd1) - stricmp( 문자열비교함수 ) 를이용하여공인인증서경로를찾는다. - 감염된PC에서 cmd모드로사용자모르게 NPKI( 공인인증서폴더 ) 를찾고 c:\ 에랜덤이름으로폴더를만들어복사를한다. 이때복사가된폴더에속성은 hidden으로보이지않는다 < 문자열비교함수를이용 > < 랜덤이름으로폴더생성후복사 > - 25 -
<WinExec 함수를이용하여실행 > < 숨김으로인해노출이되지않음 > 마치며 이번보고서는 Orange Exploit Tool Kit 흐름과난독화분석, 그리고최종악성파일분석내용공유가목적이다. 아직까지도취약한환경에있는 PC에서는감염이되고있으며, 우리 (Team Bolaven) 가분석하여본샘플은많이부족한부분이있지만좀더나아진보고서를차츰배포해나갈예정이다. 해당샘플들은 V3에서진단하고있으며, MicroSoft, Oracle(Java), Adobe(Flash Player) 최신패치가이루어지고있다면감염되지않을것으로확인된다. - 최종파일 (system.exe) 분석은재현되지않아문서에서제외하였습니다. Team Bolaven 은보안관제팀분석소모임입니다 이은재설인규김소래하진목김용희 - 26 -