
Windows 이벤트 로그를 시각화하고 분석하여 악성 Windows 로그온을 조사합니다.
LogonTracer v2는 Windows Active Directory 이벤트 로그를 시각화하고 분석하여 악성 로그온을 조사하는 도구입니다. 이 도구는 로그온 관련 이벤트에서 발견된 호스트 이름(또는 IP 주소)과 계정 이름을 연결하여 그래프로 표시합니다. 이를 통해 어떤 계정에서 로그인 시도가 발생하고 어떤 호스트가 사용되었는지 확인할 수 있습니다.
이 도구는 Windows 로그온과 관련된 다음 이벤트 ID를 시각화할 수 있습니다.
| 이벤트 ID | 설명 |
|---|---|
| 4624 | 로그온 성공 |
| 4625 | 로그온 실패 |
| 4662 | 개체에 대한 작업 수행 |
| 4672 | 특별 권한 할당 |
| 4719 | 시스템 감사 정책 변경 |
| 4720 | 사용자 계정 생성 |
| 4726 | 사용자 계정 삭제 |
| 4728 / 4732 / 4756 | 보안 사용 그룹에 멤버 추가 |
| 4729 / 4733 / 4757 | 보안 사용 그룹에서 멤버 제거 |
| 4768 | Kerberos 인증(TGT 요청) |
| 4769 | Kerberos 서비스 티켓(ST 요청) |
| 4776 | NTLM 인증 |
| 5137 | 디렉터리 서비스 개체 생성 |
| 5141 | 디렉터리 서비스 개체 삭제 |
자세한 내용은 다음 문서에서 확인할 수 있습니다:

LogonTracer v2.0은 OpenAI GPT 모델을 사용하는 AI 분석 엔진을 통합하여 기존의 규칙 기반 접근 방식을 넘어 지능형 위협 탐지를 제공합니다.
LogonTracer는 PageRank, Hidden Markov Model 및 ChangeFinder를 사용하여 이벤트 로그에서 악성 호스트 및 계정을 탐지합니다.

LogonTracer를 사용하면 이벤트 로그를 시간순으로 표시할 수도 있습니다.

Python 3.9 이상 (3.12 권장)
Neo4j 5.x (Community 또는 Enterprise)
OpenAI API 키 (선택 사항 — AI 분석 기능에만 필요)
Python 모듈
numpy
evtx
lxml
scipy
changefinder
flask
hmmlearn>=0.2.8
scikit-learn
elasticsearch-dsl>=7.0.0,<8.0.0
pyyaml
flask-sqlalchemy
flask-login
flask_wtf
flask-limiter
wtforms
GitPython
pysigma>=0.11.0
pysigma-backend-sqlite
openai>=1.0.0
aiohttp
neo4j
git clone https://github.com/JPCERTCC/LogonTracer.git
cd LogonTracer
pip3 install -r requirements.txt
Neo4j를 다운로드하여 시작합니다. 초기 비밀번호를 설정하고 Bolt 포트(기본값: 7687)를 기록해 둡니다.
vi config/config.yml
주요 설정:
settings:
logontracer:
WEB_PORT: "8080"
default_user: "neo4j" # 기본 LogonTracer 계정의 Neo4j 사용자 이름
default_password: "password" # 첫 실행 전에 변경하세요
neo4j:
NEO4J_USER: "neo4j"
NEO4J_PASSWORD: "password" # Neo4j 비밀번호
NEO4J_SERVER: "localhost"
WS_PORT: "7687"
python3 logontracer.py --run
브라우저에서 http://localhost:8080을 엽니다.
python3 logontracer.py -e <path/to/Security.evtx> -z <UTC offset> -s <Neo4j server> -u <user> -p <password>
python3 logontracer.py -x <path/to/event.xml> -z <UTC offset> -s <Neo4j server> -u <user> -p <password>
python3 logontracer.py --es -s <Neo4j server> -u <user> -p <password> --es-server <ES host:port>
가져오기 중 Sigma 규칙 탐지를 실행하려면 --sigma 플래그를 추가하세요:
python3 logontracer.py -e <path/to/Security.evtx> -z 9 -s localhost -u neo4j -p password --sigma
python3 logontracer.py -e <path/to/Security.evtx> -z 9 -s localhost -u neo4j -p password --add
웹 애플리케이션을 시작한 후 왼쪽 사이드바에서 Upload Event Log를 클릭합니다. 다음을 수행할 수 있습니다:

Sigma 스캔을 활성화하고 업로드한 후, 또는 API를 통해 재스캔을 트리거한 후 사이드바에서 Sigma Scan Results를 클릭하여 결과를 확인합니다.








Neo4j Enterprise Edition에서 LogonTracer는 여러 개의 독립적인 조사 사례를 지원합니다. 각 사례는 별도의 Neo4j 데이터베이스에 저장됩니다.
docker run \
--detach \
--publish=7474:7474 --publish=7687:7687 --publish=8080:8080 \
-e LTHOSTNAME=<IP Address> \
jpcertcc/docker-logontracer
cd docker-compose
docker compose build
docker compose up -d
cd docker-compose-with-nginx
docker compose build
docker compose up -d
cd docker-compose-with-elasticstack
docker compose build
docker compose up -d
다음 YouTube 동영상은 LogonTracer 사용 방법을 보여줍니다.
자세한 내용은 LogonTracer 위키를 확인하세요.
| 옵션 | 설명 |
|---|
-r, --run | 웹 애플리케이션 시작 |
-o PORT | 웹 애플리케이션 포트 (기본값: 8080) |
--host HOST | 바인드 주소 (기본값: 0.0.0.0) |
-e EVTX [...] | EVTX 파일 가져오기 |
-x XML [...] | XML 이벤트 로그 파일 가져오기 |
-s SERVER | Neo4j 서버 주소 (기본값: localhost) |
-u USER | Neo4j 사용자 이름 (기본값: neo4j) |
-p PASSWORD | Neo4j 비밀번호 |
--wsport PORT | Neo4j Bolt 포트 (기본값: 7687) |
-z UTC | 시간대 오프셋 (예: JST의 경우 9) |
-f DATE | 이 날짜/시간부터 로그 구문 분석 (예: 2024-01-01T00:00:00) |
-t DATE | 이 날짜/시간까지 로그 구문 분석 |
--add | 데이터베이스를 지우지 않고 데이터 추가 |
--delete | 가져오기 전에 데이터베이스 지우기 |
--sigma | 가져오기 중 Sigma 규칙 스캔 실행 |
--sigma-only | Sigma 스캔만 실행 (Neo4j 처리 없음) |
--sigma-rules PATH | Sigma 규칙 폴더 경로 (기본값: sigma) |
--es | Elasticsearch에서 데이터 가져오기 |
--postes | 분석 결과를 Elasticsearch에 게시 |
--es-server HOST:PORT | Elasticsearch 서버 |
--es-index INDEX | Elasticsearch 인덱스 (기본값: winlogbeat-*) |
--es-prefix PREFIX | Elasticsearch 이벤트 접두사 (기본값: winlog) |
--case NAME | Neo4j Enterprise 다중 데이터베이스 모드용 사례 이름 |
-c FILE | 설정 파일 경로 (기본값: config/config.yml) |
--create_user USER | 새 Neo4j 사용자 생성 |
--create_password PASS | 새 Neo4j 사용자의 비밀번호 |
--role ROLE | 새 사용자의 역할 (admin, architect, reader) |
--delete_user USER | Neo4j 사용자 삭제 |
-l, --learn | 기계 학습 분석 실행 (Hidden Markov Model) |