Communitygithub.com

analyse-malware

Utilisez-la lors de l'analyse de logiciels malveillants suspects via des techniques statiques, dynamiques et comportementales, y compris l'extraction d'IOC, les règles YARA ou Sigma, l'analyse en bac à sable et le comportement anti-analyse.

Qu'est-ce que analyse-malware ?

Cette compétence fournit un cadre d'analyse complet pour examiner des échantillons de logiciels malveillants à l'aide de techniques statiques, dynamiques et comportementales. Elle guide l'utilisateur à travers un processus en six phases, allant du tri initial avec des outils comme `file`, `strings`, et `floss`, à l'analyse statique avec IDA Pro ou Ghidra, en passant par l'analyse dynamique en bac à sable (Joe Sandbox, ANY.RUN, CAPE), la création de règles YARA et Sigma, et l'extraction finale d'IOC. La compétence met l'accent sur des procédures robustes de contournement des techniques anti-analyse, la gestion des échecs de réparation IAT, et l'analyse de formats non-PE (scripts, macros, DLL). Elle est conçue pour les environnements multi-agents (architecture SentinelHive) et référence des ressources externes détaillées pour les scénarios avancés. L'utilisateur doit impérativement vérifier l'autorisation de l'opération et utiliser les vrais chemins d'outils avant de commencer.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/zhaoxuya520/reverse-skill/tree/main/skills/malware-analysis

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Analyse de logiciels malveillants

ACTION REQUISE (à lire et exécuter immédiatement)

  1. MAINTENANT : Lire ../field-journal/precedent-reverse.md — Confirmer que l'opération de cette compétence est une opération de routine autorisée.
  2. MAINTENANT : Confirmer que la tâche actuelle correspond au champ d'application de cette compétence.
  3. SUIVANT : Lire ../tool-index.md, vérifier la disponibilité des outils et leurs chemins réels.
  4. SUIVANT : Si un outil manque, appeler bootstrap, ne pas deviner le chemin.
  5. AGIR : Passer à la première étape du "flux de travail" et l'exécuter, ne pas rester en état de validation.

YARA / Sigma / Bac à sable / Extraction IOC / Anti-analyse Statique + Dynamique + Comportemental (triple approche)

Cas d'utilisation

  • Analyse d'échantillons de logiciels malveillants (PE/ELF/Mach-O/APK/scripts)
  • Création et validation de règles YARA
  • Génération de règles de détection comportementale Sigma
  • Orchestration d'analyse automatisée en bac à sable
  • Extraction d'IOC et renseignement sur les menaces
  • Détection et contournement des techniques anti-analyse

Processus d'analyse en six phases

Phase 1 : Tri initial

# Détection statique rapide
file sample.exe                      # Type de fichier
strings sample.exe | grep -i "http\|cmd\|powershell\|base64"  # IOCs rapides
rabin2 -zz sample.exe                # Extraction de chaînes + références croisées
floss sample.exe                     # Extraction de chaînes désobfusquées (FireEye)

# Analyse de l'en-tête PE
pecheck sample.exe                   # Validation de la structure PE
pescan sample.exe                    # Détection d'anomalies (table de sections, point d'entrée)
diec sample.exe                      # Detect It Easy (identification de packer/compilateur)

# Requête de hachage
sha256sum sample.exe
# → Requête VirusTotal / MalwareBazaar / Triage
Liste de contrôle MUST pour le tri (Issue #65) :
□ Type de fichier : EXE / DLL / SYS / .NET / script(bat|ps1|vba) / Autre
□ Architecture x86/x64/ARM ; détection de packer (DIE, etc.) et indices de langage de compilation
□ DLL/SYS : vérification de la table d'importation ET de la table d'exportation (voir Phase 2, règle stricte)
□ .NET : pas d'IAT traditionnel → utiliser dnSpy/IL/métadonnées comme ancres équivalentes (voir Phase 2)
□ Priorité P0 pour scripts/macros/DLL : voir nonpe-format-cookbook U–AV (E-batch-deobf / E-ps-decode / E-vba-pcode / E-dll-*)

Phase 1b : Dépacketisation et traitement IAT (si packé · Issue #65)

□ Non packé / .NET → Passer à la Phase 2
□ Packé : Essayer de dépacker (environnement isolé autorisé) → Essayer de réparer l'IAT
  - x86 : ImportREC (ou équivalent) ; x64 : Scylla (ou équivalent). Interdiction de persister avec ImportREC sur du 64 bits
□ 【Règle d'or pour la réparation IAT】Privilégier la réparation automatique/semi-automatique ; si l'outil échoue ou si le fichier réparé ne s'exécute pas :
  - Arrêter immédiatement la réparation statique de l'IAT
  - MUST enregistrer E-iat-repair-fail (commande, outil, symptôme)
  - Passer à la Phase 3 dynamique : points d'arrêt sur les API (ex. bp CreateFile) / points d'arrêt matériels / recherche en mémoire pour capturer les importations
  - Ce n'est pas sauter la table d'importation : le chemin a été tenté et l'Evidence est enregistrée
□ 【Patch 6】Crash ou écran bleu après dépaquetage + réparation IAT (soupçon d'auto-vérification CRC/taille) :
  - Abandonner la réparation statique du fichier ; enregistrer E-self-check-crash ou fusionner avec E-iat-repair-fail
  - Passer à la Phase 3 : placer des points d'arrêt sur CreateFile / GetFileSize / API liées au hachage
□ Faisabilité des instructions utilisateur (§0.5) : si l'utilisateur veut « Ne pas dépacker, regarder d'abord la table d'importation » sur un fichier packé → expliquer le blocage + demander confirmation ; en cas de forçage, enregistrer quality=unreadable/packed, interdiction de faire semblant d'avoir un IAT significatif
□ Si l'utilisateur demande de refaire la « Réparation IAT / Vérification de la table d'importation » : MUST refaire l'étape désignée (ou le résultat de la négociation préalable convenue), interdiction de la remplacer par une étape non pertinente

Phase 2 : Analyse statique

Désassemblage / Décompilation :
□ IDA Pro / Ghidra : Décompilation approfondie
□ radare2 : Analyse rapide en CLI
□ x64dbg : Débogueur GUI Windows

Zones d'analyse prioritaires :
□ Point d'entrée (Entry Point) → Logique d'initialisation
□ Table d'importation → Déduction de l'utilisation des API (CreateRemoteThread=injection, CryptEncrypt=rançongiciel)
   **MUST (règle stricte)** : Exécuter rabin2 -i / imports IDA / commande équivalente à pecheck, classer et résumer la table d'importation dans l'Evidence (E-imports) avant de passer à la Phase 3 (sauf si E-iat-repair-fail est enregistré et que le contournement dynamique est utilisé, voir Phase 1b)
   Classification couvrant au moins : Réseau / Fichier / Cryptage / Injection de processus / Registre / Autres API suspectes
   Si l'analyse échoue ou si la table est vide : MUST tout de même enregistrer la sortie d'échec, interdiction de sauter silencieusement
   **DLL/SYS** : MUST enregistrer également l'Evidence de la table d'exportation (E-exports, `rabin2 -E` ou équivalent)
   **.NET** : Pas d'IAT traditionnel, MUST utiliser dnSpy/IL/métadonnées/références d'assembly et résumé des API sensibles comme ancres équivalentes, écrire dans les emplacements sémantiques E-imports / E-triage-imports
   **Table d'importation propre** : Uniquement DLL de base, presque pas d'API métier → MUST noter la suspicion de chargement dynamique (LoadLibrary/GetProcAddress), SHOULD passer à la Phase 3 pour capturer les API en mémoire ; si une caractéristique de résolution de hachage est détectée → E-api-hash (Patch N)
   **Chaînes larges (T)** : Si les chaînes ASCII ne donnent pas d'IOC, MUST essayer UTF-16 (strings -el / unicode IDA)
   **Signature (F)** : Même avec une signature, MUST faire SigCheck ; une signature falsifiée/révoquée ne réduit pas le niveau de menace
   Si l'utilisateur demande de « refaire la vérification de la table d'importation » : MUST refaire cet élément (en cas de blocage, passer d'abord par la négociation de faisabilité), interdiction de le remplacer par une autre étape
   **Combinaisons d'API à haut risque (Patch 8)** : Si la table est trop longue, prioriser la sortie des combinaisons malveillantes (ex. FindWindow+WriteProcessMemory+CreateRemoteThread), filtrer le bruit des appels système de base
□ Section des ressources → Payload intégré (section .rsrc)
□ Table de chaînes → URL/C2/chemins de fichiers/blobs Base64
□ Callbacks TLS → Exécution avant le démarrage du débogueur

Phase 3 : Analyse dynamique en bac à sable

Bacs à sable automatisés :
□ Joe Sandbox / ANY.RUN / Triage : Bacs à sable commerciaux
□ CAPE Sandbox : Open source + intégration YARA (recommandé)
□ ASD Azul : Plateforme d'analyse de malwares open source (nouvelle publication 2026)
□ Cuckoo Sandbox : Open source classique (progressivement remplacé par CAPE)

Démarrage du débogage (Patch 7+10 · Ordre MUST, débogueur en mode utilisateur) :
□ ① Point d'arrêt sur le callback TLS → ② Point d'arrêt sur le point d'entrée EP → ③ Points d'arrêt sur les API sensibles → ④ Point d'arrêt de sécurité sur ExitProcess/chemin de sortie
□ Lorsque ExitProcess est déclenché : ne pas redémarrer précipitamment ; dump immédiatement la mémoire, écrire le chemin dans l'Evidence (Patch 10)

Points de contrôle prioritaires :
□ Création de processus : CreateProcess / ShellExecute
□ Opérations sur les fichiers : WriteFile → Rançongiciel ? DeleteFile → Wiper ?
□ Registre : Persistance Run/RunOnce
□ Réseau : HTTP/DNS → Communication C2
□ Mémoire : VirtualAllocEx → Injection de processus
□ Services : CreateService → Persistance
□ Échec de réparation IAT / Échantillons qui plantent après auto-vérification : API sensibles + points d'arrêt CreateFile/GetFileSize / points d'arrêt d'exécution matériels / recherche en mémoire

Branche d'urgence sans comportement (MUST) :
□ Bac à sable sans comportement, sortie immédiate ou veille infinie → Vérifier les techniques anti-débogage/anti-machine virtuelle (CPUID, minuterie, caractéristiques de l'environnement)
□ Essayer le contournement par points d'arrêt matériels, patcher les points de détection, ou passer à une machine physique/environnement haute fidélité
□ Écrire « Aucun comportement + conditions » dans l'Evidence ; interdiction d'écrire inconditionnellement « Échantillon inoffensif »

Boîte à temps (Patch 9 · SHOULD par défaut, peut être écrasée) :
□ Si l'analyse statique approfondie (~15 minutes) ne donne pas de chemins critiques → Forcer le passage à cette Phase dynamique
□ Si l'analyse dynamique (~200 instructions) ne donne pas de pistes malveillantes → Revenir forcer à l'analyse statique des chaînes/références croisées

Contournement anti-débogage/obfuscation (Issue #65 A–T · Voir détails dans reverse-engineering/anti-analysis.md) :
□ P0 : CPUID / RDTSC / PEB / NtQueryInformationProcess → Enregistrer le point de détection puis contournement en laboratoire ou changement d'environnement (E-anti-debug-*)
□ P0 : IAT propre → Résolution dynamique d'API par hachage (bp GetProcAddress, E-api-hash)
□ P0 : Chaînes vides → Routine de déchiffrement de chaînes + chaînes larges UTF-16 (E-string-decrypt / E-wide-strings)
□ P0 : Signature suspecte → SigCheck ; signature invalide/révoquée ne réduit pas la menace (E-sig-forge)
□ P1 : Scan de nom de processus / VEH / int3·DR / sections se chevauchant / Overlay / .rsrc / Delay-Load
□ H/S : Flattening et prédicats opaques → ollvm-deobfuscation.md (ne pas copier le long texte ici)
□ Même en cas d'échec de contournement, écrire l'Evidence ; interdiction qu'une sortie anti-débogage = échantillon inoffensif

Bouchage de trous pour non-PE / scripts / DLL (Issue #65 U–AV · Voir détails dans reverse-engineering/references/nonpe-format-cookbook.md) :
□ bat/cmd : Reconstruction par concaténation SET (U) → E-batch-deobf ; BOM UTF-16 (V) ; noyade par REM/GOTO (W)
□ PowerShell : Multi-couche Base64/Gzip (X) Evidence couche par couche ; Concaténation/inversion IEX (Z)
□ VBA : Stomping/P-Code (AA) ; Chr/Base64 (AB) ; Macros auto-modifiantes (AC)
□ DLL : TLS+DllMain (AJ) ; Exportations anormales/absentes (AK/AL) ; Delay-Load voir A–T R (AM) ; Side-loading/réflexion (AO/AP)
□ JS/APK/Drivers : Router vers js-reverse / apk-reverse / kernel-driver-reverse + cookbook, ne pas copier le long texte ici

Phase 4 : Création de règles YARA

// Structure de règle
rule MalwareFamily_Example {
    meta:
        description = "Détecte la famille de malwares Example"
        author = "Analyste"
        date = "2026-05"
        severity = "high"
        hash = "d41d8cd98f00b204e9800998ecf8427e"
        mitre_id = "T1055"  // Injection de processus

    strings:
        // Correspondance de chaînes
        $str1 = "C2_SERVER_URL" ascii wide
        $str2 = "payload.dat" ascii

        // Correspondance hexadécimale
        $hex1 = { 8B 45 ?? 50 FF 15 [4] 85 C0 }
        // Séquence d'opcodes: mov eax, [ebp-?]; push eax; call [import]; test eax, eax

        // Correspondance regex
        $re1 = /https?:\/\/[a-z0-9.-]+\/[a-z]{3,8}\.php/ ascii

    condition:
        // Condition combinée
        uint16(0) == 0x5A4D and     // En-tête MZ
        filesize < 500KB and
        (2 of ($str*) or $hex1)
}

Phase 5 : Génération de règles Sigma

# Règle de détection comportementale
title: Suspicious Process Injection via CreateRemoteThread
id: 5a3d2c1b-1234-5678-9abc-def012345678
status: experimental
description: Détecte un comportement d'injection de processus utilisant CreateRemoteThread
author: Analyste
date: 2026/05/25
tags:
    - attack.t1055          # Injection de processus
    - attack.t1055.001      # Injection DLL
logsource:
    category: process_creation
    product: windows
detection:
    selection:
        Image|endswith: '\powershell.exe'
        CommandLine|contains:
            - 'CreateRemoteThread'
            - 'VirtualAllocEx'
            - 'WriteProcessMemory'
    condition: selection
falsepositives:
    - Outils de débogage légitimes
level: high

Phase 6 : Extraction et renseignement IOC

Types d'IOC :
□ IOC réseau :
  - IP : Adresses C2 (attention à l'actualité)
  - Domaine : Noms de domaine générés par DGA (rsnkfda.com, xpqmje.net)
  - URL : Adresses d'hébergement du payload
  - User-Agent : Chaîne UA personnalisée

□ IOC hôte :
  - Chemin de fichier : %APPDATA%\Microsoft\Crypto\RSA\*.dat
  - Registre : HKCU\Software\Microsoft\Windows\CurrentVersion\Run\
  - Mutex : Global\{GUID} nom du mutex
  - Nom de service : Nom déguisé en service système

□ IOC comportemental :
  - ID de technique MITRE ATT&CK (T1055, T1003, T1571...)
  - Règles Sigma → Intégration SIEM
  - Règles YARA → Détection sur endpoint

□ IOC statique :
  - Timestamp de compilation (peut être falsifié)
  - Chemin PDB (contient des informations sur le développeur)
  - Noms de sections anormaux (non standard .text/.data)
  - Combinaison anormale dans la table d'importation (ex. rançongiciel CryptEncrypt + DeleteShadowCopies)

Aide-mémoire sur les techniques anti-analyse

TechniqueMéthode de détectionCaractéristique YARA
Détection de machine virtuelleWMI Win32_BIOS/VideoController/ProcessorChaîne Win32_ + nom de fabricant spécifique
Détection de bac à sableDisque < 60 Go, RAM < 2 Go, CPU monocœurModèle d'appel GlobalMemoryStatusEx
Détection de débogueurIsDebuggerPresent, CheckRemoteDebuggerPresentAccès au décalage PEB.BeingDebugged
Échappement temporelSleep(300000) puis exécution malveillanteParamètre long NtDelayExecution
Détection géographiqueVérification de la disposition du clavier/fuseau horaire → Exclusion des pays CISAppel GetKeyboardLayoutList
Détection du processus parentexplorer.exe vs cmd.exeComparaison de chaînes de noms de processus
Appel système direct d'APIContournement du hook EDRInstruction syscall + analyse SSN

Analyse automatisée multi-agent (Architecture SentinelHive)

┌─────────────────────────────────────────────────┐
│                  Hive Director                    │
│          (Orchestration + Arbitrage Claude Opus)  │
└──────┬──────┬──────┬──────┬──────┬───────┘
       │      │      │      │      │
   ┌───┘  ┌───┘  ┌───┘  ┌───┘  ┌───┘
   ▼      ▼      ▼      ▼      ▼      ▼
Triage  RE    Behav  Intel  Detect Remed
 Tri    Rétro  Com-   Menace Règles Cor-
 ini-   ingé-  porte- Rensei- YARA  rec-
 tial   nieur  mental gnement Sigma tion
        statique                de

Chaîne d'outils

OutilUtilisationObtention
Ghidra / IDA ProDécompilation approfondieghidra-sre.org
CAPE SandboxBac à sable malwares open sourceGitHub: kevoreilly/CAPEv2
ASD AzulAnalyse automatisée à grande échelleGitHub: ASD
YARAMoteur de règles de correspondance de motifspip install yara-python
SigmaRègles de détection comportementale SIEMGitHub: SigmaHQ/sigma
FLOSSExtraction de chaînes désobfusquéespip install flare-floss
Detect It EasyDétection de packer/compilateurGitHub: horsicq/Detect-It-Easy
pe-sieveScan de mémoire de processusGitHub: hasherezade/pe-sieve
VirusTotal APIScan multi-moteurvirustotal.com
MalwareBazaarBase de données d'échantillons de malwaresbazaar.abuse.ch

Références

  • references/yara-sigma-rules.md — Méthodologie de création YARA + Sigma
  • references/sandbox-orchestration.md — Orchestration et automatisation du bac à sable
  • references/anti-analysis-techniques.md — Détection de 94 techniques anti-analyse
  • ../reverse-engineering/references/re-agent-workflow.md — Règles strictes IAT et verrous des six phases (Issue #65)
  • ../reverse-engineering/anti-analysis.md — Recettes de réponse Agent A–T (contournements anti-débogage/obfuscation)
  • ../reverse-engineering/references/nonpe-format-cookbook.md — Recettes multi-formats non-PE U–AV (scripts/macros/JS/drivers/DLL/Android)
  • ../reverse-engineering/references/ollvm-deobfuscation.md — Flattening/prédicats opaques (H/S)

Auto-vérification de l'achèvement de la tâche (MUST réussir avant de déclarer terminé)

  • Ai-je exécuté chaque étape du flux de travail (et pas seulement lu) ?
  • La vérification MUST de la table d'importation a-t-elle été effectuée et écrite dans l'Evidence (E-imports ou ancre équivalente .NET) ? Les DLL/SYS contiennent-elles E-exports ?
  • Si la réparation IAT a échoué ou si l'échantillon plante après auto-vérification : ai-je enregistré E-iat-repair-fail / E-self-check-crash et basculé vers le dynamique ?
  • Les demandes de refonte sont-elles revenues à l'étape désignée ou au résultat de la négociation préalable convenue ? En cas de blocage, ai-je expliqué + demandé confirmation au lieu de changer d'étape ?
  • Le dynamique a-t-il placé les points d'arrêt dans l'ordre de sécurité TLS→EP→API sensibles→ExitProcess ? La boîte à temps/les combinaisons d'API à haut risque ont-elles été traitées comme des contournements ?
  • Les anti-débogages/obfuscations (A–T) ont-ils été enregistrés dans l'Evidence selon le cookbook anti-analysis ? Une signature invalide n'a-t-elle pas abaissé le niveau de menace par erreur ?
  • Pour les types non-PE comme les scripts/macros/DLL, ai-je enregistré l'Evidence correspondante selon le cookbook U–AV (ex. E-batch-deobf / E-ps-decode / E-vba-pcode / E-dll-*) ?
  • Ai-je utilisé les vrais chemins d'outils basés sur tool-index ?
  • Ai-je produit des preuves reproductibles (commandes/scripts/captures d'écran/rapports) ?
  • Ai-je terminé et renseigné l'élément de la Checklist requis par les RÈGLES ?

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

api-security

Use for authorized security assessment of REST, GraphQL, WebSocket, or SOAP APIs, including discovery, authentication, authorization, rate-limit, and CI/CD testing.

apk-reverse

在 CLI 环境下做 Android APK 逆向时使用。适用于 APK 解包、Java 反编译、smali 修改、重打包、Frida 动态 Hook,以及按需切换到 so/native 分析。优先使用本机已安装的 jadx、apktool、frida、adb、ida-reverse、radare2。

attack-chain

Use for authorized multi-stage attack-path planning and orchestration when a task spans reconnaissance, initial access, privilege escalation, lateral movement, or impact assessment. Route single-stage tasks directly to their specialist skill.

binary-diff

|

binary-ninja-reverse

Use for authorized binary analysis in Binary Ninja, including HLIL/MLIL/LLIL inspection, strings/imports/exports, cross-references, types, patch review, Python API automation, and optional Binary Ninja MCP or localhost HTTP integration.

browser-automation

|

browser-extension-reverse

Use for authorized reverse engineering of browser extensions (Chrome/Firefox) including manifest analysis, background workers, and extension-based credential or traffic logic recovery.

case-review

Reviews a reverse-skill case package for scope readiness, Evidence to Finding to Path traceability, work item coverage, timeline references, and optional artifact hash integrity before report handoff.

cloud-k8s

Use for authorized cloud, container, and Kubernetes security assessment including metadata SSRF, IAM misconfig, container escape paths, and cluster RBAC review.

code-audit

Use for authorized source-code security review and SAST workflows including Semgrep, CodeQL patterns, dangerous API hunting, and fix verification.

ctf-sandbox

Thin PRIMARY for CTF / AWD / 靶场 multi-type orchestration. Hands off to the sidecar CTF-Sandbox-Orchestrator. Use when the user says CTF, AWD, 靶场, or 比赛题 and no more specific pwn/APK/IDA route already won.

database-security

Use for authorized database security assessment covering PostgreSQL/MySQL/MSSQL/Mongo/Redis exposure, authz, UDF/command paths, and misconfiguration review.

diagram-generator

generate, refine, validate, and render diagrams from natural language, notes, code snippets, schemas, tables, or existing diagram source. use for flowcharts, swimlanes, sequence diagrams, state diagrams, er diagrams, class diagrams, architecture/c4-style diagrams, dependency graphs, gantt charts, mind maps, user journeys, sankey-style flows, org charts, network graphs, and other visual models. supports mermaid by default, graphviz dot for complex graph layout, plantuml for uml-heavy engineering diagrams, and svg output when direct markup is more reliable.

digital-forensics

Use for authorized digital forensics including memory dumps, disk timelines, PCAP investigation, artifact triage, and IR evidence preservation.

docs-generator

|

dotnet-reverse

.NET / C# 二进制逆向。当目标是 .NET assembly(PE 头含 CLR、.exe/.dll 托管程序)、C# 编译产物(含 NativeAOT)、红队 Sharp* 工具(Rubeus / SharpHound / SharpHound 等)、.NET 混淆程序(ConfuserEx / SmartAssembly / Babel / Eazfuscator)、.NET loader / info-stealer / 套壳 malware 时使用。优先用 dnSpyEx + de4dot,需要 AI 直接操作时联动 dnSpy MCP。不用于纯 native 二进制(走 reverse-engineering / ida-reverse)。

edr-bypass-re

|

email-security

Use for authorized email security review including phishing analysis, header authentication (SPF/DKIM/DMARC), BEC patterns, and mailbox token abuse research.

firmware-pentest

|

ghidra-reverse

Use for free/open reverse engineering with Ghidra (headless or GUI), including decompile, cross-refs, and optional Ghidra MCP workflows when IDA is unavailable.

Skills associés