From 388ba29f3ac8724cb13f76a6c6860b39a2f1738c Mon Sep 17 00:00:00 2001 From: fiplox Date: Tue, 30 Nov 2021 23:12:02 +0100 Subject: [PATCH] command examples --- README.md | 49 ++++++++++++++++++++++++++++++++++++------------- 1 file changed, 36 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 85864d4..6e532bb 100644 --- a/README.md +++ b/README.md @@ -21,12 +21,13 @@ 2. Canal de communication Dans le hook de l'appel système `openat` on vérifie quel fichier à été ouvert. - Si le fichier est `/dev/null` on retient le `file descriptor` et le `pid` du procès appelant. - Puis, dans le hook de l'appel système `write` on vérifie si le `pid` et le `file - descriptor` correspond à celui que on a retenu, afin de ne pas faire des - vérification inutiles. Si c'est le cas, on compare ce qui est écrit dans le fichier. - Les commandes acceptées sont `root`, `hideme`, `reveal` et `hide$` avec un préfixe `secret`. - Le moyen de communication se fait par l'outil standard `echo`. + Si le fichier est `/dev/null` on retient le `file descriptor` et le `pid` + du procès appelant. Puis, dans le hook de l'appel système `write` on + vérifie si le `pid` et le `file descriptor` correspond à celui que on a + retenu, afin de ne pas faire des vérification inutiles. Si c'est le cas, on + compare ce qui est écrit dans le fichier. Les commandes acceptées sont + `root`, `hideme`, `reveal` et `hide$` avec un préfixe `secret`. Le moyen de + communication se fait par l'outil standard `echo`. 3. Élévation de privilèges @@ -34,22 +35,38 @@ écrit dans `/dev/null`. Puis, on récupère la tâche qui correspond à ce `pid`. À la suite, on change les accréditations de la tâche pour celle du root (`0`). + ```sh + $ echo "secretroot" > /dev/null` + ``` + 4. Cacher LKM - Pour cacher le LKM, on récupère la liste des modules chargées et on supprime le rootkit. + Pour cacher le LKM, on récupère la liste des modules chargées et on + supprime le rootkit. + + ```sh + $ echo "secrethideme" > /dev/null + ``` 5. Révélation de LKM Pour révéler le LKM, on ajoute mon module dans la liste des modules chargées. + ```sh + $ echo "secretreveal" > /dev/null + ``` + 6. Cacher PID - Les _pid_ sont stocké dans la structure `_hidden_pids` qui peut contenir au plus 200 `pid`, - et qui contient le nombre de `pid` cachés. Puis, dans le hook de l'appel - système `write`, le `pid` avec la phrase `secrethide$PID$,` où - **PID** est le `pid` donné, est retenu. Après, dans l'appel système `getdents64` on vérifie - si le dossier dont une tache essaye d'accéder correspond aux `pid`s retenus. Si - c'est le cas, on l'ignore dans listing. + Les *pid* sont stocké dans la structure `_hidden_pids` qui peut contenir au + plus 200 `pid`, et qui contient le nombre de `pid` cachés. Puis, dans le + hook de l'appel système `write`, le `pid` avec la phrase `secrethide$PID$,` + où **PID** est le `pid` donné, est retenu. Après, dans l'appel système + `getdents64` on vérifie si le dossier dont une tache essaye d'accéder + correspond aux `pid`s retenus. Si c'est le cas, on l'ignore dans listing. + ```sh + $ echo "secrethide\$42\$" > /dev/null + ``` 7. Persistance @@ -58,6 +75,9 @@ vrai filesystem et qui contient des LKM avec des drivers. Donc, on crée un `initramfs` fauté avec mon LKM, et on ajoute la ligne de chargement du rootkit dans le script `init`. + ```sh + $ sudo ./persistance.sh + ``` ## Bibliographie @@ -67,3 +87,6 @@ * [Linux hook system call](https://cdmana.com/2021/07/20210731031948859C.html) * [Persistent rootkit](https://yassine.tioual.com/posts/backdoor-initramfs-and-make-your-rootkit-persistent/) * [Hide processes](https://jm33.me/linux-rootkit-for-fun-and-profit-0x02-lkm-hide-filesprocs.html) + +``` +```