- Zeek 로그 형식
- 입력 트래픽에서 프로토콜마다 로그 파일 생성
- 생성 파일명 : 프로토콜.log
- 기본 설정에서 모든 로그는 1시간마다 로테이트되면 저장
- 대량의 로그를 검색하고 분석하는 기능은 제공X
- 윈도우 로그
- 운영체제가 업그레이드됨에 따라 버전 별로 형태와 경로가 조금 상이함
- 로그 확인 2가지 방법
❶ 레즈스트리 통한 확인 : HKEY_LOCAL_MACHINE > SYSTEM > Current ControlSet > Services > EventLog
❷ 이벤트 뷰어 통한 확인
- regedit
경로 → HKEY_LOCAL_MACHINE > SYSTEM > Current ControlSet > Services > EventLog
- 이벤트뷰어
① 전역로그 (Windows 로그) (★)
- 전체 시스템에 적용되는 이벤트 저장
- 이전 버전의 Windows에서 사용할 수 있는 응용 프로그램, 보안 및 시스템 로그 포함
- ‘설정’과 ‘전달된 이벤트(Forwarded Events)‘ 로그 포함
❶ 응용 프로그램
- 윈도우 번들 소프트웨어과 일반 응용프로그램의 활성화 여부 기록
- 기록되는 이벤트는 해당 제품의 개발자에 의해 결정
❷ 보안
- 유효하거나 유효하지 않은 로그인 시도, 파일 생성, 열람 삭제 등 이벤트 기록
- 감사 정책 설정을 통해 다양한 보안 이벤트 저장 가능
❸ 설정
- 어플리케이션 설치 시 발생하는 이벤트 기록
- 프로그램이 잘 설치되었는지 호환성 문제는 없는지 확인
❹ 시스템
- 윈도우 시스템에서 기록하는 로그
- 서비스 실행 여부나 파일 시스템 필터, 디바이스 구성요소가 기록
❺ 전달된 이벤트 (forwarded events)
- 원격 컴퓨터에서 수집된 이벤트 저장
- 구독 사용하고 있다면 전달된 이벤트 로그 기록
② 응용 프로그램 및 서비스 로그
- 시스템 전체에 영향을 줄 수 있는 이벤트가 아닌 단일 응용 프로그램이나 구성 요소의 이벤트 저장
- Windows 로그 > 시스템 > 작업 > 현재 로그 필터링
오류 : 이벤트를 트리거한 응용 프로그램 또는 구성 요소 외부에 있는 기능에 영향을 줄 수 있는 문제가 발생했음을 나타냄
위험 : 이벤트를 트리거한 응용 프로그램 또는 구성 요소가 자동으로 복구할 수 없는 오류가 발생했음을 나타냄
![]() |
![]() |
- 이벤트 ID
- 로그 유형에 따라 이벤트 ID 부여
- 필요한 데이터를 따로 추출해 로그 분석 가능
- Appendix L - Events to Monitor | Microsoft Learn
Appendix L - Events to Monitor
Learn more about: Appendix L: Events to Monitor
learn.microsoft.com
![]() |
![]() |
이벤트ID | 설명 |
4726 | 계정 삭제 |
4624 | 로그인 성공 |
4625 | 로그인 실패 |
5142 | 네트워크 공유 개체가 추가 |
5632 | 무선네트워크에 인증 요청 |
4689 | 프로세스 종료 |
- 시스템 로그
- 윈도우 시스템 파일(시스템 구성파일)들의 운영 상태 기록
- 경로 → 제어판 > 시스템 및 보안 > 시스템 > 고급 시스템 설정 > 고급 > 시작 및 복구
- 시스템 로그의 '날짜 및 시간'을 통해 컴퓨터가 부팅시간과 종료시간 확인 가능
- 이벤트 ID : 6005 (시스템 시작), 6006 (시스템 종료)
- 백신
- 보안 제품 중에서 대표적인 이벤트 기반 보안 장비
- 악성코드를 탐지했을 때만 파일을 삭제하거나 격리 등의 보안 행동 수행
- 알려진 위협 탐지
- 악성코드 샘플 수집 후 이를 분석한 후 백신 탐지 규칙 갱신
- 악성코드 샘플을 수집하지 못하면 패턴을 만들 수 없으므로 탐지 불가능
- EDR(Endpoint Detection & Response)
- 행위 기반의 공격 탐지
- PC에서 발생하는 각종 시스템 이벤트를 분석해서 공격 행위 탐지
- 악성코드의 패턴을 알지 못해도 탐지 가능
- 악성 코드가 실행된 다음에 발생하는 시스템 호출, 임시파일 생성, 네트워크 접속 행위 등 이용해 악성코드 탐지
- 백신과 같은 정형화된 이벤트가 아니라 운영체제에서 발생하는 로그 수집
- 프로세스 상태 정보, 임시파일 생성, 네트워크 접속 행위 등 이용 악성코드 탐지
- Sysmon
- Microsoft의 Sysinternal suite에 포함된 시스템 모니터링 툴
- 기본 윈도우 이벤트 로그로는 한계가 있는 있음
- 프로세스 생성, 네트워크 연결, 파일 생성 시간 변경 등의 정보 추출 후 윈도우 이벤트 저장소에 저장
* 이벤트 기반 정보가 아닌 ‘행동 기반 정보’를 수집에서 이벤트 저장소에 저장
- Sysmon 기능
- 실행 프로세스와 부모 프로세스의 전체 명령 줄을 로그로 저장
- MD5, SHA1, SHA256 알고리즘으로 실행 프로그램의 해시 값 기록
- 여러 종류의 해시 값 동시 기록
- 네트워크 연결에서 IP주소, 포트번호, 호스트명, 포트명 등 기록
- 레지스트리에서 환경 설정이 변경된 경우 자동으로 다시 읽어 들임
- Sysmon 생성 이벤트 목록
- Sysmon 활성화
※ 파일 다운로드 후 설치 : https://download.sysinternals.com/files/Sysmon.zip

C:\> cd /user\sysmon\desktop\sysmon
C:\> sysmon64.exe -accepteula –i
* accepteula : 자동으로 사용자 라이선스 동의 후 실행
> 이벤트 뷰어 확인

- Zeek 로그 형식
# cd /opt/zeek/spool/zeek
# cat conn.log | more
# head 10 dns.log
# head 10 http.log
- SIEM을 이용한 관제 시스템
① ESM를 이용한 관제 시스템
- 통합보안 관제 시스템
- 기업 보안관리 시스템 (통합보안 관리 시스템, 전사적 보안관리 시스템)
- 다양한 보안 솔루션을 하나로 모은 통합 보안 관리시스템
- 다양한 보안 장비에서 발생하는 로그, 보안 이벤트를 통합적으로 수집, 관리, 분석, 통보 대응 및 보안 정책 관리
- ESM 주요 기능 2가지
❶ 서로 다른 기종의 보안 장비들을 통합 관리 기능
❷ 네트워크 자원 현황을 모니터링하는 보안 모니터링 기능
- ESM 구조
Agent | • 관리 대상 보안 장비(보안장비, 시스템장비, 네트워크 장비)에 설치 • 사전에 정의된 규칙에 의한 이벤트 수집 및 보안 정책 반영 • 정책에 따른 로그 및 이벤트 데이터를 수집하여 ESM manager에 전달 |
Manager (Engine) | • ESM agent에 의해 수집된 데이터 분석 및 저장 • 분석 결과를 ESM Console에 전달 |
Console | • ESM Manager에 의해 전달된 정보의 시각적 전달, 상황 판단 및 리포팅 기능 제공 • ESM Manager/Agent에 대해 규칙을 제어/통제 수행 |
② SIEM를 이용한 보안 관제 시스템
- SIEM(Security Information & Event Management)
- ESM의 진화된 형태 (2015년 가트너에 의해 처음으로 도입된 개념)
- 기업 정보에 대한 종합 관제 솔루션
- 기업 내에서 발생하는 모든 자원의 정보 및 보안 이벤트를 통합 관리
- 보안시스템, 서버 시스템, 네트워크 장비, 플리케이션로그, event, 시스템 감사정보 네트워크 흐름 등이 관리/분석 대상
- HP 아크사이트(ArcSight), IBM 큐레이더(Qrader), Splunk 등 널리 쓰임
- SIEM 구조
- 정의
• 보안 관련 정보를 관리하는 보안도구
- 하드웨어 혹은 소프트웨어나 가상 시스템 형식으로 구현 가능
- 구축 방식은 제조사마다 다름
• 보안 정보관리(security information)와 보안 이벤트 관리(security event management)를 통합한 소프트웨어 제품
- 애플리케이션과 네트워크 하드웨어 등이 생산한 보안 경보의 실시간 분석 제공
• 네트워크 경계부터 최종 사용자까지 로그를 중앙에 수집, 저장, 분석
- 통합된 보안 보고와 컴플라이언스 관리 통해 신속한 공격 탐지, 차단, 대응 위해 보안 위협을 모니터링함
③ SIEM과 ESM 비교
④ SIEM 개략적 처리 프로세스
- 로그 수집 (collection)
- 관제 대상의 Agent, SNMP, Syslog 서버로부터 로그 수집
- 로그 정규화(normalization)와 필터링 (filtering)
- 로그 형식을 표준 형식으로 변환
- 수집한 이벤트나 플로우 데이터를 데이터베이스에 저장하려면 일정한 형태로 변환 필요
- 업체에 따라 자동 정규화 또는 수동 정규화 방법 사용
- 정규화 과정에서 불필요한 데이터 필터링 수행
- 로그 분류
- 수집한 이벤트나 플로우 데이터를 데이터베이스에 저장하려면 일정한 형태로 변환
- 업체에 따라 자동 정규화 또는 수동 정규화 방법 사용
- 정규화 과정에서 불필요한 데이터 필터링 수행
- 상관관계 분석 (Correlation) (★)
- 동기종 또는 이기종의 여러 보안 솔루션에서 발생하는 로그 패턴 간에 연관성 분석
- 로그들 간에 상호 연관 분석을 함으로써 실시간 보안 위협을 파악하고 대응
- 정책 위험 탐지
- 로그를 분석해서 보호 대상의 전산 환경에 발생하는 문제와 공격과 정책의 위반 탐지
- 탐지는 설정한 규칙이나 조건에 맞을 때 발생
- 탐지 규칙은 임계값을 초과하거나 통계 기반의 사용자 행위를 분석하는 방법이 있음
- 알림(Alert, 경고)
- 경고란 보안 담당자의 검토가 필요하다는 의미
- 정책 위반을 탐지하면 곧 경고가 생성하고 보안 담당자에게 통보
- 경고를 발생시키는 정책은 운영하는 기업이나 기관의 관심 사안에 따라 다름
- 경고는 중요도를 부여할 수 있어야 함
- 중요도는 해당 경고를 향후 상세 분석을 할 것인지를 결정하는 기준으로 사용
- 대시보드 (또는 보고서)
- 로그는 보고서 또는 대시보드로 변환될 수 있음
‣ 얼마나 많은 접속이 발생했는가?
‣ 가장 많은 접속을 일으키는 호스는 어떤 것인가?
‣ 가장 많은 데이터를 인터넷으로 전송한 호스트는 무엇인가?
‣ 해당 호스트를 사용하는 사용자는 누구인가?
⑤ SIEM 상세 처리 프로세스
- splunk 기능
* 머신데이터
❶ 다양한 이기종 데이터 소스로부터 제약 없는 수집
- 에이전트/에이전트리스 방식 제공으로 유연성과 최적화된 수집 기능 제공
❷ 하루 수백 TB 수집까지 횡적 확장
- 엔터프라이즈급 확장성, 장애 복구, 및 통합성 제공
❸ SPL 활용한 검색 기능
- 머신 데이터 검색에 최적화된 Splunk 자체 검색 언어인 SPL을 활용한 검색
❹ 내장 UI 컴포넌트를 활용한 대시보드 제작
❺ 실시간 감시 및 알람
- 실시간 모니터링 및 알람 등록
- 검색 쿼리 저장 후 실시간/주기적인 실행을 통한 모니터링
- 자동 대응을 위한 각종 프로그램/스크립트 실행 가능
- RSS, Email 통지 및 NMS/SNS 연동 가능
- PDF 스케줄 전송 기능을 통한 보고서 이메일 발송
- splunk 설치
* 시스템 요구사항
Splunk Cloud | • 웹 브라우저가 있어야 함 • Chrome, Firefox 및 Safari의 최신 버전에서 Splunk Cloud 사용 |
Splunk Enterprise | • Linux, Windows 또는 Mac OS에서 사용가능 • Windows가 아닌 플랫폼 - 2코어 64비트 CPU 2GHz이상, 4GB RAM • Windows 플랫폼 - 2코어 64비트 CPU 2GHz이상, 4GB RAM • 웹브라우저 - Chrome, Firefox 및 Safari 브라우저의 최신 버전 지원 |
Splunk | The Data Platform for the Hybrid World
Splunk | The Data Platform for the Hybrid World
Splunk is the data platform that powers enterprise observability, unified security and limitless custom applications in hybrid environments.
www.splunk.com
* Tutorial 데이터 파일 다운로드
• 튜토리얼에서 사용할 데이터 파일 다운로드
- CSV 파일 형식인 데이터 파일에는 웹 액세스 로그 파일, 보안 형식 로그 파일, 판매 로그 파일 및 가격 리스트가 포함되어 있음
• tutorialdata.zip 파일 성공적으로 업로드하려면 압축해야 함
- tutorialdata.zip 파일 다운로드 (파일 압축해제 안 함)
- Prices.csv.zip 파일 다운로드 (파일 압축해제 안 함)
- Tutorial 데이터 추가






- 데이터 요약




- Splunk 기본 검색 연습
- 검색을 통해 원하는 로그만 필터 가능
→ 사용자 입력어는 대소문자 구분하지 않지만, AND, OR, NOT 대문자로 표기
→ 띄어쓰기는 AND가 생략된 것
→ 우선순위는 괄호 이용
→ " " 로 감싸면 하나의 단어로 인식
→ 최근 시간부터 보여줌
→ 단어의 순서, 공백까지 일치해서 검색

source="tutorialdata.zip:.\\vendor_sales/vendor_sales.log"

sourcetype=access_* status=200 "action=purchase"
→ 성공적인 구매 성공 로그 검색

(error OR fail* OR server) OR (status=404 OR status=500)
→ 오류 검색

error* (post AND (401 OR 403))
- 검색에서 필드 활용하기
- 필드는 로그 검색을 편리하게 만들어주는 기능
- 검색에 조건을 부여하고 검색 결과를 제한하여 정확한 결과 보여줌
- 필드를 이용한 검색을 수행하려면 로그에서 필드가 먼저 추출되어 있어야 함
- 형식 : [필드명 = 값]
- 필드 사용 규칙
- 필드 값은 대소문자를 구별하지 않지만 필드 이름은 대소문자를 구별
- 필드 추출 또는 필드 이름을 지정하 때 대소문자를 혼용하지 않는 것이 좋음
※ 검색 결과가 없다면 필드 이름을 잘못 썼는지 확인 ⇒ http_statu와 HTTP_Status는 전혀 다른 필드
- 필드 IP 주소를 포함하고 있다면 CIDR 형식으로 검색
ex) src = 192.168.10.* , src = 192.168.10.0/24
- 필드에 할당된 값이 숫자라면 비교 연산자를 사용해서 검색
ex) src_port > 5000 AND src_port < 6000
- 검색 명령어
데이터 나열, 변환 | table, rename, fields, dedup, sort |
통계 계산 | stats, top, rere, len(x) |
차트 시각화 | timechart, chart |
비교 분석 | eval, case, cidrmatch, ff, line, match |
다중 문자열과 시간 | mvindex, split, substr, round, ruldecode, strftime, strptime, now |
- table
- 필드명과 결합해 검색 결과를 테이블 형태로 보여줌
- table 명령어 다음에 확인하고 싶은 필드명 적음
- 필드명을 잘못 적으면 해당 필드에 공란이 보임
→ 다른 필드에는 값이 보이는데 특정 필드가 공백이면 필드명 입력 오류 의심
- 필드명은 대소문자 구분
- 여러 개의 필드는 쉼표(,) 또는 띄어쓰기로 구분

index=main sourcetype=access_combined_wcookie
| table clientip, method, productId, status
- rename
- 필드명을 다른 이름으로 변경
- 필드명을 띄어쓰기로 구분하고 싶으면 원하는 필드명을 따옴표로 표시

index=main sourcetype="access_combined_wcookie"
| table clientip, method, productId, status
| rename action As "Customer Action", productId AS ProductID, status AS "HTTP Status"
- dedup
- 검색 결과에서 중복 제거
- 중복 제거는 지정한 필드를 기준으로 실행
- 두 개 이상의 필드에서 중복 제거하려면 쉼표(,)로 구분
- 중복 제거하면 해당 필드의 유일한 값을 기준으로 결과를 보여줌
- 중복 제거하면 다른 필드의 값은 중복이 아닌데도 중복된 결과를 제거하면서 사라짐
- dedup은 상세 분석이 아니라 해당 필드에 존재하는 값을 확인하는 정도로 사용


- sort
- 검색 결과 정렬
- 기본 값은 오름차순 정렬
- 내림차순으로 정렬하려면 필드 앞에 마이너스( - ) 붙임

index=main sourcetype=access_combined_wcookie
| table clientip, action, productId, status
| sort action, productId

index=main sourcetype=access_combined_wcookie
| table clientip, action, productId, status
| sort action, -productId
- stats
- 각종 통계 함수 이용해 데이터 계산
함수명 | 설명 |
count(x) | x필드의 개수 반환 |
dc(x) | x필드의 중복 제거한 개수 반환 |
sum(x) | x필드의 총합 반환 |
avg(x) | x필드의 평균 반환 |
list(x) | x필드의 목록으로 만들어 반환 |
values(x) | x필드의 중복을 제거한 목록 반환 |
max(x) / median(x) / min(x) | x필드의 최대/중앙/최소값 반환 |
var(x) | x필드의 분산값 반환 |
stdev(x) | x필드의 표준편차 반환 |

index=main sourcetype="access_combined_wcookie"
| stats count, sum(bytes), avg(bytes), max(bytes), median(bytes), min(bytes) by clientip
- top
- 지정한 필드에서 가장 많이 나오는 값을 보여주는 명령어
- 검색 결과를 파이프로 입력받아서 계산 후에 결과 반환
- showperc와 showcount의 기본값이 T이므로 지정하지 않더라도 비율과 개수 보여줌
limit | - 반환되는 결과 개수 지정 - 숫자 지정하지않으면 기본적으로 10개 선정 - 전체 값 모두 보려면 limit=0 설정 |
showperc | 해당 값이 차지하는 비율 보여줌 (기본 값 : T) |
showcount | 해당 값 개수 보여줌 (기본 값 : T) |
useother | Top 10 외 다른 숫자의 크기 알아보려면 T 입력 |

* | top useother=T clientip

* | top limit=10 clientip by method
→ GET, POST에 대한 상위 10개 추출
- rare
- top과 반대의 결과인 빈도가 적은 값의 순서 추출
- len(x)
- 문자열의 길이를 양의 정수 값으로 돌려줌
- 문자열의 길이 활용해서 비정상적인 값 추출
- eval (★)
- 검사 결과 값이 변환, 검증을 수행하며 실행 결과 값을 반환
- 시간 단위를 지정
- case (X, "Y"...)
- 여러 개의 조건 검증할 때 사용
- 두 개의 인자가 한 그룹으로 동작
- 첫 번째 인자가 참인 경우 두 번째 인자의 내용이 반환, 세 번째 인자가 참이면 네 번째 인자가 수행

index=main sourcetype="access_combined_wcookie"
| eval description=case(error==404, "Not found", error==500, "internal Server Error", error==200, "OK")
error==404 이면 "Not founf " 출력
error==500 이면 "internal Server Errorf " 출력
error==200 이면 "OK " 출력
- cidrmatch ("X", Y)
- IP주소 Y가 네트워크 범위 X에 존재하는지 확인
- 반환 값은 참 또는 거짓이며 두 개의 인자가 사용
- 첫 번째 CIDR형식의 네트워크 주소 범위, 두 번째는 검사를 위한 IP주소 입력
- cidrmatch 함수는 검색 필터로 사용 가능
- if (X, Y, Z)
- X가 참이면 Y 실행하고, X가 거짓이면 Z 실행
- IP필드 값이 10.10.10.100이라면 10.10.0.0/24 네트워크에 포함되므로 network1 필드에 "local" 문자열이 저장
- IP 필드 값이 100.10.0.100이라면 network2 필드에는 "external" 이 할당
- like
- Like 함수의 X필드에서 일부 문자열인 Y 검색
- 첫 번째 인자는 대상 필드, 두 번째 인자는 정규 표현식의 탐색 패턴
- X에서 Y를 찾을 수 있으면 참 반환
- like 함수의 와일드카드 문자열은'%'
- match (X, "Y")
- like 함수가 일부라도 맞는 값을 찾는다면 match함수는 함수명과 같이 정확한 일치 여부 비교
→ filename이 malicious.exe와 정확히 같으면 참을, 그렇지 않으면 거짓 반환 (문자열 비교에 대소문자는 구분X)
→ $는 종결자로서 '$' 앞의 문자로 단어가 끝난다는 의미
→ ' | ' 는 다중 선택 의미
→ filename 필드 값이. jpg,. gif,. png로 종결($)하는지 검사
→ 파일 확장자가 jpg, gif, png 여부 검사
method가 GET, POST, 또는 - 인지를 검사
method가 GET, POST, 또는 - 가 아닌 메서드들을 검사
❶ method가 GET, POST, 또는 “-” 가 아닌 것들을 메서드들을 검사
❷ 검사 된 메서드들 별로 송신지 주소 개수를 결과로 반환
❸ 개수 Count(src)를 src_count에 저장
❹ 저장된 src_count 값을 기준으로 내림 차순 정렬
'SK shieldus Rookies 9기 > 클라우드 기반 시스템 운영,구축 실무' 카테고리의 다른 글
시스템 운영/구축 실무 8일차 (22/11/02) (1) | 2022.11.02 |
---|---|
시스템 운영/구축 실무 7일차 (22/11/01) (0) | 2022.11.01 |
시스템 운영/구축 실무 5일차 (22/10/28) (0) | 2022.10.28 |
시스템 운영/구축 실무 4일차 (22/10/27) (0) | 2022.10.27 |
시스템 운영/구축 실무 3일차 (22/10/26) (0) | 2022.10.26 |