Table des matières de l'article :
À l’ère numérique moderne, où les activités en ligne sont devenues le cœur battant de nombreuses entreprises, la cybersécurité joue un rôle fondamental. C'est l'histoire d'un de nos clients, une entreprise de commerce électronique, qui a vécu un cauchemar récurrent d'infections par des logiciels malveillants sur son site WordPress. Lorsqu'ils ont décidé de passer à nos services, leur système était déjà considérablement compromis par un autre fournisseur, et notre travail consistait non seulement à proposer l'hébergement et l'optimisation, mais également à effectuer un nettoyage complet des logiciels malveillants.
Le drame de l’infection persistante
Tout a commencé par une chaude après-midi d’été, lorsque notre client nous a contacté en panique. Leur site Web, essentiel aux ventes et à la réputation de l'entreprise, avait été compromis par un logiciel malveillant. Ce n’était pas la première fois que cela se produisait, et malgré de nombreuses tentatives de nettoyage et d’amélioration de la sécurité auprès du fournisseur précédent, l’infection réapparaissait sans cesse. Chaque fois qu’ils pensaient avoir résolu le problème, de nouveaux fichiers malveillants surgissaient de nulle part, menaçant la stabilité du système et la confiance de leurs clients.
Les attaques se sont reproduites à une fréquence alarmante, compromettant la confiance des clients et causant d'importantes pertes financières. Malgré la mise en œuvre de diverses mesures de sécurité, le site reste vulnérable. La situation était devenue intenable et le client avait besoin de toute urgence d'une solution permanente.
Le défi de l'intégration
Lorsque le client a décidé de recourir à nos services, nous avons hérité d’un système déjà considérablement compromis. Le premier défi consistait à procéder à un nettoyage complet des logiciels malveillants existants. Le site était infesté de portes dérobées et de vecteurs d'accès qui permettaient aux attaquants de réinfiltrer le système même après un nettoyage approfondi. Ces vecteurs d'entrée impliquaient souvent la création ou la modification de fichiers, des jours ou des semaines après la compromission initiale, ce qui rendait le logiciel malveillant extrêmement difficile à détecter et à supprimer complètement.
La recherche d'une solution
Notre équipe d’experts a immédiatement entamé une analyse approfondie pour identifier la source du problème. Il était clair que la simple suppression du malware ne suffirait pas. Nous avions besoin d'un système capable de surveiller en permanence l'intégrité des fichiers et de détecter toute modification suspecte ou l'introduction de nouveaux fichiers non autorisés. Ainsi est né le projet de développement de « Web Hash Scanner », un logiciel entièrement basé sur Bash Shell et SQLite, conçu pour fournir une solution efficace et automatisée pour surveiller les modifications de fichiers dans une installation Web.
Le développement du scanner de hachage Web
Le processus de développement logiciel s'est déroulé en plusieurs phases, chacune ayant pour objectif de créer une solution robuste et fiable. La première phase consistait à définir les exigences logicielles. Il devait être léger, facile à utiliser et capable de s'exécuter en arrière-plan sans affecter les performances du site. De plus, il devait être capable d'effectuer une analyse complète des fichiers. .js, .css e .php présent dans l'installation Web, enregistrez le chemin absolu du fichier, la date de la dernière modification et le hachage MD5 du contenu du fichier, et comparez les résultats de l'analyse en cours avec ceux d'une analyse précédente.
Mise en œuvre du Code
Nous avons choisi Bash Shell pour sa flexibilité et sa facilité de script, et SQLite comme base de données pour sa légèreté et sa facilité d'intégration.
Voici le code complet du logiciel :
#!/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"
Implémentation dans le cas client
Après avoir développé et testé le logiciel, nous avons implémenté « Web Hash Scanner » dans l'infrastructure du client. La première étape consistait à effectuer un nettoyage en profondeur du système pour supprimer les logiciels malveillants existants. Immédiatement après, nous avons effectué une première analyse avec le logiciel pour créer un instantané de l'état propre du système.
Au cours des jours et semaines suivants, nous avons effectué des analyses périodiques pour surveiller la santé du système. Chaque analyse ultérieure comparait les résultats à l'instantané précédent, nous permettant de détecter immédiatement toute modification suspecte ou l'introduction de nouveaux fichiers.
Un cas de réussite
À une occasion particulière, après une analyse de routine, le logiciel a détecté la présence de nouveaux fichiers .php et des modifications suspectes dans les fichiers existants. Grâce au rapport détaillé généré par « Web Hash Scanner », nous avons pu identifier rapidement les fichiers compromis et prendre des mesures immédiates pour neutraliser la menace. Le client a pu fonctionner avec la certitude que tout changement indésirable serait détecté rapidement, réduisant ainsi le risque de futures infections.
Avantages et résultats
Grâce à « Web Hash Scanner », notre client a pu obtenir de nombreux avantages :
- Contrôle continu: La possibilité de surveiller en permanence l’intégrité des fichiers a permis de détecter rapidement toute tentative de réinfection.
- Réduction des délais d'intervention: L'automatisation du processus de surveillance a considérablement réduit le temps nécessaire pour identifier et répondre aux nouvelles menaces.
- Amélioration de la sécurité: Le client a pu mettre en œuvre des mesures de sécurité plus efficaces et ciblées, améliorant ainsi la protection globale du système.
- Confiance accrue des clients: La réduction des pannes et l'amélioration de la sécurité ont contribué à restaurer la confiance des clients et à améliorer l'image de l'entreprise.
conclusion
L'histoire de notre client met en évidence l'importance de disposer d'un système robuste et automatisé pour surveiller l'intégrité des fichiers dans une installation Web. « Web Hash Scanner » s'est avéré être un outil indispensable pour garantir la sécurité et l'intégrité du système, permettant de détecter et de contrecarrer rapidement toute tentative d'infection. Si vous êtes également confronté à des défis similaires dans la gestion de la sécurité de votre site Web, contactez-nous pour découvrir comment « Web Hash Scanner » peut vous aider à protéger votre système et à maintenir la confiance de vos clients.
Le code source est disponible sous licence AGPL à l'adresse GitHub suivante : https://github.com/MarcoMarcoaldi/WebHashScanner