# T1546.018 - Python Startup Hooks
Técnica Pai: [[t1546-event-triggered-execution|T1546 - Execução Disparada por Evento]]
## Descrição
Adversários podem estabelecer persistência explorando os mecanismos de inicialização do interpretador Python. Sempre que o Python é invocado - sejá por um usuário, por um script agendado ou por uma aplicação - ele processa automaticamente certos arquivos de configuração antes de executar qualquer código do usuário. Esses pontos de entrada são chamados de **startup hooks** e incluem:
**1. Arquivos `.pth` (Path Configuration Files)**
Colocados nos diretórios `site-packages` ou `dist-packages` do Python, esses arquivos normalmente servem para estender o caminho de busca de módulos. Porém, qualquer linha que comece com `import` é **executada diretamente** durante a inicialização do interpretador. Um adversário pode criar um arquivo `.pth` legítimo em aparência que na verdade importa e executa código arbitrário.
**2. `sitecustomize.py`**
Módulo importado automaticamente pelo Python durante a inicialização, antes de qualquer outro código do usuário. É projetado para customizações de ambiente (ex: configuração de encoding), mas se um adversário puder escrever nesse arquivo - ou em um `sitecustomize.py` num diretório de maior prioridade no `sys.path` - qualquer código inserido será executado com os privilégios do processo Python.
**3. `usercustomize.py`**
Similar ao `sitecustomize.py`, mas carregado no contexto do usuário atual (respeitando `ENABLE_USER_SITE`). Permite persistência no nível de usuário sem necessidade de privilégios de sistema.
```mermaid
graph TB
A[Adversário obtém escrita em<br/>site-packages ou PYTHONPATH] --> B{Vetor de Implante}
B --> C[Arquivo .pth malicioso<br/>com linha 'import malware']
B --> D[sitecustomize.py<br/>substituído ou criado]
B --> E[usercustomize.py<br/>no diretório home do usuário]
C --> F[Python invocado por qualquer processo]
D --> F
E --> F
F --> G[Startup Hook executado<br/>automaticamente]
G --> H[Payload carregado em memória]
H --> I[C2 / Keylogger / Backdoor<br/>ativa ao processo Python]
```
Ambientes onde Python é amplamente utilizado para automação, scripts de infraestrutura (Ansible, SaltStack) ou aplicações de produção são especialmente vulneráveis: cada invocação do interpretador torna-se um vetor de execução do payload, sem que o usuário perceba qualquer anomalia visível.
A técnica é de difícil detecção porque os arquivos parecem legítimos e estão em diretórios esperados. Além disso, o payload roda dentro de um processo Python - o que pode passar despercebido em ambientes onde Python é comum.
## Contexto Brasil/LATAM
No Brasil e na América Latina, a técnica de Python Startup Hooks é especialmente relevante em ambientes de infraestrutura e automação baseados em Python - amplamente adotados por equipes de DevOps, bancos digitais, fintechs e empresas de e-commerce da região. Adversários com acesso a servidores Linux utilizados para orquestração (Ansible, SaltStack) ou aplicações de produção (Django, FastAPI) podem implantar arquivos `.pth` maliciosos nos diretórios `site-packages` do sistema, garantindo que qualquer invocação do interpretador Python - sejá por cron jobs, scripts de coleta de dados ou pipelines de integração - execute o payload de persistência silenciosamente. Em campanhas de comprometimento de supply chain de software open source direcionadas à América Latina, pacotes Python maliciosos públicados no PyPI já foram identificados adicionando hooks de inicialização que estabelecem conexões de [[t1071-application-layer-protocol|comando e controle]]. O Brasil, como maior mercado de desenvolvedores Python da América Latina, é um alvo de relevância crescente para esse vetor. Ambientes que utilizam [[t1059-006-python|Python]] extensivamente devem adotar o uso mandatório de ambientes virtuais isolados (venv) e monitoramento de integridade dos diretórios `site-packages` do Python de sistema via [[m1022-restrict-file-and-directory-permissions|M1022 - Restrict File and Directory Permissions]].
## Detecção
| Vetor de Detecção | O que Monitorar |
|-------------------|-----------------|
| Criação de arquivos `.pth` | Novos arquivos `.pth` em `site-packages` ou `dist-packages` não associados a instalações via `pip` |
| Modificação de `sitecustomize.py` | Alterações no arquivo fora de jánelas de manutenção ou sem correspondência no gerenciador de pacotes |
| Conteúdo dos `.pth` | Linhas começando com `import` (em vez de apenas caminhos de diretório) |
| Comportamento de processos Python | Processos Python iniciando conexões de rede inesperadas ou criando subprocessos |
| Variável `PYTHONSTARTUP` | Modificações em variáveis de ambiente que apontam para scripts de inicialização customizados |
Ferramentas de EDR que monitoram escrita em diretórios de bibliotecas Python e correlacionam com execuções subsequentes são o principal meio de detecção para esta técnica.
## Mitigação
| ID | Mitigação | Aplicação |
|----|-----------|-----------|
| M1033 | [[m1033-limit-software-installation\|M1033 - Limit Software Installation]] | Restringir instalação de pacotes Python a processos autorizados; usar ambientes virtuais isolados |
| M1022 | [[m1022-restrict-file-and-directory-permissions\|M1022 - Restrict File and Directory Permissions]] | Proteger os diretórios `site-packages` com permissões restritas - evitar escrita por usuários não-root |
| M1038 | [[m1038-execution-prevention\|M1038 - Execution Prevention]] | Usar políticas de controle de aplicação (ex: AppArmor, SELinux) para restringir o que pode ser importado |
## Técnicas Relacionadas
- [[t1546-event-triggered-execution|T1546 - Execução Disparada por Evento]] - técnica pai desta sub-técnica
- [[t1059-006-python|T1059.006 - Python]] - execução de código via interpretador Python; frequentemente combinado com esta técnica
- [[t1574-hijack-execution-flow|T1574 - Hijack Execution Flow]] - lógica similar de interceptar o fluxo de execução de um interpretador
- [[t1546-001-change-default-file-association|T1546.001]] - outra sub-técnica de persistência via gatilhos disparados automaticamente pelo ambiente
---
*Fonte: [MITRE ATT&CK - T1546.018](https://attack.mitre.org/techniques/T1546/018)*