Les rootkits sont des programmes malveillants installés au sein même de l'OS. Ils sont difficiles à détecter et à supprimer. Quelques outils permettent de s'en prémunir. Cet article aborde les outils anti rootkits sous forme de tutoriel.. Nous étudierons:
Sauvegardons /bin/login
La détection de signature est le comportement le plus connu des antivirus. Deux outils Linux permettent de le faire pour les rootkits: chkrootkit, rkhunter
installation:
Pour connaître la liste des processus non masqués:
22) Maurice Libes - club Linux Nord Pas de Calais – Utiliser Linux... oui mais pas les yeux fermés - http://clx.anet.fr/spip/article.php3?id_article=146
23) tutoriel tripwire - http://remoteadmin.org.uk/tutorials/42-linux/56-tripwire-ubuntu
24) code source de DR Rootkit - http://www.immunityinc.com/resources-freesoftware.shtml
25) HSC aide - http://www.hsc.fr/ressources/breves/aide.html.fr
- le contrôle d'intégrité,
- la détection de signatures,
- la recherche d'objets cachés.
Contrôle d'intégrité
Le contrôle d'intégrité consiste à créer une base de signatures des fichiers systèmes sains. Le contrôleur compare le système à sa base. Vous êtes avertis lorsque des modifications y sont apportées. Pour cela, RAID et tripwire peuvent être utilisés conjointement.tripwire
Installation
Considérons que notre client linux est sain.client_linux$ sudo apt-get install tripwireLors de l'installation, nous définissons la clé du site et la clé locale de la base. Choisissons pour ces deux mots de passe :
utilisateurÉditons le fichier /etc/tripwire/twcfg.txt
client_linux$ sudo gedit /etc/tripwire/twcfg.txtEditons le fichier /etc/tripwire/twpol.txt
ROOT =/usr/sbin
POLFILE =/etc/tripwire/tw.pol
DBFILE =/var/lib/tripwire/$(HOSTNAME).twd
REPORTFILE =/var/lib/tripwire/report/$(HOSTNAME)-$(DATE).twr
SITEKEYFILE =/etc/tripwire/site.key
LOCALKEYFILE =/etc/tripwire/$(HOSTNAME)-local.key
EDITOR =/usr/bin/vi
LATEPROMPTING =false
LOOSEDIRECTORYCHECKING =false
MAILNOVIOLATIONS =true
EMAILREPORTLEVEL =3
REPORTLEVEL =3
SYSLOGREPORTING =true
MAILMETHOD =SMTP
SMTPHOST =localhost
SMTPPORT =25
client_linux$ gedit /etc/tripwire/twpol.txtCes deux fichiers permettent de configurer tripwire. Après avoir modifié la politique d'utilisation:
#
# Standard Debian Tripwire configuration
#
#
# This configuration covers the contents of all 'Essential: yes'
# packages along with any packages necessary for access to an internet
# or system availability, e.g. name services, mail services, PCMCIA
# support, RAID support, and backup/restore support.
(…)
client_linux$ cd /etc/tripwireSauvegardons les fichiers .txt du répertoire /etc/tripwire sur un support amovible puis supprimons les (nous utilisons ici l'outil wipe).
client_linux /etc/tripwire$ sudo twadmin --create-polfile --cfgfile ./tw.cfg --site-keyfile ./site.key ./twpol.txt
Please enter your site passphrase:
Wrote policy file: /etc/tripwire/tw.pol
client_linux$ sudo apt-get install wipeLes fichiers tw.cfg et tw.pol sont les versions chiffrées et signées de ces fichiers. Modifions leurs droits (root):
client_linux$ cp /etc/tripwire/*.txt /mnt/mon_support_amovible/tripwire
client_linux$ sudo wipe -fqr /etc/tripwire/*.txt
client_linux$ sudo chmod 0600 tw.cfg tw.pol
initialisation de la base
client_linux$ sudo tripwire --init --cfgfile /etc/tripwire/tw.cfg --polfile /etc/tripwire/tw.pol --site-keyfile /etc/tripwire/site.key --local-keyfile /etc/tripwire/HOSTNAME-local.key
Please enter your local passphrase:
Parsing policy file: /etc/tripwire/tw.pol
Generating the database...
*** Processing Unix File System ***
### Warning: File system error.
(...)
### Filename: /proc/13501/task/13501/fdinfo/4
### Aucun fichier ou dossier de ce type
### Continuing...
The object: "/proc/fs/vmblock/mountPoint" is on a different file system...ignoring.
The object: "/proc/sys/fs/binfmt_misc" is on a different file system...ignoring.
Wrote database file: /var/lib/tripwire/PK67.twd
The database was successfully generated.
Vérification de l'intégrité des fichiers
client_linux$ sudo tripwire –check
AIDE
installation de aide
Passons en root:client_linux$ sudo passwdinstallons aide
client_linux$ su -
client_linux# apt-get install aide
initialisation de la base
initialisons la base (cela prend un certain temps)client_linux# touch /var/lib/aide/aide.dbsauvegardons la base et le fichier aide.conf sur un media externe
client_linux# aideinit
Overwrite existing /var/lib/aide/aide.db.new [Yn]? Y
Running aide --init...
lstat() failed for /home/utilisateur/.gvfs:Permission denied
AIDE, version 0.13.1
### AIDE database at /var/lib/aide/aide.db.new initialized.
Overwrite /var/lib/aide/aide.db [yN]? Y
client_linux# cp /var/lib/aide.db /mnt/mon_support_amovible/aide
client_linux# cp /etc/aide/aide.conf /mnt/mon_support_amovible/aide
vérification de l'intégrité des fichiers
Nous utilisons la base que nous avions sauvegardée sur le support amovible:client_linux# cp /mnt/mon_support_amovible/aide/aide.db /var/lib/aide/aide.db
client_linux# cp /mnt/mon_support_amovible/aide/aide.conf /etc/aide/aide.conf
client_linux# aide --check
mise à jour de la base
Nous mettons à jour la base puis la sauvegardons à nouveau.client_linux# aide –update
client_linux# cp /mnt/mon_support_amovible/aide/aide.db /var/lib/aide/aide.db
client_linux# cp /mnt/mon_support_amovible/aide/aide.conf /etc/aide/aide.conf
simulation de la modification d'un fichier systeme
Nous allons simuler le comportement d'un rootkit en modifiant le fichier /bin/login:Sauvegardons /bin/login
client_linux$ sudo mkdir /bin/backupModifions la date de création de /bin/backup/login avec la date de /bin/login:
[sudo] password for utilisateur:
client_linux$ sudo cp /bin/login /bin/backup/login
client_linux$ sudo touch -r /bin/login /bin/backup/loginCréons un nouveau fichier ./login:
client_linux$ ls -F --full-time /bin/backup/login
-rwxr-xr-x 1 root root 43352 2009-07-31 15:55:36.000000000 +0200 /bin/backup/login*
client_linux$ echo "deleted" > ./loginRemplacons /bin/login par ./login et modifions sa date de création:
client_linux$ sudo cp ./login /bin/loginA présent voyons si tripwire détecte la modification:
client_linux$ ls -F --full-time /bin/login
-rwxr-xr-x 1 root root 8 2010-03-18 17:06:06.291331679 +0100 /bin/login*
client_linux$ sudo touch -r /bin/backup/login /bin/login
client_linux$ ls -F --full-time /bin/login
-rwxr-xr-x 1 root root 8 2009-07-31 15:55:36.000000000 +0200 /bin/login*
client_linux$ sudo tripwire –check > ./result.logEt le résultat obtenu:
client_linux$ gedit ./result.logTripwire a bien retrouvé la modification.
(…)
Rule Name: Root file-system executables (/bin)
Severity Level: 100
-------------------------------------------------------------------------------
Added:
"/bin/backup"
"/bin/backup/login"
Modified:
"/bin"
"/bin/login"
détection de signatures
La détection de signature est le comportement le plus connu des antivirus. Deux outils Linux permettent de le faire pour les rootkits: chkrootkit, rkhunter
chkrootkit
Installation:client_linux$ sudo apt-get install chkrootkitutilisation:
client_linux$ sudo chkrootkit
rkhunter
Installation:client_linux$sudo apt-get install rkhunterutilisation:
client_linux$ sudo rkhunter --update
client_linux$ sudo rkhunter -c –pkgmgr DPKG
recherche d'objets cachés
Un outil permet de rechercher les processus cachés sous linux: unhideinstallation:
client_linux$ sudo apt-get install unhideutilisation:
client_linux$ unhide proc
Unhide 20080519
yjesus@security-projects.com
[*]Searching for Hidden processes through /proc scanning
client_linux$ unhide sys
Unhide 20080519
yjesus@security-projects.com
[*]Searching for Hidden processes through getpriority() scanning
[*]Searching for Hidden processes through getpgid() scanning
[*]Searching for Hidden processes through getsid() scanning
[*]Searching for Hidden processes through sched_getaffinity() scanning
[*]Searching for Hidden processes through sched_getparam() scanning
[*]Searching for Hidden processes through sched_getscheduler() scanning
[*]Searching for Hidden processes through sched_rr_get_interval() scanning
[*]Searching for Hidden processes through sysinfo() scanning
client_linux$ unhide brute
Unhide 20080519
yjesus@security-projects.com
[*]Starting scanning using brute force against PIDS
Pour connaître la liste des processus non masqués:
client_linux$ ps -e -o"%p %P %U %c"
PID PPID USER COMMAND
1 0 root init
(...)
références
21) Wikipedia - rootkits - http://fr.wikipedia.org/wiki/Rootkit22) Maurice Libes - club Linux Nord Pas de Calais – Utiliser Linux... oui mais pas les yeux fermés - http://clx.anet.fr/spip/article.php3?id_article=146
23) tutoriel tripwire - http://remoteadmin.org.uk/tutorials/42-linux/56-tripwire-ubuntu
24) code source de DR Rootkit - http://www.immunityinc.com/resources-freesoftware.shtml
25) HSC aide - http://www.hsc.fr/ressources/breves/aide.html.fr
Aucun commentaire:
Enregistrer un commentaire