# T1546.004 - Unix Shell Configuration Modification
> [!abstract] Visão Geral
> **Tática:** Privilege Escalation / Persistence | **Plataformas:** Linux, macOS | **ID MITRE:** T1546.004
> Adversários inserem comandos maliciosos em arquivos de configuração de shell Unix/Linux (bash, zsh) que são executados automaticamente em cada nova sessão de terminal ou login, garantindo persistência silenciosa e de baixo custo de manutenção.
## Descrição
A técnica **Unix Shell Configuration Modification** explora o comportamento fundamental dos interpretadores de comandos Unix: ao iniciar uma sessão, o shell automaticamente carrega e executa uma série de scripts de configuração para preparar o ambiente do usuário. Esses scripts definem variáveis de ambiente, criam aliases, configuram o PATH e personalizam o prompt - e adversários os abusam inserindo comandos que executam código malicioso toda vez que uma sessão de terminal é aberta ou um login SSH é estabelecido. A técnica é elegante em sua simplicidade: requer apenas permissão de escrita em um arquivo de texto, produz persistência imediata e funciona de forma transparente ao usuário, que continua usando o terminal normalmente enquanto o malware é inicializado em segundo plano.
O [[t1059-004-unix-shell|Unix Shell]] é o mecanismo de controle central em sistemas Linux e macOS, tornando a modificação de seus scripts de configuração um vetor de persistência de alto valor. Diferentemente de técnicas que requerem privilégios de root (como modificar serviços do sistema ou cron jobs globais), a modificação de arquivos de configuração no diretório home do usuário (`~/.bashrc`, `~/.zshrc`, `~/.bash_profile`) pode ser realizada sem qualquer privilégio especial - tornando a técnica acessível em qualquer fase da cadeia de ataque, desde o acesso inicial até o pós-comprometimento. Para obter execução em nível de sistema, os adversários podem escalar para arquivos de configuração globais como `/etc/profile` e `/etc/profile.d/`, que requerem root mas afetam todos os usuários do sistema.
Uma característica importante é a **ordem de carregamento** dos arquivos de configuração: o shell processa os arquivos em uma sequência definida e executa apenas o primeiro arquivo encontrado em certas categorias. Adversários exploram esse comportamento para garantir que seu código sejá executado, posicionando payloads em arquivos com alta prioridade de carregamento. No Linux com Bash, o `~/.bash_profile` tem precedência sobre `~/.bash_login` e `~/.profile` para shells de login, enquanto `~/.bashrc` é carregado para shells interativos não-login - como novas abas no terminal. Para macOS com Zsh (padrão desde macOS 10.15 Catalina), os arquivos equivalentes são `~/.zprofile` (login shells) e `~/.zshrc` (shells interativos).
## Como Funciona
O funcionamento técnico da técnica envolve a compreensão do ciclo de vida dos diferentes tipos de shells Unix e quais arquivos de configuração cada tipo carrega.
### Tipos de Shell e Arquivos de Configuração
**Bash - Login Shell** (iniciado por SSH, login direto, `su -`):
Ordem de leitura: `/etc/profile` → `/etc/profile.d/*.sh` → `~/.bash_profile` → `~/.bash_login` → `~/.profile`
**Bash - Interactive Non-Login Shell** (nova aba no terminal, `bash` sem argumentos):
Lê apenas: `~/.bashrc` → `/etc/bashrc`
**Bash - Shell de Logout**:
Executa: `~/.bash_logout`
**Zsh - Login Shell** (macOS padrão):
Ordem: `/etc/zshenv` → `~/.zshenv` → `/etc/zprofile` → `~/.zprofile` → `/etc/zshrc` → `~/.zshrc` → `/etc/zlogin` → `~/.zlogin`
**Zsh - Interactive Shell** (nova aba no Terminal.app no macOS):
Lê: `/etc/zshenv` → `~/.zshenv` → `/etc/zshrc` → `~/.zshrc`
### Vetores de Persistência por Nível de Privilégio
**Sem privilégios (user-level)**:
- `~/.bashrc` - Execução em todo shell interativo
- `~/.bash_profile` - Execução em login shells
- `~/.zshrc` / `~/.zprofile` - Equivalentes Zsh no macOS
- `~/.bash_logout` - Execução ao sair do shell (útil para data exfiltration ou cleanup)
**Com privilégios root (system-level)**:
- `/etc/profile` - Execução para TODOS os usuários em login shells
- `/etc/profile.d/*.sh` - Scripts modulares executados para todos os usuários (vetor stealth - um arquivo adicional pequeno é menos visível)
- `/etc/bash.bashrc` - Executado para todos os shells interativos não-login (Debian/Ubuntu)
- `/etc/zshrc` - Equivalente Zsh para todos os usuários
### Payload Típico
Adversários geralmente inserem um bloco minimamente invasivo ao final do arquivo de configuração para evitar detecção por inspeção superficial:
```bash
# Exemplo de persistência inserida no ~/.bashrc
# (nomes de variáveis e caminhos disfarçados)
export _JAVA_OPTIONS="-Xmx512m"
[ -f /tmp/.session_cache ] && /tmp/.session_cache &>/dev/null &
```
Ou ainda mais stealth, usando um alias que executa o payload antes do comando real:
```bash
alias ls='ls --color=auto; /usr/local/bin/.cache_updaté 2>/dev/null &'
```
O malware [[s1078-rotajkiro|RotaJákiro]], backdoor Linux sofisticado, é um exemplo de payload que pode ser persistido via essa técnica, executando em background enquanto disfarça sua presença.
## Attack Flow
```mermaid
graph TB
A["Acesso Inicial<br/>SSH comprometido, RCE, phishing<br/>ou credencial roubada"] --> B["Reconhecimento<br/>Identificar shell padrão<br/>cat /etc/passwd | grep username"]
B --> C["Seleção do Arquivo Alvo<br/>~/.bashrc (Linux) ou<br/>~/.zshrc (macOS)"]
C --> D1["User-Level<br/>echo 'payload' >> ~/.bashrc<br/>Não requer root"]
C --> D2["System-Level<br/>echo 'payload' >> /etc/profile.d/updaté.sh<br/>Requer root - afeta todos usuários"]
D1 --> E["Persistência Estabelecida<br/>Payload executado em cada<br/>nova sessão de terminal"]
D2 --> E
E --> F["Execução do Payload<br/>Backdoor/downloader inicia<br/>em background silenciosamente"]
F --> G1["C2 Beacon<br/>Conexão reversa para<br/>servidor de comando e controle"]
F --> G2["Coleta de Dados<br/>Captura de credenciais,<br/>keylogging, exfiltração"]
G1 --> H["Impacto<br/>Acesso persistente e remoto<br/>ao sistema comprometido"]
G2 --> H
```
## Exemplos de Uso
### Contagious Interview - Lazarus Group
A campanha [[g1052-contagious-interview|Contagious Interview]], atribuída ao [[g0032-lazarus-group|Lazarus Group]], é o exemplo mais documentado de uso de T1546.004. A operação utiliza falsas entrevistas de emprego - especialmente para desenvolvedores de software - para induzir vítimas a instalar malware disfarçado de ferramentas de videoconferência ou pacotes npm maliciosos. Uma vez com acesso ao sistema da vítima (frequentemente macOS ou Linux de desenvolvedores), o malware modifica `~/.zshrc` ou `~/.bashrc` para garantir persistência persistente. O backdoor resultante, identificado como BeaverTail ou InvisibleFerret, mantém comunicação com servidores C2 e permite exfiltração de credenciais, chaves privadas de criptomoedas e código-fonte proprietário.
### RotaJákiro - Backdoor Linux Stealth
O [[s1078-rotajkiro|RotaJákiro]] é um backdoor Linux descoberto em 2021 que demonstra sofisticação significativa no uso de técnicas de persistência via configuração de shell. O malware emprega múltiplos mecanismos de persistência incluindo modificação de arquivos rc, serviços systemd e scripts de inicialização, garantindo sobrevivência mesmo após reboots e atualizações de sistema. Sua capacidade de disfarçar tráfego C2 como consultas DNS e sua arquitetura de plugin modular o tornam um exemplo avançado de ameaça que usa T1546.004 como um dos seus vetores de persistência.
### Linux Rabbit / Rabbot
O [[s0362-linux-rabbit|Linux Rabbit]] é um worm Linux/macOS que utiliza modificação de arquivos de configuração de shell como mecanismo principal de persistência. Após comprometer um sistema - frequentemente via força bruta SSH ou exploração de serviços expostos - o malware adiciona linhas ao `~/.bashrc` e `/etc/rc.local` que reinstalam o worm se ele for removido, criando persistência resiliente.
### XCSSET - Malware macOS via Zsh
O [[s0658-xcsset|XCSSET]] é um malware macOS que ataca projetos Xcode e usa modificações de `~/.zshrc` para persistência. Notavelmente, o XCSSET injeta código malicioso diretamente em scripts de build de projetos Xcode, e também modifica a configuração do shell para garantir que o malware sejá reiniciado após cada nova sessão. Isso o torna particularmente perigoso para desenvolvedores macOS brasileiros que trabalham com projetos iOS/macOS.
### Green Lambert - APT em macOS
O [[s0690-green-lambert|Green Lambert]] é um implante macOS sofisticado, possívelmente associado a um ator de espionagem com capacidades avançadas, que utiliza modificação de arquivos de configuração de shell como uma de suas técnicas de persistência. Sua descoberta ilustra como T1546.004 é empregada em operações de espionagem de longo prazo onde a furtividade é prioritária.
## Detecção
A detecção de T1546.004 envolve monitoramento de integridade de arquivos de configuração de shell, análise de modificações em arquivos rc e auditoria de processos iniciados por sessões de shell.
**Monitoramento de integridade de arquivos (FIM)**: Implementar monitoramento de integridade nos arquivos de configuração de shell mais comuns, alertando para modificações inesperadas.
**Auditoria com auditd (Linux)**: O subsistema de auditoria do Linux pode monitorar escritas em arquivos de configuração de shell.
```yaml
title: Shell Configuration File Modified
id: e5f6a7b8-c9d0-1234-efab-234567890123
status: stable
description: Detecta modificação em arquivos de configuração de shell Unix, possível indicador de persistência via T1546.004
logsource:
category: file_change
product: linux
detection:
selection_shell_config:
TargetFilename|contains:
- '/.bashrc'
- '/.bash_profile'
- '/.bash_login'
- '/.profile'
- '/.zshrc'
- '/.zprofile'
- '/.zlogin'
- '/etc/profile'
- '/etc/bash.bashrc'
- '/etc/profile.d/'
- '/.bash_logout'
filter_known_editors:
Image|endswith:
- '/nano'
- '/vim'
- '/vi'
- '/emacs'
- '/code'
- '/gedit'
filter_package_managers:
Image|endswith:
- '/dpkg'
- '/apt'
- '/pip3'
- '/npm'
- '/brew'
condition: selection_shell_config and not (filter_known_editors or filter_package_managers)
falsepositives:
- Scripts de configuração legítimos de ambiente de desenvolvimento
- Instalação de ferramentas de desenvolvimento via gerenciadores de pacotes
- Dotfiles managers (chezmoi, stow, yadm)
level: medium
tags:
- attack.privilege_escalation
- attack.persistence
- attack.t1546.004
```
```yaml
title: Suspicious Command Appended to Shell RC File via Echo
id: f6a7b8c9-d0e1-2345-fabc-345678901234
status: experimental
description: Detecta uso de echo ou printf para adicionar conteúdo a arquivos de configuração de shell - técnica comum em persistência automatizada de malware
logsource:
category: process_creation
product: linux
detection:
selection:
Image|endswith:
- '/bash'
- '/sh'
- '/zsh'
CommandLine|contains:
- '>> ~/.bashrc'
- '>> ~/.zshrc'
- '>> ~/.bash_profile'
- '>> /etc/profile'
- '>>/etc/profile.d/'
CommandLine|startswith:
- 'echo '
- 'printf '
filter_legitimate:
CommandLine|contains:
- 'export PATH'
- 'alias '
- 'PS1='
condition: selection and not filter_legitimate
level: high
tags:
- attack.persistence
- attack.t1546.004
```
**Análise comportamental**: Monitorar processos iniciados por shells de login que fazem conexões de rede, especialmente conexões de saída para IPs ou domínios incomuns imediatamente após a abertura de uma sessão de terminal.
**Auditoria de conteúdo**: Implementar scripts de verificação periódica que comparam o hash dos arquivos de configuração de shell com baselines conhecidos, alertando para alterações não autorizadas.
## Mitigação
| ID | Mitigação | Descrição |
|----|-----------|-----------|
| [[m1022-restrict-file-and-directory-permissions\|M1022]] | Restrição de Permissões de Arquivos e Diretórios | Definir permissões corretas em arquivos de configuração críticos: `chmod 644 ~/.bashrc ~/.zshrc ~/.bash_profile` para impedir modificação por processos não autorizados. Para arquivos globais em `/etc/profile.d/`, garantir que apenas root possa escrever (`chmod 644`, `chown root:root`). Monitorar regularmente permissões dos arquivos de configuração de shell. |
| [[m1018-user-account-management\|M1018]] | Gerenciamento de Contas de Usuário | Aplicar o princípio do menor privilégio - limitar quais usuários têm acesso SSH e shell interativo. Desabilitar shells interativos para contas de serviço (`/sbin/nologin` ou `/bin/false`). Revisar regularmente usuários com acesso a shell no `/etc/passwd`. |
| [[m1038-execution-prevention\|M1038]] | Prevenção de Execução | Em servidores Linux críticos, considerar implementar políticas SELinux ou AppArmor que restrinjam quais binários podem ser executados a partir de sessões de shell de usuários específicos. Isso limita o impacto mesmo que a modificação do arquivo de configuração sejá bem-sucedida. |
**Controles adicionais**:
- **Imutabilidade de arquivos**: Em servidores críticos, usar `chattr +i ~/.bashrc` para tornar o arquivo imutável (requer root para modificar ou remover o atributo). Pode ser automatizado via scripts de hardening.
- **Monitoramento de integridade com AIDE ou Tripwire**: Incluir arquivos de configuração de shell no escopo de monitoramento de integridade de arquivos (FIM).
- **Auditd rules**: Adicionar regras de auditoria do Linux para monitorar escritas nos arquivos de configuração: `-w /home -p wa -k shell_config_modification`
- **Revisão periódica de dotfiles**: Implementar scripts automatizados que revisam e alertam para conteúdo suspeito em arquivos de configuração de shell de todos os usuários do sistema.
## Contexto Brasil/LATAM
A técnica T1546.004 apresenta relevância particular no contexto brasileiro e latino-americano por uma combinação de fatores técnicos e de cultura de uso de tecnologia.
**Ecossistema de desenvolvimento na região**: O Brasil possui uma das maiores comunidades de desenvolvedores de software da América Latina, com forte adoção de Linux e macOS em estações de trabalho de desenvolvimento. Ambientes de desenvolvimento são alvos privilegiados para T1546.004 - desenvolvedores trabalham intensivamente em terminais, frequentemente instalam ferramentas de fontes diversas e têm alta tolerância a avisos de segurança, o que aumenta a superfície de ataque para campanhas como [[g1052-contagious-interview|Contagious Interview]].
**Contagious Interview e o ecossistema de tecnologia brasileiro**: A campanha do [[g0032-lazarus-group|Lazarus Group]] que usa falsas entrevistas de emprego é particularmente ameaçadora para o mercado de tecnologia brasileiro. Com o crescimento de startups, fintechs e empresas de desenvolvimento de software em São Paulo, Curitiba, Florianópolis e Recife, há um grande pool de desenvolvedores ativamente em busca de oportunidades - muitos dos quais trabalham com macOS e têm perfil exato visado pela campanha. A promessa de vagas em empresas de blockchain e criptomoedas ressoa especialmente no contexto brasileiro dado o alto interesse local nesse mercado.
**Ambientes de nuvem e DevOps**: A crescente adoção de práticas DevOps e infraestrutura cloud no Brasil significa que comprometer a configuração de shell de um desenvolvedor pode dar acesso a credenciais de AWS, GCP ou Azure armazenadas em arquivos como `~/.aws/credentials` - potencialmente comprometendo infraestrutura de produção de toda a empresa. Esse multiplicador de impacto torna T1546.004 uma técnica de alto valor em ataques corporativos no Brasil.
**Servidores Linux expostos**: O Brasil tem um número significativo de servidores Linux com SSH exposto à internet, frequentemente em PMEs e provedores de hospedagem regionais. Ataques de força bruta SSH que resultam em comprometimento de credenciais são um vetor comum para implantação de malware que usa T1546.004 para persistência - como observado em campanhas do [[s1078-rotajkiro|RotaJákiro]] e [[s0362-linux-rabbit|Linux Rabbit]] que têm presença documentada em infraestrutura brasileira.
**Malware bancário e acesso a terminais**: Grupos de cibercrime financeiro brasileiros, conhecidos por desenvolver e distribuir trojans bancários como [[s0531-grandoreiro|Grandoreiro]] e [[mekotio|Mekotio]], têm expandido suas capacidades para incluir componentes de acesso remoto em sistemas Linux e macOS. O uso de T1546.004 por esses grupos representa uma evolução natural de suas táticas além do foco histórico em Windows.
## Software Associado
- [[s1078-rotajkiro|RotaJákiro]] (malware) - backdoor Linux stealth com múltiplos mecanismos de persistência incluindo modificação de shell config
- [[s0362-linux-rabbit|Linux Rabbit]] (malware) - worm Linux/macOS com persistência via ~/.bashrc
- [[s0690-green-lambert|Green Lambert]] (malware) - implante macOS de espionagem com persistência via shell config
- [[s0658-xcsset|XCSSET]] (malware) - malware macOS que modifica ~/.zshrc para persistência
## Threat Actors que Usam
- [[g1052-contagious-interview|Contagious Interview]] - campanha Lazarus Group que usa modificação de shell config em macOS de desenvolvedores
## Referências
### Técnicas Relacionadas
- [[t1546-event-triggered-execution|T1546 - Event Triggered Execution]] - Técnica pai desta subtécnica
- [[t1059-004-unix-shell|T1059 - Command and Scripting Interpreter]] - Técnica intimamente relacionada - abuso do próprio shell
- [[t1053-003-cron|T1053.003 - Cron]] - Alternativa de persistência Linux/macOS via agendamento
- [[t1543-002-systemd-service|T1543.002 - Systemd Service]] - Persistência Linux de nível de sistema alternativa
- [[t1552-001-credentials-in-files|T1552.001 - Credentials In Files]] - Dados frequentemente exfiltrados via shell modificado
### Atores de Ameaça Relevantes
- [[g0032-lazarus-group|Lazarus Group]] - Operador da campanha Contagious Interview com uso documentado de T1546.004
### Campanhas Relevantes
- [[g1052-contagious-interview|Contagious Interview]] - Campanha que usa entrevistas falsas para comprometer desenvolvedores via modificação de shell config
---
*Fonte: [MITRE ATT&CK - T1546.004](https://attack.mitre.org/techniques/T1546/004)*