ticktock

Veröffentlicht2023-11-13
Retired2023-12-14
Autorblitztide

Szenario

Gladys ist ein neues Mitglied im Unternehmen. Sie hat eine E-Mail erhalten, in der sie darüber informiert wird, dass die IT-Abteilung einige Arbeiten an ihrem PC durchführen muss. Ihr wird geraten, das IT-Team anzurufen, wo man ihr mitteilen wird, wie sie ihnen den Remotezugriff ermöglichen kann. Allerdings handelt es sich bei dem IT-Team tatsächlich um eine Gruppe von Hackern, die versuchen, Forela anzugreifen.


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.

207
208
209
2023/05/04 11:21:30.996  4428  6012 G3   Write file C:\Users\gladys\Desktop\merlin.exe
2023/05/04 11:21:34.398  4428  6012 G3   Download from "merlin.exe" to "C:\Users\gladys\Desktop\merlin.exe" (10.95 MB)
2023/05/04 11:21:34.537  4428  3252 G3   TaskbarProgress::ProgressWorkerFunc: Worker end.

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.

12
13
14
15
16
2023/05/04 11:35:27.433  5716  5840 D3   SessionManagerDesktop::IncomingConnection: Connection incoming, sessionID = -2102926010
2023/05/04 11:35:27.433  5716  5840 D3   CParticipantManagerBase::SetMyParticipantIdentifier(): pid=[1764218403,-2102926010]
2023/05/04 11:35:27.434  5716  5840 D3!! InterProcessBase::ProcessControlCommand Command 39 not handled
2023/05/04 11:35:27.434  5716  5840 D3   IpcRouterClock: received router time: 20230504T103558.360315
2023/05/04 11:35:27.435  5716  4292 D3   CLogin::run(), session id: -2102926010

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.

47
48
49
50
51
52
53
2023/05/04 11:35:31.777  5716  4292 D3   CLogin::run() leave, session id: -2102926010
2023/05/04 11:35:31.777  5716  4292 D3   tvsystem::CThread::weakJoin - thread {Not-any-thread} has succesfully detached itself
2023/05/04 11:35:31.777  5716  2468 D3   DesktopThread started, number of Cores: 2
2023/05/04 11:35:31.958  5716  2436 D3   CParticipantManagerBase participant DESKTOP-R30EAMH (ID [1764218403,-2102926010]) was added with the role 3
2023/05/04 11:35:31.958  5716  2436 D3   New Participant added in CParticipantManager DESKTOP-R30EAMH ([1764218403,-2102926010])
2023/05/04 11:35:31.958  5716  2436 D3   CParticipantManagerBase participant fritjof olfasson (ID [1761879737,-207968498]) was added with the role 6
2023/05/04 11:35:31.958  5716  2436 D3   New Participant added in CParticipantManager fritjof olfasson ([1761879737,-207968498])

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")'

0
1
2
3
4
[
  "Net Conn (Sysmon Alert)",
  "52.56.142.81",
  "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.

3
    2023-05-04T10:29:22.070Z DETECTION VirTool:Win32/Myrddin.D file:C:\Users\gladys\Desktop\merlin.exe

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.

0
1
2
3
4
5
6
set-executionpolicy bypass
cd ..
cd ..
cd .\Users\
cd .\gladys\Desktop\
dir
.\Invoke-TimeWizard.ps1

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.

100180
100181
100182
100183
100184
100185
100186
100187
100188
100189
100190
100191
100192
100193
100194
100195
100196
100197
100198
100199
100200
{
    "Timestamp": "2023-05-04 12:35:59.965 +02:00",
    "Computer": "DESKTOP-R30EAMH",
    "Channel": "Sysmon",
    "EventID": 11,
    "Level": "info",
    "RecordID": 1866,
    "RuleTitle": "File Created",
    "Details": {
        "PGUID": "5080714D-8A4F-6453-D501-000000000700",
        "PID": 4428,
        "Path": "C:\\Users\\gladys\\Desktop\\Invoke-TimeWizard.ps1",
        "Proc": "C:\\Users\\gladys\\AppData\\Local\\Temp\\TeamViewer\\TeamViewer.exe"
    },
    "ExtraFieldInfo": {
        "CreationUtcTime": "2023-05-04 10:35:59.962",
        "RuleName": "-",
        "User": "DESKTOP-R30EAMH\\gladys",
        "UtcTime": "2023-05-04 10:35:59.964"
    }
}

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.

30041
30042
30043
30044
30045
30046
30047
30048
30049
30050
    SDN:Issuing SDN query for \\?\C:\Users\gladys\Desktop\merlin.exe (\\?\C:\Users\gladys\Desktop\merlin.exe) (sha1=ac688f1ba6d4b23899750b86521331d7f7ccfb69, sha2=42ec59f760d8b6a50bbc7187829f62c3b6b8e1b841164e7185f497eb7f3b4db9)
    SDN:SDN query completed: 00000000
    Internal signature match:subtype=Lowfi, sigseq=0x0000157E4093A282, sigsha=d6cf725601d3674f24c846de1ebd8748dea7635c, cached=false, source=0, resourceid=0x476b09dc
    Internal signature match:subtype=Lowfi, sigseq=0x0000157E0BF5A676, sigsha=fcf10facbe87d20c2ad81a5313802a7662f163d2, cached=false, source=0, resourceid=0x476b09dc
    Internal signature match:subtype=Lowfi, sigseq=0x0000157EE477CABC, sigsha=9eda2b8c98d41220918af55d055a705cfb0d9f21, cached=false, source=0, resourceid=0x476b09dc
    Internal signature match:subtype=Lowfi, sigseq=0x0000157E6ADDFF4C, sigsha=d68287b430d44bad4d2426722d878b33a3859f0d, cached=false, source=0, resourceid=0x476b09dc
    Internal signature match:subtype=Lowfi, sigseq=0x0000157ECADD9396, sigsha=3234d0af68c68ef790e72588e2864e3bd55a6100, cached=false, source=0, resourceid=0x476b09dc
    2023-05-04T10:29:22.070Z DETECTIONEVENT VirTool:Win32/Myrddin.D file:C:\Users\gladys\Desktop\merlin.exe;process:pid:1992,ProcessStart:133276693023911786;
    2023-05-04T10:29:22.070Z DETECTION_ADD VirTool:Win32/Myrddin.D file:C:\Users\gladys\Desktop\merlin.exe
    2023-05-04T10:29:22.070Z DETECTION_ADD VirTool:Win32/Myrddin.D process:pid:1992,ProcessStart:133276693023911786

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