
la suite di pentesting incredibilmente veloce.
installazione · utilizzo · moduli · documentazione · contribuire
ricognizione rapida e concorrente fino allo sfruttamento in un singolo binario. ogni scanner condivide un singolo client HTTP con pool di connessioni.
sif è uno scanner di ricognizione e sfruttamento che esegue l'intera catena in un solo binario: enumerazione dei sottodomini, scansione delle porte, crawler, nuclei, rilevamento di framework/CVE, estrazione di segreti da JS, probe per vulnerabilità web (CORS/XSS/redirect), controlli cloud e di takeover. Oltre 25 tipi di scansione, un unico comando.
sif -u https://example.com -dnslist -ports -crawl -js -framework -nuclei
nuclei e colly sono compilati come librerie anziché eseguiti come comandi esterni (non c'è exec.Command nell'albero), quindi è un singolo binario statico senza dipendenze runtime e nulla da configurare.
Ogni scanner utilizza un singolo client HTTP condiviso e un pool di worker con furto di lavoro. -proxy, -H, -cookie e -rate-limit si applicano all'intera esecuzione contemporaneamente, le connessioni vengono raggruppate e riutilizzate durante la scansione (un'esecuzione su un singolo host riutilizza una connessione per circa 50 richieste invece di stabilire 50 connessioni separate), e un host lento non blocca il resto. Quel client condiviso è il motivo pratico per usarlo invece di concatenare una pila di strumenti separati. La scansione delle porte è basata su connect(), quindi rustscan e nmap sono ancora più veloci per le scansioni raw delle porte.
Legge i target da stdin e stampa i risultati uno per riga con -silent, quindi si compone:
subfinder -d example.com | sif -silent -crawl -js -nuclei | notify
-diff trasforma una nuova scansione in un monitor che segnala solo ciò che è cambiato, -notify pubblica su slack/discord/telegram/webhook e le esecuzioni esportano in sarif e markdown.
brew tap vmfunc/sif
brew install sif
Installa usando il tuo helper AUR preferito:
yay -S sif
# oppure
paru -S sif
# nixpkgs (dichiarativo: aggiungi a configuration.nix o home-manager)
environment.systemPackages = [ pkgs.sif ];
# oppure imperativamente
nix profile install nixpkgs#sif
# oppure esegui senza installare
nix run nixpkgs#sif -- -u https://example.com -headers -sh -framework
Il repository include anche un flake se vuoi compilare dai sorgenti:
nix run github:vmfunc/sif
curl -1sLf 'https://dl.cloudsmith.io/public/sif/deb/setup.deb.sh' | sudo -E bash
sudo apt-get install sif
Scarica l'ultimo binario da releases.
git clone https://github.com/vmfunc/sif.git
cd sif
make
Richiede go 1.25+
git clone https://aur.archlinux.org/sif.git
cd sif
makepkg -si
# scansione di base
./sif -u https://example.com
# fuzzing delle directory
./sif -u https://example.com -dirlist medium
# enumerazione dei sottodomini
./sif -u https://example.com -dnslist medium
# scansione delle porte
./sif -u https://example.com -ports common
# rilevamento framework javascript + misconfigurazione cloud
./sif -u https://example.com -js -c3
# intelligence host di shodan (richiede variabile d'ambiente SHODAN_API_KEY)
./sif -u https://example.com -shodan
# scoperta domini tramite securitytrails (richiede variabile d'ambiente SECURITYTRAILS_API_KEY)
# scopre sottodomini + domini associati, poi li scansiona tutti
./sif -u https://example.com -securitytrails -headers
# ricognizione sql + scansione lfi
./sif -u https://example.com -sql -lfi
# probe vulnerabilità web (cors, reindirizzamento aperto, xss riflesso)
./sif -u https://example.com -cors -redirect -xss
# rilevamento framework (con ricerca CVE)
./sif -u https://example.com -framework
# una scansione ampia
./sif -u https://example.com -dirlist small -dnslist small -ports common -headers -sh -cms -framework -git -whois
Esegui ./sif -h per tutte le opzioni.
Un paio di sottocomandi vengono eseguiti senza scansione:
# stampa la versione (le build rilasciate sono timbrate; le build locali usano git describe)
./sif version
# mostra le ultime note di rilascio (anche -pn)
./sif patchnote
La prima volta che esegui una nuova release, sif stampa le note di quella release una volta. Imposta SIF_NO_PATCHNOTES=1 per disattivarlo.
sif ha un'architettura modulare. I moduli sono definiti in yaml e possono essere estesi dagli utenti.