Why can whoever holds a malware sample pre-register its generated C2 domains?
answer
- both sides must derive it with no message
- volume is not entropy
- the seed is usually just the date
- cost asymmetry, not secrecy
- the dead drop has nothing to enumerate
basics
~20 sBecause the generator is deterministic. Algorithm plus seed — usually the current date and a constant compiled in — produces the same names for the implant and for anyone running the sample forward, so future names are computable, not secret.
solid answer
~50 sA domain generation algorithm is not randomness, it is a shared clock. The implant must derive the same name the operator derived, with no message between them, so the input can only be something both sides already know — typically the date plus a hard-coded constant. Extract the routine and you can run it forward for any future date and print the names the whole population will ask for. The operator's advantage is not secrecy but cost: they register one name per period, while taking the crop means buying hundreds or thousands across many registries, every period. That pressure produces two upgrades — seeding from a value published only on the day itself, so nothing can be computed ahead, and stacking a dead drop on top, where the live address is read out of an ordinary public page and there is nothing in the file to enumerate.
go deeper
Know that a generated rendezvous name comes from an algorithm and a seed both sides can work out, not from a random number, and that the sample contains the algorithm.
Explain the determinism end to end: what the seed is, why it must be derivable offline by both sides, and why thousands of names a day raises cost rather than unpredictability.
Add the parts that decide outcomes — the responder check that stops a stranger tasking the population, the day-window generated for clock skew, and why a swept crop is a rental rather than a cure.
Frame it as an arms race with a budget on both sides: the operator buys durability with volume and registry spread, the counter-move costs money every period, and the dead drop is what the pressure eventually produces.
## The wrong answer this question exists to correct The intuitive reading of "the malware generates twenty thousand new names a day" is *unpredictable*, and it is wrong. Volume is not entropy. A generated name is reachable by the implant only if the operator can compute the identical string in advance and register it, and the two sides never talk before the first contact — that is the whole point of a fallback. So the input to the generator must be something both parties can derive independently and offline. In practice that is the current date, sometimes combined with a constant compiled into the binary, occasionally hashed a few thousand times to slow enumeration down. Nothing in that is secret from someone holding the file. ## What determinism actually gives away Once the routine is understood, three things follow immediately. 1. **Any future date can be evaluated now.** The generator has no state that accumulates on the victim host; feed it next month's date and it prints next month's crop. 2. **Every infected host produces the same crop.** The names are a property of the family and the date, not of the machine. That is what makes them a rendezvous at all — a per-host name would give the operator nothing to register. 3. **The generator is a fingerprint.** Its output pattern — the length, the character distribution, the set of top-level domains it uses — belongs to that family, so the names themselves identify the code that produced them. The design is therefore an *economic* defence, not a cryptographic one. The operator's real advantage is asymmetry of cost: they need one name to answer this period, while denying the crop means taking all of it, every period, forever. Crews inflate that asymmetry deliberately — thousands of names per day, spread over many top-level domains including country registries with slow processes, awkward paperwork and per-name fees that make blanket registration unaffordable. ## Owning the name is not owning the bots A second correction worth having ready: registering a generated name gets you the connections, not the population. Competent implants authenticate the responder — an embedded public key, a challenge the operator must sign, a fixed value in the reply — precisely so that a stranger holding the name cannot task the installed base. The check runs in the direction that matters to the operator: the bot verifies the server, so whoever squats the name receives check-ins and can answer nothing that will be obeyed. Rivals were the original threat model here, not defenders; a competitor who could take over a generated name could steal an entire installed base for the price of one registration. And even a perfectly executed sweep of the crop is a rental, not a cure. It denies one path for the period it covers. The code is still resident, the trigger still fires, and the next pre-committed layer is still waiting. ## The two upgrades this pressure produces **Seed from data published on the day.** If the input is a value that genuinely does not exist until the period begins — something published publicly on that date and identical for everyone who looks — then the crop cannot be computed ahead of time, only alongside. It costs the operator robustness (the source has to be reachable and stable, and any mismatch orphans hosts) which is why it is a minority design, but it removes pre-registration entirely. **Add a dead drop.** Here the address is not derived at all: the implant fetches an ordinary public page — a profile field, a paste, a repository description, a comment thread — and reads the current address out of it, usually encoded or signed. Nothing in the sample enumerates the future, because the future is written later by the operator with an edit. Removing the account or page removes one signpost; the reader logic and the list of places to look are still compiled in, and the operator simply publishes at the next one. This is the direct answer to "generated names can be pre-registered", and a candidate who can name it has understood the arms race rather than one move of it. ## Clock skew, windows and the small print One mechanical detail that shows real familiarity: because hosts disagree about the date — wrong clocks, time zones, machines waking after weeks asleep — implants usually generate a *window*, trying the crops for yesterday, today and tomorrow, and the operator registers with the same slack. That widens the set to be taken, and it means a name can be contacted well outside the day it nominally belongs to. Also, implants rarely try the whole crop. They walk a subset in order and stop at the first that resolves and authenticates, which is why the operator only ever needs one live registration per period, and why enormous daily crops cost the operator nothing at all. ## What a good answer sounds like Say it in one line — "deterministic given a seed both sides can compute, so the sample is the schedule" — then give the economics, then give the two upgrades. That order shows you know why the design is chosen rather than just what it is called.
- If the names can be computed in advance, why use a generator at all?Because it converts a single point of failure into a recurring bill. One fixed name is removed once and it is over; a generated crop has to be taken every period, across many registries, forever, and the operator only needs one live name per period to stay reachable. It also removes any address worth extracting from the binary.
- Does registering the crop let you control the bots?Usually not. Implants commonly verify the responder against an embedded key or expected value before accepting instructions, so a stranger holding the name receives connections and can issue nothing that will be obeyed. That check exists mainly to stop rival crews from stealing an installed base, and it applies to anyone else who takes the name.
- Why do some families seed the generator from a value published only on the day it is used?To kill pre-computation. If the input does not exist until the period starts, nobody can print the crop in advance, only derive it at the same moment the implant does. The cost is fragility — the source must be reachable and consistent for every host, or the population fragments — which is why it stays a minority design.
- Why do implants often generate several days' worth of names at once?Clock skew. Hosts have wrong times, sit in different zones, or wake after being asleep for weeks, so the implant tries yesterday's, today's and tomorrow's crops and the operator registers with the same slack. A consequence is that a name can be reached well outside the single day it was generated for.
saying these in an interview costs you the question
- Says generated domains are random and cannot be predicted
- Thinks the algorithm is secret because the binary is packed
- Assumes taking every name in the crop ends the botnet
- Believes owning the name means being able to task the bots
- Confuses thousands of names per day with cryptographic strength