danielmichaels / danielmichaels/gecko

Certificate Transparency log scanner (crt.sh/certspotter)

Open
#71 0 comments 0 reactions 0 assignees View on GitHub
enhancement scanner
Dominant language
Go
Stars
0
Forks
0
PR merge metrics
No merged PRs in 30d

Description

Part of #61 · Tier 5 · `scanner` · Effort: **M**

New passive scanner: query Certificate Transparency logs (crt.sh / certspotter) for the domain. Not in the original `ARCHITECTURE.md` wishlist but high-value and modern.

### Purpose
- **Subdomain discovery:** CT logs reveal hostnames that issued certs — feed into the enumeration/`domains` pipeline (complements subfinder).
- **Unexpected-cert monitoring:** detect newly/unexpectedly issued certs for the domain (early shadow-IT / mis-issuance signal).

### ⚠️ Cost flag
External API (crt.sh JSON / certspotter). Rate-limited and occasionally slow — cache via the existing DB cache, bounded timeout, dedupe results.

### Wiring
- [ ] `internal/scanner/scan_ct.go` (or under enumeration) + `ScanCTArgs`/`Worker`; register
- [ ] feed discovered hosts through the same `processDiscoveredHost` path used by subfinder (`enumerate_jobs.go`) with `Source=discovered`
- [ ] optionally record observed certs as observations
- [ ] TDD tests with a fake CT client

### Decisions for owner
- CT source(s) and whether an API key is used.
- Whether CT discovery runs every scan or on a slower cadence.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with internal/scanner/scan_ct.go or the enumeration package, then trace ScanCTArgs/Worker and processDiscoveredHost in enumerate_jobs.go. Review the existing DB cache and subfinder flow before writing fake CT client tests for bounded, deduplicated results and domain-pipeline wiring; CT sources, certificate observations, and scan cadence remain owner decisions.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.