441. 지속성·재침투 — 지속성·재침투 타임라인 작성

changseop lee·4일 전

시스템 보안 · 취약점

목록 보기
441/450

시스템 보안 · 취약점 › I. 지속성 · 재침투 징후 · 41/50편 (전체 441/450)
학습 단계: SOC 탐지 연계
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.

선행 학습

1. 개념

지속성 대응의 핵심 질문은 "무엇이 있는가"(인벤토리)와 "언제, 어떤 순서로 생겼는가"(타임라인)입니다. 타임라인을 보면 공격자가 무엇을 먼저 설치했고 무엇이 무엇을 되살리는지 알 수 있습니다.

지속성·재침투 타임라인 소스
 인증   : secure/auth.log (로그인·sudo)
 감사   : auditd (persist_* · account_persist · reentry_*)
 파일   : FIM·stat (생성·수정 시각) — timestomping 주의(H16)
 실행   : cron CMD · journal(유닛 기동) · execve
 네트워크: 방화벽·conntrack·proxy
   ↓
 UTC 기준 정규화 → 시간순 정렬 → 단계 태깅

핵심: 파일 시각은 변조 가능 — 감사·중앙 로그 시각을 우선한다

H영역에서 본 것처럼 파일 시각은 조작될 수 있으므로, 타임라인의 뼈대는 중앙에 수집된 로그 시각으로 세우고 파일 시각은 보조 근거로 씁니다.

2. 왜 중요한가

  • 설치 순서를 알면 근절 순서(재생성 장치 먼저)를 정할 수 있습니다.
  • 재침투 시점을 알면 그 이후 행위 전체를 조사 범위로 확정할 수 있습니다.
  • 보고서·면접에서 사고를 설명하는 가장 명확한 형식입니다.

3. 핵심 명령어 / 설정

단계 태그대표 이벤트
침투웹 POST·SSH 로그인
상승sudo·setuid·sudoers 사용
지속성persist_* 감사·FIM ADD
통로reentry_* 연결·리스너
은폐로그 삭제·timestomp(H영역)
재침투근절 후 IOC 재출현

4. 실습 (실습 예시)

# 여러 소스를 하나의 타임라인으로 (분석 방법, 가상 데이터)
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

5. 정상 상태

(정상 기간 타임라인)
09:40 AUTH  admin01 로그인(관리망)
09:42 AUDIT account_persist useradd kim.dev (티켓 ACC-0331)

정상 기간의 타임라인은 승인된 작업자·관리망 출발지·업무 시간의 이벤트로 구성되고, 각 변경에 티켓이 대응됩니다.

6. 이상 상태

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)
  • 23분 만에 계정·권한·스케줄·서비스·부팅·통로 지속성 설치
  • cron(03:00)이 이후 항목을 재생성하는 구조 → 근절 시 최우선 제거
  • D+9 재침투 → 휴면 계정 재활성화가 근절에서 누락

7. 로그 분석 (분석 방법)

타임라인 재구성 절차입니다(가상의 예시).

[수집] 중앙 로그(UTC) + 감사 + FIM + 네트워크
   ↓
[정규화] 시각·호스트·주체(auid)·행위·대상
   ↓
[태깅] 침투 / 상승 / 지속성 / 통로 / 은폐 / 재침투
   ↓
[관계] 재생성 관계 화살표 (cron → agent → preload)
   ↓
[결론] 최초 침투 시각 · 설치 순서 · 조사 범위 시작점
산출물활용
설치 순서근절 순서
재생성 관계제거 우선순위
재침투 시점조사 범위

타임라인의 각 줄에는 근거 로그 위치(파일·Alert ID)를 함께 적어 두어야 검토자가 같은 결론에 도달할 수 있습니다.

8. SOC 관제 포인트

  • SIEM에서 auid·세션 기준으로 이벤트를 묶어 타임라인 초안을 자동 생성합니다.
  • 모든 시각을 UTC로 통일하고 표시 시에만 현지 시각으로 바꿉니다.
  • 타임라인을 인시던트 티켓의 첫 첨부물로 관리합니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 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)가 같은 지속성 이벤트를 묶어 경보합니다. 이 묶음이 곧 타임라인의 "지속성 설치 단계" 초안이 됩니다.

10. 대응 방법

  1. 초기 확인 — 중앙 로그·감사·FIM·네트워크 소스를 수집합니다.
  2. 범위 확인 — 주체·세션 기준으로 이벤트를 묶어 단계를 태깅합니다.
  3. 증거 확보 — 타임라인과 근거 로그 위치를 함께 보존합니다.
  4. 차단/조치 — 설치 순서·재생성 관계에 따라 근절 순서를 정합니다.
  5. 재발 방지 — 최초 침투 시각 이후 전체를 조사 범위로 확정하고 보고서에 반영합니다.

11. 핵심 정리

요소기준
뼈대중앙 로그 시각(UTC)
보조파일 시각(변조 주의)
태깅침투~재침투 6단계
산출설치 순서·재생성 관계·범위
면접 포인트"인벤토리는 무엇이, 타임라인은 언제·어떤 순서로 — 순서가 근절 순서를 정한다"

12. 다음 편 예고

다음 편 442. 지속성·재침투 — 지속성·재침투 로그의 정규화와 수집 에서는 auditd·FIM·인증·cron·네트워크 로그를 공통 필드(host·actor·action·target·method·trigger)로 정규화해 SIEM에서 지속성을 조회하는 파이프라인을 다룹니다.


이전 편: 440. 지속성·재침투 — 지속성 기준선 diff 자동화와 정기 점검
📚 시리즈 전체 보기: 시스템 보안 · 취약점

profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글