Een handleiding voor tekstbestanden zonder extensie die je beste vrienden worden. Of je ergste nachtmerrie, afhankelijk van welke kant van de firewall je zit.
Laten we eerlijk zijn. Het is donderdagavond, je zit achter je scherm, je hebt net een shell gekregen op een machine waarvan de systeembeheerder dacht dat-ie veilig was omdat het wachtwoord “Welkom2024!” was, en nu denk je: en nu?
Precies. En nu.
De Command Library is een verzameling platte tekstbestanden — zonder extensie, want we zijn hier niet bij een boekenclub — die je in de Incompetent Bastard-webapp kunt bekijken, filteren, en met een druk op de knop in je terminal kunt injecteren. Het is het verschil tussen “ik weet dat ik iets met Rubeus moet doen” en daadwerkelijk het juiste commando voor je neus hebben. Zonder te hoeven googlen. Zonder Reddit. Zonder die ene blogpost uit 2019 die niet meer laadt omdat de auteur zijn domein niet heeft verlengd.
Elk bestand bevat commando’s, uitleg in het Nederlands, en tips. Kopieer ze, plak ze, pas de placeholders aan (ATTACKER_IP, TARGET_IP, DOMAIN, etc.) en je bent onderweg. Het is alsof iemand al je aantekeningen van de afgelopen vijf jaar heeft verzameld, geordend, en in een doorzoekbare interface heeft gestopt. Behalve dat jouw aantekeningen een onleesbaar handschrift hadden en op de achterkant van kassabonnen stonden. Deze zijn beter.
http/commands/
Dat is het. Geen submappen. Geen YAML. Geen JSON. Geen XML. Geen configuratiebestanden die naar andere configuratiebestanden verwijzen die naar een database verwijzen die naar een cloudservice verwijst. Platte tekst. De bestandsnaam is de categorie. kerb_kerberoast zit bij Kerberos. web_sqli_union zit bij Web: SQL Injection. Het is zo simpel dat het bijna verdacht is, als een gratis parkeerplaats in het centrum — je kijkt drie keer of er geen bord staat dat je over het hoofd hebt gezien.
De webapp groepeert ze automatisch op prefix. Open de Command Library pagina of de Screen Terminal sidebar en je ziet ze netjes onder opvouwbare headers staan. Er is een zoekbalk. Die werkt. Dat klinkt als het minimum. Dat ís het minimum. Maar het is meer dan je van de meeste zoekbalken kunt zeggen.
recon_Eerst kijken, dan pas aanraken. Je moeder had gelijk. Over dit specifieke onderwerp, in elk geval.
Voordat je ergens binnenkomt, moet je weten waar de deuren zijn. En de ramen. En dat ene ventilatierooster waar niemand aan heeft gedacht maar waar jij doorheen past als je inademt.
| Bestand | Wat het doet |
|---|---|
recon_osint | Open source intelligence: theHarvester, recon-ng, Shodan, Google dorks, certificaat-transparantie. Het internet vertelt je meer over een organisatie dan hun eigen IT-afdeling weet. Dat is geen grap. Dat is een constatering. En een beetje triest. |
recon_dns | DNS zone transfers, dnsrecon, dnsenum, reverse DNS sweeps. DNS is het telefoonboek van het internet, en sommige telefoonboeken liggen gewoon open op straat. Je hoeft ze alleen maar op te rapen. |
recon_snmp | SNMP community strings uitproberen en MIB-bomen uitlezen. Gebruikers, processen, poorten, geïnstalleerde software — als SNMP openstaat, vertelt het je alles. Het is het digitale equivalent van een verdachte die spontaan een bekentenis aflegt zonder dat je een vraag hebt gesteld. |
recon_smtp | SMTP user enumeratie via VRFY, EXPN en RCPT TO. De mailserver bevestigt welke gebruikers bestaan. Dat is geen bug, dat is een feature uit 1982. En niemand heeft hem sindsdien uitgezet. |
recon_nfs | NFS shares enumereren en mounten. Inclusief UID spoofing, want NFS vertrouwt op een getal om te bepalen wie je bent. Dat is alsof een nachtclub je binnenlaat op basis van je schoenmaat. Maat 43? Welkom. Maat 42? Helaas. |
recon_wpscan | WordPress scannen op kwetsbare plugins, thema’s en gebruikers. WordPress is het zwembad waarin 43% van het internet zwemt. De chloor is op. De badmeester is naar huis. En de glijbaan heeft geen reling. |
enum_Je bent binnen. Tijd om rond te kijken alsof je in een museum bent waar je niet mag fotograferen — maar je doet het toch. Met een professionele camera. En een statief.
| Bestand | Wat het doet |
|---|---|
enum_domain_users | Alle domeingebruikers ophalen via PowerView en AD Module. Wie zijn er allemaal, wat staat er in hun description-veld (spoiler: soms wachtwoorden), en wie heeft er al zes maanden niet ingelogd maar heeft nog steeds Domain Admin-rechten? |
enum_domain_groups | Groepen enumereren. Wie zit er in Domain Admins? Wie zit er in Enterprise Admins? Wie heeft iemand per ongeluk in beide gestopt en is dat vergeten? |
enum_domain_computers | Alle computers in het domein. Besturingssysteem, versie, of ze online zijn. Een inventarislijst die de IT-afdeling zelf niet heeft. Jij hebt hem nu wel. Gefeliciteerd. Je bent beter geïnformeerd dan de systeembeheerder. |
enum_domain_trusts | Trust relaties tussen domeinen. Eenrichtingsverkeer, tweerichtingsverkeer, forest trusts. Het wegennetwerk van Active Directory. En net als bij een echt wegennetwerk zijn er meer sluiproutes dan de ontwerper had bedoeld. |
enum_domain_gpo | Group Policy Objects. Wat wordt er afgedwongen, waar, en heeft iemand per ongeluk een wachtwoord in een GPO-preference gezet? Ja. Iemand heeft dat gedaan. Het is altijd iemand. En die iemand weet het niet eens meer. |
enum_shares_files | SMB shares vinden en doorzoeken op interessante bestanden. Configuratiebestanden, scripts met hardcoded credentials, dat soort cadeautjes die je vindt als je lang genoeg zoekt in de la van een ander. |
enum_user_hunting | Waar zijn de Domain Admins ingelogd? Welke machines hebben sessies van high-value targets? De jacht is geopend. Geen oranje hesje nodig. |
enum_privesc_local | Lokale privilege escalation checks: services, scheduled tasks, unquoted paths, writable directories. Alles wat PowerUp en winPEAS ook vinden, maar dan overzichtelijk bij elkaar. |
enum_windows | Basis Windows enumeratie: whoami, systeminfo, netstat, tasklist. Het eerste wat je doet als je een shell hebt. Elke keer. Het is het “goedemorgen” van de pentester aan een nieuwe machine. |
ad_Het hart van elk bedrijfsnetwerk. Gebouwd in de jaren ’90, onderhouden met de zorgvuldigheid van een student die zijn kamer opruimt vijf minuten voordat zijn ouders aanbellen.
| Bestand | Wat het doet |
|---|---|
ad_genericall | GenericAll-misbruik: als je GenericAll hebt op een object, kun je er alles mee doen. Wachtwoord resetten, groepslidmaatschap wijzigen, de hele santenkraam. Het is de sleutel die op alle deuren past, en iemand heeft hem in je schoot laten vallen. |
ad_writedacl | WriteDACL-misbruik: jezelf DCSync-rechten geven via de ACL. Alsof je jezelf een VIP-pas schrijft voor het concert. In je eigen handschrift. En de beveiliging het accepteert. |
ad_enum_acl | ACL-enumeratie met PowerView. Wie heeft welke rechten op welke objecten? Dit is waar je de misconfiguraties vindt die niemand bedoeld heeft maar die al drie jaar bestaan. |
ad_dcsync | DCSync: Mimikatz vraagt de Domain Controller om wachtwoord-hashes alsof het een legitieme replicatiepartner is. De DC geeft ze gewoon. Elke keer weer. Zonder vragen. Als een automaat die gratis snoep uitdeelt aan iedereen die op de juiste knop drukt. |
ad_bloodhound_collect | SharpHound data verzamelen voor BloodHound. Alle relaties in het domein in een grafiekdatabase stoppen en dan het kortste pad naar Domain Admin zoeken. Het is Google Maps voor privilege escalation. |
ad_enum_ldap_raw | LDAP-enumeratie zonder PowerView. Puur met [adsisearcher] en ldapsearch. Voor als je geen tools kunt uploaden maar wel PowerShell hebt. Improviseren met wat je hebt — het kenmerk van een echte professional. Of een student. Het verschil is het contract. |
ad_trust_child_to_parent | Van een child domain naar het parent domain escaleren via sIDHistory en het krbtgt-trust-account. AD vertrouwt zijn kinderen. Dat is lief. Dat is ook dom. |
ad_trust_cross_forest | Cross-forest aanvallen. Wat je kunt doen als er een trust is tussen twee forests. Minder dan child-to-parent, maar genoeg om je opdrachtgever bleek te laten worden. |
adcs_Active Directory Certificate Services: het PKI-systeem dat niemand begrijpt en iedereen heeft geïnstalleerd omdat “het erbij zat.” Dat is ook de reden waarom de meeste mensen een fitness-app op hun telefoon hebben.
| Bestand | Wat het doet |
|---|---|
adcs_enum | Certificaat-templates enumereren met Certify en Certipy. Welke templates zijn kwetsbaar? Wie mag er certificaten aanvragen? Meestal iedereen. Dat is het probleem. |
adcs_esc1 | ESC1: een template die client authentication toestaat én je een alternatieve SAN laat opgeven. Vraag een certificaat aan als Domain Admin. Klaar. Het is zó eenvoudig dat je je afvraagt waarom het niet standaard geblokkeerd is. Het antwoord is: backwards compatibility. De twee meest gevaarlijke woorden in IT. |
adcs_esc3 | ESC3: enrollment agents misbruiken om namens iemand anders certificaten aan te vragen. Je bent niet jezelf vandaag. Je bent de Domain Admin. |
adcs_esc6 | ESC6: de EDITF_ATTRIBUTESUBJECTALTNAME2 flag staat aan op de CA. Elke certificaataanvraag kan een willekeurige SAN bevatten. Het is een all-you-can-eat buffet van identiteitsfraude. |
kerb_Het authenticatieprotocol dat vernoemd is naar de driekoppige hellehond uit de Griekse mythologie. Dat had een waarschuwing moeten zijn. Drie koppen. Drie manieren om gebeten te worden.
| Bestand | Wat het doet |
|---|---|
kerb_kerberoast | Kerberoasting: TGS-tickets aanvragen voor service accounts en offline kraken. Het wachtwoord van een service account dat in 2017 is aangemaakt en sindsdien niet is gewijzigd? Dat valt te kraken. Waarschijnlijk vóór de lunch. |
kerb_asreproast | AS-REP Roasting: accounts zonder Kerberos pre-authenticatie. Ze sturen je een hash zonder dat je een wachtwoord nodig hebt. Het is een cadeautje. Ongepakt. Met een strik. En je naam erop. |
kerb_targeted_kerberoast | Targeted Kerberoasting: zélf een SPN op een account zetten (als je GenericAll/GenericWrite hebt) en dan Kerberoasten. Gemeen, maar effectief. Zoals de meeste goede strategieën. |
kerb_golden_ticket | Golden Ticket: met het krbtgt-wachtwoord maak je je eigen TGT’s. Je bent God. Tot iemand het krbtgt-wachtwoord twee keer reset. Dat gebeurt bijna nooit. God is geduldig. |
kerb_silver_ticket | Silver Ticket: TGS-tickets vervalsen voor specifieke services. Minder opvallend dan een Golden Ticket, want je praat niet eens met de DC. Het is de stille variant. De introvert onder de tickets. |
kerb_diamond_ticket | Diamond Ticket: een echt TGT opvragen en dan de PAC aanpassen. Moeilijker te detecteren dan goud of zilver. Het is het juweel in de kroon. En de kroon is niet van jou. Maar dat weet niemand. |
kerb_constrained | Constrained Delegation misbruik via S4U2Self en S4U2Proxy. Als een service “namens jou” mag handelen, kan een aanvaller dat ook. Delegeren is vertrouwen. Vertrouwen is kwetsbaar. |
kerb_unconstrained | Unconstrained Delegation: de Printer Bug triggeren zodat een DC zijn TGT naar jouw machine stuurt. Bedankt, DC. Heel aardig. Had je niet hoeven doen. Maar je deed het toch. |
kerb_rbcd | Resource-Based Constrained Delegation: een computeraccount aanmaken en dan de msDS-AllowedToActOnBehalfOfOtherIdentity instellen. Het klinkt ingewikkeld. Het is het ook. Maar het werkt. En als het werkt, maakt het niet uit hoe het klinkt. |
kerb_opth | Overpass-the-Hash: een NTLM-hash gebruiken om een Kerberos-ticket aan te vragen. Het beste van twee werelden. Of het slechtste, afhankelijk van wiens perspectief je hanteert. |
amsi_De Antimalware Scan Interface. Microsoft’s poging om PowerShell-misbruik tegen te gaan. Het werkt. Tot je het uitzet. Wat je gaat doen. Waarvoor deze bestanden bestaan.
| Bestand | Wat het doet |
|---|---|
amsi_bypass_reflection | AmsiContext null pointer zetten via .NET reflection. Vier regels code en AMSI denkt dat alles in orde is. Het is het equivalent van de rookmelder afplakken met tape. De rookmelder werkt nog steeds. Hij ziet alleen niets meer. |
amsi_bypass_patch | AmsiScanBuffer patchen in het geheugen. Je overschrijft de functie zodat die altijd “alles is veilig” teruggeeft. De digitale versie van de bewaker omkopen. |
amsi_bypass_context | AmsiInitialize context naar null zetten. Een variatie op hetzelfde thema. Want als één methode niet werkt, heb je er graag nog eentje achter de hand. En nog eentje. En nog eentje. |
amsi_bypass_clm | Constrained Language Mode omzeilen via een custom PowerShell runspace. Microsoft dacht dat het beperken van PowerShell-commando’s het probleem zou oplossen. Dat is alsof je een kind verbiedt om via de voordeur naar buiten te gaan en dan verbaasd bent dat het via het raam klimt. |
amsi_invisishell | InvisiShell: AMSI en ScriptBlock logging uitschakelen zonder de reguliere patches. Onzichtbaar. Stil. Elegant. Drie woorden die je zelden in dezelfde zin als “PowerShell” aantreft. |
av_Antivirussoftware: het slot op de voordeur terwijl het raam openstaat. En de achterdeur. En het dakraam. Maar het slot is er. En het is een goed slot.
| Bestand | Wat het doet |
|---|---|
av_defendercheck | DefenderCheck/ThreatCheck: binaries analyseren om te vinden welke bytes de detectie triggeren. Dan die bytes aanpassen. Kat-en-muisspel. De kat wordt slimmer. De muis ook. En jij zit ertussenin met een toetsenbord en een deadline. |
av_netloader | NetLoader: .NET assemblies in-memory laden via een versleuteld kanaal. Niets raakt de schijf. Niets wordt gescand. Het is alsof je door een huis loopt zonder de vloer aan te raken. Moeilijk. Maar niet onmogelijk. |
av_shellter | Shellter: shellcode injecteren in een legitieme PE-executable. De executable werkt nog steeds, maar doet nu ook iets extra’s. Het is een Trojaans paard. Letterlijk. De Grieken zouden trots zijn. |
av_hta | HTA-payloads via mshta.exe. Een Microsoft-binary die HTML-applicaties uitvoert. Het is een feature. Geen bug. Dat blijven ze zeggen. Al twintig jaar. Met steeds minder overtuiging. |
applocker_AppLocker: de uitsmijter die alleen controleert of je naam op de lijst staat, maar niet of het echt jij bent. Als je zegt dat je “MSBuild” heet, mag je naar binnen.
| Bestand | Wat het doet |
|---|---|
applocker_mshta | Mshta.exe: een door Microsoft ondertekende binary die VBScript uitvoert. AppLocker vindt het prima. Het is ondertekend. Het is vertrouwd. Het voert je shellcode uit. Geen vragen. |
applocker_installutil | InstallUtil.exe: een .NET-installer die code uitvoert in de Install()-methode. Bedoeld voor installatiescripts. Gebruikt voor shells. Het verschil is intentie, en computers begrijpen geen intentie. |
applocker_msbuild | MSBuild.exe: de build-tool die inline C#-taken uitvoert. Je bouwt geen software. Je bouwt een shell. MSBuild maakt het verschil niet. MSBuild bouwt gewoon. |
cred_Wachtwoorden ophalen uit plaatsen waar ze niet hadden moeten liggen. Wat — eerlijk gezegd — overal is. Het is alsof je zoekt naar stof in een huis. Je vindt het overal. Het enige wat varieert is de hoeveelheid.
| Bestand | Wat het doet |
|---|---|
cred_minidump | LSASS dumpen via comsvcs.dll en rundll32. Geen extra tools nodig — het zit al op de machine. De machine levert je de sleutels. Je hoeft ze alleen maar aan te pakken. |
cred_sam_dump | SAM en SYSTEM registry hives kopiëren en offline kraken. De lokale wachtwoorddatabase van Windows. Op de machine. Onversleuteld beschikbaar als je SYSTEM bent. Wat je straks bent. |
cred_lsass_ppldump | LSASS dumpen als PPL (Protected Process Light) is ingeschakeld. Iets lastiger, maar niet onmogelijk. Niets is onmogelijk. Sommige dingen zijn alleen onhandig. |
cred_token_impersonate | Token impersonation: de security token van een andere gebruiker stelen en die identiteit aannemen. Windows maakt het makkelijker dan het zou moeten zijn. Aanzienlijk makkelijker. Verontrustend makkelijker. |
inject_Code uitvoeren in het geheugen van een ander proces. Want als notepad.exe verbinding maakt met het internet, valt dat minder op dan je_payload.exe. Niet veel minder. Maar minder.
| Bestand | Wat het doet |
|---|---|
inject_createremotethread | De klassieker: VirtualAllocEx, WriteProcessMemory, CreateRemoteThread. Het Hello World van process injection. Iedereen begint hier. Sommigen blijven hier. Dat is prima. |
inject_dll | DLL injection via LoadLibrary. Je laat een ander proces jouw DLL laden. Het proces heeft er niet om gevraagd. Het proces heeft geen keuze. Het proces is notepad.exe en het heeft nu bijzondere vaardigheden. |
inject_hollowing | Process hollowing: een legitiem proces starten, het geheugen leeghalen, en je eigen code erin stoppen. Het is alsof je de motor uit een Volvo haalt en er een Ferrari-motor in zet. De buitenkant ziet er nog steeds uit als een Volvo. Maar hij gaat iets harder. |
lateral_Van machine A naar machine B. Reizen door een netwerk alsof het een treinnetwerk is, behalve dat niemand je kaartje controleert en er geen vertraging is. Dus eigenlijk helemaal niet als een treinnetwerk.
| Bestand | Wat het doet |
|---|---|
lateral_wmi | WMI: Windows Management Instrumentation. Processen starten op een remote machine via een ingebouwd beheermechanisme. Het is bedoeld voor systeembeheer. Het is ook heel geschikt voor systeemmisbruik. Het verschil is documentatie. |
lateral_psremoting | PowerShell Remoting: Enter-PSSession en Invoke-Command. Alsof je SSH doet, maar dan met meer XML. Veel meer XML. Een ongezonde hoeveelheid XML. |
lateral_scm | Service Control Manager: een service aanmaken op een remote machine die jouw payload uitvoert. De machine start je code op als een dienst. Letterlijk. |
lateral_dcom | DCOM via MMC20.Application: een COM-object op een remote machine aanroepen dat een commando uitvoert. Het is een ingebouwde Windows-functie. Bedankt, Windows. |
lateral_dcom_excel | DCOM via Excel.Application: als Office geïnstalleerd is, kun je Excel misbruiken om code uit te voeren op een remote machine. Spreadsheets zijn gevaarlijker dan je denkt. En je denkt al dat ze gevaarlijk zijn. |
lateral_winrm | WinRM met evil-winrm: een comfortabele shell via het Windows Remote Management protocol. “Comfortabel” en “shell” in dezelfde zin — dat krijg je niet vaak. |
linux_Want niet alles draait op Windows. Soms is het een Linux-machine. En die heeft zijn eigen charmes. En zijn eigen problemen. Vooral zijn eigen problemen.
| Bestand | Wat het doet |
|---|---|
linux_ssh_hijack | SSH ControlMaster hijacking: als iemand een SSH-sessie open heeft staan met multiplexing, kun je die overnemen. Het is carjacking, maar dan voor terminals. |
linux_ssh_agent | SSH Agent forwarding misbruiken: als een gebruiker zijn SSH-agent forwardt, kun je die gebruiken om naar andere machines te springen. Hij bedoelde het als gemak. Jij gebruikt het als toegang. Context is alles. |
linux_ansible_enum | Ansible credential- en playbook-enumeratie. Ansible slaat soms wachtwoorden op in vault-bestanden. Soms onversleuteld. “Soms” is in de beveiliging een synoniem voor “vaak genoeg om het te proberen.” |
linux_ldpreload | LD_PRELOAD injection: een shared library laden vóór elk programma. Als je /etc/ld.so.preload kunt schrijven, is het voorbij. Niet bijna voorbij. Voorbij. |
privesc_Van gewone gebruiker naar beheerder. De meeste systemen zijn niet gehackt door de voordeur in te trappen. Ze zijn gehackt door via de achterdeur binnen te komen en dan de trap op te lopen. Met pantoffels. Zonder geluid.
| Bestand | Wat het doet |
|---|---|
privesc_uac_bypass | UAC omzeilen via fodhelper.exe, eventvwr.exe, of computerdefaults.exe. Microsoft’s beveiligingsprompt die je kunt skippen als je weet waar je moet klikken. Het is een gordel die je met één hand open kunt maken. |
privesc_alwaysinstall | AlwaysInstallElevated: als deze registry key aanstaat, kun je een MSI-pakket installeren dat als SYSTEM draait. Wie heeft dat aangezet? Niemand weet het. Het staat aan. Het staat al jaren aan. Niemand heeft het ooit uitgecheck. |
privesc_linux_cron | Linux privesc via cron jobs, SUID binaries, capabilities, sudo misconfiguraties en writable /etc/passwd. Linux is “veilig.” Tussen aanhalingstekens. Grote aanhalingstekens. |
passwd_Wachtwoorden raden. Het klinkt primitief. Het werkt verrassend vaak. Dat zegt meer over wachtwoorden dan over de techniek.
| Bestand | Wat het doet |
|---|---|
passwd_wordlist | Woordlijsten genereren met crunch, cewl en John the Ripper rules. Omdat “Summer2024!” precies het soort wachtwoord is dat een mens zou kiezen. En “Winter2024!” in januari. En “Lente2025!” in maart. Je kent het patroon. De computer ook. |
passwd_spray | Password spraying: één wachtwoord proberen tegen alle gebruikers in het domein. Met lockout-awareness, want we zijn professionals, geen barbaren. Er is een verschil. Het verschil is dat professionals hun lockout-drempel respecteren. |
passwd_brute | Brute force tegen netwerkservices: SSH, RDP, FTP, SMB, HTTP. Met medusa, hydra, crowbar en ncrack. Plus offline hash cracking met John en Hashcat. De volledige gereedschapskist voor het openbreken van digitale sloten. |
persist_Je bent binnen. Je wilt er blijven. Want terugkomen is lastiger dan binnenkomen. Net als bij een feestje waar je te laat arriveert — de deur is dan op slot.
| Bestand | Wat het doet |
|---|---|
persist_skeleton_key | Skeleton Key: LSASS patchen op de DC zodat het wachtwoord “mimikatz” werkt voor elke gebruiker. Subtiel is anders. Maar het wérkt. En soms is werken belangrijker dan subtiel zijn. |
persist_adminsdholder | AdminSDHolder: jezelf toevoegen aan een object dat elke 60 minuten de ACL’s van privileged groepen overschrijft. Je rechten komen vanzelf terug. Elke uur. Als een abonnement dat je niet kunt opzeggen. |
persist_dsrm | DSRM: het Directory Services Restore Mode wachtwoord misbruiken om in te loggen op de DC. Een nooduitgang die ook als noodingang werkt. Dubbelzijdig. Praktisch. |
persist_security_descriptors | Security Descriptors aanpassen: WMI, PowerShell Remoting of registry rechten geven aan een ongeautoriseerde gebruiker. Na de eerste keer heb je geen admin-sessie meer nodig. Het is een zelf-onderhoudend systeem. |
persist_custom_ssp | Custom Security Support Provider: een DLL laden in LSASS die alle wachtwoorden in plaintext logt. Alles. Elke keer als iemand inlogt. Het is een dagboek dat de machine voor je bijhoudt. Een heel persoonlijk dagboek. |
shell_De verbinding terug naar jouw machine. Want een shell is pas een shell als je erin kunt typen. Anders is het gewoon een venster waar je naar kijkt.
| Bestand | Wat het doet |
|---|---|
shell_socat | Socat met SSL-versleuteling. Een reverse shell die eruitziet als normaal HTTPS-verkeer. De IDS ziet het. De IDS denkt dat het legitiem is. De IDS heeft ongelijk. |
shell_powercat | Powercat: netcat in PowerShell. Inclusief base64-encoded payloads en relay-functionaliteit. Het is netcat, maar dan in een taal die Windows begrijpt. En dat is zowel het probleem als de oplossing. |
En dan zijn er de klassiekers die er al waren: bashtcp1-3, bashudp1, shudp1 en de diverse msf- en ps-varianten. Ze zijn er. Ze werken. Ze vragen niet om erkenning.
tunnel_Je hebt een machine. Maar de machines die je écht wilt bereiken zitten achter een firewall. Tijd om een tunnel te graven. Geen schep nodig. Alleen een terminal.
| Bestand | Wat het doet |
|---|---|
tunnel_ssh_socks | SSH dynamic SOCKS proxy met proxychains. Eén commando en je kunt het hele interne netwerk scannen. Het is als een periscoop, maar dan voor netwerken. |
tunnel_netsh | Windows netsh portproxy: port forwarding met een ingebouwde Windows-tool. Geen uploads nodig. Het zit er al. Het was er altijd al. Het wacht op je. |
tunnel_plink | Plink: PuTTY’s command-line SSH-client. Voor wanneer je op Windows zit en SSH wilt tunnelen. Het is niet elegant. Het is functioneel. En functioneel wint het altijd van elegant als het twee uur ’s nachts is. |
tunnel_msf_pivot | Metasploit autoroute + SOCKS proxy + portfwd. De complete pivoting-toolkit in een framework. Alles wat je nodig hebt om van netwerk A naar netwerk B te springen alsof er geen firewall tussen zit. Want voor jou zit er geen firewall tussen. Niet meer. |
net_Verkeer verstoppen, omleiden, en doen alsof het iets anders is. Het internet-equivalent van een snor opplakken en hopen dat niemand het merkt.
| Bestand | Wat het doet |
|---|---|
net_chisel_tunnel | Chisel: een HTTP-gebaseerde SOCKS proxy tunnel. Gaat door firewalls heen alsof ze er niet zijn. De firewall ziet HTTP-verkeer. De firewall laat HTTP-verkeer door. De firewall heeft er spijt van. Maar firewalls hebben geen emoties, dus dat valt mee. |
net_dnscat2_server | Dnscat2 server: C2-communicatie via DNS-queries. Omdat DNS-verkeer bijna nooit wordt geblokkeerd of geanalyseerd. Het is het meest vertrouwde protocol op het internet, en jij misbruikt dat vertrouwen. Professioneel. Met een contract. |
net_dnscat2_client | Dnscat2 client: de andere kant van de DNS-tunnel. Zonder client geen tunnel. Zonder tunnel geen communicatie. Zonder communicatie geen pentest. Het is allemaal heel logisch als je er niet te lang over nadenkt. |
mssql_SQL Server: de database die ook een operating system wil zijn. En dat een beetje is. Genoeg om gevaarlijk te zijn. Niet genoeg om nuttig te zijn. Het slechtste van twee werelden.
| Bestand | Wat het doet |
|---|---|
mssql_enum | MSSQL-enumeratie: instances, linked servers, privileges, databases. De inventaris opmaken voordat je gaat winkelen. |
mssql_xpcmdshell | xp_cmdshell: de stored procedure die OS-commando’s uitvoert. Standaard uitgeschakeld. Makkelijk weer aan te zetten als je sysadmin bent. En als je deze pagina leest, ben je dat waarschijnlijk net geworden. |
mssql_linked | Linked server crawling: van de ene SQL Server naar de volgende springen via database links. Soms kom je terug bij het begin met hogere rechten. Ja, echt. Het is alsof je een rondje om het blok loopt en terugkomt als burgemeester. |
mssql_unc_inject | UNC path injection: de SQL Server een bestand laten ophalen van jouw SMB-server. Je vangt de NTLMv2-hash op. De server doet het gewoon. Hij víndt het niet erg. Hij vindt niets erg. Hij is een database. |
ps_cradle_Vijf manieren om een PowerShell-script in-memory te laden. Want diversiteit is belangrijk. Ook — néé, vóóral — in de offensieve beveiliging.
| Bestand | Wat het doet |
|---|---|
ps_cradle_webclient | De klassieker: (New-Object Net.WebClient).DownloadString(). Iedereen kent hem. Elke EDR kent hem. Maar soms werkt de klassieker nog steeds. Omdat classics classics zijn om een reden. |
ps_cradle_iwr | Invoke-WebRequest. De modernere variant. Doet hetzelfde, maar voelt moderner. Soms is dat genoeg. |
ps_cradle_xmlhttp | MSXML2.XMLHTTP COM-object. Vliegt onder de radar van sommige EDR’s. Niet alle. Sommige. Genoeg om het te proberen. |
ps_cradle_webrequest | System.Net.WebRequest. Nog een manier. Dezelfde bestemming, ander vervoermiddel. |
ps_cradle_comie | InternetExplorer COM-object. Gebruikt IE als downloadmechanisme. IE is dood. Het COM-object leeft. Zoals een geest die nog door het huis waart nadat de bewoner is verhuisd. Creatief? Ja. Morbide? Een beetje. |
ps...De psmeth*, psmimikatz, pssharphound, psprintspoofer en aanverwante bestanden. Dit zijn kant-en-klare PowerShell one-liners die specifieke tools downloaden en uitvoeren. Selecteer, pas het IP aan, injecteer. Klaar. Geen nadenken nodig. Dat heb je al gedaan toen je koos welke tool je wilde draaien. De rest is automatisch.
msf...msf_tcp, msf_https, msf_https8080, msfshell_tcp, msfshell_tcp8080. Metasploit handler-configuraties en meterpreter/shell payloads. De standaard gereedschapskist. Het equivalent van een hamer en een schroevendraaier: niet spectaculair, altijd nodig, en als je ze niet hebt ben je nergens.
get_27 bestanden die stuk voor stuk een specifiek hulpmiddel downloaden naar de doelmachine. Van get_mimikatz tot get_winpeasx64, van get_rubeus tot get_pingcastle. Elk bestand is een one-liner: een certutil, PowerShell WebClient, of vergelijkbaar commando dat de tool ophaalt van jouw HTTP-server en op de doelmachine neerzet.
Het zijn er 27. Ze zijn allemaal een variatie op hetzelfde thema. Ze werken. Ze stellen geen vragen. Ze downloaden. Het is het minst ingewikkelde deel van deze hele operatie, en soms is eenvoud precies wat je nodig hebt na een uur lang Kerberos-tickets vervalsen.
web_*Het internet is gebouwd op vertrouwen. Dat is het probleem. Het hele probleem. In één zin.
Dit is de grootste groep, onderverdeeld in subcategorieën. Elke subcategorie is een manier waarop het internet je teleurstelt. Of waarop je het internet teleurstelt, afhankelijk van je perspectief.
web_sqli_Union-based, error-based, blind, file read/write, RCE via SQL, en sqlmap-automatisering. Zes bestanden die je door elke SQL-injectie heen loodsen. Van “ik denk dat hier een injectie zit” tot “ik heb de hele database.” Het is een reis. Een korte reis. Maar een productieve.
web_ssti_Detectie plus exploitatie voor Jinja2, Twig, FreeMarker en Pug. Vijf template engines, vijf manieren om code uit te voeren op de server. De template engine vertrouwt je input. Dat had hij niet moeten doen. Dat weet hij nu ook.
web_cmdi_Operators, bypass-technieken en shell-one-liners. Drie bestanden voor als de webapplicatie shell-commando’s uitvoert met user input. Wat de webapplicatie niet had moeten doen. Maar deed. En nu zit je erin.
web_xss_Payloads en cookie/session stealing. Twee bestanden, want XSS is in essentie steeds hetzelfde: JavaScript uitvoeren in de browser van iemand anders. De variatie zit in hoe je het erin krijgt. Niet in wat het doet als het er eenmaal is.
web_xxe_XML External Entity payloads voor file disclosure, SSRF en out-of-band exfiltratie. XML vertrouwt iedereen. XML is naief. XML is je favoriete aanvalsvector als de applicatie het accepteert.
web_ssrf_Protocol handlers, cloud metadata endpoints en interne poortscanners. Drie bestanden die de server laten doen wat jij wilt. De server denkt dat het verzoek van hemzelf komt. Technisch gezien is dat ook zo. Maar het idee kwam van jou.
web_lfi_Directory traversal en log poisoning. Twee bestanden voor het lezen (en uitvoeren) van bestanden op de server. ../../../../etc/passwd is het “Hallo wereld” van LFI. Het wordt daarna alleen maar erger. Of beter. Hangt af van waar je staat.
web_deser_.NET en Java deserialization-aanvallen. Ysoserial in beide smaken. De applicatie verwacht een object. Je stuurt een object. Het object doet alleen niet wat de applicatie verwacht. Het object doet wat jij wilt.
web_CORS-exploitatie, IDOR, prototype pollution, type juggling, file upload bypass, Node.js injection, en reconnaissance/fuzzing. De restcategorie die eigenlijk net zo belangrijk is als de rest. Misschien belangrijker. Want dit zijn de aanvallen die niet in de standaard checklist staan, en de dingen die niet in de checklist staan zijn de dingen die niemand controleert.
exploit_| Bestand | Wat het doet |
|---|---|
exploit_jenkins | Jenkins: Groovy script console RCE, build step exploitation, credential dumping, API token misbruik. Als Jenkins openstaat, is het feest. En Jenkins staat vaker open dan je zou verwachten. Veel vaker. Oncomfortabel veel vaker. |
proof_Het bewijs dat je er was. Omdat “geloof me nou maar” geen geldige rapportagemethode is.
| Bestand | Wat het doet |
|---|---|
proof_windows | De standaard Windows proof-of-compromise one-liner: whoami, hostname, ipconfig, proof.txt uitlezen. Het is je handtekening. Je “ik was hier.” Maar dan professioneel. |
proof_linux | Hetzelfde, maar dan voor Linux: id, hostname, ifconfig, proof.txt. Zelfde idee. Ander besturingssysteem. Zelfde voldoening. |
De bestanden die niet in een categorie passen: mimikatz (directe Mimikatz-commando’s), sharphound (SharpHound invocatie), handler_https (Metasploit HTTPS handler), certutilmeth (certutil download methode), cpassword (Group Policy Preferences wachtwoorden), add_user_windows, run_as, set_creds, vuurmuur, en meer. De miscellanea. De losse sokken in de la. Je hebt ze niet elke dag nodig. Maar als je ze nodig hebt, zijn ze er. En dat is het verschil tussen een complete toolkit en een bijna-complete toolkit, en “bijna” is in de beveiliging het gevaarlijkste woord dat er is.
ATTACKER_IP, TARGET_IP, etc.)Zes stappen. Je kunt ze uit je hoofd leren. Of je kunt deze lijst nog een keer lezen. Ik oordeel niet. Ik oordeel een klein beetje. Maar niet hardop.
Vier stappen. Twee minder dan de vorige methode. Dat is een besparing van 33%. Als iemand je vraagt wat je vandaag hebt bereikt, kun je zeggen dat je je workflow met een derde hebt geoptimaliseerd. Dat klinkt indrukwekkend in elke vergadering.
Beschikbaar op elke pagina. Typ, zoek, vind, vervang, kopieer. Zonder de pagina te verlaten. Zonder context te verliezen. Zonder dat gevoel van “waar was ik ook alweer” dat je krijgt als je naar een andere pagina navigeert en vergeet waarom je dat deed.
Maak een nieuw tekstbestand aan in http/commands/. Geen extensie. Zet er commando’s in met #-commentaar erboven. De bestandsnaam bepaalt de categorie via het prefix.
# Mijn custom techniek - wat het doet
# Vereiste: local admin
commando_hier --target TARGET_IP
# Tip: dit werkt alleen op dinsdag
Sla op. Ververs de pagina. Het staat er. Geen configuratie. Geen herstart. Geen YAML. Gewoon een bestand. Het is de meest ontwapenend simpele manier om een kennisbank uit te breiden, en je zult je afvragen waarom niet alle software zo werkt. Het antwoord is: omdat de meeste software wordt gebouwd door comités, en comités houden van YAML.
Overal in de command files staan placeholders in HOOFDLETTERS. Vervang ze door de werkelijke waarden. Of vergeet het en stuur een reverse shell naar 10.0.0.1. Dat is ook een optie. Geen goede optie. Maar een optie.
| Placeholder | Betekenis |
|---|---|
ATTACKER_IP of 10.0.0.1 | Jouw aanvals-IP |
TARGET_IP | Het doel-IP |
DOMAIN | De domeinnaam (bijv. corp.local) |
DC_IP | IP van de Domain Controller |
INTERNAL_TARGET | IP van een intern doel (achter pivot) |
KALI_IP | Je Kali-machine |
SESSION_ID of SESSION 1 | Meterpreter/MSF sessie-ID |
INTERNAL_SUBNET | Intern subnet (bijv. 10.10.10.0) |
Dit zijn tekstbestanden met technieken die netwerken kunnen compromitteren, wachtwoorden kunnen stelen en systemen kunnen overnemen. Ze bestaan niet omdat dit leuk is (het is ook leuk — wie zegt dat werk niet leuk mag zijn?), maar omdat verdedigers moeten begrijpen hoe aanvallers werken. Je kunt geen muur bouwen als je niet weet waar de ladder staat. En je kunt geen ladder verplaatsen als je niet weet dat hij er staat. En je kunt niet weten dat hij er staat als je niet kijkt. En kijken — dat is wat deze bestanden je leren.
Gebruik dit uitsluitend in geautoriseerde omgevingen. Als je geen schriftelijke toestemming hebt, heb je geen toestemming. Punt. Geen “maar.” Geen “eigenlijk.” Geen “het was maar een test.” Schriftelijk. Ondertekend. Door iemand die bevoegd is.
En vergeet niet je IP-adressen aan te passen. Er is niets gênanter dan een reverse shell die verbinding maakt met 10.0.0.1. Behalve misschien een reverse shell die verbinding maakt met 127.0.0.1. Dan hack je jezelf. En dat is een niveau van incompetentie waar zelfs deze applicatie geen naam voor heeft.