Software versions#
| Software | Version |
|---|---|
| Kali Linux | 2026.2 |
| IDA Free | 9.3 |
| NetCat | 1.10 |
Reto#
El reto nos da una pequeña descripción acerca de un rootkit, ademas en el ZIP tenemos un archivo con extensión .ko que es la extension de los mismos, el nombre del archivo es diamorphine.ko buscando ese nombre encontramos que es un famoso rootkit que sirve para ocultar directorios y archivos.
Decompiler#
Hay dos funciones importantes en el rootkit original, hacked_kill and hacked_getdents revisando la primera tenemos:
if ( *(_QWORD *)(v12 + 18) != 0x69736F6863797370LL || *((_BYTE *)v5 + v11 + 26) != 115 )
goto LABEL_12;
Lo cual nos muestra que la palabra que están tratando de ocultar es psychosi
Mirando la segunda función tenemos otro cambio con respecto al original:
if ( (_DWORD)si == 46 )
{
if ( !module_hidden )
{
prev = _this_module.list.prev;
next = _this_module.list.next;
v6 = 0;
next->prev = prev;
module_previous = prev;
prev->next = next;
_this_module.list.next = (list_head *)0xDEAD000000000100LL;
_this_module.list.prev = (list_head *)0xDEAD000000000122LL;
module_hidden = 1;
return v6;
}
v10 = module_previous;
v11 = module_previous->next;
v11->prev = &_this_module.list;
_this_module.list.next = v11;
_this_module.list.prev = v10;
module_hidden = 0;
v10->next = &_this_module.list;
return 0;
}
Ya que la señal que deja de ocultar el rootkit es el 46 cuando en la original es la 63.
Solución#
Con esta información ya podemos resolver el reto de la siguiente manera:
$ nc 154.57.164.64 32046
cttyhack: can't open '/dev/ttyS0': No such file or directory
/bin/sh: can't access tty; job control turned off
$ kill -46 0
$ kill -64 0
$ rmmod diamorphine
rmmod diamorphine
$ find / -name *psychosi*
/opt/psychosis
$ ls -la /opt/psychosis
total 304
drwxr-xr-x 2 root root 80 Sep 7 2023 .
drwxr-xr-x 3 root root 60 Sep 7 2023 .
-rw-r--r-- 1 root root 306912 Sep 7 2023 diamorphine.ko
-rw-r--r-- 1 root root 73 Sep 7 2023 flag.txt
$ cat /opt/psychosis/flag.tx
HTB{FLAG}
