Kā izmantot tīkla rīku netcat

Satura rādītājs

Šajā apmācībā mēs runāsim par a ļoti spēcīgs Netcat tīkla rīks, parasti saīsināts kā nc. Šo rīku izmanto, izmantojot komandrindu, un tā sintakse ir ļoti vienkārša. Tas ļaus mums rakstīt un saņemt datus, izmantojot ligzdas (TCP vai UDP). Tam ir daudz funkciju, un tāpēc mēs to varam izmantot daudzos veidos. Ir svarīgi zināt tā darbību, jo tas ļaus mums atkļūdot, pārbaudīt un izmeklēt tīklā.

Netcat var darboties 2 režīmos:

KlientsŠajā režīmā tā būs atbildīga par saziņu ar klausītāju (kas klausās noteiktā adresē un IP un kas mums būs jāzina).

Serveris vai klausītājsGaidiet savienojumus no klientiem noteiktā ostā.

Mēs gatavojamies uzziniet, kā darbojas Netcat vai nc, izmantojot praktiskus piemērus, kas ir labākais veids, kā mācīties. Šim nolūkam es izmantošu Ubuntu 16.04 operētājsistēmu.

Pirmā lieta, ko mēs redzēsim, ir netcat sintakse:

 nc [opcijas] [mērķis] [ports]
Netcat jums ir daudz iespēju, apskatīsim dažas:

Dažas netcar iespējas

  • -l: Liek netcat klausīties.
  • -lpp: Lai norādītu izcelsmes ostu.
  • -s: Lai norādītu avota adresi.
  • -k: Lai klausītājs varētu izmantot "bezgalīgus" savienojumus (lieto kopā ar -l).
  • -vai: Netcat atver portu kā UDP, nevis TCP (kas pēc noklusējuma).
  • -v: Izmantojot šo opciju, tā mums parādīs savienojuma informāciju.
  • -i: Lai norādītu nosūtīšanas un saņemšanas aizkavēšanos. (Sekundēs).
  • -4: Ļauj Netcat izmantot tikai IPv4.
  • -6: Tāpat kā iepriekšējā, bet liek izmantot IPv6.

Ir vairākas iespējas, kuras mēs varam redzēt, izpildot šādu komandu:

 nc -h
Zemāk jūs varat redzēt attēlā:

Mēs sāksim ar piemēriem, vispirms vienkāršākais, lai tos sarežģītu, bet tikai nedaudz, jūs redzēsit, ka to ir ļoti viegli izmantot.

1. piemērs
Lieciet manu mašīnu klausīties 87. portā:

 87
PiezīmeNoņemšana darbotos tāpat -lpp.

Tagad mēs izveidosim savienojumu no cita termināļa, jo, palaižot to tajā pašā mašīnā, kā adresi izmantoju localhost:

 87
Ja no klienta uzrakstīsim kaut ko tikko atvērtu, mēs to redzēsim arī terminālī, kas klausās, un tādējādi pārbaudīsim, vai savienojums darbojas pareizi. Bet, ja mēs rakstām klausītājam, pirmajam terminālim, tas sasniedz arī klientu. Tālāk es atstāju klausītāja un cita klienta attēlu:

Mēs redzam, ka viņi šajā piemērā sazinās, kā mēs vēlējāmies, iesim pēc cita.

2. piemērs
Mēs varam likt serverim vai klausītājam saglabāt klienta nosūtītos datus failā, tāpēc izpildāmā komanda daudz neatšķiras no pirmajā piemērā redzamās:

 sudo nc -l 87> tests
Piezīmetests ir faila nosaukums, kurā saglabāsit saņemto informāciju.

Klienta pusē komanda būs tāda pati kā iepriekš:

 87
Šis attēls parāda, kas tiek izpildīts klientā (klausītājs klausās pirms savienojuma izveides, pretējā gadījumā tam nebūtu nekādas ietekmes):

Un servera pusē mēs redzam, ka acīmredzot nekas netiek saņemts, bet vienīgā pārliecība ir tā, ka tas netiek parādīts ekrānā un tiek saglabāts testa failā:

Turpināsim ar citu piemēru.

3. piemērs
Mēs pārbaudīsim, vai ir virkne portu, lai uzzinātu, vai tie ir atvērti vai nē, šajā piemērā diapazons būs 80-90. Vispirms mēs atveram serveri portā 80, kā mēs to darījām pirmajā piemērā (tāpēc mēs redzēsim, kā tas darbojas, kad tas ir atvērts un kad tas nav):

 87
Un klientam mēs izpildīsim:
 nc -z -v localhost 80-90
Parametrs -z tiek izmantots skenēšanai, un -v Kā mēs redzējām iepriekš, lai parādītu informāciju (ja mēs to neievietojam, tas neparādīs, kura osta ir atvērta un kura nav), tad klienta attēls:

Mēs redzēsim a piemērs UDP.

4. piemērs
Šis piemērs ir arī vienkāršs, mēs klausīsimies UDP 2016. gada ostā, un mēs piespiedīsim to būt IPv4 adresei:

 sudo nc -l -u -4 2016
Un tagad mēs liekam klientam izveidot savienojumu:
 nc -u -4 2016
Es nesniedzu attēlu, jo uztveršana būs tāda pati kā 1. piemērā, protams, mainot komandas daļu. Pāriesim pie piemēra, kurā mēs izmantojam Python kodu.

5. piemērs
Mēs ievietosim Python pēc iespējas vienkāršāku kodu, lai tas klausītos savienojumu, saņemtu datus un beigtos.

 importēt ligzdu s = socket.socket () s.bind (("192.168.56.1", 1987)) s.listen (1) conn, addr = s.accept () data = conn.recv (1024) .decode (" utf-8 ") drukāt (dati) 
Es palaidīšu šo kodu operētājsistēmā Windows un pēc tam no Linux izveidošu savienojumu ar to, izmantojot netcat, šādā attēlā ir redzama klienta puse Linux:

Un kā tas izskatītos operētājsistēmā Windows:

Ja mēs kaut ko modificējam, mēs varam likt tai izpildīt komandu un nosūtīt mums tās saturu, bet mēs varam arī atgriezt čaulu, kas ļaus mums darīt daudzas lietas, tāpēc pāriesim pie nākamā piemēra.

6. piemērs
Šajā piemērā es izpildīšu a python kods Tajā pašā Linux mašīnā un es izveidošu savienojumu ar netcat, mēs pārbaudīsim, vai Shell ( / bin / bash) mūs atgriež. Zemāk es atstāju Python kodu pēc iespējas vienkāršāk un īsāk, tikai piemēram.

 importēt ligzdu, apakšprocess 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 = apakšprocess.Popen ([" / bin / bash"], stdin = conn, stdout = conn, stder = conn) 
Tiek izpildīts Python kods un redzams šāds (attēlā parādīts, kā tas izskatās, veidojot savienojumu no netcat):

Mēs redzam, ka tas klausās, kad mēs to izpildām, bet, kad klients izveido savienojumu, savienojums tiek slēgts, un mums ir pieejams Shell.

Mēs varētu arī izveidot kodu, kas savienojas ar mūsu mašīnu, ka mēs to nodosim klausīšanai noteiktā ostā, kopumā ir daudz iespēju, tagad jums ir jāizpēta un "jāspēlē" ar netcat, kas, kā jūs redzējāt, var palīdzēt mūs daudzos brīžos.

Vai jums patika šī apmācība un palīdzējāt tai?Jūs varat apbalvot autoru, nospiežot šo pogu, lai sniegtu viņam pozitīvu punktu

Jums palīdzēs attīstību vietā, daloties lapu ar draugiem

wave wave wave wave wave