Skip to content

[medium] parking-domain: replace the 2022 artefact with live measurement and verified research indicators - #449

Open
elhoim wants to merge 2 commits into
MISP:mainfrom
elhoim:auto-parking-domain-live
Open

elhoim wants to merge 2 commits into
MISP:mainfrom
elhoim:auto-parking-domain-live

Conversation

@elhoim

@elhoim elhoim commented Sep 7, 2026 •

Copy link
Copy Markdown
Contributor

Draft. The change is destructive by design — please read What this costs before the diff.

BLUF

  • Answers @adulau on [low] Add generate-parking-domain.py: reproducible import from the TMA 2022 parking artefact #447 — "This is 4 years old. Can you find a better source?" No maintained dataset exists to replace it, so this drops datasets and uses two live sources instead.
  • Source A — live measurement. Resolve a daily newly-registered-domain feed, find addresses shared by many unrelated domains, then require positive evidence each one serves parking. 8 addresses.
  • Source B — Parked Domain Infrastructure Atlas, resolved 2026-09-07: 7,477 hostnames probed, 1,133 IPv4 enriched, 9,698 reverse-DNS lookups across 15 full RIR assignments. 10 addresses verified exclusive. Full transcript at the bottom of this description.
  • Effect: 108 → 18 entries. 2 kept, 16 new, 106 dropped.
  • No ranges, deliberately. The study tested 19 candidate prefixes and not one was exclusive to parking — including four currently in this list. Details below.
  • Runtime ~45 s, idempotent, floor-guarded. Priority: medium.

The ranges currently in this list that the study disproves

In list.json today What a reverse sweep of the assignment found
103.224.182.0/23, 103.224.212.0/23 Trellian. 223 PTRs — alongside ns1–5.above.com: www.mamma.com (live metasearch), www.girl.com.au, www.femail.com.au (media sites), and a DirectAdmin shared-hosting estate (ns20–31.hostedbyhelp.com). Listing it would suppress live consumer sites.
91.195.240.0/23 Sedo. 91.195.241.13 → mta-production.sedo.com, Sedo's production mail transfer agent.
185.53.176.0/22 Team Internet. 185.53.176.22 → infra.teaminternet.de, corporate infrastructure. Two individual addresses inside it are listed.
217.70.184.38/32, 217.70.184.50/32 Gandi. Both sit in 217.70.184.0/24: 100 PTRs, 97 of them general *.gandi.net load-balancer services. webredir is Gandi's redirect service generally, not parking-only.
198.54.117.192/26 Inside Namecheap's 198.54.112.0/20 general hosting and DNS estate.
52.222.x, 13.225.x, 13.248.x, 75.2.x, 34.102.x AWS/CloudFront/Global Accelerator anycast, shared with every other customer.

Replacing rather than unioning is what removes them.

What this costs — read this first

106 committed entries are dropped, and most are not disproven. Parking landers are virtual hosts: asked by bare IP they return a generic default page, and only return a parking page when the request carries the Host header of a domain actually parked there. For a committed address with no known parked domain to name, the check cannot reach the lander.

Measured directly: of the 108 committed entries, only 8 can be proven from a bare-address probe. A maintainer restoring a dropped entry by hand is a legitimate act, not a fight with the generator — every drop is logged by name in generators.log.

If that trade is not the one you want, the code unions instead of replaces by changing one line (entries → committed.union(entries)). Say the word.

The 18 entries

From live measurement (8) — MIN_DOMAINS = 5, evidence required, and the address must not sit on a shared network:

Entry Distinct domains Evidence
194.9.94.85/32, 194.9.94.86/32 2506 title Parked at Loopia
46.30.211.38/32 434 PTR domain-parking.one.com — already committed
185.8.237.22/32, 2a0e:acc0::d22/128 28 PTR domain-default.wedos.global
2.57.91.91/32 24 title Parked Domain name on Hostinger DNS system
2a01:5b40:0:bc03::1/128 22 title golfhem.se is parked
185.134.245.113/32 22 PTR parkedweb01.domeneshop.no — already committed

From the Atlas (10) — each passed the registry, sweep and behaviour tests:

Entry Operator Confidence Evidence
199.59.243.50/32 Bodis high NetName BODIS-COM / BODIS-A; 0/1022 PTRs across 199.59.240.0/22
185.53.179.200/32 ParkingCrew / Team Internet high 185.53.179.0/24, AS206834; 0 PTRs; serves lb, lp, ns3.parkingcrew.net
64.190.63.136/32 Sedo high SEDO-NET2 64.190.62.0/23; 0/510 PTRs; serves Server: Parking/1.0
104.247.81.99/32 NameDrive / Team Internet CA medium 104.247.80.0/22 NetName NEXTD; 0/1022 PTRs
185.53.177.29/32 ParkingCrew / Team Internet medium inside a non-exclusive /22; the address is exclusive
208.91.196.4/32, 208.91.196.7/32, 208.91.196.138/32 Skenzo / Radix medium CONFLUENCE-NETWORK-INC 208.91.196.0/23; 0/510 PTRs
208.91.197.7/32 Skenzo medium CONFLUENCE-NETWORK-INC 208.91.197.0/24; 0 PTRs
199.79.60.7/32 Skenzo / Radix medium CONFLUENCE-NETWORKS 199.79.60.0/24; 0/254 PTRs

Evidence of parking is necessary but not sufficient

Loopia fronts part of its parking estate with Cloudflare, so 188.114.96.0 and 188.114.97.0 genuinely answer Parked at Loopia — and listing them would suppress every other site behind those Cloudflare edge addresses. An earlier run of this generator did exactly that; run-to-run variance caught it.

So each candidate's owning network is now read from Team Cymru over DNS (<reversed-ip>.origin.asn.cymru.com, then AS<n>.asn.cymru.com) and rejected if the AS name is a CDN, cloud or PaaS provider. That is the study's own §11 technique, and it enforces its §03 categorical rejections in code rather than in prose. Four Cloudflare addresses are excluded by it today, each logged with the reason. No API key required.

high = the sweep found PTR evidence supporting parking and nothing contradicting it. medium = the sweep found no PTRs at all — absence of contradiction, weaker than proof. AS40034 (Confluence/Skenzo) publishes no reverse DNS in any of its 25 prefixes, so those rows are unfalsified rather than demonstrated. Drop the medium rows if that is not tolerable; the three high ones stand alone.

Each indicator carries its operator, confidence and evidence as a comment in RESEARCH_INDICATORS, so the claim is re-checkable rather than taken on trust.

Why no dataset

Candidate Verdict
tma22-parking.github.io data last touched 2022-07-04; 66 of its 67 addresses already committed — adds nothing
github.com/bambenek/parkingipaddresses empty repository, last pushed 2014
Hagezi, NRD aggregators, commercial parked-domain APIs no address-level parking feed

Limitations, stated plainly

  • The NRD feed is regional — .se, .sk, .nu. It finds operators serving those registries and no others. The Atlas indicators are what give the list global operators.
  • The Atlas is a dated observation, not a feed. Its own advice: re-run the exclusivity sweep quarterly, because an operator that starts co-locating other services in a listed assignment silently invalidates that row.
  • under construction / coming soon are deliberately not parking markers — they matched shared web-hosting front ends in testing (webfront6.webcluster.loopia.se).
  • An IP list is the weakest parking indicator available. The Atlas ranks NS delegation first, CNAME target second, HTTP fingerprint third, and IPs fifth. This warninglist is cidr-typed so it can only carry the fifth; the first two belong in parking-domain-ns (see [medium] Add parking-domain-ns warninglist generator #442).

Implementation notes


Full copy of the research — Parked Domain Infrastructure Atlas (resolved 2026-09-07)

Source: https://claude.ai/code/artifact/95af3f16-f41c-48e2-bdc5-f4c651eff96d
Method chain: DNS → HTTP → Team Cymru ASN → RIPEstat whois → reverse sweep. Resolvers 8.8.8.8 / 1.1.1.1 / 9.9.9.9, European vantage point. 7,477 hostnames probed · 1,133 IPv4 enriched · 9,698 reverse-DNS lookups · 10 IPs verified exclusive · 0 ranges passed.

01 — The short version

Do not detect parked domains by IP address. After verification, exactly 10 IPv4 addresses out of the 1,133 resolved can be attributed exclusively to parking. Not one range passed. Everything else is Cloudflare, AWS, Akamai, a registrar's general DNS estate, or a parking company's own network shared with its non-parking business.

Detect on nameserver delegation and CNAME target instead. Those are stable, operator-specific, and survive a hosting migration. The verified IPs are a supplement, never the primary rule.

Revision note: this is the second revision. The first draft published five "dedicated parking networks" as prefix indicators. Each was then tested by reverse-sweeping its full RIR assignment. Three of the five failed and were removed — Trellian/Above.com, GoDaddy's aftermarket estate, and Sedo's 91.195.240.0/23.

Detection order of preference: (1) NS RRset match — primary rule, cheap, stable, low false-positive rate. (2) CNAME target match. (3) HTTP response fingerprint — Server: Parking/1.0, status 436/445. (4) PTR fingerprint — AWS Global Accelerator IDs. (5) The 10 verified IPs, supplementary only. (6) Any range — don't; none passed.

02 — Verified IP indicators

An address appears only if all three tests hold. Registry test: the covering RIR assignment (inetnum/NetName, RIPEstat whois) is registered to the parking operator itself, not a cloud/CDN/hosting provider reselling it. Sweep test: a reverse-DNS sweep of every address in that assignment returned no hostname belonging to a non-parking service. Behaviour test: the address was observed serving a parking response, or is the A record of a parking-only hostname.

IP Operator Why it passes Confidence
199.59.243.50 Bodis NetName BODIS-COM / BODIS-A (199.59.243.0/24). 0/1022 PTRs across 199.59.240.0/22, none non-parking. high
185.53.179.200 ParkingCrew / Team Internet 185.53.179.0/24, announced by AS206834 Team Internet AG. 0 PTRs in the /24. Serves lb, lp and ns3.parkingcrew.net. high
64.190.63.136 Sedo SEDO-NET2 (64.190.62.0/23, Sedo GmbH). 0/510 PTRs, none non-parking. Serves Server: Parking/1.0. high
208.91.196.138 DomainAdvertising (Skenzo platform) CONFLUENCE-NETWORK-INC (208.91.196.0/23). 0/510 PTRs. medium
104.247.81.99 NameDrive / Team Internet CA 104.247.80.0/22 (NetName NEXTD, Team Internet AG). 0/1022 PTRs. Delegates to ns1/ns2.parkingcrew.net. medium
185.53.177.29 ParkingCrew / Team Internet Sits in 185.53.176.0/22 (DE-TEAMINTERNET), which also carries infra.teaminternet.de. The range is not exclusive; this address is. medium
208.91.197.7 Skenzo CONFLUENCE-NETWORK-INC (208.91.197.0/24). 0 PTRs. medium
208.91.196.4 Skenzo / Radix CONFLUENCE-NETWORK-INC (208.91.196.0/23). 0/510 PTRs. medium
208.91.196.7 Skenzo / Radix CONFLUENCE-NETWORK-INC (208.91.196.0/23). 0/510 PTRs. medium
199.79.60.7 Skenzo / Radix CONFLUENCE-NETWORKS (199.79.60.0/24). 0/254 PTRs. medium

Reading the confidence column: High = the sweep found PTR evidence positively supporting parking use and nothing contradicting it. Medium = the sweep found no PTR records at all in the assignment — absence of contradicting evidence, weaker than proof. AS40034 announces 25 IPv4 prefixes and publishes no reverse DNS anywhere in them, so exclusivity there is unfalsified, not demonstrated; and Confluence Networks was Directi's general network operator, which historically carried more than parking.

No CIDR ranges are published anywhere in this document. Every range tested contained something that was not parking.

03 — Ranges tested and rejected

Range Registered to What the reverse sweep found Verdict
103.224.182.0/23, 103.224.212.0/23 TRELLIAN-AU (Trellian Pty Ltd, AS133618) 223 PTRs. Alongside ns1–5.above.com: www.mamma.com (live metasearch engine), www.girl.com.au, www.femail.com.au (media sites), da03-san.hostedbyhelp.com and ns20–31.hostedbyhelp.com (a DirectAdmin shared-hosting estate), ns1/ns2.drop.com.au, dns1.netfleet.com.au (drop-catch registrar), www.domainstate.com, passport.trillion.com. Rejected — would break live consumer sites and a hosting platform.
97.74.98.0/23, 173.201.66.0/23 GO-DADDY-COM-LLC (AS44273) 710 PTRs, of which 686 are *.secureserver.net — GoDaddy's general customer DNS estate. Only 5 relate to Afternic, Dan or Namefind. Rejected — GoDaddy DNS, not GoDaddy parking. Sits under ~90M domains.
91.195.240.0/23 SEDO-NET (Sedo GmbH, AS47846) 91.195.241.13 → mta-production.sedo.com, Sedo's production mail transfer agent. Rejected — corporate services share the range with the parking NS.
185.53.176.0/22 DE-TEAMINTERNET (Team Internet AG, AS61969) 185.53.176.22 → infra.teaminternet.de, corporate infrastructure. Rejected as a range — two individual addresses inside it are listed in §02.
95.130.16.0/21 DE-KEY-SYSTEMS (Key-Systems GmbH, AS13246) 128 PTRs dominated by *.mail-gw.de, *.secure-mx.de, *.internetwire.de, *.partnergate.com — mail gateways and unrelated hosting. ParkingPanel is one host in it. Rejected
217.70.184.0/24 GANDIFR-NET4 (GANDI FRANCE L/B SERVICES) 100 PTRs, 97 of them general *.gandi.net load-balancer and platform services. Rejected — webredir is Gandi's redirect service generally, not parking-only.
104.143.9.0/24 The Producers, Inc. (THEPR-46, AS399522) PTRs are *.directnic.net — a different company. Rejected — registry holder does not match the operator.
66.81.203.0/24 NetName CN, inside 66.81.192.0/20 (Psychz Networks) No PTRs. The assignment belongs to a general hosting provider. Rejected — a hoster sub-allocation is not an operator-owned range.
198.54.112.0/20 NAMEC-4 (Namecheap Inc, AS22612) Namecheap's general hosting and DNS estate. Rejected
162.159.16.0/20, 162.159.24–27.0/24, 104.16–104.20.x Cloudflare, AS13335 (2,381 announced IPv4 prefixes) Carries the parking nameservers of Bodis (dyna-ns.net), NameSilo (dnsowl.com) and Hostinger (dns-parking.com) and the registrar DNS of Dynadot, Network Solutions, Openprovider, Porkbun, Spaceship, 101domain, Dotster and Crazy Domains and a large fraction of the public internet. Rejected — categorically. An alert on any Cloudflare prefix is an outage, not a detection.
13.248.x, 76.223.x, 75.2.x, 34.x, 54.x AWS, AS16509 / AS14618 (16,746 announced IPv4 prefixes) ParkingCrew, ParkingSpa, Parkingdots, Internet REIT and Tonic all front their nameservers with AWS Global Accelerator, whose anycast addresses are shared with every other accelerator customer. Rejected — use the accelerator hostname, never the address.
Akamai · Google · DigitalOcean · Vultr · GigeNET · Vercara · RcodeZero · WorldStream · OVH · AIT · Ting · Cherry · Cyso · Greenhost · NuCDN · Limestone · Automattic · ChinaNet General cloud, CDN, anycast-DNS and hosting providers Multi-tenant by construction. Rejected — categorically
199.59.243.0/24 NetName BODIS-COM, announced by Amazon AS16509 0/1022 PTRs across 199.59.240.0/22, none non-parking. ASN data alone would have discarded this as "AWS". The RIR assignment is what saved it. Source of one §02 entry

Check the registry, not just the origin AS — and check reverse DNS, not just the registry. They answer different questions.

04 — Nameserver indicators (primary detection surface)

Parking NS — assigned by a parking service to a customer's parked domain:

ns1/ns2/ns3/ns4/ns5.above.com · ns1/ns2.abovedomains.com · ns1/ns2.trellian.com · ns1.adtiger.com · ns1/ns2/ns3.afternic.com · ns1/ns2.dyna-ns.net (Bodis) · ns1.brandbucket.com · ns1.brandpa.com · ns1/ns2/ns3.dan.com · ns1.undeveloped.com · ns1.digimedia.com · ns1.domainadvertising.com · ns1.domainagents.com · ns1.domainpower.com · ns1.domainspa.com · ns1/ns2/ns3.dsredirection.com · ns1.domainify.com · ns1.dropcatch.com · ns1.4cun.com (Ename) · nameservices.net, ns1/ns2.nameservices.net, ns1.fabulous.com · ns1.flippa.com · ns01.cashparking.com (GoDaddy) · ns1/ns2/ns3/ns4.dns-parking.com (Hostinger) · ns1.internetreit.com · ns1.internettraffic.com · ns1.namedrive.com, ns1.namedrive.net, ns2.namedrive.com · ns1.namejet.com · ns1/ns2/ns3.dnsowl.com (NameSilo) · ns1.namefind.com · ns1.park.io · ns1/ns2.parklogic.com · ns1.parkedin.com · ns1/ns2/ns3.parkingcrew.net, ns1.parkingcrew.org, ns1/ns2.pcrewdns.net · ns1/ns2.parkingpanel.com · ns1.parkingspa.com · ns1.parkingdots.com · ns1.perfectdomain.com · ns1.redirect.com · ns1/ns2.rookdns.com · ns1/ns2.sedo.com, ns1/ns2/ns3.sedoparking.com, ns1.sedoparking.de · ns1.skenzo.net, ns1/ns2.ztomy.com · ns1.snapnames.com · ns1.theparkingplace.com · ns1.tonic.com · ns1.trafficz.com · ns1.verticaldevelopment.com · ns1.dnsnuts.com

Registrar NS — a registrar's default DNS, appearing on parked and live domains; context, never a standalone detection:

ns1.101domain.com · ns1.22.cn · ns1.alidns.com · dns1/ns1.hichina.com · ns1.ascio.net · ns1.blacknight.com · ns1.crazydomains.com · f1g1ns1.dnspod.net · ns1.dotster.com · ns1.dynadot.com · ns1.ename.net · ns1.eurodns.com · a.dns.gandi.net · ns1.ispapi.net · ns1063.ui-dns.com · ns1.internetx.de · ns1.rrpproxy.net · ns1.markmonitor.com · ns1.moniker.com · dns1/dns2.registrar-servers.com, registrar-servers.com · ns1.netim.net · ns1/ns2.worldnic.com · dns.ovh.net · ns1.openprovider.nl · ns1.mydomainprovider.com · curitiba.ns.porkbun.com · ns1.reg.ru · ns1.yourdomainprovider.net · launch1.spaceship.net · ns1.now.cn · ns1.udag.net · ns1/ns2.myhostadmin.net · ns1.wixdns.net

Only seven of the nameservers in the study sit on address space usable as an IP indicator: ns1.domainadvertising.com, ns1.namedrive.net, ns3.parkingcrew.net, ns3.sedoparking.com, ns1.skenzo.net, ns1.ztomy.com, ns2.ztomy.com. Everything else is Cloudflare, AWS, or a general hoster.

05 — Parking landing pages

Operator Landing hostname CNAME chain Network HTTP fingerprint IP usable?
Above.com lb-182-250.above.com, park.above.com — AS133618 Trellian 200 Apache No
Afternic afternic.com, www.afternic.com afternic.com.sni-only.edgekey.net → e126871.dsca.akamaiedge.net AS20940 Akamai 200 envoy No
Atom/Squadhelp atom.com, squadhelp.com — Cloudflare / IPv6-only 301/403 cloudflare No
Bodis bodis.com — AS16509 AWS — Yes
BrandBucket brandbucket.com — Cloudflare 403 No
Dan.com undeveloped.com — AS16509 AWS — No
DomainMarket domainmarket.com — IPv6 only 403 cloudflare —
DomainSponsor/Oversee dsredirection.com — AS40676 Psychz 200 nginx/1.14.2 No
Dynadot parking.dynadot.com — Cloudflare 200 No
Efty efty.com, lp.efty.com — IPv6 only 403 —
Gandi webredir.gandi.net — AS29169 Gandi — No
GoDaddy aftermarket.godaddy.com, mcc.godaddy.com, parked-content.godaddy.com *.edgekey.net → e6001.*.akamaiedge.net AS16625 Akamai 403/302 AkamaiGHost No
GoDaddy cashparking.com, parked.godaddy.com — GoDaddy / AS7018 AT&T — No
HugeDomains hugedomains.com — IPv6 only 403 cloudflare —
Namecheap parkingpage.namecheap.com parking.d.parity.domains AS22612 Namecheap, AS49981 WorldStream 200 nginx/1.28.3 No
Namefind/GoDaddy namefind.com — AS398101 GoDaddy 301 Apache No
ParkingCrew lb.parkingcrew.net, lp.parkingcrew.net, parkingcrew.net — AS61969 Team Internet — Yes
ParkingCrew parkingcrew.com — AS16509 AWS 302 awselb/2.0 No
REG.RU parking.reg.ru — IPv6 only 403 nginx —
Sedo sedoparking.com — AS47846 Sedo 302 Parking/1.0 Yes
Sedo ww1/ww25/ww38.sedoparking.com — AS47846 Sedo 445 Parking/1.0 Yes
Skenzo/Radix ztomy.com — AS40034 Confluence 200 nginx/1.28.0 Yes
Team Internet parking.teaminternet.com teaminternet.com Cloudflare — No
eNom/Tucows sitedomains.enom.com — AS2635 Automattic 404 nginx No

06 — Distinctive fingerprints (highest fidelity; none is an IP)

Indicator Type Operator Why it holds up
Server: Parking/1.0 HTTP header Sedo Emitted by sedoparking.com and every ww<N>.sedoparking.com. Also returns non-standard status codes 436 and 445 — almost nothing else on the internet does.
^ww\d+\.sedoparking\.com$ CNAME target Sedo Sedo assigns a numbered wwNN host per parked domain. Match the pattern, not any single number.
^ns\d{4,6}\.ztomy\.com$ NS pattern Skenzo / Radix Per-customer numbered nameservers. A regex here is worth more than any IP list.
a94f3aae71d6f0705.awsglobalaccelerator.com PTR ParkingCrew Accelerator IDs are stable and operator-specific; the anycast IPs behind them are not.
a904c694c05102f30.awsglobalaccelerator.com PTR Parkingdots · Internet REIT One accelerator, two brands.
a45d5eda59d380dac.awsglobalaccelerator.com PTR ParkingCrew (pcrewdns.net)
a94b1fcceee8ac9d4.awsglobalaccelerator.com PTR ParkingSpa
parking.d.parity.domains CNAME target Namecheap New in 2026 — see §08.
*.edgekey.net from parked-content.godaddy.com CNAME chain GoDaddy The Akamai edge hostname is the indicator; the Akamai IP is not.
PTR ns1.above.com on a hostname not under above.com PTR mismatch Trellian family This is what exposed the TrafficZ / Rook Media / DomainPower brand fronts.
dns1/dns2.parking-page.net NS Skenzo Delegation of skenzo.net itself.
redirect.ovh.net PTR OVHcloud The hostname, not 213.186.33.5 — that address is OVH's shared redirect service.
webredir.vip.gandi.net, webredir.gandi.net PTR / CNAME Gandi Same reasoning: the name is specific, the 217.70.184.0/24 range is not.

07 — Shared answers and brand fronts

These addresses are evidence of common ownership, not detection indicators — most sit in ranges rejected in §03.

Shared answer Network Brands returning it What it proves
103.224.182.77, .85, .9, 103.224.212.9 AS133618 Trellian Above.com, DomainPower, Rook Media, TrafficZ Trellian platform, four brand fronts
103.224.182.10, 103.224.212.10, .51, .53 AS133618 Trellian Above.com, Rook Media Trellian secondary NS
149.28.95.10 AS20473 Vultr Park.io, ParkLogic Park.io runs on ParkLogic
50.116.34.34 AS63949 Akamai (Linode) Park.io, ParkLogic Park.io runs on ParkLogic
69.39.238.36 AS32181 GigeNET Park.io, ParkLogic Park.io runs on ParkLogic
97.74.99.64 AS26496 GoDaddy InternetTraffic, Namefind/GoDaddy InternetTraffic served by GoDaddy Namefind
13.248.169.48, 76.223.54.146 AS16509 AWS Internet REIT, Parkingdots One accelerator, two brands

Roughly 100 brands collapse into about 15 platforms. Above.com = TrafficZ = Rook Media = DomainPower (one Trellian platform, four fronts). Park.io = ParkLogic. Afternic = Dan.com = Undeveloped. Namefind = InternetTraffic = Parkingdots = Internet REIT. DomainSponsor/Oversee → Skenzo. NameDrive → Team Internet. Write detection logic against the platforms, not the brands.

08 — Two live changes that break existing rules

Namecheap. parkingpage.namecheap.com — historically a stable A record in 198.54.117.208–218 — now returns CNAME parking.d.parity.domains, resolving to 104.219.250.36 (Namecheap AS22612) and 2.59.170.19 (WorldStream B.V., NL — AS49981). The legacy 198.54.117.210 still carries PTR parkingpage.namecheap.com. A rule pinned to 198.54.117.0/24 is now partially blind — and that /20 is Namecheap's general hosting estate, rejected in §03. The parity.domains CNAME is the indicator.

GoDaddy. parked-content.godaddy.com and aftermarket.godaddy.com are now Akamai-fronted (*.edgekey.net → e6001.a.akamaiedge.net). Parked-page detection by GoDaddy IP is no longer viable at all: the old 184.168.221.0/24 and 34.102.136.180 addresses are legacy, and 184.168.128.0/17 is GoDaddy's general hosting /17. Use the edge hostname.

09 — Registrar default parking

No IP indicators appear here — every registrar range tested failed §03, because a registrar's DNS estate serves its live customers too.

Registrar Default / parking NS Parked landing hostname Detection note
GoDaddy ns1/ns2.domaincontrol.com; ns01.cashparking.com → cpns01.secureserver.net parked-content.godaddy.com → *.edgekey.net; parked.godaddy.com; mcc.godaddy.com domaincontrol.com sits under ~90M domains — never an indicator alone.
Namecheap dns1/dns2.registrar-servers.com parkingpage.namecheap.com → parking.d.parity.domains The CNAME is the durable signal.
Tucows / eNom ns1/ns2.name-services.com; redirector-sjl.enom.com sitedomains.enom.com eNom parking largely retired; residual records remain.
Squarespace ns1.squarespacedns.com — No PPC parking; "domain not connected" pages only.
GMO / Onamae dns1/dns2.onamae.com — Japanese market; low Western prevalence.
Dynadot ns1.dynadot.com parking.dynadot.com Cloudflare-fronted end to end; NS/CNAME only.
NameSilo ns1/ns2/ns3.dnsowl.com — The dnsowl.com delegation is the signal — cheap and high-fidelity.
Hostinger ns1–ns4.dns-parking.com 84.32.84.32 (untested for exclusivity — not an indicator) The name dns-parking.com is self-documenting.
IONOS ns1063.ui-dns.com and siblings IONOS landing estate Anycast; NS only.
Network Solutions / Newfold ns1/ns2.worldnic.com park.dnsrsrvr.com, parkpage.foundationapi.com Nameservers are on Cloudflare.
OVHcloud dns.ovh.net, ns*.ovh.net PTR redirect.ovh.net 213.186.33.5 is OVH's shared redirect host — widely seen, but not parking-exclusive.
Gandi a/b/c.dns.gandi.net webredir.vip.gandi.net Range rejected in §03; use the hostname.
Cloudflare Registrar Customer's own zone — No parking product.
Key-Systems ns1.rrpproxy.net ns1/ns2.parkingpanel.com ParkingPanel is Key-Systems' own platform — same corporate group. Range rejected in §03.
Alibaba / HiChina dns1.hichina.com, ns1.alidns.com — IPv6-only from this vantage point.
West.cn ns1/ns2.myhostadmin.net — ChinaNet Sichuan ranges — carrier space, not parking space.
Epik · Sav · Porkbun · Spaceship · Openprovider · Realtime Register · Hexonet · InterNetX · Ascio · Netim · EuroDNS · 101domain · Blacknight · United-Domains · MarkMonitor · CSC · Moniker · Dotster · SnapNames · PDR · Crazy Domains · Todaynic · Wix · Xin Net see §04 — Registrar DNS only; no distinct parking estate found.

10 — Operationalising it

Rule shapes. Microsoft Sentinel — a watchlist of parking-NS suffixes joined against DnsEvents on the answer field; keep any IP watchlist to the ten §02 addresses, if you use one at all. Splunk — a lookup keyed on NS suffix, driven from tstats over an accelerated Network_Resolution data model matching dns.answer, not a raw search over index=dns. Zeek / Corelight — dns.log where answers matches the parking-NS list, plus http.log where server == "Parking/1.0". Sigma — dns_query with answer|endswith on the NS suffix list.

What a parked-domain hit actually means. Parking is not malicious. Treat it as an enrichment and scoring signal rather than an alert — "the C2 domain is now parked" changes triage priority. It is a lapse or takedown indicator: a formerly-active malicious domain that starts resolving to Sedo or ParkingCrew has usually expired or been seized. And it is a hunting pivot: clustering tenant DNS by parking operator surfaces typosquats and lookalikes.

False positives to expect. Legitimate businesses park domains they own — defensive registrations, brands in transition, redirect-only domains. Score it; don't alert on it.

11 — Coverage, method and honest gaps

Verification chain. 7,477 candidate hostnames generated across 244 zones → 1,807 resolved → 1,133 unique IPv4 enriched with PTR and Team Cymru ASN/prefix → 175 landing hosts fingerprinted over HTTP(S) → 19 candidate ranges checked against RIPEstat RIR whois → 9,698 reverse-DNS lookups sweeping 15 full assignments. Every record observed live on 2026-09-07 from a European vantage point. Nothing is from a published list.

What the exclusivity test can and cannot show. A sweep that finds a non-parking hostname disproves exclusivity — a hard result, and what removed Trellian, GoDaddy, Sedo's /23, Key-Systems and Gandi. A sweep that finds nothing fails to disprove exclusivity, which is weaker; five of the ten §02 addresses rest on that weaker footing and are marked Medium. There is no way from here to enumerate every domain hosted on an address, so nothing in this document is proof of exclusivity — only "tested, and nothing contradicted it".

Known gaps. (1) 88 of 223 targeted parking hostnames did not resolve. Many operators are defunct (WhyPark, DomainApps, Ninja Parking, Kontera, Rockhoster, Parked.com) or absorbed (NameDrive → Team Internet, Undeveloped → Dan.com → GoDaddy). A "top 100 parking companies" list is a historical artefact; roughly 15 platforms operate today. (2) Chinese and Japanese operators are under-covered — ns1.alidns.com, dns1.hichina.com, ns1.ename.net, ns1.4cun.com, f1g1ns1.dnspod.net and ns1.22.cn returned IPv6-only answers or nothing; re-run from an APAC vantage point if that coverage matters. (3) No passive DNS — the single biggest available improvement: feed the §04 nameserver list into pDNS and pull every domain delegated to them.

Refresh cadence. Hostnames and CNAME targets are stable — re-resolve monthly. The ten verified IPs sit on small operator-owned assignments and move rarely, but re-run the §03 sweep quarterly: an operator that starts co-locating other services in a listed assignment silently invalidates that row.

Two techniques worth keeping. Team Cymru over DNS — <reversed-ip>.origin.asn.cymru.com TXT returns ASN | prefix | CC | registry | date, and AS<n>.asn.cymru.com TXT returns the AS name. No API key, no rate-limit negotiation, fine at thousands of lookups. RIPEstat whois before trusting an origin AS — 199.59.243.0/24 is announced by Amazon but registered NetName BODIS-COM. Origin-AS data alone would have discarded a genuine indicator, and would equally have kept the Trellian ranges that a reverse sweep then disproved.

@elhoim
elhoim marked this pull request as draft September 7, 2026 09:14
@elhoim
elhoim force-pushed the auto-parking-domain-live branch from 6456a1f to f47846a Compare September 7, 2026 10:03
@elhoim elhoim changed the title [medium] parking-domain: replace the 2022 artefact with live measurement (+5 evidenced addresses) [medium] parking-domain: replace the 2022 artefact with live measurement (regenerates the list from evidence) Sep 7, 2026
@elhoim
elhoim force-pushed the auto-parking-domain-live branch from f47846a to 14aed0c Compare September 7, 2026 10:39
@elhoim elhoim changed the title [medium] parking-domain: replace the 2022 artefact with live measurement (regenerates the list from evidence) [medium] parking-domain: replace the 2022 artefact with live measurement and verified research indicators Sep 7, 2026
…ent and verified research indicators

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@elhoim
elhoim force-pushed the auto-parking-domain-live branch from 14aed0c to 685c4e7 Compare September 7, 2026 10:43
@adulau

adulau commented Sep 7, 2026

Copy link
Copy Markdown
Member

Looking quickly at the code, there are some heuristic to detect the parking pages. It's clearly a good idea but my worries are on the false-positive side and we could limit those. Feel free to update the PR.

@elhoim

elhoim commented Sep 30, 2026

Copy link
Copy Markdown
Contributor Author

Looking quickly at the code, there are some heuristic to detect the parking pages. It's clearly a good idea but my worries are on the false-positive side and we could limit those. Feel free to update the PR.

Any suggestions on how to limit potential FPs?

Resolve the version conflict in lists/parking-domain/list.json: keep this branch's measured list together with upstream's new "category": "known" field, and set version to 20261016 so that it is newer than upstream's 20261014 and instances re-import the changed list. The generator keeps the category, since it rewrites only list and version.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@elhoim
elhoim marked this pull request as ready for review October 16, 2026 22:25

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants