# T1546.013 - PowerShell Profile ## Descrição Adversários podem obter persistência e elevar privilégios executando conteúdo malicioso acionado por perfis do PowerShell. Um perfil do PowerShell (`profile.ps1`) é um script executado automaticamente sempre que uma sessão do [[t1059-001-powershell|PowerShell]] é iniciada, funcionando como um script de logon que personaliza o ambiente de execução do usuário. Essa característica, originalmente concebida para conveniência administrativa, torna-se um vetor eficaz de persistência quando manipulada por um agente de ameaça. O [[t1059-001-powershell|PowerShell]] suporta múltiplos perfis que variam conforme o usuário ou o programa host. Por exemplo, existem perfis distintos para o console do PowerShell, para o PowerShell ISE e para o Visual Studio Code. Além disso, um administrador pode configurar um perfil que se aplica a todos os usuários e a todos os programas host no computador local - o chamado perfil "AllUsersAllHosts" (`$PSHOME\profile.ps1`). Esse escopo amplo torna a modificação desse perfil especialmente atraente para adversários que buscam execução persistente com alto alcance no sistema. Adversários podem modificar esses perfis para incluir comandos arbitrários, funções, módulos e drives do [[t1059-001-powershell|PowerShell]], garantindo persistência de longo prazo. Toda vez que um usuário abre uma sessão do PowerShell, o script modificado é executado automaticamente - a menos que a flag `-NoProfile` sejá utilizada no lançamento. Em ambientes corporativos, onde scripts de automação e tarefas agendadas frequentemente invocam o PowerShell sem essa flag, a jánela de exploração é considerável. Um adversário também pode escalar privilégios se um perfil carregado for executado no contexto de uma conta com permissões elevadas, como um administrador de domínio. ## Como Funciona A técnica explora o mecanismo nativo de inicialização do PowerShell. Quando o PowerShell é iniciado, ele procura e executa automaticamente arquivos de perfil em uma ordem de precedência bem definida. Existem quatro perfis principais: 1. **AllUsersAllHosts** - `$PSHOME\profile.ps1` - aplica-se a todos os usuários em todos os hosts 2. **AllUsersCurrentHost** - `$PSHOME\Microsoft.PowerShell_profile.ps1` - aplica-se a todos os usuários no console PS 3. **CurrentUserAllHosts** - `$HOME\Documents\PowerShell\profile.ps1` - aplica-se ao usuário atual em todos os hosts 4. **CurrentUserCurrentHost** - `$HOME\Documents\PowerShell\Microsoft.PowerShell_profile.ps1` - perfil mais específico Para que a técnica funcione, o adversário precisa de permissão de escrita no arquivo de perfil alvo. Em perfis de escopo amplo (`AllUsersAllHosts`), isso geralmente requer privilégios administrativos - mas uma vez obtidos, o código malicioso é executado para todos os usuários subsequentes. Em perfis de escopo de usuário único (`CurrentUserCurrentHost`), permissões de usuário comum são suficientes, tornando a técnica acessível mesmo sem elevação prévia. O payload inserido pode variar: desde um simples stager de C2 até carregamento de módulos de pós-exploração como [[s0154-cobalt-strike|Cobalt Strike]] ou implantes personalizados. O código é ofuscado frequentemente usando [[t1027-obfuscated-files-or-information|técnicas de ofuscação]] para evadir soluções de segurança. A execução ocorre dentro do processo `powershell.exe`, tornando a atividade visualmente legítima em logs superficiais. A persistência é especialmente resiliente porque o perfil sobrevive a reinicializações, atualizações de software e até mudanças de sessão de usuário. Apenas a exclusão explícita do conteúdo malicioso do arquivo de perfil remove a persistência. ## Attack Flow ```mermaid graph TB A["Acesso Inicial<br/>Comprometimento de credencial<br/>ou execução de payload"] --> B["Escrita no profile.ps1<br/>Modificação do perfil<br/>AllUsersAllHosts ou CurrentUser"] B --> C["Persistência Estabelecida<br/>Código malicioso executado<br/>em toda nova sessão PS"] C --> D["Execução Privilegiada<br/>Se admin invocar PS,<br/>código roda com privilégios elevados"] D --> E["Pós-Exploração<br/>C2 beacon, coleta de credenciais,<br/>movimentação lateral"] E --> F["Impacto<br/>Exfiltração de dados,<br/>ransomware, espionagem"] ``` ## Exemplos de Uso ### Turla (APT russo - espionagem) O grupo [[g0010-turla|Turla]], vinculado ao FSB russo e com histórico de operações de espionagem contra governos e think tanks, documentadamente empregou a modificação de perfis do [[t1059-001-powershell|PowerShell]] como mecanismo de persistência em campanhas de longa duração. Em campanhas como a **Uroburos/Snake**, os operadores do Turla inserem scripts no perfil do PowerShell para garantir que o implante sejá recarregado automaticamente mesmo após reinicializações ou atualizações de sistema. A abordagem é característica do estilo operacional do Turla: mínimo ruído, máxima persistência. ### Casos Documentados em Red Team Em engajamentos de red team documentados públicamente, essa técnica é frequentemente combinada com [[t1059-001-powershell|execução de PowerShell]] para estabelecer persistência em ambientes Windows corporativos. Frameworks de pós-exploração como [[s0154-cobalt-strike|Cobalt Strike]] e Metasploit possuem módulos que automatizam a inserção de stagers no `profile.ps1`, reduzindo o esforço operacional necessário. ### Uso em Ambientes de Desenvolvimento Ambientes onde desenvolvedores utilizam PowerShell intensivamente (DevOps, automação de infraestrutura) são alvos de alto valor. O perfil modificado pode permanecer despercebido por meses em estações de trabalho de desenvolvimento onde a execução de scripts PS é rotineira e esperada. ## Detecção ```yaml title: Modificação Suspeita de Perfil PowerShell status: experimental logsource: category: file_event product: windows detection: selection: TargetFilename|endswith: - '\profile.ps1' - '\Microsoft.PowerShell_profile.ps1' filter_legitimate: Image|endswith: - '\powershell.exe' - '\pwsh.exe' TargetFilename|contains: '\Documents\PowerShell\' condition: selection and not filter_legitimate level: high tags: - attack.privilege_escalation - attack.persistence - attack.t1546.013 ``` **Estrategias adicionais de detecção:** - Monitorar eventos de **criação e modificação de arquivo** nos caminhos de perfil PS conhecidos via Sysmon Event ID 11 - Habilitar **Script Block Logging** (`HKLM\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging`) para capturar o conteúdo executado - Alertar para execução de comandos de rede (`Invoke-WebRequest`, `New-Object Net.WebClient`) originados de `powershell.exe` durante inicialização de sessão - Verificar integridade dos arquivos de perfil com hash comparison em soluções de FIM (File Integrity Monitoring) - Correlacionar eventos de modificação de perfil com logins suspeitos ou execuções de processos incomuns ## Mitigação | ID | Mitigação | Descrição | |----|-----------|-----------| | [[m1045-code-signing\|M1045]] | Code Signing | Exigir que scripts PowerShell sejam assinados digitalmente com a política `AllSigned`. Isso impede a execução de perfis modificados não assinados. | | [[m1022-restrict-file-and-directory-permissions\|M1022]] | Restrict File and Directory Permissions | Restringir permissões de escrita nos arquivos de perfil do PowerShell, especialmente os de escopo amplo (`AllUsersAllHosts`). Apenas administradores devem ter permissão de modificação. | | [[m1054-software-configuration\|M1054]] | Software Configuration | Configurar a política de execução do PowerShell para `Restricted` ou `AllSigned` via GPO. Considerar o uso da flag `-NoProfile` em invocações automatizadas/agendadas do PowerShell para evitar execução do perfil. | **Configuração recomendada via GPO:** - `Computer Configuration > Administrative Templates > Windows Components > Windows PowerShell` - Habilitar "Turn on Script Block Logging" - Habilitar "Turn on Module Logging" - Definir "Execution Policy" como `AllSigned` ## Contexto Brasil/LATAM No cenário brasileiro e latino-americano, o abuso de perfis do [[t1059-001-powershell|PowerShell]] tem relevância crescente por diversas razões estruturais. O PowerShell é amplamente adotado em ambientes corporativos para automação de TI, especialmente em empresas que utilizam infraestrutura Microsoft - incluindo setores [[_sectors|financeiro]], [[_sectors|governamental]] e de telecomúnicações, todos alvos prioritários de grupos de espionagem e cibercrime organizado na região. Grupos de [[_groups|ameaça]] com presença documentada em operações LATAM, como variantes do [[g0010-turla|Turla]] em campanhas de espionagem contra governos sul-americanos, demonstraram interesse em técnicas de persistência via PowerShell. Adicionalmente, grupos de ransomware como **LockBit** e **BlackCat/ALPHV** - ativos no Brasil - frequentemente utilizam PowerShell como vetor de execução e persistência em fases de pré-ransomware. A maturidade de detecção em organizações brasileiras para técnicas baseadas em PowerShell ainda é heterogênea: enquanto grandes bancos e operadoras de telecom investem em SIEM com regras específicas, PMEs e órgãos públicos municipais frequentemente carecem de monitoramento adequado de logs do PowerShell. Isso cria uma superfície de ataque considerável que adversários exploram ativamente em campanhas de espionagem corporativa e ataques de ransomware direcionados. A recomendação de habilitar o **Script Block Logging** e o **Transcription Logging** do PowerShell via GPO é especialmente crítica para organizações brasileiras que ainda não adotaram essas práticas, pois fornece visibilidade essencial sem custo adicional de licenciamento. ## Referências - [[t1546-event-triggered-execution|T1546 - Event Triggered Execution]] (técnica pai) - [[t1059-001-powershell|T1059.001 - PowerShell]] (técnica relacionada de execução) - [[t1027-obfuscated-files-or-information|T1027 - Obfuscated Files or Information]] (frequentemente combinada) - [[g0010-turla|Turla]] (grupo ameaça documentado usando esta técnica) - [[s0154-cobalt-strike|Cobalt Strike]] (framework C2 que automatiza esta técnica) - [[m1045-code-signing|M1045 - Code Signing]] (mitigação primária) - [[m1022-restrict-file-and-directory-permissions|M1022 - Restrict File and Directory Permissions]] (mitigação de controle de acesso) - [[m1054-software-configuration|M1054 - Software Configuration]] (mitigação via política) --- *Fonte: [MITRE ATT&CK - T1546.013](https://attack.mitre.org/techniques/T1546/013)*