De Command Library

Een handleiding voor tekstbestanden zonder extensie die je beste vrienden worden. Of je ergste nachtmerrie, afhankelijk van welke kant van de firewall je zit.

← Terug naar de hoofdhandleiding

Inhoudsopgave

  1. Wat is dit?
  2. Waar staan ze?
  3. Reconnaissance
  4. Enumeratie
  5. Active Directory
  6. AD CS Attacks
  7. Kerberos
  8. AMSI Bypass
  9. AV Bypass
  10. AppLocker Bypass
  11. Credential Dumping
  12. Process Injection
  13. Lateral Movement
  14. Linux Post-Exploitation
  15. Privilege Escalation
  16. Password Attacks
  17. Persistence
  18. Reverse Shells
  19. Tunneling & Pivoting
  20. Network Evasion
  21. MSSQL Attacks
  22. PowerShell Cradles
  23. PowerShell Payloads, Metasploit & Tool Downloads
  24. Web Attacks
  25. Exploits, Proof & Overig
  26. Hoe gebruik je dit?
  27. Placeholders

1. Wat is dit?

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.

2. Waar staan ze?

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.

3. Reconnaissance 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.

BestandWat het doet
recon_osintOpen 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_dnsDNS 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_snmpSNMP 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_smtpSMTP 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_nfsNFS 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_wpscanWordPress 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.

4. Enumeratie 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.
BestandWat het doet
enum_domain_usersAlle 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_groupsGroepen 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_computersAlle 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_trustsTrust 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_gpoGroup 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_filesSMB 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_huntingWaar zijn de Domain Admins ingelogd? Welke machines hebben sessies van high-value targets? De jacht is geopend. Geen oranje hesje nodig.
enum_privesc_localLokale privilege escalation checks: services, scheduled tasks, unquoted paths, writable directories. Alles wat PowerUp en winPEAS ook vinden, maar dan overzichtelijk bij elkaar.
enum_windowsBasis 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.
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.
BestandWat het doet
ad_genericallGenericAll-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_writedaclWriteDACL-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_aclACL-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_dcsyncDCSync: 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_collectSharpHound 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_rawLDAP-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_parentVan 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_forestCross-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.

6. AD CS Attacks 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.
BestandWat het doet
adcs_enumCertificaat-templates enumereren met Certify en Certipy. Welke templates zijn kwetsbaar? Wie mag er certificaten aanvragen? Meestal iedereen. Dat is het probleem.
adcs_esc1ESC1: 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_esc3ESC3: enrollment agents misbruiken om namens iemand anders certificaten aan te vragen. Je bent niet jezelf vandaag. Je bent de Domain Admin.
adcs_esc6ESC6: 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.

7. Kerberos 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.
BestandWat het doet
kerb_kerberoastKerberoasting: 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_asreproastAS-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_kerberoastTargeted 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_ticketGolden 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_ticketSilver 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_ticketDiamond 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_constrainedConstrained 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_unconstrainedUnconstrained 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_rbcdResource-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_opthOverpass-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.

8. AMSI Bypass 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.
BestandWat het doet
amsi_bypass_reflectionAmsiContext 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_patchAmsiScanBuffer patchen in het geheugen. Je overschrijft de functie zodat die altijd “alles is veilig” teruggeeft. De digitale versie van de bewaker omkopen.
amsi_bypass_contextAmsiInitialize 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_clmConstrained 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_invisishellInvisiShell: AMSI en ScriptBlock logging uitschakelen zonder de reguliere patches. Onzichtbaar. Stil. Elegant. Drie woorden die je zelden in dezelfde zin als “PowerShell” aantreft.

9. AV Bypass 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.
BestandWat het doet
av_defendercheckDefenderCheck/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_netloaderNetLoader: .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_shellterShellter: 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_htaHTA-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.

10. AppLocker Bypass 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.
BestandWat het doet
applocker_mshtaMshta.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_installutilInstallUtil.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_msbuildMSBuild.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.

11. Credential Dumping 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.
BestandWat het doet
cred_minidumpLSASS 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_dumpSAM 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_ppldumpLSASS dumpen als PPL (Protected Process Light) is ingeschakeld. Iets lastiger, maar niet onmogelijk. Niets is onmogelijk. Sommige dingen zijn alleen onhandig.
cred_token_impersonateToken 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.

12. Process Injection 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.
BestandWat het doet
inject_createremotethreadDe klassieker: VirtualAllocEx, WriteProcessMemory, CreateRemoteThread. Het Hello World van process injection. Iedereen begint hier. Sommigen blijven hier. Dat is prima.
inject_dllDLL 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_hollowingProcess 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.

13. Lateral Movement 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.
BestandWat het doet
lateral_wmiWMI: 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_psremotingPowerShell Remoting: Enter-PSSession en Invoke-Command. Alsof je SSH doet, maar dan met meer XML. Veel meer XML. Een ongezonde hoeveelheid XML.
lateral_scmService Control Manager: een service aanmaken op een remote machine die jouw payload uitvoert. De machine start je code op als een dienst. Letterlijk.
lateral_dcomDCOM 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_excelDCOM 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_winrmWinRM met evil-winrm: een comfortabele shell via het Windows Remote Management protocol. “Comfortabel” en “shell” in dezelfde zin — dat krijg je niet vaak.

14. Linux Post-Exploitation 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.
BestandWat het doet
linux_ssh_hijackSSH 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_agentSSH 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_enumAnsible 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_ldpreloadLD_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.

15. Privilege Escalation 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.
BestandWat het doet
privesc_uac_bypassUAC 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_alwaysinstallAlwaysInstallElevated: 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_cronLinux privesc via cron jobs, SUID binaries, capabilities, sudo misconfiguraties en writable /etc/passwd. Linux is “veilig.” Tussen aanhalingstekens. Grote aanhalingstekens.

16. Password Attacks passwd_

Wachtwoorden raden. Het klinkt primitief. Het werkt verrassend vaak. Dat zegt meer over wachtwoorden dan over de techniek.
BestandWat het doet
passwd_wordlistWoordlijsten 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_sprayPassword 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_bruteBrute 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.

17. Persistence 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.
BestandWat het doet
persist_skeleton_keySkeleton 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_adminsdholderAdminSDHolder: 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_dsrmDSRM: 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_descriptorsSecurity 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_sspCustom 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.

18. Reverse Shells 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.
BestandWat het doet
shell_socatSocat 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_powercatPowercat: 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.

19. Tunneling & Pivoting 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.
BestandWat het doet
tunnel_ssh_socksSSH 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_netshWindows 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_plinkPlink: 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_pivotMetasploit 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.

20. Network Evasion net_

Verkeer verstoppen, omleiden, en doen alsof het iets anders is. Het internet-equivalent van een snor opplakken en hopen dat niemand het merkt.
BestandWat het doet
net_chisel_tunnelChisel: 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_serverDnscat2 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_clientDnscat2 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.

21. MSSQL Attacks 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.
BestandWat het doet
mssql_enumMSSQL-enumeratie: instances, linked servers, privileges, databases. De inventaris opmaken voordat je gaat winkelen.
mssql_xpcmdshellxp_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_linkedLinked 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_injectUNC 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.

22. PowerShell Cradles ps_cradle_

Vijf manieren om een PowerShell-script in-memory te laden. Want diversiteit is belangrijk. Ook — néé, vóóral — in de offensieve beveiliging.
BestandWat het doet
ps_cradle_webclientDe 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_iwrInvoke-WebRequest. De modernere variant. Doet hetzelfde, maar voelt moderner. Soms is dat genoeg.
ps_cradle_xmlhttpMSXML2.XMLHTTP COM-object. Vliegt onder de radar van sommige EDR’s. Niet alle. Sommige. Genoeg om het te proberen.
ps_cradle_webrequestSystem.Net.WebRequest. Nog een manier. Dezelfde bestemming, ander vervoermiddel.
ps_cradle_comieInternetExplorer 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.

23. PowerShell Payloads, Metasploit & Tool Downloads

PowerShell Payloads 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.

Metasploit 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.

Tool Downloads 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.

24. Web Attacks 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.

SQL Injection 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.

Server-Side Template Injection 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.

Command Injection 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.

XSS 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.

XXE 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.

SSRF 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.

LFI 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.

Deserialization 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.

Overig 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.

25. Exploits, Proof & Overig

Exploits exploit_

BestandWat het doet
exploit_jenkinsJenkins: 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 / Flags proof_

Het bewijs dat je er was. Omdat “geloof me nou maar” geen geldige rapportagemethode is.

BestandWat het doet
proof_windowsDe 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_linuxHetzelfde, maar dan voor Linux: id, hostname, ifconfig, proof.txt. Zelfde idee. Ander besturingssysteem. Zelfde voldoening.

Overig

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.

26. Hoe gebruik je dit?

In de Command Library pagina

  1. Open de webapp
  2. Ga naar Command Library
  3. Blader door de categorieën of gebruik de zoekbalk
  4. Klik op een commando om het te zien
  5. Pas de placeholders aan (ATTACKER_IP, TARGET_IP, etc.)
  6. Klik op Copy of Inject om het in je terminal te plakken

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.

In de Screen Terminal

  1. Open Screen in de webapp
  2. De sidebar rechts toont dezelfde Command Library
  3. Klik op een commando en het wordt direct in je screen-sessie geïnjecteerd
  4. De find/replace-functie vervangt automatisch placeholders als je je IP hebt ingesteld

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.

Via het Field Manual — Ctrl+K

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.

Zelf commands toevoegen

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.

27. Placeholders

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.

PlaceholderBetekenis
ATTACKER_IP of 10.0.0.1Jouw aanvals-IP
TARGET_IPHet doel-IP
DOMAINDe domeinnaam (bijv. corp.local)
DC_IPIP van de Domain Controller
INTERNAL_TARGETIP van een intern doel (achter pivot)
KALI_IPJe Kali-machine
SESSION_ID of SESSION 1Meterpreter/MSF sessie-ID
INTERNAL_SUBNETIntern subnet (bijv. 10.10.10.0)

Slotwoord

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.