# DC0020 - Firmware Modification
> [!info] Detecta alterações em firmware UEFI/BIOS e bootloaders — o nível mais profundo de persistência adversarial. Implantes de firmware sobrevivem a reinstalações do sistema operacional e são utilizados exclusivamente por atores de estado-nação avançados.
## Descrição
Firmware Modification detecta alterações em componentes de firmware do sistema, incluindo UEFI/BIOS, firmware de dispositivos periféricos (SSD, NIC, GPU) e bootloaders. É uma das técnicas adversariais mais avançadas e persistentes, utilizada principalmente por atores de estado-nação como Equation Group e APT29. Implantes de firmware sobrevivem a reinstalações do sistema operacional e são extremamente difíceis de detectar e remediar sem acesso ao hardware físico.
## Fonte de Dados
Parent: [[ds0001-firmware|DS0001 - Firmware]]
## Pipeline de Detecção
```mermaid
graph TB
A["🔩 Acesso a Ferramentas<br/>de Firmware Update"] --> B["🔒 Verificação de<br/>Integridade TPM/PCR"]
B --> C{"📊 Medição TPM<br/>Alterada?"}
C -->|Sim - UEFI vars| D["🚨 Alerta P1<br/>Possível Implante UEFI"]
C -->|Sim - Bootloader| E["🚨 Alerta P1<br/>Bootkit Detectado"]
C -->|Não| F{"🔐 Secure Boot<br/>Ativo e Válido?"}
F -->|Desabilitado| G["🟧 Alerta P2<br/>Secure Boot Off"]
F -->|Sim| H["✔️ Sistema<br/>Íntegro"]
classDef p1 fill:#e74c3c,color:#ecf0f1
classDef p2 fill:#e67e22,color:#ecf0f1
classDef ok fill:#2ecc71,color:#2c3e50
classDef proc fill:#2c3e50,color:#ecf0f1
class D,E p1
class G p2
class H ok
class A,B,C,F proc
```
## O Que Monitorar
- Acesso a ferramentas de atualização de firmware (fwupdate, flashrom, fptool)
- Chamadas a APIs de acesso ao firmware UEFI (EFI variables via `NtSetSystemInformation`)
- Medições de integridade via TPM/Secure Boot comparadas com baseline
- Acesso a `/dev/sda` ou dispositivos raw em nível de bloco (Linux)
- Windows Event Log - eventos de Secure Boot: `Microsoft-Windows-Kernel-Boot`
- Tentativas de desabilitar Secure Boot ou modificar políticas de boot
- Drivers de atualização de firmware de terceiros sendo carregados
## Técnicas Detectadas
| Técnica | ID | Como Detectar |
|---------|-----|---------------|
| Pre-OS Boot | [[t1542-pre-os-boot\|T1542]] | Alterações em componentes de boot antes do OS |
| System Firmware | [[t1542-pre-os-boot\|T1542.001]] | Modificação do UEFI/BIOS detectada via medição TPM |
| Bootkit | [[t1542-pre-os-boot\|T1542.003]] | MBR/VBR modificado, detecção via Secure Boot |
| Modify System Image | [[t1601-modify-system-image\|T1601]] | Imagem de firmware de dispositivo de rede alterada |
## Implementação
**Windows - monitorar via Secure Boot e TPM:**
```powershell
# Verificar estado do Secure Boot
Confirm-SecureBootUEFI
# Verificar medições TPM (Platform Configuration Registers)
Get-TpmEndorsementKeyInfo
```
**Linux - verificar integridade UEFI:**
```bash
# Listar variáveis UEFI suspeitas
efibootmgr -v
# Verificar assinatura do bootloader
sbverify --list /boot/efi/EFI/ubuntu/shimx64.efi
```
**Recomendações:** Habilitar Secure Boot, usar TPM para medições de integridade (PCR measurements), monitorar variáveis EFI críticas, usar Intel Boot Guard onde disponível.
**Ferramentas:** Intel Platform Trust Technology, AMD fTPM, Chipsec (análise de firmware), Microsoft UEFI Diagnostics, ESET UEFI Scanner.
## Consultas KQL — Microsoft Sentinel / Defender
### Ferramentas de Firmware Executadas
```kql
// DC0020 - Execução de ferramentas de atualização de firmware fora de janela de manutenção
DeviceProcessEvents
| where Timestamp > ago(7d)
| where FileName in~ (
"flashrom.exe", "fwupd.exe", "fwupdate.exe",
"WinFlash.exe", "FWUpdLcl.exe", "H2OFFT.exe",
"AFUWINx64.exe", "meinfo.exe", "fptool.exe"
)
| where not(
InitiatingProcessFileName in~ ("svchost.exe", "TrustedInstaller.exe")
and InitiatingProcessIntegrityLevel == "System"
)
| project
Timestamp,
DeviceName,
FileName,
ProcessCommandLine,
InitiatingProcessFileName,
InitiatingProcessAccountName,
InitiatingProcessIntegrityLevel
| order by Timestamp desc
```
### Desabilitação do Secure Boot via Registro
```kql
// DC0020 - Tentativa de modificar políticas de Secure Boot via registro
DeviceRegistryEvents
| where Timestamp > ago(7d)
| where ActionType in ("RegistryValueSet", "RegistryKeyCreated")
| where RegistryKey has_any (
@"SYSTEM\CurrentControlSet\Control\SecureBoot",
@"SYSTEM\CurrentControlSet\Control\DeviceGuard",
@"SYSTEM\CurrentControlSet\Control\CI\Config"
)
| project
Timestamp,
DeviceName,
RegistryKey,
RegistryValueName,
RegistryValueData,
InitiatingProcessFileName,
InitiatingProcessAccountName
| order by Timestamp desc
```
## Contexto LATAM
> [!latam] Relevância Regional
> **Ataques de firmware são raros mas catástroficos — e crescem em relevância para infraestrutura crítica da região.** Embora implantes UEFI sejam primariamente utilizados por grupos de estado-nação (NSA Equation Group, APT29/Sandworm), o Brasil é alvo declarado de operações de espionagem cibernética patrocinada por estados — documentadas em relatórios do CERT.br e CTIR Gov. Redes de energia, telecomúnicações e governo federal são os alvos mais prováveis. Adicionalmente, a técnica **Bootkit** ganhou relevância com o surgimento do **BlackLotus** (2023) — primeiro bootkit UEFI a bypassar Secure Boot — sendo uma ameaça real mesmo para organizações sem perfil de espionagem. Monitorar o **Estado do Secure Boot** em todos os endpoints corporativos deve ser baseline em qualquer organização brasileira com dados sensíveis.
## Referências
- [MITRE ATT&CK - DS0001 Firmware](https://attack.mitre.org/datasources/DS0001/)
- [BlackLotus UEFI Bootkit - ESET Research](https://www.welivesecurity.com/en/)
- [Chipsec - Intel Security Tool](https://github.com/chipsec/chipsec)
- [Equation Group Firmware - Kaspersky](https://securelist.com/)