Команда Netcat (nc)

Thank you for reading this post, don't forget to subscribe!

Netcat (или nc) – это ути­ли­та команд­ной стро­ки, кото­рая чита­ет и запи­сы­ва­ет дан­ные через сете­вые под­клю­че­ния, исполь­зуя про­то­ко­лы TCP или UDP. Это одна из самых мощ­ных инстру­мен­тов в арсе­на­ле сете­вых и систем­ных адми­ни­стра­то­ров, кото­рый счи­та­ет­ся швей­цар­ским армей­ским ножом сете­вых инструментов.

Netcat явля­ет­ся крос­сплат­фор­мен­ным и досту­пен для Linux, macOS, Windows и BSD. Вы може­те исполь­зо­вать Netcat для отлад­ки и мони­то­рин­га сете­вых под­клю­че­ний, ска­ни­ро­ва­ния откры­тых пор­тов, пере­да­чи дан­ных в каче­стве прок­си-сер­ве­ра и мно­го­го дру­го­го. Пакет Netcat пред­уста­нов­лен в MacOS и попу­ляр­ных дис­три­бу­ти­вах Linux, таких как Ubuntu.

 

Самый основ­ной син­так­сис ути­ли­ты Netcat име­ет сле­ду­ю­щий вид:

В Ubuntu вы може­те исполь­зо­вать либо netcat или nc. Обе они явля­ют­ся сим­во­ли­че­ски­ми ссыл­ка­ми на вер­сию Netcat для openBSD.

По умол­ча­нию Netcat пыта­ет­ся уста­но­вить TCP-соеди­не­ние с ука­зан­ным хостом и пор­том. Если вы хоти­те уста­но­вить UDP-соеди­не­ние, исполь­зуй­те -uопцию:

Ска­ни­ро­ва­ние пор­тов явля­ет­ся одним из наи­бо­лее рас­про­стра­нен­ных спо­со­бов исполь­зо­ва­ния Netcat. Вы може­те ска­ни­ро­вать один порт или диа­па­зон портов.

Напри­мер, для поис­ка откры­тых пор­тов в диа­па­зоне 20-80 вы долж­ны исполь­зо­вать сле­ду­ю­щую команду:

Опция -z ска­жет nc ска­ни­ро­вать толь­ко откры­тые пор­ты, без отправ­ки каких – либо дан­ных на них и -v дает воз­мож­ность предо­став­ле­ния более подроб­ной информации.

Вывод будет выгля­деть при­мер­но так:

Если вы хоти­те рас­пе­ча­тать толь­ко стро­ки с откры­ты­ми пор­та­ми, вы може­те отфиль­тро­вать резуль­та­ты с помо­щью коман­ды grep.

Вы так­же може­те исполь­зо­вать Netcat для поис­ка сер­вер­но­го про­грамм­но­го обес­пе­че­ния и его вер­сии. Напри­мер, если вы отправ­ля­е­те коман­ду «EXIT» на сер­вер по стан­дарт­но­му SSH-пор­ту 22:

Вывод будет выгля­деть при­мер­но так:

Для ска­ни­ро­ва­ния пор­тов UDP про­сто добавь­те пара­метр -u в коман­ду, как пока­за­но ниже:

В боль­шин­стве слу­ча­ев Nmap луч­ше, чем Netcat, для ска­ни­ро­ва­ния слож­ных портов.

 

Netcat мож­но исполь­зо­вать для пере­да­чи дан­ных с одно­го хоста на дру­гой, создав базо­вую модель клиент/сервер.

Это рабо­та­ет, настро­ив Netcat на про­слу­ши­ва­ние опре­де­лен­но­го пор­та (исполь­зуя опцию -l) на при­ни­ма­ю­щем хосте, а затем уста­но­вив обыч­ное TCP-соеди­не­ние с дру­гим хостом и отпра­вив файл через него.

На при­е­ме запу­сти­те сле­ду­ю­щую коман­ду, кото­рая откро­ет порт 5555 для вхо­дя­ще­го соеди­не­ния и пере­на­пра­вит вывод в файл:

С узла-отпра­ви­те­ля под­клю­чи­тесь к узлу-полу­ча­те­лю и отправь­те файл:

Для пере­да­чи ката­ло­га вы може­те исполь­зо­вать tar для архи­ви­ро­ва­ния ката­ло­га на исход­ном хосте и для извле­че­ния архи­ва на конеч­ном хосте.
На при­ни­ма­ю­щем хосте настрой­те сред­ство Netcat на про­слу­ши­ва­ние вхо­дя­ще­го соеди­не­ния через порт 5555. Вхо­дя­щие дан­ные пере­да­ют­ся в коман­ду tar, кото­рая извле­чет архив:

На отправ­ля­ю­щем хосте упа­куй­те ката­лог и отправь­те дан­ные, под­клю­чив­шись к про­цес­су про­слу­ши­ва­ния nc на при­ни­ма­ю­щем хосте:

Вы може­те наблю­дать за про­грес­сом пере­да­чи на обо­их кон­цах. После завер­ше­ния вве­ди­те CTRL+C, что­бы закрыть соединение.

 

Про­це­ду­ра созда­ния онлайн-чата меж­ду дву­мя или более хоста­ми такая же, как и при пере­да­че файлов.

На пер­вом хосте запу­сти­те про­цесс Netcat для про­слу­ши­ва­ния пор­та 5555:

Со вто­ро­го хоста выпол­ни­те сле­ду­ю­щую коман­ду для под­клю­че­ния к пор­ту прослушивания:

Теперь, если вы набе­ре­те сооб­ще­ние и нажме­те ENTER, оно будет пока­за­но на обо­их хостах.

Что­бы закрыть соеди­не­ние, вве­ди­те CTRL+C.

 

Несмот­ря на то, что есть намно­го луч­шие инстру­мен­ты для HTTP-запро­сов, такие как curl, вы так­же може­те исполь­зо­вать Netcat для отправ­ки раз­лич­ных запро­сов на уда­лен­ные серверы.

Напри­мер, что­бы полу­чить спра­воч­ную стра­ни­цу Netcat с веб-сай­та OpenBSD, введите:

Пол­ный ответ, вклю­чая заго­лов­ки HTTP и код HTML, будет напе­ча­тан в терминале.

 

Из этой ста­тьи вы узна­ли, как исполь­зо­вать ути­ли­ту Netcat для уста­нов­ки и тести­ро­ва­ния соеди­не­ний TCP и UDP.

Для полу­че­ния допол­ни­тель­ной инфор­ма­ции посе­ти­те спра­воч­ную стра­ни­цу Netcat и про­чи­тай­те обо всех дру­гих мощ­ных пара­мет­рах коман­ды Netcat.