Hur man använder nätverksverktyget netcat

Innehållsförteckning

I denna handledning ska vi prata om en mycket kraftfullt Netcat -nätverksverktyg, vanligen förkortad som nc. Detta verktyg används via kommandoraden och dess syntax är mycket enkel. Det gör att vi kan skriva och ta emot data via sockets (TCP eller UDP). Den har många funktioner och därför kan vi använda den på många sätt. Det är viktigt att känna till dess funktion, eftersom det gör att vi kan felsöka, testa och undersöka i nätverket.

Netcat kan fungera i 2 lägen:

KlientI det här läget kommer det att ansvara för anslutningen till lyssnaren (som lyssnar på en specifik adress och IP, och som vi måste veta).

Server eller lyssnareVänta på anslutningar från klienter på en viss port.

Vi ska lära dig hur Netcat eller nc fungerar genom praktiska exempel, vilket är det bästa sättet att lära sig. För detta kommer jag att använda operativsystemet Ubuntu 16.04.

Det första vi ska se är netcatsyntaxen:

 nc [alternativ] [mål] [port]
Netcat du har många alternativ, låt oss se några:

Några netcar -alternativ

  • -l: Berättar för netcat att lyssna.
  • -s: För att ange ursprungsporten.
  • -s: För att ange källadressen.
  • -k: För att tillåta "oändliga" anslutningar lyssnaren (används med -l).
  • -eller: Netcat öppnar porten som UDP istället för TCP (vilket är standard).
  • -v: Med det här alternativet visar det oss anslutningsinformation.
  • -i: För att ange fördröjningen för att skicka och ta emot. (Inom sekunder).
  • -4: Tillåter Netcat att endast använda IPv4.
  • -6: Liksom den föregående men tvingar att använda IPv6.

Det finns fler alternativ som vi kan se genom att utföra följande kommando:

 nc -h
Nedan kan du se på bilden:

Vi ska börja med exemplen, de enklaste kommer först, för att komplicera dem, men bara lite, du kommer att se att det är väldigt lätt att använda.

Exempel 1
Sätt min maskin för att lyssna på port 87:

 sudo nc -l -p 87
noteraDet skulle fungera samma borttagning -s.

Nu ska vi upprätta en anslutning från en annan terminal, eftersom jag kör den på samma dator använder jag localhost som adressen:

 nc lokal värd 87
Om vi ​​skriver något från klienten som vi just har öppnat kommer vi också att se det i terminalen som lyssnar, och därmed verifierar vi att anslutningen fungerar korrekt. Men om vi skriver till lyssnaren, den första terminalen, når den också klienten. Därefter lämnar jag en bild av lyssnaren och en annan av klienten:

Vi ser att de kommunicerar som vi ville i det här exemplet, låt oss gå på en annan.

Exempel 2
Vi kan få servern eller lyssnaren att spara data som skickas av klienten i en fil, för det här kommandot som ska utföras skiljer sig inte mycket från det som ses i det första exemplet:

 sudo nc -l 87> test
Noteratest är namnet på filen där du sparar informationen som kommer.

På klientsidan kommer kommandot att vara detsamma som tidigare:

 nc lokal värd 87
Följande bild visar vad som körs på klienten (lyssnaren lyssnar innan den ansluter, annars skulle det inte ha någon effekt):

Och på serversidan kan vi se att ingenting tydligen tas emot, men den enda säkerheten är att det inte visas på skärmen och sparas i testfilen:

Låt oss fortsätta med ett annat exempel.

Exempel 3
Vi ska kontrollera om ett antal portar, för att veta om de är öppna eller inte, i detta exempel kommer intervallet att vara 80-90. Först öppnar vi en server på port 80 som vi gjorde i det första exemplet (så får vi se hur det fungerar när det är öppet och när det inte är det):

 sudo nc -l 87
Och på klienten kommer vi att utföra:
 nc -z -v localhost 80-90
Parameter -z används för skanning, och -v Som vi såg tidigare för att visa information (om vi inte lägger det här kommer det inte att visa vilken port som är öppen och vilken inte), då bilden av klienten:

Vi ska se a exempel i UDP.

Exempel 4
Det här exemplet är också enkelt, vi kommer att lyssna efter UDP på ​​port 2016, och vi kommer att tvinga det att vara en IPv4 -adress:

 sudo nc -l -u -4 2016
Och nu får vi klienten att ansluta:
 nc -u -4 2016
Jag tillhandahåller inte en bild, eftersom fångsten kommer att vara densamma som i exempel 1, vilket naturligtvis ändrar delen av kommandot. Låt oss gå vidare till ett exempel där vi använder Python -kod.

Exempel 5
Vi ska sätta en så enkel kod som möjligt i Python så att den lyssnar efter en anslutning, tar emot en data och slutar.

 importuttag s = socket.socket () s.bind (("192.168.56.1", 1987)) s.listen (1) conn, addr = s.accept () data = conn.recv (1024) .decode (" utf-8 ") print (data) 
Jag kommer att köra den här koden på Windows och sedan från Linux kommer jag att ansluta till den via netcat, följande bild visar klientsidan på Linux:

Och hur det skulle se ut i Windows:

Om vi ​​ändrar koden något kan vi få den att utföra ett kommando och skicka dess innehåll, men vi kan också returnera ett skal, vilket gör att vi kan göra många saker, så låt oss gå vidare till nästa exempel.

Exempel 6
I det här exemplet kommer jag att köra a python -kod På samma Linux -maskin, och jag ska ansluta med netcat, ska vi kontrollera att en Shell ( / bin / bash) returnerar oss. Nedanför lämnar jag Python -koden, så enkel och kort som möjligt, bara för exemplet.

 importuttag, delprocess s = socket.socket (socket.AF_INET) s.setsockopt (socket.IPPROTO_IP, socket.SO_REUSEADDR, 1) s.bind (("", 1987)) s.listen (1) conn, addr = s .accept () p = delprocess.Popen ([" / bin / bash"], stdin = conn, stdout = conn, stder = conn) 
Python -koden körs och följande ses (bilden visar hur den ser ut vid anslutning från netcat):

Vi ser att den lyssnar när vi kör den, men när en klient ansluter stängs anslutningen och vi har ett Shell för oss.

Vi kan också skapa en kod som ansluter till vår maskin, att vi kommer att sätta den för att lyssna på en viss port, i allmänhet finns det många möjligheter, nu måste du undersöka och "spela" med netcat, som du har sett kan hjälpa oss i många ögonblick.

Gillade du och hjälpte denna handledning?Du kan belöna författaren genom att trycka på den här knappen för att ge honom en positiv poäng

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave