블로그
home
Nation-State Cyber Actors Analysis Report
home
⛸️

[IG-25-4003-O] fakeCAPTCHA 멀버타이징 악성코드 분석 : fakeCAPTCHA malvertising malware analysis

Classification
TLP:CLEAR
Release Date
2025/01/20
Writer
Jeongtae Kim
Editor
Bohyeong Son
Mihee Kim
Tags
LummaC2
Malvertising
CAPTCHA
Autoit
InfoStealer
Malware
2 more properties

1. 개요

○ 온라인 광고를 통해 사용자를 가짜 CAPTCHA* 페이지로 유도하여 악성코드를 배포하는 fakeCAPTCHA 멀버타이징 캠페인 관련 악성 파일을 확보하여 분석
*CAPTCHA : 접속한 사용자가 봇인지 사람인지 구분하기 위한 테스트 페이지
정상 페이지와 유사하게 제작된 가짜 페이지는 인증을 가장하여 사용자가 직접 키보드 단축키를 사용해 악성 명령어를 실행시키도록 유도
AutoIt으로 작성된 로더는 최종 악성코드 LummaC2* 인포스틸러를 파일리스 방식으로 실행
*LummaC2 : Malware-as-a-Service로 다크웹에서 판매되고 있는 정보 탈취형 악성코드
시스템 내의 브라우저, 메신저, 파일 및 비밀번호 관리, 원격 접속 프로그램 관련 파일에서 사용자 정보를 추출하여 탈취
[그림 1] 공격 흐름도

2. 대응방안

○ 멀버타이징에 흔히 사용되는 무료, 크랙, 할인 관련 키워드의 광고 클릭 자제
○ 캡챠 페이지에서 키보드를 사용하는 행위를 요구하는 경우 신중히 확인 후 진행

3. 악성코드 상세분석

3.1 피싱 캡챠 페이지 분석

○ 분석한 페이지는 hCaptcha 사의 캡챠 페이지로 위장한 가짜 페이지로 실제 캡챠 페이지와 매우 유사한 형태로 제작
[그림 2] 가짜 페이지
[그림 3] 정상 페이지
○ 페이지 내부 코드를 확인한 결과, hCaptcha 사의 API를 활용한 것은 아닌 것으로 분석
hCaptcha 사의 로고와 간단한 함수를 사용하여 정상 캡챠 페이지와 유사하게 동작하도록 제작
[그림 4] hCaptcha 사의 로고를 사용하는 코드
○ 체크 박스 클릭 시 사용자가 직접 [표 1]의 단계를 따라 사용자가 직접 악성 명령어를 실행하도록 유도
단계
키보드
행위
1
Win+R
실행 창 오픈
2
Ctrl+V
클립보드 내에 악성 명령어를 실행 창에 붙여넣기
3
Enter
악성 명령어 실행
[표 1] 피싱 페이지가 유도하는 행위
[그림 5] 악성 명령어 실행 유도
○ HTML 코드에서 pennicle.txt를 다운로드 및 실행하는 악성 파워셀 명령어와 해당 명령어를 클립보드에 주입하는 스크립트가 확인
[그림 6] 악성 파워셀 명령어 클립보드 주입 코드
단계
행위
1
C2에서 pennicle.txt 파일을 다운로드 (https://storageinstance.oss-ap-southeast-1.aliyuncs[.]com/link/process/pennicle.txt)
2
다운로드한 pennicle.txt를 실행
[표 2] 클립보드에 주입된 악성 파워셀 명령어 동작 순서

3.2 pennicle.txt 분석 – 다운로더

○ 다운로드한 pennicle.txt 내부에서는 [표 3]의 동작을 수행하는 파워셀 명령어로 확인
zip을 다운로드 후 압축 해제 및 창을 숨긴 상태로 실행
[그림 7] pennicle.txt 내부 파워셀 명령어
단계
행위
1
APPDATA\Extracted3 폴더 존재 여부 확인
2
APPDATA\Extracted3 폴더 생성
3
C2에서 SolPen.zip을 다운로드하여 APPDATA\pkg3.zip로 저장 (https://storageinstance.oss-ap-southeast-1.aliyuncs[.]com/link/process/SolPen.zip)
4
APPDATA\pkg3.zip 파일을 %APPDATA%\Extracted3 폴더에 압축 해제 후 삭제
5
SolPen.exe를 창을 숨긴 상태로 실행
[표 3] pennicle.txt 내의 파워셀 명령어 동작 순서
[그림 8] 압축 해제된 SolPen.exe

3.3 SolPen.exe 분석 – 악성코드 로더 관련 파일 드롭

○ SolPen.exe의 파일은 NSIS(Nullsoft Scriptable Install System)* 설치 파일로 확인
*NSIS: 소프트웨어 설치, 제거 등의 작업을 수행할 수 있는 설치 프로그램을 만들 수 있는 도구
파일 배포 디렉토리 지정 및 레지스트리 설정 등을 지원하여 공격자들이 악성코드 배포 시 악용
[그림 9] NSIS 설치 파일로 확인된 SolPen.exe
○ 실행된 SolPen.exe는 [표 4]의 파일들을 시스템의 %TEMP% 디렉토리에 배포
Battle 파일 : 난독화된 cmd 명령어 스크립트
그 외 : Battle 파일이 악성 행위에 사용하는 데이터 파일
생성 파일
Inventory
Reducing
Tits
Closely
Solution
Suppose
Battle
Relationship
Playing
Kingdom
[표 4] SolPen.exe가 생성하는 파일 목록
[그림 10] SolPen.exe의 파일 생성 로그 일부
○ cmd.exe를 실행하여 배포한 파일들 중 Battle 파일을 Battle.cmd라는 이름으로 복사 후 실행
[그림 11] cmd 명령어 실행 로그

3.4 Battle.cmd 분석 – 악성코드 로더 빌드

○ 가비지 문자열과 환경 변수를 사용해 난독화된 CMD 명령어 스크립트 파일
[그림 12] 난독화된 Battle.cmd 파일
○ 난독화 해제 후 분석한 결과, tasklist와 findstr 명령어를 사용하여 보안 관련 프로세스들이 존재하는지 확인하는 코드 발견
No
검색 문자열
타겟 보안 프로세스
관련 보안 회사
1
wrsa
wars.exe
Webroot
2
opssvc
opssvc.exe
Quick Heal
3
AvastUI
AvastUI.exe
Avast
4
AVGUI
AVGUI.exe
Avast
5
bdservicehost
bdservicehost.exe
Bitdefender
6
nsWscSvc
nsWscSvc.exe
Norton
7
ekrn
ekrn.exe
ESET
8
SophosHealth
SophosHealth.exe
Sophos
[표 5] 관련 보안 프로그램 정보
[그림 13] 보안 관련 프로세스 검색 코드
보안 프로그램 존재 여부에 따라 악성 파일명을 달리해, SolPen.exe가 배포한 파일들을 사용하여 %TEMP%\701961 폴더에 [표 7]의 파일들을 생성
프로세스와 파일명을 체크하는 탐지 기능을 회피하기 위한 것으로 추정
[그림 14] 파일명을 변경하는 코드
파일명 (보안 프로그램 X)
파일명 (보안 프로그램 O)
정보
사용되는 파일
Puts.com
AutoIt3.exe
AutoIt 스크립트 실행 프로그램
Tits, Solution
j
j.a3x
악성 AutoIt 스크립트
Relationship, Playing, Closely, Reducing, Inventory, Kingdom, Suppose
[표 7] 보안 프로그램 여부에 따른 파일명 차이
[그림 15] 파일을 생성하는 코드
[그림 16] 생성된 파일들
○ 생성한 Puts.com(Autoit3.exe) 파일을 사용해, 악성 AutoIt 스크립트 j(j.a3x)를 실행
[그림 17] 악성 스크립트 실행 로그

3.5 j(j.a3x) 분석 – 최종 악성코드 실행

○ 암호화된 문자열과 다량의 While문, Switch문으로 난독화되어 있는 Autoit 스크립트
[그림 18] 난독화된 Autoit 스크립트
○ 난독화 해제 후 분석한 결과, 내부에는 분석을 방해하기 위한 안티 리버싱 코드 존재
확인된 안티 리버싱
GetTickCount 실행 시간 확인
ntdll.dll 수동 로드
SetErrorMode 샌드박스 확인
[표 8] 악성 스크립트에 적용된 안티 리버싱
[그림 19] 안티 리버싱 코드 일부
○ 악성 스크립트 j(j.a3x)를 삭제하여 파일 시스템에서 악성 행위 흔적을 제거
[그림 20] 악성 스크립트 j(j.a3x)를 삭제하는 코드
○ C2(QbeMCwQrsKPS[.]QbeMCwQrsKPS)의 응답 여부 확인 후 응답이 없다면 종료
공격자가 C2 응답 여부를 통해 악성코드의 실행을 제어 가능
[그림 21] C2 응답 여부를 확인하는 코드
○ 스크립트 내부에서 확인된 압축 및 암호화된 최종 악성코드 데이터 문자열
[그림 22] 압축 및 암호화된 최종 악성코드
○ 최종 악성코드는 [표 9]의 순서를 따라 압축 해제 및 복호화
단계
행위
1
복호화용 Shellcode를 가상 메모리에 로드
2
최종 악성코드 복호화용 KEY를 복호화
3
복호화된 Key를 사용해 압축된 최종 악성코드 복호화
4
RtlDecompressFragment API를 사용해 최종 악성코드 압축 해제
[표 9] 최종 악성코드 복호화 및 압축 해제 순서
[그림 23] 최종 악성코드 압축 해제 및 복호화 코드
○ 복호화가 완료되면 시스템 프로세스인 explorer.exe에 최종 악성코드를 인젝션하여 파일리스 방식으로 실행하려고 시도
인젝션 실패 시 현재 프로세스인 com(AutoIt3.exe)에 가상 메모리를 할당하여 실행
[그림 24] 최종 악성코드 인젝션 함수
○ 인젝션 과정에서 최종 악성코드를 추출하였고 해당 파일 내의 난독화된 문자열을 확인한 결과, 최종 악성코드는 LummaC2* 인포스틸러로 분석됨
*LummaC2 : Malware-as-a-Service로 다크웹에서 판매되고 있는 정보 탈취형 악성코드
[그림 25] LummaC2 악성코드 관련 문자열
○ 최종 악성코드는 시스템 내의 파일들에 접근하여 [표 10]의 프로그램들과 관련된 사용자 데이터를 탈취
종류
프로그램명
브라우저 (18종)
Chrome, Opera, Edge, Brave, EpicPrivacy, Vivaldi, Maxthon, Iridium, AVG, QQBrowser, 360Browser, SuperBrowser, CentBrowser, Chedot, CocCoc, Firefox, Waterfox, Pale Moon
비밀번호 관리 도구 (3종)
Bitwarden, NordPass, 1Password
VPN & Cloud (5종)
OpenVPN Connect, NordVPN, gcloud, azure, aws
원격 접속 도구 (2종)
UltraVNC, AnyDesk
파일 관리 도구(12종)
FileZilla, GHISLER, 3D-FTP, SmartFTP, FTPGetter, FTPbox, FTPInfo, FTPRush, FTP Commander, Deluxe, FTP Manager Lite, Auto FTP Manager
메신저 (7종)
Telegram, The Bat!, Mailbird, eM Client, Thunderbird, Discord, PMAIL
[표 10] 탈취 대상 프로그램명
[그림 26] 데이터 파일 접근 로그 일부
○ 로그에서 여러 C2 도메인으로 DNS 검색을 시도하는 것이 확인되었으나 현재는 모든 C2가 접근이 불가능한 상태
C2 도메인
https://battle-curbe[.]cyou/
https://processhol[.]sbs/
https://librari-night[.]sbs/
https://befall-sm0ker[.]sbs/
https://p10tgrace[.]sbs/
https://peepburry828[.]sbs/
https://owner-vacat10n[.]sbs/
https://3xp3cts1aim[.]sbs/
https://p3ar11fter[.]sbs/
[표 8] DNS Query를 시도한 도메인
[그림 27] DNS Query 실패 로그

4. IOC 정보

NO
Type
Data
Info
1
MD5
56b5ba0c22514be73f715832d8c2c9c7
pennicle.txt
2
MD5
582bff9fd6592324173573056c09523c
SolPen.zip
3
MD5
3f743b632a0a52e5d8ba262c13134b17
SolePen.exe (SolPen.zip)
4
MD5
b4e6782b85bd29593dc52c87c0c00312
j (j.a3x)
5
MD5
b468e489f7478dd1ab553f2a8ac7dd9b
Battle (Battle.cmd)
6
MD5
fa2e55cf1a770c71e719d461d4387eb9
Closely (j 관련 데이터)
7
MD5
dc2906aae8abf4e2e1541ed078112ada
Inventory (j 관련 데이터)
8
MD5
87deb0e74bc8fd2ae4ac39fad86f7544
Kingdom (j 관련 데이터)
9
MD5
9847bfc360fdae334c6f1ca9c50be501
Playing (j 관련 데이터)
10
MD5
3444cab11b6809cbe675b9f64828a65c
Reducing (j 관련 데이터)
11
MD5
93bf8c8b82622a4045265138bb4c51ae
Relationship (j 관련 데이터)
12
MD5
81a6d18b69f315fe47286a6d8c270a05
Suppose (j 관련 데이터)
13
MD5
663fd2c0ede6b605cf51cdbf708d064b
Solution (Puts.com 관련 데이터)
14
MD5
57d598bb11c33379fe385dff81c08519
Tits (Puts.com 관련 데이터)
15
C2
https://storageinstance.oss-ap-southeast-1.aliyuncs[.]com/link/process/pennicle.txt
pennicle.txt 다운로드
16
C2
https://storageinstance.oss-ap-southeast-1.aliyuncs[.]com/link/process/SolPen.zip
SolPen.zip 다운로드
17
C2
https://battle-curbe[.]cyou/
DNS Query 시도
18
C2
https://befall-sm0ker[.]sbs/
DNS Query 시도
19
C2
https://owner-vacat10n[.]sbs/
DNS Query 시도
20
C2
https://processhol[.]sbs/
DNS Query 시도
21
C2
https://p10tgrace[.]sbs/
DNS Query 시도
22
C2
https://3xp3cts1aim[.]sbs/
DNS Query 시도
23
C2
https://librari-night[.]sbs/
DNS Query 시도
24
C2
https://peepburry828[.]sbs/
DNS Query 시도
25
C2
https://p3ar11fter[.]sbs/
DNS Query 시도
26
C2
QbeMCwQrsKPS[.]QbeMCwQrsKPS
PING 요청

5. 참고자료