Skip to content

vamoruso/SecurityMonsterAI

Repository files navigation

Security Monster AI

SecurityMonster ASCII Banner

Questo repository è collegato al progetto software per la tesi di laurea magistrale di Vincenzo Amoruso dell'AA 2025/26 della Universitas Mercatorum

Corso di laurea in : Cybersecurity LM-66

Relatore : Prof. Davide Berardi

Insegnamento di : Cybersecurity

Titolo della tesi : Applicazione di Modelli Linguistici Locali nell’Analisi Predittiva delle Minacce Informatiche: Un Approccio basato sull’Intelligenza Artificiale

Obiettivo: Il progetto applica con esempi pratici alla Cybersecuiry alcune delle potenzialità della intelligenza artificiale.

Indice

Schema progetto e tecnologie

Schema

python logo

Preparazione ambiente per build con Python

- Installare Python, scaricabile dal seguente link (Abbiamo selezionato la versione Windows a 64bit)

https://www.python.org/ftp/python/3.10.4/python-3.10.4-amd64.exe

- Creare l'ambiente virtuale Python del server con il comando

python -m venv D:\SecurityMonster

- Attivare l'ambiente virtuale

D:\SecurityMonster\Scripts\activate 

- Copiare tutti i files scaricati dal repository remoto GitHub nella cartella dell'ambiente virtuale locale.

cd D:\SecurityMonster
git clone https://github.com/vamoruso/SecurityMonsterAI.git

- Nell'ambiente virtuale (venv) D:\SecurityMonster eseguire il comando per installare tutti i pacchetti necessari

pip install requirements.txt 

- Nell'ambiente virtuale (venv) D:\SecurityMonster eseguire il comando pyinstaller per creare il file SecurityMonster.exe nella cartella D:\SecurityMonster\dist

pyinstaller SecurityMonster.spec --clean 

🚀 Integrazione di Ollama

Installazione

Scarica e installa Ollama per Windows 64 bit: https://ollama.com/download/OllamaSetup.exe

⚡ Uso di Ollama da CLI

Dopo aver installato Ollama, eseguire comandi direttamente da terminale (PowerShell o CMD) per scaricare i modelli necessari al progetto.

Scarico modelli utilizzati per il framework

C:\>ollama pull deepseek-coder:33b-instruct-q5_K_M
C:\>ollama pull codellama:13b
C:\>ollama pull qwen3-coder:30b
C:\>ollama pull gemma3:12b
C:\>ollama pull llama3:8b
C:\>ollama pull mistral:latest

Note

Ollama deve essere installato ed il server deve essere in ascolto sulla porta 11434 all'indirizzo https://localhost:11434


🚀 Integrazione di ClamAV

Installazione

Scarica e installa ClamAV per Windows 64 bit: https://www.clamav.net/downloads/production/clamav-1.4.3.win.x64.msi

Note

ClamAV deve essere installato ed il server deve essere in ascolto sulla porta 3310 all'indirizzo https://localhost:3310


🔍 Installazione di Radare2 e r2ai

1. Scaricare Radare2

Scarica l’ultima versione stabile di Radare2 per Windows 64 bit: https://github.com/radareorg/radare2/releases/download/6.0.4/radare2-6.0.4-w64.zip

Estrai lo zip e aggiungi la cartella radare2 al tuo PATH di sistema per poter usare il comando r2 da terminale.

2. Scaricare r2ai

Scarica il plugin r2ai: https://github.com/radareorg/r2ai/releases/download/1.2.2/r2ai-1.2.2-windows-latest-meson.zip

All’interno dello zip troverai i file:

  • libr2ai.dll
  • decai.r2.js

Copiali nella directory dei plugin di Radare2: %USER_HOME%.local\share\radare2\plugins


Guida d'uso per eseguibile SecurityMonster.exe.

Componente Descrizione Esempio
Executable Il file che avvia il programma SecurityMonster.exe
SecurityMonster.py
Subcommand Azione da eseguire scan, help
Target Il file, directory o URL da analizzare C:\malware.exe
../samples
https://example.org
Parameters Opzioni di elaborazione --type src → analisi file sorgenti
--type bin → analisi file eseguibili
--type log → analisi file log
--version → visualizza versione
--no-banner → nasconde banner iniziale

Tabelle e screenshots dei test effettuati

📄 SecurityMonster analisi codice sorgente

Caso 1️⃣

Tabella 4.1: Elenco vulnerabilità innestate – primo caso d'uso (file test.js)

Tipo Descrizione Gravità
XSS DOM-based XSS tramite inserimento diretto nel DOM senza sanitizzazione. Alta
CSRF Richiesta automatica verso endpoint critico senza token CSRF. Media
Eval injection Esecuzione dinamica di codice utente tramite eval(). Alta
Prototype Pollution Manipolazione dell’oggetto proto tramite JSON non sicuro. Alta
Insecure Access Manipolazione diretta del DOM con ID controllato da input utente. Media
Hardcoded Secrets Presenza di chiavi API hardcoded nel codice sorgente. Alta
Errore assegnazione Errore logico: assegnazione anziché test. Alta
Loop infinito Errore logico: loop infinito per incremento errato. Alta
Keylogger Intercetta ogni pressione di tasto e invia i dati a un server remoto. È un esempio classico di violazione della privacy. Alta
Esfiltrazione Sfrutta un’immagine invisibile per inviare i cookie dell’utente a un dominio esterno, bypassando restrizioni CORS. Alta

Comando per scansione file test.js:

D:\SecurityMonster\dist>SecurityMonster.exe scan ../samples/test.js --type src

Tabella 4.2: Risultati vulnerabilità rilevate nel file test.js dai modelli IA

Tipo / Modello Qwen3-Coder CodeLlama Deepseek-Coder
XSS
CSRF
Eval injection
Prototype Pollution
Insecure DOM Access
Hardcoded Secrets
Errore assegnazione
Loop infinito
Keylogger
Esfiltrazione
Attacchi rilevati 9/10 → 90% 8/10 → 80% 7/10 → 70%

Legenda:
✔ = rilevato   |   ✗ = non rilevato   |   N/A = non applicabile


Caso 2️⃣

Tabella 4.3: Elenco vulnerabilità secondo caso d’uso (directory ./samples/source)

Nome File Tipo di Problema Gravità
BrokenAuth.java Broken Authentication Alta
InsecureCSRFHandler.cs Cross-Site Request Forgery (CSRF) Alta
InsecureDeserialization.py Insecure Deserialization Alta
SensitiveDataExposure.c Cryptographic Failures Media
SqlInjection.java Injection (SQLi) Alta
UnvalidatedRedirect.java Unvalidated Redirects Media
UnsafeArray.c Buffer Overflow / Memory Corruption Alta
UnsafeInput.c Improper Input\Validation Media
UnsafeSerialization.java Insecure Deserialization Alta
UnsafeShell.py Command Injection Alta

Comando per scansione directory ../samples/source:

D:\SecurityMonster\dist>SecurityMonster.exe scan ../samples/source --type src

Tabella 4.4: Riepilogo risultati scansione directory samples/source

Nome File Qwen3-Coder CodeLlama Deepseek-Coder
BrokenAuth.java
InsecureCSRFHandler.cs
InsecureDeserialization.py
SensitiveDataExposure.c
SqlInjection.java
UnvalidatedRedirect.java
UnsafeArray.c
UnsafeInput.c
UnsafeSerialization.java
UnsafeShell.py
Attacchi rilevati 10/10 → 100% 9/10 → 90% 10/10 → 100%

Legenda:
✔ = rilevato   |   ✗ = non rilevato   |   N/A = non applicabile


Caso 3️⃣

Comando per scansione sito web https://vamoruso.github.io/SecurityMonsterAI/:

D:\SecurityMonster\dist>SecurityMonster.exe scan  https://vamoruso.github.io/SecurityMonsterAI/ --type src

Tabella 4.5: Riepilogo vulnerabilità sito web contenente file vulnerable-utils.js

Vulnerabilità Descrizione Gravità
Reflected XSS Iniezione di script riflesso tramite parametri URL non sanitizzati. Critica
DOM-Based XSS Manipolazione del DOM lato client che consente l’esecuzione di codice malevolo. Critica
innerHTML con input utente Uso diretto di innerHTML con dati non validati, causa XSS. Alta
SQL Injection (simulato client-side) Simulazione di query SQL vulnerabili lato client, utile per test didattici. Media
Hardcoded Credentials Credenziali statiche nel codice sorgente, facilmente estraibili. Alta
Sensitive Data Exposure Dati sensibili esposti in chiaro, accessibili da terzi. Alta
IDOR Accesso non autorizzato a risorse tramite ID manipolabili. Critica
Insecure Random Uso di generatori di numeri casuali non crittograficamente sicuri. Media
Local Storage con dati sensibili Archiviazione di informazioni riservate nel localStorage, esposte a JavaScript. Alta
Eval con input utente (estremo) Esecuzione dinamica di codice tramite eval, altamente pericolosa. Critica

Tabella 4.6: Riepilogo vulnerabilità scansione vulnerable-utils.js

Vulnerabilità Qwen3-Coder CodeLlama Deepseek-Coder
Reflected XSS
DOM-Based XSS
innerHTML con input utente
SQL Injection (simulato client-side)
Hardcoded Credentials
Sensitive Data Exposure
Insecure Direct Object Reference (IDOR)
Insecure Random
Local Storage con dati sensibili
Eval con input utente (estremo)
Attacchi rilevati 10/10 → 100% 1/10 → 10% 9/10 → 90%

Legenda:
✔ = rilevato   |   ✗ = non rilevato   |   N/A = non applicabile

Tabella 4.7: Riepilogo vulnerabilità innestatesito web contenente file styles.css

ID Descrizione
1 Commenti con informazioni sensibili
2 Internal paths disclosure
3 CSS Injection vulnerability
4 Keylogger via CSS (attribute selector attack)
5 Data exfiltration via CSS
6 CSS-based timing attack
7 Clickjacking helper styles
8 Mixed content – HTTP resources
9 CSS Injection point per Unicode tricks
10 Sensitive class names che rivelano logica business
11 Debug styles lasciati in produzione
12 CSS che espone internal structure
13 Sourcemap disclosure
14 @import da fonte non verificata
15 CSS variables con valori sensibili
16 Expression() for IE (code execution in old IE)
17 Behavior binding (IE specific)
18 CSS filters che possono essere abusati
19 User tracking via background image
20 CSS timing attacks
21 Malicious @font-face
22 Viewport-based information disclosure
23 CSS con backdoor per phishing
24 Malicious CSS counters
25 CSS-based CAPTCHA bypass hints
26 Unicode tricks in content
27 Z-index wars per clickjacking

Categorizzazione delle 27 vulnerabilità del file styles.css

  • Injection (Code): 10 (37.0%)
  • Information Leak: 8 (29.6%)
  • IE-specific Exploits: 4 (14.8%)
  • Tracking & Privacy: 2 (7.4%)
  • Clickjacking: 2 (7.4%)
  • Timing: 1 (3.8%)

Risultati scansione file style.css del sito https://vamoruso.github.io/SecurityMonsterAI/:

Risultati scansione

Screenshots :


🧾 SecurityMonster analisi logs

Comando per scansione file log didattici inseriti nella directory ../samples/log/mitre_list:

D:\SecurityMonster\dist>SecurityMonster.exe scan  ../samples/log/mitre_list --type log

Tabella 5.1: Tattiche MITRE ATT&CK con esempi di file log simulati per analisi

Tattica MITRE ATT&CK Descrizione Gravità File simulato
Reconnaissance Raccolta di informazioni sul target (domini, IP, servizi esposti). Media 01_Reconnaissance.txt
Resource Development Preparazione di risorse per l’attacco (domini, malware, credenziali). Media 02_Resource Development.log
Initial Access Primo ingresso nel sistema tramite phishing, exploit o credenziali rubate. Alta 03_Initial Access.pcap
Execution Esecuzione di codice malevolo su sistema compromesso. Alta 04_PowerShell script execution.evtx
Persistence Mantenimento dell’accesso dopo reboot o cambio credenziali. Alta 05_Persistence.evtx
Privilege Escalation Acquisizione di permessi elevati (admin/root). Alta 06_Privilege Escalation.evtx
Defense Evasion Tecniche per evitare rilevamento (offuscamento, disattivazione antivirus). Alta 07_Defense Evasion.evtx
Credential Access Furto di credenziali (dump, keylogging, brute force). Alta 08_Credential Access.evtx
Discovery Mappatura dell’ambiente compromesso (host, utenti, servizi). Media 09_Discovery.log
Lateral Movement Spostamento tra sistemi nella rete per espandere il controllo. Alta 10_Lateral movement.log
Collection Raccolta di dati sensibili (documenti, credenziali, audio). Alta 11_Collection.log
Command and Control Comunicazione con sistemi compromessi per impartire comandi. Alta 12_Command and Control.pcap
Exfiltration Estrazione di dati verso l’esterno (FTP, HTTP, DNS). Critica 13_Exfiltration.pcap
Impact Manipolazione o distruzione di dati e sistemi. Critica 14_Impact.evtx

Risultati scansione file di log della cartella samples/log/mitre_list:

Tabella 5.2: Conteggio attacchi MITRE rilevati dai modelli

Tipo Attacco Gemma3:12b Llama3:8b Mistral:latest
Reconnaissance
Resource Development
Initial Access
Execution
Persistence
Privilege Escalation
Defense Evasion
Credential Access
Discovery
Lateral Movement
Collection
Command and Control
Exfiltration
Impact
Attacchi rilevati 13/14 → 93% 13/14 → 93% 10/14 → 72%

Legenda:
✔ = rilevato   |   ✗ = non rilevato   |   N/A = non applicabile

Screenshots :


👾 SecurityMonster analisi binary ed eseguibili

Tabella 6.1: Tattiche MITRE ATT&CK simulate in file didattici

Tattica MITRE Descrizione breve Gravità Nome file (estensioni)
Initial Access Test standard riconosciuto da tutti gli antivirus (es. EICAR) Alta eicar.exe
Defense Evasion Simulazione packer (UPX-like), offuscamento e sezione sospetta Alta PackerLike.* (.exe, .dll, .so, .o, .a)
Defense Evasion Simulazione tecniche di evasione (nomi sezioni sospetti, entropia alta) Critica EvasionLike.* (.exe, .dll, .so, .o, .a)
Impact Simulazione ransomware (stringhe AES, crittografia, ransom note) Critica RansomwareLikeAES.* (.exe, .dll, .so, .o, .a)
Persistence Comportamento tipico trojan (dropper, injection simulata) Alta TrojanLike.* (.exe, .dll, .so, .o, .a)

Comando per scansione cartella ../samples/binary/PackerLike :

D:\SecurityMonster\dist>SecurityMonster.exe scan  ../samples/binary/PackerLike --type bin

Tabella 6.2: Riepilogo rilevazioni Packer della pipeline

Componente / Estensione .a .dll .exe .o .so
ClamAV
YARA
LIEF + AI (Gemma3) N/A N/A N/A
LIEF + AI (Llama3) N/A N/A
LIEF + AI (Mistral) N/A N/A
R2 e MalwareDetector.py
R2 e r2ai

Comando per scansione cartella ../samples/binary/EvasionLike :

D:\SecurityMonster\dist>SecurityMonster.exe scan  ../samples/binary/EvasionLike --type bin

Tabella 6.3: Riepilogo rilevazioni Evasion della pipeline

Componente / Estensione .a .dll .exe .o .so
ClamAV
YARA
LIEF + AI (Gemma3) N/A N/A N/A
LIEF + AI (Llama3) N/A N/A
LIEF + AI (Mistral) N/A N/A N/A
R2 e MalwareDetector.py
R2 e r2ai

Comando per scansione cartella ../samples/binary/RansomwareLikeAES :

D:\SecurityMonster\dist>SecurityMonster.exe scan  ../samples/binary/RansomwareLikeAES --type bin

Tabella 6.4: Riepilogo rilevazioni Impact/Ransomware della pipeline

Componente / Estensione .a .dll .exe .o .so
ClamAV
YARA
LIEF + AI (Gemma3) N/A N/A N/A
LIEF + AI (Llama3) N/A N/A
LIEF + AI (Mistral) N/A N/A
R2 e MalwareDetector.py
R2 e r2ai

Comando per scansione cartella ../samples/binary/TrojanLike :

D:\SecurityMonster\dist>SecurityMonster.exe scan  ../samples/binary/TrojanLike --type bin

Tabella 6.5: Riepilogo rilevazioni Persistence/Trojan della pipeline

Componente / Estensione .a .dll .exe .o .so
ClamAV
YARA
LIEF + AI (Gemma3) N/A N/A N/A
LIEF + AI (Llama3) N/A N/A
LIEF + AI (Mistral) N/A N/A N/A
R2 e MalwareDetector.py
R2 e r2ai

Legenda:
✔ = rilevato   |   ✗ = non rilevato   |   N/A = non applicabile

Screenshots :


Credits

Media

• Tutti gli screenshot del codice utilizzato in questo README sono stati realizzati da me su dispostivo Windows 11 a 64bit 32GB RAM Processore Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz, 2208 Mhz, 6 core, 12 processori logici

Ringraziamenti


Vincenzo Amoruso 2025

Markdown GitHub contributors GitHub last commit GitHub Repo stars