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

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:

Checklist aanmaken

Via de overzichtspagina

Navigeer naar /dashboard/checklists. Je ziet twee type-kaarten:

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:

Fase 2: Web Enumeratie

Technische fingerprinting van de webapplicatie:

Fase 3: Web Applicatie

De kern van een externe pentest — alle OWASP Top 10 categorieën:

Fase 4: Netwerk Services

Niet-web services testen:

Fase 5: Toegang

Van kwetsbaarheid naar shell:

Fase 6: Post-Exploitation

Na initiële toegang:

Fase 7: Rapportage

Documentatie en oplevering:

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:

Fase 4: Credential Gathering

Fase 5: Privilege Escalation

Fase 6: Lateral Movement

Fase 7: Domain Dominance

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:

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:

Screen-sessie integratie

Als je een terminal screen-sessie hebt draaien, kun je commando’s direct injecteren:

  1. Start een screen-sessie of selecteer een bestaande
  2. Klik “Inject” bij een commando
  3. 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:

  1. Test het item en markeer het als Fail
  2. Context-advies verschijnt: “Bevinding aanmaken”
  3. IB zoekt automatisch matching finding templates op basis van de finding_refs van het item
  4. Kies een template — CVSS score, beschrijving en aanbeveling worden vooraf ingevuld
  5. De inline notitie wordt als evidence toegevoegd aan de bevinding
  6. 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:

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:

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:

Keyboard navigatie respecteert het actieve filter — j/k springt alleen naar zichtbare items.

Tips voor effectief gebruik

Voorbereiding

  1. Maak de checklist aan vóór de test met het juiste type en target
  2. Vul de variabelen in zodra je scope-informatie hebt
  3. Markeer items als N/A die buiten scope vallen

Tijdens de test

  1. Werk per fase — begin bij reconnaissance en werk systematisch door
  2. Leg evidence vast in het notitieveld voordat je de status wijzigt
  3. Maak bevindingen direct aan bij een fail — dan vergeet je geen details
  4. Gebruik keyboard shortcutsn om naar het volgende open item te springen

Rapportage

  1. Filter op Fail voor een overzicht van alle bevindingen
  2. Alle bevindingen zijn al aangemaakt met CVSS score en evidence
  3. 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:

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.