Audit Système : RKhunter

6 minute de lecture

Mis à jour :

Comment faire la chasse au ROOTKIT avec RKhunter ?

Préambule

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.

rk-hunter

rkhunter pour rootkithunter est un ensemble de scripts perl destinnés aux systèmes Linux et Unix

Lien vers le site de rkhunter.

scanner de rootkit, porte dérobée, renifleur et exploit Rootkit Hunter analyse les systèmes pour détecter les rootkits, portes dérobées, renifleurs et exploits connus et inconnus.

Il vérifie :

  • les changements de hachage MD5
  • les fichiers couramment créées par les rootkits
  • les exécutables avec des permissions de fichiers anormaux
  • les chaînes de caractères suspectes dans les modules du noyau
  • les fichiers cachés dans les répertoires système ; et il peut éventuellement effectuer des analyses dans les fichiers. — Utiliser rkhunter seul ne garantit pas que le système ne soit pas compromis. — L’exécution de tests supplémentaires, tels que chkrootkit, est recommandé.

Installation

Soit depuis les dépots de votre système , sous débian c’est la version 1.4.2

  • sudo apt install rkhunter

Il est

Soit en récupérant l’archive sur le site de sourceforge , vous disposerez alors de la dernière version.

Rkhunter va vérifier la présence de certains utilitaire tout à fait classique qui se trouve normalement sur les systèmes linux et Unix, sans quoi l’installation échoue.

cd Téléchargements
tar zxf rkhunter-<version>.tar.gz
cd rkhunter-<version>
./installer.sh --install

Vérifier également que le script soit executable:

  • sudo chmod +x installer.sh

Rkhunter sera installé ici:

  • /usr/local/bin/rkhunter

Sa configuration ici:

  • /usr/local/etc/rkhunter.conf

Et ses scripts ici:

  • /usr/local/lib/rkhunter

Utilisation manuelle

Cela ce fait très simplement en appelant rkhunter.

>~ rkhunter
[sudo] Mot de passe de ordinatous : 
[ Rootkit Hunter version 1.4.6 ]

Rkhunter va alors vérifier:

  • /bin et /sbin
  • les rootkits
  • les malware

Il faudra valider après chaque section et vous retrouverez une synthèse à la fin des tests.

System checks summary
=====================

File properties checks...
    Files checked: 146
    Suspect files: 7

Rootkit checks...
    Rootkits checked : 499
    Possible rootkits: 0

Applications checks...
    All checks skipped

The system checks took: 1 minute and 10 seconds

All results have been written to the log file: /var/log/rkhunter.log

One or more warnings have been found while checking the system.
Please check the log file (/var/log/rkhunter.log)

Automatisation avec un cronjob

Editer un fichier rkhunter.sh sous /etc/cron.daily

# vi /etc/cron.daily/rkhunter.sh

et y mettre ces lignes:

#!/bin/sh
(
/usr/local/bin/rkhunter --versioncheck
/usr/local/bin/rkhunter --update
/usr/local/bin/rkhunter --cronjob --report-warnings-only
) | /bin/mail -s 'rkhunter Daily Run (indiquer le nom du serveur)' votre@email.com

Puis le rendre executable

# chmod 755 /etc/cron.daily/rkhunter.sh

Options utiles

–rwo report warning only

Cette option est pas mal , elle ne renverra que les warning.

>~ rkhunter --rwo
Warning: The command '/usr/sbin/adduser' has been replaced by a script: /usr/sbin/adduser: Perl script text executable
Warning: The command '/usr/sbin/prelink' has been replaced by a script: /usr/sbin/prelink: Bourne-Again shell script, ASCII text executable
Warning: The command '/usr/bin/ldd' has been replaced by a script: /usr/bin/ldd: Bourne-Again shell script, ASCII text executable
Warning: The command '/usr/bin/lwp-request' has been replaced by a script: /usr/bin/lwp-request: Perl script text executable
Warning: The command '/bin/egrep' has been replaced by a script: /bin/egrep: POSIX shell script, ASCII text executable
Warning: The command '/bin/fgrep' has been replaced by a script: /bin/fgrep: POSIX shell script, ASCII text executable
Warning: The command '/bin/which' has been replaced by a script: /bin/which: POSIX shell script, ASCII text executable
Warning: Hidden directory found: /etc/.java


–sk

skip keypress pour s’épargner de taper 3 fois sur entrée…

Comme la plupart des utilitaires linux Unix-like rkhunter dispose d’un menu aide.

>~ rkhunter --help

Usage: rkhunter {--check | --unlock | --update | --versioncheck |
                 --propupd [{filename | directory | package name},...] |
                 --list [{tests | {lang | languages} | rootkits | perl | propfiles}] |
                 --config-check | --version | --help} [options]

Current options are:
         --append-log                  Append to the logfile, do not overwrite
         --bindir <directory>...       Use the specified command directories
     -c, --check                       Check the local system
     -C, --config-check                Check the configuration file(s), then exit
  --cs2, --color-set2                  Use the second color set for output
         --configfile <file>           Use the specified configuration file
         --cronjob                     Run as a cron job
                                       (implies -c, --sk and --nocolors options)
         --dbdir <directory>           Use the specified database directory
         --debug                       Debug mode
                                       (Do not use unless asked to do so)
         --disable <test>[,<test>...]  Disable specific tests
                                       (Default is to disable no tests)
         --display-logfile             Display the logfile at the end
         --enable  <test>[,<test>...]  Enable specific tests
                                       (Default is to enable all tests)
         --hash {MD5 | SHA1 | SHA224 | SHA256 | SHA384 | SHA512 |
                 NONE | <command>}     Use the specified file hash function
                                       (Default is SHA256)
     -h, --help                        Display this help menu, then exit
 --lang, --language <language>         Specify the language to use
                                       (Default is English)
         --list [tests | languages |   List the available test names, languages,
                 rootkits | perl |     rootkit names, perl module status
                 propfiles]            or file properties database, then exit
     -l, --logfile [file]              Write to a logfile
                                       (Default is /var/log/rkhunter.log)
         --noappend-log                Do not append to the logfile, overwrite it
         --nocf                        Do not use the configuration file entries
                                       for disabled tests (only valid with --disable)
         --nocolors                    Use black and white output
         --nolog                       Do not write to a logfile
--nomow, --no-mail-on-warning          Do not send a message if warnings occur
   --ns, --nosummary                   Do not show the summary of check results
 --novl, --no-verbose-logging          No verbose logging
         --pkgmgr {RPM | DPKG | BSD |  Use the specified package manager to obtain
                   BSDng | SOLARIS |   or verify file property values.
                   NONE}               (Default is NONE)
         --propupd [file | directory | Update the entire file properties database,
                    package]...        or just for the specified entries
     -q, --quiet                       Quiet mode (no output at all)
  --rwo, --report-warnings-only        Show only warning messages
   --sk, --skip-keypress               Don't wait for a keypress after each test
         --summary                     Show the summary of system check results
                                       (This is the default)
         --syslog [facility.priority]  Log the check start and finish times to syslog
                                       (Default level is authpriv.notice)
         --tmpdir <directory>          Use the specified temporary directory
         --unlock                      Unlock (remove) the lock file
         --update                      Check for updates to database files
   --vl, --verbose-logging             Use verbose logging (on by default)
     -V, --version                     Display the version number, then exit
         --versioncheck                Check for latest version of program
     -x, --autox                       Automatically detect if X is in use
     -X, --no-autox                    Do not automatically detect if X is in use