Monitoring Certificate Transparency logs for phishing domains
Every publicly trusted certificate is logged before browsers accept it. That makes the logs one of the earliest public signs that a lookalike is being set up.
Why certificate logs see phishing early
Certificate Transparency (CT) is a set of public, append-only logs of TLS certificates. Chrome and Safari only trust a certificate if it comes with proof that it was submitted to the logs, so every certificate from a public certificate authority ends up in them, usually within seconds or minutes of being issued.
Phishing pages want a padlock, and free automated certificates make getting one part of setting up the domain. The result is that a new lookalike often appears in a CT log before a single email has been sent. In Greyphish's data, more than half of new combosquats were under a week old when their first certificate was logged, and 42% were under a day old.
Start with your own domain
Before hunting lookalikes, watch for certificates issued for your real domain that nobody on your team asked for. That catches a different problem (a compromised DNS account, a forgotten vendor, a subdomain takeover) and it is free:
- Cloudflare offers Certificate Transparency Monitoring for zones on its platform and emails when a certificate is logged for them.
- Cert Spotter by SSLMate watches named domains and their subdomains.
- crt.sh lets you search by hand:
https://crt.sh/?q=yourcompany.com.
All three watch names you own. None of them will tell you about yourcompany-login[.]com, which is the part this guide is about.
Searching CT for lookalikes with crt.sh
crt.sh, run by Sectigo, indexes the major logs and accepts % as a wildcard (%25 in a URL). Searching for your name anywhere in a hostname returns combosquats and TLD swaps:
curl -s "https://crt.sh/?q=%25yourcompany%25&output=json" \
| jq -r '.[] | [.not_before, .name_value] | @tsv' | sort -uIt also offers a read-only PostgreSQL interface for heavier queries (psql -h crt.sh -p 5432 -U guest certwatch), which is useful for research and easy to overload.
Three limits make crt.sh a research tool rather than an alert system:
- Broad wildcard searches frequently time out, and short brand names match far too much.
- A substring search finds combos but not typos or homoglyphs, because those do not contain your name.
- It is a search, not a feed. Someone has to run it, and there is no alert when a new match appears.
Watching the live stream
For real monitoring you read new certificates as they are logged. The old public certstream service from CaliDog is no longer something to depend on, so self-host instead. certstream-server-go polls the logs directly and serves the same WebSocket format; Greyphish runs it in production, where it delivers around 300 certificates a second.
docker run -d --name certstream -p 8080:8080 0rickyy0/certstream-server-goA minimal watcher in Python, using the domains-only stream:
import json
import websocket
WATCH = ("yourcompany", "yourcornpany", "yourcompariy")
def on_message(ws, raw):
msg = json.loads(raw)
if msg.get("message_type") != "dns_entries":
return
for name in msg["data"]:
if any(w in name for w in WATCH):
print(name)
websocket.WebSocketApp("ws://localhost:8080/domains-only", on_message=on_message).run_forever()That works for a demo. To make it useful, generate WATCH from dnstwist's permutations (see how to find lookalike domains), strip the *. from wildcard names, reduce each hostname to its registrable domain with the Public Suffix List, decode xn-- labels, deduplicate (the same certificate is usually logged in two or more logs, once as a precertificate and again as the final certificate), and store what you have already alerted on.
The noise you will get
CT matching produces a lot of hits that are not attacks. The biggest single source we have seen is worth describing in detail, because anyone running a CT watcher in 2026 will have met it.
Between early July and early September 2026, 83,292 of the 102,373 lookalike names Greyphish logged for public brands (81%) ended in .ph, .com.ph, .net.ph or .org.ph. They were long hyphenated combos like facebook-login-checker[.]net[.]ph and facebook-status-alert-0151[.]ph, many in numbered series. The weekly count peaked at 17,047 in the week of 20 July and fell below 200 a week by mid-September.
| Week of | .ph names | Everything else |
|---|---|---|
| 6 Jul | 5,662 | 1,164 |
| 20 Jul | 17,047 | 761 |
| 10 Aug | 9,978 | 534 |
| 24 Aug | 6,889 | 567 |
| 7 Sep | 1,061 | 2,120 |
| 14 Sep | 36 | 4,398 |
| 21 Sep | 126 | 3,851 |
Counts use whole-word brand matches; an earlier version counted brand names inside other words.
The names were not registered. A made-up name under .ph or .com.ph resolves to the same single address as these lookalikes, and the server at that address presented a valid certificate for one of them. In other words, certificates existed for names nobody owned, most likely issued automatically for a catch-all server whenever someone requested the name over HTTPS. No RDAP record, no zone-file entry, no registrar to report to.
A certificate is evidence that a name was requested, not that a domain was registered. Confirm with RDAP or the domain's nameservers before treating a CT hit as a lookalike, and expect TLD-wide quirks like this one to swamp volume counts.
Other routine noise:
- Renewals of old domains. 82% of typosquats were over a year old when first seen in CT; they are renewing, not launching.
- Your own certificates and those of agencies and vendors that host campaigns for you.
- Shared-hosting certificates carrying hundreds of unrelated names, one of which happens to contain your word.
- Dictionary-word brands. If your name is a common word, substring matches are mostly someone else's business.
What CT cannot see
- Domains with no certificate. A lookalike used only for email never needs one. That is the most expensive kind for businesses (see lookalike domains with MX records), and CT will not show it.
- Names hidden behind a wildcard. A certificate for
*.example.netcovers any subdomain without listing it. - Plain HTTP sites and certificates from private CAs.
ICANN's Centralized Zone Data Service covers part of the gap. Approved users can download daily zone files for most generic TLDs and diff them to find every new registration, certificate or not. Most country code TLDs do not publish zone files.
How Greyphish does it
Greyphish runs certstream-server-go and an ICANN zone-file pipeline side by side. For each watched domain it precomputes dnstwist permutations, so every new hostname is checked in constant time, and it matches combos with a list of modifiers. Each match is then checked for DNS, MX, a live site, registrar and age, Google Web Risk listing, and later whether it went down. The .ph wave above is part of why that evidence step exists.
The public live feed shows the matching running against 1,250 widely impersonated brands, and the lookalike domain report publishes the aggregates hourly. To watch your own domain, enter it below; one domain is free.
Questions
How quickly does a new certificate appear in CT logs?
Usually within seconds to minutes. Certificate authorities submit a precertificate to the logs before issuing, and browsers require proof of logging, so a certificate cannot be used publicly without being logged.
Is crt.sh enough to monitor for phishing domains?
For occasional research, yes. For monitoring, no: it is a search with no alerts, broad wildcard queries often time out, and substring searches miss typos and homoglyphs because those do not contain your exact name.
Does every phishing domain show up in Certificate Transparency?
No. Domains used only for email, plain HTTP sites, and subdomains covered by a wildcard certificate do not appear by name. Zone files and DNS checks fill part of that gap.
Does a certificate in CT mean the domain is registered?
Not always. In 2026 tens of thousands of certificates were logged for unregistered .ph names that resolved through a catch-all server. Confirm with RDAP or the nameservers before acting on a CT hit.
More guides
- How to find lookalike domains of your company
Generate the names an impersonator would pick, find out which already exist, and sort the handful that matter from the thousands that do not.
- What is combosquatting? Examples from 5,600 domains
A combosquat keeps the brand spelled correctly and adds a word around it. They are the newest lookalikes we see when they appear, often only days old.
- Homoglyph and punycode domains, explained
A homoglyph domain swaps a letter for one that looks the same. Some swaps stay in plain ASCII; others need Unicode and travel as punycode.
- Someone registered a domain like yours: what to do
Most lookalikes never do anything. The ones that do need evidence, the right abuse contact and a little patience. Here is the order that works.
- Lookalike domains with MX records: the email risk
A lookalike with mail records can sit inside a supplier thread for weeks. More than a quarter of the registered lookalikes we checked could receive email.
Numbers in these guides come from the lookalike domain report, which updates hourly. Plans and limits are on the pricing page.