Skip to content

antonioscardace/Systems-Monitor-By-Keylogger

Repository files navigation

Systems-Monitor-By-Keylogger

Project for "Technologies for Advanced Programming" course
Grade: 30 with honors / 30
Antonio Scardace @ Dept of Math and Computer Science, University of Catania

CodeFactor License Open Issues CI for Testing

Introduction

The project is the server system of a distributed keylogger. It aims to make real-time stats about systems where the keylogger is installed. This keylogger may be a virus installed illegally or a service of the product legally accepted by the user. It is not relevant to this project.

The following functions are provided:

  • Show the List of Active Devices 📄
  • Show Logs by the UUID of the Device 📄
  • Show Device Info by its UUID 📄
  • Stats (charts):
    • Victim devices geolocation by IP (multiple charts) 🌎
    • Used apps classification (by basic heuristics) 📊
    • Top 15 most used applications 📊
    • Stats about time spent writing to the PC 👀

Exam Goals

This project was created as an exam project to test a set of skills, including:

  • Knowledge of Docker
  • Knowledge of Data Streaming via Apache Kafka
  • Knowledge of Data Processing via Spark Streaming
  • Knowledge of Data Storing via ElasticSearch
  • Knowledge of Data Visualization via Grafana

I also had the opportunity to practice the following skills:

  • Knowledge of Java and Spring Boot
  • Knowledge of the GitHub Actions
  • Use of the Static Analysis Tools (CodeFactor, Snyk Code, and SonarQube)

System Infrastructure

  • Each component used in this project is contained in a Docker Container. The UML of the internal structure of the server and its database are stored in /docs/uml/.
  • The keylogger must register the device during its first boot by sending an HTTP POST request to the server. Subsequently, it can send logs to the server via HTTP POST requests.
  • For greater confidentiality and integrity, the value of each key: value pair in the JSON request body from the keylogger must be encrypted using AES128 ECB (PKCS7 padding) and encoded using Base64.

GUI Demo

Getting Started

So that the repository is successfully cloned and the project runs, there are a few prerequisites:

  • A stable internet connection.
  • Adequate free space, RAM, and CPU.
  • Need to download and install Docker.

Then, dependencies can be installed and the project can be run.

   $ git clone https://github.com/antonioscardace/Systems-Monitor-By-Keylogger.git
   $ cd Systems-Monitor-By-Keylogger/
   $ bash run.sh

Useful Links

Container URL Description
user-interface https://localhost:8000/ Frontend (GUI)
grafana-charts https://localhost:3000/ Grafana Dashboard
api-gateway http://localhost:8888/ API Gateway
kafka-ui http://localhost:8080/ GUI for Kafka