Indice dei contenuti dell'articolo:
Nell’era digitale moderna, dove le attività online sono diventate il cuore pulsante di molte aziende, la sicurezza informatica riveste un ruolo fondamentale. Questa è la storia di un nostro cliente, un’azienda di e-commerce, che ha vissuto un incubo ricorrente di infezioni malware sul proprio sito WordPress. Quando hanno deciso di passare ai nostri servizi, il loro sistema era già notevolmente compromesso da un altro fornitore, e il nostro compito non è stato solo offrire hosting e ottimizzazione, ma anche effettuare una pulizia completa del malware.
Il Dramma dell’Infezione Persistente
Tutto è iniziato in un caldo pomeriggio estivo, quando il nostro cliente ci ha contattato in preda al panico. Il loro sito web, cruciale per le vendite e la reputazione aziendale, era stato compromesso da un malware. Non era la prima volta che accadeva, e nonostante numerosi tentativi di pulizia e rafforzamento della sicurezza con il precedente fornitore, l’infezione continuava a riapparire. Ogni volta che pensavano di aver risolto il problema, nuovi file malevoli spuntavano dal nulla, minacciando la stabilità del sistema e la fiducia dei loro clienti.
Gli attacchi si ripetevano con una frequenza allarmante, compromettendo la fiducia dei clienti e causando significative perdite economiche. Nonostante l’implementazione di varie misure di sicurezza, il sito continuava a essere vulnerabile. La situazione era diventata insostenibile e il cliente aveva urgente bisogno di una soluzione definitiva.
La Sfida dell’On-Boarding
Quando il cliente ha deciso di passare ai nostri servizi, abbiamo ereditato un sistema già compromesso in modo significativo. La prima sfida è stata effettuare una pulizia completa del malware esistente. Il sito era stato infestato da backdoor e vettori di accesso che consentivano agli attaccanti di reinfiltrarsi nel sistema anche dopo una pulizia accurata. Questi vettori di accesso spesso comportavano la creazione o la modifica di file, a distanza di giorni o settimane dall’iniziale compromissione, rendendo estremamente difficile l’individuazione e la rimozione completa del malware.
La Ricerca di una Soluzione
La nostra squadra di esperti ha immediatamente avviato un’analisi approfondita per identificare la fonte del problema. Era chiaro che la semplice rimozione dei malware non sarebbe stata sufficiente. Avevamo bisogno di un sistema che potesse monitorare costantemente l’integrità dei file e rilevare qualsiasi modifica sospetta o l’introduzione di nuovi file non autorizzati. Così è nato il progetto di sviluppo di “Web Hash Scanner”, un software interamente basato su Bash Shell e SQLite, progettato per fornire una soluzione efficace e automatizzata per il monitoraggio delle modifiche ai file in un’installazione web.
Lo Sviluppo di Web Hash Scanner
Il processo di sviluppo del software ha coinvolto diverse fasi, ciascuna con l’obiettivo di creare una soluzione robusta e affidabile. La prima fase ha coinvolto la definizione dei requisiti del software. Doveva essere leggero, facile da usare e in grado di operare in background senza influire sulle prestazioni del sito. Inoltre, doveva essere capace di eseguire una scansione completa dei file .js
, .css
e .php
presenti nell’installazione web, registrare il percorso assoluto del file, la data di ultima modifica e l’hash MD5 del contenuto del file, e confrontare i risultati della scansione attuale con quelli di una scansione precedente.
Implementazione del Codice
Abbiamo scelto Bash Shell per la sua flessibilità e facilità di scripting, e SQLite come database per la sua leggerezza e semplicità di integrazione.
Ecco il codice completo del software:
#!/bin/bash # Check if sqlite3 is installed if ! command -v sqlite3 &> /dev/null; then echo "sqlite3 is not installed. Please install sqlite3 and try again." exit 1 fi # Path of the WordPress installation DOCROOT_PATH="/home/pathtoyourwebsite/htdocs/" # Name of the SQLite database DB_NAME="webhashscan.db" # Date of the scan SCAN_DATE=$(date +"%Y-%m-%d %H:%M:%S") # Create the database and tables if they do not exist sqlite3 $DB_NAME <<EOF CREATE TABLE IF NOT EXISTS files ( id INTEGER PRIMARY KEY, scan_id INTEGER, file_path TEXT, file_date TEXT, file_md5 TEXT, scan_date TEXT ); CREATE TABLE IF NOT EXISTS scans ( scan_id INTEGER PRIMARY KEY AUTOINCREMENT, scan_date TEXT ); EOF # Insert a new scan and get the scan ID SCAN_ID=$(sqlite3 $DB_NAME <<EOF INSERT INTO scans (scan_date) VALUES ('$SCAN_DATE'); SELECT last_insert_rowid(); EOF ) # Function to scan files and save data to the database scan_files() { local path=$1 find "$path" -type f \( -name "*.php" -o -name "*.js" -o -name "*.css" \) | while read -r file; do file_date=$(stat -c %y "$file") file_md5=$(md5sum "$file" | awk '{ print $1 }') sqlite3 $DB_NAME <<EOF INSERT INTO files (scan_id, file_path, file_date, file_md5, scan_date) VALUES ($SCAN_ID, '$file', '$file_date', '$file_md5', '$SCAN_DATE'); EOF done } # Scan files in the WordPress installation scan_files "$DOCROOT_PATH" # Compare the current scan with the previous one compare_scans() { # Get the ID of the previous scan PREV_SCAN_ID=$(sqlite3 $DB_NAME <<EOF SELECT scan_id FROM scans WHERE scan_id < $SCAN_ID ORDER BY scan_id DESC LIMIT 1; EOF ) if [ -z "$PREV_SCAN_ID" ]; then echo "No previous scan found. This is the first scan." exit 0 fi # Compare files between the two scans sqlite3 $DB_NAME <<EOF .headers on .mode column SELECT f1.file_path AS "File Path", f1.file_date AS "Current Date", f2.file_date AS "Previous Date", f1.file_md5 AS "Current MD5", f2.file_md5 AS "Previous MD5" FROM files f1 LEFT JOIN files f2 ON f1.file_path = f2.file_path AND f2.scan_id = $PREV_SCAN_ID WHERE f1.scan_id = $SCAN_ID AND (f1.file_md5 != f2.file_md5 OR f2.file_md5 IS NULL); EOF } # Perform the scan comparison compare_scans echo "Scan completed. Scan ID: $SCAN_ID"
Implementazione nel Caso del Cliente
Dopo aver sviluppato e testato il software, abbiamo implementato “Web Hash Scanner” nell’infrastruttura del cliente. La prima operazione è stata eseguire una pulizia approfondita del sistema per rimuovere il malware esistente. Subito dopo, abbiamo eseguito una scansione iniziale con il software per creare un’istantanea dello stato pulito del sistema.
Nei giorni e nelle settimane successive, abbiamo eseguito scansioni periodiche per monitorare lo stato del sistema. Ogni scansione successiva confrontava i risultati con l’istantanea precedente, permettendoci di individuare immediatamente qualsiasi modifica sospetta o l’introduzione di nuovi file.
Un Caso di Successo
In un’occasione particolare, dopo una scansione di routine, il software ha rilevato la presenza di nuovi file .php e modifiche sospette a file esistenti. Grazie al report dettagliato generato da “Web Hash Scanner”, siamo stati in grado di identificare rapidamente i file compromessi e di adottare misure immediate per neutralizzare la minaccia. Il cliente ha potuto operare con la certezza che ogni modifica indesiderata sarebbe stata individuata tempestivamente, riducendo il rischio di future infezioni.
Benefici e Risultati
Grazie a “Web Hash Scanner”, il nostro cliente ha potuto ottenere numerosi benefici:
- Monitoraggio Continuo: La capacità di monitorare costantemente l’integrità dei file ha permesso di individuare tempestivamente qualsiasi tentativo di reinfezione.
- Riduzione dei Tempi di Intervento: L’automazione del processo di monitoraggio ha ridotto significativamente il tempo necessario per identificare e rispondere a nuove minacce.
- Miglioramento della Sicurezza: Il cliente ha potuto implementare misure di sicurezza più efficaci e mirate, migliorando la protezione complessiva del sistema.
- Aumento della Fiducia dei Clienti: La riduzione delle interruzioni e il miglioramento della sicurezza hanno contribuito a ristabilire la fiducia dei clienti e a migliorare l’immagine aziendale.
Conclusione
La storia del nostro cliente evidenzia l’importanza di avere un sistema robusto e automatizzato per il monitoraggio dell’integrità dei file in un’installazione web. “Web Hash Scanner” si è dimostrato uno strumento indispensabile per garantire la sicurezza e l’integrità del sistema, permettendo di rilevare e contrastare tempestivamente qualsiasi tentativo di infezione. Se anche voi state affrontando sfide simili nella gestione della sicurezza del vostro sito web, contattateci per scoprire come “Web Hash Scanner” può aiutarvi a proteggere il vostro sistema e a mantenere la fiducia dei vostri clienti.
Il codice sorgente lo trovate sotto licenza AGPL al seguente indirizzo GitHub : https://github.com/MarcoMarcoaldi/WebHashScanner