tcpdump를 통한 특정 요청 찾기

Kevin·2024년 5월 4일

Server

목록 보기
5/14
post-thumbnail

🕵️ 서론

얼마 전에 우리 서버로 특정 IP에서 지속적으로 요청을 보내오는 일이 있었다.

방화벽으로 막혀있지 않는 0번 Port로 UDP 요청을 보냈었는데, 이 때 IP는 특정 되었지만 해당 IP에서 지금도 UDP 요청을 보내고 있는지를 확인하고 싶었다.

  • 이제부터 요청을 보낸 IP를 범인IP라 칭하겠다.

범인IP가 요청을 보낸 Port는 0번 Port였다.

  • 범인IP:0 → 서버IP:0 으로 요청이 들어왔다.

내가 어떤 순서대로 범인IP의 요청을 잡으려고 시도했는지 아래의 순서와 함께 알아보자.


🔎 본론

1번. 서버IP 0번 Port에서 통신 중인 UDP 확인

먼저 서버IP의 0번 Port로 UDP 요청이 들어오고 있는지 확인할 수 있는 방법이 필요했다.

이 때 나는 tcpdump라는 명령어를 사용하였는데, tcpdump는 주어진 조건식을 만족하는 네트워크 인터페이스를 거치는 패킷들의 헤더들을 출력해주는 프로그램이다.

본인 서버의 네트워크 인터페이스를 확인 하기 위해서는 ifconfig 명령어를 사용하면 된다.

  • 이 때 inet 옵션에 실제 해당 서버의 고정 IP가 적혀있으면, 그게 현재 네트워크 인터페이스이다.

아래 명령어를 통해 서버의 0번 Port에서 오고 가는 UDP 프로토콜의 패킷을 확인할 수 있다.

tcpdump -nni [네트워크 인터페이스] udp and port 0 
  • nn: 이 옵션은 주소 및 포트를 숫자 형식으로 표시한다. 호스트 이름을 해결하지 않고 IP 주소를 숫자로 표시한다. 또한, 포트 번호를 숫자로 표시한다.
  • i <인터페이스>: 이 옵션은 패킷을 캡처할 네트워크 인터페이스를 지정한다. <인터페이스>는 캡처할 네트워크 인터페이스의 이름이다.

위와 같이 확인을 했을 때 아무런 패킷이 검측되지 않았다.

그래도 혹시 모르니 dst. src 키워드로 목적지, 출발지를 직접 작성해서 범인IP에서 서버IP로 보내는 요청이 있는지를 확인했다.

tcpdump dst 서버IP and src 범인IP
  • src는 출발지
  • dst는 목적지

이 때도 아무런 범인IP가 나타나지 않았다…

그래서 나는 다른 방법을 사용하고자 하였다.

2번. ICMP 프로토콜(Ping) 통신 중인 프로세스 확인

만약 위 방법들을 거쳤는데도 어떠한 트래픽이 확인되지 않으면 TCP, UDP 프로토콜이 아닌 ICMP(핑)처럼 포트라는 개념 자체가 없는 프로토콜이거나, TCP/UDP 패킷 헤더가 손상되어 포트 정보가 사라진 경우 0번 포트로 나타날 수 있다.

아니면 현재 요청을 보내고있지 않더라거나…

즉, 모니터링 툴에 0번 포트로 나오는 것은 ICMP 패킷이거나, 이상하게 조작된 TCP/UDP 패킷일 가능성이 높다.

0번 포트는 보통 TCP/UDP 패킷 헤더가 손상되어 포트 정보가 사라진 경우, 또는 ICMP(핑)처럼 포트라는 개념 자체가 없는 프로토콜인 경우에 사용한다고 한다.


현재 Ping을 통한 ICMP를 보내고 있는 중일 수 있기에 ICMP를 확인해보자.

tcpdump -nni [네트워크 인터페이스] icmp

사실 바라던 답은 아니었지만, 아무런 패킷도 검출되지 않았다.

그렇기에 현재는 범인IP가 어떠한 요청을 보내고 있지 않다고 생각했다.

다음번에 또 요청이 모니터링에 걸리면, 위의 방법으로 빠르게 범인을 검거하고자 한다!

profile
Hello, World! \n

0개의 댓글