tcpdump가 pcap 파일을 쓰지 않는 이유는 무엇입니까?


8

연결할 수없는 python irc 봇을 디버깅하는 과정에서 "tcpdump 만하고 그것이 무엇을하고 있는지 알 것"이라고 생각했습니다. 그래서 평소처럼 tcpdump를 실행했는데 패킷이 캡처되었지만 실제로 cap 파일을 쓰지 않는다고 말합니다.

akraut@lance ~/pcaps $ sudo tcpdump -w pyhole -s 0 "port 6667"
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C17 packets captured
17 packets received by filter
0 packets dropped by kernel
4294966881 packets dropped by interface
akraut@lance ~/pcaps $ ls -la
total 8
drwxr-xr-x 2 akraut akraut 4096 Feb  6 11:50 .
drwxr-xr-x 8 akraut akraut 4096 Feb  6 11:50 ..
akraut@lance ~/pcaps $ 

절대 경로를 주면 어떻게됩니까?
Massimo

봇이 연결되어 eth0있습니까? 루프백이나 다른 인터페이스를 사용하는 경우 파일로 덤프 할 트래픽이 없습니다.
Chris S

1
@ Chris-s 그것이 표시 17 packets received by filter된다고해서 트래픽이 발생했다는 의미는 아닙니까?
akraut

@Massimo ./blah와 / blah를 모두 지정했지만 파일을 쓰지 않았습니다.
akraut

답변:


11

strace로 tcpdump의 동작을 확인하여 chrooting과 같은 이상한 일이 있는지, 젠투 또는 바이너리를 사용하는 다른 배포판에 있는지 확인하십시오.


어 그래. ebuild를 살펴보면 privs와 chroot가에 들어가는 것처럼 보입니다 /var/lib/tcpdump. 그리고 lo, 모든 캡 파일이 있습니다.
akraut

10

좋아, 나는 미스터리를 해결했다. Funtoo의 TCPDump와 누락 된 pcap 파일의 미스터리를면서 나와 함께 따라 오십시오 .

나는 strace를 사용하여 무슨 일이 일어나고 있는지 확인하고 관련 줄은 다음과 같습니다.

chroot("/var/lib/tcpdump")              = 0
chdir("/")                              = 0
--- SNIP ---
open("/tmp/lol.wat", O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 ENOENT (No such file or directory)

그래서...

lance ~ # ls /var/lib/tcpdump/
blah  blah.cap  irc.cap  pyhole

야 봐봐! 내가 만든 모든 캡 파일!

tcpdump가 기본적으로 빌드되는 사용 플래그를 살펴본 후 다음을 볼 수 있습니다.

lance ~ # grep tcpdump /usr/portage/profiles/use*desc
use.local.desc:net-analyzer/tcpdump:chroot - Enable chrooting when dropping privileges

왜 이런 식으로합니까? 내 이론은 다음과 같다 :

  1. 원시 네트워크 트래픽과 상호 작용하는 많은 응용 프로그램은 루트로 실행해야합니다.
  2. 원시 네트워크 트래픽에는 다양한 유효 및 무효 값이 있습니다.
  3. 이러한 응용 프로그램에는 많은 악용이 존재합니다. (Wireshark, Ethereal, tcpdump 등)
  4. 따라서 tcpdump는 루트 동안 네트워크 인터페이스에 대한 액세스 권한을 가져 와서 자신을로 /var/lib/tcpdump감금 한 다음 루트 권한을 삭제하고 캡처를 시작합니다.

결과적으로, 내가 지정 ./blah하거나 blah제대로 작동 했을 때 . 그러나 존재 /tmp/blah하지 않기 때문에 /var/lib/tcpdump/tmp하지 않았습니다.

suid 플래그를 사용하여 tcpdump SetUID를 설치할 때 사용자 tcpdump에게 sudo 또는 root 액세스 권한을 부여하지 않고 그룹에 대한 액세스 권한을 부여 할 수 있습니다. 가능한 용도로는 네트워크 엔지니어 나 연구원을위한 캡처 상자가 있습니다.

젠투 / 펀투가 설치에 관한 모든 메시지를 받았으면 좋겠다.

tl; dr : 젠투 / 푼투는 pcap 파일을에 넣습니다 /var/lib/tcpdump.


3

구문은 정확합니다 : 방금 시도했지만 (포트 80에도 불구하고) 사용중인 것과 동일한 옵션이 주어지면 현재 작업 디렉토리에 pcap 파일을 생성했습니다.

홈 디렉토리와 관련이 있고, sudo로 인해 루트로 쓰려고 할 수 있습니까? 루트 스 쿼싱과 함께 NFS 마운트 홈 디렉토리를 사용할 수 있습니까? sudo touch ~akraut/pcaps/foo?

pcap을 / tmp / 또는 다른 것으로 쓸 수 있습니까?


으로 sudo tcpdump -w /tmp/blah -s 0 "port 6667"그것은 그것의 작업처럼 보이지만 나는 경우 sudo su -먼저 실행 tcpdump -w /tmp/blah -s 0 "port 6667"루트로는 "해당 파일 또는 디렉토리"를 말한다. 신비 깊어 ...
akraut

1
저스틴이 답을 찾도록 도와 준 것 같습니다. 사용중인 배포판과 해당 배포판의 표준 tcpdump 설치인지 물어볼 수 있습니까?
cjc

젠투의 변형 인 Funtoo를 실행하고 있습니다. 예, 기본적으로 chroot "use"플래그 (선택적 컴파일 타임 기능을 활성화 / 비활성화하는 젠투 방법)를 설정합니다. 실제로 여기에 게시하기 위해 더 긴 글을 준비했습니다.
akraut
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.