# DS0023 — Named Pipe ## Visão Geral **Gap 1 — Sysmon não implantado** Sem Sysmon, não há visibilidade sobre criação ou conexão de named pipes no Windows. Os logs de evento nativos não cobrem essa telemetria de forma útil. **Gap 2 — Regras de pipe não incluídas em configurações padrão** Mesmo com Sysmon implantado, named pipes frequentemente são excluídos das regras de coleta por gerar volume alto. Isso resulta em nenhuma cobertura para C2 via pipe. **Gap 3 — Frameworks C2 via SMB passam despercebidos** O [[s0154-cobalt-strike]] em modo SMB Beacon usa named pipes para comunicação C2 sem gerar conexões de rede externas visíveis. SOCs que monitoram apenas tráfego de rede são cegos a esse vetor. **Gap 4 — Named pipe impersonation sem alerta** A técnica de token impersonation via named pipe é usada frequentemente para escalação de privilégios em ataques de ransomware — e raramente gera alerta em ambientes sem SIGMA/Sysmon configurados. **Recomendações:** - Implantar Sysmon com eventos ID 17 e 18 habilitados para todos os endpoints Windows - Criar lista de pipes legítimos esperados no ambiente e alertar sobre qualquer desvio - Implementar regras SIGMA da família "Named Pipe Indicators" do repositório SigmaHQ - Para movimento lateral via SMB, correlacionar Event ID 18 com Event ID 4624 (logon) e 4648 ## Descrição Named pipes são mecanismos de comunicação entre processos (IPC — Inter-Process Commúnication) que permitem a troca de dados entre processos locais ou remotos. Diferente de pipes anônimos (que existem apenas na memória durante a execução), named pipes possuem um nome persistente no sistema de arquivos — no Windows, acessíveis via `\\.\pipe\<nome>`, e no Linux/macOS via arquivos FIFO no sistema de arquivos. Do ponto de vista ofensivo, named pipes são amplamente utilizados em ferramentas de C2 (Command and Control) e movimento lateral. Frameworks como [[s0154-cobalt-strike]], [[brute-ratel-c4]] e [[metasploit]] utilizam named pipes para comunicação entre componentes (ex: Beacon SMB), contornar firewalls baseados em rede e estabelecer canais de comunicação encobertos que não geram conexões de rede óbvias. A técnica de impersonation via named pipe também permite que processos de baixo privilégio capturem tokens de processos privilegiados que se conectam ao pipe. No contexto de detecção, o monitoramento de named pipes é um dos indicadores mais confiáveis de presença de frameworks C2 sofisticados. Pipes com nomes aleatórios, nomes que imitam componentes legítimos do Windows ou pipes criados por processos inesperados são sinais de alta fidelidade. ```mermaid graph TB A["🔗 Named Pipe IPC<br/>\\.\pipe\<nome><br/>Linux FIFO"] --> B["📡 Framework C2<br/>Cobalt Strike Beacon SMB<br/>Brute Ratel / Metasploit"] B --> C["🔍 Sysmon ID 17/18<br/>PipeEvent Created<br/>PipeEvent Connected"] C --> D["📥 SIEM<br/>Regras SIGMA<br/>Named Pipe Indicators"] D --> E{"⚠️ Análise<br/>Nome aleatório / GUID?<br/>Pipe msagent_ / postex_?<br/>Processo inesperado?"} E -->|"C2 detectado"| F["🚨 Alerta SOC<br/>T1071 / T1021.002<br/>T1134.001"] E -->|"Pipe legítimo"| G["✅ Whitelist<br/>lsass / svcctl"] ``` ## Componentes de Dados | Componente | ID MITRE | Descrição | Eventos Relevantes | |-----------|----------|-----------|-------------------| | Named Pipe Metadata | [[dc0048-named-pipe-metadata\|DC0048]] | Leitura de propriedades e estado de pipes nomeados | Sysmon ID 17 (pipe created), ID 18 (pipe connected) | ## Como Coletar ### Windows — Sysmon O Sysmon é a principal fonte de coleta para named pipes no Windows — os logs de evento nativos do Windows não cobrem criação de pipes de forma granular. ```yaml # Sysmon Event IDs para Named Pipes: # 17 — PipeEvent (Pipe Created): pipe nomeado criado por um processo # 18 — PipeEvent (Pipe Connected): cliente conectado a um pipe existente # Exemplo de configuração Sysmon para pipes: <EventFiltering> <RuleGroup name="Named Pipe Detection" groupRelation="or"> <PipeEvent onmatch="include"> <!-- Pipes com nomes aleatórios (padrão Cobalt Strike) --> <PipeName condition="contains">msagent_</PipeName> <PipeName condition="contains">mojo.</PipeName> <PipeName condition="contains">postex_</PipeName> <!-- Pipes legítimos modificados por adversários --> <PipeName condition="contains">lsarpc</PipeName> </PipeEvent> <!-- Alternativa: incluir tudo exceto pipes conhecidos legítimos --> <PipeEvent onmatch="exclude"> <PipeName condition="is">\lsass</PipeName> <PipeName condition="is">\svcctl</PipeName> </PipeEvent> </RuleGroup> </EventFiltering> ``` ### Windows — PowerShell (inventário de pipes ativos) ```powershell # Listar todos os named pipes ativos no sistema [System.IO.Directory]::GetFiles("\\.\\pipe\\") | Sort-Object # Via .NET (mais detalhado) Get-ChildItem -Path "\\.\pipe\" -ErrorAction SilentlyContinue | Select-Object Name, @{N="ProcessID";E={ (Get-Process | Where-Object { $_.Handles -gt 0 }).Id }} # Via Sysinternals PipeList (linha de comando) pipelist.exe ``` ### Linux / macOS ```bash # Listar FIFOs (named pipes) no sistema Linux/macOS find / -type p 2>/dev/null # Via lsof — processos usando FIFOs lsof | grep FIFO # Monitoramento em tempo real com inotify (Linux) inotifywait -m -e creaté --format '%w%f' / 2>/dev/null | \ while read path; do [[ $(file "$path" 2>/dev/null) == *"FIFO"* ]] && echo "FIFO criado: $path" done ``` ### Detecção via EDR / SIEM Regras de detecção prioritárias: ``` # Regra SIGMA — Named Pipe com nome aleatório (padrão C2) title: Suspicious Named Pipe Creation detection: selection: EventID: 17 PipeName|re: '\\[0-9a-f]{8}-[0-9a-f]{4}' # GUID-like condition: selection # Regra SIGMA — Cobalt Strike default pipe names title: Cobalt Strike Named Pipe Indicators detection: selection: EventID: - 17 - 18 PipeName|contains: - 'msagent_' - 'postex_' - 'status_' - 'mojo.' - 'wkssvc' # frequentemente usado por CS condition: selection ``` ## Técnicas Detectadas | Técnica | Tática | Como DS0023 Detecta | |---------|--------|-------------------| | [[t1559-002-dynamic-data-exchange\|T1559.002 — Dynamic Data Exchange]] | Execution | Comúnicação inter-processos via DDE usando pipes | | [[t1021-002-smb-windows-admin-shares\|T1021.002 — SMB/Windows Admin Shares]] | Lateral Movement | Beacon SMB do Cobalt Strike usa named pipe via SMB (`\\host\pipe\`) | | [[t1134-001-token-impersonation\|T1134.001 — Token Impersonation/Theft]] | Privilege Escalation | Named pipe impersonation: processo espera conexão de processo privilegiado para capturar token | | [[t1055-process-injection\|T1055 — Process Injection]] | Defense Evasion | Injeção via pipe: transferência de shellcode entre processos usando IPC | | [[t1071-application-layer-protocol\|T1071 — Application Layer Protocol]] | Command and Control | C2 channels encobertos via SMB named pipe (Cobalt Strike, Brute Ratel) | ## Gaps de Cobertura Brasil/LATAM > [!warning] Named Pipes: Ponto Cego Frequente em SOCs LATAM > Named pipes são um dos vetores menos monitorados em ambientes de segurança na América Latina. A maioria dos SIEMs recebe logs de rede e autenticação, mas não eventos de Sysmon ID 17/18. ## Referências - [[dc0048-named-pipe-metadata|DC0048 — Named Pipe Metadata]] - [[t1021-002-smb-windows-admin-shares|T1021.002 — SMB/Windows Admin Shares]] - [[t1134-001-token-impersonation|T1134.001 — Token Impersonation/Theft]] - [[t1055-process-injection|T1055 — Process Injection]] - [[s0154-cobalt-strike|Cobalt Strike]] - [[brute-ratel-c4|Brute Ratel C4]] - [MITRE ATT&CK — DS0023 Named Pipe](https://attack.mitre.org/datasources/DS0023/) - [Sysmon PipeEvent Documentation](https://docs.microsoft.com/en-us/sysinternals/downloads/sysmon)