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