Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
iocextract — Entschärfter Indikator für Kompromittierung (IOC) Extraktor. | Kitploit
Tools/GitHubGitHub/pedramamini/iocextract
Management von Indicators of Compromise (IOC)OSINT (Open-Source-Intelligence)Bedrohungsfeeds & AggregatorenForensikInformationsbeschaffungMalware-AnalyseDigitale ForensikBedrohungsanalyse
GitHubpedramamini/iocextract

iocextract

Entschärfter Indikator für Kompromittierung (IOC) Extraktor.

Repository anzeigen
58492vor 1 JahrVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Webseite

iocextract

Entwickelt von InQuest Build-Status Dokumentationsstatus PyPI-Version

Indicator of Compromise (IOC)-Extraktor für einige der am häufigsten verwendeten Artefakte.

Inhaltsverzeichnis

  • Übersicht
    • Das Problem
    • Unsere Lösung
    • Beispiel-Anwendungsfall
  • Installation
  • Verwendung
    • Bibliothek
    • Kommandozeilenschnittstelle
  • Hilfreiche Informationen
    • FAQ
    • Weitere Details
    • Eigener regulärer Ausdruck
    • Verwandte Projekte
    • Mitwirken

Übersicht

Das iocextract-Paket ist eine Bibliothek und eine Kommandozeilenschnittstelle (CLI) zum Extrahieren von URLs, IP-Adressen, MD5/SHA-Hashes, E-Mail-Adressen und YARA-Regeln aus Textkorpora. Es ermöglicht, codierte und „defanged" IOCs zu extrahieren und sie optional zu decodieren oder zu refangen.

Das Problem

Es ist gängige Praxis, dass Malware-Analysten oder Endpunkt-Software IOCs wie URLs und IP-Adressen „defangen", um eine versehentliche Exposition gegenüber lebenden schädlichen Inhalten zu vermeiden. Das Extrahieren und Aggregieren dieser IOCs ist für Analysten oft wertvoll. Leider übersehen bestehende „IOC-Extraktions"-Werkzeuge diese oft, da sie von Standard-Regex nicht erfasst werden.

Zum Beispiel die einfache Defanging-Technik, Punkte in eckige Klammern zu setzen:

root@kitploit:~
127[.]0[.]0[.]1

Vorhandene Werkzeuge, die einen einfachen IP-Adress-Regex verwenden, ignorieren diesen IOC vollständig.

Unsere Lösung

Durch die Kombination von speziell entwickelten Regex mit einer benutzerdefinierten Nachbearbeitung können wir „defanged" IOCs sowohl erkennen als auch entschleiern. Dies spart Zeit und Mühe für den Analysten, der sonst manuell IOCs finden und in maschinenlesbares Format konvertieren müsste.

Beispiel-Anwendungsfall

Viele Twitter-Nutzer posten C2s oder andere wertvolle IOC-Informationen mit defanged URLs. Zum Beispiel dieser Tweet von @InQuest:

root@kitploit:~
Empfohlene Lektüre und großartige Arbeit von @unit42_intel:
https://researchcenter.paloaltonetworks.com/2018/02/unit42-sofacy-attacks-multiple-government-entities/ ...
InQuest-Kunden haben seit dem 6.3.2017 Erkennung für Bedrohungen, die von hotfixmsupload[.]com
bereitgestellt werden, und seit dem 1.2.18 für cdnverify[.]net.

Wenn wir dies durch den Extraktor laufen lassen, können wir leicht die URLs extrahieren:

root@kitploit:~
https://researchcenter.paloaltonetworks.com/2018/02/unit42-sofacy-attacks-multiple-government-entities/
hotfixmsupload[.]com
cdnverify[.]net

Die Übergabe von refang=True zum Extraktionszeitpunkt würde die Verschleierung entfernen, aber da es sich um echte IOCs handelt, lassen wir sie in unserer Dokumentation defanged.

Installation

Möglicherweise müssen Sie die Python-Entwicklungs-Header installieren, um die regex-Abhängigkeit zu installieren. Auf Ubuntu/Debian-basierten Systemen versuchen Sie:

root@kitploit:~
sudo apt-get install python-dev

Installieren Sie dann iocextract von pip:

root@kitploit:~
pip install iocextract

Wenn Sie Probleme bei der Installation unter Windows haben, versuchen Sie, regex direkt zu installieren, indem Sie das passende Wheel von PyPI herunterladen und über pip installieren:

root@kitploit:~
pip install regex-2018.06.21-cp27-none-win_amd64.whl

Verwendung

Bibliothek

Versuchen Sie, einige defanged URLs zu extrahieren:

root@kitploit:~
import iocextract

content = \
"""
Ich liebe example[.]com wirklich!
Alle Bots sind heutzutage auf hxxp://example.com/bad/url unterwegs.
C2: tcp://example[.]com:8989/bad
"""

for url in iocextract.extract_urls(content):
    print(url)

    # Ausgabe

    # hxxp://example.com/bad/url
    # tcp://example[.]com:8989/bad
    # example[.]com
    # tcp://example[.]com:8989/bad

HINWEIS: Einige URLs können doppelt auftauchen, wenn sie von mehreren Regexen erfasst werden.

Wenn Sie möchten, können Sie IOCs auch „refangen" oder gängige Verschleierungsmethoden entfernen:

root@kitploit:~
import iocextract

for url in iocextract.extract_urls(content, refang=True):
    print(url)

    # Ausgabe

    # http://example.com/bad/url
    # http://example.com:8989/bad
    # http://example.com
    # http://example.com:8989/bad

Wenn Sie die extrahierten IOCs während der Extraktion überhaupt nicht defangen möchten, können Sie dies ebenfalls deaktivieren:

root@kitploit:~
import iocextract

content = \
"""
http://example.com/bad/url
http://example.com:8989/bad
http://example.com
http://example.com:8989/bad
"""

for url in iocextract.extract_urls(content, defang=False):
    print(url)

    # Ausgabe

    # http://example.com/bad/url
    # http://example.com:8989/bad
    # http://example.com
    # http://example.com:8989/bad

Alle extract_*-Funktionen in dieser Bibliothek geben Iteratoren zurück, keine Listen. Der Vorteil dieses Verhaltens ist, dass iocextract extrem große Eingaben mit sehr geringem Overhead verarbeiten kann. Wenn Sie jedoch aus irgendeinem Grund mehrmals über die IOCs iterieren müssen, müssen Sie die Ergebnisse als Liste speichern:

root@kitploit:~
import iocextract

content = \
"""
Ich liebe example[.]com wirklich!
Alle Bots sind heutzutage auf hxxp://example.com/bad/url unterwegs.
C2: tcp://example[.]com:8989/bad
"""

print(list(iocextract.extract_urls(content)))
# ['hxxp://example.com/bad/url', 'tcp://example[.]com:8989/bad', 'example[.]com', 'tcp://example[.]com:8989/bad']

Kommandozeilenschnittstelle

Ein Kommandozeilenwerkzeug ist ebenfalls enthalten:

root@kitploit:~
$ iocextract -h
    usage: iocextract [-h] [--input INPUT] [--output OUTPUT] [--extract-emails]
                  [--extract-ips] [--extract-ipv4s] [--extract-ipv6s]
                  [--extract-urls] [--extract-yara-rules] [--extract-hashes]
                  [--custom-regex REGEX_FILE] [--refang] [--strip-urls]
                  [--wide]

    Erweiterter Indicator of Compromise (IOC)-Extraktor. Wenn keine Argumente
    angegeben werden, ist das Standardverhalten, alle IOCs zu extrahieren.

    optionale Argumente:
      -h, --help            Zeigt diese Hilfemeldung an und beendet das Programm
      --input INPUT         Standard: stdin
      --output OUTPUT       Standard: stdout
      --extract-emails
      --extract-ips
      --extract-ipv4s
      --extract-ipv6s
      --extract-urls
      --extract-yara-rules
      --extract-hashes
      --custom-regex REGEX_FILE Datei mit benutzerdefinierten Regex-Zeichenfolgen, eine pro Zeile, mit jeweils einer Erfassungsgruppe
      --refang              Standard: nein
      --strip-urls          Entfernt möglichen Müll vom Ende der URLs. Standard: nein
      --wide                Verarbeitet die Eingabe vor, um Wide-Encoded-Zeichenübereinstimmungen zu ermöglichen. Standard: nein

HINWEIS: Nur URLs, E-Mails und IPv4-Adressen können „refangt" werden.

Hilfreiche Informationen

FAQ

Sind Sie...

F. Extrahieren von möglicherweise defanged IOCs aus Klartext, wie dem Inhalt von Tweets oder Blogbeiträgen?

A. Ja! Genau dafür wurde iocextract entwickelt und hier funktioniert es am besten. Möchten Sie einen Schritt weiter gehen und die Extraktion und Speicherung automatisieren? Schauen Sie sich ThreatIngestor an.

F. Extrahieren von hex- oder base64-codierten URLs?

A. Ja, aber die CLI liefert möglicherweise nicht die besten Ergebnisse. Versuchen Sie, ein Python-Skript zu schreiben und iocextract.extract_encoded_urls direkt aufzurufen.

Hinweis: Am Ende von URLs erhalten Sie höchstwahrscheinlich zusätzlichen Müll.

F. Extrahieren von nicht defanged IOCs aus HTML/XML/RTF?

A. Vielleicht, aber Sie sollten die Verwendung des --strip-urls-CLI-Flags (oder des strip=True-Parameters in der Bibliothek) in Betracht ziehen, und Sie könnten trotzdem etwas zusätzlichen Müll in Ihrer Ausgabe erhalten. Wenn Sie aus HTML extrahieren, sollten Sie etwas wie Beautiful Soup verwenden, um zuerst den Textinhalt zu isolieren und diesen dann an iocextract zu übergeben, wie hier.

F. Extrahieren von nicht defanged IOCs aus Binärdaten wie ausführbaren Dateien oder sehr großen Eingaben?

A. Es gibt eine sehr einfache Version davon, die bei Verwendung als Bibliothek verfügbar ist, aber sie erfordert den Parameter defang=False und könnte möglicherweise einige IOCs übersehen. Der Regex in iocextract ist darauf ausgelegt, flexibel zu sein, um defanged IOCs zu erfassen. Wenn Sie die benötigten Informationen nicht sammeln können, sollten Sie stattdessen etwas wie Cacador in Betracht ziehen.

Weitere Details

Diese Bibliothek unterstützt derzeit die folgenden IOCs:

  • IP-Adressen
    • IPv4 vollständig unterstützt
    • IPv6 teilweise unterstützt
  • URLs
    • Mit Protokollkennung: http, https, tcp, udp, ftp, sftp, ftps
    • Mit [.]-Anker, auch ohne Protokollkennung
    • IPv4- und IPv6-URLs (RFC2732) werden unterstützt
    • Hex-codierte URLs mit Protokollkennung: http, https, ftp
    • URL-codierte URLs mit Protokollkennung: http, https, ftp, ftps, sftp
    • Base64-codierte URLs mit Protokollkennung: http, https, ftp
  • E-Mails
    • Teilweise unterstützt, Verankerung auf @ oder at
  • YARA-Regeln
    • Mit imports, includes und Kommentaren
  • Hashes
    • MD5
    • SHA1
    • SHA256
    • SHA512
  • Telefonnummern
  • Benutzerdefinierte Regex
    • Mit genau einer Erfassungsgruppe

Für IPv4-Adressen werden die folgenden Defanging-Techniken unterstützt:

Für E-Mail-Adressen werden die folgenden Defanging-Techniken unterstützt:

Für URLs werden die folgenden Defanging-Techniken unterstützt:

HINWEIS: Die obigen Tabellen sind nicht vollständig, und andere URL/Defang-Muster können ebenfalls korrekt extrahiert werden. Wenn Ihnen etwas fehlt oder nicht richtig funktioniert, können Sie uns gerne über die GitHub Issues informieren.

Der base64-Regex wurde mit @deadpixi's base64-Regex-Tool erstellt.

Eigener regulärer Ausdruck

Wenn Sie die CLI verwenden möchten, um IOCs mit Ihrem eigenen benutzerdefinierten regulären Ausdruck zu extrahieren, erstellen Sie eine Textdatei mit einer Regex-Zeichenfolge pro Zeile und übergeben Sie sie mit dem --custom-regex-Flag. Stellen Sie sicher, dass jede Regex-Zeichenfolge genau eine Erfassungsgruppe enthält.

Zum Beispiel:

root@kitploit:~
http://(example\.com)/
(?:https|ftp)://(example\.com)/

Diese benutzerdefinierte Regex-Datei extrahiert die Domain example.com aus passenden URLs. Die (?: )-Nichterfassungsgruppe wird nicht in Übereinstimmungen aufgenommen.

Wenn Sie die gesamte Übereinstimmung extrahieren möchten, setzen Sie einfach Klammern um Ihre gesamte Regex-Zeichenfolge, wie folgt:

root@kitploit:~
(https?://.*?.com)

Wenn Ihr Regex ungültig ist, sehen Sie eine Fehlermeldung wie diese:

root@kitploit:~
Fehler im benutzerdefinierten Regex: fehlende ) an Position 5

Wenn Ihr Regex keine Erfassungsgruppe enthält, sehen Sie eine Fehlermeldung wie diese:

root@kitploit:~
Fehler im benutzerdefinierten Regex: keine solche Gruppe

Verwenden Sie immer eine einzelne Erfassungsgruppe, wenn Sie mit benutzerdefinierten Regex arbeiten. Hier ein kurzes Beispiel:

root@kitploit:~
[
    r'(my regex)',  # Dies ergibt 'my regex', wenn das Muster passt
    r'my (re)gex',  # Dies ergibt 're', wenn das Muster passt
]

Die Verwendung von mehr als einer einzelnen Erfassungsgruppe kann zu unerwarteten Ergebnissen führen. Sehen Sie sich dieses Beispiel an:

root@kitploit:~
[
    r'my regex',  # Dies ergibt nichts
    r'(my) (re)gex',  # Dies ergibt 'my', wenn das Muster passt
]

Warum? Weil das Ergebnis immer nur die erste Gruppen-Übereinstimmung jedes Regex zurückgibt.

Für komplexere Regex-Abfragen können Sie Erfassungs- und Nichterfassungsgruppen wie folgt kombinieren:

root@kitploit:~
[
    r'(?:my|your) (re)gex',  # Dies ergibt 're', wenn das Muster passt
]

Sie können jetzt die (?: )-Syntax für Nichterfassungsgruppen mit der ( )-Syntax für die Erfassungsgruppe vergleichen.

Verwandte Projekte

Wenn iocextract nicht Ihren Anwendungsfall erfüllt, gibt es mehrere ähnliche Projekte. Schauen Sie sich die Tags defang und indicators-of-compromise auf GitHub an, sowie:

  • Cacador in Go
  • ioc-extractor in JavaScript
  • Cyobstract in Python

Wenn Sie die IOC-Extraktion, -Anreicherung, -Export und mehr automatisieren möchten, schauen Sie sich ThreatIngestor an.

Wenn Sie mit YARA-Regeln arbeiten, könnte plyara für Sie interessant sein.

Mitwirken

Wenn Sie eine Defang-Technik haben, die nicht durch den Extraktor kommt, oder wenn Sie Fehler finden, sind Pull Requests und Issues immer willkommen. Die Bibliothek wird unter einer GPL-2.0 Lizenz veröffentlicht.

Wer verwendet iocextract?

  • InQuest
  • PacketTotal

Verwenden Sie es? Möchten Sie Ihre Seite hier aufgeführt sehen? Lassen Sie es uns wissen!

Tool herunterladen
TechnikDefangedRefanged
. -> [.]1[.]1[.]1[.]11.1.1.1
. -> (.)1(.)1(.)1(.)11.1.1.1
. -> \.1\.1\.1\.11.1.1.1
Teilweise1[.1[.1.]11.1.1.1
Beliebige Kombi1.)1[.1.)11.1.1.1
TechnikDefangedRefanged
. -> [.]me@example[.]com[email protected]
. -> (.)me@example(.)com[email protected]
. -> {.}me@example{.}com[email protected]
. -> _dot_me@example dot com[email protected]
@ -> [@]me[@]example.com[email protected]
@ -> (@)me(@)example.com[email protected]
@ -> {@}me{@}example.com[email protected]
@ -> _at_me at example.com[email protected]
Teilweiseme@} example[.com[email protected]
Hinzugefügte Leerzeichenme@example [.] com[email protected]
Beliebige Kombime @example [.)com[email protected]
TechnikDefangedRefanged
. -> [.]example[.]com/pathhttp://example.com/path
. -> (.)example(.)com/pathhttp://example.com/path
. -> \.example\.com/pathhttp://example.com/path
Teilweisehttp://example[.com/pathhttp://example.com/path
/ -> [/]http://example.com[/]pathhttp://example.com/path
Cisco ESAhttp:// example .com /pathhttp://example.com/path
:// -> __http__example.com/pathhttp://example.com/path
:// -> :\\http:\\example.com/pathhttp://example.com/path
: -> [:]http[:]//example.com/pathhttp://example.com/path
hxxphxxp://example.com/pathhttp://example.com/path
Beliebige Kombihxxp__ example( .com[/]pathhttp://example.com/path
Hex codiert687474703a2f2f6578616d706c652e636f6d2f70617468http://example.com/path
URL codierthttp%3A%2F%2fexample%2Ecom%2Fpathhttp://example.com/path
Base64 codiertaHR0cDovL2V4YW1wbGUuY29tL3BhdGgKhttp://example.com/path