Agent IA Red Team Local
L’automatisation des audits de sécuriter (pentest) a toujours été le Graal des équipes Red Team et SecOps. Si les scanners de vulnérabilités (comme Nmap ou Nuclei) sont extrêmement puissants, l’analyse de leurs résultats bruts prend un temps fou.
C’est ici qu’intervient l’IA. Mais attention : il est hors de question d’envoyer les résultats de scan de votre infrastructure interne à une API Cloud comme ChatGPT. C’est une faille de sécuriter majeure.
La solution ? Utiliser un Small Language Model (SLM) local couplé à vos outils de hacking via le protocole MCP. Voici comment construire votre propre assistant de pentest 100% privé et Open Source.
La Stack du Hacker Open Source
Pour construire notre agent, nous allons orchestrer plusieurs outils reconnus de la communauté cybersécurité :
- Ollama (Llama 3 8B) : Le moteur d’intelligence artificielle, tournant en local sur votre machine.
- Nmap : Le scanner de ports et de réseau de référence [1]. (Voir notre article dédié : Tutoriel Nmap).
- Nuclei : Un scanner de vulnérabilités rapide et basé sur des templates YAML (par ProjectDiscovery) [2]. (Voir notre article dédié : Découverte de Nuclei).
- LangChain / Python : Pour lier l’IA aux résultats des scanners.
1. Installation de l’environnement
Assurez-vous d’avoir installé Ollama et téléchargé un modèle performant en code et analyse (Llama 3 est un bon choix pour cet usage).
# Lancement du LLM en local
ollama run llama3
# Installation des wrappers Python pour parser les résultats
pip install python-nmap langchain langchain-community
Note : Les outils réseau nmap et nuclei doivent être installés sur votre OS (sudo apt install nmap et téléchargement du binaire pour Nuclei).
2. Le script de l’Agent Red Team
L’objectif de ce script Python est simple : lancer un scan Nmap sur une cible, récupérer la sortie brute (XML/JSON), et demander à notre IA locale d’analyser la surface d’attaque et de proposer les prochaines étapes.
import nmap
from langchain_community.llms import Ollama
from langchain.prompts import PromptTemplate
# 1. Configuration de l'analyse réseau
cible = "192.168.1.50" # Remplacez par votre machine de test locale
scanner = nmap.PortScanner()
print(f"[*] Lancement du scan Nmap sur {cible}...")
# Scan agressif des versions de service (-sV) et vulnérabilités de base
resultat_brut = scanner.scan(cible, '22-443', '-sV')
# On extrait les données pertinentes pour ne pas surcharger le modèle
rapport_scan = ""
for host in scanner.all_hosts():
for proto in scanner[host].all_protocols():
lport = scanner[host][proto].keys()
for port in lport:
state = scanner[host][proto][port]['state']
service = scanner[host][proto][port]['name']
version = scanner[host][proto][port]['version']
rapport_scan += f"Port {port}/{proto} : {state} - Service: {service} {version}\n"
# 2. Configuration de l'Agent IA (Local)
llm = Ollama(model="llama3")
# Prompt d'expertise en cybersécurité
template = """
Tu es un expert en cybersécurité offensive (Red Team).
Voici le résultat brut d'un scan Nmap sur une machine cible :
{scan_data}
Analyse ces résultats. Identifie les services obsolètes ou mal configurés.
Quels sont les vecteurs d'attaque potentiels (ex: CVE connues) ?
Propose-moi 3 commandes (Nmap scripts ou Nuclei) pour pousser l'investigation plus loin.
Réponds de manière concise et structurée.
"""
prompt = PromptTemplate(input_variables=["scan_data"], template=template)
chain = prompt | llm
# 3. Exécution et Analyse
print("\n[*] Analyse de la surface d'attaque par l'IA...")
analyse_ia = chain.invoke({"scan_data": rapport_scan})
print("\n--- RAPPORT DE L'AGENT RED TEAM ---")
print(analyse_ia)
Cas d’usage avancés et Automatisation
Ce script n’est que la première brique. Avec des frameworks de type “Agentic” (comme CrewAI ou AutoGen), vous pouvez aller plus loin :
- Orchestration d’outils (MCP) : L’agent lit le rapport Nmap (comme ci-dessus), repère un serveur web vulnérable, et décide de lui-même de lancer un scan
nuclei -u http://192.168.1.50pour confirmer la CVE. - Analyse de logs (Blue Team) : Brancher un SLM local sur les logs de votre pare-feu (ex: Fail2ban ou Azure Monitor) pour repérer les patterns d’attaques complexes qui échappent aux règles classiques. (Voir notre article : Bonnes pratiques Cloud)
Conclusion
L’intégration de l’IA en pentest est inévitable, mais cracher ses logs internes vers une API publique est un suicide OPSEC. En hébergeant un SLM comme Llama 3 via Ollama, vous gardez 100% de la confidentialité tout en automatisant la phase d’analyse de vos scans Nmap et Nuclei. Au final, l’IA ne remplace pas l’ingénieur de sécurité, elle lui nettoie juste le terrain pour qu’il se concentre sur l’exploitation réelle.
Sources
- Nmap - Network Mapper (Site Officiel)
- ProjectDiscovery Nuclei (GitHub)
- Ollama - Exécuter des LLM localement (GitHub)
- LangChain & Nmap Integration Guide (Documentation Python)
Si vous voulez plus d’information sur l’infrastructure vous pouvez voir l’ repo à ce sujet : https://github.com/ravindrajob/InfraAtHome



