Voorwoord

Er is een merkwaardig verschil tussen hoe mensen denken over beveiliging en hoe beveiliging werkelijk functioneert. Vraag een willekeurige directeur hoe het met de IT-beveiliging van zijn bedrijf staat, en hij zal je vol vertrouwen vertellen dat alles onder controle is. Er is een firewall. Er is antivirussoftware. Er is een wachtwoordbeleid – dat, als je even doorvraagt, erop neerkomt dat iedereen om de drie maanden een uitroepteken achter zijn bestaande wachtwoord plakt. Alles is geregeld.

Vraag vervolgens een penetratietester hoe het staat met de beveiliging van datzelfde bedrijf, en je krijgt een heel ander verhaal. Een verhaal over Domain Admins die bereikbaar zijn via een keten van drie klikken. Over service accounts met wachtwoorden die al zes jaar niet zijn gewijzigd. Over netwerksegmentatie die in de architectuurtekening prachtig eruitziet, maar in de praktijk net zo effectief is als een hordeur op een onderzeeboot.

Dit boek gaat over dat tweede verhaal.

Het is een verhaal dat zich keer op keer herhaalt, in elke organisatie, in elke sector, in elk land. De details verschillen – hier is het een vergeten admin-account, daar een misconfigureerde Group Policy, elders een ADCS-template die certificaten uitgeeft aan wie erom vraagt – maar het patroon is altijd hetzelfde. De verdediging is opgebouwd rond aannames die niet kloppen, en de aanvaller hoeft alleen maar die aannames te vinden.

Waarom dit boek

“Incompetent Bastards: Het Netwerk” is het tweede deel in een serie over penetratietesten. Waar het eerste boek – “De Webapplicatie” – zich richtte op de kwetsbaarheden in webapplicaties, gaat dit boek over het hart van de onderneming: het interne netwerk.

En dat hart, laten we eerlijk zijn, is bijna altijd een Active Directory-omgeving.

Active Directory is een van die technologieen die bijna elk bedrijf ter wereld gebruikt en bijna niemand werkelijk begrijpt. Het is het besturingssysteem van het bedrijfsnetwerk, het telefoonboek van de organisatie, en de sleutelbos van elke medewerker – allemaal tegelijk. Het werd ontworpen in een tijdperk waarin “beveiliging” betekende dat je de serverkast op slot deed, en het sleept die erfenis met zich mee als een middeleeuwse stad die nog steeds haar rioolsysteem uit de veertiende eeuw gebruikt.

Microsoft introduceerde Active Directory in 1999, samen met Windows 2000 Server. Het was een ambitieuze poging om het chaotische landschap van Windows NT-domeinen te vervangen door iets gestructureerds – iets met een hierarchie, met beleid, met vertrouwensrelaties die je kon tekenen op een whiteboard. En het werkte. Het werkte zo goed dat vijfentwintig jaar later nog steeds meer dan negentig procent van de Fortune 500-bedrijven het gebruikt. Het probleem is alleen dat de dreigingsmodellen van 1999 er fundamenteel anders uitzagen dan die van nu. In 1999 was de aanvaller iemand die fysiek toegang had tot het gebouw. In 2026 is de aanvaller iemand die vanuit zijn slaapkamer in een ander continent een phishing-mail stuurt en drie uur later Domain Admin is.

Dit boek leert je hoe je dat netwerk systematisch test. Niet om schade aan te richten, maar om de gaten te vinden voordat iemand anders dat doet. Want geloof me: iemand anders is altijd aan het zoeken.

Het boek volgt het pad dat een echte aanvaller zou nemen: van de eerste verkenning van het netwerk, via de eerste exploitatie, door het web van vertrouwensrelaties en misconfiguraties dat elk Active Directory-netwerk doorkruist, tot aan het moment dat je de kroonjuwelen in handen hebt – de ntds.dit, de Golden Ticket, de volledige controle. Elke stap wordt uitgelegd, gedemonstreerd, en voorzien van de verdedigingsmaatregelen die het hadden kunnen voorkomen.

Want dat is uiteindelijk het doel. Niet de aanval. De verdediging die eruit voortkomt.

De ethische grens

Laten we een ding glashelder maken, want dit is geen voetnoot en geen bijzaak.

Alles in dit boek is uitsluitend bedoeld voor gebruik in geautoriseerde penetratietesten. Dat wil zeggen: je hebt schriftelijke toestemming van de eigenaar van het netwerk. Je hebt een scope-document dat expliciet beschrijft welke systemen, netwerken en methoden binnen bereik vallen. Je hebt een noodprocedure voor als er iets misgaat. Je hebt telefoonnummers van mensen die op zondag om drie uur ’s nachts opnemen als je per ongeluk een productiedatabase hebt platgelegd.

Zonder die toestemming ben je geen penetratietester. Dan ben je een crimineel. En het verschil is niet het gereedschap dat je gebruikt – het is dat ene document met handtekeningen.

Dit is geen juridische formaliteit. In Nederland valt ongeautoriseerde toegang tot computersystemen onder artikel 138ab van het Wetboek van Strafrecht, met een maximale gevangenisstraf van vier jaar. In Belgie is dat artikel 550bis. De meeste andere landen hebben vergelijkbare wetgeving. “Ik wilde alleen kijken of het kwetsbaar was” is geen verdediging. “Ik deed het voor de wetenschap” ook niet.

De technieken in dit boek zijn krachtig. Een Golden Ticket geeft je onbeperkte toegang tot een heel Active Directory-domein. DCSync laat je alle wachtwoord-hashes van een organisatie downloaden. Kerberoasting kraakt service-account-wachtwoorden offline, zonder dat een IDS ook maar een wimper beweegt. Een ADCS ESC1-aanval geeft je een certificaat waarmee je je kunt voordoen als elke gebruiker in het domein. Dit zijn de technieken die echte aanvallers gebruiken, en het is precies daarom dat verdedigers ze moeten begrijpen.

Een goede penetratietest begint met een gesprek, niet met een exploit. Je spreekt de scope door, je definieert de regels van engagement, je stelt vast wat er gebeurt als je iets breekt, en je zorgt ervoor dat er aan beide kanten mensen zijn die weten wat er gaat gebeuren. Pas daarna open je een terminal.

Gebruik deze technieken verantwoord. Of gebruik ze niet.

Voor wie is dit boek

Dit boek is geschreven voor mensen die netwerken willen leren testen. Dat kan een junior penetratietester zijn die van webapplicaties naar netwerkpentesten wil doorgroeien. Het kan een systeembeheerder zijn die wil begrijpen hoe aanvallers denken, zodat hij zijn eigen netwerk beter kan verdedigen. Het kan een security consultant zijn die zijn arsenaal wil uitbreiden.

Wat we verwachten: een basiskennis van netwerken (je weet wat een IP-adres is, je weet wat TCP doet, je hebt weleens een terminal geopend). Enige ervaring met Linux. Een bereidheid om te leren door te doen, want dit is geen boek om passief door te lezen – het is een boek om naast je toetsenbord te leggen.

Wat we niet verwachten: dat je een expert bent. De nieuwsgierige stem in dit boek stelt de vragen die een beginner zou stellen. De cynische stem voegt de context toe die een ervaren penetratietester herkent. Waar je ook zit op dat spectrum, er is iets voor je.

Een kanttekening: dit boek is geen certificeringsgids. Het bereidt je niet voor op het OSCP, het CRTP, of een andere afkorting uit het alfabet-soep-universum van beveiligingscertificeringen. Wat het wel doet, is je de kennis en de context geven die je nodig hebt om die certificeringen te begrijpen, niet alleen te halen. Er is een verschil, en het verschil is belangrijk.

Twee perspectieven

Dit boek is geschreven vanuit twee perspectieven die elkaar afwisselen, soms binnen dezelfde alinea.

De eerste stem is die van de nieuwsgierige reiziger – de man die voor het eerst een Active Directory-forest betreedt en zich afvraagt waarom het zo heet, wie het heeft bedacht, en waarom trusts in twee richtingen werken terwijl eenrichtingsverkeer zoveel veiliger zou zijn. Deze stem verkent, legt uit, trekt vergelijkingen met de gewone wereld, en probeert van een onderwerp dat inherent droog is iets te maken dat je zou willen lezen op een regenachtige zondagmiddag. Deze stem stelt vragen als: “Wie heeft eigenlijk besloten dat NTLM-hashes onderling uitwisselbaar moesten zijn?”

De tweede stem is die van de cynicus – de stem die niet kan geloven dat we in het jaar 2026 nog steeds wachtwoorden als Welcome01! tegenkomen op domain admin accounts. Die stem wijst op de absurditeit van een beveiligingsindustrie die miljoenen uitgeeft aan next-generation AI-powered threat detection platforms, terwijl de Domain Admins groep achttien leden telt waarvan er veertien er nooit in hadden mogen zitten. Die stem is niet boos. Die stem is teleurgesteld. En soms – heel soms – geamuseerd.

Samen vormen ze, hopen we, een boek dat zowel informatief als leesbaar is. De nieuwsgierige stem verkent het waarom. De cynische stem beschrijft het hoe het echt is. En samen komen ze uit bij het wat je eraan kunt doen.

Leesconventies

Door het hele boek heen gebruiken we een aantal vaste conventies. Het is handig om ze nu te kennen, zodat je later niet terughoeft te bladeren.

Code en commando’s staan in code blocks met syntax highlighting waar relevant:

# Kerberoast -- service account wachtwoorden kraken
.\Rubeus.exe kerberoast /stats
.\Rubeus.exe kerberoast /user:svcadmin /simple

Commando’s die op de aanvalsmachine (Linux/Kali) worden uitgevoerd beginnen doorgaans met $ of staan in een bash-codeblock. Commando’s die op een Windows-doelsysteem worden uitgevoerd staan in een powershell- of cmd-codeblock. Het onderscheid is belangrijk – een commando op de verkeerde machine uitvoeren levert in het beste geval een foutmelding op en in het slechtste geval een onverklaarbare situatie.

IB Tips zijn praktische tips die verwijzen naar het Incompetent Bastard-dashboard en staan in blockquotes:

IB Tip: Gebruik de Command Library om snel Kerberoast-commando’s te laden. Zoek op kerb_kerberoast in het Commands-paneel. Het commando bevat meerdere methoden inclusief de RC4 opsec-variant die encryption downgrade-detectie vermijdt.

Waarschuwingen voor technieken met een hoog risico op detectie of verstoring staan eveneens in blockquotes, maar met een ander prefix:

Let op: DCSync genereert Directory Replication Service-verkeer dat door geavanceerde SIEM-regels kan worden gedetecteerd. Gebruik deze techniek alleen als de scope het toelaat en het risico op detectie acceptabel is.

Referentietabellen vatten aan het einde van elk hoofdstuk de behandelde technieken samen, inclusief MITRE ATT&CK-mappings en relevante IB-commando’s. Deze tabellen zijn bedoeld als snel naslagwerk – ze bevatten de essentie, niet de uitleg.

Placeholder-waarden in commando’s worden aangegeven met hoofdletters of vierkante haken: TARGET_IP, DOMAIN\user, [host]. In IB worden placeholders als [host] automatisch vervangen door het geconfigureerde IP-adres.

Technische termen worden in het Engels gehouden wanneer vertaling de betekenis vertroebelt. We schrijven “Domain Controller” en niet “domeincontroller”, “trust” en niet “vertrouwensrelatie”, “hash” en niet “samenvatting”. De Nederlandse taal is een prachtig instrument, maar sommige dingen klinken er gewoon belachelijk in. Een “vertrouwensrelatie tussen bossen” klinkt als een sprookje, niet als een Active Directory-concept.

Output en resultaten van commando’s worden weergegeven in genummerde of gemarkeerde blokken wanneer we willen laten zien wat je kunt verwachten:

[*] Enumerating Target Domain...
[*] Found 3 Kerberoastable users
[*] SPN: MSSQLSvc/sql01.lab.local:1433 | User: svc_sql
[*] SPN: HTTP/web01.lab.local | User: svc_iis
[*] SPN: CIFS/file01.lab.local | User: svc_backup

Verdedigingsmaatregelen worden aan het einde van relevante secties beschreven. We vertellen niet alleen hoe je aanvalt – we vertellen ook hoe je verdedigt. Omdat het hele punt van dit boek is om netwerken veiliger te maken, niet om ze te breken.

MITRE ATT&CK-referenties worden per techniek vermeld met hun technique ID (bijvoorbeeld T1558.003). In de referentietabellen aan het einde van elk hoofdstuk vind je een volledige mapping van alle behandelde technieken naar het ATT&CK-framework.

Nederlandse en Engelse termen: Waar een term voor het eerst wordt geintroduceerd, geven we zowel de Engelse term als een korte Nederlandse uitleg. Daarna gebruiken we consequent de Engelse term. Dit sluit aan bij hoe penetratiesters in de praktijk communiceren – in een mix van Nederlands en Engels die buitenstaanders doet fronsen, maar die in het vak volkomen normaal is.

Het zusterboek

“Incompetent Bastards: De Webapplicatie” behandelt de wereld van webapplicatiebeveiliging: SQL injection, Cross-Site Scripting, Server-Side Request Forgery, en alles wat daartussen zit. Dat boek richt zich op de applicatielaag – de plekken waar een browser praat met een server en waar invoer wordt vertrouwd die nooit vertrouwd had mogen worden.

Dit boek begint waar het zusterboek ophoudt. Soms kom je via een webapplicatie het netwerk binnen – een SQL injection die uitmondt in xp_cmdshell, een SSRF die cloud metadata lekt, een upload-functie die een webshell accepteert. Maar zodra je die eerste voet binnen de deur hebt, betreed je een compleet ander landschap. Een landschap van Kerberos-tickets, NTLM-hashes, Group Policy Objects, en service accounts die al sinds de Windows Server 2008-migratie ongewijzigd zijn.

Waar nodig verwijzen we naar “De Webapplicatie” voor web-specifieke technieken. De Command Library in IB weerspiegelt deze tweedeling: commando’s met het web_-prefix behandelen webapplicatietechnieken uit het eerste boek, terwijl commando’s met prefixes als ad_, kerb_, lateral_, en persist_ de netwerktechnieken uit dit boek bestrijken.

De twee boeken zijn complementair, maar onafhankelijk leesbaar.

Het gereedschap

Door het hele boek gebruiken we Incompetent Bastard (IB) – een Flask-gebaseerd security assessment dashboard dat speciaal is gebouwd voor penetratietesten. IB combineert een Command Library van 194 commando’s, vijf interactieve web labs, acht payload generators, een Task Runner voor geautomatiseerde taken, een Screen Terminal, en een compleet Findings Management-systeem met CVSS 4.0-scoring en rapportgeneratie.

IB is geen vervanging voor je gereedschapskist – het is de werkbank waarop je je gereedschap legt. Het geeft je snel toegang tot de commando’s die je nodig hebt, houdt je bevindingen bij terwijl je werkt, en genereert aan het einde een rapport dat je niet hoeft te schamen wanneer je het aan de opdrachtgever overhandigt.

De architectuur van IB is bewust eenvoudig gehouden. Het is een Flask-applicatie met SQLite als database, ontworpen om lokaal te draaien op je aanvalsmachine. Geen cloud, geen account, geen telemetrie. Alles blijft op jouw systeem, waar het hoort. De broncode is leesbaar en aanpasbaar – als je een commando mist, voeg je een bestand toe aan http/commands/ en het verschijnt automatisch in de bibliotheek. Als je een finding template nodig hebt, importeer je hem via JSON.

De componenten van IB in een notendop:

IB is gebouwd door pentesters, voor pentesters. Het is niet mooi. Het is functioneel. En in dit vak is functioneel alles wat telt.

In hoofdstuk 1 behandelen we de installatie en configuratie van IB. Daarna is het een constante metgezel.

Hoe dit boek te lezen

Je kunt dit boek op twee manieren lezen.

De eerste manier is lineair: begin bij hoofdstuk 1, volg het pad van reconnaissance tot rapportage, en doe de oefeningen in je lab terwijl je leest. Dit is de aanbevolen aanpak voor wie nieuw is in netwerkpentesting. Elk hoofdstuk bouwt voort op het vorige, en de technieken worden steeds geavanceerder naarmate je vordert.

De tweede manier is als naslagwerk: je zit midden in een engagement, je hebt toegang tot een systeem met een SPN-geregistreerd service account, en je wilt snel de Kerberoast-procedure opzoeken. Blader naar het relevante hoofdstuk, zoek de techniek, kopieer het commando. De referentietabellen aan het einde van elk hoofdstuk helpen je snel te navigeren.

Beide manieren zijn geldig. Beide zijn bedoeld. Gebruik wat werkt.

Een derde manier – en we raden die af, maar we weten dat het gebeurt – is dit boek als inspiratie te gebruiken om dingen uit te proberen zonder het hele verhaal te lezen. Als je dat doet, lees dan in ieder geval het voorwoord en de disclaimers. En zorg ervoor dat je een lab hebt. Altijd een lab. Nooit een productieomgeving. We zeggen het nog een keer: nooit een productieomgeving.

De structuur van het boek

Dit boek volgt ruwweg het pad van een netwerkpenetratietest, van de eerste scan tot het eindrapport. De hoofdstukken zijn zo geordend dat elk hoofdstuk voortbouwt op wat ervoor kwam, maar ze zijn ook afzonderlijk leesbaar als referentie.

We beginnen met de basis: netwerken, protocollen, Active Directory, het lab. Vervolgens lopen we door de fases van een pentest: reconnaissance, initial access, escalatie, laterale beweging, persistentie. We eindigen met rapportage – het deel dat niemand leuk vindt maar dat uiteindelijk het enige is wat de opdrachtgever ziet.

Elk hoofdstuk bevat: - Theorie en achtergrond (de verhalende stem) - Praktische technieken met commando’s (de technische kern) - Cynisch commentaar over de stand van zaken (het scherpe intermezzo) - IB Tips die verwijzen naar het dashboard - Verdedigingsmaatregelen - Een referentietabel

Dankwoord

Dank aan iedereen die aan de Incompetent Bastard-codebase heeft bijgedragen. Aan de pentesters die de commando’s in het veld hebben getest en teruggekomen zijn met opmerkingen als “dit werkt niet op Server 2019” en “je mist een backslash in regel 4”. Aan de mensen die de standaard-findings hebben geschreven en herschreven tot ze zowel technisch accuraat als begrijpelijk waren voor een niet-technische opdrachtgever. Aan degenen die de CVSS 4.0-calculator hebben geimplementeerd en vervolgens ontdekten dat CVSS 4.0 elf base metrics heeft in plaats van acht, en dat allemaal hebben herschreven zonder te klagen. Nou ja. Zonder veel te klagen.

Aan de open-source-community die gereedschappen als BloodHound, Rubeus, Mimikatz, Impacket, CrackMapExec en Certipy beschikbaar heeft gesteld. Zonder hen zou penetratietesten een stuk lastiger zijn, en een stuk minder interessant. Jullie werk maakt het verschil tussen een pentest die weken duurt en een pentest die inzichten oplevert.

Aan de makers van nmap, dat al meer dan vijfentwintig jaar het eerste gereedschap is dat elke penetratietester opstart. Aan de ontwikkelaars van Kali Linux en ParrotOS, die het mogelijk maken om met een enkele ISO een complete aanvalsomgeving op te zetten. Aan de auteurs van de MITRE ATT&CK-matrix, die ons een gemeenschappelijke taal hebben gegeven.

En aan iedereen die ooit een netwerk heeft geconfigureerd met de gedachte “dit fixen we later wel” – jullie houden ons in werk. Elke keer dat een systeembeheerder zegt “we hebben het altijd al zo gedaan”, voegt een penetratietester ergens een finding toe aan zijn rapport.

En als laatste: aan de lezers van het eerste boek die ons hebben geschreven met vragen, correcties en suggesties. Jullie feedback heeft dit tweede boek beter gemaakt dan het zonder jullie zou zijn geweest.

Speciaal dank aan de klanten die ons toestonden om (geanonimiseerde) voorbeelden uit echte engagements te gebruiken als illustratie. De namen zijn veranderd, de IP-adressen zijn fictief, maar de patronen zijn echt. Het zijn patronen die we keer op keer tegenkomen, in organisaties van elke omvang en in elke sector.

Dit boek is opgedragen aan iedereen die beveiliging serieus neemt – niet door er geld aan uit te geven, maar door er tijd in te steken. Door te begrijpen hoe hun netwerk werkt. Door te luisteren naar de mensen die het testen. Door de bevindingen niet in een la te leggen maar daadwerkelijk te implementeren.

Jullie zijn zeldzaam. Maar jullie bestaan. En voor jullie schrijven we.

Veel plezier. En vergeet niet: altijd met toestemming.

– Jan-Karel Visser, Kropswolde, 2026