XZ Utils 잠재적인 SSH 백도어 악성코드 탐지 전략 및 활동 로그
Sandfly Security는 전통적인 파일 스캔 방식이 아닌, 고도화된 맬웨어의 전술, 기술, 절차(TTPs)에 초점을 맞춘 접근 방식을 통해 XZ SSH 백도어와 같은 위협을 탐지합니다. 이는 맬웨어가 사용하는 회피 기술을 무력화시키기 위해 설계된 전략입니다. Sandfly의 방식은 특정 맬웨어의 직접적인 식별이 아니라, 맬웨어가 시스템에 미치는 효과와 그로 인한 비정상적인 행동을 식별함으로써 작동합니다.
백도어 탐지 방법
- 프로세스 환경 분석: Sandfly는 SSH 데몬에서 직접 시작된 프로세스를 탐지하기 위한 서명을 개발했습니다. 이러한 프로세스는 SSH 데몬 자체에서 상속받은 특정 환경 변수를 가지고 있으며, 이는 일반적인 사용자 또는 시스템 프로세스에서 기대되지 않는 특성입니다. 예를 들어,
SSHD_OPTS
,RUNTIME_DIRECTORY
,MEMORY_PRESSURE_WATCH
와 같은 환경 변수들은 백도어 활동의 징후로 볼 수 있습니다. - 에이전트리스 드리프트 탐지 기능: 이 기능을 통해 Sandfly는 설치된 에이전트나 추가적인 소프트웨어 없이도 네트워크 상의 장비에서 시스템 설정, 구성, 파일 시스템의 변경사항 등을 원격으로 모니터링하고 분석할 수 있습니다. 이는 특히 시스템이 정상 베이스라인에서 벗어난 변화를 탐지하는 데 유용합니다.
탐지 서명의 구성 요소
- 해시 값: 특정 맬웨어 파일의 고유한 해시 값을 사용하여 식별합니다.
- 파일명 패턴: 악성 파일이나 스크립트가 사용하는 특정 파일명 패턴을 기반으로 탐지합니다.
- 프로세스 행위: 시스템에서 실행되는 프로세스의 비정상적인 행동이나 패턴을 감지합니다.
- 네트워크 트래픽: 알려진 악성 도메인이나 IP 주소와의 네트워크 통신을 모니터링합니다.
- 환경 변수: 악성 프로세스나 백도어 활동에 특이하게 관련된 환경 변수의 존재를 확인합니다.
작동 방식과 장점
Sandfly의 탐지 메커니즘은 다음과 같은 방식으로 작동합니다.
- 원격 모니터링: 에이전트리스 접근 방식을 통해 시스템의 파일 시스템 변경, 시스템 설정과 구성의 변경, 실행 중인 프로세스와 서비스를 원격으로 모니터링합니다.
- 비정상적인 행동 감지: 비정상적인 또는 예상치 못한 프로세스 및 서비스의 실행을 식별하여 보안 위협을 탐지합니다.
- 효율적인 자원 사용: 중앙 집중식 관리를 통해 추가적인 시스템 자원 사용 없이 네트워크 상의 다양한 장비들을 모니터링할 수 있습니다.
- 광범위한 시스템 호환성: 다양한 운영 체제와 환경에서의 변경사항을 모니터링할 수 있는 범용성을 제공합니다.
이 접근 방식은 고도의 위협을 신속하게 탐지하고 대응할 수 있게 하며, 시스템의 보안을 강화하는 데 중요한 역할을 합니다. Sandfly Security의 전략은 공격자의 의도와 그들이 시도하는 후속 활동을 이해함으로써 침해를 빠르게 발견하는 것에 중점을 둡니다.
대표적인 백도어 탐지 유형과 관련하여, Sandfly Security가 사용하는 접근법을 이해하기 위해 플로우, 코드, 그리고 예시 로그를 통해 정리해 보겠습니다. 이는 XZ SSH 백도어 탐지를 예로 들어 설명합니다.
환경 변수 기반 탐지
플로우:
- 시스템 프로세스 모니터링: 시스템에서 실행 중인 모든 프로세스를 주기적으로 스캔합니다.
- SSH 데몬 프로세스 탐지: SSH 데몬(
sshd
)으로부터 생성된 프로세스를 식별합니다. 이는 특정 부모 프로세스 ID(PPID
) 또는 프로세스 이름을 통해 이루어질 수 있습니다. - 환경 변수 분석: 각 프로세스의 환경 변수를 분석하여 비정상적인 또는 예상치 못한 값(예:
SSHD_OPTS
,RUNTIME_DIRECTORY
,MEMORY_PRESSURE_WATCH
)을 찾습니다. - 알림 및 대응: 비정상적인 환경 변수를 갖는 프로세스를 탐지하면 경고를 생성하고, 적절한 대응 조치를 취합니다.
코드 예시:
이는 실제 Sandfly Security의 내부 코드를 반영한 것이 아니며, 프로세스 환경 변수를 검사하는 방법의 예시입니다.
#!/bin/bash
# SSH 데몬 프로세스로부터 시작된 프로세스의 PID를 찾습니다.
sshd_pids=$(pgrep -P $(pgrep sshd))
for pid in $sshd_pids; do
# 각 프로세스의 환경 변수를 확인합니다.
env_vars=$(tr '\0' '\n' < /proc/$pid/environ)
# 비정상적인 환경 변수를 찾습니다.
if echo "$env_vars" | grep -E 'SSHD_OPTS|RUNTIME_DIRECTORY|MEMORY_PRESSURE_WATCH'; then
echo "비정상적인 환경 변수를 가진 프로세스 발견: PID $pid"
fi
done
예시 로그:
비정상적인 환경 변수를 가진 프로세스 발견: PID 12345
환경 변수: SSHD_OPTS='-o PermitRootLogin=yes'
환경 변수: RUNTIME_DIRECTORY='/run/sshd'
환경 변수: MEMORY_PRESSURE_WATCH='medium'
에이전트리스 드리프트 탐지
플로우:
- 원격 시스템 검사: Sandfly는 네트워크를 통해 대상 시스템에 접근하여, 파일 시스템, 시스템 설정, 구성 및 실행 중인 프로세스를 검사합니다.
- 변경 사항 감지: 기존의 정상적인 베이스라인과 비교하여, 새로 생성되거나 수정된 파일, 변경된 시스템 설정 또는 구성, 비정상적인 프로세스 실행 등을 탐지합니다.
- 경고 및 보고: 시스템 드리프트(변화)를 탐지하면, 보안 담당자에게 알림을 보내고, 해당 변경 사항에 대한 자세한 정보를 제공합니다.
예시 로그:
[경고] 비정상적인 시스템 변경 감지
- 파일 추가: /usr/local/bin/sshd-backdoor
- 설정 변경: /etc/ssh/sshd_config (PermitRootLogin yes로 변경됨)
- 비정상적인 프로세스 실행: PID 67890, 명령어 '/usr/local/bin/sshd-backdoor'
이러한 방식으로, Sandfly Security는 고도화된 맬웨어의 전술, 기술 및 절차(TTPs)에 초점을 맞춰, 신속하고 정확하게 백도어 및 기타 보안 위협을 탐지할 수 있습니다.