Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Ferramentas/GitHubGitHub/netomize/http-basma
ReconnaissanceNetwork MappingVulnerability AnalysisInformation GatheringWeb SecurityMalware AnalysisCommand and ControlThreat IntelligenceRed Teaming
GitHubnetomize/http-basma

HTTP-Basma

Ver Repositório
há 20 diasAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
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
Site

Sobre

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.

Compartilhar
HTTP-Basma Logo

Impressão Digital Adaptativa: Sondagem Multi-Estágio do HTTP-Basma para Diferenciação Granular de Servidores

O HTTP-Basma está ativo em https://httpbasma.netomize.ca/

Introdução

No domínio da cibersegurança, identificar e caracterizar com precisão os servidores web é crucial para a deteção de ameaças, avaliação de vulnerabilidades e mapeamento de redes. Apresentamos o HTTP-Basma, um novo algoritmo de impressão digital ativa que revela perfis de servidor únicos através de uma abordagem multicamadas, enfrentando assim este desafio.

Principais Características: Pedidos Elaborados, Respostas Reveladoras: O HTTP-Basma envia 8 sondas HTTP meticulosamente concebidas, obtendo respostas distintas que refletem as configurações do servidor. Dupla Hash para Versatilidade: O algoritmo gera duas hashes:

  • Uma hash difusa de 38 bytes, "verbosus", que oferece reversibilidade
  • Uma hash unidirecional de 16 bytes, "pacto", derivada do verbosus, aumentando a privacidade e a segurança

Agrupamento e Caça: Estas hashes permitem o agrupamento de servidores, a identificação de servidores únicos e semelhantes, e a perseguição de atores maliciosos com maior confiança.

Design Modular para Expansão: A arquitetura do algoritmo promove a adição de novas variantes de hash, incentivando a colaboração e a adaptabilidade.

Neste artigo, primeiro analisamos trabalhos existentes notáveis sobre impressão digital HTTP e depois exploramos a funcionalidade, design, arquitetura e resultados do algoritmo. Além disso, mostraremos descobertas interessantes da digitalização do top 1 milhão de sites Majestic, incluindo a identificação e agrupamento de servidores HTTP C&C para várias famílias de malware.


A ideia central do algoritmo do HTTP-Basma é enviar 8 pedidos HTTP especialmente criados com requisitos variados para obter respostas diferentes do servidor. Uma vez obtida a resposta do servidor, a linha de estado HTTP é dissecada cirurgicamente para todos os elementos e codificada de forma otimizada. Além disso, cabeçalhos selecionados da resposta do servidor são verificados para codificação.

Os pedidos que envia são destes tipos:

  1. P1 - GET Normal - Pedido Válido
  2. P2 - GET Pedido com Versão HTTP Inválida
  3. P3 - GET Pedido de Recurso Aleatório
  4. P4 - Pedido de Verbo Aleatório
  5. P5 - get Verbo em Minúsculas
  6. P6 - GET Pedido - Accept-Encoding - Completo
  7. P7 - GET Pedido - Accept-Encoding - Menor
  8. P8 - Pedido OPTIONS

Após cada pedido, a resposta do servidor é analisada para extrair cabeçalhos específicos e seus valores. Estes dados extraídos passam por processamento adicional, incluindo dissecação e codificação, para gerar uma impressão digital reversível.

Os detalhes técnicos completos de como o algoritmo funciona estão no artigo anexado.

Esta filosofia de design modular trata cada impressão digital de pedido como um bloco de construção, permitindo uma refatoração elegante, com a possibilidade de adicionar e subtrair a impressão digital de qualquer pedido.

Amostra de impressões digitais:

CobaltStrike

root@kitploit:~
  - verbosus fp: 011420958a0014514bd5221420958a221420958a221420958a2200001420958a22000000001f
  - pacto fp: 02464ae8b7d86f82c9918e2c2b9d6b91
  - nota: taxa de falsos positivos (72/986,910)

Havoc

root@kitploit:~
  - verbosus fp: 01142494d60914514bd522142494d6221420958a701420958a220000140e04922032c37f1609
  - pacto fp: 020769322f3d94ac2f258ddf5ce08502
  - nota-1: taxa de falsos positivos 0
  - nota-2: tevedadav.site/43.209.165.126:443 (TLS)
    - amostra-(sha-256): 9aa1dec8dd12f8adc7fc1274e1958f3613450109ee8b4ec6442a0fcf06df0972

BruteRatel

root@kitploit:~
  - verbosus fp: 01140a85e40014512f3612140a85e422140a85e422140a85e4220000140a85e4220000000001
  - pacto fp: 0207292309a7a7e798e417d69df5f2a5
  - nota: taxa de falsos positivos (73/986,910)

Google

root@kitploit:~
  - verbosus fp: 01140a85e4001320958a22142494d62214254c5e2214254c5e22080014254c5e220000000000
  - pacto fp: 0202be780e1eaae0eaa6184e20c909b6
  - nota: taxa de falsos positivos (4/986,910)

YouTube

root@kitploit:~
  - verbosus fp: 01140a85e4011320958a22142494d67214254c5e2214254c5e22080014254c5e220000000000
  - pacto fp: 02cc5be6d05192e17de041538508bc22
  - nota: taxa de falsos positivos (38/986,910)

X

root@kitploit:~
  - verbosus fp: 01140a85e40914514bd522140a85e4721420958a701420958a220800140a85e4720000001609
  - pacto fp: 0221b4e46bbd0e5c037f5a852ca3fdc0
  - nota: taxa de falsos positivos (6/986,910)

Ferramenta HTTP-Basma

O HTTP-Basma é uma ferramenta C++ que desenvolvi para demonstrar a praticidade e viabilidade deste algoritmo. Utiliza a biblioteca Chilkat para todas as interações de socket HTTP e outras classes de suporte dentro da biblioteca. Além disso, a ferramenta inclui uma funcionalidade de desmontagem que pode dissecar e reverter a hash difusa verbosus, gerando um objeto JSON abrangente, e uma função comparadora que mostra as diferenças entre duas impressões digitais verbosus.

Esteja ciente de que alguns resultados da ferramenta podem usar números de sonda ligeiramente diferentes, mas a ordem subjacente permanece consistente: P1->P1, P2->P2, P3->P3, P4->P4, P->P5, P6->P6F, P7->P6L, P8->P7a.

Opções da Ferramenta

clique para expandir
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	

Saída Detalhada

Ao solicitar um determinado domínio/IP, a resposta pode ser guardada num ficheiro CSV ou JSON com uma infinidade de informações sobre os cabeçalhos de resposta do servidor e a impressão digital única de cada sonda.

Por exemplo, para obter a impressão digital do servidor https://google.com, e guardar os resultados num ficheiro JSON e CSV, enquanto guarda os cabeçalhos de resposta HTTP de cada sonda:

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

Na pasta Output, encontrará o ficheiro CSV google_hb_results_2026-05-19_08-35-38_am.csv e o ficheiro JSON google_hb_results_2026-05-19_08-35-38_am.json.

O Desmontador

A função de desmontagem da ferramenta "-i/--demangle_json" recebe uma impressão digital verbosus e reconstrói os atributos de cada sonda, gerando um objeto JSON abrangente. Notavelmente, ao tentar reverter as hashes FNV-1a, o desmontador utiliza duas bases de dados locais: options.csv para métodos HTTP permitidos e status_line_db.csv para frases de razão da linha de estado. Se algum destes ficheiros de base de dados estiver em falta, a funcionalidade de reversão de hash correspondente é automaticamente desativada. Estas bases de dados foram compiladas a partir de uma digitalização do top 1 milhão de sites Majestic.

A desmontagem da impressão digital do verbosus, para o domínio example.com:

root@kitploit:~
HTTPBasma.exe --demangle_json 01140a85e40014514bd522142494d67214254c5e721420958a22020214254c5e720000001609
Saída do Desmontador (clique para expandir)
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
    }
  }
}

Observe que a matriz "status_code" contém vários códigos de estado HTTP. Isto ocorre porque diferentes servidores podem usar a mesma frase de razão para diferentes códigos de estado, resultando em hashes FNV-1a idênticas.

A Opção de Comparação

A opção de comparação "-C/--compare" compara duas impressões digitais verbosus e imprime as diferenças entre os principais componentes de cada uma das sondas.

Por exemplo, comparando as seguintes duas impressões digitais para Google e YouTube:

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

Resulta nesta saída:

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 ]

A saída revela diferenças especificamente no componente de hash da sonda P1, onde o cabeçalho STS está presente na primeira impressão digital e não na outra. Além disso, a codificação do "Content-Length" é diferente entre as duas impressões digitais para a sonda P3.


Lançamento

A Netomize fornece versões compiladas para Windows e Linux x64 do código público neste repositório. Além disso, o ficheiro CSV de impressões digitais HTTP-Basma do top 1 milhão Majestic - conjunto de dados é enviado no primeiro lançamento.

Bibliotecas de terceiros utilizadas

  • Chilkat v11.4.0
  • rang: para coloração da consola
  • cxxopts (v3.3.1)

Contribuir

Aberto a pull requests e issues. Comentários e sugestões são muito apreciados.

Baixar ferramenta