Inleiding

Van ARPANET tot Active Directory: een beknopte geschiedenis van het computernetwerk

Op 29 oktober 1969 verstuurde een student aan UCLA het eerste bericht over ARPANET. Het bericht was “LOGIN”. Het systeem crashte na de letters “LO”. Het was, achteraf bezien, een passende start voor een technologie die de komende vijftig jaar zou worden geplaagd door onverwachte uitval en onbegrepen foutmeldingen.

Wat begon als een experiment van het Amerikaanse ministerie van Defensie – een netwerk dat een nucleaire aanval zou overleven, al is dat verhaal grotendeels mythe – groeide uit tot iets dat geen van de oorspronkelijke ontwerpers had voorzien. Het internet, en in het verlengde daarvan het moderne bedrijfsnetwerk, werd gebouwd op vertrouwen. De protocollen die het fundament vormen – TCP/IP, DNS, ARP – zijn ontworpen in een tijd waarin iedereen op het netwerk een onderzoeker was aan een universiteit, en “beveiliging” een concept was dat hoorde bij sloten en sleutels, niet bij pakketten en poorten.

Dat vertrouwen is nooit werkelijk weggehaald. Het is ingepakt, verhuld, omgeven door lagen van firewalls en encryptie, maar het zit er nog steeds. Als je diep genoeg graaft in elk bedrijfsnetwerk, vind je protocollen die aannemen dat wie een pakket verstuurt ook degene is die hij zegt te zijn. En het is precies in die aanname dat penetratiesters hun werk beginnen.

In de jaren tachtig kwamen de eerste bedrijfsnetwerken. Novell NetWare, Banyan VINES, en later Windows NT – systemen die kantoren verbonden en het mogelijk maakten om bestanden te delen, printers te gebruiken, en e-mail te versturen. Het waren gesloten systemen, afgesloten van de buitenwereld, en beveiliging was een kwestie van fysieke toegang. Als je in het gebouw kon komen, kon je bij het netwerk. Zo simpel was het.

Toen kwam het internet. En plotseling moesten die gesloten netwerken verbonden worden met een systeem dat van nature open was. De oplossing was de firewall – een apparaat dat als een poortwachter fungeerde tussen het interne netwerk en het internet. Het was een elegante oplossing voor een probleem dat snel veel ingewikkelder zou worden dan iemand op dat moment voorzag.

Want het probleem met een poortwachter is dat hij alleen werkt als de vijand buiten staat. Zodra iemand eenmaal binnen is – via een gecompromitteerd account, een phishing-link, een kwetsbare webapplicatie, of simpelweg een USB-stick op de parkeerplaats – is de poortwachter irrelevant. En het interne netwerk, dat nooit was ontworpen om vijandig verkeer te weerstaan, ligt open als een boek.

Dat is de wereld waarin we ons nu bevinden. En dat is de wereld die dit boek verkent.

De middeleeuwse stad

Het helpt om een bedrijfsnetwerk te zien als een middeleeuwse stad. Het is een vergelijking die niet perfect is – geen enkele vergelijking is dat – maar ze maakt veel dingen duidelijk die anders abstract blijven.

De buitenmuur is de firewall. Ze scheidt de stad van de buitenwereld en bepaalt wie er binnenkomt en wie niet. In de middeleeuwen waren er poorten met bewakers; in een netwerk zijn er regels die verkeer toelaten op basis van poort, protocol en bron-IP. En net als bij een middeleeuwse stad geldt: als je eenmaal binnen de muur bent, wordt het aanzienlijk eenvoudiger.

De wijken zijn de netwerksegmenten – VLANs, subnets, zones. De ambachtslieden zitten bij elkaar, de kooplieden hebben hun eigen straat, en het garnizoen heeft zijn eigen terrein. In theorie. In de praktijk hebben de meeste bedrijfsnetwerken een segmentatie die lijkt op een stad waar alle muren tussen de wijken zijn afgebroken omdat het makkelijker was om er doorheen te lopen.

De marktplaats is het kantoornetwerk – de plek waar iedereen samenkomt, waar informatie wordt uitgewisseld, en waar je als buitenstaander het meest kunt oppikken door simpelweg rond te lopen en te luisteren. In netwerkterminologie: de plek waar broadcast traffic vrij rondvliegt.

En in het midden van de stad staat het kasteel: de Domain Controller. De plek waar de kroon wordt bewaard, waar de bevolkingsregisters liggen, en waar de sleutels van elke deur in de stad hangen. Wie het kasteel bezit, bezit de stad. In Active Directory-termen: wie Domain Admin is, is God.

De gracht rond het kasteel? Dat is tiering – als het is geimplementeerd. Spoiler: dat is het bijna nooit.

De herbergen zijn de jump hosts – de plekken waar reizigers (beheerders) overnachten op weg naar het kasteel. In een goed beveiligd netwerk ga je niet rechtstreeks naar de Domain Controller. Je gaat via een jump host, een Privileged Access Workstation, een gecontroleerd toegangspunt. In de praktijk? In de praktijk RDP’t de systeembeheerder rechtstreeks vanaf zijn werkstation naar de DC, met zijn Domain Admin-account, terwijl hij een tabblad open heeft staan met zijn persoonlijke e-mail. De middeleeuwen hadden daar een woord voor: dwaasheid.

En de spionnen? Dat zijn de penetratiesters. Ze komen binnen via een poort die niet goed bewaakt wordt, verkennen de wijken, maken praatjes op de marktplaats, en werken zich langzaam een weg naar het kasteel. Het verschil met echte spionnen is dat wij een rapport achterlaten met aanbevelingen om de verdediging te verbeteren. Echte spionnen laten geen rapport achter.

Anatomie van een netwerk

Voordat je een netwerk kunt testen, moet je begrijpen hoe het in elkaar zit. Niet op het niveau van een netwerkarchitect die RFC’s citeert in zijn slaap, maar op het niveau dat je nodig hebt om te weten wat er gebeurt wanneer je een pakket verstuurt, een naam opzoekt, of een Kerberos-ticket aanvraagt.

Het OSI-model, of: zeven lagen van abstractie

Het Open Systems Interconnection-model is een van die dingen die elke IT-professional kent, weinigen werkelijk begrijpen, en nog minder dagelijks gebruiken. Het verdeelt netwerkcommunicatie in zeven lagen, van de fysieke kabels onderaan tot de applicatie bovenaan.

Laag Naam Wat het doet Voorbeeld
7 Application Wat de gebruiker ziet HTTP, DNS, SMB
6 Presentation Dataformattering en encryptie TLS, SSL, JPEG
5 Session Sessies opzetten en beheren NetBIOS, RPC
4 Transport Betrouwbare end-to-end communicatie TCP, UDP
3 Network Routering tussen netwerken IP, ICMP, ARP
2 Data Link Communicatie binnen een netwerksegment Ethernet, Wi-Fi
1 Physical De daadwerkelijke kabel of het radiosignaal Cat6, glasvezel

In de praktijk werken de meeste penetratiesters op laag 3 tot en met 7. Maar vergis je niet: soms begint een aanval op laag 2 – een ARP spoofing-aanval die je in een positie brengt om al het verkeer op een netwerksegment mee te lezen – en soms eindigt een aanval op laag 1, wanneer je fysiek een Raspberry Pi achter een printer prikt die niemand ooit controleert.

Het OSI-model is nuttig als mentaal raamwerk, niet als rigide classificatie. De meeste protocollen houden zich niet netjes aan een enkele laag. DNS zit op laag 7 maar gebruikt UDP op laag 4. SMB zit op laag 7 maar gebruikt NetBIOS-sessies op laag 5. Het leven is rommelig. Netwerken zijn rommelig. Het OSI-model probeert die rommel te ordenen, en slaagt daar gedeeltelijk in.

TCP/IP: de taal van het netwerk

Waar het OSI-model een theoretisch raamwerk is, is TCP/IP het protocol dat daadwerkelijk wordt gebruikt. Het bestaat uit vier lagen die ruwweg op het OSI-model mappen, maar pragmatischer zijn.

IP (Internet Protocol) zorgt voor adressering en routering. Elk apparaat op het netwerk krijgt een IP-adres – in de meeste bedrijfsnetwerken een IPv4-adres uit een privaat bereik zoals 10.0.0.0/8 of 172.16.0.0/12 of 192.168.0.0/16. IP is connectionless en unreliable – het stuurt pakketten de wereld in en hoopt dat ze aankomen. Dat klinkt onverantwoord, en dat is het ook. Het is ook enorm efficient.

TCP (Transmission Control Protocol) voegt betrouwbaarheid toe. Het bouwt een verbinding op via een three-way handshake (SYN, SYN-ACK, ACK), houdt bij of pakketten aankomen, en verstuurt ze opnieuw als dat niet het geval is. Bijna alle diensten die je tijdens een pentest tegenkomt – HTTP, SMB, RDP, SSH – gebruiken TCP.

UDP (User Datagram Protocol) is TCP’s zorgeloze neef. Geen verbinding, geen garantie, geen genade. Maar wel snel. DNS gebruikt UDP voor standaard queries. Kerberos gebruikt UDP voor kleinere berichten. En menig tunneling-techniek maakt gebruik van UDP omdat het minder opvalt in firewall-logs.

DNS (Domain Name System) verdient speciale aandacht, want het is een van de meest onderschatte aanvalsoppervlakken in elk netwerk. DNS vertaalt namen naar IP-adressen – dc01.contoso.local wordt 10.0.0.10 – en in een Active Directory-omgeving is DNS onlosmakelijk verbonden met AD zelf. De Domain Controller is bijna altijd ook de DNS-server. Dat betekent dat DNS-verkeer je enorm veel kan vertellen over de structuur van het netwerk, en dat DNS-misconfiguratiesje soms toegang geven tot informatie die niet voor je bedoeld was.

IB Tip: Het commando recon_dns in de Command Library bevat DNS-enumeratietechnieken inclusief zone transfers, subdomain brute forcing, en reverse lookups. Laad het via het Commands-paneel op het dashboard.

DHCP (Dynamic Host Configuration Protocol) deelt automatisch IP-adressen uit aan apparaten die verbinding maken met het netwerk. Voor een penetratietester is DHCP interessant omdat het je vertelt welk netwerksegment je zit, wat de gateway is, en – cruciaal – wat de DNS-server is. In een AD-omgeving wijst dat bijna altijd naar de Domain Controller.

SMB (Server Message Block) is het protocol voor bestandsdeling in Windows-netwerken. Het draait standaard op poort 445 en is een van de eerste dingen waar een penetratietester naar zoekt. SMB-shares bevatten regelmatig gevoelige bestanden – wachtwoorden in scripts, configuratiebestanden, backup-bestanden van databases. De IB Command Library bevat enumeratiecommando’s voor shares onder enum_shares_files.

RDP (Remote Desktop Protocol) op poort 3389 is de manier waarop beheerders op afstand inloggen op Windows-systemen. Het is ook een populair doelwit voor brute force-aanvallen en credential stuffing. In een netwerk waar RDP open staat op werkstations, heb je als aanvaller een breed aanvalsoppervlak.

LDAP (Lightweight Directory Access Protocol) is het protocol waarmee je Active Directory bevraagt. Poort 389 voor onversleuteld, 636 voor LDAPS. LDAP-queries zijn een van de krachtigste enumeratietechnieken in een AD-omgeving – ze vertellen je alles over gebruikers, groepen, computers, GPOs, trusts en meer.

IB Tip: Het commando ad_enum_ldap_raw in de Command Library bevat LDAP-query technieken voor directe Active Directory-enumeratie zonder afhankelijkheid van Windows-specifieke tools.

Active Directory: het koninkrijk

En dan komen we bij het onderwerp dat dit boek domineert: Active Directory.

Active Directory (AD) is Microsofts directory service, geintroduceerd met Windows 2000 en sindsdien het kloppend hart van bijna elk bedrijfsnetwerk ter wereld. Het is een gecentraliseerde database van gebruikers, computers, groepen, beleid, en permissies. Als je wilt weten wie welke rechten heeft op welke systemen, vraag je het aan Active Directory.

De basisconcepten:

Forest – De hoogste container in AD. Een forest bevat een of meer domains en deelt een gemeenschappelijk schema, configuratie, en Global Catalog. De meeste organisaties hebben een enkel forest. Grote organisaties met overnames hebben er soms meerdere, met trusts ertussen.

Domain – Een logische groepering van objecten (gebruikers, computers, groepen) met een gemeenschappelijk beveiligingsbeleid. Denk aan een koninkrijk binnen het rijk. contoso.local is een domain. eu.contoso.local is een child domain.

Domain Controller (DC) – De server die het kasteel is. De DC beheert authenticatie, autorisatie en replicatie. Het bezit de AD-database (ntds.dit), de kroonjuwelen van het netwerk. Een organisatie heeft doorgaans minstens twee DCs voor redundantie, maar de eerste die je compromitteert is genoeg.

Organizational Units (OUs) – Containers binnen een domain die objecten groeperen voor beheer. Denk aan afdelingen: “IT”, “HR”, “Finance”. OUs zijn de plekken waarop Group Policy Objects (GPOs) worden toegepast.

Group Policy Objects (GPOs) – Beleid dat wordt afgedwongen op gebruikers en computers. GPOs bepalen alles, van wachtwoordvereisten tot welke software wordt geinstalleerd tot of een gebruiker PowerShell mag draaien. Voor een penetratietester zijn GPOs goud, want ze bevatten vaak configuratiefouten die je kunt misbruiken.

Trusts – Relaties tussen domains die authenticatie over domeingrenzen heen mogelijk maken. Een trust kan one-way of two-way zijn, transitive of non-transitive. Trusts zijn een van de meest verkeerd begrepen concepten in AD, en een van de meest misbruikte door aanvallers.

IB Tip: De Command Library bevat een complete set AD-enumeratiecommando’s. Zoek op ad_ voor commando’s zoals ad_enum_ldap_raw, ad_trust_child_to_parent, en ad_trust_cross_forest.

Kerberos – Het authenticatieprotocol dat AD gebruikt. We besteden er in hoofdstuk 5 een volledig hoofdstuk aan, want het is zowel ingenieus als spectaculair misbruikbaar. Kort samengevat: Kerberos werkt met tickets in plaats van wachtwoorden. Je vraagt een Ticket Granting Ticket (TGT) aan bij de Key Distribution Center (KDC, die op de DC draait), en gebruikt dat TGT vervolgens om Service Tickets aan te vragen voor specifieke diensten. Het is elegant. Het is ook lek als een mandje.

NTLM – Het oudere authenticatieprotocol dat weigert te sterven. NTLM-hashes zijn het equivalent van wachtwoorden – als je iemands hash hebt, kun je je authenticeren alsof je die persoon bent (Pass-the-Hash). NTLM zou allang met pensioen moeten zijn. Het is er nog steeds. Microsoft heeft het herhaaldelijk afgekeurd, ontraden, en gedepreceerd, maar het is als die ene collega die al drie keer met pensioen is gegaan en nog steeds elke maandag op kantoor verschijnt: je raakt het niet kwijt.

Active Directory Certificate Services (ADCS) – De interne Certificate Authority die veel organisaties draaien voor het uitgeven van certificaten. ADCS is relatief recent ontdekt als een enorm aanvalsoppervlak. De ESC-kwetsbaarheden (ESC1 tot en met ESC8+) maken het mogelijk om certificaten aan te vragen waarmee je je kunt voordoen als elke gebruiker in het domein, inclusief Domain Admins. We behandelen ADCS uitgebreid in hoofdstuk 7.

IB Tip: De Command Library bevat commando’s voor ADCS-aanvallen onder het adcs_-prefix: adcs_enum voor enumeratie, en adcs_esc1, adcs_esc3, adcs_esc6 voor specifieke escalatie-paden.

Service Principal Names (SPNs) – Identifiers die een service koppelen aan een account in AD. SPNs zijn de sleutel tot Kerberoasting: als een account een SPN heeft, kun je een service ticket aanvragen voor dat account, en dat ticket offline kraken om het wachtwoord te achterhalen. Het mooie – vanuit het perspectief van de aanvaller – is dat dit volledig legitiem verkeer is. Je vraagt gewoon een ticket aan. Dat mag. En vervolgens kraak je het offline, waar niemand het ziet.

Subnetting en segmentatie

Netwerksegmentatie is het principe dat je een netwerk opdeelt in kleinere, geisoleerde segmenten. Het doel is simpel: als een aanvaller een systeem compromitteert in segment A, kan hij niet automatisch bij segment B.

In de praktijk werkt segmentatie via VLANs (Virtual LANs) en subnets. Een subnet wordt gedefinieerd door een IP-bereik en een subnetmasker:

10.0.1.0/24  -- Kantoornetwerk (254 hosts)
10.0.2.0/24  -- Servers (254 hosts)
10.0.3.0/24  -- Management (254 hosts)
10.0.0.0/29  -- DMZ (6 hosts)

De /24 notatie (CIDR) betekent dat de eerste 24 bits van het adres het netwerkgedeelte vormen, en de laatste 8 bits het hostgedeelte. Dat geeft 254 bruikbare adressen (256 minus het netwerkadres en het broadcast-adres).

Segmentatie werkt alleen als er regels zijn die verkeer tussen segmenten beperken. Een firewall of ACL (Access Control List) die bepaalt: het kantoornetwerk mag naar de webserver op poort 443, maar niet naar de databaseserver op poort 1433. In de praktijk zien we regelmatig netwerken waar alle VLANs vrijelijk met elkaar kunnen communiceren. Dan heb je geen segmentatie. Dan heb je VLANs als decoratie.

De term daarvoor, onder penetratiesters, is “flat network”. En een flat network is een feest voor een aanvaller.

Een goed gesegmenteerd netwerk ziet er zo uit:

Internet ─── [Firewall] ─── DMZ (webservers, mail)
                  │
                  ├── Kantoornetwerk (werkstations)
                  │
                  ├── Servernetwerk (applicaties, databases)
                  │
                  ├── Management (beheertools, jump hosts)
                  │
                  └── OT/IoT (productie, printers, camera's)

Tussen elke zone staan firewall-regels die alleen het strikt noodzakelijke verkeer toelaten. Het kantoornetwerk mag naar de webserver op poort 443, maar niet naar de databaseserver op poort 1433. Het management-netwerk mag overal naartoe, maar alleen via specifieke jump hosts met multifactor-authenticatie. OT is volledig geisoleerd en mag alleen uitgaand verkeer naar een update-server.

Dat is de theorie. De praktijk is – laten we zeggen – minder gestructureerd.

Het MITRE ATT&CK Framework

Wat het is

MITRE ATT&CK (Adversarial Tactics, Techniques, and Common Knowledge) is een kennisbank van aanvalstechnieken, gebaseerd op observaties uit de echte wereld. Het is geen checklist, geen scanner, en geen tool. Het is een taal – een gedeeld vocabulaire waarmee aanvallers en verdedigers over dezelfde dingen kunnen praten zonder langs elkaar heen te praten.

ATT&CK organiseert aanvalstechnieken in een matrix met Tactics (het waarom – het doel van de aanvaller) als kolommen en Techniques (het hoe – de specifieke methode) als rijen.

Tactics, Techniques, Procedures

De Tactics in ATT&CK voor Enterprise zijn:

Tactic Doel Voorbeeld
Reconnaissance Informatie verzamelen over het doelwit DNS enumeration, OSINT
Resource Development Infrastructuur en tools voorbereiden Payload generatie, C2-server setup
Initial Access Eerste voet binnen de deur Phishing, exploit public-facing
Execution Code uitvoeren op het doelsysteem PowerShell, WMI
Persistence Toegang behouden na reboot Scheduled tasks, registry keys
Privilege Escalation Hogere rechten verkrijgen Token impersonation, UAC bypass
Defense Evasion Detectie ontwijken AMSI bypass, obfuscation
Credential Access Wachtwoorden en hashes stelen Kerberoasting, LSASS dumping
Discovery Het netwerk verkennen BloodHound, net commands
Lateral Movement Naar andere systemen bewegen WMI, PSRemoting, DCOM
Collection Data verzamelen voor exfiltratie Keylogging, screenshots
Command and Control Communicatie met de aanvaller Reverse shells, DNS tunneling
Exfiltration Data naar buiten brengen HTTP, DNS exfiltration
Impact Schade aanrichten of doelen bereiken Ransomware, data destruction

Elke Technique heeft een uniek ID (bijvoorbeeld T1558 voor “Steal or Forge Kerberos Tickets”) en kan Sub-Techniques bevatten (T1558.003 voor “Kerberoasting”). Procedures zijn de specifieke implementaties – het daadwerkelijke commando dat een aanvaller of pentester uitvoert.

Een voorbeeld: de tactic “Credential Access” (TA0006) bevat onder andere de technique “OS Credential Dumping” (T1003), die sub-techniques heeft voor LSASS Memory (T1003.001), SAM (T1003.002), NTDS (T1003.003), en DCSync (T1003.006). Elk van deze sub-techniques heeft in de ATT&CK-documentatie een beschrijving, voorbeelden van tools die het implementeren, detectiemethoden, en mitigaties.

Het mooie van ATT&CK is dat het zowel voor aanvallers als verdedigers werkt. Een penetratietester gebruikt het om te plannen welke technieken hij gaat testen. Een SOC-analist gebruikt het om te begrijpen wat er gebeurt wanneer een alert afgaat. Een CISO gebruikt het om te communiceren welke dreigingen relevant zijn voor de organisatie. Het is een gedeelde taal, en gedeelde talen zijn zeldzaam en waardevol in een vakgebied dat vergeven is van jargon.

Mapping naar pentest-fases

ATT&CK is niet ontworpen als pentest-methodologie, maar het mapt er uitstekend op. Wanneer je in IB een finding vastlegt, kun je de MITRE ATT&CK technique ID toevoegen. Dit geeft opdrachtgevers een universeel referentiepunt en maakt het mogelijk om bevindingen te koppelen aan bekende dreigingsactoren.

De mapping werkt in twee richtingen. Van pentest naar ATT&CK: je hebt Kerberoasting uitgevoerd, dus je mapt naar T1558.003. Van ATT&CK naar pentest: de opdrachtgever wil weten of ze kwetsbaar zijn voor technieken die APT29 gebruikt, dus je zoekt de relevante techniques op in de ATT&CK-matrix en test ze.

De IB Command Library is bewust georganiseerd langs ATT&CK-lijnen. De kerb_-commando’s mappen naar Credential Access (TA0006), de lateral_-commando’s naar Lateral Movement (TA0008), de persist_-commando’s naar Persistence (TA0003). Dit maakt het eenvoudig om van een ATT&CK technique naar het bijbehorende IB-commando te navigeren.

IB Tip: De finding templates in IB bevatten een MITRE-veld. Wanneer je een bevinding aanmaakt, voeg je het technique ID toe (bijvoorbeeld T1558.003 voor Kerberoasting). Dit wordt meegenomen in de rapportgeneratie en de JSON-export, waardoor je bevindingen direct koppelbaar zijn aan de ATT&CK-matrix.

De IB Workflow

Incompetent Bastard is ontworpen als je operationele hub tijdens een pentest. Laten we de belangrijkste componenten doorlopen.

Het dashboard

Wanneer je IB opstart en navigeert naar http://127.0.0.1:5000/dashboard, zie je het hoofddashboard. Dit is je commandocentrum. Van hieruit heb je toegang tot:

Het dashboard vereist lokale toegang (127.0.0.1 of ::1) of een geldig DASHBOARD_ACCESS_TOKEN. Dit is bewust – je wilt niet dat een willekeurige bezoeker je pentest-dashboard kan bekijken.

# Uit meuk/flask/security.py -- de toegangscontrole is simpel maar effectief
_LOCAL_IPS = {"127.0.0.1", "::1"}

def dashboard_access_allowed():
    if is_local_request():
        return True
    token = current_app.config.get("DASHBOARD_ACCESS_TOKEN")
    if not token:
        return False
    supplied = request.headers.get("X-Dashboard-Token")
    return supplied == token

De Task Runner

De Task Runner (/dashboard/tasks) is een van de krachtigste onderdelen van IB. Het stelt je in staat om veelgebruikte taken uit te voeren vanuit de browser, met realtime output en zonder dat je een apart terminalvenster nodig hebt.

Het sleutelwoord hier is allowlist. De Task Runner voert uitsluitend voorgedefinieerde commando’s uit. Er is geen invoerveld waar je willekeurig shell-commando’s kunt typen. Elk commando is vastgelegd in een _TASKS-dictionary met expliciete argumentvalidatie via regex-patronen.

De beschikbare taakgroepen:

Groep Taken Beschrijving
Development compileall, pytest, git_status Code validatie en testing
Setup init, engage Omgeving initialiseren, VPN + Empire starten
Recon scan, search, kerberos, ftp_anon Nmap scans, Kerberos enum, FTP checks
Brute Force gen_passwords, brute_ssh, brute_rdp, brute_vpn, weak_ssh Wachtwoord-aanvallen
Exploit ftp_asp, rfi_input Exploit-uitvoering
Network sshuttle Tunneling en pivoting

Elke taak met argumenten valideert die argumenten streng:

# Regex patronen -- alleen veilige tekens toegestaan
_RE_SAFE_NAME = re.compile(r"^[a-zA-Z0-9_\-]+$")
_RE_IP_OR_IFACE = re.compile(r"^[a-zA-Z0-9._:/%\-]+$")
_RE_SUBNET = re.compile(r"^[0-9./]+$")

Path traversal (..) wordt expliciet geblokkeerd. Wachtwoorden worden als environment variabelen doorgegeven, niet als commandoregelargumenten (waar ze in ps aux zichtbaar zouden zijn). En – cruciaal – shell=False in alle subprocess.Popen-aanroepen, wat shell injection onmogelijk maakt.

Het is bijna ironisch: een tool voor penetratiesters die zelf goed beveiligd is. Maar zo hoort het ook.

IB Tip: Start een nmap-scan via de Task Runner: klik op “Network scan (nmap)” in de Recon-groep, vul het interface, de scannaam en het IP-bereik in, en klik op “Run”. De output streamt realtime naar het scherm.

De Command Library

De Command Library is het referentiebrein van IB. Het bevat 194 command files die elk een specifieke techniek documenteren met meerdere methoden, variaties en tips.

De commando’s zijn georganiseerd in categorieen herkenbaar aan hun prefix:

Prefix Categorie Aantal Voorbeelden
ad_ Active Directory 8 ad_bloodhound_collect, ad_dcsync, ad_enum_acl
adcs_ AD Certificate Services 4 adcs_enum, adcs_esc1, adcs_esc3
amsi_ AMSI Bypass 5 amsi_bypass_patch, amsi_invisishell
applocker_ AppLocker Bypass 3 applocker_msbuild, applocker_mshta
av_ Antivirus Evasion 4 av_defendercheck, av_shellter
cred_ Credential Access 4 cred_lsass_ppldump, cred_sam_dump
enum_ Enumeration 7 enum_domain_users, enum_shares_files
kerb_ Kerberos Attacks 10 kerb_kerberoast, kerb_golden_ticket
lateral_ Lateral Movement 6 lateral_wmi, lateral_psremoting
persist_ Persistence 5 persist_skeleton_key, persist_dsrm
privesc_ Privilege Escalation 3 privesc_uac_bypass, privesc_linux_cron
web_ Web Attacks 30 web_sqli_union, web_ssti_jinja
linux_ Linux-specifiek 4 linux_ssh_hijack, linux_ldpreload
mssql_ MSSQL Attacks 4 mssql_xpcmdshell, mssql_linked
net_ Networking/Tunneling 3 net_chisel_tunnel, net_dnscat2_server
ps_cradle_ PowerShell Cradles 5 ps_cradle_iwr, ps_cradle_xmlhttp
shell_ Reverse Shells 2 shell_powercat, shell_socat
tunnel_ Tunneling 4 tunnel_ssh_socks, tunnel_plink

Elk command file bevat kopieerbare commando’s met inline commentaar in het Nederlands. Placeholder-waarden ([host]) worden automatisch vervangen door het actuele IP-adres uit de IB-instellingen.

IB Tip: Gebruik het zoekpaneel op het dashboard om snel door alle 194 commando’s te zoeken. Typ een trefwoord – “kerberos”, “lateral”, “mimikatz” – en de relevante command files verschijnen direct.

Screen Terminal

De Screen Terminal (/dashboard/recordings) geeft je toegang tot actieve screen-sessies. Taken die via de Task Runner in een screen-sessie worden gestart (zoals de engage-taak die OpenVPN en Empire opstart) zijn hier bereikbaar en bestuurbaar.

Screen-sessies zijn bijzonder nuttig voor langlopende taken: een Responder die uren draait en wacht op NTLM-hashes, een sshuttle-tunnel die je netwerktoegang open houdt, of een Empire-listener die wacht op callbacks. Via de Screen Terminal kun je de output volgen zonder dat je een apart terminalvenster open hoeft te houden.

IB Tip: De engage-taak in de Task Runner start automatisch OpenVPN en PowerShell Empire in afzonderlijke screen-sessies. Gebruik de Screen Terminal om de sessies te monitoren en te beheren.

Findings en rapportage

Het Findings Management-systeem (/dashboard/findings) is waar je werk wordt gedocumenteerd. Elke bevinding krijgt:

IB berekent CVSS 4.0-scores via een ingebouwde calculator die alle elf base metrics valideert. Het resultaat is een score van 0.0 tot 10.0 met een severity-classificatie (None, Low, Medium, High, Critical).

Wanneer je klaar bent, genereert /dashboard/findings/rapport een compleet rapport. IB converteert LaTeX-templates naar HTML en vervolgens naar Markdown via pandoc, met automatische OWASP-categorisering en cross-referenties tussen bevindingen. Het resultaat is een rapport dat direct bruikbaar is voor de opdrachtgever.

IB Tip: Importeer standaard finding templates via de “Seed” functie op de findings-pagina. Dit laadt een volledige set voorgedefinieerde bevindingen met OWASP, CWE en MITRE-mappings, zodat je niet elke finding vanaf nul hoeft op te bouwen.

Pentest-methodologie

De fases

Een penetratietest is geen willekeurige verzameling aanvallen. Het is een gestructureerd proces dat een aanvaller simuleert, stap voor stap, met het doel om de werkelijke risico’s voor een organisatie bloot te leggen. De fases:

1. Scope en voorbereiding

Voordat je ook maar een enkel pakket verstuurt, leg je vast wat je mag testen, wanneer je mag testen, en wat er buiten scope valt. Dit is het document waar we het in het voorwoord over hadden – het verschil tussen een pentest en een misdrijf.

Scope omvat: IP-bereiken, domeinen, systemen, tijdvensters, en – cruciaal – wat je niet mag doen. Productiedatabases benaderen? Denial-of-service? Social engineering? Dit moet allemaal zwart op wit staan.

Een goed scope-document bevat ook een escalatieprocedure: wie bel je als je per ongeluk een productiesysteem platlegt? Wie is je aanspreekpunt bij de klant? Wie heeft de bevoegdheid om de test te stoppen? Dit zijn geen theoretische vragen – dit zijn vragen die je beantwoord wilt hebben voordat het mis gaat, niet erna.

2. Reconnaissance

Informatie verzamelen. Passief (OSINT, DNS records, certificaten) en actief (nmap-scans, service-enumeratie, LDAP-queries). Het doel: een zo compleet mogelijk beeld van het aanvalsoppervlak.

In een netwerkpentest betekent reconnaissance: welke hosts zijn er, welke poorten staan open, welke services draaien erop, welke versies, en – als het een AD-omgeving is – hoe ziet de domeinstructuur eruit.

# Een typische IB Task Runner recon-flow:
# 1. Network scan via nmap
bash scan.sh tun0 engagement-name 10.0.0.0/24

# 2. Zoek specifieke services in de resultaten
bash search.sh engagement-name http
bash search.sh engagement-name 3389

# 3. Kerberos-enumeratie
bash kerberos.sh engagement-name

3. Initial Access

De eerste voet binnen de deur. Dit kan via honderden wegen: een gecompromitteerd wachtwoord, een kwetsbare dienst, een phishing-aanval, een misconfiguratie. In een interne pentest begin je vaak al “binnen” – je hebt fysiek toegang tot het netwerk of een VPN-verbinding, en je begint als een reguliere gebruiker zonder speciale rechten. De vraag is dan niet of je hogere rechten kunt krijgen, maar hoe snel.

In een externe pentest moet je eerst een weg naar binnen vinden. Dat kan via een kwetsbare webapplicatie (zie het zusterboek), een openstaande dienst, een gestolen credential set van een eerdere databreach, of – steeds vaker – via misconfiguraties in cloud-diensten die gekoppeld zijn aan het on-premises AD.

4. Execution

Code uitvoeren op het doelsysteem. PowerShell, cmd, WMI, scheduled tasks – de methode hangt af van wat beschikbaar is en wat niet gedetecteerd wordt. In moderne omgevingen met EDR en AMSI is dit de fase waar je creatief moet worden. De IB Command Library bevat vijf AMSI-bypass-technieken (amsi_bypass_patch, amsi_bypass_reflection, amsi_bypass_context, amsi_bypass_clm, amsi_invisishell) en drie AppLocker-bypasses (applocker_msbuild, applocker_installutil, applocker_mshta) om detectie te ontwijken.

5. Privilege Escalation

Van een gewone gebruiker naar lokale administrator, en vandaar naar Domain Admin. Dit is het pad dat elke netwerkpentest volgt, en het pad dat in de meeste bedrijfsnetwerken korter is dan je zou willen.

Lokale privilege escalation: misconfiguraties in services, unquoted service paths, AlwaysInstallElevated, token impersonation. Domein privilege escalation: Kerberoasting van service accounts, AS-REP roasting, misconfigureerde ACLs, ADCS-misbruik.

6. Lateral Movement

Van het ene systeem naar het andere bewegen. WMI, PSRemoting, DCOM, SMB, RDP – de methoden zijn talrijk. Het doel is om systemen te vinden waar hogere rechten beschikbaar zijn, of waar gevoelige data staat.

# Uit de IB Command Library -- lateral_wmi:
wmic /node:TARGET_IP process call create "powershell -ep bypass ..."

7. Persistence

Toegang behouden, zelfs als het initieel gecompromitteerde account wordt vergrendeld of het wachtwoord wordt gewijzigd. Skeleton keys, Golden Tickets, DSRM backdoors, AdminSDHolder-manipulatie – Active Directory biedt een verbijsterende hoeveelheid persistentie-opties.

Opmerking: in een pentest gebruik je persistence alleen als het binnen de scope valt. Je documenteert de mogelijkheid, maar je laat geen daadwerkelijke backdoors achter.

8. Impact en rapportage

De laatste fase: documenteer wat je hebt gevonden, bereken de risico’s (CVSS 4.0), en schrijf een rapport dat zowel technische details bevat voor de IT-afdeling als een management-samenvatting voor het bestuur. IB’s rapportgeneratie helpt hierbij – het converteert je bevindingen automatisch naar een gestructureerd rapport met OWASP-classificaties, CWE-nummers en MITRE ATT&CK-referenties.

Een goed pentest-rapport is geen opsomming van kwetsbaarheden. Het is een verhaal. Het vertelt de opdrachtgever: “Dit is hoe een aanvaller uw netwerk zou binnendringen, dit is wat hij zou vinden, dit is hoe ver hij zou komen, en dit is wat u kunt doen om het te voorkomen.” De bevindingen zijn het bewijs. Het verhaal is de waarde.

IB Tip: Gebruik de Notes-functie (/dashboard/notes) om je narratief vast te leggen tijdens de pentest. Notes met de vlag rapport=True worden automatisch opgenomen in het gegenereerde rapport, zodat je verhalende context en technische bevindingen naadloos kunt combineren.

Kill chain vs. ATT&CK

De Lockheed Martin Cyber Kill Chain is het oudere model: zeven stappen van Reconnaissance tot Actions on Objectives. Het is lineair en simpel, wat zowel zijn kracht als zijn zwakte is. Het gaat ervan uit dat een aanval een keten is – breek een schakel, en de aanval faalt.

ATT&CK is rijker en realistischer. Het erkent dat aanvallers niet lineair werken. Ze springen tussen fases, herhalen stappen, en gebruiken meerdere technieken tegelijk. ATT&CK is een matrix, geen keten.

Kill Chain-fase ATT&CK Tactics
Reconnaissance Reconnaissance
Weaponization Resource Development
Delivery Initial Access
Exploitation Execution, Privilege Escalation
Installation Persistence, Defense Evasion
Command and Control Command and Control
Actions on Objectives Collection, Exfiltration, Impact

Beide modellen zijn nuttig. De Kill Chain voor de grote lijn, ATT&CK voor de details. In dit boek gebruiken we voornamelijk ATT&CK, omdat het beter aansluit bij de manier waarop penetratietesten in de praktijk verlopen.

Er zijn ook andere methodologieen: OSSTMM, PTES, OWASP Testing Guide. Ze hebben elk hun eigen focus en sterke punten. Maar ATT&CK is de de facto standaard geworden in de industrie, en het is het raamwerk dat de meeste opdrachtgevers herkennen en waarderen in een rapport.

Het lab opzetten

Je hebt een lab nodig. Je kunt niet leren netwerken te testen door erover te lezen – je moet het doen. En je doet het niet op het netwerk van je werkgever, je buurman, of een willekeurig bedrijf dat je online vindt. Je doet het in je eigen lab.

Minimale AD-lab

Een bruikbaar Active Directory-lab bestaat uit minimaal vier machines:

Machine Rol OS RAM Opslag
DC01 Domain Controller Windows Server 2019+ 2 GB 40 GB
WS01 Workstation (domain-joined) Windows 10/11 Pro 2 GB 40 GB
WS02 Workstation (domain-joined) Windows 10/11 Pro 2 GB 40 GB
ATTACK Aanvalsmachine Kali / ParrotOS 2 GB 40 GB

Totaal: 8 GB RAM en 160 GB opslag. Dat is niet niets, maar het is haalbaar op een moderne laptop met 16 GB RAM en een SSD. Gebruik VirtualBox, VMware Workstation, of Hyper-V als hypervisor.

DC01 is het hart. Installeer Windows Server, promoveer het tot Domain Controller, creeer een domain (bijvoorbeeld lab.local), en maak gebruikersaccounts en groepen aan. Voeg bewust misconfiguratities toe: een service account met een zwak wachtwoord, een gebruiker met GenericAll op een admin-groep, een SPN op een account met een kraakbaar wachtwoord.

WS01 en WS02 zijn domain-joined werkstations. Log in met verschillende gebruikersaccounts. Sla credentials op. Open sessies. Dit simuleert een echte kantooromgeving waar gebruikers ingelogd zijn en hun tokens rondvliegen.

ATTACK is je Kali of ParrotOS-machine. Hier draait IB, hier draai je je tools, hier begin je je aanval.

Optioneel: een Linux-server. Voeg een Ubuntu- of CentOS-server toe die domain-joined is via SSSD of Samba. Veel bedrijfsnetwerken bevatten Linux-servers die geintegreerd zijn met Active Directory, en de aanvalstechnieken daarvoor – SSH agent hijacking, LD_PRELOAD injection, Ansible credential harvesting – zijn fundamenteel anders dan Windows-aanvallen. De IB Command Library bevat commando’s hiervoor onder het linux_-prefix.

Netwerkconfiguratie: Zet alle machines in hetzelfde virtuele netwerk (host-only of intern netwerk in je hypervisor). Geef DC01 een vast IP-adres (bijvoorbeeld 10.0.0.10) en laat de werkstations hun IP via DHCP van de DC krijgen. De aanvalsmachine krijgt een vast IP in hetzelfde subnet (bijvoorbeeld 10.0.0.100).

Bewuste kwetsbaarheden: Het doel van het lab is om te leren. Een perfect beveiligd lab is nutteloos voor een penetratietester in opleiding. Voeg daarom bewust de volgende misconfiguratites toe:

De aanvalsmachine: Kali of ParrotOS

Kali Linux is de de facto standaard voor penetratietesten. Het komt voorgeinstalleerd met honderden tools – nmap, Metasploit, Impacket, CrackMapExec, BloodHound, en meer. ParrotOS is een alternatief dat lichter is en een minder opvallende desktop heeft (handig als je in een kantoor zit en niet wilt dat iedereen over je schouder meekijkt naar een screaming-red terminal).

Beide distributies zijn geschikt. Dit boek is agnostisch – we noemen tools, niet distributies.

Zorg er wel voor dat de volgende tools geinstalleerd zijn op je aanvalsmachine, naast de standaardtools die met Kali/Parrot worden meegeleverd:

IB installatie en configuratie

IB installeren op je aanvalsmachine:

# Clone de repository
git clone <repo-url> incompetentbastard
cd incompetentbastard

# Creeer een virtual environment
python3 -m venv .venv
source .venv/bin/activate

# Installeer dependencies
pip install -r requirements.txt

# Start IB
flask --app app:create_app run --host 127.0.0.1 --port 5000

Na het starten navigeer je naar http://127.0.0.1:5000 in je browser. Als alles goed gaat, zie je een simpele pagina. Navigeer naar http://127.0.0.1:5000/dashboard voor het volledige dashboard met alle panelen.

Als je een foutmelding krijgt: controleer of Python 3.8+ is geinstalleerd, of alle dependencies correct zijn geinstalleerd (let op sh, flask-migrate, flask-sqlalchemy, cvss, en pandoc), en of poort 5000 niet al in gebruik is.

Configuratie via environment variabelen:

Variabele Standaard Doel
SECRET_KEY Random gegenereerd Sessie- en CSRF-signing
IB_ADMIN_USER Niet gezet Admin Basic Auth gebruikersnaam
IB_ADMIN_PASSWORD Niet gezet Admin Basic Auth wachtwoord
DASHBOARD_ACCESS_TOKEN Niet gezet Token voor remote dashboard-toegang
PUBLIC_UPLOAD false Uploads toestaan van niet-localhost
PUBLIC_DOWNLOADS false Downloads toestaan van niet-localhost

Voor een typisch lab-scenario is de standaardconfiguratie voldoende. IB luistert op 127.0.0.1:5000 en accepteert alleen lokale verbindingen. Als je IB op een andere machine wilt benaderen (bijvoorbeeld via een SSH-tunnel), stel dan DASHBOARD_ACCESS_TOKEN in en stuur het token mee in de X-Dashboard-Token header.

IB Tip: Draai flask --app app:create_app run --host 0.0.0.0 --port 5000 alleen als je IB bewust toegankelijk wilt maken voor andere machines. Stel in dat geval altijd een DASHBOARD_ACCESS_TOKEN in. Zonder token is het dashboard alleen toegankelijk vanaf localhost.

Eerste stappen na installatie

  1. Stel je IP in – Ga naar het dashboard en configureer je IP-adres (het adres van je aanvalsmachine op het lab-netwerk, bijvoorbeeld http://10.0.0.100). Dit IP wordt gebruikt als placeholder in command files.

  2. Verken de Command Library – Klik door de commando’s. Lees ze. Begrijp wat ze doen voordat je ze uitvoert. Een commando kopieren en plakken zonder het te begrijpen is geen pentest – het is Russisch roulette met iemands netwerk.

  3. Draai een scan – Gebruik de Task Runner om een nmap-scan uit te voeren op je lab-netwerk. Dit is je eerste reconnaissance-stap en geeft je een overzicht van welke systemen en diensten actief zijn.

  4. Maak je eerste finding – Zelfs als je nog niets hebt gevonden, maak een test-finding aan om vertrouwd te raken met het systeem. Vul een CVSS-vector in, voeg evidence toe, en genereer een rapport.

  5. Importeer de standaard-findings – Ga naar /dashboard/findings en gebruik de “Seed” functie om de volledige set standaard finding templates te laden. Deze templates bevatten voorgedefinieerde beschrijvingen, OWASP-classificaties, CWE-nummers, MITRE ATT&CK-mappings en aanbevelingen in zowel het Nederlands als het Engels.

  6. Test de rapportgeneratie – Maak een paar test-findings aan, link ze aan templates, en genereer een rapport via /dashboard/findings/rapport. Bekijk het resultaat. Begrijp hoe de LaTeX-templates worden omgezet naar Markdown. Als het er niet uitziet zoals je wilt, weet je dat nu – niet op de laatste dag van het engagement wanneer de opdrachtgever het rapport morgen verwacht.

De realiteit van bedrijfsnetwerken

Er is een reden dat penetratietesten bijna altijd succesvol zijn. Het is niet omdat pentesters zo briljant zijn – hoewel we onszelf dat graag vertellen na het derde biertje op een conferentie. Het is omdat bedrijfsnetwerken, collectief en consequent, buitengewoon slecht zijn beveiligd.

Niet door gebrek aan budget. Niet door gebrek aan tools. Maar door gebrek aan begrip.

Een gemiddeld bedrijf koopt een firewall van een half miljoen euro, een SIEM dat niemand leest, een EDR-oplossing die elke maand een nieuwe naam krijgt vanwege weer een overname in de beveiligingsindustrie, en een awareness-training die medewerkers leert om niet op verdachte links te klikken – behalve wanneer die link afkomstig is van de CEO die haast heeft, want dan klik je natuurlijk wel.

En ondertussen heeft het service account voor de SQL-server het wachtwoord Summer2019!, is de Domain Admins-groep gevuld met mensen die er zijn toegevoegd “voor die ene keer” en er nooit meer uit zijn gehaald, en staat er een print-server die sinds 2016 niet meer is gepatcht rustig te wachten op een PrintNightmare-exploit.

Het mooiste is nog de jaarlijkse penetratietest. Elk jaar komt er een team, vindt dezelfde dingen, schrijft hetzelfde rapport, en vertrekt weer. De opdrachtgever leest het rapport, schrikt een beetje, belooft beterschap, en legt het rapport in een la. Volgend jaar komt hetzelfde team, vindt dezelfde dingen – plus een paar nieuwe – en de cyclus herhaalt zich. Het is alsof je elk jaar naar de tandarts gaat, te horen krijgt dat je moet flossen, het niet doet, en dan volgend jaar verbaasd bent dat je weer gaatjes hebt.

Het meest cynische aspect is misschien wel de manier waarop bedrijven reageren op een pentest-rapport. De bevindingen met het label “Critical” worden gefixt. Soms. Als het niet te veel kost en als het niet te veel impact heeft op de gebruikers. De bevindingen met het label “High” worden op een lijst gezet. De bevindingen met het label “Medium” worden gelezen en vervolgens vergeten. En de bevindingen met het label “Low” worden beschouwd als features, niet als bugs.

En dan is er die ene organisatie die zegt: “Maar wij zijn niet interessant voor hackers.” Alsof ransomware-groepen een doelgroepanalyse maken voor ze aanvallen. Alsof er een minimum omzeteis geldt voor cybercriminaliteit. Iedereen die een computer heeft en een netwerk dat draait, is een doelwit. De vraag is niet of je wordt aangevallen. De vraag is of je het merkt.

De tools in dit boek – BloodHound, Rubeus, Mimikatz, Impacket, SharpHound – zijn niet magisch. Ze doen precies wat de documentatie zegt. Ze werken omdat de omgevingen waarin ze worden losgelaten vol zitten met configuratiefouten die daar al jaren zitten, die iedereen kent, en die niemand fixt.

De tools in dit boek zijn niet magisch. Ze doen precies wat de documentatie zegt. Ze werken omdat de omgevingen waarin ze worden losgelaten vol zitten met configuratiefouten die daar al jaren zitten, die iedereen kent, en die niemand fixt.

Dat is de werkelijke les van penetratietesten. Het gaat niet om de aanval. Het gaat om de verdediging die er niet was.

Wat je in dit boek zult leren

Dit boek is opgedeeld in hoofdstukken die ruwweg het pad volgen van een netwerkpenetriatietest:

Hoofdstuk Onderwerp ATT&CK Fases
1 Inleiding en lab setup
2 Reconnaissance en scanning Reconnaissance, Discovery
3 Initial Access Initial Access
4 Execution en evasion Execution, Defense Evasion
5 Kerberos-aanvallen Credential Access
6 Privilege escalation Privilege Escalation
7 ADCS-aanvallen Credential Access, Privilege Escalation
8 Lateral movement Lateral Movement
9 Persistence Persistence
10 Pivoting en tunneling Command and Control
11 MSSQL-aanvallen Lateral Movement, Execution
12 Linux in een AD-omgeving Credential Access, Lateral Movement
13 Rapportage en findings

Elk hoofdstuk bevat theorie, praktijkvoorbeelden, IB-commando’s, en verdedigingsmaatregelen. We eindigen elk hoofdstuk met een referentietabel die alle behandelde technieken samenvat met hun MITRE ATT&CK-referenties en bijbehorende IB-commando’s.

De volgorde van hoofdstukken weerspiegelt het pad dat een aanvaller typisch volgt, maar in de praktijk is dat pad zelden lineair. Je springt terug en vooruit. Je vindt iets in de reconnaissance-fase dat je direct brengt bij lateral movement. Je stuit op een ADCS-misconfiguratie terwijl je eigenlijk bezig was met privilege escalation. Dat is normaal. Dat is hoe penetratietesten werken.

Klaar? Open je terminal. Start IB. En laten we beginnen.


Referentietabel Hoofdstuk 1

Onderwerp Techniek / Concept MITRE ATT&CK IB Commando’s
DNS-enumeratie Zone transfer, subdomain enum T1018 recon_dns
Nmap scanning Port scan, service detection T1046 Task Runner: scan, search
Kerberos-enumeratie User enumeration via Kerberos T1558 Task Runner: kerberos
BloodHound AD attack path analyse T1087 ad_bloodhound_collect
Kerberoasting Service ticket kraken T1558.003 kerb_kerberoast
Lateral Movement (WMI) Remote command execution T1047 lateral_wmi
Lateral Movement (PSR) PowerShell Remoting T1021.006 lateral_psremoting
Pass-the-Hash NTLM authenticatie met hash T1550.002 kerb_opth
DCSync AD-replicatie voor credentials T1003.006 ad_dcsync
Golden Ticket Onbeperkte AD-toegang T1558.001 kerb_golden_ticket
ADCS Enumeratie Certificate template enum T1649 adcs_enum
AMSI Bypass AntiMalware Scan Interface T1562.001 amsi_bypass_patch, amsi_bypass_reflection
AppLocker Bypass Application whitelisting T1218 applocker_msbuild, applocker_mshta
Credential Dumping LSASS, SAM, token T1003 cred_lsass_ppldump, cred_sam_dump
Persistence Skeleton Key, DSRM, SDHolder T1098 persist_skeleton_key, persist_dsrm
MSSQL Attacks xp_cmdshell, linked servers T1505 mssql_xpcmdshell, mssql_linked
Tunneling SSH, Chisel, plink T1572 tunnel_ssh_socks, net_chisel_tunnel
CVSS 4.0 Risicobeoordeling IB Findings Management
Rapportgeneratie LaTeX naar Markdown via pandoc /dashboard/findings/rapport