phisherslapper [v1.01]

Domain Impersonation and OSINT Triage Tool. Compares a known-legitimate domain (target) against a suspect domain using DNS resolution, X.509 TLS certificates, and RDAP registration data, then produces a deterministic risk score and verdict. Single static binary; standard library plus golang.org/x/sync only.

Build and Run

git clone https://github.com/MARKMENTAL/phisherslapper.git
cd phisherslapper
CGO_ENABLED=0 go build -ldflags="-s -w" -o phisherslapper ./cmd/phisherslapper
./phisherslapper jdsoft.com jdsoftcareers.com
go test ./...

Flags

FlagDescription
-v, --verboseAppend raw cert policy OIDs, TLS details, and RDAP JSON.
-j, --jsonOutput the result summary as JSON for scripting.
-k, --insecureSkip TLS verification for RDAP (weakens results; last resort for devices without CA certificates).
--timeout=DURPer-call deadline for DNS/TLS/RDAP; Go duration, default 5s.
--scalePrint the scoring scale table and exit.
-h, --helpDisplay usage and exit.

Fetch Pipeline

Both domains are fetched concurrently with golang.org/x/sync/errgroup under a 15 second global deadline; each DNS, TLS, and RDAP call carries a 5 second deadline (adjustable with --timeout) and is retried up to 3 times. Total run time equals the slower of the two domains. Fail-closed errors name the underlying cause(s).

parse args --> DNS pre-flight (target + suspect, parallel; keeps per-path IPs, checks hosts file)
            --> fetch target   = RDAP + TLS + per-path TLS + ASN in parallel
            --> fetch suspect  = RDAP + TLS + per-path TLS + ASN in parallel
            --> fail-closed verify --> score --> render

Exit codes: 0 on success (including --scale and --help), 1 on bad flags, invalid domains, DNS failure, or failed data-quality verification.

DNS Consistency

Each domain is probed once by the system resolver plus pinned 1.1.1.1 and 8.8.8.8 servers, and the outcomes are reused downstream. Only state is compared, never raw addresses: system-dark/public-live suppression splits and NS delegation splits flag tampering (+50 on the suspect), while system-live/public-dark split-horizon shapes and target-side splits stay display-only NOTEs. CDN/GeoDNS address churn stays quiet. Inconclusive resolvers abstain; filtered resolvers are excluded by design. The pre-flight gate aborts on system failure with hijack-aware messaging.

Rogue Redirection

Beyond state comparison, the first live A record per side is retained and each endpoint is interrogated: the TLS identity served at the system-resolved IP is compared against the public-resolved IP (issuer, validation class, SANs, leaf fingerprint; SNI preserved). Origin autonomous systems for both IPs are attributed via Team Cymru (origin.asn.cymru.com TXT through the pinned resolver), and the OS hosts file is checked for static overrides. Divergent per-path TLS (+50), split origin AS (+30), and hosts-file overrides (+50) score on the suspect; target-side and inconclusive probes stay display-only. Raw addresses are never compared, so CDN/GeoDNS fronting stays quiet. Max total is 330.

Embedded Systems

The tool runs on embedded ARM devices (verified on a Miyoo Mini Plus), but minimal firmware often ships without a CA certificate store. DNS and certificate inspection still work there, while verified HTTPS (RDAP) fails; the fail-closed error names the cause (x509: certificate signed by unknown authority). Install ca-certificates and fix the clock where possible, otherwise use -k/--insecure as a last resort.

Scoring Scale

SignalPoints
Suspect < 30d (CRITICAL), stacked w/ signal+80
Suspect < 30d (CRITICAL), isolated+40
Suspect 30-89d (WARNING), stacked w/ signal+40
Suspect 30-89d (WARNING), isolated+20
Shared cert infrastructure (halves age tier)x0.5
Identical target/suspect (forced LEGITIMATE)+0
Resolution tampering: suppression split (suspect)+50
DNS split-horizon / target-side (display only)+0
Cert downgrade: target EV/OV vs suspect DV+40
Registrar mismatch+30
Same-class issuer difference (display only)+0
Rogue TLS: per-path cert divergence (suspect)+50
Rogue ASN: per-path AS split (suspect)+30
Hosts-file override (suspect)+50
Rogue signals target-side/inconclusive (info)+0

ScoreVerdict
0-14LIKELY LEGITIMATE
15-39LIKELY UNRELATED / MISCONFIGURED
40-50SUSPICIOUS - MANUAL REVIEW RECOMMENDED
51+LIKELY PHISHING / IMPERSONATION ATTEMPT

Packages


Licensed under the GNU General Public License v3 - Mark Robillard Jr (MARKMENTAL)