Aller au contenu

Détection d’une intrusion système avec des commandes de base de Linux – Homputer Security


Ldfa

Messages recommandés

linuxcmd.jpg?resize=640%2C430

Dans cet billet, nous verrons quelques commandes Linux qui peuvent être utiles à tout administrateur système pour la détection d’activités “louches” sur un système.
Bien que j’utilise un système Ubuntu dans cet article, toutes les commandes utilisées sont disponibles sur toutes les distributions Linux.

Who et w

La commande who détermine les utilisateurs connectés à un système.
Dans l’image suivante, cette commande nous informe que l’utilisateur mdestroy est connecté localement (tty) et l’utilisateur root est connecté à partir de l’adresse 192.168.43.129 via un pseudo-terminal esclave (pts) ce qui représente dans notre cas une connexion ssh.

linuxcmd3.png?resize=665%2C85
Les dates représentent le début de chaque connexion.

La commande w retourne les mêmes infos que who mais avec quelques précisions en plus.

linuxcmd5.png?resize=665%2C108
Ces deux commandes vous aideront à reconnaître très rapidement les logins actifs étrangers à votre système.

Last

La liste des récents logins peut être affichée avec last.
Cette commande peut vous donner très rapidement des indications sur des accès non-autorisés.

linuxcmd6.png?resize=665%2C158

NB: A noter que les connexions via sftp, scp ou le client ssh paramiko ne laissent aucune trace avec les commandes ci-dessus listées.
En effet, who, w et last ne liste que des logins de session shell, ce que ne sont pas sftp, scp et paramiko. Les accès de ces programmes seront toutefois visibles dans le fichier /var/log/auth.log.

Lastb affiche quant à elle les tentatives de connexions erronnées. Cette commande ne peut être exécutée qu’avec le compte root.
Dans l’image suivante, nous apprenons qu’une personne a tenté de se connecter au système à partir de l’adresse 192.168.43.96 avec les comptes root, mdestroy, marty, ahou et akissi.

linuxcmd7.png?resize=665%2C606

History

La commande history fournit une liste des commandes exécutées par l’actuel utilisateur.

linuxcmd1.png?resize=665%2C398

NB:
Pour voir la date précise à laquelle les commandes sont excécutées, ajoutez la ligne suivante au fichier ~/.bashrc de l’utilisteur ciblé:

$ echo 'export HISTTIMEFORMAT="%d/%m/%y %T " ' >> ~/.bashrc
$ source ~/.bashrc
$ history

linuxcmd2.png?resize=665%2C398

Acct

acct est un ensemble d’outils servant à monitorer les activités de tous les utilisateurs sur un système.
L’application n’est pas installée par défaut sur les distributions basées sur Debian.
Vous pouvez l’installez sur votre système comme suit:

# apt-get install acct -y

NB: Sur les systèmes RedHat/Centos, ce package est connu sous le nom psacct.

Deux outils de ce package s’avèrent très précieux.
Le premier est ac. Cet outil détermine le temps passé par chaque utilisateur sur un système.
L’option d de l’outil détermine la durée totale de connexion de tous les utilisateurs selon les jours tandis que l’option p détermine la durée de connexion de chaque personne connectée au système. ac executée avec les options d et p nous permet donc de déterminer la durée de connexion (en heures) de chaque utilisateur par jour.

linuxcmd25.png?resize=665%2C139

L’autre outil interessant du package acct est lastcomm. Cet outil affiche les dernières commandes exécutées sur le système.

linuxcmd8.png?resize=641%2C515

lastcomm utilisée avec une commande montre les dates auquelles la commande été exécutée et les utilisateurs qui l’ont exécutée.

linuxcmd9.png?resize=633%2C257

Lorsqu’exécutée avec un nom d’un utilisateur, lastcomm affiche les commandes exécutées par cet utilisateur.

linuxcmd10.png?resize=584%2C469

Dans l’exemple suivant, nous remarquons que Perl a été exécuté pendant près de 20 minutes par l’utilisateur root.

linuxcmd24.png?resize=665%2C292

Nous découvrons également que ce programme a été exécuté plus d’une fois !

linuxcmd23.png?resize=665%2C157

La découverte de cette activité anormale peut être le début d’une investigation.

Ci-dessous un récapitulatif des fichiers utilisés par les utilités présentées plus haut:

Utilités Fichiers utilisés
who /var/log/utmp
w /var/log/utmp
last /var/log/wtmp
lastcomm /var/log/btmp
history ~/bash_history

Top et ps

La commande top fournit une liste des processus exécutés sur un système en temps réel.
Les processus sont listés selon leur utilisation du CPU.
Si vous constatez qu’un système est lent, c’est le 1er endroit à voir.

linuxcmd11.png?resize=543%2C436

La commande ps est également utilisée pour lister les processus en cours d’exécution sur un système. Exécutée avec les options a, u, x, la commande retourne tous les processus exécutés par tous les utilisateurs (avec leur PID), y compris ceux non rattachés au terminal, et le propriétaire de chacun des processus.

linuxcmd12.png?resize=665%2C660

L’option forest affiche la structure des processus. Cette commande nous donne une idée sur les liens qu’il peut avoir entre certains processus.

linuxcmd13.png?resize=665%2C208

Netstat

Netstat est un outil permettant de voir toutes les ports réseaux utilisés par un système. Cette commande vous aidera à détecter les connexions louches de votre système.

Ci-dessous quelques options de Netstat utiles:

-p affiche le PID des programmes,
-t affiche uniquement les connexions tcp,
-u affiche uniquement les connexions udp,
-l affiche les sockets à l’écoute,
-a affiche les sockets ouverts,
-n affiche les valeurs numériques des ports et des adresses (désactive la résolution des noms).

linuxcmd15.png?resize=665%2C243

Lsof

La commande Lsof (lisOpen Files) liste les différentes ressources utilisées par les processus.
Ces ressources peuvent être des dossiers, des sockets, des pipes, des appareils, etc.
L’option i permet l’affichage de toutes les connexions (ipv4 ou ipv6) en cours et celles qui sont à l’écoute.

linuxcmd16.png?resize=665%2C360

Pour découvrir les ressources utilisées par un processus particulier, utilisez l’option p.

linuxcmd21.png?resize=665%2C265

L’option u permet l’affichage des ressources utilisées par un utilisateur particulier.

Des informations supplémentaires sur les processus sont disponibles à travers leur dossier /proc:

linuxcmd22-1.png?resize=665%2C125

cat -v cmdline détermine la commande qui a été utilisée pour amorcer le processus.

Crontab

Si un système est compromis, il est probable que l’attaquant derrière cette action crée une persistence sur le système. Cette opération peut se faire entre autres via l’utilité de planification de tâche Cron.

Pour consulter les tâches planifiées par un utilisateur particulier, il vous suffit de lancer la commande ci-dessous:

# crontab -u user -l

linuxcmd26.png?resize=507%2C81

Ou la commande suivante pour l’utilisateur en cours:

# crontab -l

Utiliser des outils natifs de Linux pour analyser le comportement d’un système permet un gain de temps énorme. Sachez cependant que ces commandes connaissent certaines limites car il est parfois possible de manipuler leur affichage.

Dans de prochains articles, nous verrons comment utiliser certaines de ces commandes pour analyser “en live” un système compromis.

mdestroy

Afficher l’article complet

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.