어리석게 들리겠지만 패킷/pcap에서 애플리케이션 이름을 추출할 수 있습니까?
예를 들어, 패킷 대상이 크롬 프로세스인 경우 패킷에서 해당 정보를 추출할 수 있습니까?
답변1
프로세스 이름 또는 이와 유사한 이름은 패킷의 일부가 아닙니다. 많은 경우 경험적 방법을 사용하여 패킷 자체를 보고 애플리케이션 프로토콜 유형을 결정할 수 있습니다. 소스 및 대상 IP 주소와 포트도 패킷에서 추출할 수 있습니다. 이는 패킷을 생성한 프로세스에 대해 정보를 바탕으로 추측하는 데 사용될 수 있지만 그 추측은 틀릴 수도 있습니다.
답변2
IP 패킷 헤더에는 이를 유발한 프로세스에 대한 정보가 포함되어 있지 않습니다. 그러나 IP 패킷 페이로드에는 포함될 수 있습니다. 동일한 패킷이 서로 다른 시간에 서로 다른 애플리케이션에 의해 전송될 수 있습니다.
그러나 (루트로서) 해당 주소의 소켓이 어느 애플리케이션에 속하는지 Linux 커널에 물어볼 수 있습니다.
grep을 사용하여 예를 들어 출력을 찾 ss -ntup
거나 직접 물어볼 수 있습니다 ss
.
ss -anp 'src = 192.168.122.3:22'
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
tcp ESTAB 0 0 192.168.122.3:22 192.168.122.1:58552 users:(("sshd",pid=27425,fd=4))
tcp ESTAB 0 0 192.168.122.3:22 192.168.122.1:40662 users:(("sshd",pid=7228,fd=4),("sshd",pid=7217,fd=4))