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
HashSiphon — Extrai o hash NetNTLMv2 do usuário atual por meio de proxy de autenticação HTTP, evitando chamadas diretas à SSPI; a v2 delega a autenticação ao serviço BITS para quebrar a atribuição de processo. | Kitploit
Ferramentas/GitHubGitHub/ivancabrera02/hashsiphon
Ferramentas DefensivasAtaques de SenhaColeta de InformaçõesPós-ExploraçãoTestes de PenetraçãoRed Teaming
GitHubivancabrera02/hashsiphon

HashSiphon

Extrai o hash NetNTLMv2 do usuário atual por meio de proxy de autenticação HTTP, evitando chamadas diretas à SSPI; a v2 delega a autenticação ao serviço BITS para quebrar a atribuição de processo.

Ver Repositório
3256há 7 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 →
Compartilhar

HashSiphon

Extração de hash NTLM através de proxy de autenticação na camada HTTP, zero chamadas SSPI a partir do processo atacante.

O HashSiphon extrai o hash NetNTLMv2 do usuário atual manipulando fluxos de autenticação HTTP em vez de chamar APIs SSPI diretamente. Ele disponibiliza duas variantes: a v1 encaminha a autenticação NTLM através da pilha HTTP do .NET dentro do mesmo processo, e a v2 delega a autenticação inteiramente ao serviço BITS (svchost.exe) em um PID diferente, quebrando completamente a atribuição em nível de processo.

Por Que Isso Importa

Todas as ferramentas conhecidas de autoextração de hash NTLM — Internal Monologue, scripts SSPI manuais e seus derivados — chamam AcquireCredentialsHandle → InitializeSecurityContext → AcceptSecurityContext a partir do próprio processo do atacante. Os EDRs interceptam essas funções SSPI e sinalizam a cadeia de chamadas.

O HashSiphon segue um caminho fundamentalmente diferente:

AspectoInternal MonologueHashSiphon v1HashSiphon v2
Chamadas SSPI a partir do PID atacante4+ chamadas diretas0 diretas (WinHTTP chama internamente)0 em qualquer processo nosso
Processo de autenticaçãoPID do atacantePID do atacante (via pilha HTTP)svchost.exe (serviço BITS)
Importações de API de segurançaImportações de DLL SSPI necessáriasNenhuma em nosso códigoNenhuma em nosso código
Superfície de detecçãoHooks SSPI, padrões de chamadas de APITráfego HTTP em loopbackJob BITS + tráfego em loopback
Atribuição de processoPID do atacantePID do atacanteQuebrada, PID totalmente diferente

Como Funciona

Ambas as variantes compartilham o mesmo núcleo: um servidor TCP mínimo em 127.0.0.1 que fala apenas o suficiente de HTTP para realizar uma troca de desafio-resposta NTLM, com um desafio controlado de 8 bytes para que o hash capturado seja quebrável offline.

v1 — Autoautenticação HTTP (HashSiphon.ps1)

root@kitploit:~
┌──────────────────────────┐
│     PowerShell (PID X)   │
│                          │
│  ┌────────────────────┐  │          ┌──────────────────────┐
│  │ TCP Server (C#)    │◄─┼──────────┤ HttpWebRequest +     │
│  │ Loopback :random   │  │  HTTP    │ DefaultCredentials   │
│  │                    │──┼──────────►                      │
│  │ 1. Send 401+NTLM   │  │  NTLM    │ WinHTTP auto-auths   │
│  │ 2. Send Type 2     │  │  Type    │ using current user's │
│  │ 3. Capture Type 3  │  │  1/2/3   │ credentials          │
│  │ 4. Extract hash    │  │          │                      │
│  └────────────────────┘  │          └──────────────────────┘
└──────────────────────────┘
  1. Compila um servidor TCP em C# via Add-Type, vincula a 127.0.0.1:0 (porta atribuída pelo SO)
  2. O cliente conecta com HttpWebRequest + CredentialCache.DefaultCredentials
  3. O servidor responde HTTP 401 com WWW-Authenticate: NTLM para disparar a negociação
  4. O WinHTTP envia NTLM Type 1 → o servidor responde com um Type 2 forjado (desafio controlado) → o WinHTTP envia Type 3
  5. O servidor analisa o Type 3 e extrai o hash NetNTLMv2

Trade-off: O WinHTTP chama SSPI internamente dentro do mesmo PID, sem importações diretas, mas a pilha de chamadas ainda aponta para nós.

v2 — Proxy do Serviço BITS (HashSiphonV2.ps1)

root@kitploit:~
┌─────────────────────┐         ┌───────────────────────────┐
│  PowerShell (PID X) │         │  svchost.exe (PID Y)      │
│                     │         │  BITS Service             │
│  ┌───────────────┐  │  HTTP   │                           │
│  │ TCP Server    │◄─┼─────────┤  BITS downloads from our  │
│  │ (Background   │  │  NTLM   │  server, auto-authenticates│
│  │  Runspace)    │──┼─────────►  using job owner's creds   │
│  └───────────────┘  │  Type   │                           │
│                     │  1/2/3  │  SSPI calls happen HERE,  │
│  Start-BitsTransfer─┼────────►│  not in PID X             │
│  (Trigger only)     │  COM    │                           │
└─────────────────────┘         └───────────────────────────┘
          │
          └── Our process: TcpListener + Start-BitsTransfer
              Zero SSPI. Zero security API imports.
  1. O mesmo servidor TCP em C# inicia em um Runspace do PowerShell em segundo plano
  2. Start-BitsTransfer cria um job de download apontando para http://127.0.0.1:<port>/hashsiphon.bin
  3. O serviço BITS (svchost.exe, um PID completamente diferente) conecta ao nosso servidor
  4. O BITS autentica com as credenciais do proprietário do job, troca NTLM capturada pelo nosso servidor
  5. O servidor retorna HTTP 200 com um corpo para que o BITS considere a transferência bem-sucedida
  6. Hash extraído da mensagem Type 3

Avanço: Nosso processo nunca chama SSPI, nem diretamente, nem através do WinHTTP, nem de forma alguma. Todo o cálculo NTLM acontece no svchost.exe. Os hooks SSPI do EDR veem a pilha de chamadas no processo do serviço BITS, não no nosso.

Uso

Requisitos

  • Windows 10/11
  • PowerShell 5.1+
  • Privilégios de usuário padrão (sem necessidade de admin)
  • Serviço BITS em execução (padrão no Windows)

Executando a v1

root@kitploit:~
powershell -ExecutionPolicy Bypass -File HashSiphon.ps1

Executando a v2

root@kitploit:~
powershell -ExecutionPolicy Bypass -File HashSiphonV2.ps1

Saída Esperada (v2)

root@kitploit:~
  [*] Compiling HashSiphon v2 server...
  [+] Server compiled

  HashSiphon v2.0 - BITS Service Proxy Authentication
  Auth by svchost.exe (BITS), not our process

  [1] NTLM HTTP server ready on 127.0.0.1:52847
  [2] Controlled challenge: 1122334455667788
  [3] Triggering BITS transfer to our server...
  [4] BITS transfer initiated

  [+] User:        ivan
  [+] Domain:      DESKTOP-ABCDEF
  [+] NT response: 280 bytes (NTLMv2)

  +----------------------------------------------------------+
  |     NetNTLMv2 HASH - Extracted via BITS service proxy!   |
  +----------------------------------------------------------+
  |  hashcat -m 5600 | john --format=netntlmv2               |
  +----------------------------------------------------------+

  ivan::DESKTOP-ABCDEF:1122334455667788:<NTProofStr>:<ClientBlob>

  +----------------------------------------------------------+
  |  ATTRIBUTION ANALYSIS                                    |
  +----------------------------------------------------------+
  |  Our PID:      844  (PowerShell)                         |
  |  Auth by:      BITS service (svchost.exe, PID 5500)      |
  |  SSPI calls:   Zero from PID 844                         |
  |  Our APIs:     TcpListener + Start-BitsTransfer only     |
  +----------------------------------------------------------+

Comportamento de Fallback

Se o BITS falhar (serviço desabilitado, módulo indisponível), a v2 automaticamente recorre à inicialização de um processo filho powershell.exe com Invoke-WebRequest -UseDefaultCredentials. Isso ainda alcança a separação de PID, embora o processo filho seja mais visível que o BITS.

Baixar ferramenta