Einführung
Bedrohungsanalysten, die bösartige Infrastrukturen untersuchen, stoßen bei ihren Ermittlungen wahrscheinlich auf "offene Verzeichnisse". Bei diesen Verzeichnissen handelt es sich um offen zugängliche Server, auf denen Bedrohungsakteure bösartige Dateien im Zusammenhang mit ihren Aktivitäten hosten.
Ein offenes Verzeichnis ist ein einfaches Konzept, mit dem viele vertraut sein werden. Trotzdem gibt es nur wenig öffentliche Dokumentation über ihre Entdeckung und darüber, wie man neue offene Verzeichnisinfrastrukturen erkennt und verfolgt.
Dieser Blog befasst sich mit den Grundlagen eines offenen Verzeichnisses, wie Sie es bei der Suche entdecken können und wie Sie Ihre Nachforschungen in der offenen Verzeichnisinfrastruktur fortsetzen können.
Was ist ein offenes Verzeichnis?
Ein offenes Verzeichnis ist einfach ein Server, auf dem ein Verzeichnis "offen" gelassen wurde und öffentlich zugänglich ist, indem man die IP oder die Domäne der Site ansteuert.
Aus Sicht der Bedrohungsakteure ermöglicht dieses Verzeichnis den einfachen Zugriff auf bösartige Dateien und deren Bereitstellung, wann und wo sie benötigt werden. Dabei handelt es sich häufig um Dateien der zweiten Stufe von Malware oder um Werkzeuge, die bei praktischen Einsätzen verwendet werden.
Es gibt auch legitime Anwendungsfälle, in denen ein legitimer Dienst eine Datei öffentlich und leicht zugänglich machen muss, aber für heute konzentrieren wir uns auf bösartige Anwendungsfälle und wie man sie von echten Beispielen unterscheidet.
Unten (von RussianPanda9XX auf X/Twitter geteilt) ist ein bösartiges Beispiel, bei dem ein offenes Verzeichnis bösartige Dateien hostet. Dieses Beispiel zeigt ein Apache-basiertes offenes Verzeichnis, wenn es direkt in einem Browser angezeigt wird.
Ein weiteres Beispiel ist ein offenes Verzeichnis, das von ValleyRat verwendet und von Zscaler gemeldet wurde.
Das offene Verzeichnis nutzt die HFS-Software (HTTP File Server).
Das Erscheinungsbild der verschiedenen Programme ist unterschiedlich, aber die Funktionalität bleibt die gleiche. Hier ist ein weiteres Beispiel für die leichten Unterschiede zwischen Apache und Python. Diese Unterschiede werden in dem Bericht "Dorking The Internet" von Censys ausführlicher behandelt.
Wie können Sie ein offenes Verzeichnis finden?
Offene Verzeichnisse können in der Community-Edition von Censys durch die Suche nach dem Label open-dir gefunden werden.
Censys durchsucht das Internet automatisch nach offenen Verzeichnissen und versieht diese mit dem open-dir-Label, unabhängig von der verwendeten Software. Dies bedeutet, dass Apache, Python, HFS und andere alle einbezogen werden und nicht einzeln durchsucht werden müssen.
Diese Kennzeichnung umfasst alle offenen Verzeichnisse, darunter sowohl bösartige als auch legitime Ergebnisse. Allein das Label kann Hunderttausende von Ergebnissen liefern.
Wir sehen dies unten mit einer einfachen Suche nach labels:open-dir, die 450.153 aktuell geöffnete Verzeichnisse liefert.
Wie gezeigt, liefert die Suche nach labels:open-dir alle Ergebnisse, unabhängig davon, ob sie bösartig oder legitim sind.
Im weiteren Verlauf dieses Blogs wird gezeigt, wie diese Abfrage mit zusätzlichen Parametern kombiniert werden kann, um nur bösartige Ergebnisse zu identifizieren.
Abschnitt 1: Statische Dateinamen für Open Directory Hunting
Die einfachste Methode zur Identifizierung bösartiger Verzeichnisse ist die Verwendung von Dateinamen aus früheren Vorfällen.
Betrachten wir 81.71.147[.]158, die von @morimolymoly2 auf Twitter/X geteilt wurde. Diese IP enthält ein offenes Verzeichnis mit einer großen Anzahl verdächtiger Dateien.
Wenn wir nach der IP auf Censys suchen, landen wir auf der Host-Seite, wo die folgenden Informationen über Port 80 verfügbar sind.
Das offene Verzeichnis unter 81.71.147[.]158 enthält mehrere Dateien, die eindeutig genug sind, um als Pivot-Punkte verwendet zu werden. Das sind Werte, die eindeutig genug sind, um in einer Abfrage verwendet zu werden.
Es gibt zwei Hauptmuster, die hervorstechen.
- A.dll, a.exe, a.hta, a.jpg - Verdächtige Dateien mit kurzen und einstelligen Dateinamen.
- Yaml-payload.jar - Verdächtige Datei mit "payload" im Dateinamen. Steht wahrscheinlich im Zusammenhang mit einem Java Deserialization Exploit.
Wir können diese Dateinamen mit der Abfrage labels:open-dir kombinieren, um offene Verzeichnisinfrastrukturen zu identifizieren, die Dateien mit denselben Namen hosten.
Pivotierung auf statische Dateinamen
Dateinamen wie a.exe können mit dem Parameter labels:open-dir kombiniert werden, um offene Verzeichnisse zu identifizieren, in denen sich Dateien mit demselben Namen befinden (allerdings nicht unbedingt mit demselben Inhalt).
Censys speichert den Inhalt offener Verzeichnisse im Feld services.http.response.body, so dass wir hier einen Dateinamen in Kombination mit labels:open-dir platzieren können
Wir können also nach offenen Verzeichnissen suchen, die a.exe enthalten, indem wir nach labels:open-dir und services.http.response.body:a.exe suchen. Diese einfache Suche ergibt 9 ähnliche Server.
Wie oben gezeigt, zeigt die Suche 9 offene Verzeichnisse, die a.exe enthalten.
Das erste Ergebnis der Suche ist 159.223.130[.]216. Ein Blick auf die zugehörige Host-Seite zeigt ein offenes Verzeichnis, in dem sich a.exe befindet, sowie weitere Dateien mit ähnlichen Ein-Zeichen-Namensschemata. Zusätzlich zu a.exe haben wir jetzt b.exe, c.exe und curl.exe.
Curl ist ein "legitimes" Tool, das zum Herunterladen von Dateien verwendet wird. Daher ist es unwahrscheinlich, dass es sich bei curl.exe um Malware handelt, sondern vielmehr um ein unterstützendes Tool, das zur "Installation" von curl bei Vorgängen verwendet wird, bei denen das Tool curl nicht vorhanden war.
Um die Art dieser Dateien zu bestätigen, können wir sie (mit einer Sandbox oder einem separaten Analysegerät) herunterladen, indem wir die Website direkt aufrufen und dann eine manuelle Analyse durchführen oder sie an eine Sandbox senden. Dies ist aus Gründen der Sicherheit nicht immer zu empfehlen, aber das ist ein Thema für eine andere Diskussion.
In cases where the infrastructure is not sensitive, the files can be scanned by inputting the URL directly into VirusTotal. In this case, we can input <IP>/b.exe and see that it has 34 detections and contains a Sliver C2 Implant.
Beachten Sie, dass diese Art des Scannens den Akteur oft darauf aufmerksam macht, dass seine Server untersucht werden. Sie sollten dies bei der Untersuchung der Infrastruktur berücksichtigen.
Die Datei b.exe hat 34 Entdeckungen, aber das offene Verzeichnis, in dem sie sich befindet, hat 0.
Das bedeutet, dass wir wahrscheinlich eine "neue" Infrastruktur gefunden haben und nur einen einfachen Dateinamen für unsere Analyse verwenden.
Wir können die Suchergebnisse weiter nach weiteren Instanzen von a.exe untersuchen.
Ein weiteres Ergebnis unserer vorherigen Suche ist 121.43.135[.]166, das a.exe und zahlreiche andere verdächtige Dateien enthält.
Das gleiche Muster der Dateinamen ist bei anderen Servern zu erkennen, die von der Suche zurückgegeben werden und die alle a.exe in Kombination mit anderen verdächtigen Dateien enthalten.
Pivotierung auf einen Exploit-Dateinamen
Die ursprüngliche IP enthielt eine weitere verdächtige Datei namens yaml-payload.jar. Wenn man nach dieser Datei googelt, stellt man fest, dass sie mit einem Yaml Deserialization Exploit zusammenhängt.
Indem wir den Prozess von vorher wiederholen, können wir ähnliche Server identifizieren, indem wir nach labels:open-dir und services.http.response.body: "yaml-payload.jar" suchen
Die einfache Suche ergibt 8 offene Verzeichnisse, die Dateien mit demselben Namen enthalten.
Eines der Ergebnisse enthält yaml-payload.jar und einen Verweis auf artifact_x86.exe, was ein gängiger Dateiname für Cobalt Strike ist.
Das bedeutet, dass unser einfacher Schwenk auf yaml-payload.jar wahrscheinlich zum Server eines Akteurs geführt hat, der Cobalt Strike ausnutzt.
Der Name "artifact_x86.exe " ist eindeutig genug, um als weiterer Pivot-Punkt verwendet werden zu können. Ein Analyst könnte den Namen "artifact_x86 .exe " als zusätzlichen Dreh- und Angelpunkt verwenden.
Dies wäre so einfach wie die Wiederholung der vorherigen Suchvorgänge mit unterschiedlichen Dateinamen im Feld services.http.response.body .
Zusammenfassung - Statische Dateinamen für Open Directory Hunting
Statische Dateinamen sind ein einfaches und sehr effektives Mittel, um neue bösartige offene Verzeichnisse zu entdecken.
Durch die Verwendung öffentlicher Berichte (Social Media, Intel Repos, interne Vorfälle) können Sie leicht einfache Dateinamen identifizieren, die zu einer neuen Infrastruktur führen können.
Um all dies zu erreichen, suchen Sie einfach nach labels:open-dir und fügen Sie dann den Namen Ihrer verdächtigen Datei in das Feld services.http.response.body ein.
Abschnitt 2: Autonome Systeme und Hosting-Provider
Die Suche nach offenen Verzeichnissen kann durch die Kombination von Hosting-Anbietern mit der labels:open-dir-Abfrage erheblich unterstützt werden.
Dies kann besonders effektiv sein, wenn ein Akteur einen einzigartigen oder ungewöhnlichen Hosting-Anbieter nutzt.
Betrachten Sie die IP 77.105.160.30 (ursprünglich geteilt durch @karol_paciorek). Dieser Server hat ein offenes Verzeichnis und wird auf EVILEMPIRE mit einer Autonomous System Number von 216309 gehostet.
Da es sich um einen ungewöhnlichen Anbieter handelt, können wir weitere offene Verzeichnisse ermitteln, indem wir die zugehörige ASN-Nummer mit labels:open-dir kombinieren.
Die Nutzung von EVILEMPIRE ist so einzigartig, dass es nur 8 offene Verzeichnisse gibt, die dort gehostet werden.
Eines dieser Ergebnisse ist 77.105.132[.]27der unseren Suchkriterien entspricht und bereits als bekanntes C2 markiert wurde.
Wenn Sie die Host-Seite aufrufen und sich den Inhalt des Verzeichnisses ansehen, scheinen dort sowohl Vidar- als auch Lumma-Malware zu hosten.
Zusammenfassung - Autonome Systeme und Hosting-Anbieter
Die Kombination der Suche nach offenen Verzeichnissen mit ungewöhnlichen Hosting-Anbietern kann schnell zu neuen Ergebnissen führen.
Dies funktioniert am besten, wenn der Anbieter ungewöhnlich oder dafür bekannt ist, bösartige Akteure zu beherbergen. Seien Sie also vorsichtig, wenn Sie diese Technik auf einen großen Anbieter wie Amazon oder CloudFlare anwenden. Große Anbieter wie diese können mit Zehntausenden von Ergebnissen in Verbindung gebracht werden, die ohne zusätzliche Filterung schwer zu analysieren und extrem anfällig für falsch positive Ergebnisse sind.
Bedenken Sie, dass CloudFlare allein im Jahr 2023 mit 38.614 offenen Verzeichnissen verlinkt war. Amazon wurde mit beachtlichen 21.805 verlinkt. Weitere Statistiken werden in "Dorking The Internet" ausführlich behandelt.
Abschnitt 3: Muster für Dateinamen und reguläre Ausdrücke
Im ersten Abschnitt haben wir statische Dateinamen verwendet, um zusätzliche offene Verzeichnisse anzusteuern. Es gibt jedoch eine viel bessere Möglichkeit, dies mit Hilfe regulärer Ausdrücke zu tun.
Betrachten Sie die Suche nach "Dateien mit dem Namen a.exe" gegenüber der Suche nach "JEDEM einzelnen Zeichen .exe". Die zweite Option ist allgemeiner (im guten Sinne) und ermöglicht eine effektivere Suche.
Wir können den Dateinamen a.exe mit Hilfe regulärer Ausdrücke abstrahieren, um stattdessen nach jeder aus einem Zeichen bestehenden ausführbaren Datei zu suchen. Für eine effektivere Suche können wir dies sogar auf jeden einstelligen Dateinamen mit den Erweiterungen exe, hta oder rtf erweitern.
Betrachten Sie die folgenden Dateinamen aus einer unserer früheren Suchen.
Das geöffnete Verzeichnis enthält 9 Dateien mit nur einem einzigen Zeichen vor der Erweiterung(a.dll, 1.rtf, a.hta usw.).
Anstatt nach diesen Namen einzeln zu suchen, sollten wir einen regulären Ausdruck erstellen, der nach einstelligen Dateinamen mit einer der Erweiterungen exe, rtf oder hta sucht.
Wir können einen einfachen Prototyp mit CyberChef erstellen und ihn dann dem Feld services.http.response.body hinzufügen.
Beachten Sie, dass wir jetzt den rohen HTML-Inhalt und nicht das HTML-Rendering aus den vorherigen Screenshots verwenden müssen, also fügen wir Folgendes hinzu .*\" zu beiden Seiten unserer regulären Ausdrücke hinzu. Dies berücksichtigt die HTML-Syntax (siehe unten) und gibt an, dass wir nur Dateien mit dem Namen a.exe und nicht solche, die a.exe enthalten, suchen.
Unten sehen wir die Anführungszeichen " vor und nach Dateinamen, die wir in unserem regulären Ausdruck berücksichtigen sollten.
Unter Berücksichtigung des rohen HTML können wir mit der folgenden Abfrage nach einstelligen Dateinamen suchen.
labels:open-dir und services.http.response.body:/.*\"\w\.(exe|hta|rtf)\".*/
Für diejenigen, die mit regulären Ausdrücken nicht vertraut sind, gibt es hier eine Visualisierung, die mit freundlicher Genehmigung von regexper.com erstellt wurde
Die Ausführung dieser neuen Suche liefert 57 Ergebnisse für offene Verzeichnisse mit einstelligen Dateinamen.
Eines dieser Ergebnisse ist 20.98.129[.]89die ein einzelnes Zeichen enthält e.hta Datei (die unserem regulären Ausdruck entspricht) sowie eine sehr verdächtige Nutzlast.exe.
Ein weiteres Suchergebnis ist 1.92.96[.]35, wo unser regulärer Ausdruck auf einstellige Dateinamen wie f.exe, m.exe, m.hta, p.hta passt .
Zusätzlich zu den übereinstimmenden Namen haben wir jetzt ein offenes Verzeichnis, das auf cs4.9 verweist, was wahrscheinlich ein Verweis auf Cobalt Strike Version 4.9 ist. Die Zeichenfolge cs4.9 eignet sich hervorragend für zusätzliche Pivots.
Ein weiteres Suchergebnis ist 38.206.173[.]58, das aufgrund des Vorhandenseins von unlocker.exe und READ_TO_DECRYPT.html Ransomware zu beherbergen scheint.
Hier gibt es zahlreiche Möglichkeiten für Dateien, die für die Umstellung auf zusätzliche Server genutzt werden könnten.
Zusammenfassung - Muster für Dateinamen und reguläre Ausdrücke
Dateinamensmuster in Form von regulären Ausdrücken können weitaus effektiver sein als eine statische Namenssuche. Wenn Ihnen mehrere Dateinamen mit unterschiedlichen, aber "ähnlichen" Werten auffallen, versuchen Sie, sie mit einem regulären Ausdruck zusammenzufassen.
Erweiterte Abfragen, die reguläre Ausdrücke verwenden, führen oft zu zusätzlichen bösartigen Servern.
Abschnitt 4: Kombinieren von Dateierweiterungen
Dateierweiterungen können eine weitere einfache und effektive Methode sein, um verdächtige offene Verzeichnisse zu identifizieren.
Beispielsweise ist die Kombination einer .exe- und einer .hta-Datei im selben geöffneten Verzeichnis selten und es ist unwahrscheinlich, dass sie in einem legitimen Verzeichnis vorkommt. So können wir diese Idee nutzen, um bösartige Server zu identifizieren. Dasselbe Konzept lässt sich auch auf eine .hta- und eine .ps1-Datei anwenden, die sich im selben Verzeichnis befinden.
Nehmen wir eines unserer früheren Ergebnisse, das eine Mischung aus .hta, .png, .exe, .msi und .txt enthält. Wir können diese Kombination (oder eine Teilmenge) verwenden, um zusätzliche Infrastruktur zu identifizieren.
Wir können eine Abfrage erstellen, die nach allen geöffneten Verzeichnissen sucht, die sowohl eine .hta- als auch eine .exe-Erweiterung enthalten.
labels:open-dir und same_service(services.http.response.body:*.hta* und services.http.response.body:*.exe*) und nicht services.http.response.body:*htaccess*
Ein paar kurze Anmerkungen zu dieser Anfrage:
- Same_service - Hiermit wird die Suche angewiesen, nur Ergebnisse einzuschließen, bei denen die Dateien auf demselben Port beobachtet wurden. Wir wollen keinen Server mit.hta an Port 443 und .exe separat an Port 80.
- Nicht .htaccess - Dies ist eine legitime Datei, die auf unsere Wildcard-Suche nach .hta passt, wir wollen sie aus unseren Ergebnissen ausschließen, ohne auf reguläre Ausdrücke zurückzugreifen.
Die Abfrage liefert 9 Ergebnisse, eines davon ist ein offenes Verzeichnis unter 20.163.176[.]155.
Dieses Verzeichnis entspricht unserer Suche nach einer .hta- und einer.exe-Datei für denselben Dienst.
Dieses offene Verzeichnis auf 20.163.176[.]155 enthält mehrere "Update"-Dateien, die von VirusTotal als Downloader markiert wurden. Wir sind also auf einen weiteren Server gestoßen, der bösartige Dateien enthält.
Das geöffnete Verzeichnis enthält auch ein neues Muster von ps1- und exe-Dateien , so dass wir unsere Abfrage anpassen können, um danach zu suchen und weitere verdächtige Ergebnisse zu ermitteln.
Mit dieser Abfrage wird nach offenen Verzeichnissen gesucht, die sowohl ein Powershell-Skript als auch eine ausführbare Datei enthalten.
labels:open-dir und same_service(services.http.response.body:*.ps1* und services.http.response.body:*.exe*)
Die Suche liefert 84 Ergebnisse für offene Verzeichnisse mit Powershell-Skripten und ausführbaren Dateien.
Eines dieser Ergebnisse ist 96.255.173[.]42, das sowohl .exe und ps1 als auch eine Sammlung anderer verdächtiger Dateien enthält, die wahrscheinlich mit dem PowerSploit Toolkit in Verbindung stehen.
Bonus Pivot auf Dateinamensmustern
Das zuvor gezeigte Verzeichnis enthält mehrere Dateien mit "power" im Dateinamen, gefolgt von einer ps1- oder py-Erweiterung.
Mit regulären Ausdrücken können wir dies in eine generische Abfrage für jedes offene Verzeichnis verwandeln, das.py oder ps1 und einen Dateinamen enthält, der mit power beginnt.
Wir können zunächst einen Prototyp für einen regulären Ausdruck mit CyberChef erstellen.
Wenn der reguläre Ausdruck funktioniert, können wir suchen nach .ps1 oder .py Dateien, deren Dateiname Power enthält.
Die Suche liefert 7 Ergebnisse, eines davon ist 95.111.214[.]111.
Wir können sehen, dass dieses Verzeichnis noch mehr Dateien enthält, die sich auf offensive Powershell-Toolkits beziehen.
Ein weiteres Ergebnis ist 116.114.20[.]180, das neben anderen verdächtigen Dateinamen auch powercat.ps1 enthält.
Die Powercat-Datei ist wahrscheinlich ein Verweis auf die Powershell-Implementierung von Netcat.
Zusammenfassung: Kombinieren von Dateierweiterungen
Dateierweiterungen können bei der Suche nach offenen Verzeichnissen ebenso nützlich und einfach sein wie Dateinamen.
Wenn eine Untersuchung ein offenes Verzeichnis mit einer ungewöhnlichen Kombination von Dateitypen ergibt, versuchen Sie, dies in Ihrer Abfrage zu nutzen. Sie werden überrascht sein, wie einfach dies ist, aber wie oft es zu neuen bösartigen Ergebnissen führen kann.
Schlussfolgerung
Wir haben nun 4 nützliche Techniken zur Identifizierung und Verfolgung bösartiger offener Verzeichnisse vorgestellt. Diese Techniken sind äußerst effektiv, um die von Bedrohungsakteuren genutzte Infrastruktur offener Verzeichnisse zu finden und zu verfolgen.
Obwohl diese Liste nicht vollständig ist, sind diese Techniken, sowohl einzeln als auch in Kombination, erstaunliche Methoden, die Sie in Ihrem Ermittlungswerkzeugkasten haben sollten.
Mit Ausnahme der regulären Ausdrücke sind alle diese Techniken in der Community-Edition von Censys zum Ausprobieren verfügbar.
Und für diejenigen, die Statistiken und tiefere Einblicke lieben, gibt es den Bericht "Dorking The Internet " von Censys. Dieser enorme 31-seitige Bericht befasst sich mit allen Einzelheiten der Offenlegung offener Verzeichnisse, einschließlich der Frage, wie und wo sie sowohl in böswilligen als auch in legitimen Szenarien gefunden werden.
Bonusbezogene Abfragen
Für Benutzer aus der Gemeinschaft
ANY open directory(Link)
Etiketten:open-dir
Verzeichnisse mit a.exe-Dateien öffnen(Link)
labels:open-dir und services.http.response.body:a.exe
Verzeichnisse öffnen, die "Payload.exe" enthalten
labels:open-dir und services.http.response.body:payload.exe
Offene Verzeichnisse, die auf CS4.9 verweisen(Link)
labels:open-dir und services.http.response.body:cs4.9
Für Benutzer mit Zugriff auf reguläre Ausdrücke
Verzeichnisse mit "Power"-Dateien mit der Erweiterung ps1 oder py öffnen
labels:open-dir und services.http.response.body:/.*power[a-z]+\.(ps1|py).*/
Öffnen von Verzeichnissen, die RTF-, HTA- oder PS1-Dateien mit einzelnen Zeichen enthalten
labels:open-dir und services.http.response.body:/.*\W\w\.(hta|rtf|ps1)\W.*/
Verzeichnisse öffnen, die auf eine beliebige Version von Cobalt Strike im Format csX.X verweisen(Link)
labels:open-dir und services.http.response.body:/.*\W(cs|cobalt)[34]\.\d(\.exe)?.*/
Öffnen Sie Verzeichnisse mit kurzen numerischen Namen für PNG-Dateien
labels:open-dir and services.http.response.body:/.*\”[0-9]{1,5}\.png\W.*/
Besuchen Sie Embee Research
Gehe zu Censys Search