# T1027.008 - Stripped Payloads ## Descrição A subtécnica **T1027.008 - Stripped Payloads** documenta a prática de adversários que removem deliberadamente símbolos de depuração, strings legíveis por humanos, metadados de compilação e outras informações de diagnóstico dos binários maliciosos antes da implantação. Esta técnica integra a família [[t1027-obfuscated-files-or-information|T1027 - Obfuscated Files or Information]] e tem como objetivo primário **dificultar a análise forense e de engenharia reversa** do malware, tanto por analistas humanos quanto por ferramentas automatizadas de detecção. Diferente de técnicas de ofuscação que transformam o código em runtime (ex: [[t1027-002-software-packing|T1027.002 - Software Packing]] via UPX/Themida), os stripped payloads são modificados **antes da distribuição** - o binário implantado já não contém as informações que facilitariam sua análise. Uma vez que a informação é removida, não há mecanismo automático para recuperá-la. A técnica é multiplataforma e impacta diferentes formatos de executável: | Plataforma | Formato | Ferramenta de strip | |-----------|---------|-------------------| | Linux/Unix | ELF | `strip --strip-all`, `objcopy`, `sstrip` | | macOS | Mach-O | `strip -x`, compilador com flag `-s` | | Windows | PE/COFF | Compilação com `/DEBUG:NONE`, remoção manual de seção `.pdb` | | macOS | AppleScript compilado | `osacompile -x` (run-only - sem código-fonte recuperável) | | Dispositivos de rede | firmware stripped | Compilação cruzada sem símbolos para routers/switches | > **Técnica pai:** [[t1027-obfuscated-files-or-information|T1027 - Obfuscated Files or Information]] > **Tática MITRE:** Defense Evasion > **Plataformas:** Windows, macOS, Linux, Network Devices --- ## Como Funciona ### O que são símbolos e por que importam Quando um desenvolvedor (legítimo ou malicioso) compila código-fonte, o compilador pode incluir no binário resultante: - **Symbol table:** mapeamento entre endereços de memória e nomes de funções/variáveis (`sub_40A100` vs `encrypt_file_aes256`) - **Debug information (DWARF/PDB):** números de linha do código-fonte, nomes de variáveis locais, tipos de dados - **String literals:** mensagens de erro, caminhos de arquivo, nomes de mutex, chaves de registro - **Section names:** `.text`, `.data`, `.rodata` - metadados da estrutura do binário - **Import/export tables:** lista de funções importadas de DLLs (Windows) ou shared libraries (Linux/macOS) Para um analista de malware, essas informações são extremamente valiosas: - Nomes de funções revelam o propósito do código (`download_payload`, `persist_registry`, `exfil_data`) - Strings revelam servidores C2, chaves de criptografia hardcoded, caminhos de instalação - Informações de debug podem revelar o ambiente de desenvolvimento do autor (caminhos do sistema, username) - Símbolos permitem que ferramentas de detecção criem assinaturas baseadas em nomes de função específicos ### Processo de stripping **Linux/ELF:** ```bash # Compilação normal - inclui símbolos gcc -o malware malware.c # Strip completo - remove symbol table e debug info strip --strip-all malware # ou strip -s malware # Ultra-strip - remove também seções não essenciais para execução sstrip malware ``` **macOS/Mach-O:** ```bash # Compilação com strip automático gcc -o malware malware.c -s # Strip pós-compilação strip -x malware # remove apenas símbolos locais strip -ur malware # remove debug e símbolos relocáveis ``` **macOS - Run-Only AppleScript:** ```bash # Compila para formato run-only (sem código-fonte recuperável) osacompile -x -o malware.scpt malware.applescript # O arquivo resultante não pode ser descompilado para AppleScript legível ``` **Windows/PE:** - Compilação com MSVC sem `/DEBUG` flag - não gera arquivo `.pdb` - Compilação com MinGW/GCC com `-s` - remove symbol table do PE - Remoção manual da seção `.rsrc` (recursos) para eliminar metadados de versão ### Impacto na análise | Informação removida | Impacto para analista | |--------------------|----------------------| | Symbol table | Funções aparecem como `sub_XXXXXXXX` - análise 10-100x mais lenta | | String literals | Strings C2, mutexes, chaves encriptadas ficam ocultos | | DWARF/PDB | Não há correspondência código-objeto → fonte | | Metadados PE (Windows) | Sem versão, company name, timestamp de compilação | | Import table (com obfuscation) | Resolve APIs em runtime - tools de detecção por import hash falham | --- ## Attack Flow ```mermaid graph TB A([Adversário desenvolve<br/>payload malicioso]) --> B[Compilação do código-fonte<br/>com símbolos debug ativos] B --> C{Plataforma alvo} C -->|Linux/Unix| D[strip --strip-all<br/>Remove ELF symbol table] C -->|macOS| E[strip -x<br/>ou osacompile -x para<br/>AppleScript run-only] C -->|Windows| F[Compilação /DEBUG:NONE<br/>Remoção manual de .pdb] C -->|Network Devices| G[Cross-compilation<br/>sem símbolos para firmware] D --> H[Binário stripped<br/>pronto para deploy] E --> H F --> H G --> H H --> I{Resultado para defesa} I -->|Análise estática| J[Funções aparecem como<br/>sub_XXXXXXXX - sem contexto] I -->|Detecção por assinatura| K[Assinaturas baseadas em<br/>nomes de função falham] I -->|Análise forense| L[Sem artefatos de compilação<br/>Sem atribuição por toolchain] I -->|Análise automatizada| M[Sandboxes perdem<br/>context de strings/símbolos] J --> N([Tempo de análise aumentado<br/>Detecção atrasada ou ausente]) K --> N L --> N M --> N style A fill:#d63031,color:#fff style N fill:#00b894,color:#fff style H fill:#fdcb6e,color:#000 ``` --- ## Exemplos de Uso ### macOS.OSAMiner - Run-Only AppleScript O [[s1048-macososaminer|macOS.OSAMiner]] é um cryptominer para macOS descoberto em 2020 que utiliza T1027.008 de forma sofisticada. O malware distribui payloads como AppleScripts compilados no formato **run-only** (`osacompile -x`), que não podem ser descompilados para código legível. O OSAMiner usa múltiplas camadas de AppleScripts run-only aninhados, cada um carregando o próximo, o que tornou a análise completa extremamente difícil - pesquisadores levaram anos para reconstruir a lógica completa do malware. A ausência de símbolos e código-fonte recuperável foi a principal barreira de análise documentada. ### Cuckoo Stealer - macOS Infostealer O [[s1153-cuckoo-stealer|Cuckoo Stealer]], infostealer para macOS identificado em 2024, distribui seus binários com símbolo stripping agressivo combinado com [[t1027-002-software-packing|packing]]. A remoção de símbolos dificultou a identificação inicial das funções de exfiltração de credenciais e das rotinas de keylogging. A análise do Cuckoo Stealer pela Kandji e SentinelOne levou semanas para mapear completamente o comportamento por conta da ausência de metadados úteis nos binários. ### APTs com foco em Linux e dispositivos de rede Grupos APT com capacidade de atacar infraestrutura crítica - incluindo aqueles com operações documentadas na [[_sectors|América Latina]] - frequentemente entregam implantes em servidores Linux e roteadores sem símbolos. O stripped payload nesses dispositivos serve a um propósito duplo: dificulta a análise e reduz o tamanho do binário (relevante para firmware de dispositivos com memória limitada). Implantes como os associados ao grupo Volt Typhoon (foco em infraestrutura crítica) são conhecidos por serem compilados sem informações de debug. ### Ferramentas de red team e C2 frameworks Frameworks C2 comerciais e open-source como [[s0154-cobalt-strike|Cobalt Strike]], [[s1229-havoc|Havoc C2]] e Sliver permitem configurar a compilação de stagers e beacons sem símbolos como opção padrão. Em operações ofensivas reais, operadores experientes sempre compilam payloads sem símbolos antes do deploy. Beacon Object Files (BOFs) do Cobalt Strike são tipicamente distribuídos sem symbol tables para dificultar análise por blue teams. ### Relação com outras técnicas T1027 O stripping raramente é usado isoladamente. É comum ser combinado com: - [[t1027-002-software-packing|T1027.002 - Software Packing]]: binário já stripped é compactado com UPX ou packer customizado - [[t1027-001-binary-padding|T1027.001 - Binary Padding]]: stripped + padding para alterar hash e tamanho - [[Encoded File]]: payload stripped é encriptado antes do dropper --- ## Detecção ### Desafios específicos A detecção de T1027.008 é intrinsecamente difícil porque a **ausência** de informação é o indicador - e binários legítimos stripped por razões de tamanho ou confidencialidade também existem em ambientes produtivos. A estratégia de detecção deve ser contextual. ### Indicadores de stripped payloads **Linux/ELF:** - `file malware.elf` retorna `stripped` (sem symbol table) - `readelf -s malware.elf` retorna tabela de símbolos vazia - `strings malware.elf` retorna poucas strings legíveis ou nenhuma útil - Razão seção `.text` / tamanho total anormalmente alta (sem seções de debug) **macOS/Mach-O:** - `file malware` retorna `stripped` - `nm malware` retorna "no symbols" - AppleScript com extensão `.scpt` que é run-only (verificável via `osadecompile`) **Windows/PE:** - PE sem seção `.pdb` ou com timestamp de compilação zerado - Import hash (imphash) incomum ou DLLs importadas incomuns - Ausência de informações em `VersionInfo` resource ### Regra Sigma ```yaml title: Stripped ELF Binary Execution on Linux id: 9c3e7f21-4a8b-4d1e-c456-2e8b9f3d7a12 status: experimental description: > Detecta execução de binários ELF stripped em sistemas Linux - potencial indicativo de malware usando T1027.008 para dificultar análise. Requer telemetria de execução com metadados de binário (ex: Falco, auditd + enrichment). references: - https://attack.mitre.org/techniques/T1027/008/ author: RunkIntel daté: 2026-03-25 tags: - attack.defense_evasion - attack.t1027.008 logsource: product: linux category: process_creation detection: selection_suspicious_path: # Binários stripped em locais incomuns são mais suspeitos Image|startswith: - '/tmp/' - '/dev/shm/' - '/var/tmp/' - '/run/user/' # Complementar com verificação de stripped status via EDR/Falco condition: selection_suspicious_path falsepositives: - Scripts de instalação que extraem binários para /tmp - Containers que executam binários compactados para redução de tamanho level: medium --- title: Run-Only AppleScript Execution - macOS id: 4b7f1a93-8c2e-4d5f-b789-3a5e2c8f1b67 status: experimental description: > Detecta execução de AppleScripts compilados no formato run-only (T1027.008). AppleScripts run-only não podem ser descompilados e são utilizados por macOS.OSAMiner e outros malwares para evadir análise estática. tags: - attack.defense_evasion - attack.t1027.008 logsource: product: macos category: process_creation detection: selection_osascript_runonly: Image|endswith: '/osascript' CommandLine|contains: '.scpt' filter_legit_apple: ParentImage|startswith: - '/System/' - '/Applications/' condition: selection_osascript_runonly and not filter_legit_apple level: medium ``` ### Detecção por análise comportamental Como a detecção estática é limitada, focar em **comportamento pós-execução**: 1. **Processo sem nome de função em stack traces** - EDRs que capturam call stacks mostrarão apenas endereços hexadecimais, sem nomes de função. Isso em si não é detectável automaticamente, mas indica stripped payload para analistas. 2. **Heurística de entropia** - binários stripped muitas vezes têm maior entropia (menos estrutura previsível) que binários com símbolos. 3. **YARA rule para ELF stripped:** ``` rule stripped_elf_suspicious_location { meta: description = "ELF stripped executado de localização temporária" mitre = "T1027.008" condition: uint32(0) == 0x464C457F and // Magic ELF not pe.is_pe and // Verificar ausência de symbol table section (SHT_SYMTAB = 2) // Implementação depende de módulo ELF do YARA for any i in (0..pe.number_of_sections - 1) : ( pe.sections[i].name == ".symtab" ) == false } ``` --- ## Mitigação Diferente da maioria das técnicas MITRE, **não existem mitigações preventivas eficazes** para T1027.008 - um adversário determinado sempre pode remover símbolos de seu payload antes da entrega. As contramedidas são focadas em **detecção e resposta** e em **aumentar o custo para o adversário**: | Controle | Tipo | Descrição | |----------|------|-----------| | Análise comportamental em sandbox | Detecção | Executar arquivos suspeitos em ambientes de sandbox dinâmica (ex: [[_feed\|Any.run]], Hybrid Analysis, Cuckoo) - o comportamento em runtime revela o propósito mesmo sem símbolos | | EDR com telemetria de API | Detecção | Soluções EDR que monitoram chamadas de sistema e API em runtime compensam a ausência de símbolos estáticos capturando o comportamento real | | Inventário de binários signed | Prevenção parcial | Manter allowlist de binários válidos (assinados por CA confiável). Binários stripped de adversários raramente possuem assinatura de code signing válida | | Monitoramento de execução em paths temporários | Detecção | Alertar sobre execução de ELF/Mach-O a partir de `/tmp`, `/dev/shm`, `/var/tmp` - locais preferidos para dropped payloads stripped | | Análise de strings e entropia | Detecção | Ferramentas como `floss` (FireEye) recuperam strings ofuscadas em runtime mesmo de binários stripped via emulação | --- ## Contexto Brasil/LATAM **1. Malware bancário brasileiro e stripped payloads** O ecossistema de malware bancário brasileiro - um dos mais sofisticados da América Latina - frequentemente distribui trojans bancários como Grandoreiro, [[mekotio-banking-trojan|Mekotio]] e BRATA com binários compilados sem símbolos de debug. Esta prática prolonga o tempo de resposta de antivírus e dificulta a criação de assinaturas específicas. Pesquisadores do CERT.br e de empresas como Kaspersky LATAM documentaram binários stripped como característica consistente desse ecossistema. **2. Implantes em dispositivos de rede** O Brasil possui uma das maiores infraestruturas de roteadores domésticos e corporativos da América Latina - e também um dos maiores volumes de dispositivos comprometidos por botnets. Implantes em firmware de roteadores Mikrotik, TP-Link e Intelbras (fabricante brasileiro) são tipicamente compilados sem símbolos, tornando análise forense de dispositivos infectados especialmente desafiadora para times de resposta a incidentes no país. **3. Impacto em capacidade analítica local** Times de análise de malware no Brasil frequentemente operam com recursos mais limitados que centros analíticos dos EUA e Europa. O uso de stripped payloads por adversários aumenta desproporcionalmente o tempo necessário para análise completa - um implante que um time americano com acesso a símbolos analisa em horas pode levar dias ou semanas para um time local sem as mesmas ferramentas de análise avançada. Investir em treinamento de engenharia reversa de binários stripped é prioridade para fortalecer capacidade de CTI no Brasil. **4. Run-Only AppleScript e usuários macOS no Brasil** Com o crescimento do uso de MacBooks em corporações brasileiras (especialmente no setor financeiro e de tecnologia), técnicas como run-only AppleScript ganham relevância. A maioria das soluções de segurança corporativa implantadas no Brasil ainda tem cobertura de macOS significativamente inferior à de Windows. **Recomendação para SOCs brasileiros:** Priorizar capacidade de sandbox dinâmica (Cuckoo, Any.run, Hybrid Analysis) como compensação para limitações de análise estática de binários stripped. Treinar analistas em análise de binários ELF/Mach-O mesmo sem símbolos. Monitorar execução de binários de paths temporários e arquivos sem assinatura digital em todos os endpoints macOS e Linux. --- ## Referências - [MITRE ATT&CK - T1027.008](https://attack.mitre.org/techniques/T1027/008/) - [Kandji - Cuckoo Stealer Analysis](https://kandji.io/blog/cuckoo-stealer) - [SentinelOne - macOS.OSAMiner Deep Dive](https://www.sentinelone.com/blog/macos-osaminer-deep-dive/) - [FireEye FLOSS - Extracted Strings from Stripped Binaries](https://github.com/mandiant/flare-floss) - [The ELF Format - strip and symbol tables](https://refspecs.linuxbase.org/elf/elf.pdf) - [Apple Developer - osacompile man page](https://ss64.com/osx/osacompile.html) - [CERT.br - Relatórios de malware brasileiro](https://www.cert.br/docs/whitepapers/) ## Software Associado - [[s1048-macososaminer|macOS.OSAMiner]] (malware) - [[s1153-cuckoo-stealer|Cuckoo Stealer]] (malware) ## Técnicas Relacionadas - [[t1027-obfuscated-files-or-information|T1027 - Obfuscated Files or Information]] (técnica pai) - [[t1027-002-software-packing|T1027.002 - Software Packing]] (frequentemente combinada) - [[t1027-001-binary-padding|T1027.001 - Binary Padding]] (frequentemente combinada) - [[t1059-002-applescript|T1059.002 - AppleScript]] (plataforma relevante para run-only) - [[t1036-masquerading|T1036 - Masquerading]] (técnica complementar de evasão) - [[t1055-process-injection|T1055 - Process Injection]] (técnica frequentemente usada com payloads stripped) --- *Fonte: [MITRE ATT&CK - T1027.008](https://attack.mitre.org/techniques/T1027/008)*