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
- Een draaiende IB instance op
http://127.0.0.1:5000 - Het dashboard bereikbaar in je browser
- Basiskennis van penetratietechnieken
- Optioneel:
screengeinstalleerd voor sessie-injectie
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 -30De 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:
kerb– Alle Kerberos-gerelateerde commando’sadcs_esc– Alle ADCS escalatie routeslateral– Alle lateral movement techniekenget_mimikatz– Specifiek commandoweb_sqli– SQL injection commando’s
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:
- Copy – Kopieert de inhoud naar het klembord
- 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.toolInjecteer 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
EOFBestandsnamen 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
- Enumeratie – Begin met
enum_commando’s om het aanvalsoppervlak in kaart te brengen - Tooling – Gebruik
get_commando’s om tools op het doelsysteem te plaatsen - Manuals – Raadpleeg
man_commando’s voor de juiste syntax - Exploitatie – Voer aanvalscommando’s uit
(
kerb_,ad_,lateral_,web_) - 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:
- Toegang via het dashboard en de API
- De categoriestructuur met 20+ prefixen en 460+ commando’s
- Zoeken en filteren op naam en categorie
- Kopieren naar klembord en opslaan als operatornotitie
- Variabele substitutie met placeholders en find/replace
- Screen sessie injectie voor directe commandouitvoering
- Eigen commando’s toevoegen aan de library
- Een praktisch Kerberoasting-voorbeeld van begin tot eind
- 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.