Etiqueta: IDS/IPS

  • Como o Wazuh Pode Detectar e Prevenir o Ataque APT ao Notepad++

    Como o Wazuh Pode Detectar e Prevenir o Ataque APT ao Notepad++

    Visão Geral da Proteção

    O Wazuh SIEM oferece múltiplas camadas de deteção para identificar e prevenir ataques de cadeia de fornecimento como o comprometimento do Notepad++. Apresento uma implementação prática para o seu ambiente.


    1. Monitorização de Integridade de Ficheiros (FIM)

    Configuração para Detetar Instaladores Maliciosos NSIS

    xml

    <!-- /var/ossec/etc/ossec.conf -->
    <syscheck>
      <directories check_all="yes" realtime="yes" report_changes="yes">
        C:\Users\*\AppData\Local\Temp
      </directories>
      
      <!-- Detetar criação do diretório característico NSIS -->
      <directories check_all="yes" realtime="yes" report_changes="yes">
        C:\Users\*\AppData\Local\Temp\ns*.tmp
      </directories>
      
      <!-- Monitorizar diretórios de dropper identificados -->
      <directories check_all="yes" realtime="yes" report_changes="yes">
        C:\Users\*\AppData\Roaming\ProShow
        C:\Users\*\AppData\Roaming\Adobe\Scripts
        C:\Users\*\AppData\Roaming\Bluetooth
      </directories>
    </syscheck>

    Regra Personalizada para NSIS Suspeito

    xml

    <!-- /var/ossec/etc/rules/local_rules.xml -->
    <group name="notepad_apt,">
      
      <!-- Deteção de diretório NSIS temporário -->
      <rule id="100001" level="10">
        <if_sid>550</if_sid>
        <field name="file">ns\.tmp</field>
        <description>Possível instalador NSIS malicioso detetado (Notepad++ APT)</description>
        <mitre>
          <id>T1027</id>
          <id>T1195.002</id>
        </mitre>
      </rule>
    
      <!-- Deteção de ficheiros em diretórios de dropper -->
      <rule id="100002" level="12">
        <if_sid>550</if_sid>
        <field name="file">ProShow\\load$|Adobe\\Scripts\\alien\.ini$|Bluetooth\\BluetoothService$</field>
        <description>Ficheiro malicioso de cadeia de infeção Notepad++ detetado</description>
        <mitre>
          <id>T1574.002</id>
        </mitre>
      </rule>
    
    </group>

    2. Deteção de Processos Suspeitos

    Monitorização Sysmon para DLL Sideloading

    xml

    <!-- C:\Program Files (x86)\ossec-agent\sysmon-config.xml -->
    <Sysmon schemaversion="4.82">
      <EventFiltering>
        
        <!-- Detetar carregamento de DLLs maliciosas -->
        <ImageLoad onmatch="include">
          <ImageLoaded condition="end with">log.dll</ImageLoaded>
          <ImageLoaded condition="end with">alien.dll</ImageLoaded>
          <ImageLoaded condition="end with">lua5.1.dll</ImageLoaded>
        </ImageLoad>
        
        <!-- Detetar processos legítimos abusados -->
        <ProcessCreate onmatch="include">
          <Image condition="end with">ProShow.exe</Image>
          <Image condition="end with">script.exe</Image>
          <Image condition="end with">BluetoothService.exe</Image>
          <ParentImage condition="contains">AppData\Roaming</ParentImage>
        </ProcessCreate>
        
      </EventFiltering>
    </Sysmon>

    Regras Wazuh para Sysmon

    xml

    <!-- /var/ossec/etc/rules/local_rules.xml -->
    <group name="sysmon,notepad_apt">
    
      <!-- Deteção de DLL sideloading -->
      <rule id="100010" level="12">
        <if_sid>61603</if_sid>
        <field name="win.eventdata.imageLoaded">\\log\.dll$|\\alien\.dll$</field>
        <description>DLL sideloading detetado - Cadeia de infeção Notepad++ APT</description>
        <mitre>
          <id>T1574.002</id>
        </mitre>
      </rule>
    
      <!-- Processo legítimo em localização suspeita -->
      <rule id="100011" level="10">
        <if_sid>61603</if_sid>
        <field name="win.eventdata.image">ProShow\.exe|BluetoothService\.exe</field>
        <field name="win.eventdata.image">AppData\\Roaming</field>
        <description>Executável legítimo em localização anómala (Notepad++ APT)</description>
        <mitre>
          <id>T1036</id>
        </mitre>
      </rule>
    
    </group>

    3. Deteção de Comandos de Reconhecimento

    Monitorização de CommandLine via Sysmon

    xml

    <!-- Regras para comandos de reconhecimento -->
    <group name="reconnaissance,notepad_apt">
    
      <!-- Sequência de comandos característica -->
      <rule id="100020" level="8">
        <if_sid>61603</if_sid>
        <field name="win.eventdata.commandLine">cmd\.exe.*whoami</field>
        <description>Comando de reconhecimento: whoami</description>
        <mitre>
          <id>T1033</id>
        </mitre>
      </rule>
    
      <rule id="100021" level="8">
        <if_sid>61603</if_sid>
        <field name="win.eventdata.commandLine">cmd\.exe.*tasklist</field>
        <description>Comando de reconhecimento: tasklist</description>
        <mitre>
          <id>T1057</id>
        </mitre>
      </rule>
    
      <rule id="100022" level="8">
        <if_sid>61603</if_sid>
        <field name="win.eventdata.commandLine">cmd\.exe.*systeminfo</field>
        <description>Comando de reconhecimento: systeminfo</description>
        <mitre>
          <id>T1082</id>
        </mitre>
      </rule>
    
      <rule id="100023" level="8">
        <if_sid>61603</if_sid>
        <field name="win.eventdata.commandLine">cmd\.exe.*netstat.*-ano</field>
        <description>Comando de reconhecimento: netstat</description>
        <mitre>
          <id>T1049</id>
        </mitre>
      </rule>
    
      <!-- Correlação: múltiplos comandos em sequência -->
      <rule id="100024" level="15" frequency="3" timeframe="60">
        <if_matched_sid>100020</if_matched_sid>
        <if_matched_sid>100021</if_matched_sid>
        <if_matched_sid>100022</if_matched_sid>
        <same_source_ip />
        <description>ALERTA CRÍTICO: Sequência de reconhecimento APT Notepad++ detetada</description>
        <mitre>
          <id>T1595</id>
        </mitre>
      </rule>
    
    </group>

    4. Deteção de Rede e DNS

    Monitorização de Domínios Maliciosos

    xml

    <!-- /var/ossec/etc/lists/notepad_apt_iocs.txt -->
    # Domínios C2 identificados pela Kaspersky
    temp.sh
    cdncheck.it.com
    safe-dns.it.com
    self-dns.it.com
    api.skycloudcenter.com
    api.wiresguard.com
    
    # IPs maliciosos
    45.76.155.202
    45.32.144.255
    95.179.213.0
    45.77.31.210
    59.110.7.32
    124.222.137.114

    Regras para Deteção DNS/HTTP

    xml

    <group name="network,notepad_apt">
    
      <!-- Deteção de resolução DNS suspeita -->
      <rule id="100030" level="12">
        <if_group>web</if_group>
        <list field="url" lookup="match_key_value">etc/lists/notepad_apt_iocs.txt</list>
        <description>Conexão a domínio C2 conhecido (Notepad++ APT)</description>
        <mitre>
          <id>T1071.001</id>
        </mitre>
      </rule>
    
      <!-- Deteção de temp.sh (exfiltração) -->
      <rule id="100031" level="13">
        <if_group>web</if_group>
        <match>temp.sh</match>
        <description>CRÍTICO: Tentativa de exfiltração via temp.sh (Notepad++ APT)</description>
        <mitre>
          <id>T1567.002</id>
        </mitre>
      </rule>
    
      <!-- Deteção de User-Agent suspeito em requisições HTTP -->
      <rule id="100032" level="10">
        <if_group>web</if_group>
        <field name="user_agent">temp\.sh</field>
        <description>User-Agent malicioso detetado (Notepad++ APT C2)</description>
        <mitre>
          <id>T1071.001</id>
        </mitre>
      </rule>
    
    </group>

    5. Integração com Active Response

    Resposta Automática a Ameaças

    xml

    <!-- /var/ossec/etc/ossec.conf -->
    <active-response>
      
      <!-- Isolar máquina em caso de deteção crítica -->
      <command>firewall-drop</command>
      <location>local</location>
      <rules_id>100024,100031</rules_id>
      <timeout>3600</timeout>
    </active-response>
    
    <active-response>
      
      <!-- Matar processos maliciosos -->
      <command>kill-process</command>
      <location>local</location>
      <rules_id>100011</rules_id>
      <timeout>no</timeout>
    </active-response>
    
    <!-- Script personalizado para quarentena -->
    <command>
      <name>quarantine-file</name>
      <executable>quarantine.sh</executable>
      <timeout_allowed>no</timeout_allowed>
    </command>
    
    <active-response>
      <command>quarantine-file</command>
      <location>local</location>
      <rules_id>100002</rules_id>
    </active-response>

    Script de Quarentena

    bash

    #!/bin/bash
    # /var/ossec/active-response/bin/quarantine.sh
    
    ACTION=$1
    USER=$2
    IP=$3
    ALERTID=$4
    RULEID=$5
    
    # Extrair caminho do ficheiro do alerta
    FILENAME=$(echo "$6" | jq -r '.syscheck.path')
    
    if [ "$ACTION" = "add" ]; then
        # Criar diretório de quarentena
        QUARANTINE_DIR="/var/ossec/quarantine/$(date +%Y%m%d)"
        mkdir -p "$QUARANTINE_DIR"
        
        # Mover ficheiro malicioso
        if [ -f "$FILENAME" ]; then
            mv "$FILENAME" "$QUARANTINE_DIR/$(basename $FILENAME)_$(date +%s)"
            
            # Registar ação
            echo "$(date): Ficheiro $FILENAME colocado em quarentena por regra $RULEID" >> /var/ossec/logs/quarantine.log
        fi
    fi

    6. Dashboard Kibana para Visualização

    Query Elasticsearch para Análise

    json

    {
      "query": {
        "bool": {
          "should": [
            { "match": { "rule.groups": "notepad_apt" }},
            { "match": { "rule.mitre.id": "T1195.002" }},
            { "match": { "data.win.eventdata.image": "notepad" }}
          ]
        }
      },
      "aggs": {
        "top_agents": {
          "terms": { "field": "agent.name" }
        },
        "attack_timeline": {
          "date_histogram": {
            "field": "@timestamp",
            "interval": "1h"
          }
        }
      }
    }

    7. Implementação Prática – Script de Deploy

    bash

    #!/bin/bash
    # deploy_notepad_apt_protection.sh
    
    echo "[+] A instalar proteção APT Notepad++ no Wazuh..."
    
    # 1. Copiar regras personalizadas
    cat >> /var/ossec/etc/rules/local_rules.xml << 'EOF'
    <!-- Incluir todas as regras acima -->
    EOF
    
    # 2. Criar lista de IOCs
    cat > /var/ossec/etc/lists/notepad_apt_iocs.txt << 'EOF'
    temp.sh
    cdncheck.it.com
    safe-dns.it.com
    self-dns.it.com
    EOF
    
    # 3. Atualizar CDB
    cd /var/ossec/etc/lists/
    /var/ossec/bin/ossec-makelists
    
    # 4. Reiniciar Wazuh Manager
    systemctl restart wazuh-manager
    
    echo "[+] Proteção implementada com sucesso!"
    echo "[+] Verificar logs em: /var/ossec/logs/alerts/alerts.json"

    8. Configuração de Agentes Windows

    PowerShell – Deploy em Agentes

    powershell

    # install_sysmon_notepad_protection.ps1
    
    # Download Sysmon
    Invoke-WebRequest -Uri "https://download.sysinternals.com/files/Sysmon.zip" -OutFile "C:\Temp\Sysmon.zip"
    Expand-Archive -Path "C:\Temp\Sysmon.zip" -DestinationPath "C:\Temp\Sysmon"
    
    # Instalar Sysmon com configuração personalizada
    C:\Temp\Sysmon\Sysmon64.exe -accepteula -i C:\sysmon-config.xml
    
    # Configurar forwarding para Wazuh
    Add-Content -Path "C:\Program Files (x86)\ossec-agent\ossec.conf" -Value @"
    <localfile>
      <location>Microsoft-Windows-Sysmon/Operational</location>
      <log_format>eventchannel</log_format>
    </localfile>
    "@
    
    # Reiniciar agente
    Restart-Service -Name wazuh

    9. Alertas e Notificações

    Integração com Sistemas de Alerta

    xml

    <!-- /var/ossec/etc/ossec.conf -->
    <integration>
      <name>slack</name>
      <hook_url>https://hooks.slack.com/services/YOUR/WEBHOOK/URL</hook_url>
      <level>12</level>
      <rule_id>100024,100031</rule_id>
      <alert_format>json</alert_format>
    </integration>
    
    <integration>
      <name>custom-email</name>
      <hook_url>https://api.hjfr.info/wazuh/alert</hook_url>
      <level>10</level>
      <group>notepad_apt</group>
      <alert_format>json</alert_format>
    </integration>

    10. Testes de Validação

    Script de Teste (ATENÇÃO: Apenas em ambiente controlado!)

    powershell

    # test_notepad_apt_detection.ps1
    # EXECUTAR APENAS EM AMBIENTE DE TESTE!
    
    # Teste 1: Criar diretório NSIS
    New-Item -Path "$env:LOCALAPPDATA\Temp\ns1234.tmp" -ItemType Directory
    
    # Teste 2: Simular comandos de reconhecimento
    cmd /c whoami > C:\Temp\test.txt
    cmd /c tasklist >> C:\Temp\test.txt
    cmd /c systeminfo >> C:\Temp\test.txt
    cmd /c netstat -ano >> C:\Temp\test.txt
    
    # Teste 3: Tentativa de resolução DNS (modo seguro)
    nslookup temp.sh
    
    Write-Host "[+] Testes concluídos. Verificar alertas no Wazuh."

    Resultados Esperados

    Alertas Gerados no Wazuh

    json

    {
      "timestamp": "2026-02-04T10:30:00.000Z",
      "rule": {
        "level": 15,
        "description": "ALERTA CRÍTICO: Sequência de reconhecimento APT Notepad++ detetada",
        "id": "100024",
        "mitre": {
          "id": ["T1595"],
          "tactic": ["Reconnaissance"],
          "technique": ["Active Scanning"]
        }
      },
      "agent": {
        "name": "WORKSTATION-001",
        "ip": "192.168.1.50"
      },
      "full_log": "cmd /c whoami&&tasklist&&systeminfo&&netstat -ano"
    }

    Benefícios da Implementação

    Capacidades de Deteção

    Deteção Proativa:

    • Identificação de instaladores NSIS maliciosos em tempo real
    • Monitorização de DLL sideloading
    • Correlação de comandos de reconhecimento

    Resposta Automática:

    • Isolamento imediato de sistemas comprometidos
    • Quarentena automática de ficheiros maliciosos
    • Bloqueio de comunicações C2

    Visibilidade Completa:

    • Timeline de ataque em dashboard Kibana
    • Mapeamento MITRE ATT&CK
    • Relatórios de conformidade RGPD

    Manutenção Contínua

    Atualização de IOCs

    bash

    # update_iocs.sh - Executar semanalmente
    #!/bin/bash
    
    # Download de feeds de threat intelligence
    curl -s https://securelist.com/feed/iocs/latest | \
      grep -E "notepad|temp.sh" >> /var/ossec/etc/lists/notepad_apt_iocs.txt
    
    # Remover duplicados
    sort -u /var/ossec/etc/lists/notepad_apt_iocs.txt -o /var/ossec/etc/lists/notepad_apt_iocs.txt
    
    # Recompilar CDB
    /var/ossec/bin/ossec-makelists
    
    # Reiniciar manager
    systemctl restart wazuh-manager

    Conclusão

    Esta implementação fornece proteção em profundidade contra ataques APT à cadeia de fornecimento, especificamente configurada para detetar as três cadeias de infeção do Notepad++. O Wazuh oferece:

    • Deteção em tempo real de indicadores de compromisso
    • Resposta automática a ameaças críticas
    • Conformidade com frameworks de segurança (NIST, MITRE ATT&CK)
    • Visibilidade centralizada para equipas SOC

    Recomendação HJFR: Implementar esta configuração em todos os ambientes corporativos que utilizem Notepad++ ou editores de texto similares.


    Documentação Técnica HJFR
    Versão: 1.0
    Data: 4 de fevereiro de 2026
    Suporte: security@hjfr.info