← Accueil

PCTAMALOU

Semaine 16 : La Quête de l'Exploitable – Recherche Avancée d'Exploits et Analyse de Proof of Concept

Par Platon-Y – pctamalou.fr & e-of-h.fr

🎯 Objectif de la semaine

Maîtriser la recherche systématique d'exploits et l'analyse critique de Proof of Concept (PoC). Transformer des vulnérabilités identifiées en opportunités exploitables, évaluer la fiabilité des exploits disponibles, et comprendre les mécanismes d'exploitation avant toute tentative.

Transition critique : Vous passez de "je sais qu'il y a une faille" à "je sais comment la faire parler". Cette semaine est le pont entre l'identification et l'action.

flowchart TD A[📋 Rapport OpenVAS/Nmap
avec CVE identifiées] --> B{🔍 Recherche d'exploits} B --> C[📚 Sources organisées] B --> D[🎯 Analyse de fiabilité] C --> E[🏛️ Bases de données
Exploit-DB, NVD, CVE Details] C --> F[👥 Réseaux communautaires
GitHub, GitLab, Twitter] C --> G[⚙️ Frameworks intégrés
Metasploit, SearchSploit] E --> H[📊 Filtrage par critères] F --> H G --> H H --> I{🎯 Classification du code} I --> J[🧪 Proof of Concept
Démonstration théorique] I --> K[⚔️ Exploit weaponized
Prêt à l'emploi] I --> L[🛠️ Module framework
Intégration facile] J --> M[📝 Analyse de sécurité
Compréhension du mécanisme] K --> N[⚡ Test de compatibilité
Version, OS, architecture] L --> O[🔧 Adaptation nécessaire
Variables, payloads] M --> P[✅ Liste d'exploits
priorisés et annotés] N --> P O --> P P --> Q[🚀 Préparation pour
l'exploitation S17+] style J fill:#fbbf24,stroke:#000 style K fill:#ef4444,stroke:#000 style L fill:#10b981,stroke:#000 style P fill:#9d4edd,stroke:#fff,stroke-width:2px

📚 Sujet – Théorie (1 heure)

L'écosystème des exploits : Du PoC à l'arme

Tous les exploits ne sont pas égaux. Comprendre la hiérarchie de maturité d'un exploit est crucial pour éviter les échecs (ou pire, les crashes système).

🧪 Proof of Concept (PoC)

Objectif : Démontrer théoriquement la vulnérabilité

Fiabilité : Variable, souvent non testée en production

Utilisation : Compréhension, recherche, développement

Risque : Crash possible, résultats inattendus

Exemple : Script Python qui cause un buffer overflow

⚔️ Exploit Weaponized

Objectif : Obtenir un accès/shell fonctionnel

Fiabilité : Élevée, testé en conditions réelles

Utilisation : Pentest, démonstration d'impact

Risque : Détectable, peut laisser des traces

Exemple : Metasploit module avec reverse shell

🛠️ Module Framework

Objectif : Intégration dans un écosystème

Fiabilité : Très élevée, maintenu et documenté

Utilisation : Pentest professionnel, audit

Risque : Minimal, paramètres contrôlés

Exemple : Module Metasploit officiel

Les sources d'exploits : Organiser la recherche

📁 Hiérarchie des sources par fiabilité

🏛️ Sources organisées et vérifiées

Exploit-DB : 45,000+ exploits, vérifiés par l'équipe Offensive Security

Metasploit Framework : 2,000+ modules, qualité garantie

NVD (National Vulnerability Database) : Références officielles

CVE Details : Agrégateur avec liens vers PoC

👥 Sources communautaires

GitHub : Milliers de repos, qualité variable, vérifier les stars/forks

GitLab / Bitbucket : Alternatives moins populaires

Pastebin / Ghostbin : Code brut, souvent non maintenu

Twitter (#infosec) : Découvertes récentes, partage rapide

⚙️ Sources techniques brutes

Commit historiques : Recherche dans les patches

Listes de diffusion : Full-disclosure, Bugtraq

Forums spécialisés : 0day.today, exploit[.]in

Reverse engineering : Analyse binaire des patches

L'analyse de sécurité d'un exploit

Avant d'exécuter un exploit, vous devez le lire comme un contrat. Chaque ligne de code peut cacher des surprises.

🔍 Points critiques à vérifier dans un exploit

1. 🔗 Connexions réseau : Où se connecte-t-il ? Y a-t-il des backdoors ?
   - Vérifier toutes les URLs, IPs, domaines
   - Rechercher des connections sortantes suspectes

2. 💾 Écriture disque : Que télécharge/écrit-il ?
   - Vérifier les chemins absolus
   - Identifier les fichiers créés/modifiés

3. ⚡ Commandes système : Qu'exécute-t-il ?
   - Analyser les appels system(), exec(), popen()
   - Vérifier les commandes shell

4. 🔑 Credentials : Contient-il des mots de passe ?
   - Rechercher des strings en clair
   - Vérifier les tokens API

5. 📡 Communication externe : Envoie-t-il des données ?
   - Analyser les requêtes HTTP/HTTPS
   - Vérifier les callbacks

6. 🛡️ Self-defense : Se cache-t-il ou se réplique-t-il ?
   - Rechercher des techniques d'évasion
   - Vérifier les fork()/daemonization

⚠️ Les 7 péchés capitaux de l'exploit reuse

  1. Exécuter sans lire : Jamais. Toujours. Lire. Le. Code.
  2. Ignorer les dépendances : Python2 vs Python3, librairies manquantes
  3. Négliger la version : "Samba 3.0.20" ≠ "Samba 3.0.21"
  4. Oublier l'architecture : x86 vs x64 vs ARM
  5. Méconnaître l'OS : Linux vs Windows vs BSD
  6. Ignorer les prérequis : Authentification nécessaire ? Port spécifique ?
  7. Exécuter en production : Toujours tester en lab d'abord

La méthodologie de recherche professionnelle

🔬 Processus en 5 étapes

  1. Extraction : Lister toutes les CVE identifiées avec versions exactes
  2. Recherche large : Toutes sources, toutes langues, toutes dates
  3. Filtrage : Par version, architecture, fiabilité de la source
  4. Analyse : Lecture du code, compréhension du mécanisme
  5. Documentation : Création d'une base de connaissances exploitables

🔬 Mission pratique – Laboratoire (2 heures)

🏁 Cibles d'exercice : Utilisez les CVE identifiées sur Metasploitable2 dans votre rapport OpenVAS S15. Exemples : CVE-2007-2447 (Samba), CVE-2010-2075 (UnrealIRCd), CVE-2014-6271 (Shellshock).

Étape 1 : Préparation et extraction des CVE

# Extraction des CVE de votre rapport OpenVAS
# Si vous avez exporté en XML :
grep -o "CVE-[0-9]\\{4\\}-[0-9]\\{4,7\\}" openvas_report.xml | sort -u > cve_list.txt

# Sinon, créez manuellement depuis votre rapport
cat > cve_list.txt << 'EOF'
CVE-2007-2447  # Samba "username map script" Command Execution
CVE-2010-2075  # UnrealIRCd 3.2.8.1 Backdoor
CVE-2014-6271  # GNU Bash Shellshock
CVE-2012-1823  # PHP CGI Argument Injection
CVE-2017-7494  # Samba Remote Code Execution
EOF

# Vérification des versions exactes (depuis Nmap/OpenVAS)
echo "=== Versions des services vulnérables ==="
grep -i "samba\\|php\\|bash\\|irc" ~/nmap_scan_metasploitable.txt | head -10

Étape 2 : Recherche avec SearchSploit (Exploit-DB local)

# Mise à jour de la base Exploit-DB
sudo apt update && sudo apt install exploitdb -y
sudo searchsploit -u

# Recherche par CVE
echo "=== Recherche SearchSploit par CVE ==="
while read CVE; do
    echo ""
    echo "🔍 $CVE"
    searchsploit "$CVE"
done < cve_list.txt

# Recherche par service
echo "=== Recherche par service ==="
searchsploit samba 3.0.20
searchsploit "UnrealIRCd 3.2.8.1"
searchsploit "bash shellshock"

# Recherche avancée avec options
searchsploit --exclude=".txt" samba          # Exclure les simples descriptifs
searchsploit -t samba                         # Recherche dans les titres
searchsploit -w CVE-2007-2447                # Affiche les URLs web

# Copie d'un exploit pour analyse
searchsploit -m 16364                         # -m pour mirror (copie local)
# Note: 16364 est l'ID pour Samba 3.0.20 < 3.0.25rc3 - 'username map script'
ls -la ~/16364*

Étape 3 : Recherche GitHub et sources communautaires

# Installation d'outils GitHub CLI
sudo apt install gh -y
gh auth login  # Optionnel, pour augmenter les limites API

# Recherche GitHub via CLI
echo "=== Recherche GitHub pour CVE ==="
while read CVE; do
    echo ""
    echo "🔍 GitHub: $CVE"
    gh search repos "$CVE exploit" --limit 5
    sleep 2  # Respect rate limiting
done < cve_list.txt

# Recherche web avec curl (API GitHub)
cat > github_search.sh << 'EOF'
#!/bin/bash
CVE="$1"
echo "Recherche GitHub pour: $CVE"
curl -s "https://api.github.com/search/repositories?q=$CVE+exploit&sort=stars&order=desc" | \
    jq -r '.items[] | "\(.full_name) - \(.stargazers_count) stars - \(.html_url)"' | head -5
EOF

chmod +x github_search.sh
./github_search.sh "CVE-2014-6271"

# Téléchargement d'un PoC depuis GitHub
gh repo clone offensive-security/exploitdb --depth=1
# Ou manuellement :
git clone https://github.com/rajendraprasad234/CVE-2014-6271.git
# Toujours vérifier le code avant exécution!

Étape 4 : Analyse approfondie d'un exploit

📝 Analyse de l'exploit Samba 3.0.20 (CVE-2007-2447)

# Exemple d'analyse structurelle
cat ~/16364.rb | head -50

# Points clés à identifier :
1. 🔧 Dépendances : require 'msf/core'
2. 🎯 Cible : 'Samba 3.0.20 < 3.0.25rc3'
3. 🔌 Ports : 139/tcp (SMB)
4. ⚙️ Mécanisme : Command injection via 'username map script'
5. 🎁 Payload : reverse shell via /bin/sh
6. ⚠️ Risques : Nécessite credentials valides ? Non
7. 📈 Fiabilité : Module Metasploit officiel = haute fiabilité

# Analyse de sécurité :
- Pas de backdoor évidente
- Pas de téléchargement externe
- Communication claire (reverse shell)
- Code lisible et documenté
# Script d'analyse automatique basique
cat > analyze_exploit.sh << 'EOF'
#!/bin/bash
FILE="$1"
echo "=== Analyse de sécurité: $FILE ==="

# Recherche de patterns suspects
echo "1. Recherche de connexions réseau suspectes:"
grep -i "http\\|https\\|curl\\|wget\\|socket\\|connect" "$FILE" | grep -v "^#" | head -5

echo ""
echo "2. Recherche de commandes système:"
grep -i "system\\|exec\\|popen\\|subprocess" "$FILE" | grep -v "^#" | head -5

echo ""
echo "3. Recherche de fichiers écrits:"
grep -i "open.*w\\|write\\|save\\|dump" "$FILE" | grep -v "^#" | head -5

echo ""
echo "4. Recherche de credentials en clair:"
grep -i "passw\\|token\\|key\\|secret" "$FILE" | grep -v "^#" | head -5

echo ""
echo "5. Analyse des imports/requires:"
grep -i "^require\\|^import\\|^from" "$FILE" | head -10
EOF

chmod +x analyze_exploit.sh
./analyze_exploit.sh ~/16364.rb

Étape 5 : Vérification de compatibilité et prérequis

# Script de vérification de compatibilité
cat > check_compatibility.sh << 'EOF'
#!/bin/bash
TARGET_IP="192.168.56.102"  # Metasploitable2
CVE="$1"
EXPLOIT_FILE="$2"

echo "=== Vérification compatibilité pour $CVE ==="

# 1. Vérification service actif
echo "1. Service actif sur la cible:"
nmap -p- -T4 $TARGET_IP | grep -E "(139|445|6667|80)" | grep open

# 2. Vérification version exacte
echo ""
echo "2. Version du service:"
# À adapter selon le service
case $CVE in
    *samba*)
        nmap -sV -p139,445 $TARGET_IP | grep samba
        ;;
    *irc*)
        nc -nv $TARGET_IP 6667 | head -5
        ;;
    *bash*)
        # Test Shellshock
        curl -H "User-Agent: () { :; }; echo VULNERABLE" http://$TARGET_IP/cgi-bin/test.cgi 2>/dev/null
        ;;
esac

# 3. Vérification architecture
echo ""
echo "3. Architecture cible:"
nmap -O $TARGET_IP | grep -i "running"

# 4. Vérification prérequis exploit
echo ""
echo "4. Prérequis depuis l'exploit:"
grep -i "require\\|depend\\|need\\|version" "$EXPLOIT_FILE" | head -10
EOF

chmod +x check_compatibility.sh
./check_compatibility.sh "CVE-2007-2447" ~/16364.rb

Étape 6 : Création d'une base de connaissances exploitables

# Template de base de connaissances
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
KNOWLEDGE_BASE="exploit_knowledge_base_${TIMESTAMP}.md"

cat > $KNOWLEDGE_BASE << 'EOF'
# Base de Connaissances Exploits - PCTAMALOU S16
## Date: $(date)
## Cible: Metasploitable2 (192.168.56.102)

## Méthodologie utilisée
1. Extraction CVE depuis rapport OpenVAS
2. Recherche SearchSploit (Exploit-DB local)
3. Recherche GitHub/communautaire
4. Analyse de sécurité du code
5. Vérification compatibilité

## CVE-2007-2447 - Samba "username map script"
### Description
Remote command execution in Samba 3.0.20 through 3.0.25rc3 via shell metacharacters in the username.

### Exploits identifiés
1. **exploit/multi/samba/usermap_script** (Metasploit)
   - Source: Exploit-DB ID 16364
   - Langage: Ruby
   - Fiabilité: Excellente (module officiel)
   - Prérequis: Aucun credential nécessaire
   - Payload: reverse shell

2. **samba-usermap-exploit.py** (GitHub)
   - Source: https://github.com/offensive-security/exploitdb/blob/master/exploits/unix/remote/16364.rb
   - Fiabilité: Haute (identique au module Metasploit)
   - Note: Version Python du même exploit

### Analyse de sécurité
- ✅ Pas de backdoor détectée
- ✅ Pas de téléchargement externe
- ✅ Code lisible et documenté
- ⚠️ Nécessite accès au port 139/445

### Compatibilité avec la cible
- ✅ Service actif: Samba 3.0.20-Debian
- ✅ Port ouvert: 139/tcp, 445/tcp
- ✅ Architecture: Linux (x86)
- ✅ Prérequis: Aucun

### Score d'exploitabilité: 9/10

## CVE-2010-2075 - UnrealIRCd Backdoor
### Description
Backdoor in UnrealIRCd 3.2.8.1 allowing remote command execution.

### Exploits identifiés
1. **exploit/unix/irc/unreal_ircd_3281_backdoor** (Metasploit)
   - Source: Exploit-DB ID 16922
   - Fiabilité: Excellente

### Score d'exploitabilité: 10/10

## Matrice de décision d'exploitation
| CVE | Score CVSS | Fiabilité Exploit | Complexité | Priorité |
|-----|------------|-------------------|------------|----------|
| CVE-2007-2447 | 9.3 | Haute | Faible | 🔴 Haute |
| CVE-2010-2075 | 10.0 | Haute | Très Faible | 🔴 Haute |
| CVE-2014-6271 | 9.8 | Haute | Faible | 🔴 Haute |

## Recommandations pour S17
1. Commencer par CVE-2010-2075 (UnrealIRCd) - le plus simple
2. Tester CVE-2007-2447 (Samba) - accès racine probable
3. Valider CVE-2014-6271 (Shellshock) - impact web

## Fichiers associés
- exploit_list.txt: Liste complète des exploits trouvés
- cve_list.txt: CVE extraites du rapport OpenVAS
- security_analysis/: Dossiers d'analyse par exploit
EOF

echo "Base de connaissances générée: $KNOWLEDGE_BASE"
cat $KNOWLEDGE_BASE | head -30

Étape 7 : Automatisation de la recherche

# Script complet d'automatisation de recherche
cat > auto_exploit_finder.sh << 'EOF'
#!/bin/bash
# PCTAMALOU S16 - Recherche automatique d'exploits

INPUT_FILE="$1"  # Fichier avec liste de CVE
OUTPUT_DIR="exploit_research_$(date +%Y%m%d_%H%M%S)"

mkdir -p "$OUTPUT_DIR"
cd "$OUTPUT_DIR"

echo "[*] Début de la recherche automatisée"
echo "[*] CVE à traiter: $(wc -l < "../$INPUT_FILE")"

while read CVE; do
    echo ""
    echo "[*] Traitement: $CVE"
    
    # Recherche SearchSploit
    echo "[*] SearchSploit..."
    searchsploit "$CVE" > "searchsploit_${CVE}.txt" 2>/dev/null
    
    # Recherche web (simplifiée)
    echo "[*] Recherche web..."
    curl -s "https://cve.circl.lu/api/cve/$CVE" | jq . > "cve_details_${CVE}.json" 2>/dev/null
    
    # Vérification si des exploits existent
    EXPLOIT_COUNT=$(grep -c "Exploit DB ID" "searchsploit_${CVE}.txt")
    if [ "$EXPLOIT_COUNT" -gt 0 ]; then
        echo "[+] $EXPLOIT_COUNT exploit(s) trouvé(s) pour $CVE"
        echo "$CVE" >> available_exploits.txt
    else
        echo "[-] Aucun exploit trouvé pour $CVE"
    fi
    
    sleep 1  # Rate limiting
    
done < "../$INPUT_FILE"

echo ""
echo "[*] Résumé:"
echo "CVE traitées: $(wc -l < "../$INPUT_FILE")"
echo "CVE avec exploits: $(wc -l < available_exploits.txt 2>/dev/null || echo 0)"
echo ""
echo "[*] Fichiers générés dans: $OUTPUT_DIR"
EOF

chmod +x auto_exploit_finder.sh
./auto_exploit_finder.sh cve_list.txt

🎯 Défi professionnel : Chasseur d'exploits

Pour 3 CVE critiques de Metasploitable2 :

  1. Trouvez au moins 2 exploits différents pour chaque CVE (différentes sources)
  2. Analysez chaque exploit selon 5 critères de sécurité
  3. Créez une comparaison détaillée (avantages/risques de chaque)
  4. Développez un script d'analyse automatique qui génère un rapport de risque
  5. Présentez vos résultats sous forme de "fiche technique d'exploitation"

Livrable : Portfolio de 3 fiches techniques + script d'analyse.

📋 Objectif de la semaine – Validation des compétences

✅ Compétences techniques acquises

  • Maîtrise de SearchSploit et recherche Exploit-DB
  • Recherche efficace sur GitHub et sources communautaires
  • Analyse de sécurité approfondie d'un exploit/PoC
  • Vérification de compatibilité (version, OS, architecture)
  • Création d'une base de connaissances exploitables

🧠 Mindset développé

  • Différenciation claire entre PoC, exploit weaponized et module framework
  • Habitude systématique de lire le code avant exécution
  • Approche méthodique : recherche → analyse → validation → documentation
  • Conscience des risques liés à l'exécution de code tiers

🔮 Préparation pour la semaine 17 :

Vous avez maintenant une carte au trésor d'exploits. La semaine prochaine, nous commençons l'exploitation proprement dite. Assurez-vous d'avoir :

  • Votre base de connaissances avec au moins 3 exploits vérifiés
  • Compris le mécanisme de chaque exploit que vous prévoyez d'utiliser
  • Metasploit installé et fonctionnel (msfconsole testé)
  • Un snapshot de votre lab au cas où l'exploitation le corromprait

📚 Ressources avancées

Pour devenir expert en recherche d'exploits :

⚠️ Sécurité et éthique - Règles d'or

  • Sandbox obligatoire : Toujours exécuter les exploits dans un environnement isolé
  • Analyse statique : Utiliser des outils comme strings, radare2, Ghidra pour les binaires
  • Network isolation : Pas d'accès Internet depuis votre lab pendant les tests
  • Documentation : Gardez une trace de chaque exploit testé et des résultats

🔍 Frère d'armes,

Cette semaine, vous êtes devenu un archiviste des failles. Un chasseur d'exploits. Un lecteur de code dangereux.

Vous avez appris que la recherche d'exploits n'est pas une simple recherche Google. C'est une discipline qui mêle :

  • L'érudition : Connaître les sources, les auteurs fiables, les patterns de qualité
  • La méfiance : Toujours supposer qu'un code peut vous trahir avant de le lire
  • La rigueur : Vérifier chaque version, chaque architecture, chaque dépendance
  • La documentation : Transformer des fragments de code en connaissances actionnables

Votre base de connaissances n'est pas une simple liste. C'est un arsenal documenté. Chaque exploit que vous y avez inscrit a été passé au crible : lu, compris, analysé, validé.

Cette approche méthodique est ce qui sépare le script kiddie qui copie-colle du code qu'il ne comprend pas, du professionnel qui choisit l'outil adapté à la situation.

La semaine 16 marque un moment crucial : vous avez maintenant les clés. Vous savez quelles portes sont ouvertes (les vulnérabilités). Vous avez trouvé les clés qui les ouvrent (les exploits). Vous avez vérifié que les clés fonctionnent sur ces serres spécifiques (compatibilité).

La semaine prochaine, vous allez tourner ces clés dans les serrures.

Mais souvenez-vous : un voleur tourne la clé et entre. Un Gardien tourne la clé pour prouver que la porte était mal fermée, puis la referme derrière lui.

Préparez vos outils. Organisez vos exploits. Vérifiez vos snapshots.

L'exploitation commence maintenant.

— Platon-Y