command examples

This commit is contained in:
fiplox 2021-11-30 23:12:02 +01:00
parent 0d380d16dd
commit 388ba29f3a
1 changed files with 36 additions and 13 deletions

View File

@ -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$,`
**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$,`
**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)
```
```