Ce projet est composé de plusieurs fichiers permettant d'infiltrer openssh-server afin de capturer les identifiants et de les envoyer à un serveur distant.
Ce fichier est le point d'entrée principal du programme. Il :
- Vérifie si le programme est exécuté en tant que root.
- Installe automatiquement certaines dépendances nécessaires.
- Configure un service systemd (voldavion.service) pour assurer la persistance après redémarrage.
- Injecte un module PAM (pam_malware.so) pour intercepter les identifiants d'authentification SSH.
- Modifie la configuration SSH pour garantir l'utilisation de l'authentification par mot de passe.
- Utilise LD_PRELOAD pour intercepter les entrées de mot de passe.
- Relance SSH avec ces modifications.
- Implémente un module LD_PRELOAD pour intercepter les appels à getpass().
- Implémente un module PAM (Pluggable Authentication Module).
- Capture les identifiants d'authentification SSH (utilisateur, mot de passe, IP) et les enregistre dans un fichier temporaire.
- Exécute client pour envoyer ces identifiants à un serveur distant.
- Lit les informations capturées dans /tmp/pam_credential.log.
- Utilise libcurl pour envoyer ces informations au serveur distant ( Envoie fonctionnel mais le server ne fonctionne pas )
- Vérifie la présence de libcurl et l'installe si nécessaire.
- Implémente un serveur HTTP simple avec libmicrohttpd écoutant sur le port 8080.
- Accepte les requêtes POST et enregistre les identifiants reçus dans received_credentials.log.
- Définit les règles de compilation des différents fichiers (main.c, ldpreload.c, pam_malware.c, client.c, server.c).
- Vérifie et installe les bibliothèques nécessaires (libmicrohttpd-dev, libcurl4-openssl-dev).
- Utilise "make" puis "make run"
- Compilation : Exécuter make dans les répertoires concernés.
- Exécution : Lancer "make run" pour l'installation du service malveillant.
- Capture : Lorsqu'un utilisateur tente de se connecter en SSH, son mot de passe est enregistré.
- Exfiltration : Le programme client envoie les informations au serveur distant.
- Stockage : Le serveur les enregistre dans received_credentials.log.
C'est le programme qui assemble tous les fichiers ".o" après la compilation pour créer un exécutable.
- Statique : Il copie TOUT dans l'exécutable → Gros fichier, mais ça fonctionne partout.
- Dynamique : Il met juste des références → Léger, mais nécessite la présence des fichiers ".so" sur la machine.
Une technique pour dire au programme d'utiliser sa propre bibliothèque.
C'est comme ouvrir plusieurs onglets dans un navigateur, mais dans un programme.
Ils partagent :
- Mémoire (variables globales), fichiers ouverts...
Ils ont leur propre :
- Stack (variables locales), compteur de code.
- Linker : Assembleur de fichiers objets.
- LD_PRELOAD : Remplace des fonctions.
- Threads : Multi-tâches dans un même programme.