IB Checklists: Gestructureerd Pentesten
De checklist-engine van Incompetent Bastard transformeert een pentest van een ad-hoc proces naar een gestructureerde, herhaalbare workflow. Twee uitgebreide templates — extern en intern — dekken samen meer dan 120 items, georganiseerd per fase, met directe integratie naar commands, findings en rapportage.
Niveau: Expert
Let op — Checklists zijn bedoeld als leidraad, niet als rigide protocol. Een ervaren pentester weet wanneer afwijken van de checklist de juiste keuze is.
Vereisten
- Incompetent Bastard draaiend op je aanvalsmachine
- Basiskennis van web- en netwerkpentesting
- Ervaring met het IB Dashboard en de Command Library
- Een actief pentestproject met gedefinieerde scope
- Bekendheid met MITRE ATT&CK framework
Overzicht
Twee checklist-types
IB biedt twee volledige pentest-templates:
| Type | Fasen | Focus | Typisch gebruik |
|---|---|---|---|
| Extern | 7 fasen | Reconnaissance → Web Applicatie → Post-Exploitation | Webapplicatie pentests, externe infrastructuur |
| Intern | 10 fasen | Network Discovery → Domain Dominance → Persistence | Interne netwerk pentests, AD-assessments |
Item-structuur
Elk checklist-item bevat:
- Titel in Nederlands en Engels (toggle met EN-badge)
- Beschrijving met uitleg en context
- Inline commands met variabele-substitutie
- Command file references — links naar IB Command Library scripts
- Finding references — auto-match met vulnerability templates
- MITRE ATT&CK mapping — tactieken en technieken
Checklist aanmaken
Via de overzichtspagina
Navigeer naar /dashboard/checklists. Je ziet twee
type-kaarten:
- Externe Pentest — reconnaissance, web enumeratie, webapplicatie-testing, services, toegang, post-exploitatie, rapportage
- Interne Pentest — network discovery, services, Active Directory, credentials, privilege escalation, lateral movement, domain dominance, persistence, Linux/cloud, rapportage
Vul het formulier in:
Naam: Pentest Acme Corp Q1 2025
Type: extern
Target: acme.com (optioneel — wordt automatisch ingevuld in variabelen)
Via de API
curl -X POST http://127.0.0.1:5000/api/checklists \
-H "Content-Type: application/json" \
-d '{"naam": "Pentest Acme Corp", "type": "extern", "target": "acme.com"}'Alle items uit het JSON-template worden als open in de
database aangemaakt.
De externe checklist: 7 fasen
Fase 1: Reconnaissance
Passieve en actieve informatieverzameling:
- DNS enumeratie (zone transfers, subdomeinen)
- OSINT (Shodan, Google dorks, LinkedIn)
- SSL/TLS certificaat-analyse
- WHOIS en netblok-informatie
Fase 2: Web Enumeratie
Technische fingerprinting van de webapplicatie:
- Webserver en framework identificatie
- Directory en bestand brute forcing
- CMS-detectie (WordPress, Drupal)
- API endpoint discovery
- Virtual host enumeratie
Fase 3: Web Applicatie
De kern van een externe pentest — alle OWASP Top 10 categorieën:
- SQL Injection (UNION, blind, error-based)
- Cross-Site Scripting (reflected, stored, DOM)
- CSRF, SSRF, XXE
- File upload en path traversal
- Authentication en session management
- Deserialisatie en SSTI
Fase 4: Netwerk Services
Niet-web services testen:
- FTP (anonymous login, versie-kwetsbaarheden)
- SSH (weak credentials, key reuse)
- SMTP (open relay, user enumeration)
- SNMP (community strings, informatielekkage)
Fase 5: Toegang
Van kwetsbaarheid naar shell:
- Exploitatie van gevonden kwetsbaarheden
- Weak credentials en brute force
- Default credentials checken
- Initiële foothold verkrijgen
Fase 6: Post-Exploitation
Na initiële toegang:
- Privilege escalation
- Gevoelige data verzamelen
- Laterale beweging (indien in scope)
- Persistentie-mechanismen identificeren
Fase 7: Rapportage
Documentatie en oplevering:
- Alle bevindingen vastleggen met CVSS scoring
- Evidence en reproductiestappen
- Rapport genereren via IB
De interne checklist: 10 fasen
Fase 1–2: Network Discovery + Services
Live host detectie, port scanning, service versie-identificatie en bekende kwetsbaarheden.
Fase 3: Active Directory
Uitgebreide AD-enumeratie:
- Gebruikers, groepen, GPO’s
- Trust relationships
- ACL-analyse (GenericAll, WriteDACL, WriteOwner)
- Delegation-configuraties
- SPN-enumeratie
Fase 4: Credential Gathering
- LSASS memory dumps
- Kerberoasting en AS-REP Roasting
- LAPS wachtwoorden
- Cached credentials (DCC2)
- DPAPI secrets
- SAM en NTDS.dit dumps
Fase 5: Privilege Escalation
- Service misconfiguraties
- Unquoted service paths
- AlwaysInstallElevated
- UAC bypass
- Token impersonation (Potato-aanvallen)
Fase 6: Lateral Movement
- PSRemoting en WinRM
- WMI en DCOM
- PsExec en SMBExec
- Pass-the-Hash en Pass-the-Ticket
- NTLM relay
Fase 7: Domain Dominance
- DCSync
- Golden en Silver Tickets
- Diamond en Sapphire Tickets
- Trust abuse (child-to-parent, cross-forest)
- ADCS exploitation (ESC1–ESC16)
Fase 8–10: Persistence, Linux/Cloud, Rapportage
Persistence-mechanismen documenteren, Linux post-exploitatie (sudo, SUID, cron, containers), en het eindrapport samenstellen.
Werken met items
Status-workflow
Elk item heeft een van zes statussen:
| Toets | Status | Kleur | Betekenis |
|---|---|---|---|
1 |
Open | Blauw | Nog niet getest |
2 |
Pass | Groen | Getest, geen kwetsbaarheid gevonden |
3 |
Fail | Rood | Kwetsbaarheid gevonden |
4 |
Warn | Amber | Aandachtspunt, niet direct exploiteerbaar |
5 |
Skip | Grijs | Overgeslagen (buiten scope) |
6 |
N/A | Grijs | Niet van toepassing |
Keyboard navigatie
De checklist ondersteunt volledige toetsenbordbesturing:
j / ↓ Volgende item
k / ↑ Vorig item
Enter/Spatie Item uitklappen/inklappen
1–6 Status instellen
n Spring naar volgende open item
? Toon keyboard shortcuts
Item uitklappen
Klik op een item of druk Enter om de details te zien:
- Beschrijving met context en aanwijzingen
- Inline commands — direct kopieerbaar
- Command file previews — scripts uit de Command Library
- Notitieveld — evidence en opmerkingen vastleggen
- Actieknoppen — notitie opslaan, bevinding aanmaken
Variabele-substitutie
De variabelenbalk
Bovenaan de detailpagina staat een sticky balk met invoervelden:
DOMAIN: acme.com IP: 10.10.10.50 PORT: 443
NAMESERVER: 8.8.8.8 USERNAME: admin DC: dc01.acme.local
Als je bij het aanmaken een target hebt opgegeven, worden DOMAIN en
IP automatisch ingevuld. De variabelen worden opgeslagen in
localStorage per checklist.
Automatische vervanging
Overal waar een commando DOMAIN, IP of
PORT bevat, wordt dit real-time vervangen:
Template:
dig axfr DOMAIN @NAMESERVER
nmap -sV -p PORT IP
Na invullen:
dig axfr acme.com @8.8.8.8
nmap -sV -p 443 10.10.10.50
Vervangen variabelen worden groen gemarkeerd. Dit werkt zowel voor inline commands als voor command file previews.
Command Library integratie
Command references
Items bevatten referenties naar scripts in de IB Command Library.
Bijvoorbeeld het item “DNS enumeratie” verwijst naar
recon_dns.
Bij het uitklappen zie je:
- Preview van het command file met variabele-substitutie
- Kopieerknop per regel
- Inject-knop — stuurt het commando naar een actieve screen-sessie
Screen-sessie integratie
Als je een terminal screen-sessie hebt draaien, kun je commando’s direct injecteren:
- Start een screen-sessie of selecteer een bestaande
- Klik “Inject” bij een commando
- Het commando verschijnt in je terminal — klaar om uit te voeren
Finding-integratie
Van fail naar bevinding
Dit is de krachtigste workflow van de checklist-engine:
- Test het item en markeer het als
Fail - Context-advies verschijnt: “Bevinding aanmaken”
- IB zoekt automatisch matching finding templates op
basis van de
finding_refsvan het item - Kies een template — CVSS score, beschrijving en aanbeveling worden vooraf ingevuld
- De inline notitie wordt als evidence toegevoegd aan de bevinding
- Het item toont een badge met de finding status en CVSS score
Voorbeeld workflow
Je test SQL Injection op een loginformulier:
1. Item "SQL Injection" → voer tests uit
2. Notitie: "Parameter 'username' kwetsbaar voor UNION-based SQLi.
Payload: ' UNION SELECT 1,2,username,password FROM users--"
3. Status → Fail (toets 3)
4. Klik "Bevinding aanmaken"
5. Template "SQL Injection" geselecteerd → CVSS 8.6
6. Bevinding aangemaakt met evidence
De bevinding is direct beschikbaar in het Findings-dashboard voor verdere bewerking en rapportage.
Notities aanmaken
Naast bevindingen kun je ook losse notities aanmaken vanuit een checklist-item:
- Klik “Notitie aanmaken” bij een uitklapt item
- Er wordt een
db_notesrecord aangemaakt met de beschrijving, commands en je inline notitie - Handig voor items die geen finding zijn maar wel documentatie verdienen
Voortgang bijhouden
Progress bars
Elke fase toont een voortgangsbalk:
[Fase 3: Web Applicatie] ████████░░░░ 65% (10/15 items afgewerkt)
De overall voortgang wordt bovenaan de pagina getoond met KPI’s:
- Totaal aantal items
- Afgewerkte items
- Voortgangspercentage
Fase-navigatie
De sticky navigatiebalk toont alle fasen als genummerde knoppen. Voltooide fasen worden automatisch ingeklapt. De eerste fase met open items wordt gemarkeerd als actief.
Filtering
De filterbalk laat je snel focussen:
- All — alle items
- Open — nog te testen items
- Fail — gevonden kwetsbaarheden
- Warn — aandachtspunten
Keyboard navigatie respecteert het actieve filter —
j/k springt alleen naar zichtbare items.
Tips voor effectief gebruik
Voorbereiding
- Maak de checklist aan vóór de test met het juiste type en target
- Vul de variabelen in zodra je scope-informatie hebt
- Markeer items als N/A die buiten scope vallen
Tijdens de test
- Werk per fase — begin bij reconnaissance en werk systematisch door
- Leg evidence vast in het notitieveld voordat je de status wijzigt
- Maak bevindingen direct aan bij een fail — dan vergeet je geen details
- Gebruik keyboard shortcuts —
nom naar het volgende open item te springen
Rapportage
- Filter op Fail voor een overzicht van alle bevindingen
- Alle bevindingen zijn al aangemaakt met CVSS score en evidence
- Genereer het rapport via het Findings-dashboard
Eigen checklists uitbreiden
De checklist-templates staan in
meuk/flask/db/checklists.json. Je kunt items toevoegen:
{
"id": "ext_webapp_016",
"title": "Prototype Pollution",
"en_title": "Prototype Pollution",
"description": "Test JavaScript objecten op prototype pollution...",
"en_description": "Test JavaScript objects for prototype pollution...",
"commands": [
"curl -X POST http://DOMAIN/api -d '{\"__proto__\":{\"admin\":true}}'",
"node -e \"console.log(({}).admin)\" // check pollution"
],
"command_refs": ["web_prototype_pollution"],
"finding_refs": ["Prototype Pollution"],
"tools": ["curl", "Burp Suite"],
"mitre_attack": ["T1059"]
}Na het toevoegen verschijnt het item automatisch in nieuwe checklists van dat type.
Samenvatting
De IB checklist-engine biedt:
- Twee uitgebreide templates voor externe en interne pentests
- 120+ items met inline commands, finding templates en MITRE ATT&CK mapping
- Variabele-substitutie voor scope-specifieke commando’s
- Keyboard-first workflow — navigeer en scoor zonder de muis
- Directe finding-integratie — van fail naar CVSS-scored bevinding in drie klikken
- Screen-sessie injectie — commando’s direct naar je terminal
- Voortgangstracking — per fase en overall, met filtermogelijkheden
De checklists zijn geen vervanging voor kennis en ervaring, maar ze zorgen ervoor dat je niets vergeet en dat je resultaten herhaalbaar en documenteerbaar zijn.