CTF

Alle anderen Themen ...

Moderator: ModerationP

CTF

Beitragvon Fennek » 30. Nov 2019, 17:44

Hallo,

hat jemand Lust etwas "Catch the Flag" zu spielen.

In der beigefügten Datei ist etwas mit büro-üblicher Software versteckt (ohne Verschlüsselung).

mfg
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Benutzeravatar
Fennek
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 726
Registriert: 12. Feb 2016, 18:56

Re: CTF

Beitragvon maninweb » 01. Dez 2019, 09:26

Moin,

die 2 Flags gefunden, denke ich. Warte aber mal auf weitere Antworten :-)

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 01/2011 - 06/2019 :: 04/2020 - 06/2021
Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Benutzeravatar
maninweb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 11141
Registriert: 10. Mai 2004, 14:22
Wohnort: Aachen

Re: CTF

Beitragvon Fen » 01. Dez 2019, 11:38

Während der Entwicklung sind mir zu viele Texte "hinein geraten": In der ersten Version wird eine Flag in englischer Sprache, in der zweiten Version ein weiterer Flag an einer anderen Stelle ebenfalls in englischer Sprache gesucht.

Die deutsch-sprachigen Text zeigen nur an, dass der Suchende auf dem richtigen Weg ist.
Fen
 

Re: CTF

Beitragvon Fennek » 01. Dez 2019, 19:03

Hallo Mourad,

vielen Dank für das Interesse.

Aktueller Anlass für die Idee war eine Konferenz über (in meinen Worten) digitale Forensik: Ein Vortrag beschäftigte sich damit digitale Spuren zu entfernen (vor allem in PDF), ein anderer machte sich an mehreren Beispielen darüber lustig, wie Leute es sehr ungeschickt versuchen Daten zu manipulieren ("ist immer zu erkennen").

Im Vortrag zu den PDF war von "unsichtbaren Layern" die Rede, die ein PDF markieren können. Nach einem kurzen Blick (mit dem Editor) in eine PDF war mir klar "zu kompliziert für mich". Aber in Word einen transparenten Layer mit einer Markierung einzubauen, das geht.

In der Datei ist als Wasserzeichen ein transparentes png mit einer transparenten Schrift eingebaut. (Erstellen mit Gimp)

Zur Frage, ob man Daten in Office-Dokumenten verstecken kann:

Alle Bilder, insbesondere pgn, erlauber Steganogrphie, z.B. das "least-significant-bit" zu überschreiben. Könnte für ein CTF aber zu kompliziert werden.

Aber Informationen können auch in die Exif eingebettet werden: Nachdem ich gelernt habe mit Excel (WIA) neue Exif einzufügen, ist im zweiten Bild ein Text in die oft nicht angezeigten "Maker Notes" eingefügt. Da man das aber mit Editor sofort sieht, habe ich es Base64 kodiert, wie auf vielen Webseiten üblich mit UTF-7 als Startpunkt.

Als die Datei erneut hochgeladen war, kam ich auf die Idee mit dem Windows Exlorer noch einen Titel und Kommentar einzufügen. Wow, Windows fügt gleich noch eine UUID mit ein.

Kann man solche Manipulationen erkennen?

Ich kann mir das schwer vorstellen, lasse mich aber gerne eines besseren belehren.

Interessant für Forensiker sind die UUID's im XML-Code, die von Excel nicht angezeigt werden und die Printer.bin, die in großen Firmen oft den Namen der Firma als Teil des Druckernamens enthält.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Benutzeravatar
Fennek
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 726
Registriert: 12. Feb 2016, 18:56

Re: CTF

Beitragvon maninweb » 02. Dez 2019, 09:29

Moin Fennek,

die Office XML Spezifikation erlaubt ja Erweiterungen, z.B. über richData oder WebExtensions im XML-Code von Dateien.
Insofern ist m.W. das Einschleusen von ggf. nicht sichtbaren Daten recht einfach, sofern man die Office-Datei dem MS
Office XML-Schema konform generiert (z.B. per PHP oder Python).

Über die Programmoberfläche liesse sich das dannn ggf. auch nicht erkennen. Die Datei müsste gescannt bzw. zerlegt
werden. Was ich selber schon mal ausprobiert habe, war mal einen Payload zu versuchen, der ein Script ausführt.
Das hat bislang nicht funktioniert. Ob das (besser) mit einem präparierten PNG geht, weiss ich nicht. Da reichen
leider meine Kenntnisse nicht aus. Falls Dir noch nicht bekannt, Google mal nach Didier Stevens (OLEDump).

Das mit dem Printer.bin ist interessant, habe ich noch nie drüber nachgedacht. Nebenbei, manche meinen übrigens
VBA Code schützen zu können, indem Sie VBAProject.bin und Printer.bin vertauschen.

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 01/2011 - 06/2019 :: 04/2020 - 06/2021
Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Benutzeravatar
maninweb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 11141
Registriert: 10. Mai 2004, 14:22
Wohnort: Aachen

Re: CTF

Beitragvon Fennek » 04. Dez 2019, 13:38

Hallo,

danke für den Link, Herr Stevens hat ja viele interessante Codes geschrieben. Leider läuft OLEDump (noch) nicht unter Python 3.7.

Aber geht es nicht auch einfacher? Das Ausführen von VBA-Code läßt sich sicher verhindern mit

Code: Alles auswählen
Application.AutomationSecurity = msoAutomationSecurityForceDisable


Damit kann man VBA nutzen um in xlsm nach Viren zu suchen.

Meine Definition eines Virus war: VBA startet automatisch. Mit

Code: Alles auswählen
Sub Payload()
beep
end sub


kann man das auch harmlos testen. In einem "Virus Test.xlsm" habe ich alle Varianten zum Autostart eingebaut, z.B. Workbooks.Open(), und dann mit folgendem Code gescannt:

Code: Alles auswählen
'Zugriff auf VBAProject in Trustcenter aktivieren

Option Compare Text
Const Pfad As String = "c:\users\xxxxx\desktop\" '<<<<<<< anpassen
const file as string = "Virus Test.xlsm" '        <<<<<<< anpassen


Sub Datei_oeffnen_ohne_Makro()
    Application.AutomationSecurity = msoAutomationSecurityForceDisable
    'Pt_Fl = Application.GetOpenFilename()
    Pt_Fl = Pfad & file
   
    Set WB = GetObject(Pt_Fl)
   
'    Lesen_VBAProject WB
End Sub

Sub Lesen_VBAProject()
Dim WB As Workbook ': Set WB = ThisWorkbook
Dim WS As Worksheet: Set WS = ThisWorkbook.Sheets(1)
Dim DD As Object: Set DD = CreateObject("Scripting.Dictionary")
Dim rng As Range

 Application.AutomationSecurity = msoAutomationSecurityForceDisable
Pt_Fl = Pfad & file
   
    Set WB = GetObject(Pt_Fl)

lr = 1
WS.Cells(lr, 1) = WB.Name

With WB.VBProject.VBComponents
    For i = 1 To .Count
    lr = lr + 1
        WS.Cells(lr, 1) = .Item(i).Name
        With .Item(i).CodeModule
            lr = lr + 1
            WS.Cells(lr, 1) = "Declaration: " & .CountOfDeclarationLines
            For l = 1 To .CountOfLines
                If Not DD.exists(.ProcOfLine(l, vbext_pk_Proc)) Then DD.Item(.ProcOfLine(l, vbext_pk_Proc)) = .Parent.Name
                If InStr(1, .Lines(l, 1), "declare", vbTextCompare) > 0 Then Decl = Decl & vbCrLf & .Lines(l, 1)
                If InStr(1, .Lines(l, 1), "evaluate", vbTextCompare) > 0 Then Eval = Eval & vbCrLf & .Lines(l, 1)
                If InStr(1, .Lines(l, 1), "[") > 0 Then Eval = Eval & vbCrLf & .Lines(l, 1)
                If InStr(1, .Lines(l, 1), "Open") > 0 Then lr = lr + 1: Cells(lr, 1) = .Lines(l, 1): Cells(lr, 1).Interior.Color = vbRed
            Next l
        End With
    Next i
End With

lr = lr + 1
For Each k In DD.keys
lr = lr + 1
    WS.Cells(lr, 1) = k & ": " & DD.Item(k)
Next k

lr = lr + 2
WS.Cells(lr, 1) = Decl
lr = lr + 2
WS.Cells(lr, 1) = Eval
lr = lr + 1

'in Sheets nach Hyperlink suchen
For i = 1 To WB.Sheets.Count
    With WB.Sheets(i).Cells
        Set rng = .Find("HYPERLINK", , xlFormulas, xlPart)
        If Not rng Is Nothing Then
            Adr = rng.Address
            Do
            Mk = Split(Split(rng.Formula, "HYPERLINK(")(1), "(")(0)
            Mk = Application.Proper(Mk)
            If DD.exists(Mk) Then
                lr = lr + 1
                WS.Cells(lr, 1) = "Alert Hyperlink: " & rng.Address & ", " & Mk
            End If
            Set rng = .FindNext(rng)
            Loop Until rng.Address = Adr
        End If
    End With
Next i

WB.Close 0
End Sub


Es hat NICHT beep gemacht, aber der Code mußte 2x gestartet werden, bzw im Einzelschritt-Moodus ausgeführt werden.

Zur Kontrolle habe ich die Datei mit gedrückter Shift-Taste gestartet, dabei lief VBA an "beep".

Mangels Sandbox und ohne Vertrauen von www.VirusTotal.com echte Office-Viren zu laden, kann ich es nicht weiter testen.

Falls das VBProject mit einem Passwort geschutzt ist, kann man es immer noch in OO/LO von Hand prüfen (der Code läuft wegen "CreateObject" nicht.

mfg
Benutzeravatar
Fennek
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 726
Registriert: 12. Feb 2016, 18:56

Re: CTF

Beitragvon maninweb » 05. Dez 2019, 10:53

Hallo Fennek,

ich hatte jetzt bei meiner Antwort oben nicht wirklich VBA in Sinn, sondern den Versuch einen JavaScript-Payload in die Datei einzuschleusen.
Code muss ich mal ausprobieren. Falls Du es noch nicht kennst, es gibt auch sowas wie eine Online-Sandbox, nur Englisch und man muss sich
schon etwas einarbeiten: https://any.run/

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 01/2011 - 06/2019 :: 04/2020 - 06/2021
Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Benutzeravatar
maninweb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 11141
Registriert: 10. Mai 2004, 14:22
Wohnort: Aachen

Re: CTF

Beitragvon Fennek » 12. Dez 2019, 09:35

Hallo,

ich habe mich auf der Seite von Herr Stevens und seinem Blog umgesehen und auch sein Programm zum Prüfen auf Viren (OLEDump) getestet. Bisher kannte ich Excel-Dateien nur als "Unzip", jetzt auch wie mit einem Hex-Editor betrachtet.

Mit OLEDump kann man xlsm-Dateien sicher öffnen und auch den VBA-Code auslesen. Eine spezielle und automatisierte Prüfung auf besondere Risiken (Events, API, Class-Module) konnte ich nicht finden.

In seinem Blog werden einige interessante Ansätze gezeigt:

Zur Prüfung der eigenen Vorsicht gegen mögliche Viren habe ich die beigefügte Datei konstruiert:

- Payload: beep

- mit Passwort geschützt, also kein unzip
- öffnet mit Doppelklick ohne Passwort-Eingabe
- OLEDump findet nichts
- entgegen der Vorlage ist meine Entbettung des VBA-Codes sehr einfach
- die Vorlage lädt eine XML-Datei aus dem Web, die als Wrapper für VBA dient

- "natürlich" eine XLSX

Falls jemand die Datei herunterlädt. dürfte Windows einen ADS "Zone 3" (=Internet) hinzufügen, das im Vergleich zu meinen Versuchen das Verhalten ändern könnte.

mfg
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Benutzeravatar
Fennek
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 726
Registriert: 12. Feb 2016, 18:56

Re: CTF

Beitragvon maninweb » 13. Dez 2019, 13:42

Hallo,

sehr schön :-)

Aufgefallen ist mir, dass Deine XLSX keine ist, denn diese trägt als Signatur in den ersten Bytes D0 CF 11 E0 A1 B1 1A E1 anstatt 50 B4.
Jetzt frage ich mich, womit hast Du das gemacht, dass sich die XLS als XLSX erfolgreich tarnt, ohne dass Excel das merkt. Mit den
Tools von Didier Stevens?

Der Payload klappt bei mir mit expliziten Doppelklick auf das eingebette Objekt + Nachfrage, ob Makro aktiviert werden sollen.

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 01/2011 - 06/2019 :: 04/2020 - 06/2021
Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Benutzeravatar
maninweb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 11141
Registriert: 10. Mai 2004, 14:22
Wohnort: Aachen

Re: CTF

Beitragvon Fennek » 15. Dez 2019, 10:20

Hallo,

außer den ersten beiden bytes ("Magic") PK für Zip-Dateien kenne ich Excel spezifischen Bytes nicht. Werden die nicht durch die Verschlüsselung geändert?

Ist Herr Stevens einer der führenden Malware-Analysten? In diesem Youtube-Video https://www.youtube.com/watch?v=yf6J8XO_wpY wird mit Programmen von Herrn Stevens nach Malware gesucht, aber ohne den Autor zu nennen. (https://remnux.org/)

Herr Stevens erhält wohl verdächtige Dateien (email attachments) bietet auch Firewall-logfile-Analyse an.

Hier in den Foren sind xlsm mit Viren extrem selten (1x in mehreren Jahren "schlug" meine Anti-Viren-Software zu). Trotzdem wäre zu überlegen, ob nicht jede hochgeladene Datei auf potentiell gefährliche Inhalte, z.B. Workbook.Open gesannt werden könnte.

Zum Thema "Office-Forensik" habe ich nicht in Herrn Stevens Software-tools gefunden. Hier in den Foren stellen sich mir 2 Fragen:

- wer fragt (jeseits des Nick-Name)
- schreibt MS eine UUID in Office-Dokumente, die den Ersteller / Bearbeiter eindeutig identifizieren

Die "DocumentProperities" auszulesen ist einfach, deshalb hier ein Code, der viele (nicht alle) UUID aus einer Excel-Datei ausliest.

Code: Alles auswählen
Private Declare PtrSafe Sub Sleep Lib "kernel32.dll" ( _
    ByVal dwMilliseconds As Long)

Const TMP As String = "c:\temp\UUID\"
'Vorbereitung
Sub T_1()
Dim WB As Workbook
For i = 1 To 9
    Set WB = Workbooks.Add
    WB.Sheets(1).Cells(i, i) = 20 * i
    WB.SaveAs TMP & "Mappe" & i, xlOpenXMLWorkbookMacroEnabled
    WB.Close 0
Next i
End Sub

Sub UUID()
Dim WS As Worksheet: Set WS = ActiveSheet
Dim WB As Workbook
Dim FSO As Object: Set FSO = CreateObject("Scripting.FileSystemObject")
Dim Shl As Object: Set Shl = CreateObject("shell.application")
Dim Reg As Object: Set Reg = CreateObject("vbscript.regexp")
Ar = Array("xl\workbook.xml")

Application.AutomationSecurity = msoAutomationSecurityForceDisable

lr = WS.Cells.SpecialCells(xlCellTypeLastCell).Row + 1

With Reg
    .MultiLine = True
    .Global = True
    .Pattern = "\w{8}-\w{4}-\w{4}-\w{4}-\w{12}"
End With
'GoTo NN

Pt_Fl = Application.GetOpenFilename()
    Fl = Dir(Pt_Fl)
    Pt = Replace(Pt_Fl, Fl, "")
   
   WS.Cells(lr, 1) = Fl
   WS.Cells(lr, 2) = Shl.Namespace(Pt).getDetailsOf(Shl.Namespace(Pt).items.Item(Fl), 20)
   
   'Unzip
   VBA.FileCopy Pt_Fl, TMP & Fl & ".zip"
   Sleep 500
NN:
    'Fl = Dir(TMP & "*.zip") '<<<<<<<< löschen
    For it = 0 To UBound(Ar)
         Shl.Namespace(TMP).copyHere Shl.Namespace(TMP & Fl & ".zip").items.Item(Ar(it))
         iXML = Split(Ar(it), "\")
         Tx = FSO.OpenTextFile(TMP & iXML(UBound(iXML)), 1, True).readall '2: ForWriting; 1: ForReading; 8: ForAppending
       
        Set RR = Reg.Execute(Tx)
          For i = 0 To RR.Count - 1
             WS.Cells(lr + i, 3 + it) = RR(i)
          Next i
    Next it
   Kill TMP & "*.xml"
Set Shl = Nothing
Set FSO = Nothing
Set WB = Nothing
Set WS = Nothing

End Sub

Sub UUID_Serie()
Dim WS As Worksheet: Set WS = ActiveSheet
Dim WB As Workbook
Dim FSO As Object: Set FSO = CreateObject("Scripting.FileSystemObject")
Dim Shl As Object: Set Shl = CreateObject("shell.application")
Dim Reg As Object: Set Reg = CreateObject("vbscript.regexp")
Ar = Array("xl\workbook.xml")

Application.AutomationSecurity = msoAutomationSecurityForceDisable

With Reg
    .MultiLine = True
    .Global = True
    .Pattern = "\w{8}-\w{4}-\w{4}-\w{4}-\w{12}"
End With
'GoTo NN

'Pt_Fl = Application.GetOpenFilename()

    'Fl = Dir(Pt_Fl)
    'Pt = Replace(Pt_Fl, Fl, "")
Pt = TMP
Fl = Dir(TMP & "*.xls?")

Do While Fl <> ""
   lr = WS.Cells.SpecialCells(xlCellTypeLastCell).Row + 1
   
   WS.Cells(lr, 1) = Fl
   WS.Cells(lr, 2) = Shl.Namespace(Pt).getDetailsOf(Shl.Namespace(Pt).items.Item(Fl), 20)
   
   'Unzip
   VBA.FileCopy Pt & Fl, TMP & Fl & ".zip"
   Sleep 500
NN:
    'Fl = Dir(TMP & "*.zip") '<<<<<<<< löschen
    For it = 0 To UBound(Ar)
         Shl.Namespace(TMP).copyHere Shl.Namespace(TMP & Fl & ".zip").items.Item(Ar(it))
         iXML = Split(Ar(it), "\")
         Tx = FSO.OpenTextFile(TMP & iXML(UBound(iXML)), 1, True).readall '2: ForWriting; 1: ForReading; 8: ForAppending
       
        Set RR = Reg.Execute(Tx)
          For i = 0 To RR.Count - 1
             WS.Cells(lr + i, 3 + it) = RR(i)
          Next i
    Next it
   Kill TMP & "*.xml"

Fl = Dir
Loop

Set Shl = Nothing
Set FSO = Nothing
Set WB = Nothing
Set WS = Nothing

End Sub


Was bedeutet "CustomXMLParts"?

Code: Alles auswählen
Sub CustomXMLParts()
For WB = 1 To Workbooks.Count
If Workbooks(WB).Name <> "PERSONAL.XLSB" Then
    Debug.Print "---------->", Workbooks(WB).Name
    With Workbooks(WB).CustomXMLParts
        For i = 1 To .Count
            Debug.Print .Item(i).XML
            Debug.Print .Item(i).ID, .Item(i).BuiltIn
            Debug.Print .Item(i).Creator
        Next i
    End With
End If
Next WB
End Sub


mfg

Update:
http://www.decalage.info/en/taxonomy/term/12
unter "Readmore":
eu-19-Lagadec-Advanced-VBA-Macros-Attack-And-Defence.pdf
Benutzeravatar
Fennek
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 726
Registriert: 12. Feb 2016, 18:56

Re: CTF

Beitragvon maninweb » 19. Dez 2019, 12:45

Hallo,

ein Test mit einer Dateiverschlüsselung ändert bei mir den Byte-Dateiheader nur dann, wenn ich ein Kennwort für's Öffnen angebe. Ansonsten bleibt PK.
Ob jetzt Didier Stevens jetzt einer der fühenden Malware-Analysten ist, kann ich nicht beurteilen. Aber ich denke, es sicherlich ein Profi.

Was Viren aus Foren betrifft, das habe ich auch sehr selten, dass die Antivirensoftware zuschlägt. Wobei, auf die verlasse ich mich letztlich nicht.
Relevant sind auch bei mir, wer was postet und wenn unbekannt, ist die Office Sandbox oft ausreichend. Ansonsten wird's halt nicht geöffnet
bzw. heruntergeladen. Jep, eine ganze Menge an Personen hinterlässt in Dateien Informationen, von denen sie selbst oft nicht wissen,
dass es diese gibt.

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 01/2011 - 06/2019 :: 04/2020 - 06/2021
Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Benutzeravatar
maninweb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 11141
Registriert: 10. Mai 2004, 14:22
Wohnort: Aachen

Re: CTF

Beitragvon Fen » 19. Dez 2019, 13:39

Hallo,

die oben gezeigte Datei war mit einem "Open-Password" geschützt ("Velvet..."), das beim Öffnen NICHT eingegeben werden muss.

Die genannten Byte-Folge "D0 CF 11 E0 A1 B1 1A E1" wird von Herrn Stevens als "Magic bytes for OLE-Files" bezeichnet, in meiner Übersetzung "MS Office Documents", vielleicht auch eher "VBA embeded" (siehe sein Video von heute). Sein OLEDump.py prüft auf diese Byte-Folge.

Auch wenn Viren hier in den Foren extrem selten sind, ohne eine Sicht-Prüfung des VBA-Codes aktiviere ich keine xlsm. Bei längeren Codes mag dies aber fehleranfällig sein. Der Service eines Forums für eine automatisierte Vorprüfung könnte da hilfreich sein, aber die eigenen Prüfung nicht ersetzen.

mfg
Fen
 


Zurück zu Offtopic (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste