필터 규칙을 사용하여 ack 또는 syn 패킷 만 캡처하려고합니다. 어떻게해야합니까?
필터 규칙을 사용하여 ack 또는 syn 패킷 만 캡처하려고합니다. 어떻게해야합니까?
답변:
PCAP 필터 구문 tcpdump를 위해 사용되는 와이어 샤크 캡처 필터에 정확히 같은 방식으로 작동합니다.
tcpdump를 사용하면 이와 같은 필터를 사용합니다.
tcpdump "tcp[tcpflags] & (tcp-syn|tcp-ack) != 0"
tcpdump 매뉴얼 페이지를 확인 하고 tcpflags에주의를 기울이십시오.
캡처 및 표시 필터에 대한 Wireshark Wiki 섹션도 확인하십시오. 불행히도 두 유형의 필터는 완전히 다른 구문과 동일한 이름에 대해 다른 이름을 사용합니다.
캡처 필터 대신 디스플레이 필터를 원한다면 tcp.flags.ack 및 tcp.flags.syn을 결합한 표현식을 작성해야합니다. 캡처 필터에 대해 더 잘 알고 있으므로 직접 해결해야합니다.
@Zoredache의 대답은 훌륭하고 완전하지만 구문은 일반 "TCP SYN"또는 "TCP ACK"패킷이 아닌 패킷을 포함하여 TCP SYN 또는 TCP ACK 플래그가 설정된 패킷을 생성합니다. 또한 다른 플래그를 설정해야합니다. 이것은 귀하 (또는 미래 독자)가 의도 한 내용 일 수도 있고 아닐 수도 있습니다. 예를 들어,이 구문은 TCP SYN-ACK 패킷, TCP FIN-ACK 등도 캡처 합니다. TCP SYN 또는 TCP ACK 패킷 만 원하는 경우 (즉, 플래그 중 하나만 설정) 적절한 캡처 필터 구문은 다음과 같습니다.
'tcp[tcpflags] == tcp-syn or tcp[tcpflags] == tcp-ack'
동등하게 :
'tcp[13] == 2 or tcp[13] == 16'
건배!
나는 "synners"를 볼 수있는 스크립트를 만들었습니다. 이를 위해 초기 syn 패킷 (세 패킷 핸드 셰이크의 첫 번째 패킷) 만 고려합니다. 즉, syn = 1, ack = 0
while :; do
date;
tcpdump -i eth1 -n -c 100 \
'tcp[tcpflags] & (tcp-syn) != 0' and
'tcp[tcpflags] & (tcp-ack) == 0' 2> /dev/null \
| awk '{ print $3}' \
| sort | uniq -c | sort | tail -5;
echo;
sleep 1
done
tcpdump 'tcp[13] = 3'
http://danielmiessler.com/study/tcpdump/
많은, 진보 한, 많이 경과 한
패킷의 특정 부분을 기준으로 필터링하고 여러 조건을 그룹으로 결합 할 수도 있습니다. 전자는 예를 들어 SYN
s 또는 RST
s 만 찾을 때 유용 하고 후자는 훨씬 고급 트래픽 격리를 위해 유용합니다 .
UAP RSF
[힌트 : TCP 플래그에 대한 아나그램 : 미숙련 공격자 Pester Real Security Folk]
메모 : ...
모든 긴급 ( URG
) 패킷 표시 ...
tcpdump 'tcp[13] & 32 != 0'
ACKNOWLEDGE ( ACK
) 패킷 모두 표시 ...
tcpdump 'tcp[13] & 16 != 0'
모든 PUSH ( PSH
) 패킷 표시 ...
tcpdump 'tcp[13] & 8 != 0'
모든 재설정 ( RST
) 패킷 표시 ...
tcpdump 'tcp[13] & 4 != 0'
모든 SYNCHRONIZE ( SYN
) 패킷 표시 ...
tcpdump 'tcp[13] & 2 != 0'
FINISH ( FIN
) 패킷을 모두 표시하십시오 ...
tcpdump 'tcp[13] & 1 != 0'
SYNCHRONIZE / ACKNOWLEDGE ( SYNACK
) 패킷을 모두 표시하십시오 ...
tcpdump 'tcp[13] = 18'
[ 참고 : 만 PSH
, RST
, SYN
, 및 FIN
플래그가 tcpdump와의 플래그 필드 출력에 표시됩니다. URG
s와 ACK
s가 표시되지만 플래그 필드가 아닌 출력의 다른 곳에 표시됩니다.]
tcpdump -s SIZE
. TCP 헤더는 가변 길이 일 수 있으므로 캡처-s 128
는 가능한 모든 헤더와 약간의 데이터를 가져옵니다.