Comprendere come operano le minacce è uno dei passi fondamentali nella cybersecurity e nell’architettura dei sistemi. Per capire meglio come i sistemi operativi elaborano gli input dell’utente e come funzionano gli hook di basso livello, ho sviluppato GhostTrace—un input monitor leggero creato a scopo didattico.

Il progetto open source completo è disponibile sul mio GitHub: Repository GhostTrace.


Cos’è GhostTrace?

GhostTrace è uno strumento educativo progettato per mostrare come i processi in background intercettano gli interrupt della tastiera e registrano gli eventi di sistema. Più che un semplice script, esplora diversi concetti fondamentali dell’ingegneria del software di basso livello:

  • Hooking di Sistema: Intercettazione degli eventi di input hardware in tutto il sistema tramite thread in background.
  • Gestione Efficiente del Buffer: Bilanciamento tra efficienza della memoria e I/O su disco attraverso lo svuotamento controllato del buffer.
  • Stealth e Persistenza: Comprensione di come gli strumenti di monitoraggio rimangono attivi in background evitando arresti anomali del processo.

Architettura Tecnica e Concetti Chiave

Lo sviluppo di GhostTrace mi ha permesso di esplorare diversi problemi pratici nella progettazione del software:

1. Risoluzione Dinamica dei Percorsi

Quando si sviluppano tool pensati per funzionare sia come script Python che come eseguibili standalone (ad esempio compilati con PyInstaller), i percorsi statici dei file smettono di funzionare. GhostTrace gestisce la risoluzione dell’ambiente in modo dinamico, garantendo che log e configurazioni vengano salvati relativamente al contesto del binario eseguibile.

2. Sincronizzazione del Buffer e Ottimizzazione I/O

Scrivere su disco a ogni singola pressione di un tasto è inefficace e facilmente individuabile a causa della costante attività sul filesystem. GhostTrace implementa un meccanismo di logging con buffer:

  • I tasti premuti vengono mantenuti in memoria fino al raggiungimento di una soglia specifica (es. 25 caratteri).
  • I separatori di input critici come TAB o INVIO attivano un flush forzato immediato (os.fsync) per catturare i passaggi chiave (come il cambio dal campo username a quello password) insieme ai relativi timestamp.

3. Interoperabilità Nativa con il Sistema Operativo

Il progetto include un trigger integrato (un Easter Egg basato su una sequenza segreta di tasti). Quando viene attivato, comunica direttamente con le API native del sistema operativo (come user32.dll su Windows tramite ctypes) per mostrare una finestra di messaggio senza interrompere il thread principale in background.


Perché costruire un Input Monitor?

Dal punto di vista architetturale, sviluppare strumenti come GhostTrace fornisce preziose competenze in:

  1. Ingegneria Difensiva: Comprendere come i keylogger nascondono e scrivono i log aiuta a sviluppare meccanismi di rilevamento e software di monitoraggio endpoint.
  2. Gestione delle Risorse: Gestire listener di eventi asincroni senza bloccare il sistema ospitante.
  3. Sicurezza delle Applicazioni: Capire perché la sanitizzazione degli input, l’autenticazione a due fattori (MFA) e le tastiere virtuali sono difese critiche contro il monitoraggio degli input a basso livello.

Repository del Progetto

GhostTrace è stato creato esclusivamente a scopo educativo e di ricerca per mostrare i meccanismi di input hooking in Python.

Puoi visionare, analizzare o fare il fork del codice direttamente su GitHub: Vedi GhostTrace su GitHub