악성코드Linux 보안Linux 포렌식루트킷

Linux에서 패킷 스니핑 악성코드 탐지하기

2025년 6월 16일
10분 읽기
Sandfly Security Team
Linux에서 패킷 스니핑 악성코드 탐지하기

요약

/proc/net/packet 파일을 검사하여 Linux 시스템에서 의심스러운 네트워크 패킷 스니핑 프로세스를 탐지하는 방법을 설명합니다.

Linux에서 패킷 스니핑 악성코드 탐지하기

2025년 6월 16일

악성코드

Linux에서 패킷 스니핑은 다양한 합법적인 이유로 사용될 수 있지만, 때로는 악성코드가 정보를 탈취하고 은밀한 백도어를 활성화하기 위한 트래픽 모니터링에 사용되기도 합니다. 이 글에서는 Linux 시스템에서 /proc/net/packet 파일을 검색하여 트래픽을 가로채고 있을 수 있는 의심스러운 프로세스를 찾는 방법을 보여드리겠습니다.

/proc/net 디렉토리를 사용하여 네트워크 활동 찾기

Linux에서 /proc/net 디렉토리는 사용 중인 다양한 네트워크 프로토콜과 그것을 사용하는 것이 무엇인지를 설명하는 많은 파일을 포함하고 있습니다. 예를 들어 /proc/net/tcp 또는 /proc/net/udp를 보면 모든 열린 TCP 또는 UDP 소켓을 볼 수 있습니다. 또는 /proc/net/packet을 사용하여 raw 소켓을 이용해 네트워크 트래픽을 가로채는 더 저수준의 활동을 볼 수 있습니다.

이 글에서는 /proc/net/packet 파일을 살펴보겠습니다. 이 파일은 트래픽을 스니핑하는 모든 raw 또는 패킷 네트워크 소켓을 보여줍니다. 이를 통해 네트워크 패킷을 가로채는 합법적이지만 때로는 불법적인 프로세스를 찾을 수 있습니다. 더 중요한 것은 탐지로부터 이 활동을 숨기고 있을 수 있는 프로세스도 찾을 수 있다는 것입니다.

아래에서 /proc/net/packet 파일의 샘플을 볼 수 있습니다.

/proc/net/packet은 불량 스니퍼를 확인하는 데 유용하지만, 이 파일은 열린 inode와 그것을 소유한 사람만 보여줍니다. 실제 행위를 하는 프로세스는 나열하지 않으므로 별도 단계에서 그것을 파악해야 합니다. 예를 들어, 위의 샘플은 실제로 두 개의 악성 스니핑 프로세스를 보여줍니다. 아래에서 빨간 화살표로 하나를 식별했습니다.

열린 Inode를 활성 프로세스에 연결하기

위의 샘플이 열린 inode를 보여주지만, 이것만으로는 유용하지 않습니다. 실제로 어떤 프로세스가 그 inode를 열고 있는지 알아내야 합니다. 이것이 어떤 프로세스가 네트워크 트래픽을 가로채고 있는지를 드러냅니다. 손으로 하기엔 지루하므로 스크립트(아래와 여기에서 사용 가능)를 만들어 이를 대신합니다. 실행했을 때의 출력은 트래픽을 스니핑하는 모든 프로세스를 보여줍니다. 아래에서 스크립트를 실행한 후 두 개의 악성 프로세스를 볼 수 있습니다.

DHCP 모니터링, 라우팅 프로토콜 등과 같이 트래픽을 가로챌 합법적인 이유가 있다는 점에 주목하세요. Linux 호스트에 대해 정상적인 것과 그렇지 않은 것을 배워야 합니다.

위에서 우리는 네트워크 트래픽을 가로채는 열린 raw 소켓을 가진 두 개의 systemd 프로세스를 봅니다(종종 네트워크 발견 프로토콜). 그러나 두 개의 의심스러운 프로세스가 있습니다. "kthread"와 "dbus-daemon" 모두 이상치입니다. 일반적으로 네트워크 트래픽을 가로채는 것으로 보이지 않으며 조사가 필요합니다.

lsof를 사용하여 패킷 스니퍼 찾기

Linux 호스트를 조사하고 의심스러운 프로세스를 본다면, lsof -p (프로세스 ID)를 사용하여 프로세스가 열린 패킷 소켓을 가지고 있는지 확인할 수 있습니다. lsof가 이미 설치되어 있다면 편리하지만 몇 가지 주의사항이 있습니다. 우선 설치되어 있지 않을 수 있습니다. 조사 중인 시스템에 새로운 도구를 설치하는 것은 증거를 손상시킬 수 있으므로 권장하지 않습니다. 둘째로, 일부 악성코드는 lsof와 같은 도구로부터 숨는 것으로 알려져 있으므로 아무것도 보여주지 않을 가능성이 있습니다.

그러나 이 경우 lsof -p 1101을 실행하여 PID 1101이 열고 있는 모든 것을 나열합니다. 아래에서 열린 raw 소켓과 여러 다른 파일들을 볼 수 있습니다. /dev/shm에서 삭제된 바이너리에 주목하세요. 이는 악성코드의 주요 위험 신호입니다. 이 특정 악성코드는 모든 네트워크 트래픽을 감시하여 매직 패킷이 활성화되기를 기다리는 백도어입니다. 매직 패킷이 수신되면 공격자가 백도어에 접근할 수 있습니다.

사용할 수 있는 다양한 유형의 패킷 소켓이 있습니다. 일부는 DHCP와 같은 특정 프로토콜 트래픽만 가로채지만, 다른 것들은 모든 IP 트래픽(/proc/net/packet 파일의 proto 0x0800)을 가로채며 기다리고 있는 것의 범위로 인해 훨씬 더 의심스럽습니다.

직접 보기를 통해 숨어있는 악성코드 찾기

논의한 바와 같이, 악성코드는 netstat, ss, lsof와 같은 시스템 도구의 출력을 변경하여 숨는 것으로 알려져 있습니다. 때로는 /proc/net/packet을 보는 것이 숨어있는 것을 찾기 위한 불일치를 드러낼 수 있습니다. 이 파일에서 열린 패킷 소켓을 가진 프로세스를 보지만 일반 유틸리티에서 보여지지 않는다면 숨고 있는 악성코드가 있을 수 있습니다.

열린 패킷 소켓을 나열하고 프로세스 목록과 비교하기 위해 사용한 스크립트는 아래 Github 저장소에서 사용할 수 있습니다. Linux 포렌식과 사고 대응을 위한 더 많은 스크립트를 여기에 올릴 예정입니다. 미래에 Linux 사고 대응과 포렌식을 위한 더 많은 스크립트가 추가될 예정이니 북마크해 두세요:

Sandfly Security Linux 포렌식 스크립트

대규모로 즉시 패킷 스니핑 악성코드 찾기

직접 사고 대응을 위해 수동으로 하는 것이 좋지만, 우리의 에이전트리스 Linux 보안 플랫폼은 몇 초 만에 대규모로 할 수 있습니다. 무료 체험을 받고 오늘 의심스러운 프로세스가 트래픽을 스니핑하고 있는지 즉시 알 수 있습니다. Sandfly는 거의 모든 Linux 시스템과 아키텍처에서 완전한 안전성과 호환성으로 엔드포인트 에이전트 없이 즉시 배포됩니다. 무료 라이선스를 받아 오늘 시도해보세요.


패킷 스니핑 탐지에 대한 자세한 정보는 Sandfly Security에 문의하시기 바랍니다.

원문 기사 보기

Sandfly Security 공식 블로그에서 영문 원문을 확인하세요.

원문 읽기 →

Sandfly 보안 솔루션 체험

이 기사에서 소개한 보안 기술들을 실제로 경험해보세요.