📚 네트워크 · 패킷 분석 › 05. 네트워크 스캔 징후 분석 — 247편
이전 글: 246. IOC 추출 · 다음 글: 248. 네트워크 정찰 Incident 분석
Incident Timeline(사건 타임라인) 은 여러 장비와 시스템에 흩어진 이벤트를 하나의 시간 기준으로 정렬한 기록입니다. 타임라인이 있어야 "무엇이 먼저였는가", "어느 단계에서 탐지되었는가", "어디서 멈췄는가"를 설명할 수 있습니다. IDS Alert가 출발점인 사건의 분석 절차는 299. IDS Incident 분석에서 다뤘고, 이 글은 정찰 사건의 타임라인을 만드는 방법 자체에 집중합니다. 다음 글(248. 네트워크 정찰 Incident 분석)은 같은 가상 시나리오로 사건 분석을 이어갑니다.
| 타임라인이 답하는 질문 | 필요한 열 |
|---|---|
| 언제 처음 접촉했는가 | 시각(통일 기준) |
| 어떤 장비가 무엇을 보았는가 | 출처, 원본 위치 |
| 누가 무엇을 대상으로 했는가 | 주체 → 대상(IP·포트·계정) |
| 어느 단계인가 | 단계 분류(정찰·시도·성공·확산) |
| 무엇이 근거인가 | 사실(관찰)과 추정(해석) 분리 |
타임라인 작성 순서입니다.
[1] 출처 목록화 방화벽, IDS, 서버 인증 로그, HIDS, 웹 로그, DHCP, 패킷
↓
[2] 수집·보존 조사 기간 로그 추출, 원본 해시 기록
↓
[3] 시간 정규화 모든 시각을 한 기준(KST 또는 UTC)으로 변환, 원본 표기 병기
↓ 장비 간 시계 오차 확인(같은 연결이 두 장비에 찍힌 시각 비교)
[4] 정렬·병합 시각 순 정렬, 같은 사건의 중복 행 병합
↓
[5] 해석 열 추가 단계 분류, 추정은 별도 열
↓
[6] 공백 표시 로그가 없는 구간·장비를 명시
↓
[7] 검증 다른 분석가가 원본 위치로 재확인 가능해야 함
시계 오차를 확인하는 간단한 방법은 같은 연결을 두 장비에서 찾는 것입니다. 방화벽의 세션 시작 시각과 IDS flow 시작 시각이 3초 차이라면, 이 두 장비의 이벤트 순서는 3초 이내에서는 확신할 수 없습니다. NTP 동기화 상태는 평소 점검 항목입니다.
| 흔한 실수 | 결과 | 예방 |
|---|---|---|
| 시간대 혼용(UTC와 KST) | 9시간 어긋난 순서 | 변환 후 원본 표기 병기 |
| 추정을 사실처럼 기록 | 잘못된 결론 전파 | 판단 열 분리 |
| 요약 행에 조회 조건 누락 | 재현 불가 | 원본 위치·검색 조건 기록 |
| 로그 공백 미표시 | "아무 일 없음"으로 오해 | 공백 행 삽입 |
⚠️ 아래는 설명을 위한 가상 시나리오이며, 모든 로그와 값은 형식 예시입니다(값은 환경마다 다름).
가상 시나리오 — 내부 업무 단말 대역의 한 IP에서 서버 대역으로 새벽에 스캔 Alert가 발생했습니다. 관련 로그를 모아 KST 기준 타임라인을 작성합니다.
# 형식 예시 — 가상 시나리오 타임라인 (KST, 원본 UTC 장비는 변환)
시각 출처(원본 위치) 주체 → 대상 내용(사실) 판단(추정)
01:58:10 DHCP 192.168.30.45 = PC-FIN-017 임대 갱신 주체 식별
02:03~02:19 FW(내부 구간) 192.168.30.45 → 192.168.20.0/24 차단 4,120건, 고유 포트 1,000, 호스트 38 정찰
02:04:31 IDS(sid 1001502) 192.168.30.45 → 192.168.20.0/24 내부 SYN 스캔 임계치 Alert 탐지 시점
02:19:55 FW 192.168.30.45 → 192.168.20.30:3306 허용 세션 12건, 각 2~3초 시도
02:20:02 DB 서버 로그 192.168.30.45 → 192.168.20.30 인증 실패 12건, 성공 없음 시도(실패)
02:21~02:45 FW — 로그 수집 장애(원인: 수집기 재시작) 공백
02:46:30 FW 192.168.30.45 → 192.168.20.50:445 허용 세션 3건 시도?
02:46:31 파일 서버 보안 로그 192.168.30.45 → 192.168.20.50 로그온 실패 기록 3건 시도(실패)
실습 예시 — 본인 소유 실습 환경에서 서로 다른 로그를 시각 기준으로 병합하는 방어 측 방법입니다. 각 로그를 시각<TAB>출처<TAB>내용 형식의 파일로 변환한 뒤 정렬합니다.
# UTC 시각을 KST로 변환 (GNU date)
TZ=Asia/Seoul date -d "2026-09-29T17:04:31Z" "+%F %T" # 결과: 2026-09-30 02:04:31
# 변환된 파일 병합·정렬
sort -t$'\t' -k1,1 fw.tsv ids.tsv db.tsv > timeline.tsv
관제자가 확인할 질문
출처 목록 → 수집·해시 → 시간 정규화 → 정렬·병합
↓
해석 열(단계·추정) → 공백 표시 → 동료 검증 → 분석·보고에 사용 (248편)
오탐 주의: 타임라인은 처음 세운 가설에 맞춰 이벤트를 고르기 쉽습니다. 가설과 맞지 않는 이벤트(예: 같은 시간대 다른 출발지의 활동)도 삭제하지 말고 별도 표시해 두면 판단 수정에 도움이 됩니다.