Forensic en environnement Windows

Ce billet est dédié à l'investigation numérique sur un système Microsoft en Computer forensic (A froid)

Avant tout, un rappel du lexique et du FS Microsoft sont nécessaires pour comprendre la porté de recherche des preuves.

Lexique

  • Imaging: Capturer des données sans modifier l'intégrité
  • Evidence: Indice servant de preuve
  • Artefact: Indice obtenu par l'usage d'outils (pouvant être un fichier, image, log, programme vidéo, ...)
  • Chain of evidence: Enregistrement des étapes de l'investigation garantissant que les preuves sont issue de manières irrévocable.
  • Chain of custody: Rapport établi lors de la saisie ou réception d'une information numérique contenant l'information sur le propriétaire antérieur, lieux et conditions d'acquisition, ...
  • Timeline: Collecte de donnée entre plusieurs dates
  • First responder: Première personne arrivant sur les lieux

Informations sur le NTFS

Quelques fichiers systèmes utilisés par NTFS

  • $MFT = contient la liste de tous les fichiers stockés sur le disque
  • $LogFile = Un fichier qui contient un journal des opérations effectuées et des problèmes rencontrés par un système d'exploitation.
  • $Bitmap = Tableau de bits, Chaque bits indique quel cluster ils utilisent (alloué or libre pour allocation)
  • $BOOT = Toujours localisé au premier clusters du volume, il contient le bootstrap code (NTLDR/BOOTMGR) et le paramètres BIOS
  • $UpCase = Table de caractères unicode pour assurer la sensibilité à la casse dans win32 et l'espace de nom DOS
  • $SECURE = Base de donnée d'ACL qui réduit la surcharge en ayant plusieurs ACL identiques stockées avec chaque fichier (stockant ces ACL uniquement dans cette base de données)
  • $EXTEND = Dossier de FS contenant les options d'extensions variés comme $Quota, $ObjId, $Reparse or $UsnJrnl
  • $UsnJrnl = fichier contenant les enregistrements lorsque un changement est fait sur un fichier ou dossier

Séquence de boot windows (LEGACY)

  1. POWER : Alimentation du materiel, (Motherboard, CPU, ...)
  2. BIOS: détection d'erreurs, init matériel, choix du média de boot
  3. MBR: Premier secteur de disque (Tables de partition, recherche de partition active)
  4. BootSector NTFS: 16 premiers secteurs de la partition, Information sur la taille des clusters, record MFT, index, recherche du gestionnaire de boot
  5. Bootloader windows: Démarrage via bootmgr, lecture du fichier de configuration \Boot\BCD
  6. Chargeur de démarrage windows: winload.exe charge l'OS et des options de configuration (Pagination, Pilotes de boot, ruche de registre en mémoire)
  7. win32k.sys: chargement du sous système kernelland pour les appels système
  8. crss.exe : Chargement du sous système userland en session 0
  9. wininit.exe: Lancé au démarrage de session chargeant le gestionnaire de services service.exe, gestionnaire d'authentification lsass.exe, gestionnaire de sessions TSE lsm.exe

Notes : Pour les attaques avancées les composants VBR/MBR sont généralement la cible des bootkits (Difficile à localiser)

Séquence de démarrage windows (UEFI)

  1. POWER :  Alimentation du materiel, (Motherboard, CPU, ...)
  2. UEFI BOOT ROM: Firmware ROM fournissant les fonctions du BIOS
  3. GPT : Semblable au MBR mais évolué (Moins limité en partition et taille)
  4. BootSector NTFS
  5. Gestionnaire de démarrage: bootmgfw.efi
  6. Suite semblable au LEGACY

Maintenant que les yeux ont saignés, passons à l'essentiel

Il existe 2 types de forensics

Forensic à chaud

Ou appelé "levée de doute", cette méthode s'applique à chaud avec une potentielle altération des données

  1. Accès et analyse manuelle du système
  2. Analyse automatique de l'OS et base de registre
  3. analyse manuelle de la base de registre
  4. Analyse des artefacts/binaire

Quelques outils forensic windows pour le forensic à chaud :

La suite sysinternal est très complète et assez user friendly, elle contient des outils pratique comme :

  • procmon permet de voir chaque accès registres en temps réel (possibilité de filtrer des process)
  • Process Explorer permet de vous en temps réel les processus et les informations associés (threads, connexion, process enfants, ...)
  • TCPView qui permet de voir les connexions en temps réel et les processus associés

D'autres outils sont aussi indispensable

  • FTK Imager qui permet d'extraire des fichiers de la table MFT (Obligatoire pour extraire les ruche SYSTEM à chaud)

Forensic à froid

La rigueur et méthodologie sont obligatoire dans ce processus, il est indispensable de créer une image disque à froid afin de ne pas altérer les données d'origines et de contrôler que le checksum est identique.

Une fois les images crées la méthodologie est la suivante :

  • Collecte des données
  • Examiner
  • Analyser
  • Documenter

1- Information sur l’événement

Avant d'intervenir, il est nécessaire de comprendre "De quoi il s'agit", c'est le moment de récupérer des informations sur le déclencheur de la réponse à incident : Symptôme ? Depuis quand ? Occurrence ? ...

Avec ces informations il est possible de dresser une Timeline avec la date de compromission

Si la date de compromission est connue :

  1. Identification de environnement de la machine (Rôle, Utilisation, Droits, Place sur le réseau, accès, ....)
  2. Génération de la timeline globale (avec les informations récupérés)
  3. Analyse de la timeline
  4. Recherche d'éléments suspects dans la période de la timeline (Date, Mot clés ...)

Si la date de compromission n'est pas connue :

  1. Recherche des signes de compromission sur toute les périodes
  2. Génération de la timeline pour avoir les informations utiles triées selon le temps

2- Signe de compromission

Analyser les comportements système :

  • Ralentissement général
  • Evènements suspects (cmd au boot, processus suspect)
  • Alerte Antivirus ou du firewall
  • Erreurs systèmes et crash d'application (logs, dump, ...)
  • Création de compte user
  • Apparition de fichier
  • Programmes installés
  • Service non légitime
  • ...

En cas de compromission il est nécessaire de recetter les accès et privilèges du poste, notamment lorsque le poste se trouve dans un SI. Lorsqu'un poste est victime d'une intrusion, le périmètres peut s'étendre à un contrôleur de domaine et à d'autres services comme les serveurs applicatifs ou de fichiers.

A ce stade, l'investigation devra également se faire avec une analyse des services principaux du SI et des traces laissées sur le réseau (log firewalls, IDS, WAF, ...)

3- Méthodologie

1- Synthétiser le contexte

Il est important de rappeler le contexte et les informations acquises avant l'investigation

  • Période et date de l'incident ou des doutes
  • Utilisateurs concernés
  • Vecteur d'attaque si déjà identifié (exemple facture en pièce jointe)
  • Symptôme (Exemple apparition d'un service suspect)
  • Laps de temps (Dysfonctionnement d'un service quelques heures après)

2- Acquisition des données

1- Une fois le poste hors tension, extraire le matériel de stockage des données ( sans l’abîmer ;) )

2- Brancher le disque sur votre système d'investigation (! S'assurer que l'OS ne montera pas le disque automatiquement !)

3- Démarrer le clonage du disque  (Attention ça peut être gourmand en stockage) La best practice conseil d'effectuer 3 clones. Utilisez votre logiciel favoris (Clonezilla, dd, ...) Le choix logiciel ne manque pas

dd if=/dev/sde of=/root/Case01/forensicdata.dd bs=4096 conv=noerror,sync
#Copie du disque sde bit à bit intégral vers un fichier

4- Contrôle de la somme d'intégrité des clones

(! Tout doit être identique !)

En shell

md5sum /root/Case01/forensicData.dd
3c54ae215f74cf68cefd66f453782ecf /root/Case01/forensicData.dd

md5sum /root/Case01/forensicData2.dd
3c54ae215f74cf68cefd66f453782ecf /root/Case01/forensicData2.dd

md5sum /root/Case01/forensicData3.dd
3c54ae215f74cf68cefd66f453782ecf /root/Case01/forensicData.dd3

En powershell

Get-Filehash -Algorithm MD5 * | select Hash, Path

Hash                                    Path
----                                    ----

3c54ae215f74cf68cefd66f453782ecf D:\Case01\forensicData.dd
3c54ae215f74cf68cefd66f453782ecf D:\Case01\forensicData2.dd
3c54ae215f74cf68cefd66f453782ecf D:\Case01\forensicData3.dd

5- Générer la timeline

L'objectif est de créer une timeline globale avec toutes les informations (très complet mais l'information utile sera noyée sous la masse). En utilisant des filtres il sera possible d'identifier une date d'incident potentiel et de créer une mini-timeline sur cette date (Like an entonnoir)

Pour générer une timeline le framework Sleuth est très utile

  1. Utiliser mmls pour trouver l'offset du début de partition qui nous intéresse
mmls /root/Case01/forensicData.dd

DOS Partition Table
Offset Sector: 0
Units are in 512-byte sectors

      Slot      Start        End          Length       Description
000:  Meta      0000000000   0000000000   0000000001   Primary Table (#0)
001:  -------   0000000000   0000002047   0000002048   Unallocated
002:  000:000   0000002048   0000206847   0000204800   NTFS / exFAT (0x07)
003:  000:001   0000206848   0062912511   0062705664   NTFS / exFAT (0x07)
004:  -------   0062912512   0062914559   0000002048   Unallocated

2.  Création de la timeline globale

fls -o 206848 -z GMT -s 0 -m '/' -f ntfs -r /root/Case01/forensicData.dd >> /root/Case01/Global_Timeline.txt

#L'offset se situe généralement sur la deuxieme partition NTFS 206848

3.  Créer la mini-timeline sur une date choisie

mactime -b /root/Case01/Global_Timeline.txt -z GMT -d 2019-04-25..2019-04-28 > /root/Case01/Mini_Timeline.csv

#2019-04-25 Correspond au 25 Avril 2019

Une jolie timeline en csv (Vive l'OpenSource)

Un bon lien pour des tools faisant des timelines

Pour les brutes ne souhaitant pas monter le disque :

Identifier un format de fichiers

fls -r -F -o 206848 /root/Case01/forensicData.dd | grep ".xls"
fls -r -F -o 206848 /root/Case01/forensicData.dd | grep ".ps1"
fls -r -F -o 206848 /root/Case01/forensicData.dd | grep ".kdb"
...

#-r recherche recursive
#-F Seulement les fichiers

Extraire un fichier :

icat -o 206848 /root/Case01/forensicData.dd 47658 > Password.xls

#47658 correspond a l'inode du fichier identifié avec fls precedemment

6- Monter les disques (! Absolument en read Only !)

Plusieurs outils permettent le montage de FS, pour les puristes :

mount -t ntfs -o ro,show_sys_files,streams_interface=windows,offset=$((512*yy)) /root/Case01/forenscData.dd /mnt/Case01

En cas de partition chiffrée plusieurs alternatives existes selon le type de chiffrement

dislocker -r -v -o $((2048**512)) -V /root/Case01/forensicData.dd -- /root/Case01

mount -o ro,loop /root/Case01/dislocker-file /mnt/Case01

7- Recherche d'artefact

Le moment moteur de l'investigation est la recherche d'artefact qui permettra de mettre en lumières les évidences pour y dresser la fameuse chain of evidence.

Le système Windows est très bavard, de nombreux fichiers et informations sont créés à la moindre action:

  • Modification de taille de fenêtre explorer.exe
  • Téléchargement de fichier
  • Exécution d'un programme
  • Fichier supprimé
  • Fichier ouvert
  • Utilisation de compte
  • Matériel USB branché
  • Utilisation des navigateurs
  • ...

ABSOLUMENT TOUT LAISSE DES TRACES

Il serait bien trop long de tout détaillé mais heureusement tout les type d'artefact sont inventoriés et localisé et synthétiser sous forme de "POSTER" (MERCI SANS.org)

Je recommande les consulter sans modération c'est indispensable

https://blogs.sans.org/computer-forensics/files/2012/06/SANS-Digital-Forensics-and-Incident-Response-Poster-2012.pdf

https://www.sans.org/security-resources/posters/windows-forensic-analysis/170/download

Comme décrit dans les posters, il y a de nombreux coin à explorer, pour gagner du temps il est préférable de récupérer les fichiers les plus sensibles :

  • Registre HKLM: SYSTEM, SOFTWARE, DEFAULT, SAM, SECURITY (Dans C:\windows\System32\config\)
  • Registre utilisateurs  (C:\Users\$user\NTUSER.dat)
  • Logs windows (C:\Windows\system32\winevt)
  • Profile navigateur: firefox, chrome, ... (C:\Users\$user\AppData\Roaming\Mozilla\Profiles)
  • Historique IExplorer

Les méthodes de recherche d'artefact varient selon les contextes d'investigations, dans le cas d'une infection malware il est utile de rechercher les programme téléchargés, exécuté, les logs systèmes, ... à l'inverse d'une investigation de type pénal comme de la pédoporn ou il sera plutôt utile de chercher sur l'historique les vignettes enregistré, les fichier supprimés, ...

Heureusement pour exploiter les nombreux artefacts, il existent de nombreux outil capable de faciliter la recherche

  • RegRipper (Linux) qui permet de parser une base de registre et générer un rapport
  • Registry Explorer (windows) qui permet d'analyser une base de registre très facilement
  • Broiwsinghistoryview (Windows) qui permet d'analyser l'historique des navigateurs très simplement
  • python-evtx (Linux) qui permet de lire des logs windows sous linux (utile pour faire du grep et de la regex)

https://github.com/williballenthin/python-evtx

  • Autopsy (windows) automatise tout le processus de recherche (fait gagner du temps mais ne remplacera jamais la recherche manuelle)

Les outils sont nombreux il appartient à chacun de faire sa propre liste d'outils, quelques liens sympa pour les outils :

https://www.nirsoft.net/ (indispensable pour les artefacts poster SANS)

https://ericzimmerman.github.io/#!index.md (Lui aussi)

https://github.com/thimbleweed/All-In-USB/tree/master/utilities

8- Mise en évidence

Une fois les artefacts identifiés il est nécessaire de faire la corrélation entre la date, les actions utilisateurs et le process de l'attaque. Dans les cas d'investigation pénal il est nécessaire de prouver la responsabilité de l'utilisateur dans l'action ayant engendré l'incident.

Dans le cas d'une attaque par malware, il est possible de devoir pousser l'analyse jusqu'au reverse engineering (analyse de binaire), certaines plateformes automatise et simplifie le processus (mais ça ne vaut pas l'expertise manuelle)

https://www.reverse.it/

En cas de reverse manuel, il est important de le faire sur un labo dédié à cet effet :

  • Déconnecté d'un réseau partagé
  • Hyperviseur à jour (Éviter les CVE sortie d'hyperviseur)
  • Sur un poste physique (si possible)
  • sur un réseau surveillé (IDS + Firewall loggué)

Un script est disponible pour transormer une machine windows en véritable labo d'analyse de malware (a consommer sans modération)

https://github.com/fireeye/flare-vm

Dans le cas d'une attaque par Malware si la corrélation des données permet de confirmer la chain of evidence, il est conseillé de synthétiser le process au moyen de la cyberkill chain (via Mitre)

https://attack.mitre.org/

Quelques liens utiles

https://forensicswiki.org/wiki/Main_Page

https://forensicswiki.org/wiki/Tools

https://teambi0s.gitlab.io/bi0s-wiki/forensics/intro/

http://defensewiki.ibj.org/index.php/Forensic_Evidence

Pour la culture et la détente https://zythom.blogspot.com/

Bonne chasse !