Federal · State · County · Municipal

A citizen cannot tell your portal from the copy of it. Your resolver can.

This page is written for the people who actually run an agency's mail gateway, its recursive resolvers and its web estate — not for the committee that approves the budget. It covers where a DNS-verified known-bad domain lookup belongs in a public-sector stack, how to write it into a specification, what it costs per lookup, and the specific things it will not do for you.

390,000+DNS-verified phishing domains, every one confirmed resolving
Every 24hFull rebuild, with an added and removed changelog
Under 50 msTypical lookup — fast enough to sit inline in mail flow
12 monthsHow long a purchased credit stays valid on the shelf
Agency mail gateways
Recursive resolvers & RPZ
Citizen portal referrers
Vendor payment checks
SIEM enrichment
Offline feed import
Home / Use Cases / Government Agencies
The estate

Most agencies do not run one website. They run four hundred of them.

Before anything can be defended, somebody has to be able to say what exists. In public sector IT that sentence is much harder than it sounds.

Ask a state CIO for a list of every hostname the state publishes to the public and you will get an estimate, not an inventory. Departments procure independently, and the estate accretes one appropriation at a time.

  • A revenue division buys a filing portal from one vendor.
  • A parks authority buys a reservation system from another.
  • A health department stands up a scheduling site during an emergency and never decommissions it.
  • A county clerk's office runs a records search that was written in 2009 and has outlived three contract managers.

Each of those sits on its own hostname, frequently outside the main second-level domain, frequently with its own certificate, its own visual style and its own login form. That sprawl is not incompetence — it is the direct consequence of budgets that are appropriated by programme rather than by platform.

The security consequence is specific and unpleasant

Every additional hostname you publish is another shape a citizen has been trained to accept as legitimate. When your permit payment system lives at a name that shares no visual or structural relationship with your main site, you have taught the public that a government service can look like anything at all. An attacker registering a hostname that reads plausibly as a licensing or court portal is not fighting an established expectation; they are joining a crowd of legitimate services that already look nothing like each other. The clone does not have to be good. It only has to be no stranger than the real thing.

The same estate, four tiers of government, four different versions of the problem

Federal

Departments and their bureaus

Usually the tier with an actual security operations function, and just as usually the tier with isolated or restricted enclaves that no live API can reach. Here the value sits in the offline file and the per-build changelog rather than in the query endpoint, because the mechanism has to survive a boundary review.

State

Thirty agencies, uneven capability

A central security office with real staff sits above constituent agencies whose technical capacity ranges from a dedicated team to one contractor. The workable shape is one balance and one feed held centrally, exposed inward, rather than thirty separate procurements each repeating the same evaluation.

County

Where the sensitive records live

A handful of IT staff carry benefits determinations, property records, court dockets, licensing registers and child welfare case files across departments that barely share a directory. The estate is fragmented, the data is unusually consequential, and nobody has time to run anything that needs weekly tuning.

Municipal

One or two people, everything

A city of forty thousand people typically has one or two people who own everything with a power cable, including the phone system and the door badges. They will not stand up a detection pipeline, tune a model or run a threat hunting programme, and any proposal assuming they will is written for a different customer.

The resourcing asymmetry almost never survives a vendor pitch intact

What a two-person department can realistically do is add a blocklist to a resolver they already operate, or wire a single HTTP call into a mail gateway rule. The realistic question for a small municipality is not which platform to adopt but which one mechanical control returns the most for the least ongoing attention — and that question has a different answer from the one a federal security operations centre would give.

Definition

Known-bad domain lookup

A narrow, mechanical control: given a hostname, is it currently a verified live phishing site? It does not replace multi-factor authentication, mail authentication records, or the segmentation work that keeps a compromised account from reaching a case management database. It sits underneath all of that as a floor.

That is the frame for the rest of this page. A control of this shape is unusually well suited to teams whose scarcest resource is attention rather than money. For the policy-level and citizen-trust argument — the one you would put in front of a council or an oversight committee — the companion piece on phishing in the government and public sector covers the obligation landscape rather than the rollout.

Specification language

A requirement outline you can paste into a solicitation

Public sector buying runs on written requirements. These clauses are drafted to be adapted, with bracketed placeholders where your agency's own terms belong.

Phishing Domain Screening — Requirement Outline
Ten clauses · adapt to your agency's procurement template
1
Purpose. [Agency] requires a screening capability that determines whether a given hostname is a currently active credential-harvesting or brand-impersonation site, for use in inbound mail handling, name resolution and citizen-facing verification.
2
Currency of data. The supplier shall confirm that every entry in the supplied dataset resolves in DNS at the time of publication, and shall remove entries that no longer resolve rather than retaining them indefinitely.
3
Refresh interval. The dataset shall be rebuilt no less frequently than once every twenty-four hours, and the supplier shall publish a per-build record of additions and removals sufficient for [Agency] to reconcile changes between builds.
4
Interface. The capability shall be reachable over HTTPS as a single-hostname query and as a batched query of at least one hundred hostnames per request, returning a machine-readable verdict without requiring a client-side agent on any endpoint.
5
Offline distribution. Where [Agency] operates isolated or restricted networks, the supplier shall make the complete dataset available as a downloadable file suitable for import into resolver, firewall or log-analysis infrastructure without an outbound connection at query time.
6
Commercial model. Consumption shall be measured in discrete units purchasable in advance, with no per-seat licence and no automatically renewing subscription for query access, so that spend can be encumbered against a single purchase order.
7
Credential handling. The API credential shall be used only from server-side systems under [Agency] control and shall never be embedded in browser-delivered code, mobile application bundles or published source repositories.
8
Records retention. [Agency] shall log the hostname queried, the verdict returned and the timestamp. [Agency] shall not log the identity of the member of the public whose action prompted the query, except where an existing records schedule already requires it.
9
Stated limitations. The supplier shall state plainly, in writing, that the capability identifies previously observed and verified hostile hostnames and does not evaluate hostnames it has not yet seen. [Agency] shall not represent the control as complete coverage in any public communication.
10
Review. [Agency]'s [security office / IT director] shall review query volume, block counts and false-positive reports at [quarterly] intervals and shall record the outcome in the control register maintained under [applicable framework].
Technical owner — signature / date
Contracting officer — signature / date
Two populations

You are defending an employee you can train and a citizen you cannot

Almost every control an agency buys is aimed at the first group. The second group is larger, more exposed, and is where the reputational damage actually lands.

Start with the employee, because that is the population you have leverage over. Agency staff get phished into internal systems in a handful of repeatable ways:

  • A message that appears to come from the payroll self-service tenant.
  • A notice that mandatory training is overdue.
  • A document-share notification from a name resembling the records management platform.
  • A helpdesk password expiry warning timed to a real policy cycle.

None of these are creative. They work because they are indistinguishable from the twelve legitimate notifications the same person received that week, and because a public-sector job frequently involves opening unsolicited attachments from members of the public as a matter of routine. A caseworker who refuses to open unexpected documents cannot do the job.

Fragmentation runs inward as well as outward

Employee-facing systems — the case management application, the payroll self-service portal, the timekeeping tool, the grants management platform, the learning system that carries mandatory training — are typically a set of third-party tenants, each with its own login page on its own vendor hostname. Staff have been conditioned to authenticate on domains that are not yours, which removes the one heuristic that might otherwise protect them. "Check the address bar" is advice that only works when there is a single correct address to check against, and in most agencies there are dozens.

The blast radius on the other side of the login is what makes this different

A compromised account in a private company usually reaches that company's own data. A compromised account in a county government may reach benefits determinations, property records, a court docket, a licensing register, a child welfare case file, or a payment approval queue — datasets belonging to people who never chose to do business with you and cannot take their custom elsewhere. That asymmetry is why a floor-level control that removes the mechanical, high-volume lures is worth more here than the identical control is worth in a commercial setting.

The second population is the one nobody has a good answer for

A member of the public interacting with a benefits application, a tax filing portal, a licence renewal, a permit payment or a court records search has no way to verify what they are looking at. They do not know your real hostname. They have no prior visit to compare against, because most people touch a given government service once every few years at most. They arrive through a search result or a link somebody forwarded, and the genuine service and the impersonation are both blue links on a page. Attackers know this, which is why grant portals and disaster relief applications are cloned within days of being announced — the announcement does the marketing for them, and the audience is by definition people under financial pressure who have never used the programme before.

  1. Screen every outbound link in your own citizen communications before they send. Your notification platform can then never itself become the delivery vehicle for a hostile domain that slipped into a template or a vendor-supplied footer.
  2. Check the referring hostname when a citizen lands on your real portal. A session arriving from a known clone can be met with an interstitial warning rather than a login form.
  3. Run a standing check across permutations of your own agency names. You then learn that a clone of your unemployment portal exists from your own tooling rather than from a local news story.

Because you cannot train the second population, those three moves all operate on the attacker's infrastructure rather than the citizen's judgement. The third is the one most agencies skip and the cheapest of the three: generate the plausible variants of your public-facing names and push them through the batch endpoint a hundred at a time on a schedule.

  • Hyphenated forms of the names you already publish.
  • The ones that append -portal, -benefits, -payments or -gov.
  • The common character substitutions that read correctly at a glance.
  • The same string registered under other top-level domains.

Most will come back clean forever. When one comes back marked as a verified live phishing host, you have a dated, machine-generated record to attach to a takedown request with the registrar and a concrete artefact your communications team can build a public notice around. The related mechanics run deeper on the brand protection and identity protection pages.

Two neighbouring audiences agencies frequently own too

Public safety and investigative units have their own exposure profile, addressed on the law enforcement page, and any agency that operates public access terminals — a library branch, a one-stop centre, a records reading room — inherits the shared-hardware problem set out on the public libraries page, where the person at the keyboard changes every forty minutes and per-user policy simply does not exist.

Requirement to implication

What the control register says, and what a lookup actually contributes

Six obligations most public bodies already carry, mapped honestly against what a known-bad domain check does and does not satisfy.

The obligation, as written

Protect inbound electronic mail against malicious links and content
Maintain awareness of threats targeting the organisation and its users
Verify payment instruction changes before disbursing public funds
Keep evidence that deployed controls operate as described
Assess and monitor the risk introduced by suppliers and grantees
Notify affected individuals when their information is exposed

What a domain check contributes

A deterministic verdict on every URL host before delivery to the mailbox
A daily record of which impersonating hostnames went live and which went dark
A check on the hostname in a supplier's message or invoice link, never the instruction itself
Timestamped query and verdict logs that map directly onto a control register entry
Scheduled batch screening of grantee and vendor domains you already hold in a register
Evidence of when a hostname was first known hostile, which anchors a notification timeline

The mapping is deliberately modest. A domain check is one contributing control against each of these obligations, never the whole of any one of them.

How the list is built

Every domain in this morning's file resolved in DNS this morning

The difference between a verified list and an accumulated one decides whether the file is usable inside a resolver at all.

390k+Active phishing domains, all confirmed resolving at build time
24hRebuild cadence, with a per-build added and removed changelog
100Hostnames per batch request, one credit consumed per hostname
<50msTypical single-lookup latency against the live endpoint

Most freely circulating blocklists are accumulations. A domain gets reported, it goes on the list, and it stays there because removing entries is work nobody is funded to do. Two or three years in, the majority of the file is archaeology: parked domains, expired registrations, hosts taken down long ago. That is tolerable in an analyst's spreadsheet and genuinely harmful inside a recursive resolver.

  • Every stale entry is memory consumed on a box that is usually already sized to the year it was bought.
  • Every stale entry is a rule evaluated on every single query, forever.
  • Every stale entry carries a permanent small chance of colliding with a name that has since been re-registered by somebody legitimate.

This database is rebuilt every twenty-four hours and each entry is confirmed to be currently resolving in DNS. Domains that stop resolving are dropped from the build rather than retained, which is why the total moves in both directions rather than only upward.

Fields the response body carries, and that you can act on programmatically

domain is_phishing category dns_status last_checked confidence database_size

A mail rule can branch on the verdict while an analyst reviewing the same event weeks later can see when the determination was made.

The daily changelog matters more to a government deployment than the headline size figure

It is what lets a resolver reload be a diff rather than a wholesale replacement, which in turn is what keeps local exceptions intact across an update and produces a defensible answer when somebody asks why a particular hostname stopped being blocked on a particular Tuesday. Agencies running isolated networks move the same file across the boundary on their normal transfer path; the feed is plain CSV precisely so it survives whatever review process sits at that boundary. Teams pushing the same data into detection tooling will find the mechanics on the SIEM integration and DNS filtering pages.

Where it goes

Four insertion points, in the order most agencies should build them

Each one is a small change to something you already operate. None requires an agent on an endpoint or a new appliance in a rack.

First — where the volume lives

The mail gateway

Extract the host from every URL in an inbound message, deduplicate within the message, and batch the remainder. A message carrying a verified live phishing host should be quarantined rather than tagged, on the reasoning that a warning banner asks a caseworker under deadline pressure to make a security judgement they are not equipped to make. Deduplication is the difference between a sensible credit bill and a silly one: a newsletter with forty tracking links resolves to a handful of distinct hosts, and you should pay only for the distinct ones. The neighbouring detail work is covered on the email security page.

Second — and for a small town, possibly the only one

The recursive resolver

Loading the daily feed into whatever recursive DNS you already run means every device on the network — the desktop, the kiosk in the lobby, the tablet in the inspector's truck, the phone on staff Wi-Fi — is covered by the same list without anybody installing anything anywhere. It also catches the links that never touch email: the ones in text messages, in QR codes printed on a poster, in a chat application, in a PDF opened from a USB stick. That breadth is the argument for the feed model over per-query lookups when the team is small.

Third — the estate you publish

Your own citizen-facing pages

Screen the outbound links in notification templates before a campaign goes out, and check the referrer on arrival at a login page so a session that came from a known clone can be interrupted before credentials are typed. This is the only one of the four insertion points that protects somebody who has never met your IT department and never will.

Fourth — where the money moves

The finance and procurement path

When a supplier, contractor or grantee sends a change of banking detail, the hostname in the message and any link it carries go through the check as one step in a verification procedure that must still include an out-of-band callback to a number you already held. The lookup narrows the problem. It does not close it, and any procedure treating a clean verdict as authorisation to move public money has misunderstood what the control is.

The integration itself is one HTTP call. The single-lookup form is a GET against /api/v1/check; the batch form posts up to a hundred hostnames and consumes one credit per hostname. The key is passed as a query parameter or in the POST body and must live server-side only — never in browser-delivered JavaScript, a mobile bundle, or a repository a supplier can read.

# Single hostname — one credit
curl -s "https://phishingdetectionapi.com/api/v1/check?domain=state-benefits-renewal.example&apikey=$PDA_KEY"

# Batch — up to 100 hostnames per request, one lookup each
curl -s -X POST "https://phishingdetectionapi.com/api/v1/batch" \
 -H "Content-Type: application/json" \
 -d '{
 "apikey": "YOUR_SERVER_SIDE_KEY",
 "domains": [
 "county-permit-pay.example",
 "municipal-court-records.example",
 "disaster-grant-apply.example"
 ]
 }'

# Response fields you can branch on:
# domain · is_phishing · category · dns_status
# last_checked · confidence · database_size

Parameter reference and further language examples live on the API documentation page.

Rollout

Six weeks, for a department of two, with a reversal point at every stage

Nothing below requires a project charter, a new vendor onboarding cycle, or a change that cannot be undone in an afternoon.

1

Inventory what you publish and what you receive

List every public hostname the agency owns, including the ones a department bought without telling you, and every mail domain that delivers into your tenant. This list is the input to everything that follows, and building it is usually the longest single task on the whole rollout.

2

Measure before you buy anything

Count the distinct URL hosts in a normal week of inbound mail after deduplication. That number, multiplied by fifty-two, is your annual mail-gateway consumption and the only figure you need in order to size a monthly plan on the pricing page.

3

Run in observe mode against real traffic

Wire the check into the gateway but take no action on the verdict — log it alongside what the existing controls decided. Two weeks of that data tells you the marginal catch rate and gives you something concrete to show a sceptical director before anything is enforced on live mail.

4

Enforce on mail, then load the resolver

Turn quarantine on for verified hits, then schedule the daily feed download into your recursive DNS. Do these a week apart, so that if a complaint arrives you know without investigation which of the two changes caused it.

5

Add the outward-facing checks

Screen links in citizen notification templates before send, add the referrer check to your portal login pages, and start the scheduled batch sweep across permutations of your own agency names so a clone surfaces in your tooling rather than in a complaint.

6

Write it into the register and set a review date

Record the control, its owner, the evidence it produces and the date of its next review. A control nobody reviews is a control that quietly stops working the next time a mail platform is migrated, and migrations happen considerably more often than reviews do.

Cost and candour

What it costs to run, and what it will not do for you

Both halves belong in the same section, because a control you have oversold is worse than one you never deployed.

The commercial model is deliberately simple, which is exactly what lets it survive a public sector purchasing process. Plans are monthly subscriptions via PayPal with no per-seat licence. Cancel any time, which means the engagement can be scoped to a single fiscal year without multi-year commitment — the specific characteristic that makes a tool adoptable by a department which cannot commit next year's budget.

A department of six hundred staff whose mail gateway resolves in the region of two thousand distinct hosts a day lands close to three-quarters of a million lookups a year, which is the Enterprise band. A city of forty thousand residents with ninety employees is usually comfortably inside Professional. The feed sits outside the ladder because it replaces per-query consumption rather than adding to it — for a resolver deployment covering an entire network, it is almost always the cheaper shape.

Now the limits, stated plainly enough to be quoted in a specification

This is a known-bad lookup. It answers whether a hostname has already been observed and verified as a live phishing site, and that sentence contains everything it does not do:

  • It does not evaluate hostnames it has never seen, which means a domain registered this morning and used against you this afternoon will be missed until it enters the pipeline.
  • It cannot inspect the content of a page, so a compromised legitimate site serving a hostile form on a trusted hostname returns clean.
  • It does not read the message, so a pure business email compromise — a plain-text instruction to change a bank account, with no link at all — sits entirely outside its scope.
  • It does nothing about telephone pretexting, malicious attachments, or an attacker who already holds valid credentials.

It will also occasionally be wrong

A shared hosting provider that has carried phishing content can be flagged in a way that inconveniences somebody legitimate on the same infrastructure, which is why any enforcement path needs a documented route for a member of the public or a supplier to report a bad block and have a person look at it. Agencies that treat this as a floor and build the rest of the stack on top of it — mail authentication, phishing-resistant multi-factor authentication, least privilege on the systems holding citizen data, an incident response runbook that has actually been rehearsed — get real value from it. Agencies that present it to an oversight body as comprehensive protection are arranging a much harder conversation for themselves later, and that conversation is entirely avoidable by saying the limits out loud now.

One last note on evidence, because it is the part public bodies undervalue

Every query produces a timestamped record of a hostname and a verdict. Over a year that becomes an unusually clean audit artefact: what was checked, when, what the answer was, and what the system did next. Auditors and oversight committees rarely ask whether a control is sophisticated. They ask whether it was operating on a given date and whether anyone can prove it, and a query log answers that question without anybody reconstructing anything from memory.

Questions from the team

What agency IT staff ask before this reaches a purchase order

These come up in roughly this order, usually in the same meeting.

Does any citizen data leave our network when we use this?

A per-query lookup sends one hostname and your API key, and nothing else.

  • No citizen identifier, no message content, and no IP address belonging to the person whose action prompted the check — unless your own integration adds one, which it should not.
  • If sending hostnames at all is unacceptable under your policy, use the daily feed instead: you download the complete file once a day and every comparison happens on your own equipment, so no query about anything ever leaves the boundary.
We run networks with no outbound internet access. Does this work there?

Not as a live API, no — a query endpoint needs a route to reach. The feed subscription exists for exactly this case: the complete database is published as CSV, which you move across your boundary on whatever transfer path you already have approved.

  • Once it is inside, it is an ordinary file that a resolver, firewall or log-analysis tool can consume.
  • The daily added and removed changelog travels with it, so the isolated copy stays reconcilable with the published build.
How quickly does a newly registered impersonation domain show up?

It shows up once it has been observed and DNS-verified, and appears in the next daily build after that. There is no honest way to promise a fixed interval between a domain being registered and it being known, and a supplier offering you one is describing marketing rather than mechanism.

  • Treat this as the control that removes the large, mechanical, already-catalogued volume.
  • Keep multi-factor authentication and out-of-band payment verification for the window in which a domain is live but not yet known to anyone.
Can we check domains that impersonate us, not just ones that target us?

Yes, and it is one of the higher-value uses for a public body. Generate the plausible permutations of your own hostnames and push them through the batch endpoint on a schedule — a hundred per request, one lookup each.

  • A hit gives you a dated, machine-generated record you can attach to a registrar takedown request.
  • It also gives your communications team something concrete to build a public notice around, rather than learning about the clone from a resident's complaint or a local reporter's phone call.
What happens if it blocks something legitimate?

It will happen occasionally, most often with shared hosting infrastructure that has carried phishing content alongside legitimate sites. Build the exception path before you enforce anything, not after the first complaint arrives.

  • Keep a local allow list your resolver applies after the feed.
  • Give the service desk a documented route to add to it, and record who approved each entry.
  • Because the feed publishes daily additions and removals, you can also see whether an entry has since dropped out of the build on its own.
Do the credits expire if our procurement stalls for a quarter?

lookups reset monthly from purchase, so a package bought at the end of a fiscal year is still usable well into the next one.

  • There is no monthly minimum to forfeit and no renewal that triggers on its own.
  • The spend is a one-time encumbrance rather than an ongoing commitment that has to be defended in every subsequent budget cycle, which is a large part of why the model survives public sector purchasing.
Our state has thirty agencies. Do we each buy separately?

Not necessarily, and the central shape is usually the better one.

  • For per-query use, each integration consumes credits from whichever key it uses, so a central security office can hold one balance and expose an internal wrapper to constituent agencies rather than administering thirty separate purchases.
  • For the feed, one subscription produces one file a central team can redistribute internally to each agency's resolver infrastructure — normally the more sensible shape for a state or county with many sub-organisations and uneven technical capacity.

Put a verified verdict between the public and the clone

Size a monthly plan against your own measured mail volume, or take the whole database as a daily file and run every comparison inside your own boundary.