# T1055.015 - ListPlanting > [!info] Técnica Pai > Esta é uma sub-técnica de [[t1055-process-injection|T1055 - Process Injection]], que agrupa todos os métodos de injeção de código em processos legítimos para evasão de defesas. ## Descrição **ListPlanting** é uma sub-técnica de [[t1055-process-injection|injeção de processo]] que abusa de controles de interface gráfica do Windows - específicamente a classe de jánela `SysListView32` (controles de lista) - para injetar e executar shellcode arbitrário no espaço de endereçamento de um processo legítimo. A técnica é classificada como um ataque de "shatter attack" via message-passing, contornando APIs altamente monitoradas como `WriteProcessMemory`. O mecanismo central consiste em três fases: 1. **Localização do alvo**: o adversário identifica um processo que possui uma jánela do tipo `SysListView32` (lista de itens) - presente em exploradores de arquivos, gerenciadores de tarefas, browsers, e dezenas de aplicações nativas do Windows. 2. **Escrita de payload**: em vez de usar `WriteProcessMemory` (que gera telemetria em EDRs), o adversário copia o payload 2 bytes por vez usando mensagens de jánela `LVM_SETITEMPOSITION` e `LVM_GETITEMPOSITION` via `PostMessage()` / `SendMessage()`. 3. **Execução via callback de ordenação**: o payload é disparado enviando a mensagem `LVM_SORTITEMS` ao controle `SysListView32`, que chama o ponteiro de função fornecido como callback `ListView_SortItems` - executando o shellcode sob o contexto do processo legítimo. O resultado é que o código malicioso roda mascarado como um processo Windows legítimo (ex: `explorer.exe`, `taskhostw.exe`), tornando a detecção consideravelmente mais difícil para ferramentas baseadas em análise de processos. > [!warning] Por que é relevante > ListPlanting evita a chamada `WriteProcessMemory` - um dos principais indicadores monitorados por EDRs modernos. A injeção via mensagens de jánela (`SendMessage`/`PostMessage`) não aciona os mesmos alertas, tornando a técnica especialmente eficaz contra soluções de segurança que dependem de hooking de API. --- ## Como Funciona A sequência completa de execução do ListPlanting envolve as seguintes chamadas de API do Windows: ### 1. Descoberta do processo e jánela alvo ``` FindWindow("SysListView32", NULL) EnumWindows(callback, 0) GetWindowThreadProcessId(hwnd, &dwPID) OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPID) ``` O adversário busca por qualquer jánela com a classe `SysListView32` - presente em práticamente qualquer jánela Explorer, painel de controle ou aplicação com lista de itens. ### 2. Alocação de memória no processo alvo ``` VirtualAllocEx(hProcess, NULL, shellcodeSize, MEM_COMMIT, PAGE_EXECUTE_READWRITE) ``` Uma região executável é alocada no espaço de memória do processo-alvo. ### 3. Escrita do payload via mensagens (evasão de WriteProcessMemory) Em variações mais sofisticadas, o payload é escrito usando `LVM_SETITEMPOSITION` (que carrega 2 bytes de coordenadas x/y) e depois lido de volta com `LVM_GETITEMPOSITION`. Isso evita completamente a chamada `WriteProcessMemory`: ``` SendMessage(hwndListView, LVM_SETITEMPOSITION, index, MAKELPARAM(x, y)) SendMessage(hwndListView, LVM_GETITEMPOSITION, index, (LPARAM)&point) ``` ### 4. Disparo via callback de ordenação O shellcode é executado ao enviar `LVM_SORTITEMS`, passando o endereço da memória alocada como ponteiro de função de callback: ``` SendMessage(hwndListView, LVM_SORTITEMS, (WPARAM)lpData, (LPARAM)shellcodeAddr) ``` O sistema operacional chama `shellcodeAddr(item1, item2, lpData)` - executando o payload diretamente no contexto do processo legítimo. ### Variações conhecidas | Variante | Método de escrita | Método de execução | |----------|-----------------|-------------------| | Clássico | `WriteProcessMemory` | `LVM_SORTITEMS` callback | | Stealth (sem WPM) | `LVM_SETITEMPOSITION` × N | `LVM_SORTITEMS` callback | | Com elevação | Combina com Token Impersonation | `LVM_SORTITEMS` callback | --- ## Attack Flow ```mermaid graph TB A([Adversário com acesso inicial]) --> B[Enumerar jánelas abertas<br/>EnumWindows / FindWindow] B --> C{Existe SysListView32\nacessível?} C -- Não --> D[Aguardar / Tentar outro processo] C -- Sim --> E[Obter PID do processo alvo<br/>GetWindowThreadProcessId] E --> F[Abrir handle do processo<br/>OpenProcess PROCESS_ALL_ACCESS] F --> G[Alocar memória RWX<br/>VirtualAllocEx] G --> H{Usar WriteProcessMemory?} H -- Sim padrão --> I[Escrever shellcode direto<br/>WriteProcessMemory] H -- Não stealth --> J[Escrever 2 bytes por vez<br/>LVM_SETITEMPOSITION loop] I --> K[Enviar LVM_SORTITEMS<br/>com ptr do shellcode como callback] J --> K K --> L([Shellcode executa no<br/>contexto do processo legítimo]) L --> M[Payload ativo - ex: C2 beacon<br/>RAT, lateral movement] M --> N[EDR vê apenas processo legítimo<br/>Ex: explorer.exe com conexão de rede] style A fill:#c0392b,color:#fff style L fill:#e74c3c,color:#fff style M fill:#e74c3c,color:#fff style N fill:#e67e22,color:#fff style D fill:#7f8c8d,color:#fff ``` --- ## Exemplos de Uso ### InvisiMole - Espionagem direcionada O [[s0260-invisimole|InvisiMole]], backdoor sofisticado associado ao grupo [[g0047-gamaredon|Gamaredon]] e outros atores de espionagem de origem russa, documentadamente usa ListPlanting para injetar seus módulos RC2FM e RC2CL em processos legítimos do Windows. A técnica foi identificada em campanhas contra alvos governamentais e militares no Leste Europeu (Ucrânia, República Checa). **Fluxo documentado:** - InvisiMole injeta via `SysListView32` em processos como `explorer.exe` - O payload estabelece canal C2 criptografado (RC4/AES) - Módulos RC2FM: reconhecimento local; RC2CL: exfiltração e controle remoto ### Técnicas combinadas com ListPlanting | Ator/Malware | Combinação | Objetivo | |---|---|---| | [[s0260-invisimole\|InvisiMole]] | ListPlanting + [[t1055-process-injection\|T1055]] | Persistência e evasão de EDR | | Pesquisa (PoC público) | ListPlanting + [[t1134-access-token-manipulation\|T1134]] | Elevação de privilégio | | Não atribuído | ListPlanting + [[t1027-obfuscated-files-or-information\|T1027]] | Evasão de análise estática | > [!note] Nota de atribuição > Além do InvisiMole, a técnica foi documentada em pesquisas de segurança por empresas como ESET e em repositórios de PoC públicos. A ausência de outros atores atribuídos não indica baixa prevalência - pode refletir dificuldade de detecção. --- ## Detecção ### Indicadores comportamentais A detecção eficaz de ListPlanting requer monitorar a combinação de comportamentos, pois nenhum indicador isolado é suficiente: | Indicador | Relevância | Ferramenta | |-----------|-----------|-----------| | `SendMessage` / `PostMessage` para `SysListView32` externo | Alta | EDR, ETW | | `VirtualAllocEx` com `PAGE_EXECUTE_READWRITE` em processo externo | Alta | EDR, Sysmon | | `OpenProcess` com `PROCESS_ALL_ACCESS` para processo não relacionado | Média | Sysmon Event 10 | | Processo legítimo fazendo conexões de rede inesperadas | Média | EDR, netflow | | Acesso a `SysListView32` via `FindWindowEx` em processo externo | Alta | ETW | ### Regra Sigma ```yaml title: ListPlanting - Suspicious SysListView32 Message Injection id: f3a7b2c1-8d4e-4f9a-b6c5-1e2d3f4a5b6c status: experimental description: Detecta possível ListPlanting via envio de LVM_SORTITEMS para jánela SysListView32 de processo externo references: - https://attack.mitre.org/techniques/T1055/015/ - https://www.eset.com/int/about/newsroom/press-releases/research/eset-research-uncovers-new-invisimole-components/ author: RunkIntel daté: 2026-03-25 tags: - attack.defense_evasion - attack.t1055.015 logsource: category: process_access product: windows detection: selection: TargetObject|contains: 'SysListView32' CallTrace|contains: - 'SendMessage' - 'PostMessage' filter_legitimate: SourceImage|contains: - 'explorer.exe' - 'taskmgr.exe' condition: selection and not filter_legitimate falsepositives: - Automação legítima de UI (ex: AutoHotKey, ferramentas de teste) - Leitores de tela e ferramentas de acessibilidade level: high ``` ### Detecção via Sysmon Eventos relevantes do Sysmon para correlação: ```yaml # Sysmon Event ID 10 - ProcessAccess # Monitorar acesso com GrantedAccess 0x1F0FFF (PROCESS_ALL_ACCESS) a processos com jánela SysListView32 # Sysmon Event ID 8 - CreateRemoteThread # Monitorar threads remotas em processos que possuem SysListView32 # ETW Microsoft-Windows-Win32k # Monitorar mensagens LVM_SORTITEMS (0x1030) enviadas entre processos distintos ``` --- ## Mitigação | ID | Mitigação | Implementação Prática | Eficácia | |----|-----------|----------------------|---------| | [[m1040-behavior-prevention-on-endpoint\|M1040]] | Behavior Prevention on Endpoint | Configurar EDR para bloquear alocação RWX em processos externos; habilitar Attack Surface Reduction (ASR) rules no Windows Defender | Alta | | Endurecimento de processos | Proteção de processo | Habilitar Protected Process Light (PPL) para processos críticos; usar Windows Defender Credential Guard | Média | | Monitoramento de API | ETW / API hooking | Instrumentar `VirtualAllocEx`, `OpenProcess`, `SendMessage` cross-process via ETW ou userland hooks no EDR | Alta | | Princípio do menor privilégio | Redução de superfície | Restringir quais processos podem usar `PROCESS_ALL_ACCESS`; aplicar políticas AppLocker/WDAC | Média | > [!tip] Recomendação de defesa > A defesa mais eficaz combina **Behavior Prevention** (M1040) com regras de ETW monitorando chamadas `SendMessage`/`PostMessage` cross-process para classes `SysListView32`. Ferramentas como **Sysmon** (Event ID 10 - ProcessAccess) e **Microsoft Defender for Endpoint** com **Attack Surface Reduction** ativado reduzem significativamente a superfície de exploração. --- ## Contexto Brasil/LATAM Embora o ListPlanting não sejá uma técnica com incidência documentada específica no Brasil ou LATAM até o momento desta nota, seu contexto é relevante por alguns motivos: ### Relevância regional **1. Grupos de espionagem com interesse em LATAM** Grupos como [[g0047-gamaredon|Gamaredon]], associados ao uso de InvisiMole (principal usuário documentado de ListPlanting), historicamente miram diplomacia e organizações governamentais. Missões diplomáticas brasileiras e latino-americanas no exterior são alvos potenciais de campanhas de espionagem que usam este arsenal. **2. Operações de cibercrime sofisticado** O ecossistema de [[g0032-lazarus-group|grupos de cibercrime financeiro]] ativos no Brasil começa a adotar técnicas de evasão avançadas. Conforme as equipes de segurança brasileiras melhoram a detecção de injeções clássicas (`VirtualAllocEx` + `WriteProcessMemory`), é esperado que grupos adotem variantes menos detectáveis como ListPlanting. **3. Capacitação de red teams nacionais** A técnica está documentada em repositórios públicos e é usada em exercícios de red team por empresas brasileiras de segurança ofensiva. SOC analysts precisam estar familiarizados com a telemetria associada. ### Setores em risco (contextual) | Setor | Risco | Motivo | |-------|-------|--------| | [[_sectors#governo\|Governo]] | Alto | Alvo de espionagem, InvisiMole ativo em contextos diplomáticos | | [[_sectors#financeiro\|Financeiro]] | Médio-Alto | Adoção crescente de técnicas avançadas por cibercriminosos | | [[_sectors#tecnologia\|Tecnologia]] | Médio | Red teams, pentests, e potencial supply chain | --- ## Referências - [MITRE ATT&CK - T1055.015](https://attack.mitre.org/techniques/T1055/015/) - Definição oficial da técnica - [ESET Research - InvisiMole](https://www.welivesecurity.com/2020/06/18/digging-up-invisimole-hidden-arsenal/) - Análise detalhada do malware que usa ListPlanting - [ired.team - ListPlanting](https://www.ired.team/offensive-security/code-injection-process-injection/listplanting) - Análise técnica com PoC - [Windows Dev Docs - ListView_SortItems](https://learn.microsoft.com/en-us/windows/win32/controls/lvm-sortitems) - Documentação oficial da API abusada **Notas relacionadas:** - [[t1055-process-injection|T1055 - Process Injection]] - técnica pai - [[m1040-behavior-prevention-on-endpoint|M1040 - Behavior Prevention on Endpoint]] - mitigação principal - [[s0260-invisimole|InvisiMole]] - único malware com uso documentado confirmado - [[t1027-obfuscated-files-or-information|T1027 - Obfuscated Files or Information]] - frequentemente combinada - [[t1134-access-token-manipulation|T1134 - Access Token Manipulation]] - variante com elevação de privilégio --- *Fonte: [MITRE ATT&CK - T1055.015](https://attack.mitre.org/techniques/T1055/015)*