← Reports

Dropper

3048.ps1

Author
Moise Medici
Updated
13 Sept 2026 · Completed
Difficulty
Easy
Platform
Windows
Languages
PowerShellx64 Assembly (shellcode)
MITRE
T1059.001 (Command and Scripting Interpreter: PowerShell) T1106 (Native API) T1027.007 (Obfuscated Files or Information: Dynamic API Resolution) T1027.013 (Obfuscated Files or Information: Encrypted/Encoded File) T1027.015 (Obfuscated Files or Information: Compression) T1140 (Deobfuscate/Decode Files or Information) T1564.003 (Hide Artifacts: Hidden Window) T1620 (Reflective Code Loading) T1071.001 (Application Layer Protocol: Web Protocols) T1105 (Ingress Tool Transfer)

MITRE ATT&CK

Execution
T1059.001
Command and Scripting Interpreter: PowerShell
3048.ps1 starts a new powershell.exe (the 64-bit one through sysnative when run from 32-bit) with -nop -w hidden -c, which runs the decoded stage2.ps1 as a script block.
T1106
Native API
stage2.ps1 calls VirtualAlloc, CreateThread and WaitForSingleObject to run the shellcode, and the shellcode calls the wininet functions directly to reach its server.
Stealth
T1027.007
Obfuscated Files or Information: Dynamic API Resolution
stage2.ps1 declares no imports: hRl gets GetProcAddress by reflection on Microsoft.Win32.UnsafeNativeMethods, and iI builds delegate types at runtime to call the returned function pointers.
T1027.013
Obfuscated Files or Information: Encrypted/Encoded File
Both payloads are stored base64-encoded: stage2.ps1 inside the 3048.ps1 one-liner, and the stage3.bin shellcode inside stage2.ps1.
T1027.015
Obfuscated Files or Information: Compression
stage2.ps1 is gzip-compressed before being base64-encoded, so the one-liner carries no readable script.
T1140
Deobfuscate/Decode Files or Information
The one-liner rebuilds stage2.ps1 at runtime with FromBase64String and GzipStream in Decompress mode, and stage2.ps1 decodes the shellcode with FromBase64String before copying it into memory.
T1564.003
Hide Artifacts: Hidden Window
The child PowerShell is started with -w hidden, WindowStyle='Hidden' and CreateNoWindow=$true, so no console window appears.
T1620
Reflective Code Loading
The shellcode is copied into PAGE_EXECUTE_READWRITE memory from VirtualAlloc and run on a new thread inside powershell.exe, then reads the next stage into another RWX buffer, with nothing written to disk.
Command and Control
T1071.001
Application Layer Protocol: Web Protocols
The shellcode talks to 185.243.115.227 over HTTPS through wininet: InternetConnectA on port 443 and HttpOpenRequestA with INTERNET_FLAG_SECURE, ignoring invalid certificate names and dates.
T1105
Ingress Tool Transfer
The shellcode allocates a 4 MB RWX buffer and pulls the next stage into it with InternetReadFile from the long URI on 185.243.115.227.