Findings en Rapportage met Incompetent Bastard

Een van de belangrijkste onderdelen van een penetratietest is het documenteren van bevindingen en het genereren van een professioneel rapport. Incompetent Bastard (IB) biedt een compleet systeem voor het aanmaken van findings, het scoren met CVSS 4.0, het beheren van bewijsmateriaal en het automatisch genereren van rapporten in meerdere formaten.

IB – Het findings- en rapportagesysteem is ontworpen om direct vanuit het pentestdashboard te werken, zonder externe tools.

Vereisten

flask --app app:create_app run --host 127.0.0.1 --port 5000

Finding templates

IB wordt geleverd met meer dan 200 finding-templates, gegroepeerd per categorie: Web Application, Active Directory, Windows, Network, Misconfiguration, CWE Top 25, Cloud, Infrastructure, Linux, Authentication, Physical Security en Email Security.

Elke template bevat: titel, NCSC richtlijn, OWASP 2025 mapping, CWE, MITRE ATT&CK technique, CVSS 4.0 vector en basescore, beschrijvingen in Nederlands en Engels, impact, aanbevelingen en referenties.

# Templates opvragen via de API
curl http://127.0.0.1:5000/api/findings/templates

IB – Laad standaard templates via de seed-functie op /dashboard/findings. Dit overschrijft bestaande templates met de meegeleverde set.

Een finding aanmaken

Navigeer naar /dashboard/findings en selecteer een template of maak een lege finding aan. Vul de volgende velden in:

Remediation tracking

Veld Opties
Remediation status open, in_progress, fixed, verified, accepted
Target date Streefdatum voor herstel
Owner Verantwoordelijke persoon
Affected assets Getroffen systemen
Data classification Classificatie van betrokken data
Business impact Zakelijke impact

CVSS 4.0 Calculator

IB bevat een ingebouwde CVSS 4.0 calculator:

curl "http://127.0.0.1:5000/api/cvss4/calculate?vector=CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N"

Response: {"ok": true, "score": 9.3, "severity": "critical"}. De severity mapping: 9.0-10.0 = critical, 7.0-8.9 = high, 4.0-6.9 = medium, 0.1-3.9 = low, 0.0 = none.

IB – De 11 verplichte base metrics zijn: AV, AC, AT, PR, UI, VC, VI, VA, SC, SI, SA.

Bewijsmateriaal beheren

# Evidence uploaden (max 10 MB; PNG, JPEG, PDF, TXT, JSON, etc.)
curl -X POST http://127.0.0.1:5000/api/findings/1/evidence -F "file=@screenshot.png"

# Evidence per finding bekijken
curl http://127.0.0.1:5000/api/findings/1/evidence

# Evidence downloaden
curl -O http://127.0.0.1:5000/api/findings/evidence/1/download

# Alle evidence exporteren als ZIP
curl -O http://127.0.0.1:5000/api/findings/evidence/export

IB – Afbeeldingen die als evidence zijn geupload, worden automatisch opgenomen in het rapport.

Finding relaties

Koppel findings aan elkaar om ketens en duplicaten aan te geven:

# Types: chain, duplicate, related
curl -X POST http://127.0.0.1:5000/api/findings/1/relations \
  -H "Content-Type: application/json" \
  -d '{"related_id": 2, "relation_type": "chain"}'

# Relaties opvragen
curl http://127.0.0.1:5000/api/findings/1/relations

Findings API

# Alle findings (met filtering)
curl "http://127.0.0.1:5000/api/findings?severity=critical&status=final"

# Status updaten
curl -X POST http://127.0.0.1:5000/api/findings/1/status \
  -H "Content-Type: application/json" -d '{"status":"final"}'

# Remediation updaten
curl -X POST http://127.0.0.1:5000/api/findings/1/remediation \
  -H "Content-Type: application/json" \
  -d '{"status":"fixed","target_date":"2026-04-01","owner":"IT Security"}'

# Batch-actie
curl -X POST http://127.0.0.1:5000/api/findings/batch-action \
  -H "Content-Type: application/json" \
  -d '{"ids":[1,2,3],"action":"set_status","value":"final"}'

Notes voor het rapport

Notes zijn aanvullende rapportsecties voor verkenningsresultaten of methodologische opmerkingen:

curl http://127.0.0.1:5000/api/notes
curl -X POST http://127.0.0.1:5000/api/notes/1/toggle-rapport

Notes met rapport: true verschijnen in de sectie “Verkenning & ontdekking”.

Rapport genereren

Stap 1: Metadata instellen

curl -X POST http://127.0.0.1:5000/api/settings \
  -H "Content-Type: application/json" \
  -d '{
    "rapport_titel": "Penetratietest Rapport - Acme B.V.",
    "rapport_auteur": "CertifiedHacker Security",
    "rapport_subtitel": "Webapplicatie Assessment",
    "rapport_classificatie": "TLP:RED",
    "rapport_taal": "nl",
    "rapport_testtype": "pentest",
    "rapport_testscope": "greybox",
    "rapport_isdraft": false,
    "rapport_versie": "1.0",
    "rapport_versie_status": "definitief"
  }'

Beschikbare opties: taal (nl/en), testtype (pentest/redteam), testscope (blackbox/greybox/whitebox), classificatie (TLP 2.0), variant (detailed/executive/board).

Stap 2: Valideren en genereren

# Valideer of alle data compleet is
curl http://127.0.0.1:5000/api/report/validate

# Asynchroon genereren
curl -X POST http://127.0.0.1:5000/api/report/generate \
  -H "Content-Type: application/json" -d '{"include_draft":false}'

# Status pollen
curl http://127.0.0.1:5000/api/report/generate/RUN_ID

Of synchroon via de browser: GET /dashboard/report/generate.

Stap 3: Downloaden

curl -O http://127.0.0.1:5000/api/report/download/pdf    # PDF (vereist xelatex)
curl -O http://127.0.0.1:5000/api/report/download/docx   # DOCX (vereist pandoc)
curl -O http://127.0.0.1:5000/api/report/download/html   # HTML
curl -O http://127.0.0.1:5000/api/report/download/tex    # LaTeX bron
curl -O http://127.0.0.1:5000/api/report/download/md     # Markdown
curl -O http://127.0.0.1:5000/api/report/download/stix   # STIX 2.1
curl -O http://127.0.0.1:5000/api/report/download/sarif  # SARIF 2.1.0
curl -O http://127.0.0.1:5000/api/report/download/pptx   # PowerPoint
curl -O http://127.0.0.1:5000/api/report/download/epub   # EPUB
curl -O http://127.0.0.1:5000/api/report/download/odt    # ODT

Exportformaten

# CSV export voor spreadsheets
curl -O http://127.0.0.1:5000/api/findings/export/csv

# JSON export met volledige catalogusdata
curl http://127.0.0.1:5000/api/findings/export

# Import vanuit JSON
curl -X POST http://127.0.0.1:5000/api/findings/import \
  -H "Content-Type: application/json" -d @findings_export.json

Praktische workflow

  1. Finding aanmaken – selecteer de juiste template op /dashboard/findings
  2. Details invullen – naam, locatie, uitwerking, reproductiestappen
  3. CVSS 4.0 scoren – gebruik de calculator met de juiste vector
  4. Evidence toevoegen – upload screenshots en tool-output
  5. Relaties leggen – koppel gerelateerde findings
  6. Status op final – markeer als definitief
  7. Rapport genereren – stel metadata in, valideer en genereer

Samenvatting

Het IB findings- en rapportagesysteem biedt een complete workflow:

De volledige broncode is beschikbaar op GitHub.