Use Netcat to Spawn Reverse Shells & Connect to Other Computers [Tutorial]
Inhoudsopgave:
- Netcat-syntaxis
- Poort scannen
- Bestanden verzenden via Netcat
- Een eenvoudige chatserver maken
- Een HTTP-verzoek uitvoeren
- Conclusie
Netcat (of nc) is een opdrachtregelprogramma dat gegevens leest en schrijft over netwerkverbindingen, met behulp van de TCP- of UDP-protocollen. Het is een van de krachtigste tools in het arsenaal van netwerk- en systeembeheerders en wordt beschouwd als een Zwitsers zakmes met netwerkhulpmiddelen.
Netcat is platformonafhankelijk en beschikbaar voor Linux, macOS, Windows en BSD. U kunt Netcat gebruiken voor het opsporen van fouten en het controleren van netwerkverbindingen, zoeken naar open poorten, gegevens overdragen, als proxy en meer. Het Netcat-pakket is vooraf geïnstalleerd op macOS en populaire Linux-distributies zoals Ubuntu.
Netcat-syntaxis
De meest elementaire syntaxis van het hulpprogramma Netcat heeft de volgende vorm:
nc host port
Op Ubuntu kunt u
netcat
of
nc
. Ze zijn beide symlinks naar de openBSD-versie van Netcat.
Standaard probeert Netcat een TCP-verbinding met de opgegeven host en poort te starten. Als u een UDP-verbinding tot stand wilt brengen, gebruikt u de optie
-u
:
Poort scannen
Scannen van poorten is een van de meest voorkomende toepassingen voor Netcat. U kunt een enkele poort of een poortbereik scannen.
Als u bijvoorbeeld wilt zoeken naar open poorten in het bereik 20-80, gebruikt u de volgende opdracht:
nc -z -v 10.10.8.8 20-80
De optie
-z
zal
nc
vertellen dat alleen naar open poorten moet worden gescand, zonder dat er gegevens naar moeten worden verzonden, en de optie
-v
biedt meer uitgebreide informatie.
De uitvoer ziet er ongeveer zo uit:
nc: connect to 10.10.8.8 port 20 (tcp) failed: Connection refused nc: connect to 10.10.8.8 port 21 (tcp) failed: Connection refused Connection to 10.10.8.8 22 port succeeded! nc: connect to 10.10.8.8 port 23 (tcp) failed: Connection refused… nc: connect to 10.10.8.8 port 79 (tcp) failed: Connection refused Connection to 10.10.8.8 80 port succeeded!
nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded
Connection to 10.10.8.8 22 port succeeded! Connection to 10.10.8.8 80 port succeeded!
U kunt Netcat ook gebruiken om de serversoftware en de versie ervan te vinden. Als u bijvoorbeeld een "EXIT" -opdracht naar de server op de standaard SSH-poort 22 verzendt:
echo "EXIT" | nc 10.10.8.8 22
De uitvoer ziet er ongeveer zo uit:
SSH-2.0-OpenSSH_7.6p1 Ubuntu-4 Protocol mismatch.
Om naar UDP-poorten te scannen, voegt u eenvoudig de optie
-u
aan de opdracht zoals hieronder wordt weergegeven:
nc -z -v -u 10.10.8.8 20-80
In de meeste situaties is Nmap een betere tool dan Netcat voor complexe poortscans.
Bestanden verzenden via Netcat
Netcat kan worden gebruikt om gegevens van de ene host naar de andere over te dragen door een standaard client / server-model te maken.
Dit werkt door de Netcat in te stellen om op een specifieke poort te luisteren (met behulp van de optie
-l
) op de ontvangende host en vervolgens een normale TCP-verbinding tot stand te brengen vanaf de andere host en het bestand eroverheen te verzenden.
Voer bij ontvangst de volgende opdracht uit die de poort 5555 voor inkomende verbinding opent en de uitvoer naar het bestand omleidt:
nc -l 5555 > file_name
Maak vanaf de verzendende host verbinding met de ontvangende host en verzend het bestand:
nc receiving.host.com 5555 < file_name
Om een map over te dragen, kunt u tar gebruiken om de map op de bronhost te archiveren en om het archief op de doelhost uit te pakken.
Stel op de ontvangende host het hulpprogramma Netcat in om te luisteren naar een inkomende verbinding op poort 5555. De inkomende gegevens worden doorgestuurd naar de opdracht tar die het archief zal extraheren:
nc -l 5555 | tar xzvf -
Op het verzendende hostpakket de map en verzend de gegevens door verbinding te maken met het luisterproces op de ontvangende host:
tar czvf - /path/to/dir | nc receiving.host.com 5555
U kunt de overdracht aan beide kanten bekijken. Typ na voltooiing
CTRL+C
om de verbinding te sluiten.
Een eenvoudige chatserver maken
De procedure voor het maken van een onlinechat tussen twee of meer hosts is dezelfde als bij het overbrengen van bestanden.
Start op de eerste host een Netcat-proces om te luisteren op poort 5555:
nc -l 5555
Voer vanaf de tweede host de volgende opdracht uit om verbinding te maken met de luisterpoort:
nc first.host.com 5555
Als u nu een bericht typt en op
ENTER
drukt, wordt dit op beide hosts weergegeven.
Typ
CTRL+C
om de verbinding te sluiten.
Een HTTP-verzoek uitvoeren
Hoewel er veel betere tools zijn voor HTTP-aanvragen zoals curl, kunt u Netcat ook gebruiken om verschillende aanvragen naar externe servers te verzenden.
Als u bijvoorbeeld de Netcat-manpagina van de OpenBSD-website wilt ophalen, typt u:
printf "GET /nc.1 HTTP/1.1\r\nHost: man.openbsd.org\r\n\r\n" | nc man.openbsd.org 80
Het volledige antwoord inclusief de HTTP-headers en HTML-code wordt in de terminal afgedrukt.
Conclusie
In deze zelfstudie hebt u geleerd hoe u het hulpprogramma Netcat kunt gebruiken om TCP- en UDP-verbindingen tot stand te brengen en te testen.
Ga voor meer informatie naar de Netcat-manpagina en lees over alle andere krachtige opties van de opdracht Netcat.
netcat-terminalLinux snijd commando met voorbeelden
Knippen is een opdrachtregelhulpprogramma waarmee u delen van lijnen uit gespecificeerde bestanden of piped-gegevens kunt knippen en het resultaat naar standaarduitvoer kunt afdrukken. In deze zelfstudie laten we u zien hoe u het Linux-knipcommando kunt gebruiken door praktische voorbeelden en gedetailleerde uitleg van de meest voorkomende knipopties.
Linux-datumopdracht met voorbeelden
Met de opdracht date wordt de systeemdatum weergegeven of ingesteld. Het wordt meestal gebruikt om de datum en tijd in verschillende formaten af te drukken en toekomstige en afgelopen datums te berekenen.
Linux ip commando met voorbeelden
De opdracht ip is een krachtig hulpmiddel voor het configureren van netwerkinterfaces. Het kan worden gebruikt om interfaces omhoog of omlaag te brengen, adressen en routes toe te wijzen en te verwijderen, ARP-cache te beheren en nog veel meer.







