[Threat Analysis] 레드킷 익스플로이트 키트 '전격 해부'
2013년 3월 미국 NBC.com의 메인 페이지가 공격 당해 악성코드가 유포되었던 사례가 발생했다. 이때 사용된 것이 ‘레드킷 익스플로이트 키트(RedKit Exploit Kit, 이하 RedKit)이다. 레드킷은 해외에서는 최근 가장 활발하게 활동하는 익스플로이트 툴킷(Exploit Toolkit) 중의 하나로 알려져 있고, 국내에서도 영향을 받는 사례들이 속속 발견되고 있다. 이 글을 통해 레드킷의 자세한 분석 정보를 소개하고자 한다.
레드킷은 작년 초에 '프리베이트 익스플로이트 킷(Private Exploit Kit)'이라는 이름으로 소개된 바 있다. '레드킷(RedKit)'이라는 이름은 본래의 제작자가 공식적인 이름을 명시하지 않아서, 이를 발견하고 분석한 분석가가 빨간색 스키마를 사용한 데에서 붙여진 이름이다.
레드킷 제작자는 악성 URL이 1~2일 정도면 추적되고 차단되는 것을 회피하기 위해 시간 단위로 새로운 URL을 생산하는 API를 제공한다. 이로 인해 실제 분석하는 과정에서 살아있는 URL을 찾기가 쉽지 않고 분석하는 동안 URL이 유지되지 않는다는 점도 문제였다. 레드킷은 아직까지 다수의 취약점을 이용하지는 않고, 주로 자바 취약점을 공격 대상으로 삼고 있다. 해외에서는 최근 가장 활발하게 활동하는 '익스플로이트 툴킷(Exploit Toolkit)' 중의 하나로 알려져 있고, 국내에서도 영향을 받는 사례들이 속속 발견되고 있다.
A. Redirector
- 정상적인 사이트에 포함되어 레드킷 랜딩 페이지로 리다이렉션 하는 역할을 수행
- 트위터 연결로 위장하여 ”iframe src”를 통해 랜딩 페이지 링크로 연결
B. Landing Page
- Landing Page는 아래와 같은 링크 패턴을 가짐(html 또는 htm)
- 자바와 PDF 취약점을 공격하는 Landing Page(초기 버전)는 [그림 6]과 같음(더 자세한 정보는 Appendix 참고).
- JNLP(Java Network Language Protocol)를 이용한 자바 취약점 공격 랜딩 페이지는 [그림 7, 8]과 같음.
특히, JNLP 파일에서 “__applet_ssv_validated”를 “true” 로 설정할 경우, 자바 1.7.21 이전 버전에서는 보안 경고 팝업 창을 띄우지 않고 서명되지 않은 자바 애플릿을 실행할 수 있다.
주요 취약점 및 악성코드
-레드킷은 다수의 취약점을 동시에 공격하지는 않으며, 주로 다음과 같은 취약점을 이용하는 것으로 알려져 있음.
탐지 패턴 및 방법
A. 네트워크 탐지 정보
TrusGuard :2013.06.25 : malware_redkit_redirect(HTTP) 시그니처 배포
B. 파일 진단 정보
- Ahnlab ASD :Trojan/JS.Retkid(RedKit Landing Page)
- AhnLab V3/ASD :Dropper/Win32.Daws(자바 취약점을 통해 다운로드된 실행 파일)
Appendix A. 주요 취약점 상세 분석
해당 취약점 파일의 오브젝트 2번에는 [그림 10]과 같이 자바스크립트가 존재하고, 해당 스크립트 안에서 취약점의 원인이 되는 TIFF 파일을 생성하고 셸코드를 힙스프레이 기법을 이용해서 실행한다.
해당 자바 파일에는 lookup().findStaticSetter 메소드 상의 취약점으로 인하여 SecurityManager 값을 NULL로 세팅하여 샌드박스를 우회할 수 있는 CVE-2013-2423 취약점이 존재한다.
취약점 발생 후에 URL로부터 악의적인 파일을 받아서 %temp%(java.io.tmpdir) 폴더에 랜덤문자 6자리 .exe 파일을 생성한 후 실행한다. 악의적인 파일은 “name” 파라미터로부터 전달받은 데이터를 [그림 13]과 같이 디코딩한 URL로부터 다운로드 된다.
[그림 13] URL 디코딩 자바 함수
해당 URL로부터 받은 데이터는 AES로 암호화된 데이터로, AES/CBC/NoPading 조건으로 복호화하면 악의적인 실행 파일을 얻을 수 있다.
복호화된 데이터에서 “Co6RkBrX” 문자열의 존재를 확인하고, 2개 또는 1개의 실행 파일(PE)을 각각 추출하여 실행한다.
자바 취약점을 통해 다운로드된 악성코드는 다음과 같은 악성코드이다.
Appendix B. 클라이언트 정보 수집(PluginDetect)
레드킷의 경우, 클라이언트 시스템(사용자 PC)에 설치된 애플리케이션들의 정보 수집(fingerprinting)을 위해 블랙홀 익스플로이트 킷(BlackHole Exploit Kit과 Cool Exploit kit)에서 사용하는 “플러그인디텍트(PluginDetect)” 라이브러리를 사용한다. 해당 라이브러리는 Eric Gerds에 의해서 자바스크립트로 구현된 브라우저 플러그인(plugin) 탐지 라이브러리이다.
해당 라이브러리를 이용하면 다음과 같은 정보를 얻을 수 있다.
라이브러리는 다음과 같은 절차를 통해 손쉽게 사용이 가능하다.
실제 레드킷 랜딩 페이지 안의 코드에는 [그림 17]과 같이 플러그인디텍트 라이브러리 본체가 존재하고, 어도비리더 버전을 확인한 후 iframe으로 PDF 취약점 파일을 연결시킨다.
- AhnLab클라우드분석팀 심선영 책임연구원