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

Linux에서의 SCTP 프로토콜 공격 위험

2025년 6월 23일
8분 읽기
Sandfly Security Team
Linux에서의 SCTP 프로토콜 공격 위험

요약

Stream Control Transmission Protocol(SCTP)이 Linux 시스템에서 은밀한 백도어로 악용될 수 있는 방법을 논의합니다.

Linux에서의 SCTP 프로토콜 공격 위험

2025년 6월 23일

악성코드

Linux의 SCTP 프로토콜은 주로 통신 부문을 위한 신뢰할 수 있는 통신을 제공합니다. 합법적인 용도가 있지만, Linux에 은밀하게 접근하고 탐지를 피하는 방법이 될 수도 있습니다. 이 글에서는 간단한 SCTP 백도어를 시연하고 보안 팀이 이를 놓칠 수 있는 방법을 보여드리겠습니다. 그런 다음 이런 종류의 활동을 찾는 방법을 보여드리겠습니다.

기본적으로 활성화된 SCTP

논의한 바와 같이, SCTP는 주로 통신사에서 사용하는 프로토콜입니다. TCP와 같은 신뢰할 수 있는 전송을 제공하지만 TCP는 아닙니다. 결과적으로 많은 팀이 이런 종류의 트래픽을 모니터링하지 않을 수 있으며, 더 나쁘게는 패킷 필터가 잘못 구성되어 때때로 방화벽을 우회할 수 있습니다.

더욱이, SCTP는 많은 Linux 시스템에서 기본적으로 활성화되어 있지만 거의 사용되지 않습니다. 이는 문제를 일으킬 수 있는 조건입니다. 이해해야 할 중요한 점은 통신사가 아니라면 네트워크에서 SCTP 트래픽을 보는 것이 문제의 징후일 수 있다는 것입니다. 통신사라면 악의적인 SCTP 트래픽이 쉽게 섞여들 수 있으므로 마찬가지로 모니터링이 필요합니다.

SCTP 백도어 예시

이 글을 위해 socat 명령줄 프로그램을 사용한 간단한 SCTP 백도어가 있습니다. 공격은 SCTP를 통해 수행되며 이 프로토콜을 사용하는 트래픽을 특별히 모니터링하지 않는 보안 팀에 의해 종종 눈에 띄지 않을 수 있습니다. 공격을 위해 단순히 id 명령을 실행한 다음 연결을 끊습니다. 실제 사용에서는 socat 명령(또는 기타 백도어)이 공격자를 본격적인 시스템 셸에 연결할 것입니다.

SCTP 백도어는 잘 알려져 있으며 온라인에서 쉽게 찾을 수 있습니다. 우리가 사용할 간단한 것은 socat 명령입니다:

socat SCTP-Listen:1177, fork EXEC:/usr/bin/id

여기서 SCTP로 백도어에 원격으로 연결하면 응답을 볼 수 있습니다. 단순히 id 명령의 출력을 보여주고 연결을 끊습니다. 이 경우 root 사용자로 실행되고 있습니다.

일반적인 명령으로 SCTP 소켓 놓치기

netstat이나 ss와 같은 Linux 명령을 일반적인 플래그와 함께 실행하면 이런 종류의 포트를 볼 수 없습니다. 아래에서 모든 수신 대기 중인 TCP 및 UDP 포트를 나열하는 ss -ltun 명령을 볼 수 있습니다. SCTP 백도어가 거기에 없다는 것을 주목하세요. 모든 수신 대기 소켓이 표시되도록 하려면 때때로 이러한 명령을 사용할 때 명시적으로 지정해야 합니다.

모든 수신 대기 소켓을 나열하기 위해 -l 옵션과 함께 ss를 사용할 수 있지만, 이는 구문 분석할 많은 데이터를 제공합니다. 바로 가기는 다음과 같이 수신 대기 중인 TCP/UDP 포트와 함께 SCTP를 특별히 포함하는 ss -lStu입니다:

ss -lStu

어떤 프로세스가 각 소켓을 소유하는지 보려면 다음과 같이 -p 옵션을 사용하세요:

ss -lStup

SCTP가 활성화되어 있는지 확인하기

많은 Linux 시스템이 SCTP가 활성화된 상태로 제공되므로 시스템에서 켜져 있는지 확인하는 방법을 알고 싶을 수 있습니다. 먼저 이 명령을 사용하여 로드된 커널 모듈을 확인할 수 있습니다:

lsmod | grep sctp

다음은 /proc/net/protocols를 확인하고 이 명령으로 나열되어 있는지 확인하는 것입니다:

cat /proc/net/protocols

마지막으로 /proc/net/sctp/eps를 확인하고 어떤 소켓이 프로토콜을 사용하는지 볼 수 있습니다. 약간의 해석이 필요하지만 기본적으로 여기서 무언가를 보지만 시스템 도구에서는 보지 못한다면 무언가가 숨어있을 수 있습니다.

cat /proc/net/sctp/eps

이것이 우리 샘플 백도어가 어떻게 보였는지입니다. 소켓을 사용하는 프로세스를 찾는 데 사용할 수 있는 inode와 함께 포트 1177에 대한 참조를 볼 수 있습니다:

SCTP 비활성화

시스템에서 SCTP를 비활성화하려면 모듈을 블랙리스트에 추가하고 재부팅해야 합니다. 가상 머신(VM)용 골드 이미지 빌드도 비활성화되어 있는지 확인하세요. 온라인에서 이를 수행하는 방법에 대한 지침이 있습니다. 많은 클라우드 이미지가 기본적으로 SCTP를 활성화하므로 이 문제는 매우 일반적입니다. SCTP가 필요하지 않다면 빌드에서 비활성화하는 것이 좋은 아이디어입니다.

자동으로 의심스러운 SCTP 프로세스 찾기

기본적으로 Sandfly Security는 특정 산업 사용 사례(다시 말해 통신사) 외부에서 찾기 매우 드물기 때문에 Linux에서 SCTP 프로세스를 검색합니다. 실행 중인 것을 보면 즉시 알려드립니다. 이런 종류의 경고는 대부분의 네트워크에서 악의적일 가능성이 높습니다.

다시 말하지만, 통신사가 아니라면 이를 볼 필요가 없을 것입니다. Sandfly는 또한 삭제된 바이너리, 비정상적인 운영 디렉토리 등과 같은 비정상적인 기능을 가진 SCTP 프로세스에 플래그를 지정합니다. 이는 SCTP를 실행해야 하고 상황을 주시해야 하는 사용자들을 보호하는 데 도움이 될 수 있습니다.

SCTP 남용 감시

SCTP는 모니터링이 필요한 흥미로운 프로토콜입니다. TCP만큼 신뢰할 수 있지만 인식 부족과 기본 가용성으로 인해 Linux에서 레이더 아래에서 작동하려는 공격자들의 주요 표적이 됩니다. 네트워크와 엔드포인트에서 이 프로토콜을 주시하세요. 훌륭한 백도어가 되며 남용하기 쉽습니다.

Linux 호스트에서 SCTP가 어떻게 남용될 수 있는지 우려된다면 Sandfly Security를 확인하여 에이전트리스 Linux 보안 플랫폼에 대한 무료 라이선스를 받으세요. Sandfly는 위험과 엔드포인트 에이전트의 성능 영향 없이 SCTP 남용과 Linux에 대한 수천 가지 다른 위협을 찾을 수 있습니다.


SCTP 관련 보안 위험에 대한 자세한 정보나 탐지 솔루션에 대해서는 Sandfly Security에 문의하시기 바랍니다.

원문 기사 보기

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

원문 읽기 →

Sandfly 보안 솔루션 체험

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