Nouveau Livre Blanc : Les Variants de BPFDoor se Cachent à la Vue de Tous
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Rapid7 Labs a identifié sept nouvelles variantes de BPFDoor qui exploitent des filtres de paquets Berkeley au niveau du noyau pour maintenir un accès furtif de portes dérobées dans les environnements télécom. Les nouvelles familles, httpShell et icmpShell, utilisent un tunneling ICMP et HTTP sans état avec des formats de paquets « magiques » et des champs IP dissimulés pour établir un commandement et contrôle avec un minimum de traces visibles. Le rapport explique comment les implants visent à rester presque invisibles grâce au masquage de processus, au nettoyage des descripteurs de fichiers, au timestomping, et aux communications ICMP chiffrées.
Enquête
Les chercheurs ont analysé près de 300 échantillons et extrait de nouveaux traits de code byte BPF, de nouveaux marqueurs de « bytes magiques » et des noms de processus spécifiques aux variantes tels que hpasmlited et cmathreshd. La validation en laboratoire dans Docker a reproduit le tunneling PTY dirigé par ICMP, l’échange de charges utiles chiffrées par RC4, et un comportement de routage où un indicateur -1 renvoie le trafic à l’adresse source du paquet. L’équipe a également découvert une infrastructure de soutien, y compris des domaines se faisant passer pour des services NTP-sur-SSL utilisés pour mélanger le trafic de staging et de contrôle.
Atténuation
Prioriser la télémetrie qui expose les abus proches du noyau : surveiller la création de sockets AF_PACKET, détecter l’attachement de filtres BPF, et chasser les anomalies de protocole liées à ces variantes, y compris la séquence ICMP 1234 et un code ICMP invalide 1. Avertir sur les démons suspects avec des chemins exécutables manquants, des noms de service usurpés, ou des caractéristiques d’exécution incompatibles avec les processus système légitimes. Rapid7 recommande d’exécuter le script de triage rapid7_bpfdoor_check.sh et de mettre à jour les détections YARA/Suricata avec les signatures de bytes magiques nouvellement documentées.
Réponse
Si des indicateurs sont trouvés, isoler le système, arrêter le processus d’implant suspecté, et bloquer les domaines associés et les plages IP. Capturer les artefacts mémoire et disque pour préserver l’état BPF et les preuves d’exécution, puis utiliser rapid7_bpfdoor_check.sh pour identifier les filtres BPF actifs et les artefacts mutex de zéro byte associés. Enfin, actualiser les détections avec les signatures publiées et continuer à surveiller la réapparition des mêmes marqueurs de paquets, noms de processus et comportements d’attachement de filtre.
Flux du Attaque
Détections
Un service DNS dynamique potentiel a été contacté (via dns)
Voir
IOCs (HashSha256) à détecter : Nouveau livre blanc : Les variantes furtives de BPFDoor sont une aiguille qui ressemble à du foin
Voir
Détection des variantes de BPFDoor via des anomalies de processus [Création de processus Linux]
Voir
Détection du paquet magique de BPFDoor et des anomalies ICMP [Pare-feu]
Voir
Exécution de la simulation
Condition préalable : La vérification pré-vol de la télémétrie et de la ligne de base doit être passée.
Narration de l’Attaque & Commandes
- Créer un script Bash malveillant dans le chemin rarement surveillé
/var/run/user/0. - Rendre le script exécutable et ensuite supprimer le fichier tout en le gardant ouvert, entraînant un inode supprimé que le noyau enregistre comme partie de la ligne de commande lorsque le processus continue à s’exécuter.
- Exécuter le descripteur de fichier en suspens, provoquant l’exécution du processus à partir d’un inode supprimé et générant exactement la télémétrie que la règle Sigma recherche.
- Vérifier que la ligne de commande du processus dans les journaux d’audit contient la chaîne « inode supprimé », satisfaisant
sélection3. - Éviter les chaînes de costume masquées exclues (
hpasmlited,cmathreshd) pour garantir que la règle se déclenche.
Script de Test de Régression
#!/usr/bin/env bash
# -------------------------------------------------
# Test d'exécution BPFDoor‑style à partir d'un inode supprimé
# -------------------------------------------------
# 1. Préparer une charge utile malveillante (inoffensive)
PAYLOAD="/var/run/user/0/malicious.sh"
echo -e "#!/usr/bin/env bashnsleep 60" > "$PAYLOAD"
chmod +x "$PAYLOAD"
# 2. Ouvrir le descripteur de fichier (garder le fichier ouvert)
exec 3<"$PAYLOAD"
# 3. Supprimer le fichier du système de fichiers – l'inode reste ouvert via FD 3
rm -f "$PAYLOAD"
# 4. Exécuter le script via son descripteur de fichier en suspens.
# Le lien symbolique /proc/self/fd/3 pointe vers l'inode maintenant supprimé.
bash /proc/self/fd/3 &
# 5. Donner un moment au processus pour démarrer et être enregistré
sleep 5
# 6. Nettoyage : fermer le descripteur de fichier
exec 3<&-
echo "Simulation terminée – vérifier les alertes dans SIEM."
Commandes de Nettoyage
#!/usr/bin/env bash
# -------------------------------------------------
# Nettoyage après la simulation BPFDoor
# -------------------------------------------------
# Terminer tous les processus sleep restants démarrés par le script
pkill -f "sleep 60"
# S'assurer qu'il n'y a pas de fichiers restants dans le répertoire cible
rm -f /var/run/user/0/malicious.sh
echo "Nettoyage terminé."
Fin du Rapport