Polar Code 🎭

Command Palette

Search for a command to run...

14
Pièce N°14

Le Terrain – Cas Pratiques et Projets

La théorie, c'est de la poussière. L'ombre, c'est du concret. Voici des plans réels, des scripts qui sentent le café froid et la sueur. Des outils que vous allez forger, puis utiliser. Ou qui se retourneront contre vous si vous êtes négligent.


1. Script de Sauvegarde Automatique – archive_noire.sh

Un bon voleur garde toujours une copie. Un bon enquêteur aussi.

#!/usr/bin/env bash
set -euo pipefail

# === CONFIGURATION - À ADAPTER À VOTRE REPAIRE ===
SOURCES=("/home/noir/documents" "/etc/important.conf")
CIBLE_BACKUP="/mnt/safehouse/backups"
RETENTION_JOURS=7
NOM_BACKUP="backup_$(date +%Y%m%d_%H%M%S).tar.gz"
LOG_FILE="/var/log/archive_noire.log"

# === FONCTIONS ===
journaliser() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "$LOG_FILE"
}

nettoyer_vieux_backups() {
    journaliser "Nettoyage des backups vieux de plus de $RETENTION_JOURS jours..."
    find "$CIBLE_BACKUP" -name "backup_*.tar.gz" -mtime +"$RETENTION_JOURS" -delete 2>/dev/null || true
}

verifier_espace() {
    local pourcentage=$(df "$CIBLE_BACKUP" | awk 'NR==2 {print $5}' | sed 's/%//')
    if [[ $pourcentage -gt 90 ]]; then
        journaliser "ALERTE : Espace disque critique ($pourcentage%). Abandon."
        exit 1
    fi
}

# === EXÉCUTION ===
journaliser "=== Début de l'opération Archive Noire ==="

# Vérifications préalables
if [[ ! -d "$CIBLE_BACKUP" ]]; then
    journaliser "ERREUR : Le coffre-fort $CIBLE_BACKUP est inaccessible."
    exit 1
fi

verifier_espace

# Création de l'archive
journaliser "Création de l'archive : $NOM_BACKUP"
if tar -czf "$CIBLE_BACKUP/$NOM_BACKUP" "${SOURCES[@]}" 2>/dev/null; then
    journaliser "SUCCÈS : Archive créée. Taille : $(du -h "$CIBLE_BACKUP/$NOM_BACKUP" | cut -f1)"
else
    journaliser "ÉCHEC : Création de l'archive impossible."
    exit 1
fi

# Rotation des sauvegardes
nettoyer_vieux_backups

journaliser "=== Opération Archive Noire terminée avec succès ==="

Pour le lancer chaque nuit : crontab -e

0 2 * * * /home/noir/scripts/archive_noire.sh

2. Analyse de Logs – traqueur_anomalies.sh

Les murs ont des oreilles. Les logs ont des secrets.

#!/usr/bin/env bash
# Analyse un fichier de log et signale les activités suspectes

FICHIER_LOG="${1:-/var/log/auth.log}"
SEUIL_TENTATIVES=5
ADRESSE_BANNI="192.168.1.100"

echo "[*] Analyse de $FICHIER_LOG"
echo "----------------------------------------"

# 1. Tentatives de connexion SSH échouées
echo "[+] Tentatives SSH échouées (top 10) :"
grep "Failed password" "$FICHIER_LOG" | awk '{print $(NF-3)}' | sort | uniq -c | sort -rn | head -10

# 2. Succès de connexion SSH (potentielle intrusion)
echo -e "\n[+] Connexions SSH réussies récentes :"
grep "Accepted password" "$FICHIER_LOG" | tail -5

# 3. Alerte si une IP dépasse le seuil
echo -e "\n[+] Détection des attaques par force brute :"
while read -r count ip; do
    if [[ $count -gt $SEUIL_TENTATIVES ]]; then
        echo "   ALERTE : $ip a fait $count tentatives échouées."
    fi
done < <(grep "Failed password" "$FICHIER_LOG" | awk '{print $(NF-3)}' | sort | uniq -c)

# 4. Vérification spécifique d'une IP bannie
if grep -q "$ADRESSE_BANNI" "$FICHIER_LOG"; then
    echo -e "\n[!] ACTIVITÉ DÉTECTÉE : L'IP bannie $ADRESSE_BANNI apparaît dans les logs."
fi

Usage : ./traqueur_anomalies.sh /var/log/secure


3. Script d'Installation – mise_en_place.sh

Parfois, il faut préparer le terrain. Automatiquement.

#!/usr/bin/env bash
# Mise en place silencieuse d'un environnement de surveillance

set -euo pipefail

echo "[*] Installation de l'environnement 'Vigie'..."

# Vérification des privilèges
if [[ $EUID -ne 0 ]]; then
   echo "[ERREUR] Ce script doit être exécuté en root." >&2
   exit 1
fi

# Mise à jour et installation des paquets
apt-get update && apt-get install -y \
    htop \
    net-tools \
    curl \
    git \
    python3-venv \
    && echo "[+] Paquets de base installés."

# Création de l'utilisateur dédié
if ! id "vigie" &>/dev/null; then
    useradd -m -s /bin/bash vigie
    echo "vigie:Mot2PasseComplexe!" | chpasswd
    usermod -aG sudo vigie
    echo "[+] Utilisateur 'vigie' créé."
fi

# Configuration du répertoire de travail
VIGIE_HOME="/home/vigie/operation"
mkdir -p "$VIGIE_HOME/logs" "$VIGIE_HOME/scripts"
chown -R vigie:vigie "$VIGIE_HOME"
chmod 750 "$VIGIE_HOME"

# Téléchargement d'un script de surveillance
wget -q -O "$VIGIE_HOME/scripts/surveillance.sh" \
    https://gist.githubusercontent.com/ombre/example/raw/surveillance.sh \
    && chmod +x "$VIGIE_HOME/scripts/surveillance.sh"

# Ajout d'une tâche cron pour l'utilisateur vigie
(crontab -u vigie -l 2>/dev/null; echo "*/5 * * * * $VIGIE_HOME/scripts/surveillance.sh") | crontab -u vigie -

echo "[*] Installation terminée. L'environnement 'Vigie' est opérationnel."
echo "[*] Accès : sudo su - vigie"

4. Surveillance de Dossier – veilleur.sh

Quand il faut savoir si quelqu'un a touché aux preuves.

#!/usr/bin/env bash
# Surveille un dossier et alerte en cas de modification

DOSSIER_A_SURVEILLER="${1:-/home/noir/preuves}"
FICHIER_ETAT="$HOME/.etat_dossier.last"
FICHIER_ALERTE="/tmp/alerte_veilleur.txt"

# Capture l'état actuel (empreinte des fichiers)
capturer_etat() {
    find "$DOSSIER_A_SURVEILLER" -type f -exec sha256sum {} \; | sort > "$FICHIER_ETAT"
}

# Vérifie les changements
verifier_changements() {
    if [[ ! -f "$FICHIER_ETAT" ]]; then
        echo "[INFO] Premier lancement. Capture de l'état..."
        capturer_etat
        return
    fi

    local fichier_temp=$(mktemp)
    find "$DOSSIER_A_SURVEILLER" -type f -exec sha256sum {} \; | sort > "$fichier_temp"

    if diff "$FICHIER_ETAT" "$fichier_temp" &>/dev/null; then
        echo "[$(date '+%H:%M:%S')] Aucun changement."
    else
        echo "[$(date '+%H:%M:%S')] ALERTE ! Modifications détectées dans $DOSSIER_A_SURVEILLER" | tee -a "$FICHIER_ALERTE"
        echo "Différences :" >> "$FICHIER_ALERTE"
        diff "$FICHIER_ETAT" "$fichier_temp" >> "$FICHIER_ALERTE"
        # Mettre à jour l'état pour la prochaine vérification
        mv "$fichier_temp" "$FICHIER_ETAT"
    fi
    rm -f "$fichier_temp"
}

# Boucle de surveillance
echo "[*] Veilleur activé sur : $DOSSIER_A_SURVEILLER"
echo "[*] Appuyez sur Ctrl+C pour arrêter."
while true; do
    verifier_changements
    sleep 30  # Vérifie toutes les 30 secondes
done

5. Menu Interactif en Bash – console_ombre.ps1

Parfois, il faut une interface. Même dans les ténèbres.

#!/usr/bin/env bash
# Menu principal pour les opérations courantes

afficher_menu() {
    clear
    echo "╔═══════════════════════════════════════╗"
    echo "║    CONSOLE OMBRE - Interface Clandestine   ║"
    echo "╠═══════════════════════════════════════╣"
    echo "║ 1. Nettoyer les traces               ║"
    echo "║ 2. Scanner le réseau local           ║"
    echo "║ 3. Vérifier l'intégrité des logs     ║"
    echo "║ 4. Exfiltrer un fichier (chiffré)    ║"
    echo "║ 5. Surveillance active (tail -f)     ║"
    echo "║ 6. Quitter                           ║"
    echo "╚═══════════════════════════════════════╝"
    echo -n "Choix [1-6] : "
}

nettoyer_traces() {
    echo "[*] Lancement du nettoyage..."
    read -p "   Confirmer (o/N) : " -n 1 -r
    if [[ $REPLY =~ ^[Oo]$ ]]; then
        rm -f /tmp/*.tmp ~/.bash_history
        echo "   Nettoyage effectué."
    else
        echo "   Opération annulée."
    fi
    sleep 2
}

scanner_reseau() {
    echo "[*] Scan rapide du réseau local..."
    nmap -sn 192.168.1.0/24 2>/dev/null | grep "Nmap scan report" | awk '{print $5, $6}'
    read -p "Appuyez sur Entrée pour continuer..."
}

quitter() {
    echo "[*] Effacement de l'historique du menu..."
    history -c
    clear
    echo "Console fermée."
    exit 0
}

# Boucle principale
while true; do
    afficher_menu
    read choix
    case $choix in
        1) nettoyer_traces ;;
        2) scanner_reseau ;;
        3) ./traqueur_anomalies.sh ;;
        4) echo "[!] Fonctionnalité non implémentée." ; sleep 1 ;;
        5) echo "[*] Surveillance de /var/log/syslog (Ctrl+C pour arrêter)..." ; tail -f /var/log/syslog ;;
        6) quitter ;;
        *) echo "[!] Choix invalide." ; sleep 1 ;;
    esac
done

Ce sont des plans, des outils. À vous de les forger, de les adapter, de les faire vôtres. L'ombre attend. Le terminal clignote.

Choisissez votre mission.