반응형

작성일: 2023년 9월 25일

 

파이썬으로 작성된 패킷 조작 라이브러리.

https://scapy.net/

 

 

 

 

Scopy - README.MD

https://github.com/secdev/scapy

 

Tutorial

https://scapy.readthedocs.io/en/latest/usage.html#interactive-tutorial

 

Scopy in 15 minutes

https://github.com/secdev/scapy/blob/master/doc/notebooks/Scapy%20in%2015%20minutes.ipynb

 

HTTP/2 Tutorial

https://github.com/secdev/scapy/blob/master/doc/notebooks/HTTP_2_Tuto.ipynb

 

Demo

https://scapy.readthedocs.io/en/latest/introduction.html#quick-demo

 

 

 

 

 

 


 

반응형

아래 명령 예시처럼 수행하면, tcp syn과 reset 패킷을 확인할 수 있다.

 

$ tcpdump -i enp1s0 -nN "tcp[tcpflags] == tcp-syn or tcp[tcpflags] == tcp-rst"

16:55:16.516453 IP 65.49.1.10.42458 > 112.169.87.89.87: Flags [S], seq 3730493766, win 65535, length 0
16:55:19.755480 IP 140.99.191.218.57246 > 112.169.89.88.26720: Flags [S], seq 417367123, win 1024, length 0
16:55:19.960898 IP 140.99.191.218.57246 > 112.169.89.88.26720: Flags [R], seq 417367124, win 1200, length 0
16:55:19.991267 IP 185.11.61.225.44794 > 112.169.89.88.38956: Flags [S], seq 163297978, win 1024, length 0
16:55:20.146215 IP 185.11.61.225.44794 > 112.169.89.88.38956: Flags [R], seq 163297979, win 1200, length 0
16:55:38.865833 IP 140.99.191.218.57246 > 112.169.89.88.19331: Flags [S], seq 523253283, win 1024, length 0

 

반응형

tcpdump 명령만 이용하면, 출력을 보기 좋게 또는 예쁘게 터미널로 출력하기 어렵다.

보기 좋은 형식으로 출력하려면 tshark 명령을 사용하는 것을 추천한다.

 

 

tshark 명령 사용

tshark을 사용하면, Network Packet이 정말 예쁘게 출력된다.  

아래와 같이 wireshark 패키지를 설치한다.  (참고로 tshark은 wireshark 패키지에 포함되어 있다)

##
## 아래 예시처럼 yum install 명령을 이용하여 wireshark 패키지를 설치한다.
##

$ yum install wireshark
...

##
## 설치 완료 후, 아래 명령과 같이 실행
## 참고: -V 옵션은 Packet을 Decode해서 출력하라는 뜻
##
$ tshark -i eth0 -nV port 53

 

위 예제 명령 정도의 옵션만 사용해도 꽤 보기 좋은 모양으로 IP 네트워크 패킷이 출력된다.

 

 

tcpdump 명령의 -A 옵션 사용해서 가독성 높게 출력하기

tshark을 사용할 수 없는 경우라면, 아래 명령처럼 -A 옵션을 주면, TCP 또는 UDP의 Payload가 ASCII 로 출력된다.

(사람 눈으로 읽을 수 있는, 즉 Readable Character만 터미널에 출력함) 

 

-A 옵션만 사용하면, TCP 세션을 수립하기 위한 SYNACKFIN 패킷도 모두 보여지기 때문에 

Filter에  tcp[32:4] = 0x47455420 조건을 추가한다. ("GET "에 대한 Pointcode 값이다) 

 

 

HTTP GET 요청 메시지만 출력
$ tcpdump -i p2p2 -s 1500 -An 'src net 192.168.0.0/24' and dst port 80 and 'tcp[32:4] = 0x47455420'

 

 

HTTP GET 요청과 응답 메시지 모두 출력
$ tcpdump -i em2 -s 1500 -An 'src net 192.168.0.0/24' and 'tcp[32:4] = 0x48545450' or 'tcp[32:4] = 0x47455420'

 

  또는 아래와 같은 방식을 사용할 수 있다.

(이 방식을 추천함)

$ tcpdump -i em2 -An -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

 


참고: 위의 3개 명령 중에서 제일 마지막 명령이 제일 출력 포맷이 예쁘다. 

+ Recent posts