시스템 보안 · 취약점 › I. 지속성 · 재침투 징후 · 37/50편 (전체 437/450)
학습 단계: 백도어·재침투 경로 탐지
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
근절이 끝났다고 사고가 끝난 것은 아닙니다. 공격자는 놓친 지속성, 남은 자격증명, 패치되지 않은 최초 침투 경로를 통해 돌아옵니다. 그래서 근절 이후 일정 기간은 재침투 감시 기간으로 운영해야 합니다.
재침투(복귀) 신호
① IOC 재출현 : 같은 C2 IP·도메인·파일 해시·키 지문
② 기법 재사용 : 같은 이름의 cron·유닛, 같은 경로(/usr/lib/.x/)
③ 계정 재사용 : 근절 전 사용된 계정·출발지의 재로그인
④ 최초 경로 : 같은 취약점·같은 웹 경로로 재침투
↓
원인 판정: 놓친 지속성? 남은 자격증명? 미패치 취약점?
핵심: 재침투는 "근절 실패의 증거" — 원인을 찾아 근절 절차를 고친다
복귀 신호를 보면 어떤 경로로 돌아왔는지가 곧 근절 단계에서 무엇을 놓쳤는지를 알려 줍니다.
| 신호 | 근거 데이터 | 놓친 것 |
|---|---|---|
| C2 재연결 | 방화벽·DNS·connect | 남은 지속성 |
| 같은 키 지문 | sshd VERBOSE | 미제거 키·키 재사용 |
| 같은 계정·출발지 | secure | 미교체 자격증명 |
| 같은 웹 경로 | access_log | 미패치 취약점 |
# 재침투 감시: 근절 시 확정한 IOC 목록으로 사후 검색 (분석 방법)
cat /root/ir/ioc.txt # ip:198.51.100.7 / hash:... / fp:SHA256:Qm3... / path:/usr/lib/.x/
grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}' /root/ir/ioc.txt | while read ip; do
sudo grep -l "$ip" /var/log/secure /var/log/httpd/access_log 2>/dev/null | sed "s/^/$ip → /"
done
sudo grep -F -f <(grep -oE 'SHA256:[^ ]+' /root/ir/ioc.txt) /var/log/secure | tail
sudo find / -xdev -path '*/.x/*' 2>/dev/null
근절 후 14일: IOC IP·지문·경로 재출현 0건
C2 목적지 차단 로그: 0건
근절 이후 감시 기간 동안 IOC가 다시 나타나지 않고 같은 기법의 흔적도 없는 상태가 근절 성공입니다.
근절 후 6일: DROP DST=198.51.100.7 DPT=443 (5분 간격)
근절 후 9일: Accepted password for oldsvc from 203.0.113.80
/usr/lib/.x/agent 재생성 (부모: systemd-udevd)
재침투 원인 분석 흐름입니다(가상의 예시).
[복귀 신호] IOC 재출현 · 기법 재사용
↓
[경로 특정] 어떤 트리거·계정·취약점으로 돌아왔나
↓
[누락 원인] 근절 체크리스트와 대조 → 빠진 항목
↓
[재근절] 누락 항목 + 전 항목 재점검 → 감시 기간 재시작
↓
[개선] 체크리스트·탐지 룰 보완
| 복귀 경로 | 근절 누락 |
|---|---|
| 스케줄·이벤트 트리거 | 지속성 점검 범위 |
| 계정·키 | 자격증명 정리 |
| 웹·취약점 | 최초 침투 경로 패치 |
이 사례에서는 udev 규칙(I26)과 휴면 계정(I11)이 체크리스트에서 빠져 있었습니다. 재침투 원인은 개인 실수가 아니라 절차의 빈칸으로 기록해 개선합니다.
<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_i,persistence,">
<rule id="108360" level="14">
<if_sid>108000</if_sid>
<field name="audit.key">reentry_net</field>
<list field="dstip" lookup="address_match_key">etc/lists/ir-ioc-ip</list>
<description>근절 IOC 목록의 목적지로 연결 시도(근절 후 재침투 의심)</description>
<mitre><id>TA0003</id></mitre>
</rule>
</group>
근절 시 확정한 IOC IP를 CDB 리스트(ir-ioc-ip)로 관리하고, 연결 목적지가 목록에 있으면 경보합니다. 목적지 IP 필드는 수집 방식(auditd SOCKADDR 디코딩·방화벽 로그)에 맞게 조정합니다.
| 신호 | 의미 |
|---|---|
| IOC 재출현 | 지속성 잔존 |
| 계정 재사용 | 자격증명 미정리 |
| 같은 침투 경로 | 미패치 |
| 대응 | 원인 찾아 절차 개정 |
| 면접 포인트 | "재침투는 근절 실패의 증거 — 돌아온 경로가 체크리스트의 빈칸을 알려 준다" |
다음 편 438. 지속성·재침투 — 백도어·재침투 경로 종합 분석 에서는 I29~I37의 리버스 셸·리스너·웹셸·C2·SSH 터널·신뢰 관계·커널 모듈·바이너리 교체·복귀 징후를 재침투 경로 지도로 종합합니다.
이전 편: 436. 지속성·재침투 — 시스템 바이너리 교체(트로이목마화) 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점