Linux 로그 경로 정리 · 48/50 · Part 6. SOC / SIEM / Wazuh

선행 학습 → 39. auditd로 execve 추적 · 40. auditd로 중요 파일 접근 추적 · 44. 로그 삭제·변조 흔적 분석
이번 글 → Linux 로그 기반 IOC 추출
이어서 → 49. Linux 로그 타임라인 분석

1. 들어가며

IOC(Indicator of Compromise)는 공격과 관련된 식별 가능한 흔적입니다. IOC를 추출하는 목적은 세 가지입니다. 같은 공격이 다른 서버에도 있는지 찾고(헌팅), 차단하고(대응), 탐지 룰을 만드는 것(개선) 입니다.

핵심 요약

  • IOC 9종: Source IP · Destination IP · Username · Process · Command · File · Hash · Domain · Port
  • 대부분은 인증 로그 + auditd 에서 나온다. Hash·Domain은 로그만으로 부족할 수 있다.
  • IOC는 값만이 아니라 출처 로그·시각·신뢰도와 함께 기록한다.

2. 핵심 개념

IOC추출 소스명령주의
Source IPsecure/auth.log from Xgrep -oE 'from [0-9.]+'NAT·프록시 뒤 IP일 수 있음
Usernamefor X, audit auidawk 필드탈취 계정 vs 생성 계정 구분
Processaudit exe / commausearch -icomm 은 위조 가능, exe 우선
Commandaudit EXECVEausearch -m EXECVE -i인자에 URL·경로 포함
Fileaudit PATH, 인자, FIM숨김·임시 경로
Destination IP / Portaudit SOCKADDR, 방화벽 로그ausearch -k net_out -iconnect 룰 필요
DomainDNS·프록시·웹 로그, 명령 인자이 시나리오에는 IP 직접 통신
Hash로그에 없음파일 수집 후 sha256sum, Wazuh FIM파일 삭제 전 확보

3. 로그 생성 구조

로그 소스별 IOC 추출 지도

4. 실제 로그 경로

분석 입력 (수집본만 사용)
/evidence/case-0920/work/secure        (또는 중앙 사본 central/web01/secure)
/evidence/case-0920/work/audit.log
/evidence/case-0920/work/cron

5. 명령어 실습

실습 스크립트 ioc.sh (분석본 사본만 읽음):

#!/usr/bin/env bash
# ioc.sh - 분석본(사본) 로그에서 IOC 후보 추출 (원본 수정 없음)
SEC=${1:-/lab/work/central/secure}
AUD=${2:-/lab/work/audit.log}
echo "== [1] 인증 실패 출발지 IP (Top) =="
grep 'Failed password' "$SEC" | grep -oE 'from ([0-9]{1,3}\.){3}[0-9]{1,3}' | awk '{print $2}' | sort | uniq -c | sort -rn | head -5
echo "== [2] 실패 IP 중 로그인 성공한 IP =="
grep 'Accepted' "$SEC" | awk '{for(i=1;i<=NF;i++) if($i=="for") u=$(i+1); for(i=1;i<=NF;i++) if($i=="from") ip=$(i+1); print ip, u, $1" "$2" "$3}' \
 | while read ip u ts; do grep -q "Failed password.* from $ip " "$SEC" && echo "$ip user=$u first_success=$ts"; done
echo "== [3] 신규 계정 생성 =="
grep -oE 'new user: name=[^,]+' "$SEC" | sort -u
echo "== [4] 실행 명령 (auditd EXECVE, key별) =="
TZ=Asia/Seoul ausearch -if "$AUD" -m EXECVE -i 2>/dev/null | grep '^type=EXECVE' \
 | sed -E 's/.*argc=[0-9]+ //; s/(^| )a[0-9]+=/\1/g' | sort -u
echo "== [5] 외부 연결 목적지 (auditd SOCKADDR) =="
TZ=Asia/Seoul ausearch -if "$AUD" -k net_out -i 2>/dev/null | grep -oE 'laddr=[0-9.]+ lport=[0-9]+' | sort -u
echo "== [6] URL / 파일 경로 =="
TZ=Asia/Seoul ausearch -if "$AUD" -m EXECVE -i 2>/dev/null | grep -oE 'https?://[^ ]+|/(tmp|usr/local/bin)/[^ ]+' | sort -u

Hash 확보 (라이브 서버 또는 디스크 이미지에서, 격리 후):

sha256sum /usr/local/bin/.syscheck /tmp/.x.sh 2>/dev/null        # 파일이 남아 있을 때
cp -a /usr/local/bin/.syscheck /evidence/case-0920/artifacts/      # 실행하지 말고 보존

6. 로그 예시

실제 실행 결과 — Rocky Linux 9.8 · root@rocky9-lab — ioc.sh (입력: 실습 시나리오 분석본)

위 이미지는 실습 시나리오 데이터(직접 작성한 가상 로그)의 분석본을 입력으로 Rocky Linux 9.8 실습 환경에서 ioc.sh 를 실제로 실행한 결과입니다. SOCKADDR 레코드의 laddr 는 ausearch가 connect 대상 주소를 표시하는 방식으로, 원격 목적지 IP를 의미합니다.

7. 로그 필드 분석

추출 결과를 IOC 목록으로 정리(시나리오 기준):

유형값출처시각(KST)신뢰도
Source IP203.0.113.45secure(중앙 사본)02:13:05~02:15:07높음 (실패 42 → 성공)
Usernamedeploysecure, audit auid02:14:52높음 (탈취 계정)
Usernamesysbackupsecure useradd02:16:40높음 (백도어 계정)
URLhttp://198.51.100.23/x.shaudit EXECVE02:16:10높음
File/tmp/.x.sh, /tmp/.x/syscheckaudit EXECVE02:16:10~17높음
File/Process/usr/local/bin/.syscheckaudit EXECVE, cron02:16:17, 02:20:01~높음 (지속성)
Destination198.51.100.23:4444audit SOCKADDR02:20:02높음 (C2 의심)
Commandsed -i /203.0.113.45/d /var/log/secureaudit EXECVE02:23:40높음 (로그 변조)
Hash(파일 확보 후 기재)———

8. 보안관점

좋은 IOC약한 IOC
공격자 전용 인프라 IP·URL클라우드·CDN 공용 IP
파일 해시(정확 일치)흔한 파일명(update.sh)
행위 패턴(숨김 경로 + cron + 외부 4444)단일 문자열

IP·도메인은 공격자가 쉽게 바꿉니다. 오래 유효한 탐지는 행위(TTP) — "로그인 직후 /tmp 에 다운로드 → 숨김 경로 복사 → root cron 등록" — 를 룰로 만드는 것입니다.

9. SOC 관점

  • Hunting: IOC 목록으로 SIEM 전체 서버 검색 (data.srcip:203.0.113.45, audit.execve.a2 에 URL).
  • Response: IP 차단(방화벽/WAF), 계정 잠금, 파일 격리, cron 제거 — 각 조치 전 증거 보존.
  • Sharing: 조직 내 TI 플랫폼(MISP 등)에 출처·신뢰도와 함께 등록.
  • Detection: 행위 기반 룰로 전환(47편 커스텀 룰).

10. 실습 체크리스트

[ ] IOC 9종과 추출 소스 매핑
[ ] ioc.sh 로 분석본에서 IOC 추출
[ ] 실패 → 성공 IP 판별
[ ] EXECVE 인자에서 URL·경로 추출
[ ] SOCKADDR 로 목적지 IP·포트 추출
[ ] Hash 확보 절차 및 IOC 기록 표 작성

11. 핵심 정리

  • IOC는 인증 로그와 auditd에서 대부분 추출된다.
  • Hash와 Domain은 로그만으로 부족할 수 있어 파일·네트워크 로그를 추가 확보한다.
  • IOC는 값·출처·시각·신뢰도를 함께 기록한다.
  • 쉽게 바뀌는 IP보다 행위 패턴이 더 오래가는 탐지 기준이다.
  • 추출한 IOC로 다른 서버를 헌팅하고 탐지 룰을 개선한다.

12. 다음 편 연결

구분글
◀ 이전 글47. Wazuh에서 Linux 로그 수집 구조
▶ 다음 글49. Linux 로그 타임라인 분석
시리즈Linux 로그 경로 정리 전체 보기
선행 시리즈리눅스 시스템 기초 · 파일 · 권한 · 사용자 관리 · 서비스 · 프로세스 관리 · Linux 시스템 보안 기초
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글