01. Introduction
국내 공격을 많이 진행하고 있는 공다팩에 대해 연재하려고 한다. 공다팩은 자바스크립트 언어로 난독화된 특정 소스코드를 지칭하며, 해당 난독화를 해제하면 취약성을 가지는 코드를 이용하여 악성코드를 유포하는 자바스크립트 소스코드를 볼 수 있다. 국내 사용자들이 방문하는 웹 서버를 공격하여 웹 페이지를 변조하고, 공다팩 페이지로 방문하도록 유도하여 악성코드 감염을 노린다. 물론 여기서 방문은 사용자의 이벤트에 의한 브라우저의 방문이 아닌 소스코드에 의한 강제적인 브라우저의 방문에 해당한다. 즉, 드라이브 바이 다운로드 공격에서 공격 페이지(Exploit Page)에 사용되는 난독화 코드이다.
02. Pack? Kit?
기본적으로 다양한 웹킷들을 보고있자면, 팩이라는 단어와 킷이라는 단어를 많이 사용한다. (사용하지 않는 경우가 있다. 이는 곧 고유명사가 된다.) 구태여 팩과 킷을 구분지을 필요 없이 사용하지만, 곰곰히 생각해보면 다음과 같이 추측할 수 있다.
물론 이 부분에 대해서는 추측이기 때문에 정설로 판단할 필요는 없다.
"Contagio"의 Exploit Kit 정리
해외 유명한 악성코드 분석 및 샘플 공유 블로그인 "Contagio"에서는 집단지성(협업)을 통해 공격에 사용되는 도구에 대해 정리한 자료이다. Contagio 운영자 'Mila'는 공다팩 도구를 수집하지 못하여 도구 제공자를 찾고 있는 인포그라피도 올려놓았다.
03. Gondad Exploit Pack (Gondad EK)
위 링크를 통해 들어가면 공다팩(Gong Da Pack/GonDad)에 대한 취약점 코드 리스트는 정리되어 있지만, 앞서 언급한 것과 같이 공다팩이라 불리는 이 공격 코드는 현재 난독화 생성 도구(공격 도구)가 밝혀지지 않은 상태이다. 국내 동향에서는 공격에 많이 사용하는 도구임에도 도구가 밝혀지지 않기 때문에 다양한 추측들이 생겨났다. 추측과 사실을 기반으로 정리해보면 다음과 같다.
- 난독화된 스크립트를 해제하면 변수명에서 gondad 라는 변수명 혹은 클래스 명을 사용하기 때문에 gondad pack 이라 불린다.
Gondad Exploit Pack
- 중국어로 공격이라는 단어의 영어 발음이 gongda라서 gongda pack이라 불린다.
gongda 중국어사전
- 다동(dadong)이라는 단어는 일부 공격 스크립트의 치환자 값으로 사용되었다. 아래 그림은 %u를 dadong 문자열로 치환한 내용이다.
다동(Dadong) 스크립트
- 또한, 과거의 공다팩 난독화 스크립트에서 Dadong이라는 주석이 사용되어 다동팩이라 불리기도 하였다. 아래 그림은 공다팩 형태를 가지고 있는 초기버전의 난독화 코드이다. 또한 공다팩에서 난독화 기능을 하는건 JSXX이며, 이 버전에 따라 난독화가 변형된다. (Encrypt By Dadong's JSXX - Dadong의 JSXX에 의해 암호화)
Encrypt By Dadong's JSXX 초기 버전
04. History
메타스플로잇 개발자인 H.D. Moore가 2005년 HTML 퍼저와 CSS 퍼저를 개발하였고, 2006년 7월에는 "한 달 동안 매일 브라우저의 버그를 발견할 것이다(MoBB Project, Month of Browser Bug Project)"를 발표해 세계를 놀라게 했다. 이렇게 퍼저의 시기와 맞물려 사용자 단위에서 실행되는 응용 프로그램의 취약점을 이용한 악성코드의 유포가 비슷한 시기에 시작되었을 것이다.
이 시기를 지나면서 취약점과 악성코드를 합치려는 노력이 진행되었을 것이고, 공격 도구 개발이 진행되었을 것으로 판단한다. 2010년에 0.31 버전을 사용한 것과 향 후 버전이 바뀌는 시기(개발 기간)을 따지면, 사용자 단위의 응용 프로그램을 공격하는 시기에 최초 공다팩 개발 시기와 가까워 질 수 있다고 생각을 한다. 다음 내용들은 공다팩에 초점을 맞춰 구글 검색을 해본 결과이다.
2010년도 초에 최초로 웹 사이트에 정보가 올라온 내용으로 split 형태, Math.PI 이용, 복잡한 비트 연산(Bitwise Operation), function text 길이를 키값으로 사용, exception 활용한 window.location을 이용 등 최근에 나오는 공다팩 소스코드의 흔적들을 볼 수 있다.
2010년 말에 웹 사이트에 정보가 올라온 내용으로 0.31 버전에 정규표현식 형태의 난독화 추가, 강제 exception 발생하여 난독화가 해제되는 알고리즘의 구현이 있다. split 형태의 난독화는 사용하지 않는 것이 0.39 버전과 다른점이다.
2011년 말에 웹 사이트에 정보가 올라온 내용으로 0.31 버전과 0.39 버전과는 상당히 다른 모습을 가진다. ActiveX를 이용하였고, Adobe Flash Player 취약점이 추가되어 사용하고 있다.
2012년 4월에 최초 정보가 올라온 내용으로 현재의 공다팩의 기반이 되는 형태를 가지고 있다. 이 공다팩 부터는 Java 취약점이 추가되어 IE, Flash, Java 세 가지 취약점의 기준으로 운영되며, 기존에 주석으로 사용되어 왔던 "/*Encrypt By Dadong's JSXX 0.XX VIP*/" 에서 "/*Encrypt By [Site Name] JSXX 0.44 VIP*/ 형태로 사용되기 시작했다. 2013년 8월에 발견된 동일 버전에서는 주석 부분이 /*[Site Name]*/ 형태로 변경되었다. 여기까지 사용되는 사이트 이름은 공격 페이지가 최초로 삽입된 사이트를 의미하는 것으로 추측하고 있다. 현재의 0.44 버전은 계속해서 실험하거나 추가되어 바뀌고 있다.
- document.location.hostname.length 를 이용하여 도메인 값을 추출하여 분석을 회피하려는 성향이 추가
- 단일 Java 취약점을 이용한 공다팩 발견 실험
- SWF, JRE 버전을 확인하는 자바스크립트 파일이 소스코드 형태로 사용되어 추가 난독화 실험
- CipherText를 제외한 모든 코드가 16진수 형태로 난독화 추가 실험
- 공다팩 코드에 iframe, script와 같은 이동 코드(Redirection Code)를 추가로 삽입하여 다른 형태의 난독화 (CK VIP 등)를 추가하여 다단계 구조 실험
- 공다팩 코드에 vbscript 를 사용하여 전 코드를 역순 형태로 난독화를 추가 실험
- 주로 트래픽 애널리틱스는 51yes를 사용하며 간혹 cnzz, 51.la, google, baidu 등을 사용하여 사용자 정보 수집
- window.location을 이용하여 apk를 다운로드를 요구하는 코드 추가
- Next : 공다팩(Gondad EK) 분석 #02
- Next : 공다팩(Gondad EK) 분석 #03
- Next : 공다팩(Gondad EK) 분석 #04
'Information Security > Malware' 카테고리의 다른 글
공다팩(Gondad EK) 분석 #03 (3) | 2014.07.11 |
---|---|
공다팩(Gondad EK) 분석 #02 (0) | 2014.07.04 |
jjencode 분석 (10) | 2014.03.14 |
Sothink SWF Decompiler 3.7 (4) | 2014.01.06 |
알고리즘을 이용한 16진수 변형 + 메소드 치환 난독화 / DOM을 이용한 Script 실행 (0) | 2014.01.02 |