440. 지속성·재침투 — 지속성 기준선 diff 자동화와 정기 점검

changseop lee·4일 전

시스템 보안 · 취약점

목록 보기
440/450

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

선행 학습

1. 개념

기준선과 인벤토리는 한 번 만들 때보다 매일 자동으로 비교될 때 가치가 큽니다. 실시간 감사 룰이 놓친 지속성도 정기 diff에서는 "결과"로 드러나기 때문입니다.

정기 diff 자동화 구조
 [timer: 매일 04:10] 인벤토리 수집(읽기 전용)
   ↓
 [diff] 승인 기준선 vs 오늘 인벤토리
   ↓
 [출력] 추가/변경/삭제 항목 → logger -t persist-diff
   ↓
 [Wazuh] 수집 → 룰 매칭 → Alert
   ↓
 [승인 반영] 티켓 확인된 항목만 기준선 갱신

핵심: 실시간 감사(행위) + 정기 diff(결과) = 이중 안전망

실시간 감사는 감사 규칙이 꺼졌거나 감시 경로에 없던 위치의 변경을 놓칠 수 있습니다. 정기 diff는 결과 상태를 비교하므로 그런 공백을 메웁니다.

2. 왜 중요한가

  • 감사 규칙 공백이나 일시적 중단을 보완하는 안전망 역할을 합니다.
  • 사람이 점검을 잊어도 매일 같은 기준으로 비교됩니다.
  • 기준선 갱신을 승인과 묶으면 비인가 변경이 기준선에 섞이지 않습니다.

3. 핵심 명령어 / 설정

구성방법주의
실행systemd timer / Wazuh command읽기 전용
비교diff / comm정렬·정규화
출력logger -t persist-diff한 줄 한 항목
기준선승인 시에만 갱신갱신 이력 보관
무결성기준선 파일 해시 별도 보관기준선 변조 대비

4. 실습 (실습 예시)

# 정기 diff 스크립트 핵심부 (분석 방법)
BASE=/var/lib/persist/baseline.tsv; NOW=/var/lib/persist/today.tsv
/usr/local/sbin/persist-inventory > "$NOW"          # I39 인벤토리(위치·소유·해시)
comm -13 <(cut -f1-5 "$BASE" | sort) <(cut -f1-5 "$NOW" | sort) | while IFS= read -r l; do
  logger -t persist-diff "ADD $l"; done
comm -23 <(cut -f1-5 "$BASE" | sort) <(cut -f1-5 "$NOW" | sort) | while IFS= read -r l; do
  logger -t persist-diff "DEL $l"; done
# systemd timer 예: OnCalendar=*-*-* 04:10:00, Persistent=true

5. 정상 상태

persist-diff: (출력 없음)
기준선 갱신 이력: 10-02 dnf update(CHG-1090) 반영

정기 diff에서 차이가 없거나, 차이가 승인된 변경으로 확인되어 기준선에 반영된 이력이 남는 상태가 정상입니다.

6. 이상 상태

persist-diff: ADD 부팅 boot /etc/udev/rules.d/75-net-tune.rules 미소유 9e1f..
(같은 시간대 실시간 감사 Alert 없음 — udev 경로가 감사 규칙에 없었음)
  • 실시간 감사가 놓친 udev 규칙을 정기 diff가 발견 → 안전망 동작
  • 감사 공백 확인 → 감사 규칙 보강 필요
  • 미소유 신규 항목 → I08 판정 절차로 이관

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

정기 diff 운영 흐름입니다(가상의 예시).

[매일 diff] ADD / DEL / CHANGE
   ↓
[실시간 Alert 대조] 같은 항목의 감사 Alert 있음?
   ├─ 있음 → 기존 인시던트에 병합
   └─ 없음 → 감사 공백 → 감사 규칙 보강 티켓
   ↓
[판정] 승인 → 기준선 갱신 / 미승인 → 조사
diff의미
ADD신규 지속성 후보
DEL정리 또는 흔적 제거
CHANGE(해시)내용 변조

정기 diff의 ADD 중 실시간 Alert가 없던 항목은 "탐지 공백"의 증거이므로, 판정과 별개로 감사·룰 개선 항목으로 관리합니다.

8. SOC 관제 포인트

  • 정기 diff Alert와 실시간 감사 Alert를 같은 대시보드에서 대조합니다.
  • 기준선 파일의 해시를 SIEM에 따로 보관해 기준선 변조를 막습니다.
  • diff 스크립트가 실행되지 않은 날(누락)도 경보 대상으로 둡니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_i,persistence,">
  <rule id="108390" level="11">
    <decoded_as>syslog</decoded_as>
    <program_name>persist-diff</program_name>
    <match type="pcre2">^(ADD|CHANGE) </match>
    <description>지속성 정기 diff에서 신규·변경 항목 발견</description>
    <mitre><id>TA0003</id></mitre>
  </rule>
</group>

정기 diff 결과를 syslog로 받는 룰입니다. auditd 상위 룰과 무관한 독립 룰이며, 스크립트 미실행 감지는 Wazuh 에이전트의 명령 모니터링 결과 부재로 별도 구성합니다.

10. 대응 방법

  1. 초기 확인 — ADD·CHANGE 항목의 내용과 실시간 Alert 유무를 확인합니다.
  2. 범위 확인 — 같은 날 다른 호스트에도 같은 항목이 생겼는지 확인합니다.
  3. 증거 확보 — diff 결과·인벤토리·기준선 해시를 보존합니다.
  4. 차단/조치 — 미승인 항목은 판정·근절 절차로 넘기고 감사 공백을 보강합니다.
  5. 재발 방지 — 기준선 갱신을 승인 절차와 연동해 운영합니다.

11. 핵심 정리

요소기준
주기매일(Persistent=true)
출력logger 한 줄 한 항목
갱신승인 시에만
효과감사 공백 보완
면접 포인트"실시간 감사는 행위를, 정기 diff는 결과를 본다 — 둘이 서로의 공백을 메운다"

12. 다음 편 예고

다음 편 441. 지속성·재침투 — 지속성·재침투 타임라인 작성 에서는 침투→권한 상승→지속성 설치→재침투까지의 이벤트를 하나의 타임라인으로 엮어 설치 순서·재생성 관계·재침투 시점을 재구성하는 방법을 다룹니다.


이전 편: 439. 지속성·재침투 — 지속성 인벤토리(전수 점검) 작성
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글