Анонимное сканирование портов при помощи hping3
Для реализации понадобится уверенные знания работы TCP/IP и желание понять. В результате мы получим возможность сканировать удаленную машину на открытые порты от чужого адреса по следующией схеме (картинка из мануала по nmap):
Теоретическое введение
Как можно увидеть на википедии, каждому отправляемому IP пакету назначается его номер (правда фрагментированные пакеты имеют один номер), хранимый в специальном 16ти битном поле. При переполнении поля счет начинается с нуля. Сделав 2 замера номеров сетевого пакета можно судить о сетевой активности наблюдаемого компьютера.
Установка TCP соединения происходит по схеме «тройного рукопожатия». Клиент посылает серверу пакет с установленным флагом SYN, сигнализирующим предложение создать соединение. В случае, если серверу удается создать socket для соединения, то он ответит клиенту пакетом с встречным предложением SYN и запросом на подтверждение ACK (где в свою очередь клиент подтверждает свое желание о создании TCP соединения пакетом с флагом ACK). В случае, если сервер отказывает в соединении, он отсылает клиенту отказ в виде пакета с флагом RST, на что свою очередь клиент грустно отмалчивается. Базируясь на этом различии мы и построим сканирование открытых портов от чужого имени.
Практика
Как заметил уважаемый vanaf, метод будет работать если сканируемый и сканирующий хосты находятся в одной подсети или если в разных то сканирующий и подставной хосты должны находятся в одной подсети.
Для реализации мы будем использовать один из основных инструментов специалиста по компьютерной безопасности hping3. В схеме участвуют 3 машины, условно названные атакующей, целевой и подставной, от имени которой мы будем вести сканирование. В роли подставной машины необходимо выбрать такую, которая генерирует минимальное количество трафика (в идеале не генерирует вовсе). Для того, что бы узнать эту интимную подробность подставной машины, мы будем общаться с ней и наблюдать за изменением номеров пакетов. В идеале, номер пакета при каждой нашей коммуникацией с ней должен возрастать на единицу, что означает что за этот промежуток времени она не вела больше коммуникаций. Для этого запустим hping следующим образом:
root@Atom:~# hping3 -r 192.168.2.140
HPING 192.168.2.140 (eth0 192.168.2.140): NO FLAGS are set, 40 headers + 0 data bytes
len=46 ip=192.168.2.140 ttl=128 sport=0 flags=RA seq=0 win=0 rtt=0.2 ms
len=46 ip=192.168.2.140 ttl=128 sport=0 flags=RA seq=1 win=0 rtt=0.3 ms
len=46 ip=192.168.2.140 ttl=128 sport=0 flags=RA seq=2 win=0 rtt=0.2 ms
len=46 ip=192.168.2.140 ttl=128 sport=0 flags=RA seq=3 win=0 rtt=0.2 ms
len=46 ip=192.168.2.140 ttl=128 sport=0 flags=RA seq=4 win=0 rtt=0.2 ms
^C
— 192.168.2.140 hping statistic —
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 0.2/0.2/0.3 ms
Ключ -r говорит hping3 показывать прирост номера пакета. Как видим, с каждой нашей коммуникацией он растет на 1, то есть свободен от лишнего общения. Поставим этот процесс на бесконечный «ping» для мониторинга изменения id пакета.
Далее, нам надо на целевую машину отправить предложение установить TCP соединение, причем предложение составленное специфическим образом: в поле источника пакета установим адрес подставной машины, на которую и будут идти ответы. Если указанный порт на целевой машине закрыт, то она пошлет подставной машине отказ (RST), что проигнорирует подставная машина. Если же порт открыт. то целевая машина пошлет встречное предложение установить соединение (SYN + ACK), на что подставная машина будет вынуждена ответить отказом, то есть пакетом с флагом (RST). Именно здесь мы обнаружим, что наша ранее отдыхающая машина кому-то что-то сказала именно в тот момент, когда мы отослали предложение на соединение от ее имени. Для избежания случайностей, эксперимент повторяется.
Послать запрос на соединение от чужого имени можно следующим образом:
root@Atom:~# hping3 -c 1 -S -a 192.168.2.140 192.168.2.1 -p 5222
HPING 192.168.2.1 (eth0 192.168.2.1): S set, 40 headers + 0 data bytes
— 192.168.2.1 hping statistic —
1 packets transmitted, 0 packets received, 100% packet loss
Где: -c 1 означает посылку только одного пакета;
-S установить флаг SYN
-a 192.168.2.140 в роли источника пакета установить адрес 192.168.2.140 (адрес подставной машины в нашем случае)
192.168.2.1 адрес целевой машины
-p 5222 целевой TCP порт
Ответа на пакет мы не получили потому что он ушел подставной машине вероятно вынуждать ее ответить отказом, что мы и обнаружим.
В случае, если порт открыт, мы увидим следующую картину:
len=46 ip=192.168.2.140 ttl=128 sport=0 flags=RA seq=4 win=0 rtt=0.2 ms
len=46 ip=192.168.2.140 ttl=128 sport=0 flags=RA seq=5 win=0 rtt=0.2 ms
len=46 ip=192.168.2.140 ttl=128 sport=0 flags=RA seq=6 win=0 rtt=0.2 ms
len=46 ip=192.168.2.140 ttl=128 sport=0 flags=RA seq=7 win=0 rtt=0.2 ms
len=46 ip=192.168.2.140 ttl=128 sport=0 flags=RA seq=8 win=0 rtt=0.2 ms
Видите на 3й строке что подставная машина в тот самым момент успела пообщаться с кем-то еще? Скорее всего это отказ (RST) на предложение о взаимности (SYN + ACK), так подставная машина на самом деле не слала SYN. Для верности эксперимент повторяется.
Для удобства можно использовать ключи -i для задачи временного интервала и -p ++ увеличения порта на 1 с каждым пакетом.
Заключение
Этим же методом можно и забанить ничего не подозревающую подставную машину, если на целевой стоит система обнаружения вторжений.
Это лишь один из множества впечатляющих применений hping3. Им можно пинговать когда icmp запрещен (он посылает пакет по TCP по умолчанию на нулевой порт). Так же может использоваться для передачи файлов даже через строго настроенные фаерволлы (хоть через пинг), работать как traceroute не только на основе icmp, но и UDP и TCP, помогает определить удаленную ОС, может быть весьма специфичным трояном и многое многое другое. Очень рекомендую познакомится с ним поближе. У него хороший HOW-TO 😉
Если Вам понравилось, принимаю благодарности.
UPD:
Спасибо jcmvbkbc за информацию о том, что аналогичный трюк можно сделать при помощи nmap: nmap.org/book/idlescan.html
- port scan
- скрытое сканирования
- hping
Dos атака с Hping3
Все наверное знакомы со словом DOS атака (Denial Of service) и с его значением. Есть много способов как сделать(инициировать) DOS атаку. Давайте сначала поймем саму суть этой атаки. Так как в предыдущем уроке я объяснил как работает Wireshark, то вы должны понимать уже что такое пакеты, сетевой трафик и знать приблизительно как работает сеть. Сегодня мы окунемся глубже во всем чтобы смогли сделать мощные DOS атаки.
Что такое Dos атака?
Dos атака — атака на определенную сеть имея цель вывести сеть из строя загрузив её пере избыточным бесполезным трафиком.
Бывает много типов DOS атак. К примеру: все увлекались открытием множество терминалов и пинговали сайты или определенные Ip-адресы в своей сети. Этот тип атаки называется ICMP Flooding. Также бывают SYN Flood, Teardrop, Nuke и тгд.
Для успешного выполнения такой атаки нужно знать TCP/IP базу.
TCP/IP базовые знания
Давайте представим что клиенту нужные данные с какого-то сервера, для этого нужно осуществить подключение. Оно происходит таким образом:
- Клиент отправляет SYN пакет к Серверу
- Сервер отвечает с SYN+ACK пакетом
- Клиент отправляет ACK пакет
- Соединение установленно
SYN — SYNchronize (Осуществить подключение)
ACK — ACKnowledgement (Подтверждение к клиенту что SYN принят)

Теперь когда вы поняли как работают соединения между клиентами и серверами вы сможете делать мощные DOS атаки.
Что нужно для DOS атаки
Нам нужен установленный Hping3 . Он уже установлен в стандартном пакете Kali Linux и Backtrack.
Что такое

Hping3 является сетевым инструментом способен отправлять пользовательские пакеты TCP/IP и отображать их как пинг программа. Также он способен сканировать сети, находить открытые порты, проходить сквозь Firewall, и многое другое. Его полные возможности мы раскроем в будущем.
Команды Hping3 для Dos атаки
Как я уже говорил Hping3 весьма сериозный инструмент. Вот нужные команды для выполнения Dos атаки.
- –flood : отправляет пакеты с самой большой скоростью без ответки.
- -I : выбираем нужный интерфейс если у вас их больше
- -1 : ICMP мод
- -a : UDP мод
- -p : назначение порта
- -S : выбираем SYN флаг
Dos атака с Hping3

К примеру вы хотите атаковать IP адрес 11.11.11.11 с пинг запросами от IP адреса qq.qq.qq.qq
hping3 -1 --flood -a qq.qq.qq.qq 11.11.11.11
Если хотите зафлудить IP 11.11.11.11 на порте 80 с SYN запросами с ложного IP qq.qq.qq.qq
hping3 -S -a qq.qq.qq.qq --flood -p 80 11.11.11.11
Hping3 будет отправлять SYN запросы на порте 80 . Жертва будет вынуждена отвечать с SYN+ACK . Так как мы используем выдуманный IP-адрес соединение никогда не осуществится. Это будет нагружать трафик жертвы и употреблять ее ресурсы тем самым жертва будет перегружена пустым трафиком.
Стандартные опции Hping3 это атаковать TCP порты. Чтобы изменить атаку на UDP порт просто используем команду -2 .
hping3 --flood -a qq.qq.qq.qq -2 -p 443 11.11.11.11.
Теперь Hping будет посылать запросы на указанный UDP порт. Как пример я взял 443 .
Это всего лишь капля в море по сравнению того как профессионалы используют данный инструмент. В следующих уроках мы покажем вам другие очень полезные способности этой программы.
Команда hping: опции, ключи и примеры использования
Общие команды – Общие команды, присущие различным операционным системам.

hping
Command-line oriented TCP/IP packet assembler and analyzer. Inspired by the ping command. More information: http://www.hping.org.
- Ping localhost over TCP:
- Ping an IP address over TCP on a specific port:
- Ping an IP address over UDP on port 80:
- Scan a set of TCP ports on a specific IP address:
- Perform a charge test on port 80:
Примеры кода, демонстрирующие общие подходы в программировании или же решающие небольшие прикладные задачи. Языки программирования и библиотеки, позволяющие эффективно решать задачи разработки. Объектно-ориентированное программирование, функциональное программирование и прочие подходы и …

Трюки Bash
Полезные заметки по работе с командной строкой: bash и прочие *sh. Однострочники, скрипты, позволяющие решать большие и малые задачи администрирования и настройки Юникс систем. Zsh для современного MacOS, Bash для …

Заметки о настройке различных IT-штуковин. Настройка, допиливание, полировка. Конфигурируем приложения и тюнингуем сервера. Полезные параметры и ключи запуска программ. Увеличиваем скорость, уменьшаем отклик, ускоряем работу и улучшаем результаты работы. Объясняем …

Терминал/Консоль
Команды и инструкции терминала (консоли) Linux, MacOS, Windows и прочих операционных систем. Трюки и особенности командных оболочек, скрипты для администрирования Unix. Программирование и скриптование Windows и Linux, тонкая настройка Macos. …

Также может быть вам интересно:
- Как получить дерево директорий на Bash одним однострочником
- Python: Функции
- Python: Встроенные типы данных (list, set, dict, etc)
- Python: типы данных, переменные, логическое ветвление и циклы
- Как сделать свою middleware в Django (с примерами)
Свежее на «Цифре»
MessageId или как дебажить систему с минимумом проблем
Программы, 50 дней назад
Проверочный список для выпуска промышленных приложений с иллюстрациями
Работа и управление, 91 день назад
В Google Pixel и Windows Snipping Tool есть возможность восстановления обрезанных изображений
Новости, 23.03.2023
Два подарка «под ёлочку» от Heroes of Might and Magic
Новости, 25.12.2022
Вышел Pulsar – редактор кода на основе Atom
Новости, 25.12.2022
Ленивый backup PostgreSQL
Программы, 17.12.2022
Google анонсировала OSV-Scanner: сканер уязвимостей в программных проектах
Новости, 16.12.2022

Gitea запускает коммерческую версию, а недовольные – форк Forĝejo
На днях группа бывших разработчиков Gitea решили создать на базе хостинга кода Gitea свою версию проекта – «Forgejo». Причиной тому …

Пользователи и их создание в Django — своя регистрация на сайте
Если вашим сайтом должны активно пользоваться несколько человек, то полезно их различать, а значит — надо уметь создавать пользователей, либо …

Новый синтаксис старой команды with в Python 3.10
Как же долго моё чувство прекрасного страдало… Но в Python 3.10 появился новый парсер синтаксических конструкций Python!

Добавляем постраничную пагинацию на Django сайт
На сайтах часто встречаются многостраничные объекты: список товаров, список заметок и т.д. Поэтому важно уметь добавить навигацию по страницам на …

Новый оператор match-case в Python
В новой версии Python (3.10) появится новый оператор. Новый оператор сопоставления по шаблону (match-case).

Нет слов, одни. однострочники
На днях вышел пост со списком полезных однострочников для JavaScript программистов. Памятуя Perl-овую молодость, заглянул туда.

Добавляем переменные в контекст Django шаблонов (свой контекст-процессор)
В Django вы можете передавать данные в шаблоны посредством контекстов. Контекст передаётся из контроллера (view в терминах Django), однако, если …

Пример своей консольной команды в Django проекте
Если вы работали с Django проектом, то, скорее всего, запускали команды из консоли (manage.py). В Django есть простой способ писать …

Разграничение прав доступа на Django сайте
Почти на любом веб-сайте необходимо разделять пользователей на группы и предоставлять им разные возможности. В Django есть довольно серьёзная система …
Команда hping3: опции, ключи и примеры использования
Общие команды – Общие команды, присущие различным операционным системам.
hping3
Advanced ping utility which supports protocols such TCP, UDP, and raw IP. Best run with elevated priviledges. More information: https://github.com/antirez/hping.
- Ping a destination with 4 ICMP ping requests:
- Scan TCP port 80, scanning from the specific local source port 5090:
- Traceroute using a TCP scan to a specific destination port:
hping3 —traceroute —verbose —syn —destport > >
- Perform a TCP ACK scan to check if a given host is alive:
Примеры кода, демонстрирующие общие подходы в программировании или же решающие небольшие прикладные задачи. Языки программирования и библиотеки, позволяющие эффективно решать задачи разработки. Объектно-ориентированное программирование, функциональное программирование и прочие подходы и …

Трюки Bash
Полезные заметки по работе с командной строкой: bash и прочие *sh. Однострочники, скрипты, позволяющие решать большие и малые задачи администрирования и настройки Юникс систем. Zsh для современного MacOS, Bash для …

Заметки о настройке различных IT-штуковин. Настройка, допиливание, полировка. Конфигурируем приложения и тюнингуем сервера. Полезные параметры и ключи запуска программ. Увеличиваем скорость, уменьшаем отклик, ускоряем работу и улучшаем результаты работы. Объясняем …

Терминал/Консоль
Команды и инструкции терминала (консоли) Linux, MacOS, Windows и прочих операционных систем. Трюки и особенности командных оболочек, скрипты для администрирования Unix. Программирование и скриптование Windows и Linux, тонкая настройка Macos. …

Также может быть вам интересно:
- Как получить дерево директорий на Bash одним однострочником
- Python: Функции
- Python: Встроенные типы данных (list, set, dict, etc)
- Python: типы данных, переменные, логическое ветвление и циклы
- Как сделать свою middleware в Django (с примерами)
Свежее на «Цифре»
MessageId или как дебажить систему с минимумом проблем
Программы, 50 дней назад
Проверочный список для выпуска промышленных приложений с иллюстрациями
Работа и управление, 91 день назад
В Google Pixel и Windows Snipping Tool есть возможность восстановления обрезанных изображений
Новости, 23.03.2023
Два подарка «под ёлочку» от Heroes of Might and Magic
Новости, 25.12.2022
Вышел Pulsar – редактор кода на основе Atom
Новости, 25.12.2022
Ленивый backup PostgreSQL
Программы, 17.12.2022
Google анонсировала OSV-Scanner: сканер уязвимостей в программных проектах
Новости, 16.12.2022

Gitea запускает коммерческую версию, а недовольные – форк Forĝejo
На днях группа бывших разработчиков Gitea решили создать на базе хостинга кода Gitea свою версию проекта – «Forgejo». Причиной тому …

Пользователи и их создание в Django — своя регистрация на сайте
Если вашим сайтом должны активно пользоваться несколько человек, то полезно их различать, а значит — надо уметь создавать пользователей, либо …

Новый синтаксис старой команды with в Python 3.10
Как же долго моё чувство прекрасного страдало… Но в Python 3.10 появился новый парсер синтаксических конструкций Python!

Добавляем постраничную пагинацию на Django сайт
На сайтах часто встречаются многостраничные объекты: список товаров, список заметок и т.д. Поэтому важно уметь добавить навигацию по страницам на …

Новый оператор match-case в Python
В новой версии Python (3.10) появится новый оператор. Новый оператор сопоставления по шаблону (match-case).

Нет слов, одни. однострочники
На днях вышел пост со списком полезных однострочников для JavaScript программистов. Памятуя Perl-овую молодость, заглянул туда.

Добавляем переменные в контекст Django шаблонов (свой контекст-процессор)
В Django вы можете передавать данные в шаблоны посредством контекстов. Контекст передаётся из контроллера (view в терминах Django), однако, если …

Пример своей консольной команды в Django проекте
Если вы работали с Django проектом, то, скорее всего, запускали команды из консоли (manage.py). В Django есть простой способ писать …

Разграничение прав доступа на Django сайте
Почти на любом веб-сайте необходимо разделять пользователей на группы и предоставлять им разные возможности. В Django есть довольно серьёзная система …