Metodologia
nyaack e un compilatore di evidenze sul dominio, non un SIEM e non un pentest. Chi sa del mestiere deve poter leggere un report e decidere se fidarsi di noi.
Cosa non facciamo
Niente Nuclei, niente port scan, niente login sul target, niente dump di secret. Guest non esegue CT, takeover, secret nel JS, LeakIX, Web Risk, Deep. Un check saltato o fallito per rete non e una prova di attacco.
Mode
passive: DNS/TLS/redirect/header, per guest. hybrid: piano completo da account, senza Playwright. deep: browser (Chromium) su tre profili UA, screenshot e script a runtime. Il mode e sempre visibile nel report.
Tre layer
Fatto: osservabile (file esposto, cert scaduto, cloaking, feed confirmed). Ipotesi: segnale da rivedere (script a runtime, SEO spam, LeakIX). Igiene: header, SPF, CAA, cookie — rumore se lo tratti come malware. Non esiste allowlist Wix/Framer: un builder non azzera il segnale, lo spiega.
Ritratto
Il report apre con il tipo di oggetto HTTP (managed, custom, SPA, API, occluso, non-web), non con una lista. Unknown e un tipo: origine visibile senza stack dichiarato. Se incolli un URL, il soggetto e quella pagina; DNS/TLS restano del host. Non classifichiamo IoT o software che non parlano HTTP, e non inventiamo Java/Python senza segnale.
Threat intel
Google Web Risk + OpenPhish si riducono a clean / watch / confirmed. Un solo confirmed resta watch. Due confirmed, oppure confirmed+watch, diventano confirmed. Il consensus e visibile come reason code, non come voto magico.
Script a runtime (Deep)
Dopo il load contiamo eval/Function/atob, import() dinamici (soglia 20) e script inline (soglia 30). Il finding resta; la frase dice i conteggi. eval porta containment, solo inline chiede di verificare le origini — senza scartare il segnale perche il sito usa un CMS.
Reason code
Ogni check ha un reason in inglese stabile (es. runtime_injected_script_detected). E il contratto per triage e per i golden test. Il testo umano puo cambiare; il code no, se non di proposito.
Punteggio
Il trust 0–100 e un riassunto, non il verdetto. Contano fatti / ipotesi / igiene, coverage, e la riga 'questa scansione non ha fatto'.
Export e share
Markdown e JSON includono mode, coverage, limitation, reason. Mai corpi di file o secret in chiaro. Un link pubblico nasce solo se chiedi Copia link: token a scadenza, noindex, default privato. Non c'e un riassunto AI.
Prova example.org (caso pulito) e un sito con protezione anti-bot per vedere i buchi di coverage.