5 Giugno 2024

Dalla Pulizia Malware alla Sicurezza Continua con Web Hash Scanner

Web Hash Scanner: il software di monitoraggio file in Bash Script, che garantisce la sicurezza e l’integrità del tuo sito web, rilevando ogni modifica sospetta.

Web-Hash-Scanner

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

Hai dei dubbi? Non sai da dove iniziare? Contattaci !

Abbiamo tutte le risposte alle tue domande per aiutarti nella giusta scelta.

Chatta con noi

Chatta direttamente con il nostro supporto prevendita.

0256569681

Contattaci telefonicamente negli orari d’ufficio 9:30 – 19:30

Contattaci online

Apri una richiesta direttamente nell’area dei contatti.

INFORMAZIONI

Managed Server S.r.l. è un player italiano di riferimento nel fornire soluzioni avanzate di sistemistica GNU/Linux orientate all’alta performance. Con un modello di sottoscrizione dai costi contenuti e prevedibili, ci assicuriamo che i nostri clienti abbiano accesso a tecnologie avanzate nel campo dell’hosting, server dedicati e servizi cloud. Oltre a questo, offriamo consulenza sistemistica su sistemi Linux e manutenzione specializzata in DBMS, IT Security, Cloud e molto altro. Ci distinguiamo per l’expertise in hosting di primari CMS Open Source come WordPress, WooCommerce, Drupal, Prestashop, Joomla, OpenCart e Magento, affiancato da un servizio di supporto e consulenza di alto livello adatto per la Pubblica Amministrazione, PMI, ed aziende di qualsiasi dimensione.

Red Hat, Inc. detiene i diritti su Red Hat®, RHEL®, RedHat Linux®, e CentOS®; AlmaLinux™ è un marchio di AlmaLinux OS Foundation; Rocky Linux® è un marchio registrato di Rocky Linux Foundation; SUSE® è un marchio registrato di SUSE LLC; Canonical Ltd. detiene i diritti su Ubuntu®; Software in the Public Interest, Inc. detiene i diritti su Debian®; Linus Torvalds detiene i diritti su Linux®; FreeBSD® è un marchio registrato di The FreeBSD Foundation; NetBSD® è un marchio registrato di The NetBSD Foundation; OpenBSD® è un marchio registrato di Theo de Raadt. Oracle Corporation detiene i diritti su Oracle®, MySQL®, e MyRocks®; Percona® è un marchio registrato di Percona LLC; MariaDB® è un marchio registrato di MariaDB Corporation Ab; REDIS® è un marchio registrato di Redis Labs Ltd. F5 Networks, Inc. detiene i diritti su NGINX® e NGINX Plus®; Varnish® è un marchio registrato di Varnish Software AB. Adobe Inc. detiene i diritti su Magento®; PrestaShop® è un marchio registrato di PrestaShop SA; OpenCart® è un marchio registrato di OpenCart Limited. Automattic Inc. detiene i diritti su WordPress®, WooCommerce®, e JetPack®; Open Source Matters, Inc. detiene i diritti su Joomla®; Dries Buytaert detiene i diritti su Drupal®. Amazon Web Services, Inc. detiene i diritti su AWS®; Google LLC detiene i diritti su Google Cloud™ e Chrome™; Microsoft Corporation detiene i diritti su Microsoft®, Azure®, e Internet Explorer®; Mozilla Foundation detiene i diritti su Firefox®. Apache® è un marchio registrato di The Apache Software Foundation; PHP® è un marchio registrato del PHP Group. CloudFlare® è un marchio registrato di Cloudflare, Inc.; NETSCOUT® è un marchio registrato di NETSCOUT Systems Inc.; ElasticSearch®, LogStash®, e Kibana® sono marchi registrati di Elastic N.V. Hetzner Online GmbH detiene i diritti su Hetzner®; OVHcloud è un marchio registrato di OVH Groupe SAS; cPanel®, L.L.C. detiene i diritti su cPanel®; Plesk® è un marchio registrato di Plesk International GmbH; Facebook, Inc. detiene i diritti su Facebook®. Questo sito non è affiliato, sponsorizzato o altrimenti associato a nessuna delle entità sopra menzionate e non rappresenta nessuna di queste entità in alcun modo. Tutti i diritti sui marchi e sui nomi di prodotto menzionati sono di proprietà dei rispettivi detentori di copyright. Ogni altro marchio citato appartiene ai propri registranti. MANAGED SERVER® è un marchio registrato a livello europeo da MANAGED SERVER SRL, Via Enzo Ferrari, 9, 62012 Civitanova Marche (MC), Italia.

Torna in alto