Hacker draait Doom volledig in DNS-records

Was het weer DNS? Ja, natuurlijk was het weer DNS, het is immers altijd DNS. Dit keer gebruikte een creatieve hacker DNS om Doom te spelen. Adam Rice wist de game te porten naar een kleine 2000 DNS-records en zo direct te spelen, zonder dat er schijfruimte nodig is. Dat is ook wel handig in deze tijden van schaarste.

Programmeur Adam Rice beschrijft op zijn blog hoe hij Doom wist te porten naar het Domain Name System, voor zover bekend de eerste keer dat Doom daar draait. Rice begon zijn experiment met het idee dat hij zijn filmverzameling weleens in DNS-records zou kunnen opslaan, specifieker: in de TXT-records van DNS. TXT is bedoeld om kleine stukjes tekst te verwerken, in de praktijk om bijvoorbeeld SPF of DKIM om e-mailadressen te verifiëren. TXT-records worden ook vaak gebruikt om grapjes te maken, omdat er zo'n 2000 tekens in passen – of Doom dus.

Rice wilde aanvankelijk kijken of hij films met base64 kon coderen naar een string, die string opsplitsen en in een TXT-record zetten, en vervolgens de juiste metadata gebruiken om de strings weer op de juiste manier bij elkaar te zetten. Dat lukte aanvankelijk met een foto van een eend, zegt hij, maar dat vond hij saai. Een film van een gigabyte was dan weer iets te ambitieus: dat zou 670.000 records kosten en dat is dan weer overdreven voor een hobbyproject.

Zo kwam hij bij Doom uit. Hij vond een C#-port van de originele Doom-engine, die hij zo aanpaste dat die vanuit geheugen kon werken. Na wat compressie wist hij het bestand in 1966 TXT-records te stoppen, genoeg om ze in een enkele DNS-zone te proppen. Zelf met Doom-over-DNS aan de slag gaan is eenvoudig. Doomslayers moeten PowerShell 7 installeren en kunnen alle informatie verder vinden in Rice' GitHub-repo.

Doom over DNS

Door Tijs Hofmans

Nieuwscoördinator

23-03-2026 • 11:16

43

Submitter: InjecTioN

Reacties (43)

Sorteer op:

Weergave:

Titel klopt eigenlijk niet echt denk ik?

Het draait niet in DNS records, de code is er in opgeslagen? Nogal een wezenlijk verschil?
Klopt, Doom draait ook niet in mijn harddisk maar vanaf mijn HDD.

Maar ach, het bekt lekker en het is leuk.
Draait op je CPU..... staat opgeslagen op je HDD. Draait nu nog steeds op je CPU maar staat nu opgeslagen in DNS records.
Eens, deze aangepaste Doom-engine laadt game data uit DNS-records. Al lijkt hier de DNS via txt-bestanden onschuldig, het feit blijft dat juist in de security het een verrassend krachtig (én veel misbruikt) kanaal betreft. Wie immers een game via of uit DNS kan laden, zal óók andere data stiekem via DNS kunnen versturen.

Het gaat dus niet alleen om “iets versturen via DNS”, maar ook hoe eenvoudig het lijkt voor netwerken om dit te negeren, en hoe dit soort experimenten dus laten zien welke potentie (én risico's) DNS kan hebben buiten zijn oorspronkelijke functie.

[Reactie gewijzigd door o.koster op 23 maart 2026 12:31]

We draaien al een tijdje een POC van een bekend en duur product voor DNS en vorige week bleek dat de client ervan data exfiltration via DNS-requests van het red team niet tegen hield. "Je moet DNS-traffic op je firewall ook tegenhouden", ja daarom wil je een managed én unmanaged oplossing, want dan houdt je product het niet tegen. Een andere POC (voorlopig unmanaged) heeft het wel juist gedetecteerd en de requests gedropt.
☑️Daarom wil/moet je in een dergelijk scenario DNS-logging en anomaliedetectie inzetten. Kortom: beperk clients tot interne DNS-servers, log alle TXT-queries, en gebruik SIEM of scripts om ongebruikelijke patronen of grote Base64-payloads te detecteren. Zo kun je dit soort experimenteen vroegtijdig signaleren én mitigeren❗

☑️Bovendien kun je ook actieve mitigatie inzetten: gebruik dan een DNS-proxy of inline DNS-filtering om verdacht verkeer in real-time te blokkeren, bijvoorbeeld TXT-records met grote Base64-payloads of queries naar niet-goedgekeurde externe domeinen. Combineer dit voorts met threat intelligence feeds om bekende C2- of malafide domeinen automatisch te droppen, en overweeg rate-limiting per client voor ongebruikelijke queryvolumes. Dan voeg je preventie bovenop detectie en verklein je het risico dat experimenten zoals Doom-over-DNS of echte data-exfiltratie succesvol zijn❗

🗣️If you can’t detect it, you can’t defend it and prevention alone is never enough❗
☑️Gebruik geen AI-tools om je tweakers-posts interessant te maken❗

De inzet van een red team op een POC dient juist om bepaalde kwetsbaarheden bloot te leggen in dit geval zonder dat de rest van de infrastructuur binnen de scope valt. Daarom dat ik bewust geen namen of technologieën noem, enkel maar principes.

In een semi-publieke en deels ongecontroleerde opzet kom je situaties tegen waarbij je net wil dat je DNS-servers onvertrouwde malafide requests droppen/reporten zodanig dat je clients kan gaan isoleren of blokkeren en eventueel lokaal veiligheidsmaatregelen kan laten nemen afhankelijk van de dynamische risico-inschaling.

Uiteraard zijn er nog tal van andere mogelijkheden om dit specifieke voorbeeld te vermijden, maar je wil op elk niveau security-oplossingen hebben die hun ding doen en als er eentje naar een andere schakel verwijst, terwijl je verwacht dat die zijn ding doet, dan kan dat gevolgen hebben in de besluitvorming.
Zeker geen AI, just purple-teaming. Anyways, in een POC moet die tool dit zelf kunnen, anders is het gewoon een gap.

Toch opmerkelijk dat je geen namen of technologieën wil noemen, terwijl de omschrijving zelf toch al veel weggeeft ;/

Ontopic: was het bij jullie helemaal niet gedetecteerd, of alleen niet actief geblokkeerd?

[Reactie gewijzigd door o.koster op 24 maart 2026 00:15]

in een POC moet die tool dit zelf kunnen, anders is het gewoon een gap.
het is een feature die je inderdaad graag zou willen hebben of bij gebrek er aan dat gap duidelijk elders kunnen opvangen
Toch opmerkelijk dat je geen namen of technologieën wil noemen, terwijl de omschrijving zelf toch al veel weggeeft ;/
ik kan me nog heel veel andere sectoren en situaties inbeelden waarin dit van toepassing is (meer of minder belangrijk ga ik in het midden laten)
Ontopic: was het bij jullie helemaal niet gedetecteerd, of alleen niet actief geblokkeerd?
laat ons zeggen dat het resultaat niet was wat we wilden zien
Sorry hoor, maar dat klinkt meer als een gemiste verwachting dan perse een fundamenteel probleem. Zonder heldere scope, expected features en hoe de rest van jullie keten ermee omgaat is het lastig te zeggen of dit wel een werkelijke gap is/was of gewoon wat ik denk een ontwerpkeuze. Je vergelijkt immers (in je eerste reactie) wel twee POCs, maar zonder dat je lijkt te weten of ze op hetzelfde niveau opereren (detectie vs blocking, inline vs passief, etc.). Dan zegt “die andere ik deed het wel” op zichzelf nog niet zoveel.

Vannuit een purple-teaming perspectief kijk ik naar zowel offensieve als defensieve lagen: het gaat er niet om dat één tool alles moet kunnen, maar dat je gaps zichtbaar maakt en ergens in de keten afdekt. Snap dat dit niet de plek is om alle details van jullie case te bespreken, maar wilde dit perspectief tot slot nog wel even delen.
Als een product zowel managed (clients) àls unmanaged (infrastructuur) aanbiedt en je raakt er nóg door, dan kan je inderdaad spreken van een verkeerde inschatting/verwachtingspatroon of op z'n minst van een onvolledige implementatie ondanks een hoop uren consultancy en setup. In het geval van de andere POC was er enkel nog maar infrastructuur opgezet en die hield het al wel tegen. De rest is inderdaad niet voor publicatie.
vandaar ook dat je normaal gesproken je clients in een netwerk geen toegang verleent tot externe dns servers, alleen degene die je zelf beheert.
☑️Eens, dat is je basis🆔Door DNS te centraliseren pak je al veel risico weg. Juist daar kun je vervolgens logging en detectie op doen (bijv. afwijkende TXT-queries of encoded payloads), zodat DNS ook een controlepunt wordt i.p.v. alleen een afhankelijkheid.

🗣️ Visibility before security🕷️
Gelukkig zijn er nog steeds dit soort hobbyprojectjes die niet nuttig zijn, maar wel leuk :D.

Tussen al het AI-nieuws en de deprimerende staat van hardware lees ik graag af en toe dit soort nieuws. Dat is waar de tech-geek in me begonnen is - wat doen hobbyisten nu weer voor leuks?

Overigens: Daar ging Tweakers ook over in 2004 voor mijn gevoel, toen ik hier een account maakte als tiener. Dat en het laatste hardwarenieuws. Dat mis ik ook wel het grootste deel van de tijd...
AuteurTijsZonderH Nieuwscoördinator @coptician23 maart 2026 11:29
Hier ben ik het hardgrondig mee eens, ik denk dat het heel belangrijk is dat we onze ogen en oren openhouden voor ook vooral leuk technieuws, dingen die classic Tweakers schreeuwen. Als je die ziet, tip ze dus vooral!
AuteurTijsZonderH Nieuwscoördinator @Jan VP23 maart 2026 11:37
Ik heb maar een halve dag vandaag dus ben vanmiddag vrij, grammatica is nu niet meer mijn probleem!
Lekker Doomslayen vanmiddag!
Spelling bedoel je :)
En juist uit dit soort hobby projecten komen onverwachte ontwikkelingen voort. Het is alleen wachten tot iemand er een goede functionaliteit voor vindt.
@coptician Ik vind het goed dat je dit nog maar eens verwoordt. Tweakers gáát hier ook over. Nerds die hier gezamenlijk om moeten gniffelen, zonder dat ze elkaar fysiek hoeven te ontmoeten. Het is eigenlijk zelfs overbodig dat hiervoor de rubriek ".geek" wordt gebruikt.

Leuk artikel en SUPERRELEVANT! Dank @TijsZonderH
Ik moet zeggen dat ik dit soort creatieve technische onzin best interessant vind. Het prikkelt het vermogen om anders naar technologie te kijken. Dat het doel an sich niet nuttig is, wil niet zeggen dat deze manier van hobby-nerden volledig nutteloos is. ;)
Kijk dan ook naar zijn andere repo (https://github.com/resumex/Palimpsest). Een quote uit de readme:
"Is this practical? Depends on who you ask.
Is it ridiculous? Absolutely.
Is it beautiful? Also yes."
Duh. DNS staat natuurlijk ook voor Doom Name System :+
Of Doom Network Storage :)
Cool... maar is DNS hier dan niet eigenlijk alleen het opslagsysteem? Het draait dan toch niet 'in DNS'? Je zegt als je Doom the Dark Ages op je PC draait toch ook niet dat die in je SSD draait...
Dat klopt, omdat het normaal is dat ie op je SSD staat, dat is niets nieuws. Maar als je de code van het spel opslaat in de TXT-records, zonder dat er code vanaf je disk komt, dan is dat wel noemenswaardig imho.

De 'Can it run Doom' meme is inmiddels zo oud en ingebakken dat er ipv hardware nu ook naar software wordt gekeken of het doom kan draaien, bijvoorbeeld Doom in Minecraft . Ik vind het persoonlijk leuk om te lezen.

Daarbij is dit mijn eerste post op dit platform - ik lurk al maanden zeer actief mee, ook in de comments. Ik vind de nieuwe schrijfstijl top, Tweakers-team!

[Reactie gewijzigd door Ramon_88 op 23 maart 2026 11:50]

Oh ja zeker is het noemenswaardig :)

Mijn enige aanmerking was op de bewoording, dat het in DNS zou draaien. Ik kon me daar al niks bij voorstellen aangezien 'DNS' volgens mij geen processing doet. Als je er 'draait Doom volledig vanuit DNS record' van maakt (naast de 'vanuit' ipv 'in' ook enkelvoud want het is er als ik het goed begrijp ook maar één wat ook heel knap is).
Doom in Grafana is ook leuk gevonden.
Als je in staat bent om Doom te spelen vanuit de MFT of FAT van je SSD, dan ga je daarmee zeker een artikel hier halen dat je Doom speelt vanuit SSD MFT/FAT. :)
Maar jij past de bewoording nu ook al aan, je zegt niet "dat je Doom speelt IN SSD MFT/FAT". Dat was mijn hele punt :)
„A user you’ve blocked has previously contributed to this repository.

claude

Hé bah.
Waarom? Dit is slechts een gimmick, en hij is in zijn blog heel duidelijk over. Lijkt me nou net een van die gevallen waar dit prima is. Het is niet alsof dit een serieus te nemen applicatie is.
Ik vind wel knap dat ze altijd iets weten te vinden waar DOOM op gedraaid kan worden... Gewoon puur omdat het kan. Het zou me niet verbazen als mensen het op een Dyson gaan draaien... ipv de data over de zooi die je opruimt ga je DOOM spelen tijdens het stofzuigen :+
Nothing sucks like Doom on an Electrolux, om een oude slagzin te parafraseren.
zonder dat er schijfruimte nodig is
Ligt er ook maar net aan welke DNS-server je gebruikt, want de meeste DNS servers die je zelf host hebben de bind zones gewoon op disk staan :o
Ben dan ook wel benieuwd wat het limiet is van bijv. Cloudflare of een willekeurige registrar
Het DNS draait hier toch helemaal geen Doom, het wordt alleen ge-/misbruikt om Doom in op te slaan.
Dit is word al gebruikt in malware voor C2 en payload distributie: https://efficientip.com/b...-dns-threat-intelligence/
Prachtig.

En dan denk ik meteen aan, wat zou er nou gebeuren als films en muziek via deze dns storage verspreid word. Is dat al eens gebeurd? Lijkt me weer een bijzondere situatie die zich dan weer af kan spelen.
Wordt in artikel vermeld, film zou al snel 670.000 records bevatten (dan ben je goedkoper met wat schijfruimte af).

Op dit item kan niet meer gereageerd worden.