Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
Tools/GitHubGitHub/vmfunc/sif
ReconnaissanceVulnerability ScannersPort ScanningExploitationInformation GatheringWeb SecurityPenetration TestingSubdomain EnumerationCrawlerDNS Analysis
GitHubvmfunc/sif

sif

6142728 days agoReviewed by Kitploit

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share
sif — the blazing-fast pentesting suite. | Kitploit

the blazing-fast pentesting suite.

View Repository
sif



go version build license aur nixpkgs homebrew apt discord

install · usage · modules · docs · contribute

fast, concurrent recon to exploitation in one binary. every scanner shares one connection-pooled http client.


what is sif?

sif is a recon and exploitation scanner that runs the whole chain in one binary: subdomain enum, port scan, crawler, nuclei, framework/cve detection, js secret extraction, web-vuln probes (cors/xss/redirect), cloud and takeover checks. 25+ scan types, one command.

root@kitploit:~
sif -u https://example.com -dnslist -ports -crawl -js -framework -nuclei

nuclei and colly are compiled in as libraries rather than shelled out to (there's no exec.Command in the tree), so it's a single static binary with no runtime dependencies and nothing to wire together.

every scanner runs through one shared http client and a work-stealing worker pool. -proxy, -H, -cookie and -rate-limit apply to the whole run at once, connections get pooled and reused across the scan (a single-host run reuses one connection for ~50 requests instead of dialing 50 times), and a slow host doesn't hold the rest up. that shared client is the practical reason to use it over piping a stack of separate tools together. port scanning is connect()-based, so rustscan and nmap are still faster at raw port scans.

it reads targets from stdin and prints findings one per line under -silent, so it composes:

root@kitploit:~
subfinder -d example.com | sif -silent -crawl -js -nuclei | notify

-diff turns a re-scan into a monitor that only reports what changed, -notify posts to slack/discord/telegram/webhook, and runs export to sarif and markdown.

install

homebrew (macos)

root@kitploit:~
brew tap vmfunc/sif
brew install sif

arch linux (aur)

install using your preferred aur helper:

root@kitploit:~
yay -S sif
# or
paru -S sif

nix

root@kitploit:~
# nixpkgs (declarative: add to configuration.nix or home-manager)
environment.systemPackages = [ pkgs.sif ];

# or imperatively
nix profile install nixpkgs#sif

# or just run it without installing
nix run nixpkgs#sif -- -u https://example.com -headers -sh -framework

the repo also ships a flake if you want to build from source:

root@kitploit:~
nix run github:vmfunc/sif

debian/ubuntu (apt)

root@kitploit:~
curl -1sLf 'https://dl.cloudsmith.io/public/sif/deb/setup.deb.sh' | sudo -E bash
sudo apt-get install sif

from releases

grab the latest binary from releases.

from source

root@kitploit:~
git clone https://github.com/vmfunc/sif.git
cd sif
make

requires go 1.25+

aur (manual install)

root@kitploit:~
git clone https://aur.archlinux.org/sif.git
cd sif
makepkg -si

usage

root@kitploit:~
# basic scan
./sif -u https://example.com

# directory fuzzing
./sif -u https://example.com -dirlist medium

# subdomain enumeration
./sif -u https://example.com -dnslist medium

# port scanning
./sif -u https://example.com -ports common

# javascript framework detection + cloud misconfig
./sif -u https://example.com -js -c3

# shodan host intelligence (requires SHODAN_API_KEY env var)
./sif -u https://example.com -shodan

# securitytrails domain discovery (requires SECURITYTRAILS_API_KEY env var)
# discovers subdomains + associated domains, then scans all of them
./sif -u https://example.com -securitytrails -headers

# sql recon + lfi scanning
./sif -u https://example.com -sql -lfi

# web vuln probes (cors, open redirect, reflected xss)
./sif -u https://example.com -cors -redirect -xss

# framework detection (with cve lookup)
./sif -u https://example.com -framework

# a broad sweep
./sif -u https://example.com -dirlist small -dnslist small -ports common -headers -sh -cms -framework -git -whois

run ./sif -h for all options.

commands

a couple of subcommands run without scanning:

root@kitploit:~
# print the version (release builds are stamped; local builds use git describe)
./sif version

# show the latest release notes (also -pn)
./sif patchnote

the first time you run a new release, sif prints that release's notes once. set SIF_NO_PATCHNOTES=1 to turn that off.

modules

sif has a modular architecture. modules are defined in yaml and can be extended by users.

built-in scan flags

http options

these apply to every outbound request across all scanners:

root@kitploit:~
# scan through a socks5 proxy with a custom header, cookie and 20 req/s cap
./sif -u https://example.com -headers -proxy socks5://127.0.0.1:1080 -H "Authorization: Bearer tok" -cookie "session=abc" -rate-limit 20

a scanner that sets a header explicitly (e.g. an api key) always wins over the global default.

report export

write the run's findings out to a file for ci/cd or triage:

root@kitploit:~
# scan and emit both a sarif and markdown report
./sif -u https://example.com -headers -cors -sarif out.sarif -md out.md

sarif output is ingestable by github code scanning; markdown is a readable per-target summary.

diff mode

-diff turns a re-scan into a monitor: sif snapshots each target's normalized findings to a json file, and on the next run reports only the delta (+ new / - gone) against that snapshot, then overwrites it. the first run for a target has no baseline, so everything is + new. snapshots land in -store (one sanitized file per target); when unset they reuse the log dir, falling back to <user-config>/sif/state.

root@kitploit:~
# baseline run, then re-scan later and see only what moved
./sif -u https://example.com -sh -cors -diff
./sif -u https://example.com -sh -cors -diff

the snapshot is always rewritten, so each run diffs against the previous one. the delta is chrome (it rides the normal output sink / stderr under -silent), not the findings stream.

notify

ship findings to a chat/webhook sink so a continuous-recon run alerts on what it turns up. every provider is a single POST through the shared http client, so the global proxy/rate-limit/header config applies.

providers are configured env-first; a yaml file (-notify-config) overrides per-field. the yaml keys match projectdiscovery/notify so an existing config ports over:

root@kitploit:~
# alert slack on medium+ findings discovered during a scan
export SLACK_WEBHOOK_URL=https://hooks.slack.com/services/...
./sif -u https://example.com -cors -xss -notify -notify-severity medium

a provider with no destination is skipped; with nothing configured, -notify is a silent no-op. slack/discord/telegram receive a fixed-width finding block; the generic webhook receives structured json ({count, findings[]}).

pipe mode

sif reads targets from stdin and accepts naked hosts, so it drops into a unix pipeline. -silent routes all banner/spinner/log chrome to stderr and prints one normalized finding per line ([severity] target module title) to stdout:

root@kitploit:~
# subfinder feeds hosts, sif probes them, notify ships the findings
subfinder -d example.com | sif -silent -probe | notify
flagdescription
stdina piped target stream (one host/url per line) is read alongside -u/-f

scheme-less hosts default to https://; an explicit http:///https:// is kept; any other scheme (ftp://, ...) is rejected.

yaml modules

list available modules:

root@kitploit:~
./sif -lm

run specific modules:

root@kitploit:~
# run by id
./sif -u https://example.com -m sqli-error-based,xss-reflected

# run by tag
./sif -u https://example.com -mt owasp-top10

# run all modules
./sif -u https://example.com -am

custom modules

create your own modules in ~/.config/sif/modules/. modules use a yaml format similar to nuclei templates:

root@kitploit:~
id: my-custom-check
info:
  name: my custom security check
  author: you
  severity: medium
  description: checks for something specific
  tags: [custom, recon]

type: http

http:
  method: GET
  paths:
    - "{{BaseURL}}/admin"
    - "{{BaseURL}}/login"

  matchers:
    - type: status
      status:
        - 200

    - type: word
      part: body
      words:
        - "admin panel"
        - "login"
      condition: or

see docs/modules.md for the full module format.

contribute

contributions welcome. see contributing.md for guidelines.

root@kitploit:~
# format
gofmt -w .

# lint
go run github.com/golangci/golangci-lint/v2/cmd/[email protected] run

# test
go test ./...

community

join our discord for support, feature discussions, and pentesting tips:

discord

contributors

acknowledgements

  • projectdiscovery for nuclei and other security tools
  • shodan for infrastructure intelligence

bsd 3-clause license · made by vmfunc, xyzeva, and contributors
Download Tool
flagdescription
-dirlistdirectory and file fuzzing (small/medium/large)
-mcdirlist: match these status codes (comma list, e.g. 200,301)
-fcdirlist: filter out these status codes (comma list)
-fsdirlist: filter out responses of these body sizes (comma list)
-fwdirlist: filter out responses with these word counts (comma list)
-frdirlist: filter out responses whose body matches this regex
-acauto-calibrate the soft-404 wildcard baseline (dirlist, sql)
-wdirlist: custom wordlist (local file or url; overrides -dirlist size)
-edirlist: extensions appended to each word (comma list, e.g. php,bak,env)
-dnslistsubdomain enumeration (small/medium/large)
-portsport scanning (common/full)
-nucleivulnerability scanning with nuclei templates
-dorkautomated google dorking
-jsjavascript analysis + secret and endpoint extraction
-c3cloud storage misconfiguration
-headershttp header analysis
-shsecurity header analysis (missing/weak headers)
-stsubdomain takeover detection
-cmscms detection
-whoiswhois lookups
-gitexposed git repository detection
-shodanshodan lookup (requires SHODAN_API_KEY)
-securitytrailsdomain discovery + target expansion (requires SECURITYTRAILS_API_KEY)
-sqlsql recon
-lfilocal file inclusion
-jwtjwt discovery + offline weakness analysis (alg:none, weak hmac, exp, sensitive claims)
-openapiopenapi/swagger spec exposure probe (enumerates paths + unauth endpoints)
-faviconfavicon hash fingerprinting (shodan-style mmh3, tech match + pivot query)
-corscors misconfiguration probe
-redirectopen redirect probe
-xssreflected xss probe
-frameworkframework detection with cve lookup
-crawlweb crawler (spider same-host links/scripts/forms)
-crawl-depthmax crawl recursion depth (default 2)
-passivepassive subdomain/url discovery (zero traffic to target)
-probelive-host probe (status, title, server, redirect chain)
flagdescription
-proxyroute all traffic through a proxy (http/https/socks5 url)
-H, --headercustom header to send (repeatable or comma-separated, "Key: Value")
-cookiecookie header to send with every request
-rate-limitmax requests per second (0 = unlimited, default 0)
flagdescription
-sarifwrite a sarif 2.1.0 report to this file
-markdown, -mdwrite a markdown report to this file
-silentplain output: chrome to stderr, one finding per line to stdout (for pipelines)
-diffsurface only findings added/removed since the last snapshot of each target
-storesnapshot directory for -diff (default: log dir, else <user-config>/sif/state)
flagdescription
-notifyship findings to every configured provider after the scan
-notify-severityminimum severity to send (info/low/medium/high/critical, default medium)
-notify-configpath to a notify-compatible yaml config (overrides env vars)
env varyaml keyprovider
SLACK_WEBHOOK_URLslack_webhook_urlslack incoming webhook
DISCORD_WEBHOOK_URLdiscord_webhook_urldiscord webhook
TELEGRAM_BOT_TOKENtelegram_api_keytelegram bot api (needs chat id too)
TELEGRAM_CHAT_IDtelegram_chat_idtelegram destination chat
NOTIFY_WEBHOOK_URLwebhook_urlgeneric json webhook (structured findings)
vmfunc
vmfunc

🚧 🧑‍🏫 📆 🛡️ 💻
ProjectDiscovery
ProjectDiscovery

📦
macdoos
macdoos

💻
Matthieu Witrowiez
Matthieu Witrowiez

🤔
tessa
tessa

🚇 💬 📓
Eva
Eva

📝 🖋 🔬 🛡️ ⚠️ 💻
Zoa Hickenlooper
Zoa Hickenlooper

💻
acxtrilla
acxtrilla

📦