Linux 침해 의심 프로세스: strace, lsof, cron으로 확인하는 순서

CPU를 과점유하는 수상한 프로세스를 strace, lsof, /proc, cron, systemd 기준으로 확인하고 증거 보존 후 제거하는 절차입니다.

침해 의심 상황에서는 먼저 죽이는 것보다 증거를 남기는 순서가 중요합니다. CPU를 비정상적으로 쓰는 프로세스가 있고, 표준 입출력이 /dev/null로 붙어 있으며, 실행 경로가 홈 디렉터리의 숨김 경로라면 정상 데몬보다 악성 로더나 마이너를 의심해야 합니다.

1. PID 기준으로 증거를 고정한다

명령줄, 실행 파일, 현재 작업 디렉터리, 열린 파일, 네트워크 연결, 파일 해시를 한 번에 남깁니다.

PID=<pid>
ps -fp ${PID}
top -Hp ${PID}
cat /proc/${PID}/cmdline | tr "\0" " "; echo
readlink -f /proc/${PID}/exe
readlink -f /proc/${PID}/cwd
lsof -p ${PID}
ss -pant | grep "${PID}\|ESTAB"
sha256sum "$(readlink -f /proc/${PID}/exe)"

2. strace는 짧게 붙인다

epoll_wait 계열 반복과 외부 TLS 연결이 같이 보이면 네트워크 이벤트 루프를 가진 의심 프로세스로 판단할 수 있습니다.

strace -ttT -s 200 -p ${PID} -o /tmp/suspect-${PID}.strace
sleep 10
pkill -INT -f "strace -ttT -s 200 -p ${PID}"
tail -n 80 /tmp/suspect-${PID}.strace

3. 지속성은 cron, systemd, profile 순서로 본다

프로세스를 죽였는데 다시 살아나면 실행 파일보다 지속성 지점이 핵심입니다. crontab, systemd unit, rc.local, shell profile, PATH 오염을 봅니다.

crontab -l
sudo ls -al /etc/cron* /var/spool/cron 2>/dev/null
sudo systemctl list-unit-files | egrep -i "unknown|cache|update|tmp|miner|bash"
sudo find /etc/systemd/system -maxdepth 3 -type f -mtime -30 -ls
cat /etc/rc.local 2>/dev/null
grep -R "cache\|tmp\|curl\|wget\|bash" /etc/profile /etc/bashrc ~/.bash* 2>/dev/null
echo "$PATH"

4. 제거 전에 격리하고 차단한다

의심 파일은 격리 디렉터리에 복사하고 해시를 남긴 뒤 외부 통신지를 차단합니다. 그 다음 프로세스를 종료합니다.

mkdir -p /root/incident-artifacts
cp -a "$(readlink -f /proc/${PID}/exe)" /root/incident-artifacts/suspect-${PID}.bin
sha256sum /root/incident-artifacts/suspect-${PID}.bin > /root/incident-artifacts/suspect-${PID}.sha256
iptables -I OUTPUT -d <malicious-ip> -j REJECT
kill -TERM ${PID}
sleep 3
kill -KILL ${PID} 2>/dev/null || true

5. 복구 후 무결성을 확인한다

프로세스만 제거하면 끝이 아닙니다. 패키지 무결성, 신규 계정, SSH 키, sudoers, 최근 변경 파일을 봐야 합니다.

rpm -Va > /root/incident-artifacts/rpm-verify.txt 2>&1
last -a | head -n 50
lastlog | egrep -v "Never logged in"
find /root /home /tmp /var/tmp -xdev -type f -mtime -7 -ls
find /etc -type f -mtime -7 -ls
grep -R "ssh-rsa\|ssh-ed25519" /root /home 2>/dev/null

정리

침해 의심 프로세스 분석의 핵심은 PID 기준 증거 고정, 짧은 strace, lsof와 네트워크 연결 확인, cron/systemd 지속성 제거, 사후 무결성 검증입니다.

BGM EVER