1. OSINT
Unter dem Begriff Open Source Intelligence (OSINT) versteht man die Gewinnung von Informationen aus frei verfügbaren/offenen Quellen. Eine solche Quelle kann bspw. ein Printmedium wie eine Zeitschrift oder Tageszeitung sein, aber auch webbasierte Quellen. Die manuelle Suche nach Informationen ist jedoch zeitaufwendig und benötigt meist viele Ressourcen.
Mit OSINT-Tools wie SpiderFoot lässt sich die Informationsgewinnung automatisieren, indem unterschiedliche Datenquellen abgefragt und aufbereitet werden. SpiderFoot kann aus über 200 Quellen (Module) Informationen extrahieren. Zu den Quellen zählen bspw. Archive.org, BGPView, Google, Open Bug Bounty, Shodan und Whois.
Im vorliegenden Beitrag wird anhand von SpiderFoot demonstriert, wie mächtig die automatisierte Informationsgewinnung sein kann. Anhand eines Beispiel-Ziels (www.messenger-matrix.de) prüfen wir, ob wir Informationen wie E-Mail-Adresse(n), Namen, IP-Adresse, Domainnamen, Header-Informationen usw. gewinnen können.
2. SpiderFoot
Der Quellcode von SpiderFoot steht unter der GPL und ist über GitHub für jeden frei einsehbar. Das Tool ist für Linux/BSD, Windows und macOS verfügbar, setzt zur Ausführung allerdings eine Python-Umgebung voraus. Auf der Projektseite wird SpiderFoot wie folgt beschrieben:
SpiderFoot is an open source intelligence (OSINT) automation tool. It integrates with just about every data source available and utilises a range of methods for data analysis, making that data easy to navigate.
SpiderFoot lässt sich über die Kommandozeile (CLI) oder ein Webinterface steuern bzw. auswerten. Als Nutzer kann man aus über 200 verschiedenen Modulen wählen, die während einem Scanvorgang Informationen abfragen. Die Ergebnisse können im Anschluss in verschiedene Datenformate (CSV, JSON etc.) exportiert werden.
Die Zielgruppe von SpiderFoot sind in erster Linie Penetrationstester, die in der initialen Phase (Reconnaissance/Aufklärung) Informationen über ihr Ziel(-objekt) sammeln wollen. Aber auch Administratoren bzw. Verantwortliche von Webservern, die öffentlich aus dem Internet erreichbar sind, können SpiderFoot zur Bedrohungsanalyse nutzen und herausfinden, welche Informationen und damit eventuell auch Schwachstellen vorhanden sind. Last but not least: SpiderFoot wird natürlich auch von Hackern bzw. Black-Hats eingesetzt, die verwertbare Erkenntnisse über ihr Ziel erlangen wollen.
2.1 Kali Linux
Unter der Linux-Distribution Kali, die sich an Penetrationstester, Hacker und Co. richtet, ist SpiderFoot bereits vorinstalliert. Nachfolgende Darstellungen und Beschreibungen basieren auf SpiderFoot unter Kali Linux. Die Installation von SpiderFoot ist nicht Teil dieses Beitrags.
2.2 Erste Schritte
Über die Kommandozeile lässt sich SpiderFoot aufrufen bzw. steuern:
spiderfoot -h
Der Aufruf erzeugt einen Output, der die möglichen Optionen zur Steuerung von SpiderFoot darstellt:
usage: sf.py [-h] [-d] [-l IP:port] [-m mod1,mod2,...] [-M] [-s TARGET] [-t type1,type2,...] [-T] [-o tab|csv|json] [-H] [-n] [-r] [-S LENGTH] [-D DELIMITER] [-f] [-F type1,type2,...] [-x] [-q] [-V] SpiderFoot 3.5.0: Open Source Intelligence Automation. optional arguments: -h, --help show this help message and exit -d, --debug Enable debug output. -l IP:port IP and port to listen on. -m mod1,mod2,... Modules to enable. -M, --modules List available modules. -s TARGET Target for the scan. -t type1,type2,... Event types to collect (modules selected automatically). -T, --types List available event types. -o tab|csv|json Output format. Tab is default. -H Don't print field headers, just data. -n Strip newlines from data. -r Include the source data field in tab/csv output. -S LENGTH Maximum data length to display. By default, all data is shown. -D DELIMITER Delimiter to use for CSV output. Default is ,. -f Filter out other event types that weren't requested with -t. -F type1,type2,... Show only a set of event types, comma-separated. -x STRICT MODE. Will only enable modules that can directly consume your target, and if -t was specified only those events will be consumed by modules. This overrides -t and -m options. -q Disable logging. This will also hide errors! -V, --version Display the version of SpiderFoot and exit.
Für den vorliegenden Beitrag wird das Webinterface von SpiderFoot genutzt. Über die Kommandozeile wird SpiderFoot eher dann genutzt, wenn es Teil eines Skripts ist oder gezielt Module eingebunden werden, die Informationen über mehrere Ziele abfragen sollen.
Damit SpiderFoot über einen Browser gesteuert werden kann, muss zunächst der Webserver lokal auf der Kali-Linux-Maschine gestartet werden:
spiderfoot -l 127.0.0.1:5000
Mit diesem Aufruf wird der Webserver von SpiderFoot lokal (127.0.0.1) auf dem Port 5000 gestartet. Der Aufruf im Browser ist dann wie folgt:
http://127.0.0.1:5000/
3. Scanvorgang einleiten
Sobald das Webinterface aufgerufen ist, kann der Scanvorgang eingeleitet werden. Als Beispiel-Ziel habe ich meine Domain www.messenger-matrix.de gewählt. Da die Website insgesamt nur wenig Informationen beinhaltet, dürfte es interessant sein, was SpiderFoot an Erkenntnissen zusammentragen kann.
Vor dem Scanvorgang kann man über die Tabs By Use Case
, By Required Data
und By Module
einstellen, welche Module bzw. Informationsquellen SpiderFoot einbinden/abfragen soll. Standardmäßig ist beim »Tab By Use Case« die Option All
vorausgewählt – es werden also alle Informationsquellen abgefragt. Sobald bei Scan Name
und Scan Target
der entsprechende Name bzw. das Ziel eingetragen ist, kann es mit einem Klick auf Run Scan Now
losgehen:
Hinweis
Während dem Scanvorgang bzw. der Nutzung von SpiderFoot im Browser muss das Fenster der Kommandozeile geöffnet bleiben.3.1 Ergebnisse
Je nach Ziel kann der Scanvorgang mehrere Stunden bis Tage dauern. SpiderFoot zeigt den aktuellen Stand unter Status an. Sobald dort Finished
erscheint, ist der Vorgang abgeschlossen. Beim Beispiel-Ziel sind knapp vier Stunden verstrichen:
Mit einem Klick auf den Namen »www.messenger-matrix.de« öffnen sich die Details bzw. Ergebnisse. In einem Diagramm werden auf der x-Achse die Informationskategorien, auf der y-Achse die dazugehörige Anzahl dargestellt. Die Balken des Diagramms lassen sich übrigens anklicken. Über die Tabs Browse
und Graph
erhält man eine andere Aufbereitung der Informationen.
Persönlich favorisiere ich die alphabetische Auflistung aller gefundenen Informationen in der Ansicht Browse
:
Die Informationen, die SpiderFoot zusammenträgt, müssen natürlich ausgewertet und interpretiert werden. Viele Informationen fallen unter die Kategorie False-Positive. Im übertragenen Sinne bedeutet das: Der Patient ist gesund, aber der Test hat ihn fälschlicherweise als krank eingestuft. Deshalb muss man genau hinschauen und prüfen, ob die gefundenen Informationen nützlich sind oder eine »Falschmeldung« vorliegt. In der Unterkategorie Human Name
hat SpiderFoot bzw. ein Modul bspw. die folgenden »Namen« gefunden:
- Debian Bullseye
- Keine Einbindung
- Kuketz IT-Security
- Urheberrechte Dritter
- Weitere Angaben
- […]
Außer Kuketz IT-Security
hat SpiderFoot keine weiteren »menschlichen Namen« identifiziert. Solche falschen Informationen sind nicht selten. Daher kann ich es nur nochmals betonen: Die Informationen müssen ausgewertet und interpretiert werden.
Nachfolgend liste ich beispielhaft auf, welche Informationen SpiderFoot zur Domain www.messenger-matrix.de aufspüren konnte:
- Domain Name
- kuketz-blog.de (Verknüpfung/Verlinkung zum Blog)
- netcup.de (der Hosting-Provider)
- Email Address
- abuse@netcup.de
- mail@netcup.de
- IP Address
- 46.38.242.112 (IP-Adresse Webserver)
- Internet Name
- captiveportal.kuketz.de
- root-dns.netcup.net
- second-dns.netcup.net
- third-dns.netcup.net
- www.kuketz-blog.de
- BGP AS Membership
- 197540 (Router-Knoten bzw. IP-Netze von netcup)
- Blacklisted Co-Hosted Site
- Comodo Secure DNS [solawi-karotte.de]
- Co-Hosted Site
- captiveportal.kuketz.de
- kuketz-security.de
- kuketz.de
- www.kuketz-blog.de
- HTTP Headers
- […] „strict-transport-security“: „max-age=31536000; includeSubdomains; preload“, „x-content-type-options“: „nosniff“, „x-frame-options“: „DENY“, „referrer-policy“: „same-origin“, „permissions-policy“: „camera =(), microphone=()“, „expect-ct“: „enforce, max-age=21600“, „expect-staple“: „max-age=31536000; includeSubdomains; preload“, „content-security-policy“: „default-src ’none‘; img-src ’self‘; style-src ’self‘ ‚unsafe-inline‘; font-src ’self‘; base-uri ’none‘; frame-ancestors ’none‘; form-action ’none‘; block-all-mixed-content“ […]
- Linked URL – External
- https://core.telegram.org/mtproto | https://www.messenger-matrix.de/messenger-matrix.html
- https://de.m.wikipedia.org/wiki/Omemo | https://www.messenger-matrix.de/messenger-matrix.html
- https://de.wikipedia.org/wiki/Authenticated_Encryption | https://www.messenger-matrix.de/datenschutzhinweis.html
- https://www.kuketz-blog.de/threema-instant-messaging-dienst-aus-der-schweiz-messenger-teil2/ | https://www.messenger-matrix.de/messenger-matrix.html
- https://www.kuketz-blog.de/unterstuetzen/ | https://www.messenger-matrix.de/
- Name Server (DNS NS Records)
- root-dns.netcup.net
- second-dns.netcup.net
- third-dns.netcup.net
- Open TCP Port
- 46.38.242.112:443
- 46.38.242.112:80
- Physical Address
- Daimlerstr. 25, 76185, Karlsruhe, GERMANY (netcup Adresse)
- Physical Coordinates
- 49.02908335,8.356956570270647 (GPS-Koordinaten)
- Raw DNS Records
- messenger-matrix.de. 86376 IN NS second-dns.netcup.net.
- messenger-matrix.de. 86376 IN NS root-dns.netcup.net.
- messenger-matrix.de. 86376 IN NS third-dns.netcup.net.
- SSL Certificate – Issued by
- <Name(C=US,O=Let’s Encrypt,CN=R3)> | www.messenger-matrix.de
- SSL Certificate Host Mismatch
- captiveportal.kuketz.de | www.messenger-matrix.de (SSL Mismatch wird durch Server Name Indication (SNI) korrigiert)
- Web Server
- nginx
Obwohl die Webseite www.messenger-matrix.de äußerst minimalistisch ist und wenig Inhalt bereitstellt, konnte SpiderFoot einige Informationen zusammentragen. Als Administrator einer Webseite kennt man diese Informationen vermutlich alle – wenn nicht, ist das eine gute Gelegenheit sich damit zu befassen. Penetrationstestern und auch Black-Hats dient diese Informationsbasis nun für weitere Analysen bzw. der Angriffsvorbereitung. SpiderFoot trägt sozusagen die Grundinformationen zusammen, teilweise aber auch sensible Informationen über mögliche Schwachstellen, vergessene Backups oder Login-Daten. Bei der Auswertung lohnt es sich daher immer genau hinzuschauen.
Hilf mit die Spendenziele zu erreichen!
Unabhängig. Kritisch. Informativ. Praxisnah. Verständlich.
Die Arbeit von kuketz-blog.de wird vollständig durch Spenden unserer Leserschaft finanziert. Sei Teil unserer Community und unterstütze unsere Arbeit mit einer Spende.
3.2 Errors
Während dem Scanvorgang sind 40 Fehler aufgetreten, auf die man bei der Auswertung der Ergebnisse ebenfalls einen Blick werfen sollte. Erreichbar sind diese Meldungen über die Auswahl Log
. Unter Type
sollte man die Darstellung mit der Eingabe ERROR auf die Fehlermeldungen reduzieren:
Einige der Fehlermeldungen sind aufgrund fehlender API-Keys entstanden. Zur Erinnerung: Als Nutzer kann man aus über 200 verschiedenen Modulen wählen, die während einem Scanvorgang Informationen abfragen. Einige dieser Module benötigen allerdings einen API-Key bzw. eine vorausgegangene Registrierung, um die Informationsquelle abfragen zu dürfen. Welche Module bzw. Informationsquelle für einen Scan benötigt werden, müsst ihr selbst abwägen.
Abgesehen von den Fehlermeldungen zu den fehlenden API-Keys sind meist auch Netzwerkfehler dabei:
- Failed to establish a new connection
- NewConnectionError
Die meisten Fehler entstehen allerdings durch die Basiskomponente sflib, die unter anderem zum Verbindungsaufbau eingesetzt wird. Während dem Scanvorgang entstehen dann Fehler wie dieser hier:
Failed to connect to https://www.tripadvisor.com/Profile/kuketzt-security
Solche Fehler entstehen schlichtweg dadurch, weil Spiderfoot gefundene Wörter/Strings von der Webseite in diverse URL-Abfragen integriert, um zu prüfen, ob bspw. ein Tripadvisor-Profil existiert. Bei diesen Prüfungen entstehen je nach verwendeter Kombination natürlich haufenweise Fehler – im Sinne eines möglichst vollständigen OSINT sind solche Abfragen aber notwendig/gewollt.
4. Weitere OSINT-Tools
Neben Spiderfoot gibt es noch einige weitere OSINT-Tools. Einige davon sind auf das Zusammentragen von Informationen aus möglichst unterschiedlichen Informationsquellen spezialisiert. Dazu zählen unter anderem:
- Maltego: Quelloffenes grafisches Link-Analyse-Tool zum Sammeln und Verbinden von OSINT.
- theHarvester: Einfach zu bedienendes, aber dennoch leistungsstarkes und effektives Tool, das für die frühe Phase eines Penetrationstests eingesetzt wird.
- Maryam: Ein modulares Open-Source-Framework, das auf OSINT und Datenerfassung basiert.
- OWASP Amass: Hilft bei der Kartierung von Angriffsflächen im Netzwerk und bei der Erkennung externer Ressourcen mit Hilfe von frei verfügbaren Informationsquellen.
Andere OSINT-Tools sind auf spezielle Informationsquellen wie GitHub fokussiert:
- Zen: Extrahiert die E-Mail-Adressen von GitHub-Nutzern.
- GitGuardian: Überwacht öffentliche GitHub-Repositories. Scannt und meldet sensible Informationen (bspw. Passwörter, Crypto-Keys etc.)
- Wraith: Kann sensible Informationen/Geheimnisse wie Passwörter, Crypto-Keys, Backups etc. finden.
- truffleHog: Ebenfalls auf die Auffindung von sensible Informationen/Geheimnissen spezialisiert.
- Stargather: Extrahiert aus GitHub-Repositories Informationen wie E-Mail-Adressen, Twitter-Accounts, Unternehmen, Follower etc.
- […]
5. Fazit
Wie sagt man so schön:
Wissen ist Macht
Und genau für diesen Zweck sind OSINT-Tools ausgelegt. Die gewonnenen Informationen dienen als Grundlage bzw. Ausgangslage für weitere Schritte. Wie diese Schritte aussehen, hängt natürlich von der Perspektive ab. Ein Penetrationstester/(Black|White)-Hat nutzt die Informationen vermutlich zur Identifikation von möglichen Angriffsvektoren. Administratoren wiederum können die Informationen zur Bedrohungs- bzw. Risikoanalyse nutzen und herausfinden, welche Schwachstellen eventuell vorhanden sind.
Nutzt solche Tools bitte mit bedacht und wenn ihr sie nicht auf eigene Ziele anwendet, dann solltet ihr dazu entweder einen Auftrag haben oder eure Spuren gut verschleiern. ;-)
Wenn du über aktuelle Beiträge informiert werden möchtest, hast du verschiedene Möglichkeiten, dem Blog zu folgen:
Abschließender Hinweis
Blog-Beiträge erheben nicht den Anspruch auf ständige Aktualität und Richtigkeit wie Lexikoneinträge (z.B. Wikipedia), sondern beziehen sich wie Zeitungsartikel auf den Informationsstand zum Zeitpunkt des Redaktionsschlusses.Kritik, Anregungen oder Korrekturvorschläge zu den Beiträgen nehme ich gerne per E-Mail entgegen.