
APT-Hunter는 윈도우 이벤트 로그를 위한 위협 헌팅 도구로, 퍼플 팀 마인드셋으로 제작되어 윈도우 이벤트 로그의 바다에 숨겨진 APT 움직임을 탐지하여 의심스러운 활동을 발견하는 시간을 단축시킵니다.
퍼플팀 관점으로 개발된 Windows 이벤트 로그 위협 헌팅.
APT-Hunter는 Windows 이벤트 로그를 위한 위협 헌팅 도구입니다. 사전 정의된 탐지 규칙과 로그 통계를 사용하여 대량의 이벤트 속에 숨겨진 APT 활동을 드러내고, 의심스러운 행위를 찾아내는 데 필요한 시간을 단축합니다. 침해 평가(compromise assessment)에 특히 효과적입니다.
결과는 Excel, Timeline Explorer, Timesketch 및 유사한 도구에서 직접 분석할 수 있는 타임라인으로 작성되며, 선택적 로컬 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을 추가하세요.





전체 목록은 python3 APT-Hunter.py -h를 실행하세요. 주요 옵션:
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을 사용합니다. 보고서 캐시가 재구성될 때 검토된 발견과 타임라인은 유지됩니다.

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

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

시간순 타임라인: 공격 체인이 하위 이벤트로 확장되고, 세부 정보 패널에 내러티브, MITRE 기법, 점수가 표시됩니다.
인시던트 타임라인 차트는 확대/축소가 가능하여 몇 분 또는 몇 초 간격의 이벤트 폭주도 읽기 쉬운 상태로 유지됩니다: 차트를 드래그하여 구간을 확대하고, Shift+드래그로 이동하고, Ctrl/Cmd+휠로 커서 기준 확대/축소하거나, 아래의 개요 스트립을 사용하세요. 레이블은 절대 겹치지 않으며, 맞지 않는 레이블은 숨겨지고, 점 위에 마우스를 올리면 그 위에 쌓인 모든 이벤트가 나열됩니다.
로컬 모델을 사용하여 탐지된 이벤트의 악성 여부를 명령줄에서 점수화:
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는 수천 개의 경보를 짧은 발견 목록으로 바꿉니다:
조사 단계에는 도구 호출을 지원하는 LLM이 필요합니다. 지원하지 않는 경우 APT-Hunter는 고정된 피벗/상관 파이프라인으로 대체합니다. 에이전트는 1차 단계 위에 깊이만 더하기 때문에 어느 경우든 커버리지는 동일합니다. 도구 라운드와 실시간 제한은 Settings에서 상한이 설정됩니다.

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

발견 세부 정보: 내러티브, MITRE 기법, 증거, 전체 조사 추적(에이전트가 수행한 모든 이벤트 읽기, 타임라인 창, 경보 검색)이 표시되어 각 결론을 감사할 수 있습니다.
참고: LLM 출력은 트리아지 보조 수단이지 판정이 아닙니다. 의존하기 전에 발견을 검토하세요. 추론 모델은 기본 200초보다 요청 타임아웃을 훨씬 높여야 할 수 있습니다.
Twitter: @ahmed_khlief · LinkedIn: Ahmed Khlief
GNU GPL v3에 따라 배포됩니다. LICENSE를 참조하세요.
Sysmon 사용 사례( Joe가 100개 이상의 사용 사례를 추가했습니다 )에 놀라운 기여를 해주신 Joe Maccry에게 감사드립니다.
| Option | Description |
|---|
-p, --path | 분석할 로그 파일 또는 폴더 |
-o, --out | 출력 이름 / 디렉터리 |
-start, -end | 타임라인 제한(ISO 형식) |
-tz | 시간대(local 또는 예: Asia/Dubai) |
-cores | 사용할 CPU 코어 수(기본값: 사용 가능한 코어의 절반) |
-hunt, -huntfile, -eid | 문자열/정규식, 정규식 파일 또는 Event ID로 헌팅 |
-sigma, -rules | JSON으로 변환된 Sigma 규칙으로 헌팅 |
-o365hunt, -o365rules, -o365raw | Office 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 분석 |
| Sample | Description |
|---|
| Sample_TimeSketch.csv | 공격의 전체 그림을 보기 위해 Timesketch에 업로드할 수 있는 타임라인 |
| Sample_Report.xlsx | 제공된 모든 Windows 로그에서 탐지된 모든 이벤트 |
| Sample_Logon_Events.csv | 파싱된 필드(날짜, 사용자, 소스 IP, 로그온 프로세스, 워크스테이션, 로그온 유형, 장치, 원본 로그)가 포함된 모든 로그온 이벤트 |
| Sample_Process_Execution_Events.csv | 이벤트 로그에서 캡처된 모든 프로세스 실행 |
| Sample_Object_Access_Events.csv | Event 4663에서 캡처된 객체 접근 |
| Sample_Collected-SIDS.csv | 조사에 도움이 되는 사용자와 그들의 SID |
| EventID_Frequency_Analysis.xls | Event ID 빈도 분석 |