Questo repository è collegato al progetto software per la tesi di laurea magistrale di Vincenzo Amoruso dell'AA 2025/26 della Universitas Mercatorum
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.
- Security Monster AI
- Schema progetto e tecnologie
- Preparazione ambiente
- Integrazione di Ollama
- Integrazione di ClamAV
- Installazione di Radare2 e r2ai
- Guida d'uso
- Tabelle e screenshot
- Credits
- 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
python -m venv D:\SecurityMonster
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
Scarica e installa Ollama per Windows 64 bit: https://ollama.com/download/OllamaSetup.exe
Dopo aver installato Ollama, eseguire comandi direttamente da terminale (PowerShell o CMD) per scaricare i modelli necessari al progetto.
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:latestNote
Ollama deve essere installato ed il server deve essere in ascolto sulla porta 11434 all'indirizzo https://localhost:11434
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
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.
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.dlldecai.r2.js
Copiali nella directory dei plugin di Radare2: %USER_HOME%.local\share\radare2\plugins
| 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 |
| 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 |
D:\SecurityMonster\dist>SecurityMonster.exe scan ../samples/test.js --type src| 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
| 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 |
D:\SecurityMonster\dist>SecurityMonster.exe scan ../samples/source --type src| 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
D:\SecurityMonster\dist>SecurityMonster.exe scan https://vamoruso.github.io/SecurityMonsterAI/ --type src| 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 |
| 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
| 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 |
- 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/:
Screenshots :
|
|
|
|
|
|
|
|
|
|
|
D:\SecurityMonster\dist>SecurityMonster.exe scan ../samples/log/mitre_list --type log| 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 |
| 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 :
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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) |
D:\SecurityMonster\dist>SecurityMonster.exe scan ../samples/binary/PackerLike --type bin| 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 | ✗ | ✔ | ✔ | ✗ | ✔ |
D:\SecurityMonster\dist>SecurityMonster.exe scan ../samples/binary/EvasionLike --type bin| 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 | ✗ | ✔ | ✔ | ✗ | ✔ |
D:\SecurityMonster\dist>SecurityMonster.exe scan ../samples/binary/RansomwareLikeAES --type bin| 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 | ✗ | ✗ | ✔ | ✗ | ✔ |
D:\SecurityMonster\dist>SecurityMonster.exe scan ../samples/binary/TrojanLike --type bin| 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 :
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
• 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






























































