HexInject- универсальный пакетный инжектор и сниффер

HexInject- универсальный пакетный инжектор и сниффер

Life-Hack

В этом выпуске было переписано много непереносимых частей кода для того, чтобы улучшить переносимость и больше соответствовать стандартам. Этот выпуск также расширяет количество протоколов, поддерживаемых механизмом автоматического подсчета сумм и определения размеров.

Скачать HexInject

В частности, был добавлен протокол IPv6, даже если он инкапсулирован в пакет IPv4 (и наоборот). Здесь приведены протоколы, которые поддерживаются механизмом автоматического подсчета сумм на данный момент:

  • ipv4
  • ipv6
  • tcp
  • udp
  • icmp
  • icmp6
  • igmp
  • ipv6 инкапсулированный в ipv4
  • ipv4 инкапсулированный в ipv6

Пакетный инжектор: Свойства HexInject

  • Введение шестнадцатеричных и сырых данных в сеть
  • Поиск данных в шестнадцатеричном или необработаном формате в сети
  • Данные могут быть легко переданы, и ими можно с легкостью управлять
  • Необработанный сетевой доступ cmdline framework
  • Автоматически устанавливает верную контрольную сумму (IP, TCP, UDP, ICMP)
  • Автоматически устанавливает верную длину пакета (IP, TCP, UDP, ICMP)

Вступление

HexInject является очень универсальным пакетным инжектором и сниффером, который предоставляет собой фреймворк командной строки для необработанного сетевого доступа.

Он был разработан, чтобы работать вместе с другими утилитами командной строки, и по этой причине он облегчает создание мощных скриптов оболочки, которые способны считывать, перехватывать и модифицировать сетевой трафик прозрачным способом.

Одним словом, почему вы должны рассматривать hexinject ? Потому что он способен ввести что угодно в сеть, и для протоколов TCP/IP он автоматически подсчитывает контрольную сумму и размер пакета.

Есть несколько инструментов, которые предоставляют подобного рода функциональность, и лишь немногие из них могут быть объединены с утилитами командной строки. Опробуйте его!

HexInject как сниффер

Hexinject может быть использован в качестве сниффера, когда задана опция «-s». Он может отобразить сетевой трафик, как в шестнадцатеричном, так и в необработанном формате.

Пример:

Но как насчет того, чтобы читать в режиме реального времени, что проходит в сети? Например, мы можем печатать в читаемом формате некоторые HTTP-заголовки:

root@backtrack-base# hexinject -s -i eth0 -r | strings | grep 'Host:'

Host: youtube.com

Host: www.youtube.com

Host: s.ytimg.com

...

В этом случае должен быть использован режим «raw dump». Вместе с «strings» мы извлекаем весь читабельный текст в сети, и затем мы можем использовать «grep», чтобы с легкость получить что нам нужно …

HexInject как инжектор

Hexinject может быть использован как инжектор, когда задана опция « -p «. Он может вводить сетевой трафик, как в шестнадцатеричном, так и в необработанном формате.

Пример:

root@backtrack-base# echo "01 02 03 04" | hexinject -p -i eth0


выдаст следующий результат в wireshark:

Давайте немножко займемся магией

С помощью hexinject мы с легкостью можем модифицировать сетевые пакеты. Например, мы можем преобразовать ARP запрос в ARP ответ с помощью изменения всего лишь одного бита пакета:

root@backtrack-base# hexinject -s -i eth0 -c 1 -f 'arp' | replace '06 04 00 01' '06 04 00 02' | hexinject -p -i eth0

Wireshark дамп:

Мы передали всего два hexinject (один сниффер, второй инжектор) и утилиту командной строки « replace «. В этом примере опция « -f » используется, чтобы предоставить пользовательский pcap фильтр.

Ниже приведен последний пример, чтобы подвести итог презентации данного инструмента. Простой прозрачный мост, построенный с использованием только двух строк bash:

root@backtrack-base# hexinject -s -i eth0 -c 1 -f 'src host 192.168.1.9' | hexinject -p -i eth1

root@backtrack-base# hexinject -s -i eth1 -c 1 -f 'dst host 192.168.1.9' | hexinject -p -i eth0


И, вуаля! Прозрачный мост для хоста 192.168.1.9. На самом деле, этот пример может быть улучшен, он просто демонстрирует универсальность инструментов.

Можно даже эмулировать NAT, своевременно заменяя IP:

root@backtrack-base# hexinject -s -i eth0 -c 1 -f 'src host 192.168.1.9' | replace 'C0 A8 01 09' 'C0 A8 01 04' | hexinject -p -i eth1

root@backtrack-base# hexinject -s -i eth1 -c 1 -f 'dst host 192.168.1.9' | replace 'C0 A8 01 04' 'C0 A8 01 09' | hexinject -p -i eth0

Примечание: этим двум примерам не хватает управления MAC адресами, это может быть реализовано с помощью помещения скрипта в середину программного канала. Тем не менее, эти примеры дают понимание того, что может быть сделано.

Необработанный сетевой доступ

Вы все еще думаете, что получения доступа к необработанному беспроводному трафику требует странных и сложных библиотек и это сложно реализовать? Это абсолютно не является правдой: с помощью hexinject даже простой скрипт bash может прочесть необработанный беспроводной трафик на интерфейсе монитора.

Прежде всего, интерфейс должен быть переведен в режим отслеживания:

root@backtrack-base# airmon-ng start wlan1

Interface Chipset Driver

wlan1 RTL8187 rtl8187 - [phy0]

(monitor mode enabled on mon0)


Затем можно перехватить, например, фрейм маяка, сгенерированный точкой доступа:

Точка доступа имеет ESSID "DEFAULT" (По умолчанию).

Для извлечения этой информации мы можем использовать свойство, представленное в hexinject v1.3 — conversion modes (режимы конвертации). Эти оперативные режимы просто конвертируют шестнадцатеричную строку в необработанную и наоборот. Давайте предположим, что мы сохранили последний пакет в файле wifi_frame.hex (ESSID будет четко выведен на экран с некоторыми ненужными данными…):

root@backtrack-base# cat wifi_frame.hex | hexinject -y | strings

DEFAULT

$0H`l


Возможности поиска являются неограниченными, что самое интересное, так это ввод необработанных беспроводных фреймов. Для вставки фрейма нам нужна минимальная допустимая преамбула (в противном случае интерфейс не будет ничего вводить):

root@backtrack-base# cat minimal_beacon.hex

00 00 0D 00 04 80 02 00 02 00 00 00 00 80 00 00 00


Чтобы избегнуть сложностей, мы готовим необработанное сообщение ascii для введения и преобразования его в шестнадцатеричную строку (добавив 00 в конце для завершения строки):

root@backtrack-base# echo 'Hello, world!' | hexinject -x

48 65 6C 6C 6F 2C 20 77 6F 72 6C 64 21 0A 00


Теперь мы можем вводить все, что захотим:

root@backtrack-base# cat assembled_packet.hex | hexinject -p -i mon0


Если другая машина хочет прочитать сообщение:

root@backtrack-base# hexinject -s -r -i mon1 | strings

Hello, world!


Это очень легко написать, даже в bash , простой инструмент обмена сообщений, который использует необработанные беспроводные фреймы (даже если такой инструмент звучит очень странно). Или вы можете использовать hexinject, как беспроводной fuzzer для поиска уязвимостей в беспроводных устройствах операционной системы. Это очень просто: не стоит колебаться, чтобы попробовать

Другие возможности: USB

Так как pcap библиотеки могут перехватывать USB трафик, hexinject способен просканировать ваши USB порты. Вы можете перехватить необработанные USB пакеты, таким же образом вы используете hexinject на своих сетевых интерфейсах:

root@backtrack-base# sudo hexinject -s -i usbmon3 | awk -f mouse_click.awk

left click

click released

central click

click released

left+right click

click released


Разбор пакетов и забавная печать

Начиная с версии 1.4, hexinject может разбирать пакеты и выводить на экран поля перехваченных пакетов, а начиная с версии 1.5, существует инструмент prettypacket, который фактически проводит разбор пакетов и выводит их на экран.

Это свойство очень легко в использовании, и позволяет детально проверить каждую часть поддерживаемого протокола:

С помощью опции -x, prettypacket может вывести на экран отдельный разобранный пакет указанного протокола, и прочитать его из своего набора примеров пакетов. Я использую эту функцию для получения быстрой ссылки на различные заголовки протоколов.

Так что, если вам нужно знать размер поля TCP Sequence Number, вам больше не нужно захватывать пакет или искать диаграмму в Интернете, просто используйте:

root@backtrack-base#prettypacket -x tcp


На данный момент поддерживаются следующие протоколы: tcp, udp, icmp, igmp, arp, stp (и, конечно же, протоколы более низких слоев: ethernet, ip).

Добавлять новые протоколы очень легко: вы можете добавить вашу функцию разбора в файл prettypacket.c, используя предоставленный простой интерфейс.

Источник

Report Page