[Threat Analysis] 전세계 인터넷 뱅킹을 위협하는 ‘다이어(Dyre)’
다이어 악성코드는 이메일의 첨부 파일 형태로 유포되어 사용자 시스템을 감염시킨다. 감염된 PC에서 사용자가 은행 사이트로 접속을 시도할 때 해당 은행의 주소가 악성코드 내부에 공격자가 명시해둔 은행 URL 리스트에 포함되어 있으면 다이어 악성코드가 동작하여 계좌 정보 탈취, 키로깅 등의 악의적인 행위를 수행한다. 다이어 악성코드가 수행하는 주요 악성 행위를 요약하면 다음과 같다.
|
- C&C 서버와 I2P 통신 - 시스템 종료 - 브라우저 정보 탈취 - 뱅킹 정보 탈취 - 키로깅 - 사용자 정보 탈취 - TV 및 VNC 모듈을 이용한 백도어 기능 등 |
다이어 구조 및 상세 동작
[그림 1]은 다이어 악성코드의 동작 과정이다. 다이어는 어파트레에 의해 다운로드되는 파일로, 인젝터(Injector), 인젝티드 Dll(시스템 프로세스, 브라우저) 등으로 구성되어 있다.
[그림 1] 악성코드 동작 과정
1. 인젝터(Injector)
최초로 실행된 다이어는 시스템의 리소스 영역에서 PE 파일을 복호화하여 메모리의 섹션 이미지를 교체한다. 이후 다시 리소스영역에서 PE 파일을 복호화하여 현재 실행되고 있는 시스템 프로세스에 인젝션(injection)한다.
시스템 프로세스에 인젝션된 PE 파일은 스레드(thread)로 동작하며 C&C 연결을 시도한다. 이후 C&C를 통해 명령을 받아 악의적인 기능을 수행하며, 특히 온라인 뱅킹 정보 탈취를 위한 브라우저 코드 패치를 시도한다.
[그림 2] 복호화 루틴
다이어 악성코드는 가상머신(Virtual Machine, 이하 VM) 기반 탐지를 우회하기 위해 다음과 같은 내용을 확인한다.
|
<Anti-VM 루틴> - 프로세서 개수 체크 - 시스템의 전원 상태 체크 |
2. 시스템 프로세스(System Process) - Injected Dll
시스템 프로세스인 인젝티드 Dll(Injected Dll)의 메인 함수는 다음과 같은 동작을 수행한다.
① 뮤텍스(Mutex) 확인 및 생성: 고유한 뮤텍스를 생성하여 악성코드가 동작하고 있는지 확인
② 운영체제(이하 OS) 버전 정보 확인
③ 로그(설정)파일 읽기/쓰기
인젝티드 Dll이 확인하는 OS에는 [그림 3]과 같이 Windows 8.1이 포함되어 있다.
[그림 3] 다이어 악성코드의 공격 대상 OS 버전
인젝티드 Dll은 아래와 같이 총 3개의 주소 및 서버에 대한 인터넷 연결을 확인한다. 만일 연결에 실패하면 C&C 서버와의 통신을 시도하지 않는다.
|
<인젝티드 Dll의 인터넷 연결 확인 대상> - google.com - microsoft.com - STUN(Session Traversal Utilities for NAT) 서버 |
인터넷 연결에 성공하면 [그림 4]와 같이 파일 내부로부터 가져온 인코딩 데이터를 복호화하여 C&C 주소를 얻는다. C&C 서버와 통신할 때는 커맨드에 따라 POST 및 GET 방식을 사용한다.
[그림 4] 다이어 악성코드 내부에 존재하는 C&C 주소
또한 원격 접속을 하기 위해 RDP 기능을 이용해 관련 레지스트리를 추가 또는 수정한다.
3. 브라우저(Browser) - Injected Dll
다이어 악성코드는 가짜 사이트로 사용자를 유도할 때 IE, 크롬, 파이어폭스 등 주요 브라우저를 이용한다. 이 글에서는 IE 브라우저를 중심으로 살펴본다.
[그림 5] IE 브라우저 후킹 코드 패치
브라우저 인젝티드 Dll은 [그림 6]과 같이 브라우저별 후킹 패치 함수를 호출한다. 후킹 함수를 이용해 웹 브라우저를 통해 송•수신되는 뱅킹 정보를 탈취한다.
[그림 6] 브라우저별 후킹 패치 함수 호출
IE, 파이어폭스, 크롬 등 브라우저별 후킹 함수는 [표 1]과 같다.
|
브라우저명 |
함수명 |
모듈명 |
|
인터넷 익스플로러(IE) |
CreateProcessInternalW |
kernel32.dll |
|
LoadLibraryExW |
KERNELBASE.dll | |
|
GetMessageW |
USER32.dll | |
|
PeekMessageW |
USER32.dll | |
|
ICSecureSocket::Send_Fsm |
WININET.dll | |
|
ICSecureSocket::Receive_Fsm |
WININET.dll | |
|
파이어폭스 |
PR_Read |
nss3.dll |
|
PR_Write |
nss3.dll | |
|
PR_Close |
nss3.dll | |
|
GetMessageW |
USER32.dll | |
|
PeekMessageW |
USER32.dll | |
|
크롬 |
LoadLibraryExW |
kernel32.dll |
|
GetMessageW |
USER32.dll | |
|
PeekMessageW |
USER32.dll | |
|
ssl_write |
chrome.dll | |
|
ssl_read |
chrome.dll | |
|
ssl_close |
chrome.dll |
[표 1] 브라우저별 후킹 함수
이후 [그림 7]과 같이 은행 사이트 접속을 시도하고 C&C 접속 여부를 확인한다. 또한 GetMessageW()와 PeekMessageW() 함수에 패치 된 코드를 통해 키로깅을 수행한다.
[그림 7] 은행 접속 시도 및 C&C 접속 확인
공격 대상 지속적으로 증가 중
[그림 8]은 다이어 악성코드의 공격 대상인 은행 리스트와 리다이렉션되는 가짜 사이트 페이지다. 지난 4월 안랩의 분석 당시 약 500개 은행이 리스트에 포함되어 있었다. 특히 지난 2월 국내 은행 2곳이 추가된 흔적이 발견되는 등 공격 대상이 지속적으로 늘어날 것으로 추정된다.
[그림 8] 다이어 악성코드 공격 대상 은행 및 리다이렉션 피싱 페이지
다이어 악성코드는 금융 정보 및 관련 정보 탈취, 금전 탈취 등을 목적으로 한다. 지난 2014년 말부터 활발하게 유포되고 있으며, 내부 코드의 흐름 자체는 크게 변화가 없지만 외형은 끊임없이 변화하고 있어 지속적인 피해가 우려되고 있다.
한편 안랩 V3 제품군에서는 다이어 악성코드를 아래와 같은 진단명으로 탐지하고 있다.
<V3 제품군 진단명>
- Win-Trojan/MDA.D709
- Trojan/Win32.Dyre
- Trojan/Win32.Dyzap
<참고 자료>
http://www.secureworks.com/cyber-threat-intelligence/threats/dyre-banking-trojan/
https://blog.korelogic.com/blog/2014/05/27/malware_callback
F5SOC Dyre Malware Analysis Report November 2014.pdf
Network_insights_of_Dyre_and_Dridex_Trojan_bankers.pdf
http://stopmalvertising.com/malware-reports/introduction-to-dyreza-the-banker-that-bypasses-ssl.html
https://portal.sec.ibm.com/mss/html/en_US/support_resources/pdf/Dyre_Wolf_MSS_Threat_Report.pdf
http://nextpage.com/threatinsight/posts/dyreza-takes-stock.php
F5SOC - Dyre Internals.pdf
- AhnLab분석팀 이덕규 연구원