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
HTTP-Basma — In the realm of cybersecurity, accurately identifying and characterizing web servers is crucial for threat detection, vulnerability assessment, and network mapping. We introduce HTTP-Basma, a novel active fingerprinting algorithm that unveils unique server profiles through a multi-layered approach. | Kitploit
Tools/GitHubGitHub/netomize/http-basma
ReconnaissanceNetwork MappingVulnerability AnalysisInformation GatheringWeb SecurityMalware AnalysisCommand and ControlThreat IntelligenceRed Teaming
GitHubnetomize/http-basma

HTTP-Basma

Repository anzeigen
vor 21 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Webseite

Über

In the realm of cybersecurity, accurately identifying and characterizing web servers is crucial for threat detection, vulnerability assessment, and network mapping. We introduce HTTP-Basma, a novel active fingerprinting algorithm that unveils unique server profiles through a multi-layered approach.

Teilen
HTTP-Basma Logo

Adaptives Fingerprinting: HTTP-Basma's Multi-Stage-Probing zur granularen Server-Unterscheidung

HTTP-Basma ist live unter https://httpbasma.netomize.ca/

Einleitung

Im Bereich der Cybersicherheit ist die genaue Identifizierung und Charakterisierung von Webservern für die Bedrohungserkennung, Schwachstellenbewertung und Netzwerkkartierung von entscheidender Bedeutung. Wir stellen HTTP-Basma vor, einen neuartigen aktiven Fingerprinting-Algorithmus, der durch einen mehrschichtigen Ansatz einzigartige Serverprofile aufdeckt und so diese Herausforderung angeht.

Hauptmerkmale: Maßgeschneiderte Anfragen, aufschlussreiche Antworten: HTTP-Basma sendet 8 sorgfältig entwickelte HTTP-Probes, die charakteristische Antworten hervorrufen, die Serverkonfigurationen widerspiegeln. Duales Hashing für Vielseitigkeit. Der Algorithmus generiert zwei Hashes:

  • Einen 38-Byte-Fuzzy-Hash, „verbosus“, der umkehrbar ist
  • Einen 16-Byte-Einweg-Hash, „pacto“, der von verbosus abgeleitet ist und die Privatsphäre und Sicherheit erhöht

Clustering und Jagd: Diese Hashes ermöglichen Server-Clustering, die Identifizierung einzigartiger und ähnlicher Server sowie die Verfolgung von Angreifern mit erhöhter Sicherheit.

Modulares Design zur Erweiterung: Die Architektur des Algorithmus fördert das Hinzufügen neuer Hashing-Varianten und begünstigt Zusammenarbeit und Anpassungsfähigkeit.

In diesem Papier betrachten wir zunächst bemerkenswerte bestehende Arbeiten zum HTTP-Fingerprinting und untersuchen dann die Funktionalität, das Design, die Architektur und die Ergebnisse des Algorithmus. Darüber hinaus werden wir überzeugende Ergebnisse aus dem Scannen der Top-1-Million-Majestic-Websites vorstellen, einschließlich der Identifizierung und Clusterung von C&C-HTTP-Servern für verschiedene Malware-Familien.


Der Kern des HTTP-Basma-Algorithmus besteht darin, 8 speziell entwickelte HTTP-Anfragen mit unterschiedlichen Anforderungen zu senden, um verschiedene Antworten vom Server zu erhalten. Sobald die Serverantwort abgerufen ist, wird die HTTP-Statuszeile chirurgisch nach allen Elementen seziert und optimal codiert. Zusätzlich werden ausgewählte Header aus der Serverantwort ebenfalls auf Codierung geprüft.

Die gesendeten Anfragen sind von diesen Typen:

  1. P1 – GET Normal – Gültige Anfrage
  2. P2 – GET Anfrage mit ungültiger HTTP-Version
  3. P3 – GET Anfrage auf zufällige Ressource
  4. P4 – Anfrage mit zufälligem Verb
  5. P5 – get Kleingeschriebenes Verb
  6. P6 – GET Anfrage – Accept-Encoding – Voll
  7. P7 – GET Anfrage – Accept-Encoding – Weniger
  8. P8 – OPTIONS Anfrage

Nach jeder Anfrage wird die Antwort des Servers analysiert, um bestimmte Header und deren Werte zu extrahieren. Diese extrahierten Daten werden weiterverarbeitet, einschließlich Sektion und Codierung, um einen umkehrbaren Fingerabdruck zu erzeugen.

Die vollständigen technischen Details zur Funktionsweise des Algorithmus finden Sie im beigefügten Papier.

Diese modulare Designphilosophie behandelt jeden Anfrage-Fingerabdruck als Baustein, was elegantes Refactoring ermöglicht, mit der Möglichkeit, den Fingerabdruck jeder Anfrage hinzuzufügen oder zu entfernen.

Beispiele für Fingerabdrücke:

CobaltStrike

root@kitploit:~
  - verbosus fp: 011420958a0014514bd5221420958a221420958a221420958a2200001420958a22000000001f
  - pacto fp: 02464ae8b7d86f82c9918e2c2b9d6b91
  - Hinweis: Falsch-Positiv-Rate (72/986.910)

Havoc

root@kitploit:~
  - verbosus fp: 01142494d60914514bd522142494d6221420958a701420958a220000140e04922032c37f1609
  - pacto fp: 020769322f3d94ac2f258ddf5ce08502
  - Hinweis-1: Falsch-Positiv-Rate 0
  - Hinweis-2: tevedadav.site/43.209.165.126:443 (TLS)
    - sample-(sha-256): 9aa1dec8dd12f8adc7fc1274e1958f3613450109ee8b4ec6442a0fcf06df0972

BruteRatel

root@kitploit:~
  - verbosus fp: 01140a85e40014512f3612140a85e422140a85e422140a85e4220000140a85e4220000000001
  - pacto fp: 0207292309a7a7e798e417d69df5f2a5
  - Hinweis: Falsch-Positiv-Rate (73/986.910)

Google

root@kitploit:~
  - verbosus fp: 01140a85e4001320958a22142494d62214254c5e2214254c5e22080014254c5e220000000000
  - pacto fp: 0202be780e1eaae0eaa6184e20c909b6
  - Hinweis: Falsch-Positiv-Rate (4/986.910)

YouTube

root@kitploit:~
  - verbosus fp: 01140a85e4011320958a22142494d67214254c5e2214254c5e22080014254c5e220000000000
  - pacto fp: 02cc5be6d05192e17de041538508bc22
  - Hinweis: Falsch-Positiv-Rate (38/986.910)

X

root@kitploit:~
  - verbosus fp: 01140a85e40914514bd522140a85e4721420958a701420958a220800140a85e4720000001609
  - pacto fp: 0221b4e46bbd0e5c037f5a852ca3fdc0
  - Hinweis: Falsch-Positiv-Rate (6/986.910)

HTTP-Basma Tool

HTTP-Basma ist ein C++-Tool, das ich entwickelt habe, um die Praktikabilität und Durchführbarkeit dieses Algorithmus zu demonstrieren. Es nutzt die Chilkat-Bibliothek für alle HTTP-Socket-Interaktionen und verwendet andere unterstützende Klassen innerhalb der Bibliothek. Darüber hinaus enthält das Tool eine Demangler-Funktion, die den verbosus-Fuzzy-Hash sezieren und umkehren kann und ein umfassendes JSON-Objekt ausgibt, sowie eine Comparator-Funktion, die die Unterschiede zwischen zwei verbosus-Fingerabdrücken ausgibt.

Beachten Sie, dass einige Ausgaben des Tools leicht unterschiedliche Probennummern verwenden können, aber die zugrunde liegende Reihenfolge bleibt konsistent: P1->P1, P2->P2, P3->P3, P4->P4, P->P5, P6->P6F, P7->P6L, P8->P7a.

Optionen des Tools

klicken zum Erweitern
root@kitploit:~
Usage:
  HTTP-Basma [OPTION...]

  -d, --domain arg         domains/IPs (you may query multiple domains, comma separated)
  -p, --port arg           port number
  -s, --ssl                does the HTTP connection have to be carried over SSL/TLS?
  -q, --qpath              check domain with url path included (not recommended)
  -w, --redirect           enable/disable HTTP redirects. If disabled/false, only the next redirect is followed,
                           otherwise, all redirects are followed (default: true)
  -t, --ctimeout arg       socket connection timeout value in seconds (default: 1)
  -g, --rtimeout arg       socket read (from the server) timeout value in seconds (default: 1)
  -e, --sleep arg          the duration (in milliseconds) to pause between each request (default: 100)
  -x, --proxy arg          proxy config: <"socks4|socks5|http">,<domain>,<port>,<bool:direct_tls>,<login>,<pass>
                                         all values are comma-separated. <direct_tls> is ignored with a non-HTTP proxy
  -f, --file arg           file with list of domains/IPs (requires "-c/--csv" or "-j/--json")
  -P, --parallel           Scan list of domains passed via the "-f/--file" option in parallel
  -c, --csv                save to csv file; if the option 'n' is not specified, the CSV filename will be auto
                           generated
  -n, --csvfile arg        name of the CSV file
  -j, --json               save to json file; if the option 'l' is not specified, the JSON filename will be auto
                           generated
  -l, --jsonfile arg       name of the JSON file
  -r, --saveh              save request response headers
  -o, --pjson              display fingerprint dissection to the console as a JSON object
  -i, --demangle_json arg  demangle a fingerprint into a detailed json format (you can have more than one, comma
                           separated)
  -u, --demangle_txt arg   output a concise text format of the fingerprint, comma-separated for multiple results
  -C, --compare arg        compare two verbosus fingerprints (comma-separated)
  -a, --pacto arg          obtain the Pacto fingerprint using Verbosus
  -h, --help               print usage	

Detaillierte Ausgabe

Wenn eine bestimmte Domain/IP angefragt wird, kann die Antwort in einer CSV- oder JSON-Datei mit einer Vielzahl von Informationen über die Server-Antwort-Header und den eindeutigen Fingerabdruck jeder Probe gespeichert werden.

Um beispielsweise den Fingerabdruck des Servers https://google.com zu erhalten und die Ergebnisse in einer JSON- und CSV-Datei zu speichern, während die HTTP-Antwort-Header jeder Probe gespeichert werden:

root@kitploit:~
HTTPBasma.exe -d https://google.com --json --csv --saveh

Im Ordner Output finden Sie die CSV-Datei google_hb_results_2026-05-19_08-35-38_am.csv und die JSON-Datei google_hb_results_2026-05-19_08-35-38_am.json.

Der Demangler

Die Demangler-Funktion des Tools „-i/--demangle_json“ nimmt einen verbosus-Fingerabdruck und rekonstruiert die Attribute jeder Probe, wobei ein umfassendes JSON-Objekt ausgegeben wird. Bemerkenswerterweise verwendet der Demangler beim Versuch, die FNV-1a-Hashes umzukehren, zwei lokale Datenbanken: options.csv für erlaubte HTTP-Methoden und status_line_db.csv für Statuszeilen-Grundphrasen. Wenn eine dieser Datenbankdateien fehlt, wird die entsprechende Hash-Umkehrfunktion automatisch deaktiviert. Diese Datenbanken wurden aus einem Scan der Top-1-Million-Majestic-Websites zusammengestellt.

Das Demangling des verbosus-Fingerabdrucks für die Domain example.com:

root@kitploit:~
HTTPBasma.exe --demangle_json 01140a85e40014514bd522142494d67214254c5e721420958a22020214254c5e720000001609
Demangler Ausgabe (klicken zum Erweitern)
root@kitploit:~
{
  "type": "verbosus",
  "fp": "01140a85e40014514bd522142494d67214254c5e721420958a22020214254c5e720000001609",
  "p1": {
    "type": "get_normal",
    "fp": "140a85e400",
    "status_line": {
      "http_version": {
        "fp": "14",
        "val_cmt": "HTTP/1.1"
      },
      "status_code": {
        "fp": "0a",
        "val_cmt": "200"
      },
      "http_reason": {
        "fp": "85e4",
        "val_cmt": "OK"
      },
      "sl_reversed_db": {
        "http_version": "HTTP/1.1",
        "status_code": [
          200,
          404,
          403,
          500,
          204,
          999,
          888,
          603
        ],
        "http_reason": "OK"
      }
    },
    "sts_hdr": {
      "fp": "00",
      "cmt": "this header is not used"
    }
  },
  "p2": {
    "type": "get_invalid_ver_nb",
    "fp": "14514bd522",
    "status_line": {
      "http_version": {
        "fp": "14",
        "val_cmt": "HTTP/1.1"
      },
      "status_code": {
        "fp": "51",
        "val_cmt": "505"
      },
      "http_reason": {
        "fp": "4bd5",
        "val_cmt": "HTTP Version Not Supported"
      },
      "sl_reversed_db": {
        "http_version": "HTTP/1.1",
        "status_code": [
          505
        ],
        "http_reason": "HTTP Version Not Supported"
      }
    },
    "cont_len_hdr": {
      "fp": "22",
      "name": "Content-Length",
      "value": ">1",
      "cmt": "content-length/transfer-encoding:chunked header is present with either of the size values: [0,1,>1]"
    },
    "cnx": {
      "ka": false,
      "c": true
    }
  },
  "p3": {
    "type": "get_rnd_resource",
    "fp": "142494d672",
    "status_line": {
      "http_version": {
        "fp": "14",
        "val_cmt": "HTTP/1.1"
      },
      "status_code": {
        "fp": "24",
        "val_cmt": "404"
      },
      "http_reason": {
        "fp": "94d6",
        "val_cmt": "Not Found"
      },
      "sl_reversed_db": {
        "http_version": "HTTP/1.1",
        "status_code": [
          404,
          403,
          501,
          410,
          204,
          400,
          200,
          418
        ],
        "http_reason": "Not Found"
      }
    },
    "cont_len_hdr": {
      "fp": "72",
      "name": "Transfer-Encoding",
      "value": ">1",
      "cmt": "content-length/transfer-encoding:chunked header is present with either of the size values: [0,1,>1]"
    },
    "cnx": {
      "ka": true,
      "c": false
    }
  },
  "p4": {
    "type": "get_rnd_verb",
    "fp": "14254c5e72",
    "status_line": {
      "http_version": {
        "fp": "14",
        "val_cmt": "HTTP/1.1"
      },
      "status_code": {
        "fp": "25",
        "val_cmt": "405"
      },
      "http_reason": {
        "fp": "4c5e",
        "val_cmt": "Method Not Allowed"
      },
      "sl_reversed_db": {
        "http_version": "HTTP/1.1",
        "status_code": [
          405,
          403,
          204,
          418,
          404
        ],
        "http_reason": "Method Not Allowed"
      }
    },
    "cont_len_hdr": {
      "fp": "72",
      "name": "Transfer-Encoding",
      "value": ">1",
      "cmt": "content-length/transfer-encoding:chunked header is present with either of the size values: [0,1,>1]"
    },
    "cnx": {
      "ka": true,
      "c": false
    }
  },
  "p5": {
    "type": "get_lowercase_verb",
    "fp": "1420958a22",
    "status_line": {
      "http_version": {
        "fp": "14",
        "val_cmt": "HTTP/1.1"
      },
      "status_code": {
        "fp": "20",
        "val_cmt": "400"
      },
      "http_reason": {
        "fp": "958a",
        "val_cmt": "Bad Request"
      },
      "sl_reversed_db": {
        "http_version": "HTTP/1.1",
        "status_code": [
          400,
          422,
          405,
          401
        ],
        "http_reason": "Bad Request"
      }
    },
    "cont_len_hdr": {
      "fp": "22",
      "name": "Content-Length",
      "value": ">1",
      "cmt": "content-length/transfer-encoding:chunked header is present with either of the size values: [0,1,>1]"
    },
    "cnx": {
      "ka": false,
      "c": true
    }
  },
  "p6f": {
    "type": "get_accept_encoding_full",
    "fp": "02",
    "cont_enc_hdr": {
      "value": "br",
      "empty_value": false,
      "total_plus": 0
    }
  },
  "p6l": {
    "type": "get_accept_encoding_less",
    "fp": "02",
    "cont_enc_hdr": {
      "value": "br",
      "empty_value": false,
      "total_plus": 0
    }
  },
  "p7a": {
    "type": "options_allow_hdr",
    "fp": "14254c5e72000000",
    "status_line": {
      "http_version": {
        "fp": "14",
        "val_cmt": "HTTP/1.1"
      },
      "status_code": {
        "fp": "25",
        "val_cmt": "405"
      },
      "http_reason": {
        "fp": "4c5e",
        "val_cmt": "Method Not Allowed"
      },
      "sl_reversed_db": {
        "http_version": "HTTP/1.1",
        "status_code": [
          405,
          403,
          204,
          418,
          404
        ],
        "http_reason": "Method Not Allowed"
      }
    },
    "cont_len_hdr": {
      "fp": "72",
      "name": "Transfer-Encoding",
      "value": ">1",
      "cmt": "content-length/transfer-encoding:chunked header is present with either of the size values: [0,1,>1]"
    },
    "allow_hdr": {
      "fp": "000000",
      "cmt": "this header is not used"
    },
    "cnx": {
      "ka": true,
      "c": false
    }
  }
}

Beachten Sie, dass das "status_code"-Array mehrere HTTP-Statuscodes enthält. Dies tritt auf, weil verschiedene Server denselben Grundtext für unterschiedliche Statuscodes verwenden können, was zu identischen FNV-1a-Hashes führt.

Die Comparator-Option

Die Comparator-Option „-C/--compare“ vergleicht zwei verbosus-Fingerabdrücke und gibt die Unterschiede in den Hauptkomponenten für jede der Proben aus.

Zum Beispiel der Vergleich der folgenden beiden Fingerabdrücke für Google und YouTube:

root@kitploit:~
HTTPBasma.exe --compare 01140a85e4001320958a22142494d62214254c5e2214254c5e22080014254c5e220000000000,01140a85e4011320958a22142494d67214254c5e2214254c5e22080014254c5e220000000000

Ergebnis dieser Ausgabe:

root@kitploit:~
 < FPrnt-1 Vs. FPrnt-2 >

 [ P1 ]
    {Strict-Transport-Security}
      sts header: 00 != 01

 [ P2 ]
 [ P3 ]
    {Content-Length}

      cl_name: 2 != 7

 [ P4 ]
 [ P5 ]
 [ P6F ]
 [ P6L ]
 [ P7a ]

Die Ausgabe zeigt Unterschiede speziell in der Hash-Komponente der P1-Probe, wo der STS-Header im ersten Fingerabdruck vorhanden ist und im anderen nicht. Außerdem unterscheidet sich die Codierung von "Content-Length" zwischen den beiden Fingerabdrücken für Probe P3.


Veröffentlichung

Netomize bietet kompilierte Windows- und Linux-x64-Versionen des öffentlichen Codes in diesem Repository an. Darüber hinaus wird die CSV-Datei mit den HTTP-Basma-Fingerabdrücken der 1 Million Majestic-Websites – Datensatz in der ersten Veröffentlichung mitgeliefert.

Verwendete Drittanbieter-Bibliotheken

  • Chilkat v11.4.0
  • rang: für Konsolenfarben
  • cxxopts (v3.3.1)

Mitwirken

Offen für Pull-Requests und Issues. Kommentare und Vorschläge sind sehr willkommen.

Tool herunterladen