NG0002 Alveja Instituições Acadêmicas Chinesas com Iscas Institucionais Armadas
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
Um agente de ameaça rastreado como UNG0002 lançou uma campanha de spear-phishing contra universidades chinesas utilizando um arquivo ZIP malicioso disfarçado como um aviso oficial de teste de aptidão física. Dentro do arquivo havia um arquivo LNK de dupla extensão que executava um VBScript, que então usava Bandizip para carregar discretamente uma DLL maliciosa. Essa DLL realizava verificações anti-análise, descriptografava uma carga útil SFX na memória e, por fim, implantava um beacon do Cobalt Strike para atividades de comando e controle. A operação combinou técnicas de living-off-the-land com infraestrutura hospedada na Alibaba Cloud para apoiar a intrusão.
Investigação
O Seqrite Labs examinou o e-mail de phishing, o anexo e toda a cadeia de carga útil, revelando que explorer.exe foi usado para lançar o script VBS e Bandizip.exe foi abusado para hospedar a DLL maliciosa. Os analistas documentaram extensas verificações anti-debugging projetadas para evadir ambientes de análise e mapearam o fluxo completo de execução desde a isca inicial até a implantação final do beacon. Eles também identificaram a infraestrutura vinculada à campanha, incluindo o endereço IP 60.205.186.162 e o domínio lysander.asia, e ligaram a atividade a operações anteriores do UNG0002. Enriquecimentos adicionais mostraram que o servidor de comando e controle estava hospedado na Alibaba Cloud e usava registros MX relacionados ao Feishu, apoiando ainda mais a atribuição a um agente de ameaça baseado na China.
Mitigação
Não especificado
Resposta
Não especificado
"graph TB %% Definições de classe classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef file fill:#e6e6e6 classDef process fill:#ffdd99 classDef malware fill:#ff9999 classDef network fill:#c2c2f0 %% Nós – Ações (Técnicas) action_initial_access["<b>Ação</b> – <b>T1566.001 Anexo Spearphishing</b><br/>E-mail com ZIP malicioso é enviado ao alvo"] class action_initial_access action action_user_execution["<b>Ação</b> – <b>T1204.002 Execução pelo Usuário</b><br/>O usuário abre o arquivo LNK pensando ser um PDF"] class action_user_execution action action_masquerading["<b>Ação</b> – <b>T1036 Mascaramento</b><br/>LNK é de dupla extensão e exibido como um PDF"] class action_masquerading action action_permission_hijack["<b>Ação</b> – <b>T1574.005 Fraqueza em Permissões de Arquivo Instalador Executável</b><br/>Explorer.exe é usado para lançar um script VBS oculto"] class action_permission_hijack action action_vbscript["<b>Ação</b> – <b>T1059.005 Visual Basic</b><br/>VBS abre o PDF isca e executa Bandizip"] class action_vbscript action action_lol["<b>Ação</b> – <b>T1218 Vivendo da Terra</b><br/>Bandizip, um arquivador legítimo, é abusado"] class action_lol action action_hidden_files["<b>Ação</b> – <b>T1564.001 Arquivos e Diretórios Ocultos</b><br/>Carga útil colocada em pastas estilo macOS"] class action_hidden_files action action_dll_side_loading["<b>Ação</b> – <b>T1574.008 Interceptação de Caminho por Sequestro de Ordem de Busca</b> / <b>T1574.002 Carregamento de DLL por Lado</b><br/>Bandizip carrega ark.x64.dll maliciosa"] class action_dll_side_loading action action_obfuscation["<b>Ação</b> – <b>T1027 Arquivos ou Informações Ofuscados</b><br/>DLL contém strings criptografadas e carga útil SFX criptografada"] class action_obfuscation action action_anti_analysis["<b>Ação</b> – <b>T1497 Evasão de Virtualização/Sandbox</b> / <b>T1497.001 Verificações de Sistema</b> / <b>T1497.002 Verificações de Atividade do Usuário</b> / <b>T1622 Evasão de Depurador</b><br/>DLL verifica depuradores, ferramentas de análise e artefatos de sandbox"] class action_anti_analysis action action_process_discovery["<b>Ação</b> – <b>T1057 Descoberta de Processo</b><br/>Enumera processos em execução para localizar utilitários de análise"] class action_process_discovery action action_reflective_loading["<b>Ação</b> – <b>T1620 Carregamento de Código Reflexivo</b><br/>A carga útil SFX descriptografada é carregada diretamente na memória"] class action_reflective_loading action action_c2["<b>Ação</b> – <b>T1071.001 Protocolo de Camada de Aplicação: Protocolos Web</b><br/>Carga útil na memória estabelece beacon de Cobaltu202fStrike HTTPS"] class action_c2 action %% Nós – Arquivos / Artigos file_zip["<b>Arquivo</b> – malicioso.zip<br/>Contém o LNK malicioso"] class file_zip file file_lnk["<b>Arquivo</b> – u5e38u5ddeu5927u5b662026u5e74u300au56fdu5bb6u5b66u751fu4f53u8d28u5065u5eb7u6807u51c6u300bu6d4bu8bd5u901au77e5.pdf.lnk"] class file_lnk file file_vbs["<b>Arquivo</b> – chromedo.vbs<br/>Script Visual Basic executado pelo explorer"] class file_vbs file tool_bandizip["<b>Ferramenta</b> – Bandizip.exe<br/>Arquivador legítimo abusado para carregar DLL maliciosa"] class tool_bandizip tool file_dll["<b>Arquivo</b> – ark.x64.dll<br/>DLL maliciosa carregada via sideu2011loading"] class file_dll file malware_cobalt_strike["<b>Malware</b> – Beacon do Cobaltu202fStrike<br/>Fornece acesso remoto"] class malware_cobalt_strike malware %% Nós – Processos process_explorer["<b>Processo</b> – explorer.exe"] class process_explorer process process_chromedo["<b>Processo</b> – chromedo (host VBS)"] class process_chromedo process %% Nós – Rede network_c2["<b>Rede</b> – Servidor C2 60.205.186.162 (lysander.asia) via HTTPS"] class network_c2 network %% Conexões – Fluxo de Ataque file_zip –>|contém| file_lnk file_lnk –>|invoca| process_explorer process_explorer –>|lança| file_vbs file_vbs –>|executa| tool_bandizip tool_bandizip –>|carrega| file_dll file_dll –>|habilita| action_obfuscation file_dll –>|executa| action_anti_analysis file_dll –>|aciona| action_process_discovery file_dll –>|suporta| action_reflective_loading action_reflective_loading –>|carrega| malware_cobalt_strike malware_cobalt_strike –>|comunica-se com| network_c2 %% Ligando ações para mostrar sequência action_initial_access –>|leva a| action_user_execution action_user_execution –>|combinado com| action_masquerading action_masquerading –>|habilita| action_permission_hijack action_permission_hijack –>|aciona| action_vbscript action_vbscript –>|usa| action_lol action_lol –>|cria| action_hidden_files action_hidden_files –>|facilita| action_dll_side_loading action_dll_side_loading –>|inclui| action_obfuscation action_obfuscation –>|cobre| action_anti_analysis action_anti_analysis –>|alimenta| action_process_discovery action_process_discovery –>|precede| action_reflective_loading action_reflective_loading –>|habilita| action_c2 action_c2 –>|estabelece beacon com| malware_cobalt_strike %% Atribuições de classe class action_initial_access action class action_user_execution action class action_masquerading action class action_permission_hijack action class action_vbscript action class action_lol action class action_hidden_files action class action_dll_side_loading action class action_obfuscation action class action_anti_analysis action class action_process_discovery action class action_reflective_loading action class action_c2 action class file_zip file class file_lnk file class file_vbs file class file_dll file class tool_bandizip tool class process_explorer process class process_chromedo process class malware_cobalt_strike malware class network_c2 network "
Fluxo de Ataque
Detecções
Possível Arquivo LNK Malicioso com Dupla Extensão (via cmdline)
Visualizar
LOLBAS WScript / CScript (via criação de processo)
Visualizar
IOCs (HashSha256) para detectar: Operação Dragon Whistle: UNG0002 Alveja Academia Chinesa via Lure Institucional Armazenado
Visualizar
IOCs (SourceIP) para detectar: Operação Dragon Whistle: UNG0002 Alveja Academia Chinesa via Lure Institucional Armazenado
Visualizar
IOCs (DestinationIP) para detectar: Operação Dragon Whistle: UNG0002 Alveja Academia Chinesa via Lure Institucional Armazenado
Visualizar
Detecção de Comunicação de C2 através de IP e Domínio Maliciosos Conhecidos [Conexão de Rede do Windows]
Visualizar
Enumeração de Processos e Detecção de Evasão de Depuração do UNG0002 [Windows Sysmon]
Visualizar
Detecção de Exploração de LNK abusando de explorer.exe e Bandizip.exe para Execução Maliciosa de VBScript [Criação de Processo do Windows]
Visualizar
Simulação de Execução
Pré-requisito: O Check de Pré-Voo de Telemetria & Base deve ter sido aprovado.
Justificativa: Esta seção detalha a execução precisa da técnica do adversário (TTP) projetada para acionar a regra de detecção. Os comandos e a narrativa DEVEM refletir diretamente os TTPs identificados e visam gerar a telemetria exata esperada pela lógica de detecção.
-
Narrativa & Comandos do Ataque:
Um atacante entrega uma DLL maliciosa (nomeadaevil.dll) que é carregada por um processo host de aparência benigna (rundll32.exe). A DllMain da DLLchama imediatamenteseguido porseguido porpara enumerar todos os processos em execução. O loop de enumeração verifica cada nome de processo em busca da presença de um depurador (subsequênciapara enumerar todos os processos em execução. O loop de enumeração verifica cada nome de processo em busca da presença de um depurador (subsequência) e sai se encontrado – uma técnica clássica de) e sai se encontrado – uma técnica clássica deevasão de depurador (T1622). Como a DLL é carregada por , o evento de criação de processo registrado pelo Sysmon contém os camposrundll32.exepara as duas APIs nativas, satisfazendo a regra de detecção.para as duas APIs nativas, satisfazendo a regra de detecção.Script de Teste de Regressão: -
# ————————————————- # Passo 1: Criar fonte C para a DLL maliciosa # ————————————————- $dllSource = @” #include <windows.h> #include <tlhelp32.h> BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { if (ul_reason_for_call == DLL_PROCESS_ATTACH) { HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hSnap == INVALID_HANDLE_VALUE) return FALSE; PROCESSENTRY32 pe = {0}; pe.dwSize = sizeof(PROCESSENTRY32); if (Process32First(hSnap, &pe)) { do { // Verificação simples anti‑debug – procure por “dbg” no nome do processo if (wcsstr(pe.szExeFile, L”dbg”)) { // Debugger detectado; sair do loop break; } } while (Process32Next(hSnap, &pe)); } CloseHandle(hSnap); } return TRUE; } “@ $srcPath = “$env:Tempevil.c” $dllPath = “$env:Tempevil.dll” $srcPath | Out-File -Encoding ascii -FilePath $srcPath -Force Set-Content -Path $srcPath -Value $dllSource # ————————————————- # Passo 2: Compilar a DLL com Visual C++ (cl.exe) # ————————————————- # Certifique-se de que as Ferramentas de Compilação do Visual Studio estejam instaladas e que o ambiente esteja configurado. # Exemplo usando o Prompt de Comando do Desenvolvedor: # cl.exe /LD /O2 /MD evil.c /link /OUT:evil.dll # Para automação dentro do PowerShell, invoque as ferramentas de compilação MSVC: $vcvars = “${env:ProgramFiles(x86)}Microsoft Visual Studio2019BuildToolsVCAuxiliaryBuildvcvars64.bat” & cmd /c “`”$vcvars`” && cl.exe /LD /O2 /MD `”$srcPath`” /link /OUT:`”$dllPath`”” ` | Out-Null if (-Not (Test-Path $dllPath)) { Write-Error “A compilação da DLL falhou.” exit 1 } # ————————————————- # Passo 3: Executar a DLL maliciosa via rundll32.exe # ————————————————- $rundll = “$env:SystemRootSystem32rundll32.exe” & $rundll $dllPath,EntryPoint # ————————————————- # Passo 4: Pausa para permitir que o Sysmon registre o evento # ————————————————- Start-Sleep -Seconds 5
O script compila uma DLL mínima que executa as chamadas de API direcionadas e depois a carrega com. O curto intervalo garante que o Sysmon tenha tempo de registrar o evento de criação de processo.
rundll32.exeComandos de Limpeza: -
# Remove artefatos compilados Remove-Item -Force -ErrorAction SilentlyContinue $env:Tempevil.c Remove-Item -Force -ErrorAction SilentlyContinue $env:Tempevil.dll # Opcional: Reinicie o Sysmon para limpar quaisquer handles presos (não é necessário na maioria dos casos) Stop-Service -Name Sysmon -Force Start-Service -Name Sysmon
# Remove compiled artifacts Remove-Item -Force -ErrorAction SilentlyContinue $env:Tempevil.c Remove-Item -Force -ErrorAction SilentlyContinue $env:Tempevil.dll # Optional: Restart Sysmon to clear any stuck handles (not required in most cases) Stop-Service -Name Sysmon -Force Start-Service -Name Sysmon