📚 네트워크 · 패킷 분석 › 05. 네트워크 스캔 징후 분석 — 246편
이전 글: 245. Scan과 공격의 연관성 분석 · 다음 글: 247. Incident Timeline 작성
IOC(Indicator of Compromise) 는 공격·침해를 식별하는 데 쓸 수 있는 관찰 가능한 값입니다. IDS Alert 필드에서 IOC를 뽑는 방법은 298. Alert에서 IOC 추출, 패킷에서 뽑는 방법은 149. Packet에서 IOC 추출에서 다뤘습니다. 이 글은 스캔·정찰 사건에서 어떤 IOC를 얻을 수 있고, 그 가치가 얼마나 지속되는가에 집중합니다.
정찰 단계의 IOC는 악성 파일 해시 같은 "침해의 증거"보다는 행위자의 인프라와 도구 특징이 중심입니다. 수명이 짧은 대신 초기 차단과 과거 로그 재검색에 쓸모가 있습니다.
| IOC 종류 | 정찰에서 얻는 위치 | 수명(일반적) | 활용 |
|---|---|---|---|
| 출발지 IP | 방화벽·IDS·서비스 로그 | 짧음(수일~수주) | 단기 차단, 재검색 |
| 출발지 대역·ASN | IP 소유 조회 | 중간 | 감시 강화 |
| User-Agent | 웹 로그, IDS http 이벤트 | 중간(도구 기본값 변경 전까지) | 웹 로그 검색, 탐지 규칙 |
| 요청 경로·패턴 | 웹 로그 | 중간 | WAF·IDS 규칙 |
| 시도 계정명 목록 | 인증 로그 | 중간 | 표적 여부 판단 |
| TCP 특징(윈도 크기·옵션) | 패킷·방화벽 로그 | 도구 버전에 따라 다름 | 도구 식별 보조 |
IOC 추출은 "뽑기"보다 "거르기" 가 중요합니다. 잘못된 IOC는 정상 서비스를 막거나 분석을 오도합니다.
사건 관련 이벤트 전체
↓
[후보 추출] 출발지 IP, 대역, User-Agent, 경로, 계정명, 패킷 특징
↓
[제외 기준]
├─ 자사 자산·승인 점검 서버? → 제외
├─ 공유 인프라(CDN, 대형 클라우드 공용 IP, 공용 DNS)? → 제외 또는 맥락 한정
├─ 위조 가능성(성립 연결 없는 SYN 출발지)? → 신뢰도 낮음 표기
└─ 너무 흔한 값(일반 브라우저 UA)? → 단독 IOC로 쓰지 않음
↓
[맥락 부여] 최초·최종 관측 시각, 관측 장비, 행위, 신뢰도, 만료 기준
↓
[활용] 과거 로그 재검색 → 추가 대상 발견 → 범위 확장 / 차단 목록 / 공유
| 기록 항목 | 예 | 이유 |
|---|---|---|
| 값 | 203.0.113.60 | IOC 자체 |
| 유형 | IPv4 / UA / URL 경로 / 계정명 | 검색·차단 대상 장비 결정 |
| 관측 | 09-28 23:10 ~ 09-30 02:11, FW·IDS·WAF | 재검색 범위 |
| 행위 | TCP 스캔 → 8080 경로 조작 시도 | 의미 전달 |
| 신뢰도 | 높음(성립 연결·서비스 요청 있음) | 오차단 방지 |
| 만료 | 30일 후 재검토 | IP 재할당 대비 |
정찰 사건 IOC 목록의 형식 예시입니다(값은 환경마다 다름, 가상의 예).
# 형식 예시 — IOC 목록 (TLP 등 공유 등급은 조직 기준에 따름)
유형 값 신뢰도 관측 장비 행위 만료
IPv4 203.0.113.60 높음 FW, IDS, WAF 스캔 → 웹 공격 시도 30일
IPv4 203.0.113.61 중간 sshd 22 대입(성공 없음) 30일
CIDR 203.0.113.0/24 낮음 FW 동시간대 스캔 다수 감시만
UA "Mozilla/5.0 (compatible)" 낮음 웹 로그 경로 탐색 요청 단독 사용 금지
계정명 test, admin, oracle, deploy 중간 sshd 시도 계정 목록 90일
실습 예시 — 본인 소유 실습 환경에서 추출한 IOC로 과거 로그를 재검색해 추가 대상을 찾는 방어 측 명령입니다.
# IOC 파일(한 줄에 IP 하나)로 방화벽 로그 재검색 → 추가로 접촉한 대상
grep -F -f ioc_ip.txt /var/log/ufw.log | grep -oE "DST=[0-9.]+" | sort | uniq -c | sort -rn
# 웹 로그에서 IOC IP 요청의 User-Agent 목록
grep -F -f ioc_ip.txt /var/log/apache2/access.log | awk -F'"' '{print $6}' | sort | uniq -c | sort -rn
grep -F -f는 IP를 문자열로 비교하므로 203.0.113.6이 203.0.113.60에도 걸립니다. 결과를 검토하거나 IOC 파일의 값 뒤에 공백을 붙이는 등 경계를 맞춥니다.
관제자가 확인할 질문
후보 추출 → 제외 기준 적용 → 맥락·신뢰도·만료 기록
↓
과거 로그 재검색 → 범위 확장 여부
↓
차단 목록(단기) / 감시 목록 / 탐지 규칙 / 공유
오탐 주의: 일반적인 브라우저 User-Agent, 흔한 경로(/, /favicon.ico), 공용 DNS 서버 IP는 IOC로 쓰면 정상 트래픽이 대량으로 걸립니다. 흔한 값은 다른 IOC와 조합할 때만 사용합니다.