기초 분석
샘플 선정
Adware.Generic 후보
- dbdcee0004dbfd8275ac0829d3bca9fce14b67fc3a3b8ea80eb196c511dbcb2c (98)
- 4845ac4d2463baec439182907e66fd1069b9ad7781dfd15d906d0c5200eed852(28)
- cdce56ba8c1c75ae29b00a49edfe971627fdf38cc086dcd8f1074d3e2dcdbb05 (27)
- 518ed5183136a449ac608c54dd26f896cfcbe52405282fdbfe1ca80b5ce5d6b0 (18)
- 2aa9f15810e2c55dbc8522e386d76d1a8fb3a63a712b33e17bd2139a7b45c76b (13)
위의 5가지 후보 중 첫 번째 샘플에서 가장 많은 HTTP 활동이 식별되어 이를 분석 대상으로 선정했다.
VirusTotal
Detection
해당 샘플은 사용자가 원치 않는 프로그램을 설치하는 스파이웨어 트로이 목마 공격(Trojan horse)으로 식별되었으며, KInstallTool이 주요한 동작을 수행할 것으로 보인다.
* KInstallTool
- 원격 host가 요청할 경우 Text 파일을 전송하는 Windows PE 파일
- content-length, chunk 없이도 HTTP POST나 PUT 요청을 수행
- PE EXE 혹은 Windows 파일을 다운로드하는 HTTP 요청 수행
Details
해당 파일은 패킹되지 않았으며, 다음의 DLL 들을 import 한다.
1. ADVAPI32.dll
- 사용자 계정과 암호화 등 보안과 레지스트리 관련 명령어를 위한 Windows API를 제공한다.
- 권한 상승, Windows 레지스트리 상호작용 등에 사용된다.
3. SHELL32.dll
- 프로그램 실행, 파일 접근 및 desktop 관리 같은 shell 연관 작업들을 관리한다.
- 악성파일 실행, 파일 시스템 관리 등에 사용된다.
Relations
94개의 접촉 URL 중 태반이 'duba.net'을 포함하고 있으며, 102개의 접촉 IP 주소 중 21개가 의심 IP로 식별되었다.
정적 분석
패킹 여부 분석 - PEiD, Exeinfo PE
해당 파일은 패킹되지 않았으며, Microsoft Visual C++ v 9.0 환경에서 제작되었다.
문자열 검색 - binText
DLL 목록
앞서 VirusTotal에서 확인한 DLL 외에도 추가 DLL을 확인할 수 있었다.
EXE 목록
의심 도메인 duba.net 관련 활동
VirusTotal에서 확인한 의심 도메인명 'duba.net'을 키워드로 검색을 시도했다.
가장 먼저 'wq.cloud.duba.net' 도메인명과 함께 중국 IP인 '221.228.204.36'과 '122.193.207.36'으로 http(80) 통신을 시도하는 것을 확인했다.
마지막으로 주요 동작 프로그램인 KInstallTool 의 존재도 확인하였다.
PEview
binText에서 확인하지 못했던 WS2_32.dll을 발견했다.
WS2_32.dll은 Windows Sockets API의 주요한 요소로, Windows OS 시스템의 네트워크 연결을 담당한다.
e.g. 1) 연결 실행과 종료, 2) 네트워크를 통한 데이터 송수신, 그리고 3) 네트워크 프로토콜을 관리
동적 분석
Cports
1) 샘플을 실행하면 가장 먼저 '120.52.95.247' 중국 IP 주소로 http 통신을 수행하고, unknown이라는 process 명으로 다수의 http, https 통신을 시도한다.
2) 일정 시간이 지나면 '139.9.44.129' IP 주소로 http 통신을 지속하는데, 해당 주소는 공백의 Nginx 웹사이트였다.
3) 몇몇 IP 주소에 대한 http 통신은 ESTABLISHED 상태가 되는데, 해당 샘플의 VirusTotal Relations에 모두 등록된 IP 주소였다.
4) 이후에는 '139.9.0.0/16' IP 서브넷에 대한 http 통신이 집중적으로 발생한다.
5) '120.92.73.121' IP 주소에 대한 TCP 연결이 성립되면서 해당 IP 주소로 지속적인 http 연결 대기가 발생한다.
ProcessExplorer
ProcessMonitor
아래의 3가지 이유로 ProcessMonitor 로그 분석을 포기했다.
1. 50분을 들여가며 가능한 모든 로그를 읽고 이해해보려고 했지만 1%도 제대로 확인하지 못할 정도로 어지러움.
2. 이전의 악성코드 처럼 자신의 행적을 숨기기 위한 자가삭제 기능이 없고, 게임 인스톨러를 설치할 뿐인 Adware
3. 금주 과제의 목적은 탐지 가능한 네트워크 패턴을 생성하는 것이기 때문에 Wireshark의 분석이 더 중요하다고 판단함.
SystemExplorer
SystemExplorer의 snapshot 기능을 사용하여 샘플 실행 전과 후의 파일 레지스트리 상태를 비교하였다.
파일 구조
1.1 C:\KDubaSoftDownloads
- NeteaseCloudMusic_Music_official_2-20230530.exec / fd / cfg
> 'NeteaseCloudMusic' 관련 파일로 보이며, 비정상적인 확장자명을 가짐.
1-2. C:\ProgramData\Kingsoft
- 다양한 'ksbw_*' 파일과 '.dat' 파일 포함함.
- 'fsq' 및 'temp' 디렉토리 포함
> KingSoft 관련 S/W에서 생성한 임시 또는 설정 파일로 보임.
> 파일 확장자 '.che', '.dat'는 해당 파일들이 캐시 또는 데이터 파일일 가능성을 나타냄.
파일 레지스트리 구조
2-1. HKCU (HKEY_CURRENT_USER)
- 'KVip', 'tunnel2' = "211_3"
> 내부적으로 사용되는 'KVip' 관련 키가 설정 되어 있음.
> 터널링 또는 VPN 설정으로, 악성 코드의 네트워크 트래픽 우회 및 제어하려는 의도를 나타낼 수 있음.
2-2. HKLM (HKEY_LOCAL_MACHINE)
- 'kisknl', 'ImagePath = "??\C:\Windows\system32\drivers\kisnl.sys"
> Kingsoft 관련 S/W로 확인됨.
Autoruns
샘플 실행 결과, kxesc 라는 중국의 보안 관련 프로그램이 시작 프로그램에 등록된다.
다음으로 duba.net과 연관된 duba.64bits가 파일 탐색기에 새로 등록되었다.
kxescore와 kxewsc가 서비스에 등록되었다.
Wireshark
1. 악성 코드 최초 실행
악성코드 최초 실행 시, 외부 IP에서 .ini 확장자를 가진 파일을 요청(GET)하는 동작이 확인된다.
alert tcp 192.168.92.172 49330 -> 221.194.141.0/24 80 (msg: "duba downloader initialization"; content: "GET /defend/01/jcqgx.ini HTTP/1.1"; sid:3000001; rev:1;)
2. 지속적인 HTTP POST 요청 확인
그후 '139.9.44.129' IP 주소로 TCP 연결 확립 후 HTTP 통신을 시작했다.
실행 동작을 확인하니 TCP 연결 확립 후 'http://infoc0.duba.net/'으로 시작하는 도메인에 HTTP POST message를 전송하고 있었다.
이후로도 '139.9.0.0/16' IP 대역의 49000번대 port 영역에서 동일한 동작을 확인했다.
alert tcp 192.168.92.172 [49000:50000] -> 130.9.0.0/16 80 (msg:"HTTP POST Detected"; content:"POST /c/ HTTP/1.1";http_uri:"infoc0.duba.net";sid:3000002;rev:1;)
3. 특정 서버 주소와 암호화 키 교환 동작 확인
중간 과정에서 '114.132.191.224' IP 주소와 암호화 키를 공유하는 동작을 확인하였다.
alert tcp 192.168.92.172 [49000:50000] -> 114.132.191.224 443 (msg:"Encryption key exchanged"; sid:3000003; rev:1;)
4. 설치 파일 다운로드 동작 확인
TCP 연결 및 HTTP 통신의 반복을 마친 뒤, '218.12.76.156' 으로 NeteaseCloudMusic_Music 관련 설치파일을 요청하고 설치내용을 지속적으로 수신하게 된다.
alert tcp 218.12.76.156 80 -> 192.168.92.172 [50000:51000] (msg:"Installation detected";sid:3000004;rev:1;)
5. 설치 작업 완료 후 지속적인 query POST HTTP 동작 확인
모든 설치 작업을 마친 뒤에는 'http://f5-ck.zhhainiao.com/' 도메인을 가진 '120.92.213.209' IP 주소로 "/query3?" HTTP를 전송하는 작업을 반복하였다.
alert tcp 192.168.92.172 [50000:] -> 120.92.213.209 90 (msg:"Continuous query sending events";content: "POST /query3?"; sid=3000005;rev:1;)
결론
기초 분석 결과
- 해당 악성코드 샘플은 사용자가 원치 않 프로그램을 다운로드하는 트로이 목마 스파이웨어로 식별된다.
- 주요 프로그램은 KInstallTool로, 이는 HTTP 통신을 통해 실행 파일을 수신(GET)하거나 Text 파일을 송신(POST, PUT)한다.
- 주요 접촉 도메인은 대부분 'duba.net'을 포함하고 있다.
정적 분석 결과
- 해당 파일은 패킹되지 않았다.
- duba.net과 HTTP 통신을 수행하고, KInstallTool 설치를 요청하는 내용을 확인했다.
- Windows Sockets API의 주요한 요소로, Windows OS 시스템의 네트워크 연결을 담당하는 WS2_32.DLL을 추가로 식별하였다.
> 1) 연결 실행과 종료, 2) 네트워크를 통한 데이터 송수신, 그리고 3) 네트워크 프로토콜 관리
동적 분석 결과
- 악성코드 샘플을 실행하면 가장 먼저 TCP 연결을 확립한 후 'http://infoc0.duba.net/'으로 시작하는 도메인에 "POST /c/ HTTP/1.1" HTTP message를 전송하고 200 status code로 응답 받는 것을 확인했다.
- 해당 작업이 끝난 뒤, '218.12.76.156' 으로 NeteaseCloudMusic_Music 관련 설치파일을 요청하고 설치 내용을 지속적으로 수신하게 된다.
- 모든 설치 작업을 마친 뒤에는 'http://f5-ck.zhhainiao.com/' 도메인을 가진 '120.92.213.209' IP 주소로 query HTTP를 전송하는 작업이 계속 반복되었다.
결론
해당 악성코드 샘플은 사용자가 원치 않는 프로그램을 다운로드하는 트로이 목마 스파이웨어로 확인되었다.
주요 프로그램인 KInstallTool은 HTTP 통신을 통해 'duba.net' 도메인에 연결되어 실행 파일을 수신하거나 텍스트 파일을 송신한다.
정적 분석 결과, 해당 파일은 패킹되지 않았으며, Windows Sockets API의 핵심 요소인 WS2_32.DLL을 이용하여 네트워크 연결과 데이터 송수신, 프로토콜 관리를 수행한다.
동적 분석에서는 악성코드가 실행되자마자 TCP 연결을 통해 특정 도메인에 HTTP POST message를 전송하고, 이후 특정 IP에서 게임 런처 관련 설치 파일을 지속적으로 수신하며, 모든 설치 작업이 완료되면 특정 도메인에 HTTP query를 반복 전송하는 것을 확인하였다.
참고 출처
'리팩토링 > 2. 보안관제' 카테고리의 다른 글
리팩토링 20주차. 악성코드 분석 보고서(2) (0) | 2024.11.29 |
---|---|
리팩토링 18주차. 악성코드 샘플링 및 기초 분석 (1) | 2024.11.11 |
리팩토링 17주차. Snort/Snort Rule Signature (1) | 2024.11.04 |
리팩토링 16주차. 악성코드 분석 보고서 (0) | 2024.10.31 |
리팩토링 15주차. 악성코드 분석 실습(2) (1) | 2024.10.23 |