Audit Système : chkrootkit

4 minute de lecture

Mis à jour :

Les menaces informatique ont évolués, à l’époque les petits malins s’amusaient à rependre des vers, détruire des disques, simplement pour démontrer qu’ils étaient capable de le faire.

chkrootkit

chkrootkit pour checkrootkit est un utilitaire écrit en C pour les système Linux et Unix :

Linux 2.0.x, 2.2.x, 2.4.x and 2.6.x,
 FreeBSD 2.2.x, 3.x, 4.x and 5.x, OpenBSD 2.x, 3.x and 4.x., NetBSD
 1.6.x, Solaris 2.5.1, 2.6, 8.0 and 9.0, HP-UX 11, Tru64, BSDI and Mac
 OS X.

Publié sur chkrootkit.org, par nelson@pangeia.com.br et jessen@cert.br

Il va rechercher les signatures pour les rootkit suivants:

01. lrk3, lrk4, lrk5, lrk6 (and variants); 	02. Solaris rootkit; 	03. FreeBSD rootkit;
04. t0rn (and variants); 	05. Ambient's Rootkit (ARK); 	06. Ramen Worm;
07. rh[67]-shaper; 	08. RSHA; 	09. Romanian rootkit;
10. RK17; 	11. Lion Worm; 	12. Adore Worm;
13. LPD Worm; 	14. kenny-rk; 	15. Adore LKM;
16. ShitC Worm; 	17. Omega Worm; 	18. Wormkit Worm;
19. Maniac-RK; 	20. dsc-rootkit; 	21. Ducoci rootkit;
22. x.c Worm; 	23. RST.b trojan; 	24. duarawkz;
25. knark LKM; 	26. Monkit; 	27. Hidrootkit;
28. Bobkit; 	29. Pizdakit; 	30. t0rn v8.0;
31. Showtee; 	32. Optickit; 	33. T.R.K;
34. MithRa's Rootkit; 	35. George; 	36. SucKIT;
37. Scalper; 	38. Slapper A, B, C and D; 	39. OpenBSD rk v1;
40. Illogic rootkit; 	41. SK rootkit. 	42. sebek LKM;
43. Romanian rootkit; 	44. LOC rootkit; 	45. shv4 rootkit;
46. Aquatica rootkit; 	47. ZK rootkit; 	48. 55808.A Worm;
49. TC2 Worm; 	50. Volc rootkit; 	51. Gold2 rootkit;
52. Anonoying rootkit; 	53. Shkit rootkit; 	54. AjaKit rootkit;
55. zaRwT rootkit; 	56. Madalin rootkit; 	57. Fu rootkit;
58. Kenga3 rootkit; 	59. ESRK rootkit; 	60. rootedoor rootkit;
61. Enye LKM; 	62. Lupper.Worm; 	63. shv5;
64. OSX.RSPlug.A; 	65. Linux Rootkit 64Bit; 	66. Operation Windigo;
67. Mumblehard backdoor/botnet; 	68. Linux.Xor.DDoS Malware; 	69. Backdoors.linux.Mokes.a;
70. Linux.Proxy.10

Installation

Soit il faut récupérer l’archive sur le site chkrootkit.org.

Soit cloner le dépot du projet , c’est l’option que j’ai choisi. Je vais cloner dans mon répertoire ~/bin.

cd /bin/
git clone https://github.com/Magentron/chkrootkit.git
Clonage dans 'chkrootkit'...
remote: Counting objects: 67, done.
remote: Total 67 (delta 0), reused 0 (delta 0), pack-reused 67
Dépaquetage des objets: 100% (67/67), fait.

Se déplacer dans le répertoire et prendre les droit su pour compiler.

cd chkrootkit
# make sense
cc -DHAVE_LASTLOG_H -o chklastlog chklastlog.c
cc -DHAVE_LASTLOG_H -o chkwtmp chkwtmp.c
cc -DHAVE_LASTLOG_H   -D_FILE_OFFSET_BITS=64 -o ifpromisc ifpromisc.c
cc  -o chkproc chkproc.c
cc  -o chkdirs chkdirs.c
cc  -o check_wtmpx check_wtmpx.c
cc -static  -o strings-static strings.c
cc  -o chkutmp chkutmp.c

Utilisation

En root lancer la commande ./chkrootkit sans quoi il dit :

>~ ./chkrootkit
./chkrootkit need root privileges

Options

Help

Un menu help indique les options disponible.

# ./chkrootkit --help
Usage: ./chkrootkit [options] [test ...]
Options:
        -h                show this help and exit
        -V                show version information and exit
        -l                show available tests and exit
        -d                debug
        -q                quiet mode
        -x                expert mode
        -r dir            use dir as the root directory
        -p dir1:dir2:dirN path for the external commands used by chkrootkit
        -n                skip NFS mounted dirs

ps ls sniffer

Celle-ci est intéressante

# ./chkrootkit ps ls sniffer
ROOTDIR is `/'
Checking `ps'... not infected
Checking `ls'... not infected
Checking `sniffer'... enp0s20f0u1: PF_PACKET(/sbin/wpa_supplicant, /sbin/dhclient)

Liste des tests

>~ ./chkrootkit -l

./chkrootkit: tests: aliens asp bindshell lkm rexedcs
 sniffer w55808 wted scalper slapper z2 chkutmp OSX_RSPLUG
  amd basename biff chfn chsh cron crontab date du dirname echo
  egrep env find fingerd gpm grep hdparm su ifconfig inetd inetdconf
  identd init killall  ldsopreload login ls lsof mail mingetty
  netstat named passwd pidof pop2 pop3 ps pstree rpcinfo
  rlogind rshd slogin sendmail sshd syslogd tar tcpd tcpdump
  top telnetd timed traceroute vdir w write

Detection

Par exemple

Chkrootkit a trouvé un port infecté ….

Checking `bindshell'... INFECTED PORTS: ( 4000)

Evidement je suis en train de taper l’article et j’ai mis en route un serveur jekyll.

bin

Certaines alertes (comme avec Lynis) n’en sont pas vraiment. De commandes comme adduser sont en fait des scripts ,

Ce qui implique une détection.