# T1553.003 - SIP and Trust Provider Hijacking
## Técnica Pai
Esta é uma sub-técnica de [[t1553-subvert-trust-controls|T1553 - Subvert Trust Controls]], que agrupa diversas formas de subverter mecanismos de confiança do sistema operacional e de ferramentas de controle de aplicações.
## Descrição
Adversários podem manipular componentes SIP (*Subject Interface Package*) e provedores de confiança (*trust providers*) para enganar o sistema operacional e ferramentas de controle de aplicações durante a válidação de assinaturas digitais.
No modo de usuário do Windows, as assinaturas digitais Authenticode são utilizadas para verificar a origem e integridade de arquivos - por exemplo, um driver com assinatura válida da Microsoft é tratado como seguro. O processo de válidação ocorre por meio da API `WinVerifyTrust`, que encaminha a consulta ao provedor de confiança responsável por cada tipo de assinatura.
Para lidar com a diversidade de formatos de executáveis e esquemas de assinatura, a Microsoft criou os **Subject Interface Packages (SIPs)** - camadas de abstração entre as funções da API e os arquivos. Cada SIP é identificado por um GUID único e é responsável por criar, recuperar, calcular e verificar assinaturas para um determinado formato de arquivo (PE, PowerShell, MSI, catálogo, entre outros).
Assim como em [[t1553-002-code-signing|T1553.002 - Code Signing]], adversários podem abusar desta arquitetura para burlar políticas que permitem apenas código assinado legitimamente.
## Como Funciona
O sequestro pode ser realizado de três formas principais, todas envolvendo manipulação de chaves no Registro do Windows:
**1. Substituição do CryptSIPDllGetSignedDataMsg**
A chave `HKLM\SOFTWARE[\WOW6432Node\]Microsoft\Cryptography\OID\EncodingType 0\CryptSIPDllGetSignedDataMsg\{SIP_GUID}` aponta para a DLL que implementa a função responsável por recuperar o certificado digital embutido em um arquivo. Um adversário pode apontar esta chave para uma DLL maliciosa que sempre retorna um valor de assinatura conhecido como válido (por exemplo, a assinatura Microsoft de um PE legítimo), independentemente do arquivo real sendo válidado.
**2. Substituição do CryptSIPDllVerifyIndirectData**
A chave `HKLM\SOFTWARE\[WOW6432Node\]Microsoft\Cryptography\OID\EncodingType 0\CryptSIPDllVerifyIndirectData\{SIP_GUID}` aponta para a função que válida o hash calculado do arquivo contra o hash assinado. Redirecionando para uma DLL que sempre retorna `TRUE`, o adversário faz com que qualquer arquivo passe na válidação de integridade, mesmo que o conteúdo não corresponda à assinatura.
**3. Substituição do FinalPolicy do Trust Provider**
A chave `HKLM\SOFTWARE\[WOW6432Node\]Microsoft\Cryptography\Providers\Trust\FinalPolicy\{trust provider GUID}` aponta para a função onde a maioria das decisões de confiança são tomadas após decodificação e parsing da assinatura. Sequestrar esta função oferece controle ainda mais amplo sobre o resultado das válidações.
> Todos os três sequestros também são viáveis sem modificar o Registro, através do [[t1574-001-dll|T1574.001 - DLL Search Order Hijacking]], caso uma DLL maliciosa sejá colocada em um caminho de busca prioritário.
Além de contornar controles de segurança, o sequestro de SIP ou trust provider garante **persistência de execução de código**, pois esses componentes são invocados por qualquer aplicação que realize assinatura ou válidação de código no sistema.
## Attack Flow
```mermaid
graph TB
A[Acesso Inicial / Elevação de Privilégios] --> B[Identificar SIP GUIDs alvo no Registro]
B --> C{Vetor de entrega}
C -->|Modificação de Registro| D[Alterar chave CryptSIPDllVerifyIndirectData]
C -->|DLL Search Order| E[Posicionar DLL maliciosa no path de busca]
D --> F[DLL maliciosa retorna TRUE/assinatura válida]
E --> F
F --> G[WinVerifyTrust válida qualquer arquivo como legítimo]
G --> H[Execução de payload não assinado bypass AppLocker/WDAC]
H --> I[Persistência via componente de sistema invocado globalmente]
I --> J[Evasão de defesa - Defense Evasion TA0005]
```
## Exemplos de Uso
**Cenário 1 - Bypass de AppLocker/WDAC**
Um adversário com privilégios administrativos modifica a chave `CryptSIPDllVerifyIndirectData` do SIP para arquivos PE, apontando para uma DLL customizada que ignora a verificação de hash. A partir desse momento, qualquer executável não assinado passa nas verificações de integridade do Windows Defender Application Control, permitindo execução irrestrita de payloads.
**Cenário 2 - Persistência silenciosa**
Ao sequestrar o `FinalPolicy` de um trust provider amplamente utilizado, o adversário garante que seu implante continue sendo executado mesmo após reinicializações, pois o componente comprometido é carregado automaticamente por aplicações legítimas do sistema.
**Cenário 3 - DLL Search Order sem modificar Registro**
Combinando com [[t1574-001-dll|T1574.001]], o adversário posiciona uma DLL maliciosa em um diretório de maior prioridade no caminho de busca, fazendo com que o sistema carregue a versão comprometida do SIP sem deixar rastros no Registro.
Grupos como o [[g0032-lazarus-group|Lazarus Group]] historicamente exploram mecanismos de confiança do Windows para persistência e evasão em ambientes corporativos, embora o uso específico desta sub-técnica sejá menos documentado públicamente do que abordagens similares de [[t1553-subvert-trust-controls|subversão de controles de confiança]].
## Detecção
```yaml
title: Possible SIP Trust Provider Registry Hijack
status: experimental
logsource:
category: registry_set
product: windows
detection:
selection:
TargetObject|contains:
- '\Microsoft\Cryptography\OID\EncodingType 0\CryptSIPDllGetSignedDataMsg\'
- '\Microsoft\Cryptography\OID\EncodingType 0\CryptSIPDllVerifyIndirectData\'
- '\Microsoft\Cryptography\Providers\Trust\FinalPolicy\'
Details|endswith: '.dll'
filter_legit:
Image|startswith:
- 'C:\Windows\System32\'
- 'C:\Windows\SysWOW64\'
condition: selection and not filter_legit
level: high
tags:
- attack.defense_evasion
- attack.t1553.003
```
**Fontes de dados recomendadas para monitoramento:**
- **Registro do Windows** - monitorar criação e modificação de valores `Dll` e `FuncName`/`Function` nas chaves de Cryptography OID e Trust Providers
- **Carregamento de módulos** - rastrear DLLs incomuns carregadas por processos de válidação (`wintrust.dll`, `crypt32.dll`) via Sysmon Event ID 7
- **Integridade de arquivos** - auditar alterações em DLLs do sistema relacionadas a SIPs (`wintrust.dll`, `mssip*.dll`)
- **Linha de comando** - detectar uso de `reg.exe`, PowerShell ou ferramentas de terceiros modificando chaves de Cryptography
## Mitigação
| ID | Mitigação | Descrição |
|---|-----------|-----------|
| M1038 | [[m1038-execution-prevention\|M1038 - Execution Prevention]] | Usar AppLocker ou WDAC para restringir execução de DLLs não assinadas ou de caminhos não confiáveis, dificultando o carregamento de DLLs SIP maliciosas |
| M1024 | [[m1024-restrict-registry-permissions\|M1024 - Restrict Registry Permissions]] | Restringir permissões de escrita nas chaves de Registro relacionadas a SIPs e trust providers (`HKLM\SOFTWARE\Microsoft\Cryptography\OID` e `Providers\Trust`), limitando modificações a contas SYSTEM/TrustedInstaller |
| M1022 | [[m1022-restrict-file-and-directory-permissions\|M1022 - Restrict File and Directory Permissions]] | Proteger as DLLs SIP legítimas do sistema com permissões restritas para prevenir substituição direta; monitorar integridade via Windows Defender Credential Guard |
## Contexto Brasil/LATAM
No cenário brasileiro e latino-americano, o sequestro de SIPs e trust providers é particularmente relevante em ataques a **ambientes corporativos que dependem de controles de aplicação como AppLocker** - amplamente adotados por bancos, órgãos governamentais e infraestrutura crítica para restringir execução não autorizada.
Grupos de ameaça com presença documentada na região, como o [[g0032-lazarus-group|Lazarus Group]] (ativo contra o setor financeiro brasileiro desde pelo menos 2018) e atores de ransomware que operam no [[_sectors|setor financeiro]] e de [[government|governo]], frequentemente buscam técnicas que permitam contornar controles de aplicação sem acionar alertas de EDR convencionais.
A técnica se encaixa na fase de [[ta0005-defense-evasion|Evasão de Defesa]] de ataques sofisticados - geralmente após comprometimento inicial via [[t1566-phishing|T1566 - Phishing]] ou exploração de vulnerabilidades - e pode ser combinada com [[t1574-001-dll|T1574.001 - DLL Search Order Hijacking]] para maior furtividade.
**Recomendações para equipes de defesa no Brasil:**
- Habilitar auditoria de Registro nas chaves de Cryptography (via GPO: `Audit Object Access`)
- Monitorar carregamento de DLLs anômalas por processos do sistema com Sysmon
- Implementar verificação de integridade de DLLs críticas via Windows Defender Application Control em modo de auditoria antes de enforçamento
## Referências
- [[t1553-subvert-trust-controls|T1553 - Subvert Trust Controls]] - Técnica pai desta sub-técnica
- [[t1553-002-code-signing|T1553.002 - Code Signing]] - Técnica relacionada de abuso de assinaturas digitais
- [[t1574-001-dll|T1574.001 - DLL Search Order Hijacking]] - Vetor alternativo para sequestro de SIP sem modificar Registro
- [[m1038-execution-prevention|M1038 - Execution Prevention]] - Mitigação principal
- [[m1024-restrict-registry-permissions|M1024 - Restrict Registry Permissions]] - Restrição de acesso ao Registro
- [[ta0005-defense-evasion|TA0005 - Defense Evasion]] - Tática MITRE ATT&CK desta técnica
---
*Fonte: MITRE ATT&CK - T1553.003*