Breve analisi del rootkit SuckIT

Breve analisi del rootkit SuckIT

Su un sistema Linux RedHat 7.3 è stato installato il rootkit SuckIT, uno dei più evoluti in quanto agisce direttamente su /dev/kmem e non ha bisogno di un kernel modulare, cancella le proprie tracce dal /proc file system e modifica /sbin/init con una versione trojan.
Di default si installa nella directory /usr/share/locale/sk/.sk12/ che ovviamente non è visibile all'amministratore del sistema violato.

Un lsof, come tutti gli altri comandi di visualizzazione di file e processi, normalmente non ne rileva l'esistenza, ma nella shell remota dell'intrusore il processo è normalmente visibile:


[root@95 .sk12]# lsof | grep sk (dalla shell del rootkit)
sk        5878  root  cwd    DIR        3,6    4096         2 /
sk        5878  root  rtd    DIR        3,6    4096         2 /
sk        5878  root  txt    REG        3,6   29220    211267 /usr/share/locale/sk/.sk12/sk
sk        5878  root    0u   CHR        1,3             33485 /dev/null
sk        5878  root    1u   CHR        1,3             33485 /dev/null
sk        5878  root    2u   CHR        1,3             33485 /dev/null
sk        5878  root    3u   CHR        1,2             33250 /dev/kmem
sk        5878  root    4u   raw                      2791354 00000000:0006->00000000:0000 st=07
sk        5878  root    5u  IPv4    2960357               TCP 95.intranet:32954->95.intranet:32947 (ESTABLISHED)
sk        5878  root    6u   CHR        2,0             33702 /dev/ptyp0

[root@95 .sk12]# ps -adef (evidenziati i processi normalmente nascosti)
root      5040     1  0 11:25 ?        00:00:00 ./sk
root      5878  5040  0 11:32 ?        00:00:00 ./sk
root      5879  5878  0 11:32 ttyp0    00:00:00 sh -i

Fortunatamente l'ultima versione al momento disponibile di chkrootkit si accorge che qualcosa sul sistema è anomalo:

[root@95 chkrootkit-pre-0.36]# ./chkrootkit
ROOTDIR is `/'
Checking `amd'... not found
Checking `basename'... not infected
Checking `biff'... not found
Checking `chfn'... not infected
Checking `chsh'... not infected
Checking `cron'... not infected
Checking `date'... not infected
Checking `du'... not infected
Checking `dirname'... not infected
Checking `echo'... not infected
Checking `egrep'... not infected
Checking `env'... not infected
Checking `find'... not infected
Checking `fingerd'... not found
Checking `gpm'... not infected
Checking `grep'... not infected
Checking `hdparm'... not infected
Checking `su'... not infected
Checking `ifconfig'... not infected
Checking `inetd'... not tested
Checking `inetdconf'... not found
Checking `identd'... not infected
Checking `killall'... not infected
Checking `ldsopreload'... not infected
Checking `login'... not infected
Checking `ls'... not infected
Checking `lsof'... not infected
Checking `mail'... not infected
Checking `mingetty'... not infected
Checking `netstat'... not infected
Checking `named'... not found
Checking `passwd'... not infected
Checking `pidof'... not infected
Checking `pop2'... not found
Checking `pop3'... not found
Checking `ps'... not infected
Checking `pstree'... not infected
Checking `rpcinfo'... not infected
Checking `rlogind'... not found
Checking `rshd'... not found
Checking `slogin'... not infected
Checking `sendmail'... not infected
Checking `sshd'... not infected
Checking `syslogd'... not infected
Checking `tar'... not infected
Checking `tcpd'... not infected
Checking `top'... not infected
Checking `telnetd'... not infected
Checking `timed'... not found
Checking `traceroute'... not infected
Checking `w'... not infected
Checking `write'... not infected
Checking `aliens'... no suspect files
Searching for sniffer's logs, it may take a while... nothing found
Searching for HiDrootkit's default dir... nothing found
Searching for t0rn's default files and dirs... nothing found
Searching for t0rn's v8 defaults... nothing found
Searching for Lion Worm default files and dirs... nothing found
Searching for RSHA's default files and dir... nothing found
Searching for RH-Sharpe's default files... nothing found
Searching for Ambient's rootkit (ark) default files and dirs... nothing found
Searching for suspicious files and dirs, it may take a while...
/usr/lib/perl5/5.6.1/i386-linux/.packlist

Searching for LPD Worm files and dirs... nothing found
Searching for Ramen Worm files and dirs... nothing found
Searching for Maniac files and dirs... nothing found
Searching for RK17 files and dirs... nothing found
Searching for Ducoci rootkit... nothing found
Searching for Adore Worm... nothing found
Searching for ShitC Worm... nothing found
Searching for Omega Worm... nothing found
Searching for Sadmind/IIS Worm... nothing found
Searching for MonKit... nothing found
Searching for Showtee... nothing found
Searching for OpticKit... nothing found
Searching for T.R.K... nothing found
Searching for Mithra... nothing found
Searching for anomalies in shell history files... nothing found
Checking `asp'... not infected
Checking `bindshell'... not infected
Checking `lkm'... You have     3 process hidden for readdir command
You have     3 process hidden for ps command
Warning: Possible LKM Trojan installed
Checking `rexedcs'... not found
Checking `sniffer'...
eth0 is not promisc
Checking `wted'... nothing deleted
Checking `z2'...
nothing deleted

In particolare è lo script che controlla ad uno ad uno tutti i possibili PID (da 1 a 65535) che si accorge che alcune righe di ps e alcune directory (che sono comunque accessibili, se si conosce il nome, ma non vengono visualizzate) in /proc/ vengono nascoste:

[root@95 chkrootkit-pre-0.36]# ./chkproc -v
PID  5040: not in readdir output
PID  5040: not in ps output
PID  5878: not in readdir output
PID  5878: not in ps output
PID  5879: not in readdir output
PID  5879: not in ps output
You have     3 process hidden for readdir command
You have     3 process hidden for ps command

A questo punto anche da una shell normale è possibile visualizzare il contenuto delle rispettive directory in proc, anche se un ls non le visualizza:
cat /proc/5040/cmdline
./sk

Dalla shell dell'intrusore si visualizza sia /sbin/init sia /sbin/initsk12 (questo è l'init originario, che viene rinominato, sostituito con una versione modificata, e nascosto (come tutti i file che finiscono con sk12 (suffisso configurabile in fase di compilazione del rootkit)
-rwxr-xr-x    1 root     root        26920 Jul  5 11:16 init
-rwxr-xr-x    1 root     root        37617 Apr 19 18:35 initlog
-rwxr-xr-x    1 root     root        26920 Jul  5 11:16 initsk12

Un controllo sull'integrità dei file modificati ci rende evidente che il rootkit non altera il checksum md5, rendendo difficle, per tool come Tripwire, l'individuazione dello stesso.
[root@95 chkrootkit-pre-0.36]# md5sum /sbin/init
a44b4fe49763349af054000b8565618a  /sbin/init

[root@95 chkrootkit-pre-0.36]# md5sum /sbin/initsk12
a44b4fe49763349af054000b8565618a  /sbin/initsk12


Privacy Policy