Introduction
La surface d’incident fait référence aux points d’entré du système.
Il y a une différence entre Surface d’Attaque et une Surface d’Incident.
Surface d’Attaque :
- Ports ouverts
- Services de course
- Exécution de logiciels ou d’applications présentant des vulnérabilités
- Communication réseau
Face à la surface d’attaque, le but est de la minimiser :
- Identifier et corriger les vulnérabilités
- Minimiser l’utilisation de services indésirables
- Vérifiez les interfaces avec lesquelles l’utilisateur interagit
- Minimiser les services, applications, ports, etc. exposés publiquement
Surface d’Incident désigne elle, tous les domaines de système impliqué dans la détection, la gestion et la réponse à un incident de sécurité.
Exemple de Surface d’Incident :
- Journaux système
- auth.log, syslog, krnl.log, etc
- Trafic réseau
- Processus en cours d’exécution
- Services de course
- L’intégrité des fichiers et des processus
Comprendre la surface de l’incident est essentiel pour répondre efficacement à une attaque en cours, atténuer les dommages, récupérer les systèmes affectés et appliquer les leçons apprises pour prévenir de futurs incidents.
Processus et Communication Réseau
Les processus et la communication réseau sont essentiels à tout système d’exploitation lors des enquêtes sur les incidents. La surveillance et l’analyse des processus, notamment ceux liés à la communication réseau, peuvent contribuer à identifier et à résoudre les incidents de sécurité. Les processus en cours d’exécution sont un élément clé de la surface d’incident Linux , car ils peuvent constituer une source potentielle de preuves d’une attaque.
Analyse d’un processus simple
Pour commencer on compile le processus qui est un simple .c
|
|
Une fois la notre binaire lancé, nous ppouvons ouvrir un nouveau terminal et voir les processus en cours d’exécution avec la commande ps aux:

a: Affiche les processus pour tout les utilisateursu: Affiche le format orienté utilisateur (inclut l’utilisateur et l’heure de début)x: Inclut les processus non attachés à un terminal
La sortie de cette commande nous donne ces informations : Shows ps aux output
La sortie fournit les informations suivantes :
- UTILISATEUR : L’utilisateur qui possède le processus.
- PID : ID du processus.
- %CPU : pourcentage d’utilisation du processeur.
- %MEM : Pourcentage d’utilisation de la mémoire.
- VSZ : Taille de la mémoire virtuelle.
- RSS : Resident Set Size (mémoire actuellement utilisée).
- TTY : Terminal associé au processus.
- STAT : État du processus (par exemple, R pour exécution, S pour veille, Z pour zombie).
- START : Heure de début du processus.
- COMMANDE : Commande qui a démarré le processus
Nous pouvons lier cette commande avec un grep pour avoir un résultat précis.
Avec le PID nous pouvons faire une recherche plus appronfondie, comme les ressources qu’utilse notre binaire. Nous allons faire ça avec la commande lsof.
|
|

Analyse d’un processus avec communication réseau
Dans la plupart des scénarios, les processus communicant avec un IP externe mérites d’être examinés. Pour expliquer comment ça se passe nous allons exécuter un processus appelé netcom.
|
|
Donc nous voyons bien la ligne concernant notre binaire.
Il possède le PID 2130, mais nous allons d’abord voir si une connexion vers l’extérieur à lieu avec la commande suivante :
|
|

lsof: List Open Files, affiche les infos sur les fichiers ouvert par les processusi: affiche les infos sur les connexions réseau, y compris les socketsP: affiche les ports utilisésn: transforme les nom DNS en IP
Maintenant que nous savons qu’il y a une connexion suspecte, nous allons utiliser l’outil osqueryi :
|
|

Voici quand il est important d’investiguer :
- Un processus exécuté à partir d’un répertoire tmp (le contexte est important).
- Un processus parent-enfant suspect.
- Processus avec une connexion réseau suspecte.
- Processus orphelin. Tous les processus orphelins ne sont pas suspects, mais ceux qui ne sont associés à aucun processus parent après exécution méritent d’être examinés.
- Processus suspects exécutés via une tâche cron .
- Processus ou binaires liés au système exécutés à partir du répertoire tmp ou des répertoires utilisateur.
Persistance
La persistance désigne généralement les techniques utilisées par les adversaires pour maintenir l’accès à un système compromis après l’exploitation initiale. Pour comprendre comment différents incidents sont identifiés à différents points du poste Linux , nous commencerons par exécuter l’attaque, puis examinerons où et comment les empreintes d’attaque se reflètent.
Création de compte
Pour avoir une persistance sur un Endpoint Linux généralement les attaquants créer un utilisateur. Voici les commandes que l’attaquant va utiliser :
|
|
Pour analyser ces traces, nous allons examiner les logs du système. Pour nous rendre compte des différents logs que nous avons à notre disposition, nous pouvons nous rendre dans : /var/log :
|
|
Dans ce cas nous pouvons regarder dans le fichier auth.log :
|
|
Dans l’output de la commande nous voir la création de l’utilisateur en détail.
Le fichier /etc/passwdpeut également nous intéresser, car nous verrons tout les utilisateurs présent sur la machine :
|
|
Dans cet output, nous pouvons voir ces détail :
- Nom d’utilisateur.
- L’espace réservé au mot de passe est représenté par x ou *, indiquant que le mot de passe est stocké dans le fichier /etc/shadow.
- ID utilisateur attribué à l’utilisateur
- ID de groupe attribué à l’utilisateur.
- Répertoire personnel de l’utilisateur.
- Chemin vers le shell par défaut de l’utilisateur.
Cron job
Cron est un planificateur de tâches basé sur le temps. Il va nous permettre d’effectuer des tâches sans que nous intervenons sur le système (commandes, exécution de script …).
La commande crontab -e nous permet d’ajouter une tache cron, mais aussi de voir les tâches qui s’exécute automatiquement.
|
|
Ici, à chaque redémarrage, le script script.sh est lancé.
Nous pouvons voir quel utilisateur à des tâches cron au chemin suivant : /var/spool/cron/crontabs/.
Services
C’est une autre méthode qui permet d’assurer la persistance, tout comme la cron task ci dessus, les services vont nous permettent. La tâche s’exécutera en arrière plan et à chaque démarrage de la machine.
Pour analyser un service qui nous paraît suspect nous pouvons nous rendre dans /etc/systemd/system/<service qui nous paraît suspect>.

Ici le service benign.service est suspect :
pas d’utilisateur, pas de groupe, lancement dans le /tmp tout paraît suspect.
Footprint sur le disque
Des empreintes sur le système seront présentes, les plus évidente seront :
/etc/passwd: ce fichier contiendra des informations sur les comptes utilisateurs/etc/shadow: il contiendra les mot de passe hachés des comptes/etc/group: définit les groupes des utilisateurs/etc/sudoers: configure les autorisations sudo
Enquête fictive sur un paquet malveillant
- Création du paquet
1.1) Création des répertoires
1.2) Création du fichier de contrôle
1 2 3mkdir malicious-packages cd malicious-packages mkdir DEBIAN1.3) Ajout du script1 2 3 4 5 6 7 8 9nano control Package: malicious-package Version: 1.0 Section: base Priority: optional Architecture: all Maintainer: attacker@test.com Description: This is a malicious Package1 2 3 4 5 6 7 8nano postint #!/bin/bash # Malicious post-installation script # It will run this script after installation # Print a suspicious message - for demonstration echo "something suspicious" - Rendre le script exécutable
|
|
- Construire le paquet
|
|
- Installation du paquet
|
|
- Examen des log d’installation
|
|
Logs Linux
-
Syslog :
- Emplacement:
/var/log/syslog - Ceci est utile pour identifier les événements, erreurs et avertissements à l’échelle du système. Cela peut fournir des informations sur les problèmes liés aux composants ou services du système.
- Il contient des messages système généraux, notamment des messages du noyau, des services système et des journaux d’application.
- Ce fichier journal est utile pour identifier les événements, les erreurs et les avertissements à l’échelle du système.
- Il peut fournir des informations sur les problèmes liés aux composants ou aux services du système.
- Emplacement:
-
Messages :
- Emplacement:
/var/log/messages - Similaire à
syslog, ce fichier comprend les messages système et les journaux du noyau. - Utile pour diagnostiquer les problèmes du système et suivre l’activité du système.
- La découverte d’entrées inhabituelles liées à des erreurs matérielles ou de noyau peut signaler une tentative de falsification des composants du système.
- Par exemple, des messages répétés de panique du noyau pourraient indiquer une attaque par déni de service ciblant la stabilité du système.
- Emplacement:
-
Authentification :
- Emplacement:
/var/log/auth.log - Ce fichier enregistre les tentatives d’authentification, y compris les tentatives de connexion réussies et échouées.
- Il s’agit d’un fichier journal important pour détecter les tentatives d’accès non autorisées et les attaques par force brute.
- Par exemple, la détection de plusieurs tentatives de connexion infructueuses à partir d’une adresse IP inconnue ou d’heures de connexion inhabituelles peut indiquer une attaque par force brute ou une tentative d’accès non autorisé.
- Emplacement:
Voici quelques exemples clés d’événements pouvant être classés comme incidents :
- Tentatives de connexion échouées.
- Tentative de connexion réussie mais à un moment inhabituel (après les heures de bureau ou le week-end -> selon le contexte de l’entreprise).
- Communication réseau suspecte.
- Erreurs système.
- Création de compte utilisateur sur le serveur sensible.
- Le trafic sortant est initié à partir du serveur Web.