Spiderfoot: OSINT-Tool (Open Source Intelligence) zur Analyse und Aufklärung

1. OSINTSpiderfoot

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:

New Scan

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:

Interface

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.

Summary Ansicht

Persönlich favorisiere ich die alphabetische Auflistung aller gefundenen Informationen in der Ansicht Browse:

Browse Ansicht

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.

Mitmachen ➡

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:

Errors

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. ;-)

Über den Autor | Kuketz

Mike Kuketz

In meiner freiberuflichen Tätigkeit als Pentester / Sicherheitsforscher (Kuketz IT-Security) schlüpfe ich in die Rolle eines »Hackers« und suche nach Schwachstellen in IT-Systemen, Webanwendungen und Apps (Android, iOS). Des Weiteren bin ich Lehrbeauftragter für IT-Sicherheit an der Dualen Hochschule Karlsruhe, sensibilisiere Menschen in Workshops und Schulungen für Sicherheit und Datenschutz und bin unter anderem auch als Autor für die Computerzeitschrift c’t tätig.

Der Kuketz-Blog bzw. meine Person ist regelmäßig in den Medien (heise online, Spiegel Online, Süddeutsche Zeitung etc.) präsent.

Mehr Erfahren ➡

SpendeUnterstützen

Die Arbeit von kuketz-blog.de wird zu 100% durch Spenden unserer Leserinnen und Leser finanziert. Werde Teil dieser Community und unterstütze auch du unsere Arbeit mit deiner Spende.

Folge dem Blog

Wenn du über aktuelle Beiträge informiert werden möchtest, hast du verschiedene Möglichkeiten, dem Blog zu folgen:

Bleib aktuell ➡


Diskussion
HilfeWenn du konkrete Fragen hast oder Hilfe benötigst, sind das offizielle Forum oder der Chat geeignete Anlaufstellen, um dein Anliegen zu diskutieren. Per E-Mail beantworte ich grundsätzlich keine (Support-)Anfragen – dazu fehlt mir einfach die Zeit. Kuketz-Forum

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.