├── .github
└── workflows
│ ├── codeql-analysis.yml
│ ├── logontracer-daily-test.yml
│ ├── logontracer-test.yml
│ └── publish-docker-image.yml
├── .gitignore
├── LICENSE.txt
├── README.md
├── config
├── config.yml
└── logging.yml
├── docker-compose-with-elasticstack
├── LogonTracer
│ └── build
│ │ └── Dockerfile
├── README.md
├── compose.yml
├── elasticsearch
│ ├── config
│ │ └── elasticsearch.yml
│ └── data
│ │ └── .gitkeep
├── kibana
│ └── config
│ │ └── kibana.yml
└── neo4j
│ ├── conf
│ └── .gitkeep
│ ├── data
│ └── .gitkeep
│ └── logs
│ └── .gitkeep
├── docker-compose-with-nginx
├── LogonTracer
│ └── build
│ │ └── Dockerfile
├── README.md
├── compose.yml
├── neo4j
│ ├── certificates
│ │ └── bolt
│ │ │ ├── revoked
│ │ │ └── .gitkeep
│ │ │ └── trusted
│ │ │ └── .gitkeep
│ ├── conf
│ │ └── .gitkeep
│ ├── data
│ │ └── .gitkeep
│ └── logs
│ │ └── .gitkeep
└── nginx
│ └── default.conf
├── docker-compose
├── LogonTracer
│ └── build
│ │ └── Dockerfile
├── README.md
├── compose.yml
└── neo4j
│ ├── conf
│ └── .gitkeep
│ ├── data
│ └── .gitkeep
│ └── logs
│ └── .gitkeep
├── docker
├── Dockerfile
└── README.md
├── es-index
├── logontracer-host-index.json
└── logontracer-user-index.json
├── images
├── add-new-case-bar.png
├── add-new-case.png
├── case-manage.png
├── casemng.png
├── delcase.png
├── delcasemng.png
├── diff_panel.png
├── filter_panel.png
├── gpedit1.png
├── gpedit2.png
├── kibana.png
├── load-from-es.png
├── login.png
├── logo.svg
├── logo_top.svg
├── logontracer-w-es.png
├── nav_bar.png
├── node_blue.png
├── node_green.png
├── node_red.png
├── rank.png
├── sample.png
├── sample_dark.png
├── side_bar.png
├── signup.png
├── timeline.png
├── timeline_graph.png
├── upload.gif
├── upload.png
└── user-manage.png
├── logontracer.py
├── logs
└── .gitkeep
├── model
└── hmm.pkl
├── requirements.txt
├── sample
├── README.md
├── Security.evtx
├── data.tar.gz
└── graph.db.tar.gz
├── static
├── css
│ ├── dark-mode.css
│ └── style.css
├── images
│ ├── elastic-logo.png
│ ├── logo_timeline.svg
│ └── logo_top.svg
└── js
│ ├── dark-mode-switch.min.js
│ └── script.js
└── templates
├── addcase.html
├── casemng.html
├── changecase.html
├── delcase.html
├── delcasemng.html
├── index.html
├── login.html
├── setting.html
├── signup.html
├── timeline.html
└── usermng.html
/.github/workflows/codeql-analysis.yml:
--------------------------------------------------------------------------------
1 | # For most projects, this workflow file will not need changing; you simply need
2 | # to commit it to your repository.
3 | #
4 | # You may wish to alter this file to override the set of languages analyzed,
5 | # or to provide custom queries or build logic.
6 | #
7 | # ******** NOTE ********
8 | # We have attempted to detect the languages in your repository. Please check
9 | # the `language` matrix defined below to confirm you have the correct set of
10 | # supported CodeQL languages.
11 | #
12 | name: "CodeQL"
13 |
14 | on:
15 | push:
16 | branches: [ master ]
17 | pull_request:
18 | # The branches below must be a subset of the branches above
19 | branches: [ master ]
20 | schedule:
21 | - cron: '21 5 * * 3'
22 |
23 | jobs:
24 | analyze:
25 | name: Analyze
26 | runs-on: ubuntu-latest
27 | permissions:
28 | actions: read
29 | contents: read
30 | security-events: write
31 |
32 | strategy:
33 | fail-fast: false
34 | matrix:
35 | language: [ 'javascript', 'python' ]
36 | # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
37 | # Learn more:
38 | # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
39 |
40 | steps:
41 | - name: Checkout repository
42 | uses: actions/checkout@v3
43 |
44 | # Initializes the CodeQL tools for scanning.
45 | - name: Initialize CodeQL
46 | uses: github/codeql-action/init@v1
47 | with:
48 | languages: ${{ matrix.language }}
49 | # If you wish to specify custom queries, you can do so here or in a config file.
50 | # By default, queries listed here will override any specified in a config file.
51 | # Prefix the list here with "+" to use these queries and those in the config file.
52 | # queries: ./path/to/local/query, your-org/your-repo/queries@main
53 |
54 | # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
55 | # If this step fails, then you should remove it and run the build manually (see below)
56 | - name: Autobuild
57 | uses: github/codeql-action/autobuild@v1
58 |
59 | # ℹ️ Command-line programs to run using the OS shell.
60 | # 📚 https://git.io/JvXDl
61 |
62 | # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
63 | # and modify them (or add more) to build your code if your project
64 | # uses a compiled language
65 |
66 | #- run: |
67 | # make bootstrap
68 | # make release
69 |
70 | - name: Perform CodeQL Analysis
71 | uses: github/codeql-action/analyze@v1
72 |
--------------------------------------------------------------------------------
/.github/workflows/logontracer-daily-test.yml:
--------------------------------------------------------------------------------
1 | name: daily-test
2 |
3 | on:
4 | schedule:
5 | - cron: '0 10 * * *'
6 |
7 | jobs:
8 |
9 | test:
10 |
11 | runs-on: ubuntu-latest
12 | strategy:
13 | matrix:
14 | python-version: ['3.9', '3.12']
15 |
16 | steps:
17 | - name: Checkout code
18 | uses: actions/checkout@v4
19 | - name: Build the LogonTracer Docker Image and start
20 | run: |
21 | docker image build ./docker -t jpcertcc/docker-logontracer:latest
22 | docker container run --detach --publish=7474:7474 --publish=7687:7687 --publish=8080:8080 -e LTHOSTNAME=localhost jpcertcc/docker-logontracer
23 | - name: Set up Python ${{ matrix.python-version }}
24 | uses: actions/setup-python@v5
25 | with:
26 | python-version: ${{ matrix.python-version }}
27 | - name: Install dependencies
28 | run: |
29 | python -m pip install --upgrade pip
30 | pip install cython
31 | pip install numpy
32 | pip install scipy
33 | pip install statsmodels
34 | pip install -r requirements.txt
35 | - name: List installed Python packages
36 | run: pip list
37 | - name: Test for LogonTracer web gui
38 | run: curl --verbose --show-error http://localhost:8080
39 | - name: Test for LogonTracer log import
40 | run: python logontracer.py -e sample/Security.evtx
41 |
--------------------------------------------------------------------------------
/.github/workflows/logontracer-test.yml:
--------------------------------------------------------------------------------
1 | name: test
2 |
3 | on:
4 | push:
5 | branches: [ master ]
6 |
7 | jobs:
8 |
9 | test:
10 |
11 | runs-on: ubuntu-latest
12 | strategy:
13 | matrix:
14 | python-version: ['3.9', '3.10', '3.11', '3.12']
15 |
16 | steps:
17 | - name: Checkout code
18 | uses: actions/checkout@v4
19 | - name: Build the LogonTracer Docker Image and start
20 | run: |
21 | docker image build ./docker -t jpcertcc/docker-logontracer:latest
22 | docker container run --detach --publish=7474:7474 --publish=7687:7687 --publish=8080:8080 -e LTHOSTNAME=localhost jpcertcc/docker-logontracer
23 | - name: Set up Python ${{ matrix.python-version }}
24 | uses: actions/setup-python@v5
25 | with:
26 | python-version: ${{ matrix.python-version }}
27 | - name: Install dependencies
28 | run: |
29 | python -m pip install --upgrade pip
30 | pip install cython
31 | pip install numpy
32 | pip install scipy
33 | pip install statsmodels
34 | pip install -r requirements.txt
35 | - name: Test for LogonTracer web gui
36 | run: curl --verbose --show-error http://localhost:8080
37 | - name: Test for LogonTracer log import
38 | run: python logontracer.py -e sample/Security.evtx
39 |
--------------------------------------------------------------------------------
/.github/workflows/publish-docker-image.yml:
--------------------------------------------------------------------------------
1 | name: Publish docker image
2 |
3 | on:
4 | release:
5 | types: [published]
6 |
7 | jobs:
8 |
9 | test:
10 |
11 | runs-on: ubuntu-latest
12 | strategy:
13 | matrix:
14 | python-version: ['3.9', '3.10', '3.11', '3.12']
15 |
16 | steps:
17 | - name: Checkout code
18 | uses: actions/checkout@v4
19 | - name: Build the LogonTracer Docker Image and start
20 | run: |
21 | docker image build ./docker -t jpcertcc/docker-logontracer:latest -t ghcr.io/jpcertcc/docker-logontracer:latest
22 | docker container run --detach --publish=7474:7474 --publish=7687:7687 --publish=8080:8080 -e LTHOSTNAME=localhost jpcertcc/docker-logontracer
23 | - name: Set up Python ${{ matrix.python-version }}
24 | uses: actions/setup-python@v5
25 | with:
26 | python-version: ${{ matrix.python-version }}
27 | - name: Install dependencies
28 | run: |
29 | python -m pip install --upgrade pip
30 | pip install cython
31 | pip install numpy
32 | pip install scipy
33 | pip install statsmodels
34 | pip install -r requirements.txt
35 | - name: Test for LogonTracer web gui
36 | run: curl --verbose --show-error http://localhost:8080
37 | - name: Test for LogonTracer log import
38 | run: python logontracer.py -e sample/Security.evtx
39 |
40 | publish:
41 |
42 | runs-on: ubuntu-latest
43 | needs: test
44 |
45 | steps:
46 | - name: Checkout code
47 | uses: actions/checkout@v4
48 | - name: Register Docker Hub
49 | uses: docker/build-push-action@v5
50 | with:
51 | username: ${{ secrets.DOCKER_USERNAME }}
52 | password: ${{ secrets.DOCKER_PASSWORD }}
53 | repository: jpcertcc/docker-logontracer
54 | dockerfile: docker/Dockerfile
55 | tags: latest
56 | - name: Login to GitHub Container Registry
57 | uses: docker/login-action@v3
58 | with:
59 | registry: ghcr.io
60 | username: ${{ github.actor }}
61 | password: ${{ secrets.GITHUB_TOKEN }}
62 | - name: Register GitHub Container Registry
63 | run: docker push ghcr.io/jpcertcc/docker-logontracer:latest
64 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.pyc
2 | *~
3 | *.bak
4 | cache
5 | upload
6 | *.log
7 |
--------------------------------------------------------------------------------
/LICENSE.txt:
--------------------------------------------------------------------------------
1 | The 3-Clause BSD License
2 |
3 | SPDX short identifier: BSD-3-Clause
4 | Note: This license has also been called the "New BSD License" or "Modified BSD License". See also the 2-clause BSD License.
5 |
6 | ---
7 |
8 | Copyright 2023 JPCERT Coordination Center
9 |
10 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
11 |
12 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
13 |
14 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
15 |
16 | 3. Neither JPCERT Coordination Center nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
17 |
18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19 |
20 | IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |

2 |
3 | [](https://www.toolswatch.org/2018/05/black-hat-arsenal-usa-2018-the-w0w-lineup/) [](https://github.com/JPCERTCC/LogonTracer/releases) [](https://hub.docker.com/r/jpcertcc/docker-logontracer/) [](https://github.com/JPCERTCC/LogonTracer/actions/workflows/logontracer-test.yml)
4 |
5 | ## Concept
6 | **LogonTracer** is a tool to investigate malicious logon by visualizing and analyzing Windows Active Directory event logs. This tool associates a host name (or an IP address) and account name found in logon-related events and displays it as a graph. This way, it is possible to see in which account login attempt occurs and which host is used.
7 | This tool can visualize the following event id related to Windows logon based on [this research](https://www.first.org/resources/papers/conf2016/FIRST-2016-105.pdf).
8 | * **4624**: Successful logon
9 | * **4625**: Logon failure
10 | * **4768**: Kerberos Authentication (TGT Request)
11 | * **4769**: Kerberos Service Ticket (ST Request)
12 | * **4776**: NTLM Authentication
13 | * **4672**: Assign special privileges
14 |
15 | More details are described in the following documents:
16 | * [Visualise Event Logs to Identify Compromised Accounts - LogonTracer -](https://blogs.jpcert.or.jp/en/2017/11/visualise-event-logs-to-identify-compromised-accounts---logontracer-.html)
17 | * [イベントログを可視化して不正使用されたアカウントを調査](https://blogs.jpcert.or.jp/ja/2017/11/logontracer.html) (Japanese)
18 |
19 | 
20 |
21 | ## Additional Analysis
22 | LogonTracer uses [PageRank](https://en.wikipedia.org/wiki/PageRank), [Hidden Markov model](https://en.wikipedia.org/wiki/Hidden_Markov_model) and [ChangeFinder](https://pdfs.semanticscholar.org/c5bc/7ca31914d3cdfe1b2932cbc779875e645bbb.pdf) to detect malicious hosts and accounts from event log.
23 | 
24 | With LogonTracer, it is also possible to display event logs in a chronological order.
25 | 
26 | ## Use LogonTracer
27 | To use LogonTracer, you can:
28 | * [Install](https://github.com/JPCERTCC/LogonTracer/wiki/how-to-install)
29 | * [Use docker](https://github.com/JPCERTCC/LogonTracer/wiki/jump-start-with-docker)
30 |
31 | ## Documentation
32 | If you want to know more details, please check [the LogonTracer wiki](https://github.com/JPCERTCC/LogonTracer/wiki).
33 |
34 | ## Demonstration
35 | Following [YouTube's video](https://www.youtube.com/watch?v=aX-vTd7-moY) shows how to use LogonTracer.
36 |
37 | [](https://www.youtube.com/watch?v=aX-vTd7-moY)
38 |
39 | ## Architecture
40 | LogonTracer is written in Python and uses Neo4j for database. The following tools are used.
41 |
42 | * Python 3
43 | * [Neo4j](https://neo4j.com) for a graph database.
44 | * [Neo4j JavaScript driver](https://github.com/neo4j/neo4j-javascript-driver) for connects to Neo4j using the binary protocol.
45 | * [Cytoscape](http://www.cytoscape.org/) for visualizing a graph network.
46 | * [Flask](http://flask.pocoo.org/) is a microframework for Python.
47 |
--------------------------------------------------------------------------------
/config/config.yml:
--------------------------------------------------------------------------------
1 | settings:
2 | logontracer:
3 | WEB_PORT: "8080" # Web application port
4 | WEB_HOST: "0.0.0.0" # Web application address
5 | database_name: "data.db" # LogonTracer user info database
6 | default_user: "neo4j" # LogonTracer default login name
7 | default_password: "password" # LogonTracer default login password
8 | default_case: "neo4j" # Default neo4j database name
9 | SESSION_COOKIE_SECURE: False # When using HTTPS, it is necessary to relay a web server such as nginx.
10 |
11 | neo4j:
12 | NEO4J_USER: "neo4j" # neo4j user name
13 | NEO4J_PASSWORD: "password" # neo4j password
14 | NEO4J_SERVER: "localhost" # neo4j server
15 | NEO4J_PORT: "7474" # neo4j listen port
16 | WS_PORT: "7687" # Websocket port
17 |
18 | elastic:
19 | ES_SERVER: "localhost:9200" # Elastic Search server
20 | ES_INDEX: "winlogbeat-*" # Elastic index
21 | ES_PREFIX: "winlog" # Elastic prefix
22 | ES_USER: "elastic" # Elastic auth user
23 |
24 | sigma:
25 | git_url: "https://github.com/SigmaHQ/sigma.git" # Sigma rules url
26 | results: "sigma_results.csv" # Sigma scan result file
--------------------------------------------------------------------------------
/config/logging.yml:
--------------------------------------------------------------------------------
1 | version: 1
2 | formatters:
3 | file:
4 | format: "[%(asctime)s] [%(levelname)s] : %(message)s"
5 |
6 | handlers:
7 | file:
8 | class: logging.handlers.TimedRotatingFileHandler
9 | formatter: file
10 | filename: logs/application.log
11 | backupCount: 8
12 | when: D
13 | interval: 1
14 | encoding: 'utf-8'
15 | logontracer_handler:
16 | class: logging.handlers.TimedRotatingFileHandler
17 | formatter: file
18 | filename: static/logontracer.log
19 | backupCount: 8
20 | when: D
21 | interval: 1
22 | encoding: 'utf-8'
23 | console:
24 | class: logging.StreamHandler
25 | stream: ext://sys.stdout
26 |
27 | loggers:
28 | agent_logger:
29 | level: INFO
30 | handlers: [console]
31 | propagate: no
32 |
33 | root:
34 | level: WARN
35 | handlers: [file]
36 |
--------------------------------------------------------------------------------
/docker-compose-with-elasticstack/LogonTracer/build/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM python:3.12.0-slim
2 |
3 | RUN set -ex \
4 | \
5 | && savedAptMark="$(apt-mark showmanual)" \
6 | && apt-get update \
7 | && apt-get install -y --no-install-recommends git \
8 | dpkg-dev \
9 | gcc \
10 | g++ \
11 | libssl-dev \
12 | make
13 |
14 | ## LogonTracer install
15 | WORKDIR /usr/local/src
16 |
17 | RUN git clone https://github.com/JPCERTCC/LogonTracer.git \
18 | && chmod 777 LogonTracer \
19 | && chmod 777 LogonTracer/static \
20 | && cd LogonTracer \
21 | && pip install cython \
22 | && pip install numpy \
23 | && pip install scipy \
24 | && pip install statsmodels \
25 | && pip install -r requirements.txt \
26 | && sed -i 's/\" -s \" + NEO4J_SERVER/\" -s neo4j\"/g' logontracer.py \
27 | && sed -i 's/+ NEO4J_SERVER +/+ \"neo4j\" +/g' logontracer.py \
28 | && sed -i 's/host=NEO4J_SERVER/host=\"neo4j\"/g' logontracer.py
29 |
30 | ## Create setup file
31 | WORKDIR /usr/local/src
32 |
33 | RUN echo "#!/bin/bash" > run.sh \
34 | && echo "sleep 60" >> run.sh \
35 | && echo "cd /usr/local/src/LogonTracer" >> run.sh \
36 | && echo "python logontracer.py -r -o 8080 -u neo4j -p password -s \${LTHOSTNAME}" >> run.sh \
37 | && chmod 755 run.sh
38 |
39 | EXPOSE 8080
40 |
41 | CMD ["/usr/local/src/run.sh"]
42 |
--------------------------------------------------------------------------------
/docker-compose-with-elasticstack/README.md:
--------------------------------------------------------------------------------
1 | # Docker Compose for LogonTracer
2 |
3 | Please check the wiki for more details.
4 | https://github.com/JPCERTCC/LogonTracer/wiki/setup-with-docker-compose
5 |
6 | ## Usage
7 | ```shell
8 | $ docker-compose build
9 | $ docker-compose up -d
10 | ```
11 |
--------------------------------------------------------------------------------
/docker-compose-with-elasticstack/compose.yml:
--------------------------------------------------------------------------------
1 | services:
2 | neo4j:
3 | container_name: neo4j
4 | image: neo4j:4.4.27
5 | # Using volumes slows down the container.
6 | #volumes:
7 | # - ./neo4j/data:/data
8 | # - ./neo4j/logs:/logs
9 | # - ./neo4j/conf:/conf
10 | # Set when sync container and local time
11 | # - /etc/localtime:/etc/localtime:ro
12 | ports:
13 | - "7474:7474"
14 | - "7687:7687"
15 | environment:
16 | - NEO4J_dbms_default__database=neo4j
17 | - NEO4J_dbms_connector_bolt_listen__address=0.0.0.0:7687
18 | - NEO4J_dbms_connector_http_listen__address=0.0.0.0:7474
19 | # Performance tuning for JVM neo4j
20 | # See more details: https://neo4j.com/developer/guide-performance-tuning/
21 | # - NEO4J_dbms_memory_heap_max__size=4G
22 | # - NEO4J_dbms_memory_heap_initial__size=2G
23 | # - NEO4j_dbms_memory_pagecache_size=20G
24 | # set default neo4j password
25 | - NEO4J_AUTH=neo4j/password
26 | networks:
27 | - neo4j-network
28 |
29 | logontracer:
30 | container_name: logontracer
31 | build: ./LogonTracer/build
32 | image: logontracer:latest
33 | depends_on:
34 | - neo4j
35 | #volumes:
36 | # Set when sync container and local time
37 | # - /etc/localtime:/etc/localtime:ro
38 | ports:
39 | - "8080:8080"
40 | environment:
41 | - LTHOSTNAME=localhost
42 | networks:
43 | - neo4j-network
44 |
45 | elasticsearch:
46 | container_name: elasticsearch
47 | image: docker.elastic.co/elasticsearch/elasticsearch:7.9.0
48 | volumes:
49 | - ./elasticsearch/data:/usr/share/elasticsearch/data
50 | - ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
51 | environment:
52 | - bootstrap.memory_lock=true
53 | - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
54 | ports:
55 | - 9200:9200
56 | expose:
57 | - 9300
58 | ulimits:
59 | memlock:
60 | soft: -1
61 | hard: -1
62 | nofile:
63 | soft: 65536
64 | hard: 65536
65 | networks:
66 | - neo4j-network
67 |
68 | kibana:
69 | container_name: kibana
70 | image: docker.elastic.co/kibana/kibana:7.9.0
71 | volumes:
72 | - ./kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml
73 | ports:
74 | - 5601:5601
75 | networks:
76 | - neo4j-network
77 |
78 | networks:
79 | neo4j-network:
80 | external: true
81 |
--------------------------------------------------------------------------------
/docker-compose-with-elasticstack/elasticsearch/config/elasticsearch.yml:
--------------------------------------------------------------------------------
1 | node.name: node-1
2 | network.host: 0.0.0.0
3 | http.port: 9200
4 | cluster.initial_master_nodes: ["node-1"]
5 | xpack.ml.enabled: false
6 | xpack.security.enabled: false
7 | xpack.security.transport.ssl.enabled: true
8 | xpack.security.audit.enabled: true
9 |
--------------------------------------------------------------------------------
/docker-compose-with-elasticstack/elasticsearch/data/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/docker-compose-with-elasticstack/elasticsearch/data/.gitkeep
--------------------------------------------------------------------------------
/docker-compose-with-elasticstack/kibana/config/kibana.yml:
--------------------------------------------------------------------------------
1 | server.port: 5601
2 | server.host: "0.0.0.0"
3 | elasticsearch.hosts: ["http://elasticsearch:9200"]
4 | elasticsearch.username: elastic
5 | elasticsearch.password: password
6 |
--------------------------------------------------------------------------------
/docker-compose-with-elasticstack/neo4j/conf/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/docker-compose-with-elasticstack/neo4j/conf/.gitkeep
--------------------------------------------------------------------------------
/docker-compose-with-elasticstack/neo4j/data/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/docker-compose-with-elasticstack/neo4j/data/.gitkeep
--------------------------------------------------------------------------------
/docker-compose-with-elasticstack/neo4j/logs/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/docker-compose-with-elasticstack/neo4j/logs/.gitkeep
--------------------------------------------------------------------------------
/docker-compose-with-nginx/LogonTracer/build/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM python:3.12.0-slim
2 |
3 | RUN set -ex \
4 | \
5 | && savedAptMark="$(apt-mark showmanual)" \
6 | && apt-get update \
7 | && apt-get install -y --no-install-recommends git \
8 | dpkg-dev \
9 | gcc \
10 | g++ \
11 | libssl-dev \
12 | make
13 |
14 | ## LogonTracer install
15 | WORKDIR /usr/local/src
16 |
17 | RUN git clone https://github.com/JPCERTCC/LogonTracer.git \
18 | && mv LogonTracer-Private LogonTracer \
19 | && chmod 777 LogonTracer \
20 | && chmod 777 LogonTracer/static \
21 | && cd LogonTracer \
22 | && pip install cython \
23 | && pip install numpy \
24 | && pip install scipy \
25 | && pip install statsmodels \
26 | && pip install -r requirements.txt \
27 | && sed -i 's/\" -s \" + NEO4J_SERVER/\" -s neo4j\"/g' logontracer.py \
28 | && sed -i 's/+ NEO4J_SERVER +/+ \"neo4j\" +/g' logontracer.py \
29 | && sed -i 's/host=NEO4J_SERVER/host=\"neo4j\"/g' logontracer.py
30 |
31 | ## Create setup file
32 | WORKDIR /usr/local/src
33 |
34 | RUN echo "#!/bin/bash" > run.sh \
35 | && echo "sleep 60" >> run.sh \
36 | && echo "cd /usr/local/src/LogonTracer" >> run.sh \
37 | && echo "python logontracer.py -r -o 8080 -u neo4j -p password -s \${LTHOSTNAME}" >> run.sh \
38 | && chmod 755 run.sh
39 |
40 | EXPOSE 8080
41 |
42 | CMD ["/usr/local/src/run.sh"]
43 |
--------------------------------------------------------------------------------
/docker-compose-with-nginx/README.md:
--------------------------------------------------------------------------------
1 | # LogonTracer with SSL
2 |
3 | Enable SSL communication with LogonTracer and nginx.
4 |
5 | Please check the wiki for more details.
6 | https://github.com/JPCERTCC/LogonTracer/wiki/setup-LogonTracer-with-SSL
7 |
8 | ## Usage
9 | ### Download LogonTracer
10 |
11 | ```shell
12 | $ git clone https://github.com/JPCERTCC/LogonTracer.git
13 | ```
14 |
15 | ### Get Your SSL Certificate
16 |
17 | The following describes how to create a self-signed SSL certificate. If you can buy an SSL certificate, consider other options.
18 |
19 | #### Command for creating a self-signed SSL certificate
20 |
21 | ```shell
22 | $ openssl req -new -days 365 -x509 -nodes -keyout server.key -out server.crt
23 | ```
24 |
25 | ### Set Your SSL Certificate
26 |
27 | ```shell
28 | $ cp server.key LogonTracer/docker-compose-with-nginx/nginx/
29 | $ cp server.crt LogonTracer/docker-compose-with-nginx/nginx/
30 | $ cp server.key LogonTracer/docker-compose-with-nginx/neo4j/certificates/bolt/
31 | $ cp server.crt LogonTracer/docker-compose-with-nginx/neo4j/certificates/bolt/
32 | ```
33 |
34 | ### Docker Build and Start
35 |
36 | ```shell
37 | $ cd LogonTracer/docker-compose-with-nginx/
38 | $ docker-compose build
39 | $ docker-compose up -d
40 | ```
41 |
42 | ### Accessing the Web GUI
43 |
44 | Access **https://[LogonTracer_Server]/** via Web browser. Please make sure to enable JavaScript on your browser.
45 |
46 | #### Note
47 |
48 | If you are using a self-signed SSL certificate, it will be rejected by your web browser. Please set your web browser to allow SSL certificates as HTTPS.
49 |
50 | * Import self-signed SSL certificate for Web browser.
51 |
52 | `or`
53 |
54 | * Allow SSL certificate from web browser warning messages.
55 |
56 | 1. Access to **https://[LogonTracer_Server]/** and allow the SSL certificate.
57 |
58 | 2. Access to **https://[LogonTracer_Server]:7678/** and allow the SSL certificate.
59 |
--------------------------------------------------------------------------------
/docker-compose-with-nginx/compose.yml:
--------------------------------------------------------------------------------
1 | services:
2 | neo4j:
3 | container_name: neo4j
4 | # image: neo4j:4.4.14-enterprise
5 | image: neo4j:4.4.27
6 | volumes:
7 | - ./neo4j/certificates:/var/lib/neo4j/certificates
8 | # Using volumes slows down the container.
9 | # - ./neo4j/data:/data
10 | # - ./neo4j/logs:/logs
11 | # - ./neo4j/conf:/conf
12 | # Set when sync container and local time
13 | # - /etc/localtime:/etc/localtime:ro
14 | ports:
15 | # - "7474:7474"
16 | - "7687:7687"
17 | environment:
18 | - NEO4J_dbms_default__database=neo4j
19 | - NEO4J_dbms_connector_bolt_listen__address=0.0.0.0:7687
20 | - NEO4J_dbms_connector_http_listen__address=0.0.0.0:7474
21 | - NEO4J_dbms_ssl_policy_bolt_enabled=true
22 | - NEO4J_dbms_connector_bolt_tls__level=OPTIONAL
23 | - NEO4J_dbms_ssl_policy_bolt_base__directory=/var/lib/neo4j/certificates/bolt
24 | - NEO4J_dbms_ssl_policy_bolt_private__key=server.key
25 | - NEO4J_dbms_ssl_policy_bolt_public__certificate=server.crt
26 | # Performance tuning for JVM neo4j
27 | # See more details: https://neo4j.com/developer/guide-performance-tuning/
28 | # - NEO4J_dbms_memory_heap_max__size=4G
29 | # - NEO4J_dbms_memory_heap_initial__size=2G
30 | # - NEO4j_dbms_memory_pagecache_size=20G
31 | # set default neo4j password
32 | - NEO4J_AUTH=neo4j/password
33 | # if you use neo4j enterprise
34 | # - NEO4J_ACCEPT_LICENSE_AGREEMENT=yes
35 | networks:
36 | - neo4j-network
37 |
38 | logontracer:
39 | container_name: logontracer
40 | build: ./LogonTracer/build
41 | image: logontracer:latest
42 | depends_on:
43 | - neo4j
44 | #volumes:
45 | # Set when sync container and local time
46 | # - /etc/localtime:/etc/localtime:ro
47 | # ports:
48 | # - "8080:8080"
49 | environment:
50 | - LTHOSTNAME=localhost
51 | networks:
52 | - neo4j-network
53 |
54 | nginx:
55 | container_name: nginx
56 | image: nginx:latest
57 | depends_on:
58 | - neo4j
59 | - logontracer
60 | ports:
61 | - "443:443"
62 | - "80:80"
63 | volumes:
64 | - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
65 | - ./nginx/server.crt:/usr/local/nginx/conf/server.crt
66 | - ./nginx/server.key:/usr/local/nginx/conf/server.key
67 | networks:
68 | - neo4j-network
69 |
70 | networks:
71 | neo4j-network:
72 | external: true
73 |
--------------------------------------------------------------------------------
/docker-compose-with-nginx/neo4j/certificates/bolt/revoked/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/docker-compose-with-nginx/neo4j/certificates/bolt/revoked/.gitkeep
--------------------------------------------------------------------------------
/docker-compose-with-nginx/neo4j/certificates/bolt/trusted/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/docker-compose-with-nginx/neo4j/certificates/bolt/trusted/.gitkeep
--------------------------------------------------------------------------------
/docker-compose-with-nginx/neo4j/conf/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/docker-compose-with-nginx/neo4j/conf/.gitkeep
--------------------------------------------------------------------------------
/docker-compose-with-nginx/neo4j/data/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/docker-compose-with-nginx/neo4j/data/.gitkeep
--------------------------------------------------------------------------------
/docker-compose-with-nginx/neo4j/logs/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/docker-compose-with-nginx/neo4j/logs/.gitkeep
--------------------------------------------------------------------------------
/docker-compose-with-nginx/nginx/default.conf:
--------------------------------------------------------------------------------
1 | server {
2 | listen 443 ssl;
3 |
4 | client_max_body_size 20G;
5 |
6 | #ssl on;
7 | ssl_certificate /usr/local/nginx/conf/server.crt;
8 | ssl_certificate_key /usr/local/nginx/conf/server.key;
9 |
10 | ssl_session_timeout 5m;
11 |
12 | ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
13 | ssl_ciphers HIGH:!aNULL:!MD5;
14 | ssl_prefer_server_ciphers on;
15 |
16 | proxy_redirect off;
17 | proxy_set_header HOST $host;
18 | proxy_set_header X-Real-IP $remote_addr;
19 | proxy_set_header X-Forwarded-Host $host;
20 | proxy_set_header X-Forwarded-Server $host;
21 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
22 |
23 | location / {
24 | proxy_pass http://logontracer:8080/;
25 | }
26 | }
27 |
28 | server {
29 | listen 80;
30 | return 301 https://$host$request_uri;
31 | }
32 |
--------------------------------------------------------------------------------
/docker-compose/LogonTracer/build/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM python:3.12.0-slim
2 |
3 | RUN set -ex \
4 | \
5 | && savedAptMark="$(apt-mark showmanual)" \
6 | && apt-get update \
7 | && apt-get install -y --no-install-recommends git \
8 | dpkg-dev \
9 | gcc \
10 | g++ \
11 | libssl-dev \
12 | make \
13 | curl \
14 | build-essential
15 |
16 | ## LogonTracer install
17 | WORKDIR /usr/local/src
18 |
19 | RUN curl https://sh.rustup.rs -sSf | bash -s -- -y
20 | ENV PATH="/root/.cargo/bin:${PATH}"
21 |
22 | RUN git clone https://github.com/JPCERTCC/LogonTracer.git \
23 | && chmod 777 LogonTracer \
24 | && chmod 777 LogonTracer/static \
25 | && cd LogonTracer \
26 | && pip install cython \
27 | && pip install numpy \
28 | && pip install scipy \
29 | && pip install statsmodels \
30 | && pip install -r requirements.txt \
31 | && sed -i 's/\" -s \" + NEO4J_SERVER/\" -s neo4j\"/g' logontracer.py \
32 | && sed -i 's/+ NEO4J_SERVER +/+ \"neo4j\" +/g' logontracer.py \
33 | && sed -i 's/host=NEO4J_SERVER/host=\"neo4j\"/g' logontracer.py
34 |
35 | ## Create setup file
36 | WORKDIR /usr/local/src
37 |
38 | RUN echo "#!/bin/bash" > run.sh \
39 | && echo "sleep 60" >> run.sh \
40 | && echo "cd /usr/local/src/LogonTracer" >> run.sh \
41 | && echo "python logontracer.py -r -o 8080 -u neo4j -p password -s \${LTHOSTNAME}" >> run.sh \
42 | && chmod 755 run.sh
43 |
44 | EXPOSE 8080
45 |
46 | CMD ["/usr/local/src/run.sh"]
47 |
--------------------------------------------------------------------------------
/docker-compose/README.md:
--------------------------------------------------------------------------------
1 | # Docker Compose for LogonTracer
2 |
3 | Please check the wiki for more details.
4 | https://github.com/JPCERTCC/LogonTracer/wiki/setup-with-docker-compose
5 |
6 | ## Usage
7 | ```shell
8 | $ docker-compose build
9 | $ docker-compose up -d
10 | ```
11 |
--------------------------------------------------------------------------------
/docker-compose/compose.yml:
--------------------------------------------------------------------------------
1 | services:
2 | neo4j:
3 | container_name: neo4j
4 | image: neo4j:4.4.27
5 | # Using volumes slows down the container.
6 | #volumes:
7 | # - ./neo4j/data:/data
8 | # - ./neo4j/logs:/logs
9 | # - ./neo4j/conf:/conf
10 | # Set when sync container and local time
11 | # - /etc/localtime:/etc/localtime:ro
12 | ports:
13 | - "7474:7474"
14 | - "7687:7687"
15 | environment:
16 | - NEO4J_dbms_default__database=neo4j
17 | - NEO4J_dbms_connector_bolt_listen__address=0.0.0.0:7687
18 | - NEO4J_dbms_connector_http_listen__address=0.0.0.0:7474
19 | # Performance tuning for JVM neo4j
20 | # See more details: https://neo4j.com/developer/guide-performance-tuning/
21 | # - NEO4J_dbms_memory_heap_max__size=4G
22 | # - NEO4J_dbms_memory_heap_initial__size=2G
23 | # - NEO4j_dbms_memory_pagecache_size=20G
24 | # set default neo4j password
25 | - NEO4J_AUTH=neo4j/password
26 | networks:
27 | - neo4j-network
28 |
29 | logontracer:
30 | container_name: logontracer
31 | build: ./LogonTracer/build
32 | image: logontracer:latest
33 | depends_on:
34 | - neo4j
35 | #volumes:
36 | # Set when sync container and local time
37 | # - /etc/localtime:/etc/localtime:ro
38 | ports:
39 | - "8080:8080"
40 | environment:
41 | - LTHOSTNAME=localhost
42 | networks:
43 | - neo4j-network
44 |
45 | networks:
46 | neo4j-network:
47 | external: true
48 |
--------------------------------------------------------------------------------
/docker-compose/neo4j/conf/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/docker-compose/neo4j/conf/.gitkeep
--------------------------------------------------------------------------------
/docker-compose/neo4j/data/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/docker-compose/neo4j/data/.gitkeep
--------------------------------------------------------------------------------
/docker-compose/neo4j/logs/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/docker-compose/neo4j/logs/.gitkeep
--------------------------------------------------------------------------------
/docker/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM neo4j:4.4.27
2 |
3 | # ensure local python is preferred over distribution python
4 | ENV PATH /usr/local/bin:$PATH
5 |
6 | # http://bugs.python.org/issue19846
7 | # > At the moment, setting "LANG=C" on a Linux system *fundamentally breaks Python 3*, and that's not OK.
8 | ENV LANG C.UTF-8
9 |
10 | # runtime dependencies
11 | RUN apt-get update && apt-get install -y --no-install-recommends \
12 | ca-certificates \
13 | netbase \
14 | && rm -rf /var/lib/apt/lists/*
15 |
16 | ENV GPG_KEY 7169605F62C751356D054A26A821E680E5FA6305
17 | ENV PYTHON_VERSION 3.12.0
18 |
19 | RUN set -eux; \
20 | \
21 | savedAptMark="$(apt-mark showmanual)"; \
22 | apt-get update; \
23 | apt-get install -y --no-install-recommends \
24 | dpkg-dev \
25 | gcc \
26 | gnupg \
27 | libbluetooth-dev \
28 | libbz2-dev \
29 | libc6-dev \
30 | libdb-dev \
31 | libexpat1-dev \
32 | libffi-dev \
33 | libgdbm-dev \
34 | liblzma-dev \
35 | libncursesw5-dev \
36 | libreadline-dev \
37 | libsqlite3-dev \
38 | libssl-dev \
39 | make \
40 | tk-dev \
41 | uuid-dev \
42 | wget \
43 | xz-utils \
44 | zlib1g-dev \
45 | ; \
46 | \
47 | wget -O python.tar.xz "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz"; \
48 | wget -O python.tar.xz.asc "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc"; \
49 | GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
50 | gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$GPG_KEY"; \
51 | gpg --batch --verify python.tar.xz.asc python.tar.xz; \
52 | gpgconf --kill all; \
53 | rm -rf "$GNUPGHOME" python.tar.xz.asc; \
54 | mkdir -p /usr/src/python; \
55 | tar --extract --directory /usr/src/python --strip-components=1 --file python.tar.xz; \
56 | rm python.tar.xz; \
57 | \
58 | cd /usr/src/python; \
59 | gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
60 | ./configure \
61 | --build="$gnuArch" \
62 | --enable-loadable-sqlite-extensions \
63 | --enable-optimizations \
64 | --enable-option-checking=fatal \
65 | --enable-shared \
66 | --with-lto \
67 | --with-system-expat \
68 | --without-ensurepip \
69 | ; \
70 | nproc="$(nproc)"; \
71 | EXTRA_CFLAGS="$(dpkg-buildflags --get CFLAGS)"; \
72 | LDFLAGS="$(dpkg-buildflags --get LDFLAGS)"; \
73 | LDFLAGS="${LDFLAGS:--Wl},--strip-all"; \
74 | make -j "$nproc" \
75 | "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" \
76 | "LDFLAGS=${LDFLAGS:-}" \
77 | "PROFILE_TASK=${PROFILE_TASK:-}" \
78 | ; \
79 | # https://github.com/docker-library/python/issues/784
80 | # prevent accidental usage of a system installed libpython of the same version
81 | rm python; \
82 | make -j "$nproc" \
83 | "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" \
84 | "LDFLAGS=${LDFLAGS:--Wl},-rpath='\$\$ORIGIN/../lib'" \
85 | "PROFILE_TASK=${PROFILE_TASK:-}" \
86 | python \
87 | ; \
88 | make install; \
89 | \
90 | cd /; \
91 | rm -rf /usr/src/python; \
92 | \
93 | find /usr/local -depth \
94 | \( \
95 | \( -type d -a \( -name test -o -name tests -o -name idle_test \) \) \
96 | -o \( -type f -a \( -name '*.pyc' -o -name '*.pyo' -o -name 'libpython*.a' \) \) \
97 | \) -exec rm -rf '{}' + \
98 | ; \
99 | \
100 | ldconfig; \
101 | \
102 | apt-mark auto '.*' > /dev/null; \
103 | apt-mark manual $savedAptMark; \
104 | find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \
105 | | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); printf "*%s\n", so }' \
106 | | sort -u \
107 | | xargs -r dpkg-query --search \
108 | | cut -d: -f1 \
109 | | sort -u \
110 | | xargs -r apt-mark manual \
111 | ; \
112 | apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
113 | rm -rf /var/lib/apt/lists/*; \
114 | \
115 | python3 --version
116 |
117 | # make some useful symlinks that are expected to exist ("/usr/local/bin/python" and friends)
118 | RUN set -eux; \
119 | for src in idle3 pydoc3 python3 python3-config; do \
120 | dst="$(echo "$src" | tr -d 3)"; \
121 | [ -s "/usr/local/bin/$src" ]; \
122 | [ ! -e "/usr/local/bin/$dst" ]; \
123 | ln -svT "$src" "/usr/local/bin/$dst"; \
124 | done
125 |
126 | # if this is called "PIP_VERSION", pip explodes with "ValueError: invalid truth value ''"
127 | ENV PYTHON_PIP_VERSION 23.2.1
128 | # https://github.com/pypa/get-pip
129 | ENV PYTHON_GET_PIP_URL https://github.com/pypa/get-pip/raw/c6add47b0abf67511cdfb4734771cbab403af062/public/get-pip.py
130 | ENV PYTHON_GET_PIP_SHA256 22b849a10f86f5ddf7ce148ca2a31214504ee6c83ef626840fde6e5dcd809d11
131 |
132 | RUN set -eux; \
133 | \
134 | savedAptMark="$(apt-mark showmanual)"; \
135 | apt-get update; \
136 | apt-get install -y --no-install-recommends wget; \
137 | \
138 | wget -O get-pip.py "$PYTHON_GET_PIP_URL"; \
139 | echo "$PYTHON_GET_PIP_SHA256 *get-pip.py" | sha256sum -c -; \
140 | \
141 | apt-mark auto '.*' > /dev/null; \
142 | [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null; \
143 | apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
144 | rm -rf /var/lib/apt/lists/*; \
145 | \
146 | export PYTHONDONTWRITEBYTECODE=1; \
147 | \
148 | python get-pip.py \
149 | --disable-pip-version-check \
150 | --no-cache-dir \
151 | --no-compile \
152 | "pip==$PYTHON_PIP_VERSION" \
153 | ; \
154 | rm -f get-pip.py; \
155 | \
156 | pip --version
157 |
158 | ## Setup Supervisor
159 | WORKDIR /usr/local/src
160 |
161 | RUN set -ex \
162 | \
163 | && savedAptMark="$(apt-mark showmanual)" \
164 | && apt-get update \
165 | && apt-get install -y --no-install-recommends git \
166 | curl \
167 | && apt-get install -y gcc \
168 | g++ \
169 | && pip install git+https://github.com/Supervisor/supervisor \
170 | && cd /usr/bin \
171 | && ln -s /usr/local/bin/echo_supervisord_conf . \
172 | && ln -s /usr/local/bin/pidproxy . \
173 | && ln -s /usr/local/bin/supervisorctl . \
174 | && ln -s /usr/local/bin/supervisord .
175 |
176 | ## LogonTracer install
177 | WORKDIR /usr/local/src
178 |
179 | RUN git clone https://github.com/JPCERTCC/LogonTracer.git \
180 | && chmod 777 /usr/local \
181 | && chmod 777 /usr/local/src \
182 | && chmod 777 LogonTracer \
183 | && chmod 777 LogonTracer/static \
184 | && chmod 777 LogonTracer/logs \
185 | && cd LogonTracer \
186 | && python -m pip install --upgrade pip \
187 | && pip install cython \
188 | && pip install numpy \
189 | && pip install scipy \
190 | && pip install statsmodels \
191 | && pip install -r requirements.txt \
192 | && unlink /var/lib/neo4j/data \
193 | && mkdir -p /var/lib/neo4j/data/databases \
194 | && tar xzf sample/data.tar.gz -C /var/lib/neo4j/
195 |
196 | ## Create supervisord.conf
197 | RUN touch /etc/supervisord.conf \
198 | && echo "[supervisord]" >> /etc/supervisord.conf \
199 | && echo "nodaemon=true" >> /etc/supervisord.conf \
200 | && echo "[program:neo4j]" >> /etc/supervisord.conf \
201 | && echo "command=/docker-entrypoint.sh neo4j" >> /etc/supervisord.conf \
202 | && echo "[program:logontracer]" >> /etc/supervisord.conf \
203 | && echo "command=/usr/local/src/run.sh" >> /etc/supervisord.conf
204 |
205 | ## Create setup file
206 | RUN echo "#!/bin/bash" > run.sh \
207 | && echo "cd /usr/local/src/LogonTracer" >> run.sh \
208 | && echo "python logontracer.py -r -o 8080 -u neo4j -p password -s \${LTHOSTNAME}" >> run.sh \
209 | && chmod 755 run.sh
210 |
211 | ## Set env
212 | RUN sed -i -e "3i NEO4J_EDITION=community" /docker-entrypoint.sh
213 |
214 | WORKDIR /var/lib/neo4j
215 |
216 | EXPOSE 8080
217 |
218 | CMD ["supervisord", "-n"]
219 |
--------------------------------------------------------------------------------
/docker/README.md:
--------------------------------------------------------------------------------
1 | # docker-LogonTracer
2 | Dockerfile for LogonTracer.
3 | The Docker image is the following URL.
4 | https://hub.docker.com/r/jpcertcc/docker-logontracer/
5 |
6 | ## Usage
7 | ```shell
8 | $ docker run \
9 | --detach \
10 | --publish=7474:7474 --publish=7687:7687 --publish=8080:8080 \
11 | -e LTHOSTNAME=[IP Address] \
12 | jpcertcc/docker-logontracer
13 | ```
14 |
--------------------------------------------------------------------------------
/es-index/logontracer-host-index.json:
--------------------------------------------------------------------------------
1 | {
2 | "settings": {
3 | "number_of_shards": 1
4 | },
5 | "mappings": {
6 | "properties": {
7 | "@timestamp": {
8 | "type": "date",
9 | "format": "strict_date_optional_time_nanos"
10 | },
11 | "IP": {
12 | "type": "text"
13 | },
14 | "hostname": {
15 | "type": "text"
16 | },
17 | "rank": {
18 | "type": "double"
19 | }
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/es-index/logontracer-user-index.json:
--------------------------------------------------------------------------------
1 | {
2 | "settings": {
3 | "number_of_shards": 1
4 | },
5 | "mappings": {
6 | "properties": {
7 | "@timestamp": {
8 | "type": "date",
9 | "format": "strict_date_optional_time_nanos"
10 | },
11 | "user": {
12 | "type": "keyword"
13 | },
14 | "rights": {
15 | "type": "keyword"
16 | },
17 | "sid": {
18 | "type": "keyword"
19 | },
20 | "status": {
21 | "type": "text"
22 | },
23 | "rank": {
24 | "type": "double"
25 | }
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/images/add-new-case-bar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/images/add-new-case-bar.png
--------------------------------------------------------------------------------
/images/add-new-case.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/images/add-new-case.png
--------------------------------------------------------------------------------
/images/case-manage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/images/case-manage.png
--------------------------------------------------------------------------------
/images/casemng.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/images/casemng.png
--------------------------------------------------------------------------------
/images/delcase.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/images/delcase.png
--------------------------------------------------------------------------------
/images/delcasemng.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/images/delcasemng.png
--------------------------------------------------------------------------------
/images/diff_panel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/images/diff_panel.png
--------------------------------------------------------------------------------
/images/filter_panel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/images/filter_panel.png
--------------------------------------------------------------------------------
/images/gpedit1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/images/gpedit1.png
--------------------------------------------------------------------------------
/images/gpedit2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/images/gpedit2.png
--------------------------------------------------------------------------------
/images/kibana.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/images/kibana.png
--------------------------------------------------------------------------------
/images/load-from-es.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/images/load-from-es.png
--------------------------------------------------------------------------------
/images/login.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/images/login.png
--------------------------------------------------------------------------------
/images/logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
37 |
--------------------------------------------------------------------------------
/images/logo_top.svg:
--------------------------------------------------------------------------------
1 |
2 |
52 |
--------------------------------------------------------------------------------
/images/logontracer-w-es.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/images/logontracer-w-es.png
--------------------------------------------------------------------------------
/images/nav_bar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/images/nav_bar.png
--------------------------------------------------------------------------------
/images/node_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/images/node_blue.png
--------------------------------------------------------------------------------
/images/node_green.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/images/node_green.png
--------------------------------------------------------------------------------
/images/node_red.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/images/node_red.png
--------------------------------------------------------------------------------
/images/rank.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/images/rank.png
--------------------------------------------------------------------------------
/images/sample.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/images/sample.png
--------------------------------------------------------------------------------
/images/sample_dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/images/sample_dark.png
--------------------------------------------------------------------------------
/images/side_bar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/images/side_bar.png
--------------------------------------------------------------------------------
/images/signup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/images/signup.png
--------------------------------------------------------------------------------
/images/timeline.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/images/timeline.png
--------------------------------------------------------------------------------
/images/timeline_graph.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/images/timeline_graph.png
--------------------------------------------------------------------------------
/images/upload.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/images/upload.gif
--------------------------------------------------------------------------------
/images/upload.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/images/upload.png
--------------------------------------------------------------------------------
/images/user-manage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/images/user-manage.png
--------------------------------------------------------------------------------
/logs/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/logs/.gitkeep
--------------------------------------------------------------------------------
/model/hmm.pkl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/model/hmm.pkl
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | numpy
2 | py2neo>=2020.0.0
3 | evtx
4 | lxml
5 | scipy
6 | changefinder
7 | flask
8 | hmmlearn>=0.2.8
9 | scikit-learn
10 | elasticsearch-dsl>=7.0.0,<8.0.0
11 | pyyaml
12 | flask-sqlalchemy
13 | flask-login
14 | flask_wtf
15 | wtforms
16 | GitPython
17 | sigmatools
--------------------------------------------------------------------------------
/sample/README.md:
--------------------------------------------------------------------------------
1 | # How to Use
2 | ## Security.evtx
3 | AD security event sample
4 | ```
5 | $ python3 logontracer.py -e Security.evtx -z [TIMEZONE] -u [NEO4J_USER] -p [PASSWORD] -s [NEO4J_SERVER]
6 | ```
7 | ## graph.db.tar.gz
8 | neo4j database sample
9 | ```
10 | $ tar xvzf graph.db.tar.gz -C [neo4j]/data/databases/
11 | ```
12 |
--------------------------------------------------------------------------------
/sample/Security.evtx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/sample/Security.evtx
--------------------------------------------------------------------------------
/sample/data.tar.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/sample/data.tar.gz
--------------------------------------------------------------------------------
/sample/graph.db.tar.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/sample/graph.db.tar.gz
--------------------------------------------------------------------------------
/static/css/dark-mode.css:
--------------------------------------------------------------------------------
1 | [data-theme="dark"] {
2 | background-color: #202020;
3 | color: #eee;
4 | }
5 |
6 | [data-theme="dark"] .bg-light {
7 | background-color: #292929 !important;
8 | }
9 |
10 | [data-theme="dark"] .bg-white {
11 | background-color: #000;
12 | }
13 |
14 | [data-theme="dark"] .bg-black {
15 | background-color: #eee;
16 | }
17 |
18 | [data-theme="dark"] .list-group-item-light.list-group-item-action:focus {
19 | color: WHITE;
20 | background-color: #6c757d;
21 | }
22 |
23 | [data-theme="dark"] .list-group-item-light.list-group-item-action:hover {
24 | color: WHITE;
25 | background-color: #6c757d;
26 | }
27 |
28 | [data-theme="dark"] .list-group-item-light {
29 | color: WHITE;
30 | background-color: #202020;
31 | border: 1px solid WHITE;
32 | }
33 |
34 | [data-theme="dark"] .my_svg {
35 | fill: WHITE;
36 | stroke: WHITE;
37 | height: 50px;
38 | width: 200px;
39 | }
40 |
41 | [data-theme="dark"] .table {
42 | color: WHITE;
43 | background-color: #202020;
44 | --bs-table-bg: initial;
45 | --bs-table-color: initial;
46 | }
47 |
48 | [data-theme="dark"] .tbody {
49 | color: WHITE;
50 | background-image: none;
51 | border-color: WHITE;
52 | }
53 |
54 | [data-theme="dark"] .table .table-light th {
55 | color: WHITE;
56 | background-color: #202020;
57 | border-color: WHITE;
58 | }
59 |
60 | [data-theme="dark"] .table tr {
61 | background-color: #202020;
62 | }
63 |
64 | [data-theme="dark"] .table tr:hover {
65 | color: WHITE;
66 | background-color: #6c757d;
67 | transition: background-color .3s;
68 | }
69 |
70 | [data-theme="dark"] .table-striped tbody tr {
71 | background-color: #202020;
72 | }
73 |
74 | [data-theme="dark"] .table-striped tbody tr:hover {
75 | color: WHITE;
76 | background-color: #6c757d;
77 | transition: background-color .3s;
78 | }
79 |
80 | [data-theme="dark"] .btn-primary {
81 | color: WHITE;
82 | background-color: #6c757d;
83 | border-color: #6c757d;
84 | }
85 |
86 | [data-theme="dark"] .btn-primary:hover {
87 | color: WHITE;
88 | background-color: #545b62;
89 | border-color: #545b62;
90 | transition: background-color .3s;
91 | }
92 |
93 | [data-theme="dark"] .btn-outline-primary {
94 | color: WHITE;
95 | background-color: transparent;
96 | background-image: none;
97 | border-color: WHITE;
98 | }
99 |
100 | [data-theme="dark"] .btn-outline-primary:hover {
101 | color: WHITE;
102 | background-color: #6c757d;
103 | border-color: #ccc;
104 | transition: background-color .3s;
105 | }
106 |
107 | [data-theme="dark"] .btn-outline-secondary {
108 | color: WHITE;
109 | background-color: #202020;
110 | background-image: none;
111 | border-color: WHITE;
112 | }
113 |
114 | [data-theme="dark"] .btn-outline-secondary:hover {
115 | color: WHITE;
116 | background-color: #6c757d;
117 | border-color: #ccc;
118 | transition: background-color .3s;
119 | }
120 |
121 | [data-theme="dark"] .btn-outline-secondary:focus, .btn-outline-secondary.focus {
122 | color: WHITE;
123 | background-color: #6c757d;
124 | border-color: #ccc;
125 | }
126 |
127 | [data-theme="dark"] .modal-content {
128 | background-color: #222;
129 | }
130 |
131 | [data-theme="dark"] .page-link {
132 | color: WHITE;
133 | background-color: transparent;
134 | border: 1px solid WHITE;
135 | }
136 |
137 | [data-theme="dark"] .page-link:hover {
138 | background-color: #6c757d;
139 | transition: background-color .3s;
140 | }
141 |
142 | [data-theme="dark"] .bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^="top"] .arrow::before {
143 | border-top-color: #444;
144 | }
145 |
146 | [data-theme="dark"] .bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^="bottom"] .arrow::before {
147 | border-bottom-color: #444;
148 | }
149 |
150 | [data-theme="dark"] .tooltip-inner {
151 | background-color: #444;
152 | }
153 |
154 | [data-theme="dark"] .fa-refresh {
155 | color: WHITE;
156 | }
157 |
158 | [data-theme="dark"] .fa-times {
159 | color: WHITE;
160 | }
161 |
162 | [data-theme="dark"] .dropdown-menu {
163 | color: WHITE;
164 | background-color: #202020;
165 | }
166 |
167 | [data-theme="dark"] .dropdown-item {
168 | color: WHITE;
169 | }
170 |
171 | [data-theme="dark"] .navbar-light .navbar-nav .nav-link {
172 | color: rgba(255, 255, 255, 0.55);
173 | }
174 |
175 | [data-theme="dark"] .dropdown-item:hover {
176 | color: Black;
177 | }
178 |
179 | [data-theme="dark"] .dropdown-item:active {
180 | color: Black;
181 | }
182 |
183 | [data-theme="dark"] .bgcolorSun {
184 | background-color: #ff5050 !important;
185 | }
186 |
187 | [data-theme="dark"] .bgcolorSat {
188 | background-color: #5891db !important;
189 | }
190 |
191 | [data-theme="dark"] .bgcolorDay {
192 | background-color: #202020 !important;
193 | }
194 |
195 | [data-theme="dark"] .bgcolornormal {
196 | background-color: #4d0715 !important;
197 | }
198 |
199 | [data-theme="dark"] .bgcolorlow {
200 | background-color: #800b23 !important;
201 | }
202 |
203 | [data-theme="dark"] .bgcolormid {
204 | background-color: #b31031 !important;
205 | }
206 |
207 | [data-theme="dark"] .bgcolorhigh {
208 | background-color: #dc143c !important;
209 | }
210 |
--------------------------------------------------------------------------------
/static/css/style.css:
--------------------------------------------------------------------------------
1 | #loading {
2 | position: absolute;
3 | left: 0;
4 | top: 50%;
5 | width: 100%;
6 | text-align: center;
7 | margin-top: -0.5em;
8 | font-size: 4em;
9 | color: #000;
10 | }
11 |
12 | #loading.loaded {
13 | display: none;
14 | }
15 |
16 | table.floatThead-table {
17 | border-top: none;
18 | border-bottom: none;
19 | background-color: #efefef;
20 | }
21 |
22 | .dropdown-menu {
23 | z-index: 10000;
24 | }
25 |
26 | .custom-checkbox .custom-control-input:checked ~ .custom-control-label::before {
27 | background-color:blue;
28 | }
29 |
30 | .my_svg {
31 | height: 50px;
32 | width: 200px;
33 | }
34 |
35 | .navbar {
36 | z-index: 10000;
37 | }
38 |
39 | .modal {
40 | z-index: 100000;
41 | }
42 |
43 | .tooltip {
44 | z-index: 110000;
45 | }
46 |
47 | .bgcolorSun {
48 | background-color: #ff7f50 !important;
49 | }
50 |
51 | .bgcolorSat {
52 | background-color: #b0c4de !important;
53 | }
54 |
55 | .bgcolorDay {
56 | background-color: #efefef !important;
57 | }
58 |
59 | .bgcolornormal {
60 | background-color: #ffeaee !important;
61 | }
62 |
63 | .bgcolorlow {
64 | background-color: #ffbaee !important;
65 | }
66 |
67 | .bgcolormid {
68 | background-color: #ff8aee !important;
69 | }
70 |
71 | .bgcolorhigh {
72 | background-color: #ff5aee !important;
73 | }
74 |
75 | .login-form {
76 | max-width: none !important;
77 | width: 415px;
78 | }
79 |
80 | .login-form input#username, input#password, input#password1, input#password2, input#case {
81 | max-width: none !important;
82 | width: 370px;
83 | height: 2.4em;
84 | padding: 0 16px;
85 | border-radius: 4px;
86 | border: none;
87 | box-shadow: 0 0 0 1px #ccc inset;
88 | appearance: none;
89 | -webkit-appearance: none;
90 | -moz-appearance: none;
91 | }
92 |
93 | .drop-hover:hover > .dropdown-menu {
94 | display: block !important;
95 | margin-left: 100%;
96 | margin-top: -22%;
97 | }
98 |
--------------------------------------------------------------------------------
/static/images/elastic-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JPCERTCC/LogonTracer/b814fef899e9057af54f2f551d7e7cd6988fb488/static/images/elastic-logo.png
--------------------------------------------------------------------------------
/static/images/logo_timeline.svg:
--------------------------------------------------------------------------------
1 |
2 |
58 |
--------------------------------------------------------------------------------
/static/images/logo_top.svg:
--------------------------------------------------------------------------------
1 |
2 |
41 |
--------------------------------------------------------------------------------
/static/js/dark-mode-switch.min.js:
--------------------------------------------------------------------------------
1 | const darkSwitch=document.getElementById("darkSwitch");function initTheme(){const e=null!==localStorage.getItem("darkSwitch")&&"dark"===localStorage.getItem("darkSwitch");darkSwitch.checked=e,e?document.body.setAttribute("data-theme","dark"):document.body.removeAttribute("data-theme")}function resetTheme(){darkSwitch.checked?(document.body.setAttribute("data-theme","dark"),localStorage.setItem("darkSwitch","dark")):(document.body.removeAttribute("data-theme"),localStorage.removeItem("darkSwitch"))}window.addEventListener("load",()=>{darkSwitch&&(initTheme(),darkSwitch.addEventListener("change",()=>{resetTheme()}))});
--------------------------------------------------------------------------------
/templates/addcase.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | LogonTracer
8 |
9 |
10 |
11 |
12 |
13 |
14 |
19 |
20 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/templates/casemng.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | LogonTracer
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
21 |
22 |
49 |
116 |
117 |
118 |
119 |
120 |
121 |
--------------------------------------------------------------------------------
/templates/changecase.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | LogonTracer
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
21 |
22 |
44 |
80 |
81 |
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/templates/delcase.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | LogonTracer
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
21 |
22 |
44 |
82 |
83 |
84 |
85 |
86 |
87 |
--------------------------------------------------------------------------------
/templates/delcasemng.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | LogonTracer
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
21 |
22 |
39 |
103 |
104 |
105 |
106 |
107 |
108 |
--------------------------------------------------------------------------------
/templates/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | LogonTracer
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
109 |
110 |
111 |
112 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
177 |
178 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
193 |
194 |
Import the event log. Supported file format is EVTX or XML (exported Event Viewer or PowerShell).
195 |
196 |
197 |
198 |
202 |
203 |
210 |
211 |
212 |
213 |
216 |
217 |
218 |
219 |
222 |
223 |
224 |
225 |
226 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
242 |
243 |
244 |
Date
245 |
246 |
252 |
253 |
to
254 |
255 |
261 |
262 |
263 |
264 |
267 |
268 |
269 |
270 |
273 |
274 |
275 |
Zone
276 |
279 |
280 |
Server
281 |
286 |
287 |
288 |
289 |
290 |
295 |
296 |
297 |
298 |
299 |
300 |
301 |
302 |
306 |
307 |
Filter event log by date, count and event id.
308 |
369 |
370 |
373 |
374 |
375 |
376 |
377 |
378 |
379 |
380 |
381 |
385 |
386 |
Compare two days and view unique events.
387 |
388 |
389 |
395 |
396 |
and
397 |
398 |
404 |
405 |
406 |
407 |
411 |
412 |
413 |
414 |
415 |
416 |
417 |
418 |
421 |
422 |
Web page loading slow due to large graph. Do you want to continue searching?
423 |
424 |
428 |
429 |
430 |
431 |
535 |
536 |
537 |
538 |
--------------------------------------------------------------------------------
/templates/login.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | LogonTracer
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/templates/setting.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | LogonTracer
8 |
9 |
10 |
11 |
12 |
13 |
14 |
19 |
20 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/templates/signup.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | LogonTracer
8 |
9 |
10 |
11 |
12 |
13 |
14 |
19 |
20 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/templates/timeline.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | LogonTracer
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
100 |
101 |
110 |
165 |
166 |
167 |
168 |
--------------------------------------------------------------------------------
/templates/usermng.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | LogonTracer
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
21 |
22 |
40 |
86 |
87 |
88 |
89 |
90 |
91 |
--------------------------------------------------------------------------------