업데이트로 돌아가기
New releaseSep 21, 2026

APT-Hunter V4.0

APT-Hunter는 윈도우 이벤트 로그를 위한 위협 헌팅 도구로, 퍼플 팀 마인드셋으로 제작되어 윈도우 이벤트 로그의 바다에 숨겨진 APT 움직임을 탐지하여 의심스러운 활동을 발견하는 시간을 단축시킵니다.

공유

APT-Hunter

APT-Hunter

퍼플팀 관점으로 개발된 Windows 이벤트 로그 위협 헌팅.

Release Downloads Stars Contributors Python 3.8+ License

APT-Hunter는 Windows 이벤트 로그를 위한 위협 헌팅 도구입니다. 사전 정의된 탐지 규칙과 로그 통계를 사용하여 대량의 이벤트 속에 숨겨진 APT 활동을 드러내고, 의심스러운 행위를 찾아내는 데 필요한 시간을 단축합니다. 침해 평가(compromise assessment)에 특히 효과적입니다.

결과는 Excel, Timeline Explorer, Timesketch 및 유사한 도구에서 직접 분석할 수 있는 타임라인으로 작성되며, 선택적 로컬 LLM 트리아지를 갖춘 내장 웹 대시보드에서 탐색할 수도 있습니다.

목차

기능

  • Security, System, Sysmon, PowerShell, Defender, WinRM, Scheduled Tasks, Terminal Services 등을 아우르는 규칙 기반 탐지; 로그 유형은 자동으로 감지됩니다.
  • 대규모 로그 세트를 빠르게 분석하기 위한 멀티프로세싱 엔진.
  • 문자열, 정규식 또는 정규식 파일에 의한 헌팅, 그리고 Sigma 규칙 지원.
  • Office 365 감사 로그 헌팅.
  • Excel, CSV(Timesketch 지원) 및 전용 로그온, 프로세스 실행, 객체 접근 보고서로의 타임라인 출력.
  • 필터링, 차트, 인시던트 타임라인, IR 보고서 내보내기(Markdown / .docx)를 갖춘 웹 대시보드.
  • 모든 OpenAI 호환 서버(Ollama, LM Studio, llama.cpp)를 통한 로컬 LLM 분석. 어떤 데이터도 여러분의 컴퓨터를 벗어나지 않습니다.
  • 수천 개의 경보를 검토 가능한 짧은 발견 목록으로 클러스터링하는 에이전틱 트리아지.

설치

Releases 페이지에서 컴파일된 바이너리를 다운로드하거나, 소스에서 실행하세요(Python 3.8+):

git clone https://github.com/ahmedkhlief/APT-Hunter.git
cd APT-Hunter
python3 -m pip install -r requirements.txt

빠른 시작

python3 APT-Hunter.py -p /opt/wineventlogs/ -o Project1 -allreport

-p는 디렉터리 또는 단일 파일을 받습니다. 분석이 끝났을 때 대시보드를 열려면 -web을 추가하세요.

APT-Hunter Help

APT-Hunter analysing with all reports

APT-Hunter command-line output

APT-Hunter Excel output

APT-Hunter CSV output with Timesketch

명령줄 옵션

전체 목록은 python3 APT-Hunter.py -h를 실행하세요. 주요 옵션:

OptionDescription
-p, --path분석할 로그 파일 또는 폴더
-o, --out출력 이름 / 디렉터리
-start, -end타임라인 제한(ISO 형식)
-tz시간대(local 또는 예: Asia/Dubai)
-cores사용할 CPU 코어 수(기본값: 사용 가능한 코어의 절반)
-hunt, -huntfile, -eid문자열/정규식, 정규식 파일 또는 Event ID로 헌팅
-sigma, -rulesJSON으로 변환된 Sigma 규칙으로 헌팅
-o365hunt, -o365rules, -o365rawOffice 365 감사 로그 헌팅
-procexec, -logon, -objaccess, -allreport추가 보고서
-web, -webview, -webhost, -webport웹 대시보드 실행
-llm, -llm-provider, -llm-url, -llm-model, -llm-key, -llm-severity, -llm-batch, -llm-context로컬 LLM 분석

예제

EVTX 파일 폴더 분석(로그 유형은 자동 감지):

python3 APT-Hunter.py -p /opt/wineventlogs/ -o Project1 -allreport

시간 범위 지정:

python3 APT-Hunter.py -p /opt/wineventlogs/ -o Project1 -allreport -start 2022-04-03 -end 2022-04-05T20:56

문자열, 정규식 또는 정규식 파일로 헌팅:

python3 APT-Hunter.py -hunt "psexec" -p /opt/wineventlogs/ -o Project2
python3 APT-Hunter.py -huntfile "(psexec|psexesvc)" -p /opt/wineventlogs/ -o Project2
python3 APT-Hunter.py -huntfile huntfile.txt -p /opt/wineventlogs/ -o Project2

Sigma 규칙으로 헌팅:

python3 APT-Hunter.py -sigma -rules rules.json -p /opt/wineventlogs/ -o Project2

APT-Hunter용으로 변환된 최신 Sigma 규칙 가져오기(rules.json 작성):

./Get_Latest_Sigma_Rules.sh

웹 대시보드

브라우저에서 생성된 보고서를 탐색하세요: 필터링, 차트, 인시던트 타임라인, IR 보고서 내보내기.

python3 run_webapp.py <Output>/<Output>_Report.xlsx     # or pass the output directory
python3 APT-Hunter.py -p <logs> -o <Output> -web         # analyse, then open the dashboard
python3 APT-Hunter.py -webview <Output>                  # open an existing report

트리아지 발견을 수락하면 해당 증거와 함께 인시던트 타임라인에 고정되며, 접을 수 있는 하위 이벤트로 첨부됩니다. 이들은 다른 모든 것과 뒤섞이지 않고 테이블에서 발견 아래에 위치하며, 타임라인 차트에서는 제외되어 차트가 읽기 쉬운 상태로 유지됩니다. 발견을 제거하면 그 하위 이벤트도 함께 제거됩니다.

서버는 기본적으로 0.0.0.0:5000에 바인딩됩니다. 이를 변경하려면 --host / --port(또는 -webhost / -webport)를 사용하세요. 예를 들어 로컬로 유지하려면 --host 127.0.0.1을 사용합니다. 보고서 캐시가 재구성될 때 검토된 발견과 타임라인은 유지됩니다.

Main dashboard

메인 대시보드: 총 이벤트 및 심각도 수, 심각도 분석, 가장 많이 트리거된 탐지 규칙, 일별 이벤트 볼륨. 사이드바에는 보고서의 모든 이벤트 로그와 요약 테이블이 나열됩니다.

Incident timeline plot

인시던트 타임라인: 고정된 발견을 시간별로 표시하고 심각도에 따라 색상으로 구분합니다. 바쁜 구간을 확대/이동하고, AI 요약을 생성하고, IR 보고서 또는 CSV를 내보낼 수 있습니다.

Incident timeline event details

시간순 타임라인: 공격 체인이 하위 이벤트로 확장되고, 세부 정보 패널에 내러티브, MITRE 기법, 점수가 표시됩니다.

인시던트 타임라인 차트는 확대/축소가 가능하여 몇 분 또는 몇 초 간격의 이벤트 폭주도 읽기 쉬운 상태로 유지됩니다: 차트를 드래그하여 구간을 확대하고, Shift+드래그로 이동하고, Ctrl/Cmd+휠로 커서 기준 확대/축소하거나, 아래의 개요 스트립을 사용하세요. 레이블은 절대 겹치지 않으며, 맞지 않는 레이블은 숨겨지고, 점 위에 마우스를 올리면 그 위에 쌓인 모든 이벤트가 나열됩니다.

로컬 LLM 분석

로컬 모델을 사용하여 탐지된 이벤트의 악성 여부를 명령줄에서 점수화:

python3 APT-Hunter.py -p <logs> -o <Output> -llm -llm-provider ollama -llm-model llama3 -llm-severity High

또는 대시보드에서 이벤트별로(확인, 설명, 상관 분석). 대시보드의 Settings 페이지에서 제공자(Ollama / LM Studio / llama.cpp), 모델, URL, 타임아웃을 구성하세요. 모든 OpenAI 호환 로컬 서버가 작동하며, 클라우드 서비스로 데이터가 전송되지 않습니다.

에이전틱 트리아지

대시보드 사이드바의 Agentic Triage는 수천 개의 경보를 짧은 발견 목록으로 바꿉니다:

  1. 클러스터링. 선택한 범위(최소 심각도, 컴퓨터, 시간 창)의 경보가 규칙, 호스트, 이벤트 ID, 메시지 형태별로 그룹화됩니다. 약 13.5k개의 경보가 있는 보고서는 일반적으로 수십 개의 클러스터로 축소됩니다.
  2. 1차 판정. LLM이 모든 클러스터를 정확히 한 번씩 판단합니다. 이 단계는 저렴하고 철저하여 아무것도 건너뛰지 않도록 보장합니다.
  3. 조사. 에이전트가 도구를 사용하여 살아남은 단서를 조사합니다: 경보를 검색하고, 경보 뒤의 원시 이벤트 로그를 읽고, 특정 시점 주변의 타임라인을 탐색하고, 찾은 것을 공격 체인으로 연결합니다. 에이전트는 발견을 제안할 수만 있으며, 타임라인 자체에 기록하지는 않습니다.
  4. 검토. 발견은 점수, 판정, MITRE 기법, 증거, 에이전트의 조사 추적과 함께 대기열에 나타납니다. Accept는 발견을 인시던트 타임라인(및 IR 보고서 / .docx 내보내기)에 추가하고, Reject는 이를 폐기합니다. Settings(또는 실행별)에서 자동 추가 임계값을 설정하여 높은 점수의 발견을 자동으로 수락할 수 있습니다.

조사 단계에는 도구 호출을 지원하는 LLM이 필요합니다. 지원하지 않는 경우 APT-Hunter는 고정된 피벗/상관 파이프라인으로 대체합니다. 에이전트는 1차 단계 위에 깊이만 더하기 때문에 어느 경우든 커버리지는 동일합니다. 도구 라운드와 실시간 제한은 Settings에서 상한이 설정됩니다.

Agentic Triage runs

에이전틱 트리아지: 실행 기록에 범위, 경보 및 클러스터 수, 발견 및 실행별 LLM 호출이 표시됩니다. 여기서 한 호스트의 91개 심각 경보가 32개 클러스터와 단일 고득점 공격 체인으로 축소되었습니다.

Agentic investigation trace

발견 세부 정보: 내러티브, MITRE 기법, 증거, 전체 조사 추적(에이전트가 수행한 모든 이벤트 읽기, 타임라인 창, 경보 검색)이 표시되어 각 결론을 감사할 수 있습니다.

참고: LLM 출력은 트리아지 보조 수단이지 판정이 아닙니다. 의존하기 전에 발견을 검토하세요. 추론 모델은 기본 200초보다 요청 타임아웃을 훨씬 높여야 할 수 있습니다.

출력 샘플

SampleDescription
Sample_TimeSketch.csv공격의 전체 그림을 보기 위해 Timesketch에 업로드할 수 있는 타임라인
Sample_Report.xlsx제공된 모든 Windows 로그에서 탐지된 모든 이벤트
Sample_Logon_Events.csv파싱된 필드(날짜, 사용자, 소스 IP, 로그온 프로세스, 워크스테이션, 로그온 유형, 장치, 원본 로그)가 포함된 모든 로그온 이벤트
Sample_Process_Execution_Events.csv이벤트 로그에서 캡처된 모든 프로세스 실행
Sample_Object_Access_Events.csvEvent 4663에서 캡처된 객체 접근
Sample_Collected-SIDS.csv조사에 도움이 되는 사용자와 그들의 SID
EventID_Frequency_Analysis.xlsEvent ID 빈도 분석

작성자

Twitter: @ahmed_khlief · LinkedIn: Ahmed Khlief

라이선스

GNU GPL v3에 따라 배포됩니다. LICENSE를 참조하세요.

크레딧

Sysmon 사용 사례( Joe가 100개 이상의 사용 사례를 추가했습니다 )에 놀라운 기여를 해주신 Joe Maccry에게 감사드립니다.

카테고리