ticktock
Veröffentlicht | 2023-11-13 | |
Retired | 2023-12-14 | |
Autor | blitztide |
Szenario
Task 01
Frage: Wie lautet der Name der ausführbaren Datei, die als C2-Agent hochgeladen wurde?
Original: What was the name of the executable that was uploaded as a C2 Agent?
Teil der gesammelten Daten sind TeamViewer Logs die, bedingt durch eine Installation als Benutzer, nicht als Admin, nicht an dem Standardspeicherplatz sind, sondern in /C/Users/gladys/AppData/Local/TeamViewer/Logs
. Im Rahmen dieser Logs wird auch der Download einer ausführbaren Datei durch den Angreifer auf das kompromittierte System dokumentiert.
|
|
Antwort: merlin.exe
Task 02
Frage: Wie war die Sitzungs-ID beim erstmaligen Zugriff?
Original: What was the session id for in the initial access?
Durch die in Task 1 bereits verwendeten TeamViewer Logs kann der erstmalige Zugriff und dessen Sitzungs-ID ermittelt werden.
|
|
Antwort: -2102926010
Task 03
Frage: Der Angreifer versuchte, ein Bitlocker-Passwort auf Laufwerk C: zu setzen. Wie lautet das Passwort?
Original: The attacker attempted to set a bitlocker password on the C: drive what was the password?
Auf dem zu untersuchenden System ist Sysmon installiert, einem Dienst der Aktivitäten des Systems überwacht und in das Ereignisprotokoll schreibt. Zur besseren Auswertung der evtx Dateien wird hayabusa genutzt, um einen groben Überblick über die Events und eventuelle Auffälligkeiten zu bekommen: hayabusa json-timeline -d C\Windows\System32\winevt\logs\ -o evtx.json
Die so entstandene evtx.json
Datei kann mit jq gefiltert werden um nur die Events zu sichten, die verdächtige Aktivitäten bei der Prozesserstellung (EventID=1) abbilden.
# cat evtx.json | jq '[.EventID, .RuleTitle] | select(.[0]==1)' | sort | uniq
1,
"File Deletion Via Del"
"LSASS Dump Keyword In CommandLine"
"Non Interactive PowerShell Process Spawned"
"Potentially Suspicious Rundll32 Activity"
"Process Memory Dump Via Comsvcs.DLL"
"Proc Exec"
"Renamed Exe File"
"Suspicious Encoded PowerShell Command Line"
"Suspicious Execution of Powershell with Base64"
"Suspicious PowerShell Encoded Command Patterns"
Eine Möglichkeit der Interaktion mit Bitlocker ist der manage-bde Befehl, daher sind die Einträge zu verdächtigen encodierten PowerShell Befehlen besonders interessant: cat evtx.json | jq '[.RuleTitle, .Details] | select(.[0]=="Suspicious Execution of Powershell with Base64")'
[
"Suspicious Execution of Powershell with Base64",
{
"Cmdline": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe -e JABTAGUAYwB1AHIAZQBTAHQAcgBpAG4AZwAgAD0AIABDAG8AbgB2AGUAcgB0AFQAbwAtAFMAZQBjAHUAcgBlAFMAdAByAGkAbgBnACAAIgByAGUAYQBsAGwAeQBsAG8AbgBnAHAAYQBzAHMAdwBvAHIAZAAiACAALQBBAHMAUABsAGEAaQBuAFQAZQB4AHQAIAAtAEYAbwByAGMAZQAKAEUAbgBhAGIAbABlAC0AQgBpAHQATABvAGMAawBlAHIAIAAtAE0AbwB1AG4AdABQAG8AaQBuAHQAIAAiAEMAOgAiACAALQBFAG4AYwByAHkAcAB0AGkAbwBuAE0AZQB0AGgAbwBkACAAQQBlAHMAMgA1ADYAIAAtAFUAcwBlAGQAUwBwAGEAYwBlAE8AbgBsAHkAIAAtAFAAaQBuACAAJABTAGUAYwB1AHIAZQBTAHQAcgBpAG4AZwA=",
"User": "DESKTOP-R30EAMH\\gladys"
}
]
[
"Suspicious Execution of Powershell with Base64",
{
"Cmdline": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe -e JABTAGUAYwB1AHIAZQBTAHQAcgBpAG4AZwAgAD0AIABDAG8AbgB2AGUAcgB0AFQAbwAtAFMAZQBjAHUAcgBlAFMAdAByAGkAbgBnACAAIgByAGUAYQBsAGwAeQBsAG8AbgBnAHAAYQBzAHMAdwBvAHIAZAAiACAALQBBAHMAUABsAGEAaQBuAFQAZQB4AHQAIAAtAEYAbwByAGMAZQAKAEUAbgBhAGIAbABlAC0AQgBpAHQATABvAGMAawBlAHIAIAAtAE0AbwB1AG4AdABQAG8AaQBuAHQAIAAiAEMAOgAiACAALQBFAG4AYwByAHkAcAB0AGkAbwBuAE0AZQB0AGgAbwBkACAAQQBlAHMAMgA1ADYAIAAtAFUAcwBlAGQAUwBwAGEAYwBlAE8AbgBsAHkAIAAtAFAAaQBuACAAJABTAGUAYwB1AHIAZQBTAHQAcgBpAG4AZwAgAC0AVABQAE0AYQBuAGQAUABpAG4AUAByAG8AdABlAGMAdABvAHIA",
"User": "DESKTOP-R30EAMH\\gladys"
}
]
Teil dieser (gekürzten) Ausgabe ist das Cmdline Feld, in dem der ausgeführte, encodierte Befehl geloggt wird. Nach einer Decodierung kann der Befehl in Klartext gelesen werden.
# echo "JABTAGUAYwB1AHIAZQBTAHQAcgBpAG4AZwAgAD0AIABDAG8AbgB2AGUAcgB0AFQAbwAtAFMAZQBjAHUAcgBlAFMAdAByAGkAbgBnACAAIgByAGUAYQBsAGwAeQBsAG8AbgBnAHAAYQBzAHMAdwBvAHIAZAAiACAALQBBAHMAUABsAGEAaQBuAFQAZQB4AHQAIAAtAEYAbwByAGMAZQAKAEUAbgBhAGIAbABlAC0AQgBpAHQATABvAGMAawBlAHIAIAAtAE0AbwB1AG4AdABQAG8AaQBuAHQAIAAiAEMAOgAiACAALQBFAG4AYwByAHkAcAB0AGkAbwBuAE0AZQB0AGgAbwBkACAAQQBlAHMAMgA1ADYAIAAtAFUAcwBlAGQAUwBwAGEAYwBlAE8AbgBsAHkAIAAtAFAAaQBuACAAJABTAGUAYwB1AHIAZQBTAHQAcgBpAG4AZwA=" | base64 -d
$SecureString = ConvertTo-SecureString "reallylongpassword" -AsPlainText -Force
Enable-BitLocker -MountPoint "C:" -EncryptionMethod Aes256 -UsedSpaceOnly -Pin $SecureString
# echo "JABTAGUAYwB1AHIAZQBTAHQAcgBpAG4AZwAgAD0AIABDAG8AbgB2AGUAcgB0AFQAbwAtAFMAZQBjAHUAcgBlAFMAdAByAGkAbgBnACAAIgByAGUAYQBsAGwAeQBsAG8AbgBnAHAAYQBzAHMAdwBvAHIAZAAiACAALQBBAHMAUABsAGEAaQBuAFQAZQB4AHQAIAAtAEYAbwByAGMAZQAKAEUAbgBhAGIAbABlAC0AQgBpAHQATABvAGMAawBlAHIAIAAtAE0AbwB1AG4AdABQAG8AaQBuAHQAIAAiAEMAOgAiACAALQBFAG4AYwByAHkAcAB0AGkAbwBuAE0AZQB0AGgAbwBkACAAQQBlAHMAMgA1ADYAIAAtAFUAcwBlAGQAUwBwAGEAYwBlAE8AbgBsAHkAIAAtAFAAaQBuACAAJABTAGUAYwB1AHIAZQBTAHQAcgBpAG4AZwAgAC0AVABQAE0AYQBuAGQAUABpAG4AUAByAG8AdABlAGMAdABvAHIA" | base64 -d
$SecureString = ConvertTo-SecureString "reallylongpassword" -AsPlainText -Force
Enable-BitLocker -MountPoint "C:" -EncryptionMethod Aes256 -UsedSpaceOnly -Pin $SecureString -TPMandPinProtector
Der Angreifer hat zwei Mal erfolglos versucht die C: Festplatte mit AES-256 und einem Password zu verschlüsseln.
Antwort: reallylongpassword
Task 04
Frage: Welcher Name wurde vom Angreifer verwendet?
Original: What name was used by the attacker?
Genau wie die Sitzungs-ID aus Task 2, kann auch der vom Angreifer genutzte Namen aus den TeamViewer Logs ausgelesen werden.
|
|
Antwort: Fritjof Olfasson
Task 05
Frage: Mit welcher IP-Adresse hat der C2 eine Verbindung hergestellt?
Original: What IP address did the C2 connect back to?
Für Netzwerkverbindungen schreibt Sysmon ein Event mit der ID 3 in das Ereignisprotokoll. Mit bekanntem Namen der Binärdatei lässt sich dieses danach filtern und die Ziel-IP ausgeben: cat evtx.json | jq '[.RuleTitle, .Details.TgtIP, .Details.Proc] | select(.[2]=="C:\\Users\\gladys\\Desktop\\merlin.exe")'
|
|
Antwort: 52.56.142.81
Task 06
Frage: Welche Kategorie hat Windows Defender der C2-Binärdatei zugewiesen?
Original: What category did Windows Defender give to the C2 binary file?
Neben dem Ereignis-Protokoll und den TeamViewer Logs sind in der Datensammlung außerdem Logging Dateien des Microsoft Defender. Diese sind standardmäßig unter C:\ProgramData\Microsoft\Windows Defender\Support\
gesammelt.
|
|
Antwort: VirTool:Win32/Myrddin.D
Task 07
Frage: Wie lautet der Dateiname des PowerShell-Skripts, das die Angreifer zum Manipulieren der Zeit verwendet haben?
Original: What was the filename of the powershell script the attackers used to manipulate time?
Im Rahmen der Sammlung von Daten wurden vom Host auch die ConsoleHost_history.txt
gesammelt und in der Collection hinterlegt. Sie befindet auf Windows Systemen, sofern vorhanden, für jeden Benutzer getrennt jeweils in %userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline
und ist dafür verantwortlich aufzuzeichnen, was in die Konsole eingegeben wird. Standardmäßig werden die letzten 4.096 Befehle gespeichert.
|
|
Um sicherzustellen, das es sich bei der Datei um eine von dem Angreifer erstellte Datei handelt und nicht um eine reguläre Datei im Rahmen der Nutzung durch gladys
kann dank Sysmon Logging (Event ID 2) das Event zum Erstellen der Datei geprüft werden.
|
|
Da dieses Datei durch TeamViewer erstellt wurde und der Dateiname auf eine Zeitmanipulation deuten lässt handelt es sich hierbei um das gesuchte Script.
Antwort: Invoke-TimeWizard.ps1
Task 08
Frage: Um welche Uhrzeit begann die Verbindung beim erstmaligen Zugriff?
Original: What time did the initial access connection start?
Aus den TeamViewer Logs aus Task 2 lässt sich auch die Uhrzeit für den erstmaligen Zugriff ablesen.
Antwort: 2023/05/04 11:35:27
Task 09
Frage: Was sind die SHA1- und SHA2-Summen der schädlichen Binärdatei?
Original: What is the SHA1 and SHA2 sum of the malicious binary?
Microsoft Defender hat die gesuchten Prüfsummen im Log beim DETECTIONEVENT
erstellt und hinterlegt.
|
|
Antwort: ac688f1ba6d4b23899750b86521331d7f7ccfb69:42ec59f760d8b6a50bbc7187829f62c3b6b8e1b841164e7185f497eb7f3b4db9
Task 10
Frage: Wie oft hat das PowerShell-Skript die Zeit auf dem Computer geändert?
Original: How many times did the powershell script change the time on the machine?
Änderungen an der Systemzeit wird im Windows Ereignisprotokoll mit der ID 4616 protokolliert.
# cat evtx.json | jq '[.EventID, .Details.Proc] | select (.[0]==4616)' | sort | uniq -c
2374 4616,
2 "C:\\Windows\\System32\\SystemSettingsAdminFlows.exe"
2371 "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"
1 "C:\\W遀筕㨡"
Um nur die Zeitänderungen die durch das Invoke-TimeWizard.ps1
Script zustanden kamen zu zählen, können die Event Details zum auslösenden Prozess ausgelesen werden.
Antwort: 2371
Task 11
Frage: Was ist die SID des Benutzers des Opfers?
Original: What is the SID of the victim user?
Im Rahmen des Szenarios und in vorherigen Tasks konnte der Username des betroffenen Accounts ermittelt werden. Mit diesem und dem Format einer Sicherheits-ID (SID) kann mit einem grep Befehl die gesamte Menge der gesammelten Daten durchsucht werden. Eine User SID beginnt immer mit S-1-5-21 wobei S eine SID identifziert, 1 die Version der SID Spezifikation angibt, 5 die Bezeichnerautorität spezifiziert (NT-Autorität) und 21 den Beginn des Domänenbezeichners darstellt.
# grep -Rnw Collection/ -e "gladys.*S-1-5-21" | head -1
Collection/2023-05-04T11_51_06_5397121_CopyLog.csv:431:2023-05-04 11:51:18.4320687,C:\Users\gladys\AppData\Roaming\Microsoft\Protect\S-1-5-21-3720869868-2926106253-3446724670-1003\6ba96a7a-8872-4ebe-b27c-0d0810a63819,C:\KAPE\C\Users\gladys\AppData\Roaming\Microsoft\Protect\S-1-5-21-3720869868-2926106253-3446724670-1003\6ba96a7a-8872-4ebe-b27c-0d0810a63819,468,21CE723CE1474C5883CBA5F3B6902341CF526AA8,False,2023-05-03 10:56:51.3594700,2023-05-03 10:56:51.3594700,2023-05-03 10:56:51.3594700,00:00:00
Durch die Pipe head -1
wird nur das erste Suchergebnis zurückgegeben. In diesem Fall ist der CopyLog der Datei Kollektion der erste Treffer Collection/2023-05-04T11_51_06_5397121_CopyLog.csv
und in diesem wird die Sicherung einer Datei im C\Users\gladys\AppData\Roaming\Microsoft\Protect\S-1-5-21-3720869868-2926106253-3446724670-1003
Ordner bestätigt. Hierbei handelt es sich um die Data Protection API (DPAPI) mit deren Hilfe Programme Dateien für einen Account verschlüsseln können, ohne sich um das Speichern der beteiligten Komponenten zu kümmern. Entsprechend der Definition kann daher die gefundene SID im Dateipfad dem bekannten Account zugeordnet werden.
Antwort: S-1-5-21-3720869868-2926106253-3446724670-1003