랜섬웨어 리포트

매달 하나의 악성코드/랜섬웨어를 선정하여 상세 리포트를 제공합니다.
소만사 유지관리고객이 되시면 악성코드 분석 전문가가 직접 샘플을 입수하여 분석한 최신 악성코드/랜섬웨어 리포트를 가장 빠르게 받아보실 수 있습니다.

랜섬웨어

비전문가도 활용가능한 서비스형 악성코드 국내 K기관 22GB분량의 내부문서 다크웹에 유포, Lummar Stealer 분석

1. 개요

1.1 배경

 

[그림 1] Lumma Stealer 로고

C언어 기반의 정보 탈취 악성코드인 Lumma Stealer(LummaC2)는
최소 2022년 8월부터 러시아어권 포럼에서
서비스형 악성코드(MaaS, Malware-as-a-Service) 모델을 통해 유포된 것으로 확인되었다.

MaaS란 악성코드 수요자에게 즉시 배포 가능한 멀웨어를 제공하는 비즈니스 모델로,
이러한 방식은 전문 기술이 없는 일반 사용자도
쉽게 사이버 공격을 감행할 수 있게 만든다는 점에서 위협적이다.

빌드 크기는 약 150~396KB이며 스틸러의 가격은 세 가지 범주로 나뉜다.

 

ㆍ Experienced – $250/month:
대량의 로그를 다운로드하고 특정 매개변수로 로그를 필터링하는 기능을 포함


ㆍ Professional – $500/month:
스틸러에 대한 무제한 규칙생성, 다른 사람과 통계 공유, 비상주 로더 등의 기능을 포함


ㆍ Corporate – $1000/month:
사용자가 무작위 빌드를 받아서 생성된 빌드는 다운받는 사람마다 서로 다르며
Heaven’s Gate 기법이 구현되어 동적 분석을 우회하는 기능 포함

 

Lumma Stealer의 주된 공격 목표는
감염된 PC로부터 암호화폐 지갑 주소, 웹 브라우저에 저장된 비밀번호와 쿠키,
신용카드 정보, 은행 정보 및 기타 중요한 개인정보를 탈취하는 것이다.

 


[그림 2] GitHub 프로젝트 댓글의 Lumma Stealer 피싱 링크

 

2024년에는 새로운 유포 방식이 확인되었다.
공격자들은 GitHub 프로젝트 댓글에 가짜 수정 파일(fix)로 위장한 ZIP 아카이브를 게시하여,
사용자가 직접 Lumma Stealer를 실행하도록 유도했다.

또한 가짜 CAPTCHA 페이지와 ‘ClickFix’ 기법을 이용해
악성코드를 다운로드하게 만드는 수법도 사용되었다.

 

[그림 3] 다크웹 해킹 포럼의 K사 데이터 유출 게시글

최근 2025년 4월, 국내 K기관이 Lumma Stealer에 감염되어 내부 데이터가 유출되는 사고가 발생했다.

유출된 데이터는 약 22GB 분량으로, 다크웹에서 15,000달러에 판매 중인 것으로 확인되었다.
해당 게시글에 따르면, 유출된 자료에는 일부 암호화되지 않은 개인 정보와 함께
개인 식별 및 신분 도용에 악용될 소지가 큰 문서들이 포함된 것으로 알려졌다.

 

──────────────────────────────────────────────

 

2. 분석

2.1 파일 정보

– PE 파일(SHA-256)

 

– C2 Config 페이로드

 

 

– C2 서버

 

 

 

2.2 MITRE ATT&CK

Command and Control
ㆍ (T1017.001) Application Layer Protocol: Web Protocols
ㆍ (T1573) Encrypted Channel

 

Collection
ㆍ (T1119) Automated Collection

 

Discovery
ㆍ (T1217) Browser Information Discovery
ㆍ (T1082) System Information Discovery

 

Credential Access
ㆍ (T1555.003) Credentials from Password Stores

 

Exfiltration
ㆍ (T1041) Exfiltration Over C2 Channel

 

Defense Evasion
ㆍ (T1027) Obfuscated Files or Information
ㆍ (T1027.013) Obfuscated Files or Information: Encrypted/Encoded File

 

──────────────────────────────────────────────

 

3. 분석

3.1 탐지회피
Lumma Stealer는 탐지 회피 및 분석 지연을 위해
문자열 암호화/난독화, API Resolving 기법 등을 사용한다.


3.1.1 문자열 암호화


해당 악성코드(Lumma Stealer)는 내부 C2 주소를
chacha20 알고리즘으로 암호화하여 내부에 가지고 있다.

 

[그림 4] 암호화 되어 있는 문자열 복호화


대칭키 암호화인 chacha20 알고리즘으로 암호화된 API 문자열을 복호화 한다.

 

[표 1] chacha20 키 스트림

 

 


3.1.2 API Resolving


Lumma stealer는 분석 지연 및 패턴 기반의 탐지를 회피하기 위해 API Resolving을 사용한다.
API Resolving이란, 프로그램이 함수를 이름으로 직접 호출하는 대신
실행 시점에 필요한 함수의 실제 주소를 동적으로 찾아 호출하는 기법이다.

이 기법은 본래 호환성 확보나 의존성 최소화 등을 위해 정상 프로그램에서도 사용되지만,
악성코드의 경우 주로 정적 분석을 무력화하고 탐지 시스템을 우회하기 위한 수단으로 이를 악용한다.

 

 


[그림 5] winhttp.dll API Resolving

 

Lumma Stealer는 먼저 447590 함수를 호출하여
winhttp.dll에서 사용할 API의 주소를 계산하고 이를 메모리에 할당한다.
그 외 다른 API들은 XOR 연산을 통해 주소를 알아내며,
이렇게 가져온 주요 DLL과 API 목록은 [표 2]와 같다.

KERNEL32.DLL
LoadLibraryExW, FreeLibrary
ntdll.dll
RtlAllocateHeap, RtlReAllocateHeap, RtlHeapFree

 

[표 2] API Resolving

 

 

3.1.3 패킹 여부 확인
Lumma Stealer 4.0 버전에는 새로운 기능이 추가되었다.
패킹(packing)되지 않은 원본 악성코드를 실행하면,
해당 파일이 악성코드임을 경고하며 실행 여부를 묻는 확인 창이 나타난다.

개발자 측은 이 기능이 암호화되지 않은 원본 샘플의 유출을 방지하기 위한 조치라고 밝혔다.

 

[그림 6] GetUserDefaultUILanguage

 

 

GetUserDefaultUILanguage API를 호출하여 현재 실행 중인 PC의 언어를 확인한다.
EAX 레지스터에 반환값인 0x412가 들어왔으므로 한국어를 사용 중인 환경임을 알 수 있다.

 

 


[그림 7] RtlAllocateHeap

 


RtlAllocateHeap API로 힙에 메모리 블록을 할당한다.

 

 


[그림 8] Lumma stealer 실행 경로

앞서 할당한 메모리 블록에 현재 Lumma stealer가 실행되고 있는 경로를 가져온다.

 

 

 


[그림 9] Heaven’s gate

 

4458D6번지에서 동적 분석을 방해하기 위해 Heaven’s gate 기법을 사용한다.

 


[그림 10] NtUserGetForegroundWindow

Heaven’s gate 기법으로 NtUserGetForegroundWindow API를 호출하여
GUI에서 현재 실행중인 최상단 창의 정보를 가져온다.

 

 


[그림 11] RtlFreeHeap

 

RtlFreeHeap으로 Lumma stealer의 실행 경로가 담긴 메모리 블록을 해제한다.

 


[그림 12] 재할당

다시 RtlAllocateHeap API로 힙에 메모리 블록을 할당한다.

 

[그림 13] 문자열 복호화 분기점

Lumma Stealer가 패킹이 되어있지 않으면 문자열을 복호화 하기 위한
ecx 레지스터에 저장된 주소로 jmp* 한다.

* jmp(어셈블리 명령어. 원하는 코드를 실행위치로 이동하는 명령어. 이하 jmp로 표기)

 

 

[그림 14] NtAllocateVirtualMemory

 

Heaven’s gate 기법으로 NtAllocateVirtualMemory API를 호출하여 메모리를 할당한다.

 

 

[그림 15] 문자열 난독화 해제

 

NtAllocateVirtualMemory로 할당한 메모리 영역에
난독화된 문자열을 복호화하여 메모리에 할당한다.

 

 


[그림 16] MessageBox

 

패킹이 되어있지 않은 Lumma Stealer 실행 시 멀웨어의 실행 여부를 알리는 메시지 박스를 띄운다.

 

[그림 17] UPX 패킹된 샘플

Lumma Stealer가 패킹이 되어 있다면 문자열 복호화하는 주소가 아닌 곳으로 jmp 한다.
jmp 후 메시지 박스 출력 없이 진행하게 된다.

 

 

3.2 C2 서버 연결

Lumma Stealer 악성코드를 실행하면
Chrome, Firefox, Edge 등 주요 브라우저의
쿠키, 저장된 비밀번호, 자동완성 데이터, 신용카드 정보 등
개인 정보를 수집한다. 또한, 암호화폐 지갑도 탈취한다.

 

 

[그림 18] C2 도메인 복호화


chacha20 암호 알고리즘으로 암호화되어 있는 C2 도메인 문자열을 복호화 한다.

 

[표 3] C2 도메인

 

 

[그림 19] WinHttpOpen

 

 


[그림 20] C2 연결

 

복호화한 C2 도메인을 WinHttpConnect API를 호출하여 443포트로 C2 연결을 시도한다.

 

 

[그림 21] WinHttpOpenRequest

 

inspirzedthoughts.tech C2에 POST 메서드로 /api 자원을 요청하는 핸들을 만든다.

 

 

[그림 22] WinHttpSendRequest

 

WinHttpSendRequest API를 호출하여
act=life라는 자원을 POST 요청으로 전송하여 C2 서버에 연결한다.
C2에 연결되면 C2 서버로부터 Base64로 인코딩된 config 파일을 받아온다.
해당 샘플의 C2 서버가 모두 닫혀있어 알려진 config 페이로드를 기반으로 작성하였다.

 

 

 


[표 4-1] 인코딩된 config 파일

 

[표 4-2] 인코딩된 config 파일

 

[표 4-3] 인코딩된 config 파일

 

인코딩된 문자열의 첫 32바이트는 복호화를 위한 키이고,
이후부터는 암호화된 본문이다. 32바이트 키와 XOR 연산하여 복호화를 진행하게 된다.
복호화된 내용은 [표 5]와 같다.

 

[표 5-1] 복호화된 config 파일

 

[표 5-2] 복호화된 config 파일

 

[표 5-3] 복호화된 config 파일

 

Lumma Stealer 4.0버전부터는
기존 Lumma Stealer와 다르게 정보 탈취 대상이 하드코딩되어 있지 않고 C2 서버로부터 받아온다.

 

 


[그림 23] WinHttpCloseHandle

 

WinHttpOpenRequest로 생성한 자원을 요청하는 핸들을 종료시킨다.
만약 연결할 C2가 닫혀 있으면 다른 복호화된 C2 도메인에 [그림 19] ~ [그림 23] 과정을 반복한다.

 

 

3.3 추가 C2 서버 연결

 


[그림 24] 추가 C2 도메인 복호화

 

Lumma Stealer는 Steamcommunity 프로필도 C2로 사용한다.
[표 3]의 C2 서버가 모두 닫혀있으면
Steamcommunity URL을 복호화하여 WinHttp API로 연결을 시도한다.

 

 

 

3.4 정보 탈취

복호화된 config 파일에 명시된
브라우저 쿠키 및 저장된 개인 정보와 암호화폐 지갑 주소를 탈취하여 C2 서버에 전송한다.

 

[그림 25] WinHttpOpen

WinHttpOpen API를 호출하여 C2 연결을 위해
WinHTTP 함수를 초기화하고 WinHTTP 세션 핸들을 반환한다.

 

 

[그림 26] C2 연결 정보

이후 탈취한 데이터를 “act=receive_message&ver=4.0&lid=yau6Na–5504031492&j=” 형식으로
POST 요청으로 데이터를 C2 서버로 보낸다.
lid는 해당 Lumma Stealer의 식별 번호로 추정된다.

 

──────────────────────────────────────────────

 

4. 탐지

 


[그림 27] Privacy-i EDR 안티바이러스 탐지

Lumma Stealer는 Privacy-i EDR의 안티바이러스 엔진에 의해 탐지 및 격리된다.

 

.

PDF로 리포트 자세히 보기
이전글 A신용보증기업 랜섬웨어 감염으로 전산서비스 전면 중단 전세·사업대금 보증 지연원인 | GUNRA 랜섬웨어 2025.07.21
다음글 없음
목록