# 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)*