시스템 보안 · 취약점 › I. 지속성 · 재침투 징후 · 41/50편 (전체 441/450)
학습 단계: SOC 탐지 연계
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
지속성 대응의 핵심 질문은 "무엇이 있는가"(인벤토리)와 "언제, 어떤 순서로 생겼는가"(타임라인)입니다. 타임라인을 보면 공격자가 무엇을 먼저 설치했고 무엇이 무엇을 되살리는지 알 수 있습니다.
지속성·재침투 타임라인 소스
인증 : secure/auth.log (로그인·sudo)
감사 : auditd (persist_* · account_persist · reentry_*)
파일 : FIM·stat (생성·수정 시각) — timestomping 주의(H16)
실행 : cron CMD · journal(유닛 기동) · execve
네트워크: 방화벽·conntrack·proxy
↓
UTC 기준 정규화 → 시간순 정렬 → 단계 태깅
핵심: 파일 시각은 변조 가능 — 감사·중앙 로그 시각을 우선한다
H영역에서 본 것처럼 파일 시각은 조작될 수 있으므로, 타임라인의 뼈대는 중앙에 수집된 로그 시각으로 세우고 파일 시각은 보조 근거로 씁니다.
| 단계 태그 | 대표 이벤트 |
|---|---|
| 침투 | 웹 POST·SSH 로그인 |
| 상승 | sudo·setuid·sudoers 사용 |
| 지속성 | persist_* 감사·FIM ADD |
| 통로 | reentry_* 연결·리스너 |
| 은폐 | 로그 삭제·timestomp(H영역) |
| 재침투 | 근절 후 IOC 재출현 |
# 여러 소스를 하나의 타임라인으로 (분석 방법, 가상 데이터)
sudo ausearch -k persist_cron -k persist_svc -k persist_boot -k account_persist -k reentry_net -ts 10/08/2026 02:30:00 -te 10/08/2026 04:00:00 --format csv 2>/dev/null \
| awk -F, 'NR>1{print $2" "$3" AUDIT "$7" "$14}' > /tmp/tl_audit.txt
sudo awk '/Oct 8 0[23]:/{print "2026-10-08 "$3" AUTH "$0}' /var/log/secure > /tmp/tl_auth.txt
sort /tmp/tl_audit.txt /tmp/tl_auth.txt | less
(정상 기간 타임라인)
09:40 AUTH admin01 로그인(관리망)
09:42 AUDIT account_persist useradd kim.dev (티켓 ACC-0331)
정상 기간의 타임라인은 승인된 작업자·관리망 출발지·업무 시간의 이벤트로 구성되고, 각 변경에 티켓이 대응됩니다.
02:41 침투 POST /uploads/thumb.php (203.0.113.50)
02:49 상승 webadmin sudo -i
02:51 지속성 passwd 직접 편집(sysadm) 02:57 sudoers.d/99-sys
03:00 지속성 apache crontab(curl|bash) 03:02 dbus-helper.service enable
03:04 지속성 ld.so.preload 03:12 통로 ssh -R 2222 (autossh)
D+9 재침투 oldsvc 로그인 (203.0.113.80)
타임라인 재구성 절차입니다(가상의 예시).
[수집] 중앙 로그(UTC) + 감사 + FIM + 네트워크
↓
[정규화] 시각·호스트·주체(auid)·행위·대상
↓
[태깅] 침투 / 상승 / 지속성 / 통로 / 은폐 / 재침투
↓
[관계] 재생성 관계 화살표 (cron → agent → preload)
↓
[결론] 최초 침투 시각 · 설치 순서 · 조사 범위 시작점
| 산출물 | 활용 |
|---|---|
| 설치 순서 | 근절 순서 |
| 재생성 관계 | 제거 우선순위 |
| 재침투 시점 | 조사 범위 |
타임라인의 각 줄에는 근거 로그 위치(파일·Alert ID)를 함께 적어 두어야 검토자가 같은 결론에 도달할 수 있습니다.
<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_i,persistence,">
<rule id="108400" level="12">
<if_matched_group>persistence</if_matched_group>
<same_field>audit.ses</same_field>
<timeframe>3600</timeframe>
<description>동일 로그인 세션 1시간 내 복수 지속성 이벤트(설치 단계 타임라인 묶음)</description>
<mitre><id>TA0003</id></mitre>
</rule>
</group>
auditd 세션 ID(ses)가 같은 지속성 이벤트를 묶어 경보합니다. 이 묶음이 곧 타임라인의 "지속성 설치 단계" 초안이 됩니다.
| 요소 | 기준 |
|---|---|
| 뼈대 | 중앙 로그 시각(UTC) |
| 보조 | 파일 시각(변조 주의) |
| 태깅 | 침투~재침투 6단계 |
| 산출 | 설치 순서·재생성 관계·범위 |
| 면접 포인트 | "인벤토리는 무엇이, 타임라인은 언제·어떤 순서로 — 순서가 근절 순서를 정한다" |
다음 편 442. 지속성·재침투 — 지속성·재침투 로그의 정규화와 수집 에서는 auditd·FIM·인증·cron·네트워크 로그를 공통 필드(host·actor·action·target·method·trigger)로 정규화해 SIEM에서 지속성을 조회하는 파이프라인을 다룹니다.
이전 편: 440. 지속성·재침투 — 지속성 기준선 diff 자동화와 정기 점검
📚 시리즈 전체 보기: 시스템 보안 · 취약점