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