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