1 veränderte Prozess- und Serviceliste erkennen 

Angriffe auf Rechner können sich durch neu auftretende Prozesse (gleiches gilt für Services) verraten. Mittels der Powershell kann man schnell eine Basisliste aller Prozesse erstellen und diese gegen die aktuellen Prozesse vergleichen.

Hey, Scripting Guy! Blog - Use PowerShell to Aid in Security Forensics

Beispiel 1: Erstellen einer Basisliste

Set-StrictMode -Version "2.0"
Clear-Host  
 
$TempPath =[IO.Path]::GetTempPath()
Get-Process | Export-Clixml -Path $TempPath\ProcessesBasis.XML

Mit diesem Skript legt ihr eine Prozessliste im XML-Format in eurem Temp-Verzeichnis an

 

Beispiel 2: Vergleich der Basisliste gegen die aktuelle Prozessliste

Set-StrictMode -Version "2.0"
Clear-Host  
 
$TempPath =[IO.Path]::GetTempPath()
 
$BasisProcesses = Import-Clixml -Path $TempPath\ProcessesBasis.XML
$BasisProcesses_Date = $(Get-item -path "$TempPath\ProcessesBasis.XML").LastWritetime
 
Get-Process | Export-Clixml -Path $TempPath\ProcessesCurrent.XML
$CurrentProcesses = Import-Clixml -Path $TempPath\ProcessesCurrent.XML
 
$ComparedProcesses = Compare-Object $BasisProcesses $CurrentProcesses -Property Processname,Starttime 
 
"`nNeue Prozesse im Vergleich zu $BasisProcesses_Date"
$ComparedProcesses | where {$_.SideIndicator -eq "=>"} | Format-Table Processname,Starttime -AutoSize
 
"fehlende Prozesse im Vergleich zu $BasisProcesses_Date"
$ComparedProcesses | where {$_.SideIndicator -eq "<="}  | Format-Table ProcessName,Starttime -AutoSize

#mögliche Ausgabe

 

Neue Prozesse im Vergleich zu 11/05/2014 19:53:12
 
processname    starttime          
-----------    ---------          
powershell_ise 06.11.2014 21:18:32
notepad        06.11.2014 21:20:57
 
fehlende Prozesse im Vergleich zu 11/05/2014 19:53:12
 
processname    starttime          
-----------    ---------          
audiodg        05.11.2014 19:48:46
powershell_ise 05.11.2014 19:48:58
WmiPrvSE       05.11.2014 19:52:34

Das Skript erstellt erstellt ebenfalls eine XML-Datei im Tempverzeichnis. Durch das XML-Format bleiben die Objecteigenschaften wie ProcessName oder Starttime erhalten. Nähere Erklärungen dazu im oben angegebenen Link zu den "Scripting Guys"

 

Beispiel 3: Processdetails aus dem XML-File lesen

In den XML-File sind alle Prozessinformation abgespeichert und lassen sich daher auch später detailliert abrufen. 

Set-StrictMode -Version "2.0"

Clear-Host 

 
$CurrentProcesses = Import-Clixml -Path $TempPath\ProcessesCurrent.XML
$Notepad = $Currentprocesses | where { $_.processname -eq 'notepad'}
$Notepad
$Notepad.Threads

#mögliche Ausgabe

 

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName             
-------  ------    -----      ----- -----   ------     -- -----------                   76       7     1256       6528    88     0,02   3604 notepad                  
BasePriority            : 8
CurrentPriority         : 12
Id                      : 420
PriorityBoostEnabled    : True
PriorityLevel           : Normal
PrivilegedProcessorTime : 00:00:00.0156250
StartAddress            : 140727754834924
StartTime               : 06.11.2014 22:26:10
ThreadState             : Wait
TotalProcessorTime      : 00:00:00.0156250
UserProcessorTime       : 00:00:00
WaitReason              : UserRequest
Site                    : 
Container               : 

 

2 Software Artifakte finden

Default Deny: Start Menu and IE Favorites Artifacts in the MenuOrder Registry Key

Auf manchen Rechnern, die dafür überhaupt nicht gedacht sind, wird möglicherweise Software installiert und relativ schnell wieder deinstalliert. Das könnte beispielsweise ein Anwender/ Administrator sein, dem dann aber sein neues Programm doch nicht gefällt oder auch ein Angreifer, der nach der Systemübernahme Unterstützungstools nachinstalliert um beispielsweise Passwörter am Domaincontroller auszulesen (Mimikatz). Am Ende des Angriffs wird ein versierter Angreifer versuchen, möglichst alle Spuren zu verwischen und seine Software vom System zu deinstallieren.

In dem Link oben sind zwei Registrykeys aufgeführt, die bei der Installation von Software angepasst, aber bei der Deinstallation nicht automatisch zurückgestellt werden.