UZAN Alexandre
KHALIFA Julien
Avoir un malware basé sur la technique LD_PRELOAD qui permet d’extraire les clés SSH envoyées par les clients à un serveur openSSH.
Le scénario se basera en assumed breach, dans un premier temps avec le plus de droit possible (root sans mitigation), puis dans un second temps, un soin sera apporté sur le travail de portabilité, notamment à travers la réduction des privilèges des comptes (pas d’infection root mais en tant qu’utilisateur).
Une fois l’extraction de clé obtenue, au choix peut être réalisé par le groupe (ou l’étudiant) :
L’empêchement d’ouverture d’un fichier par le malware.
Un travail de furtivité en cachant les connexions ouvertes du malware vis à vis de la commande netstat -latepun.
Un travail d’anti forensic en supprimant des logs, d’abord en local, puis si le temps le permet, en spoofant les requêtes internet envoyées à des hôtes distants.
Il est attendu aussi un début de port knocking du côté du client (malware), permettant après avoir résolu la séquence, d’exécuter des commandes arbitraires.
Dans un même temps il est attendu d’avoir un serveur de commande et contrôle permettant :
D’enregistrer un malware auprès du C2, et donc de savoir qu’un hôte est infecté (en stockant quelques informations permettant une identification de l’hôte infecté).
Une "API" permettant au malware de remonter les clés SSH de l’hôte et de l’utilisateur s’étant fait voler ses clés.
De plus un rapport sur les fonctionnements d’un linker, de LD_PRELOAD, et de comment marche un thread sous Linux, qui aille plus loin que la courte présentation faite en cours.
Pour la partie bonus, cf slides, les idées sont au choix et totalement libres tant qu’elles font développer du code en C et qu’elles sont relativement liées au sujet.
Installs :
sudo apt install libssl-dev
: pour SSLsudo apt install openssl
sudo apt install build-essential
: pour GCC et MAKE
sudo make
Déplacer port_knock.service
: sudo mv port_knock.service /etc/systemd/system/
Renommer "utilisateur" avec le nom du compte de session
Enregistrez et quitte
Recharge et Relance le service
sudo systemctl daemon-reload
sudo systemctl reset-failed port_knock.service
sudo systemctl start port_knock.service
sudo systemctl status port_knock.service