# T1036.011 - Overwrite Process Arguments ## Descrição **Overwrite Process Arguments** é uma sub-técnica de [[t1036-masquerading|T1036 - Masquerading]] exclusiva de sistemas Linux. O adversário manipula os argumentos de linha de comando de um processo em memória - específicamente o conteúdo de `argv[0]` - para que ferramentas de monitoramento como `ps`, `top`, `htop` e leitores de `/proc/<PID>/cmdline` exibam um nome de processo completamente diferente do real. A técnica não requer privilégios elevados: como os argumentos de processo são armazenados no espaço de memória de usuário (user-space) durante a inicialização, qualquer processo pode modificar seu próprio `argv` após o lançamento. O resultado é que um backdoor ou implante malicioso pode se apresentar como `[kworker/0:0]`, `sshd`, `cat resolv.conf` ou qualquer outro processo aparentemente legítimo para administradores e sistemas de monitoramento que consultam `/proc`. O exemplo mais documentado desta técnica em ambiente real é o [[s1161-bpfdoor|BPFDoor]], um backdoor Linux sofisticado atribuído a ator de espionagem de nexo chinês (UNC4900 / Red Menshen), que usa exatamente esta técnica para se mascarar em servidores Linux comprometidos - frequentemente em infraestrutura de telecomúnicações e governo. > **Técnica pai:** [[t1036-masquerading|T1036 - Masquerading]] > **Tática:** [[_defense-evasion|Defense Evasion]] > **Plataforma:** Linux (exclusivo) --- ## Como Funciona ### Fundamentos do Linux `/proc` e `argv` No Linux, o kernel armazena os argumentos de linha de comando de um processo na pilha (stack) do processo no momento de seu lançamento. O `glibc` passa esses argumentos para a função `main()` como o array `argv[]`, onde: - `argv[0]` - nome ou caminho do processo (ex: `/usr/sbin/sshd`) - `argv[1]`, `argv[2]`, ... - argumentos subsequentes O kernel expõe esses valores via o sistema de arquivos virtual `/proc`: - `/proc/<PID>/cmdline` - linha de comando completa, delimitada por bytes nulos - `/proc/<PID>/comm` - nome curto do processo (limitado a 15 caracteres, baseado no nome do executável) Ferramentas como `ps`, `top`, `htop` e sistemas de monitoramento consultam `/proc/<PID>/cmdline` para exibir informações do processo. ### O Mecanismo de Sobrescrita Como `argv` reside na memória de usuário do próprio processo, o processo pode modificar esse conteúdo livremente: **Passo 1 - Apagar argumentos originais:** O malware sobrescreve cada byte de cada string de argumento com bytes nulos (`\0`). Isso apaga todo rastro de como o processo foi realmente iniciado. **Passo 2 - Escrever o disfarce:** O malware escreve a string de disfarce na região de memória que antes continha `argv[0]`, por exemplo: `cat resolv.conf` ou `[kworker/0:1]` ou `sshd: /usr/sbin/sshd`. **Passo 3 - Reflexo imediato em `/proc`:** Como `/proc/<PID>/cmdline` é uma jánela direta para essa memória, a mudança é refletida instantaneamente - sem necessidade de reiniciar o processo. ### Limitações e considerações - **`/proc/<PID>/comm`** - este arquivo mostra o nome curto do executável com base no arquivo em disco, não em `argv[0]`. Um processo bem-disfarçado precisaria também alterar este arquivo (requer acesso de escrita a `/proc/self/comm`) ou garantir que o binário em disco tenha um nome convincente. - **`/proc/<PID>/exe`** - link simbólico para o executável real em disco. Ferramentas forenses que verificam este link descobrirão o binário real, independente da manipulação de `argv`. - **Comprimento da string:** A string de disfarce não pode ser mais longa que a string original de argumentos (sem realocação de memória), pois o espaço disponível é fixo. --- ## Attack Flow ```mermaid graph TB A["🔴 Implante Executado no Linux<br/>Ex: BPFDoor iniciado em /tmp/.x<br/>ou via cron / serviço comprometido"] --> B B["🧹 Apagamento de Argumentos<br/>memset(argv[0], 0, tamanho_total)<br/>Todos os args sobrescritos com \\0"] --> C C["✍️ Escrita do Disfarce<br/>strcpy(argv[0], 'cat resolv.conf')<br/>ou '[kworker/0:1]' / 'sshd'"] --> D D["📁 /proc/PID/cmdline Atualizado<br/>Kernel reflete a memória user-space<br/>diretamente no procfs"] --> E E{"Ferramenta de Monitoramento<br/>consulta ps / top / SIEM"} E -->|"ps aux"| F1["✅ Mostra: 'cat resolv.conf'<br/>Aparenta processo benigno<br/>Analista ignora"] E -->|"Forense avançada"| F2["🔍 /proc/PID/exe → link real<br/>Aponta para /tmp/.x ou binário suspeito<br/>Divergência detectada"] F1 --> G["🎯 Persistência Furtiva<br/>Backdoor ativo, invisível para<br/>monitoramento convencional"] F2 --> H["⚠️ Comprometimento Detectado<br/>Investigação de incidente iniciada"] style A fill:#c0392b,color:#fff style C fill:#e67e22,color:#fff style F1 fill:#27ae60,color:#fff style F2 fill:#2980b9,color:#fff style G fill:#8e44ad,color:#fff style H fill:#16a085,color:#fff ``` --- ## Exemplos de Uso ### BPFDoor - O caso mais documentado O [[s1161-bpfdoor|BPFDoor]] é o exemplo canônico desta técnica em ambiente real. Descoberto em 2022 por PwC e Sandfly Security, o BPFDoor é um backdoor Linux passivo que usa filtros BPF (Berkeley Packet Filter) para receber comandos sem abrir portas de rede - tornando-o invisível a varreduras de porta. Como parte de seu arsenal de evasão, o BPFDoor sobrescreve seus argumentos de processo para se apresentar como: - `/sbin/udevd -d` (daemon legítimo do udev) - `avahi-daemon: registering [hostname.local]` (daemon Avahi/mDNS) - `/usr/sbin/sshd -D` (servidor SSH) - `cat /dev/null` (comando benigno) - `kdmflush` (processo fictício que imita threads do kernel) O BPFDoor foi observado em comprometimentos de longa duração (meses a anos) em provedores de telecomúnicações e organizações governamentais na Ásia, Oriente Médio e América Latina, com atribuição a ator de nexo chinês (rastreado como Red Menshen / UNC4900). ### Outros implantes Linux documentados Embora o BPFDoor sejá o caso mais documentado, a técnica de sobrescrita de `argv` é uma prática conhecida entre desenvolvedores de software legítimo (daemons como PostgreSQL e Apache a utilizam para segurança) e foi adotada por outros implantes Linux menos documentados publicamente. Rootkits e backdoors avançados voltados a servidores Linux frequentemente incluem alguma forma de manipulação de identificação de processo. --- ## Detecção A detecção de Overwrite Process Arguments requer ir além das ferramentas convencionais que consultam apenas `/proc/<PID>/cmdline`. ### Sigma Rule - Divergência entre cmdline e exe em processo suspeito ```yaml title: Process Arguments Masquerading - cmdline vs exe Divergence id: e3f4a5b6-7890-cdef-0123-456789abcdef status: experimental description: > Detecta processos onde o conteúdo de /proc/PID/cmdline sugere um processo benigno, mas o /proc/PID/exe aponta para um binário em localização suspeita. Padrão característico de T1036.011 - Overwrite Process Arguments. references: - https://attack.mitre.org/techniques/T1036/011/ - https://www.pwc.com/gx/en/issues/cybersecurity/cyber-threat-intelligence/bpfdoor.html author: RunkIntel daté: 2026-03-25 tags: - attack.defense_evasion - attack.t1036.011 logsource: product: linux category: process_creation detection: # Detectar processos cujo exe está em localização suspeita # mas cujo cmdline parece legítimo (divergência) selection_suspicious_path: Image|startswith: - '/tmp/' - '/dev/shm/' - '/var/tmp/' - '/run/shm/' - '/proc/' filter_known_benign_cmdline: CommandLine|startswith: - '/sbin/' - '/usr/sbin/' - '/usr/bin/' - '/bin/' condition: selection_suspicious_path and filter_known_benign_cmdline falsepositives: - Scripts de deploy que copiam binários temporariamente para /tmp level: high ``` ### Sigma Rule - Processo com nome de kernel thread em espaço de usuário ```yaml title: Userspace Process Masquerading as Kernel Thread id: f4a5b6c7-8901-def0-1234-56789abcdef0 status: experimental description: > Detecta processos em espaço de usuário que se apresentam com nomes típicos de kernel threads (entre colchetes), padrão de disfarce usado pelo BPFDoor e técnicas similares de T1036.011. references: - https://attack.mitre.org/techniques/T1036/011/ author: RunkIntel daté: 2026-03-25 tags: - attack.defense_evasion - attack.t1036.011 logsource: product: linux category: process_creation detection: selection: # Processos com nome entre colchetes (imitando kworker, etc.) Image|re: '^\[.*\] filter_kernel: # Threads reais do kernel têm PPID=2 (kthreadd) e UID=0 em /proc ParentImage: '/usr/lib/systemd/systemd' condition: selection and not filter_kernel falsepositives: - Raramente aplicações legítimas usam nomes entre colchetes level: high ``` ### Técnicas de detecção avançadas | Método | Como implementar | Efetividade | |--------|-----------------|-------------| | **Comparar `/proc/PID/cmdline` vs `/proc/PID/exe`** | Script de auditoria que verifica divergência entre basename do exe e o que cmdline declara | Alta - detecta diretamente a manipulação | | **Monitorar `/proc/PID/maps`** | Verificar regiões de memória com permissão RWX em processos com cmdline suspeito | Alta - BPFDoor e similares têm regiões RWX características | | **eBPF/auditd para escritas em argv** | Rastrear chamadas `write()` ou `memset()` em regiões de memória de argv | Alta - captura o ato de sobrescrita | | **Comparar UID efetivo vs cmdline declarado** | Processo afirmando ser `sshd` deve ter UID root e parent systemd | Média - fácil de implementar, muitos FPs possíveis | | **Baselines de processos** | Ferramentas como Osquery + FIM para capturar estado inicial de cmdline no lançamento | Média - requer snapshots periódicos | | **Sandfly Security (especializada)** | Produto dedicado a detecção de rootkits Linux e manipulação de /proc | Alta - detecta BPFDoor e variantes | ### Consulta Osquery para auditoria ```sql -- Detectar processos com cmdline suspeito em locais incomuns SELECT p.pid, p.name, p.cmdline, p.path, p.uid, p.parent, pp.name AS parent_name FROM processes p LEFT JOIN processes pp ON p.parent = pp.pid WHERE p.path LIKE '/tmp/%' OR p.path LIKE '/dev/shm/%' OR p.path LIKE '/var/tmp/%' ORDER BY p.start_time DESC; ``` --- ## Mitigação Overwrite Process Arguments é especialmente difícil de mitigar porque: 1. O mecanismo de sobrescrita de `argv` é uma característica legítima do Linux (usada por daemons como PostgreSQL) 2. Não requer privilégios elevados 3. O kernel não oferece controles para restringir essa operação por padrão | Camada | Controle | Efetividade | |--------|----------|-------------| | **Detecção** | Auditoria regular com Osquery comparando `/proc/PID/exe` vs `cmdline` | Alta - é mais uma técnica de detecção que prevenção | | **EDR Linux** | Agentes com monitoramento de syscalls (Falco, SentinelOne para Linux, CrowdStrike) | Alta - captura o comportamento em runtime | | **Imutabilidade do sistema de arquivos** | Montar `/tmp`, `/dev/shm` com `noexec` - impede execução de binários nessas pastas | Alta - força malware a usar paths mais visíveis | | **Execução restrita** | Políticas SELinux/AppArmor que restringem de onde executáveis podem ser carregados | Alta - previne execução de binários em locais temporários | | **Monitoramento de integridade** | AIDE, Tripwire para detectar novos binários em paths não monitorados | Média - detecta o binário, não a manipulação de argv | | **Revisão de processos privilegiados** | Auditar regularmente processos com acesso a sockets raw (CAP_NET_RAW) como o BPFDoor | Média - identifica implantes com capacidades especiais | | **Segregação de rede** | Monitorar tráfego de saída incomum de servidores Linux - BPFDoor usa filtros BPF para receber comandos | Média - complementar, não previne a técnica em si | --- ## Contexto Brasil/LATAM Overwrite Process Arguments é uma técnica de alto impacto para infraestrutura crítica brasileira e latino-americana, especialmente por três razões: **Servidores Linux na infraestrutura nacional:** O Brasil tem ampla adoção de Linux em servidores de telecomúnicações, data centers de provedores de internet (ISPs), servidores de banco de dados e infraestrutura governamental. Exatamente o perfil de alvo do BPFDoor. **BPFDoor e telecomúnicações:** O BPFDoor foi documentado em comprometimentos de longa duração de provedores de telecomúnicações - um setor crítico no Brasil (Vivo, Claro, TIM, Oi). A capacidade do malware de se mascarar via Overwrite Process Arguments permite que permaneça ativo por meses sem detecção por ferramentas convencionais. Comprometimentos dessa natureza têm implicações de espionagem de longo prazo para dados de clientes e tráfego nacional. **Capacidade de detecção limitada:** A maioria dos SOCs brasileiros ainda opera com ferramentas de monitoramento que consultam apenas `/proc/<PID>/cmdline`, sem verificar a divergência com `/proc/<PID>/exe`. Isso cria um ponto cego específico para esta técnica - implantes ativos há meses podem passar por triagem manual sem serem detectados. **Recomendação operacional:** SOCs com responsabilidade sobre servidores Linux de infraestrutura crítica devem: 1. Implantar Osquery com queries periódicas de auditoria de processos 2. Montar `/tmp` e `/dev/shm` com a flag `noexec` 3. Revisar políticas SELinux/AppArmor para restringir execução fora de paths confiáveis 4. Considerar ferramentas especializadas em detecção de rootkits Linux (Sandfly Security, Falco) > **Referência de incidente:** O CERT.br documentou casos de comprometimento de servidores Linux em provedores brasileiros com técnicas consistentes com o perfil do BPFDoor, embora a atribuição formal permaneça pendente de investigação completa. --- ## Referências - [MITRE ATT&CK - T1036.011](https://attack.mitre.org/techniques/T1036/011/) - [PwC - BPFDoor Analysis (2022)](https://www.pwc.com/gx/en/issues/cybersecurity/cyber-threat-intelligence/bpfdoor.html) - [Sandfly Security - BPFDoor Technical Analysis](https://sandflysecurity.com/blog/bpfdoor-an-evasive-linux-backdoor-technical-analysis/) - [Elastic Security - Detecting BPFDoor](https://www.elastic.co/security-labs/a-peek-behind-the-bpfdoor) - [Linux `/proc` filesystem documentation](https://www.kernel.org/doc/html/latest/filesystems/proc.html) - [CERT.br - Relatórios de Incidentes](https://www.cert.br/) ## Técnicas Relacionadas - [[t1036-masquerading|T1036 - Masquerading]] (técnica pai) - [[t1036-003-rename-legitimate-utilities|T1036.003 - Rename Legitimaté Utilities]] - [[t1036-005-match-legitimate-resource-name-or-location|T1036.005 - Match Legitimaté Resource Name or Location]] - [[t1036-009-break-process-trees|T1036.009 - Break Process Trees]] - [[t1014-rootkit|T1014 - Rootkit]] - [[t1059-command-and-scripting-interpreter|T1059 - Command and Scripting Interpreter]] ## Software Associado - [[s1161-bpfdoor|BPFDoor]] (malware - caso canônico desta técnica) --- *Fonte: [MITRE ATT&CK - T1036.011](https://attack.mitre.org/techniques/T1036/011)*