De IB Command Library Beheersen

De Command Library is een van de krachtigste onderdelen van Incompetent Bastard (IB). Met meer dan 460 pre-built commando’s dekt het vrijwel elke fase van een penetratietest: van Active Directory aanvallen en Kerberos-exploitatie tot web application testing en privilege escalation. In deze tutorial leer je de library effectief te doorzoeken, commando’s aan te passen met variabele substitutie, ze te injecteren in screen sessies en je eigen commando’s toe te voegen.

Deze tutorial is uitsluitend bedoeld voor gebruik in geautoriseerde testomgevingen.

Vereisten

IB – De Command Library laadt alle bestanden uit /http/commands/ bij elke API-call. Nieuwe commando’s die je toevoegt verschijnen direct zonder herstart.

Stap 1: Toegang tot de Library

De Command Library is bereikbaar onderaan het dashboard op http://127.0.0.1:5000/ of via de directe route /dashboard/commands. De volledige lijst is ook beschikbaar via de API:

curl -s http://127.0.0.1:5000/api/commands | python3 -m json.tool | head -30

De response bevat een commands array met per element een name (bestandsnaam) en content (commando-inhoud).

Stap 2: Categorieen Overzicht

Commando’s zijn georganiseerd via naamgeving-prefixen. Hier is het complete overzicht:

Prefix Aantal Beschrijving
ad_ 30+ Active Directory aanvallen (BloodHound, DCSync, GenericAll, trusts, forest pivot)
adcs_ 16 Certificate Services exploitatie (ESC1 t/m ESC16)
amsi_ 5 AMSI bypass technieken (CLM, context, patch, reflection, InvisiShell)
applocker_ 3 AppLocker bypass (InstallUtil, MSBuild, MSHTA)
av_ 4 AV evasion (Defender disable, DefenderCheck, NetLoader, Shellter)
coerce_ 7 Auth coercion (PetitPotam, PrinterBug, DFSCoerce, ShadowCoerce)
cred_ 10+ Credential access (LSASS, SAM, NTDS, DPAPI, LAPS, gMSA, Responder)
enum_ 8+ Enumeratie (users, computers, GPOs, shares, delegatie, sessies)
evasion_ 8 Detectie-evasie (ETW patch, event log, MDE bypass, port proxy)
get_ 100+ Tool downloads via PowerShell (mimikatz, rubeus, winpeas, etc.)
get_ie_ 60+ Tool downloads via IE COM object (voor restricted omgevingen)
inject_ 3 Proces injectie (CreateRemoteThread, DLL, hollowing)
kerb_ 8+ Kerberos (kerberoast, asreproast, golden/silver/diamond ticket)
lateral_ 10+ Lateral movement (PsExec, WMI, WinRM, DCOM, SCShell, SMBExec)
linux_ 3 Linux-specifiek (LD_PRELOAD, SSH agent, SSH hijack)
man_ 50+ Tool handleidingen en gebruiksgidsen
mssql_ 4 MSSQL exploitatie (xp_cmdshell, linked servers, UNC inject)
net_ 3 Tunneling (Chisel, DNSCat2)
passwd_ 3 Password aanvallen (brute, spray, wordlist)
persist_ 10 Persistentie (skeleton key, AdminSDHolder, golden cert, GPO)
privesc_ 4 Privilege escalation (AlwaysInstall, UAC bypass, SUID, cron)
ps_ 5 PowerShell cradles (IWR, WebClient, WebRequest, XMLHTTP, COM IE)
recon_ 7 Reconnaissance (DNS, NFS, OSINT, SCCM, SMTP, SNMP, WPScan)
shell_ 2 Shell toegang (powercat, socat)
tunnel_ 4 Tunnels (MSF pivot, netsh, plink, SSH SOCKS)
web_ 20+ Web exploitatie (SQLi, XSS, SSRF, SSTI, XXE, upload bypass)

Highlights per categorie

De adcs_ commando’s dekken alle 16 bekende ADCS escalatieroutes (ESC1-ESC16), elk met de specifieke Certify/Certipy syntax. De get_ en get_ie_ categorieen bevatten samen meer dan 160 tool-download commando’s. De web_ categorie bevat zowel detectie- als exploitatiecommando’s voor OWASP Top 10 kwetsbaarheden.

IB – De man_ prefix bevat handleidingen voor 50+ tools. Zoek op man_rubeus of man_mimikatz voor syntax en voorbeelden.

Stap 3: Zoeken en Filteren

De Command Library biedt een zoekbalk waarmee je commando’s filtert op naam. Voorbeelden:

Via de API kun je ook filteren:

curl -s http://127.0.0.1:5000/api/commands | \
  python3 -c "
import json, sys
data = json.load(sys.stdin)
for cmd in data['commands']:
    if 'kerb' in cmd['name']:
        print(cmd['name'])
"

Stap 4: Kopieren en Opslaan als Note

Elk commando heeft twee knoppen in de UI:

  1. Copy – Kopieert de inhoud naar het klembord
  2. Save as Note – Slaat het commando op als operatornotitie

Notes met “Opnemen in rapport” actief worden meegenomen in de rapportgeneratie. Dit creert een audit trail van gebruikte technieken.

IB – Sla commando’s die je daadwerkelijk gebruikt op als note. Dit is essentieel voor reproduceerbare rapportage.

Stap 5: Variabele Substitutie

Commando’s bevatten placeholders die je vervangt met werkelijke waarden:

Placeholder Betekenis Voorbeeld
YOURIP Je aanvals-IP 10.10.14.5
YOURDOMAIN Het doeldomein corp.local
TARGET Het doelsysteem 10.1.2.50
[host] De localhost URL http://10.10.14.5:5000
USERNAME Gebruikersnaam administrator
DC Domain controller dc01.corp.local

In de UI gebruik je de “Find & Replace” functie. Via de API gebruik je de replacements array:

curl -X POST http://127.0.0.1:5000/api/commands/inject \
  -H "Content-Type: application/json" \
  -d '{
    "screen": "metasploit",
    "command": "kerb_kerberoast",
    "replacements": [
      {"find": "YOURDOMAIN", "replace": "corp.local"},
      {"find": "YOURIP", "replace": "10.10.14.5"}
    ]
  }'

Stap 6: Screen Sessie Injectie

Commando’s kun je direct injecteren in actieve screen sessies. Vraag eerst de beschikbare sessies op:

curl -s http://127.0.0.1:5000/api/commands/screens | python3 -m json.tool

Injecteer vervolgens een commando:

curl -X POST http://127.0.0.1:5000/api/commands/inject \
  -H "Content-Type: application/json" \
  -d '{"screen": "metasploit", "command": "kerb_kerberoast"}'

IB leest het commandobestand, past replacements toe en stuurt de inhoud via screen -S <naam> -X stuff naar de sessie. Je kunt ook bewerkte content direct meesturen:

curl -X POST http://127.0.0.1:5000/api/commands/inject \
  -H "Content-Type: application/json" \
  -d '{
    "screen": "pentest",
    "command": "custom",
    "content": "Invoke-Kerberoast -Domain corp.local | Export-CSV kerb.csv"
  }'

De maximale content-grootte voor injectie is 50 KB.

IB – Start screen sessies met recording via /api/screen/start. Elk geinjecteerd commando wordt automatisch opgenomen voor rapportage.

Stap 7: Eigen Commando’s Toevoegen

Voeg bestanden toe aan /http/commands/ – ze verschijnen automatisch in de library. Gebruik de bestaande prefix-conventie:

cat > http/commands/ad_custom_attack << 'EOF'
# Custom AD Attack
Import-Module PowerView
Get-DomainUser -SPN | Select-Object samaccountname, serviceprincipalname
EOF

Bestandsnamen mogen alleen letters, cijfers, underscore (_) en streepje (-) bevatten. Bestanden met andere tekens worden genegeerd.

Verifieer:

curl -s http://127.0.0.1:5000/api/commands | \
  python3 -c "
import json, sys
data = json.load(sys.stdin)
names = [c['name'] for c in data['commands']]
print(f'Totaal: {len(names)} commando\'s')
"

Stap 8: Praktisch Voorbeeld – Kerberoasting

Compleet voorbeeld van een Kerberoasting-aanval via de Command Library:

1. Zoek de relevante commando’s

Zoek op “kerb” in de library. Je vindt kerb_kerberoast, man_rubeus, man_invoke_kerberoast en get_rubeus.

2. Download Rubeus naar het doelsysteem

curl -X POST http://127.0.0.1:5000/api/commands/inject \
  -H "Content-Type: application/json" \
  -d '{
    "screen": "pentest",
    "command": "get_rubeus",
    "replacements": [{"find": "[host]", "replace": "http://10.10.14.5:5000"}]
  }'

3. Voer de aanval uit

curl -X POST http://127.0.0.1:5000/api/commands/inject \
  -H "Content-Type: application/json" \
  -d '{
    "screen": "pentest",
    "command": "kerb_kerberoast",
    "replacements": [{"find": "YOURDOMAIN", "replace": "corp.local"}]
  }'

4. Documenteer het resultaat

Sla het gebruikte commando op als note en maak een finding aan als je kwetsbare SPN-accounts vindt.

Stap 9: Tips voor Effectief Gebruik

Workflow per pentest-fase

  1. Enumeratie – Begin met enum_ commando’s om het aanvalsoppervlak in kaart te brengen
  2. Tooling – Gebruik get_ commando’s om tools op het doelsysteem te plaatsen
  3. Manuals – Raadpleeg man_ commando’s voor de juiste syntax
  4. Exploitatie – Voer aanvalscommando’s uit (kerb_, ad_, lateral_, web_)
  5. Documentatie – Sla elk gebruikt commando op als note voor het rapport

Screen sessies organiseren

Maak aparte sessies per fase via de IB API:

curl -X POST http://127.0.0.1:5000/api/screen/start \
  -H "Content-Type: application/json" -d '{"name": "recon", "shell": "bash"}'

curl -X POST http://127.0.0.1:5000/api/screen/start \
  -H "Content-Type: application/json" -d '{"name": "exploit", "shell": "bash"}'

Injecteer commando’s vervolgens in de juiste sessie op basis van de fase.

Gecombineerd zoeken

Combineer zoektermen voor snelle resultaten: persist (persistentie), privesc (privilege escalation), evasion (detectie-evasie), tunnel (netwerktunneling).

IB – Bewaar aangepaste commando’s in je eigen git-branch zodat ze bewaard blijven bij updates van IB.

Samenvatting

In deze tutorial hebben we de IB Command Library volledig doorgenomen:

  1. Toegang via het dashboard en de API
  2. De categoriestructuur met 20+ prefixen en 460+ commando’s
  3. Zoeken en filteren op naam en categorie
  4. Kopieren naar klembord en opslaan als operatornotitie
  5. Variabele substitutie met placeholders en find/replace
  6. Screen sessie injectie voor directe commandouitvoering
  7. Eigen commando’s toevoegen aan de library
  8. Een praktisch Kerberoasting-voorbeeld van begin tot eind
  9. Tips voor een efficiente workflow per pentest-fase

De Command Library maximaliseert je productiviteit door commando’s te zoeken, aan te passen en direct te injecteren in werksessies. Combineer het met de payload-generators en het findings-systeem voor een complete pentest-workflow vanuit het IB dashboard.