새로운 VVS 스틸러 악성코드, 난독화된 파이썬 코드로 디스코드 계정 타겟팅
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
VVS Stealer는 Telegram에서 판매되는 새로 관찰된 Python 기반 정보 스틸러입니다. Pyarmor로 난독화되었으며, PyInstaller로 패키징되고 Windows 시작 폴더를 통해 지속성을 유지합니다. 이 악성 코드는 Discord 토큰, 브라우저 자격 증명, 쿠키, 기록, 비밀번호 및 스크린샷을 수집합니다. 또한 활성 Discord 세션을 가로채기 위해 악성 JavaScript 페이로드를 주입할 수 있습니다.
조사
Palo Alto Networks Unit 42가 이 악성 코드를 공개하며, 2025년 4월부터 판매되고 있음을 언급했습니다. 연구원들은 난독화 기술, 배포 모델, 자격 증명 탈취 및 Discord 주입을 포함한 기능을 설명했습니다. 보고서는 이 도구가 스틸러에 중점을 둔 Telegram 그룹에서 활동 중인 프랑스어를 사용하는 위협 행위자와 관련이 있다고 연결합니다.
완화
조직은 알 수 없는 PyInstaller 실행 파일과 시작 폴더의 예상치 못한 바로 가기를 모니터링해야 합니다. 난독화된 Python 스크립트와 의심스러운 JavaScript 페이로드에 대한 엔드포인트 감지 규칙을 배포하십시오. Discord 및 브라우저 계정에 대한 다중 인증을 실행하고 자격 증명 수집에 악용될 수 있는 관리자 권한을 제한하십시오.
응답
VVS Stealer가 감지되면 영향을 받은 엔드포인트를 격리하고 메모리 및 파일 아티팩트를 수집한 후 IOC를 추출합니다. 악성 시작 항목을 제거하고 주입된 Discord 프로세스를 종료하며, 손상된 계정에 대해 비밀번호 재설정을 강제합니다. 추가 도난 자격 증명을 찾고 원격 C2 인프라가 차단되었는지 확인하기 위해 전체 포렌식 조사를 수행합니다.
공격 흐름
탐지
비정상 디렉토리에 생성된 Python 파일 (file_event 통해)
보기
Discord를 C2 채널로 가능성이 있는 악용 (dns_query 통해)
보기
Discord를 C2 채널로 가능성이 있는 악용 (프록시 통해)
보기
자동 시작 위치에 있는 의심스러운 바이너리 / 스크립트 (file_event 통해)
보기
PyInstaller 활용 가능성 (file_event 통해)
보기
VVS Stealer PyInstaller 패키지 및 Discord 종료 [Windows 프로세스 생성]
보기
시뮬레이션 실행
전제 조건: 텔레메트리 및 기준선 사전 비행 검사가 통과해야 합니다.
근거: 이 섹션은 탐지 규칙을 트리거하기 위해 설계된 적대자 기술(TTP)의 정확한 실행을 자세히 설명합니다. 명령과 내러티브는 식별된 TTP를 직접 반영해야 하며 탐지 로직에 의해 예상되는 정확한 텔레메트리를 생성하는 것을 목표로 해야 합니다. 추상적이거나 관련 없는 예는 오진으로 이어질 것입니다.
-
공격 설명 및 명령:
적대자는 Windows 워크스테이션에서 낮은 권한의 사용자 계정을 타겟으로 했습니다. PowerShell 드로퍼를 사용하여 악성 PyInstaller로 패키징된 실행 파일 (VVS_Stealer.exe)을 실행하여 먼저 “PyInstaller” 문자열이 포함된 명령어를 가진 프로세스를 생성합니다. 페이로드는 그런 다음 토큰 탈취 주입 단계를 준비하기 위해 실행 중인 Discord 클라이언트를 강제 종료합니다. 모든 작업은 현재 사용자 컨텍스트에서 발생하며 규칙의 기준에 맞는 단일 프로세스 생성 이벤트를 생성합니다.단계별:
- 악성 PyInstaller 번들을
%TEMP%. - 에 복사하십시오.
- “PyInstaller”라는 단어가 포함된 명령어로 실행하십시오.
악성 바이너리는 내부적으로악성 바이너리는 내부적으로 - 를 호출하여 Discord를 종료합니다. 프로세스 생성 는
이미지필드가 Discord 실행 파일 경로(C:Users<user>AppDataLocalDiscordapp-... Discord.exe)로 해석되며 원본 스폰 명령줄에 여전히 “PyInstaller”가 포함되어 있습니다.
- 악성 PyInstaller 번들을
-
회귀 테스트 스크립트: 다음 PowerShell 스크립트는 탐지 규칙을 트리거하는 데 필요한 정확한 텔레메트리를 재생성합니다. 실제 악성 페이로드를 의도적으로 피하며, 대신 무해한
notepad.exe프로세스를 시작하지만 명령줄에 키워드를 포함시켜 PyInstaller로 패키징된 실행 파일인 척 가장합니다. 또한 “이미지가 Discord.exe로 끝나는” 조건을 반영하기 위해 실행 중인 Discord 프로세스를 종료합니다.# ------------------------------------------------- # 시뮬레이션 스크립트 – Sigma 규칙 #f63685c4‑feea‑431b‑a749‑55cf8661e6ac 트리거 # ------------------------------------------------- # 1. Discord가 실행 중인지 확인(optional, 종료 보장 위해) $discordPath = "$env:LOCALAPPDATADiscordapp-1.0.9005Discord.exe" if (-Not (Get-Process -Name "Discord" -ErrorAction SilentlyContinue)) { Start-Process -FilePath $discordPath -WindowStyle Hidden Start-Sleep -Seconds 5 } # 2. 명령줄에 "PyInstaller"가 포함된 더미 프로세스를 실행하십시오. # 악의적인 자리를 신뢰할 수 있는 notepad.exe를 사용합니다. $dummyCmd = "C:WindowsSystem32notepad.exe" $cmdLine = "PyInstaller_dummy_execution -run $dummyCmd" Start-Process -FilePath $dummyCmd -ArgumentList $cmdLine -WindowStyle Hidden Write-Host "[+] PyInstaller 키워드를 사용하여 더미 프로세스를 시작했습니다." # 3. Discord.exe 이미지 이벤트를 생성하기 위해 Discord를 즉시 종료하십시오. if (Get-Process -Name "Discord" -ErrorAction SilentlyContinue) { Stop-Process -Name "Discord" -Force Write-Host "[+] Discord.exe 종료." } # 4. Optional: 짧은 지연 후 더미 notepad 창을 정리하십시오. Start-Sleep -Seconds 8 Get-Process -Name "notepad" -ErrorAction SilentlyContinue | Stop-Process -Force Write-Host "[+] 정리 완료." -
정리 명령: 잔여 프로세스가 남아 있지 않도록 하십시오.
# 남아 있는 더미 notepad 프로세스를 제거하십시오 Get-Process -Name "notepad" -ErrorAction SilentlyContinue | Stop-Process -Force # 테스트 후 정상 운영을 위해 Discord를 다시 시작합니다 $discordPath = "$env:LOCALAPPDATADiscordapp-1.0.9005Discord.exe" if (-Not (Get-Process -Name "Discord" -ErrorAction SilentlyContinue)) { Start-Process -FilePath $discordPath Write-Host "[+] 정상 운영을 위해 Discord가 다시 시작되었습니다." }