8 Netcat (nc) Amri yenye Mifano


Netcat (au nc kwa ufupi) ni zana rahisi lakini yenye nguvu ya mstari wa amri ya mtandao inayotumika kutekeleza operesheni yoyote katika Linux inayohusiana na TCP, UDP, au soketi za kikoa cha UNIX.

Netcat inaweza kutumika kwa skanning ya bandari, kuelekeza upya bandari, kama msikilizaji wa bandari (kwa miunganisho inayoingia); inaweza pia kutumika kufungua miunganisho ya mbali na vitu vingine vingi. Kando na hilo, unaweza kuitumia kama mlango wa nyuma kupata ufikiaji wa seva inayolengwa.

Katika makala hii, tutaelezea maagizo ya matumizi ya Netcat na mifano.

Jinsi ya Kufunga na Kutumia Netcat kwenye Linux

Ili kusakinisha kifurushi cha netcat kwenye mfumo wako, tumia kidhibiti chaguomsingi cha kifurushi kwa usambazaji wako wa Linux.

$ yum install nc                  [On CentOS/RHEL]
$ dnf install nc                  [On Fedora 22+ and RHEL 8]
$ sudo apt-get install Netcat     [On Debian/Ubuntu]

Mara tu kifurushi cha netcat kikisanikishwa, unaweza kuendelea zaidi ili kujifunza utumiaji wa amri ya netcat katika mifano ifuatayo.

Netcat inaweza kutumika kwa utambazaji mlangoni: kujua ni bandari zipi zilizo wazi na zinazoendesha huduma kwenye mashine lengwa. Inaweza kuchanganua moja au nyingi au safu ya milango iliyo wazi.

Huu hapa ni mfano, chaguo la -z huweka nc kuchanganua kwa urahisi damoni za kusikiliza, bila kutuma data yoyote kwao. Chaguo la -v huwezesha hali ya kitenzi na -w hubainisha muda wa kuisha kwa muunganisho ambao hauwezi kuanzishwa.

$ nc -v -w 2 z 192.168.56.1 22     #scan a single port
OR
$ nc -v -w 2 z 192.168.56.1 22 80  #scan multiple ports
OR
$ nc -v -w 2 z 192.168.56.1 20-25  #scan range of ports

Netcat hukuruhusu kuhamisha faili kati ya kompyuta mbili za Linux au seva na mifumo hii yote lazima iwe na nc iliyosakinishwa.

Kwa mfano, kunakili faili ya picha ya ISO kutoka kwa kompyuta moja hadi nyingine na kufuatilia maendeleo ya uhamisho (kwa kutumia pv shirika), endesha amri ifuatayo kwenye kompyuta ya mtumaji/seva (ambapo faili ya ISO ipo).

Hii itaendesha nc katika hali ya kusikiliza (-l bendera) kwenye mlango wa 3000.

$ tar -zcf - debian-10.0.0-amd64-xfce-CD-1.iso  | pv | nc -l -p 3000 -q 5

Na kwenye kompyuta ya mpokeaji/mteja, endesha amri ifuatayo ili kupata faili.

$ nc 192.168.1.4 3000 | pv | tar -zxf -

Unaweza pia kutumia Netcat kuunda seva rahisi ya ujumbe wa mstari wa amri papo hapo. Kama ilivyo katika mfano wa matumizi uliopita, nc lazima isakinishwe kwenye mifumo yote miwili inayotumika kwa chumba cha mazungumzo.

Kwenye mfumo mmoja, endesha amri ifuatayo ili kuunda usikilizaji wa seva ya gumzo kwenye bandari 5000.

$ nc -l -vv -p 5000

Kwenye mfumo mwingine, endesha amri ifuatayo ili kuzindua kikao cha gumzo kwa mashine ambayo seva ya ujumbe inafanya kazi.

$ nc 192.168.56.1 5000

Fuata chaguo la -l la amri ya nc iliyotumiwa kuunda seva ya msingi, isiyo salama ya wavuti kutoa faili za wavuti tuli kwa madhumuni ya kujifunza. Ili kuonyesha hili, unda faili ya .html kama inavyoonyeshwa.

$ vim index.html

Ongeza mistari ifuatayo ya HTML kwenye faili.

<html>
        <head>
                <title>Test Page</title>
        </head>
        <body>
                      <p>Serving this file using Netcat Basic HTTP server!</p>
        </body>
</html>

Hifadhi mabadiliko kwenye faili na uondoke.

Kisha tumikia faili iliyo hapo juu juu ya HTTP kwa kuendesha amri ifuatayo, ambayo itawezesha seva ya HTTP kufanya kazi mfululizo.

$ while : ; do ( echo -ne "HTTP/1.1 200 OK\r\n" ; cat index.html; ) | nc -l -p 8080 ; done

Kisha fungua kivinjari cha wavuti na unaweza kufikia maudhui kwa kutumia anwani ifuatayo.

http://localhost:8080
OR
http://SERVER_IP:8080

Kumbuka kuwa unaweza kusimamisha seva ya HTTP ya Netcat kwa kubofya [Ctrl+ C].

Matumizi mengine muhimu ya Netcat ni kusuluhisha maswala ya muunganisho wa seva. Hapa, unaweza kutumia Netcat kuthibitisha ni data gani seva inatuma kwa kujibu maagizo yaliyotolewa na mteja.

Amri ifuatayo inapata ukurasa wa nyumbani wa example.com.

$ printf "GET / HTTP/1.0\r\n\r\n" | nc text.example.com 80

Matokeo ya amri iliyo hapo juu ni pamoja na vichwa vilivyotumwa na seva ya wavuti ambavyo vinaweza kutumika kwa madhumuni ya utatuzi.

Unaweza pia kutumia Netcat kupata mabango ya bandari. Katika kesi hii, itakuambia ni huduma gani inayoendesha nyuma ya bandari fulani. Kwa mfano ili kujua ni aina gani ya huduma inayoendesha nyuma ya bandari 22 kwenye seva maalum, endesha amri ifuatayo (badilisha 192.168.56.110 na anwani ya IP ya seva inayolengwa). Alama ya -n ina maana ya kuzima utafutaji wa DNS au huduma.

$ nc -v -n 192.168.56.110 80

Netcat pia inasaidia uundaji wa soketi za mkondo za kikoa cha UNIX. Amri ifuatayo itaunda na kusikiliza kwenye soketi ya mkondo ya kikoa cha UNIX.

$ nc -lU /var/tmp/mysocket &
$ ss -lpn | grep "/var/tmp/"

Unaweza pia kuendesha Netcat kama mlango wa nyuma. Walakini, hii inahitaji kazi zaidi. Ikiwa Netcat imesakinishwa kwenye seva inayolengwa, unaweza kuitumia kuunda mlango wa nyuma, ili kupata kidokezo cha amri ya mbali.

Ili kutekeleza mlango wa nyuma unahitaji Netcat kusikiliza kwenye mlango uliochaguliwa (k.m. port 3001) kwenye seva inayolengwa na kisha unaweza kuunganisha kwenye mlango huu kutoka kwa mashine yako kama ifuatavyo.

Hii ndiyo amri inayokusudiwa kutekelezwa kwenye seva ya mbali ambapo chaguo la -d huzima usomaji kutoka kwa stdin, na -e hubainisha amri ya kutekelezwa kwenye mfumo lengwa.

$ nc -L -p 3001 -d -e cmd.exe 

Mwisho kabisa, Netcat inaweza kutumika kama proksi kwa huduma/itifaki tofauti ikijumuisha HTTP, SSH, na nyingine nyingi. Kwa habari zaidi, tazama ukurasa wake wa mtu.

$ man nc

Katika nakala hii, tumeelezea mifano 8 ya utumiaji ya amri ya Netcat. Iwapo unajua kesi zozote za matumizi ya vitendo, shiriki nasi kupitia fomu ya maoni iliyo hapa chini. Unaweza kuuliza swali pia.