dimanche 6 septembre 2009

Les commandes dangereuses



La ligne de commande est un outil puissant, et notamment très pratique pour détecter ou résoudre les problèmes : il en est donc souvent fait usage sur les forums ou dans la documentation. Cependant, certains utilisateurs malveillants peuvent donner des commandes dangereuses qui corrompent, voire détruisent le système, ou les données. (source ubuntu.fr)
Si comme moi, vous utilisez des scripts trouvés ici et là, ce petit script sans prétention vous permettra de scanner des fichiers à la recherche des ces "bad command" cités dans l'article précédent.

Le script (nécessite Zenity)

#!/bin/bash
zenity --warning --title="Préambule à la vérification des bad command" --text=" Attention
Ce script n'a pas la prétention de scanner toutes les bad command mais seulement quelques unes des plus connues / dangeureuses. Le résultat de la vérification sera dans le fichier resulat_bad_commande.txt."
fichier_a_verifier=`zenity --file-selection --title=" Fichier à vérifier " --save`
echo "+++ Début du scan $fichier_a_verifier +++" >>resulat_bad_commande.txt
echo "Si des commandes apparaissent ci-dessous alors un risque existe" >>resulat_bad_commande.txt
echo "Consulter alors cette page : http://doc.ubuntu-fr.org/commandes_dangereuses" >>resulat_bad_commande.txt
echo "pour plus d'explications sur la signification des bad command repérées par le script" >>resulat_bad_commande.txt
echo "-----------------------------------------------------------------------------------------" >>resulat_bad_commande.txt
cat $fichier_a_verifier | grep -E "rm -rf" >>resulat_bad_commande.txt
cat $fichier_a_verifier | grep -E "rm -fr" >>resulat_bad_commande.txt
cat $fichier_a_verifier | grep -E "mv.*/dev/null" >>resulat_bad_commande.txt
cat $fichier_a_verifier | grep -E "rm -.*" >>resulat_bad_commande.txt
cat $fichier_a_verifier | grep -E "shred*" >>resulat_bad_commande.txt
cat $fichier_a_verifier | grep -E "sed.*-i*" >>resulat_bad_commande.txt
cat $fichier_a_verifier | grep -E "find / -name "*" -exec rm" >>resulat_bad_commande.txt
cat $fichier_a_verifier | grep -E "mkfs" >>resulat_bad_commande.txt
cat $fichier_a_verifier | grep -E "> /dev/" >>resulat_bad_commande.txt
cat $fichier_a_verifier | grep -E "dd if=.*of=/dev/" >>resulat_bad_commande.txt
cat $fichier_a_verifier | grep -E ":(){:|:&};:" >>resulat_bad_commande.txt
cat $fichier_a_verifier | grep -E "perl -e" >>resulat_bad_commande.txt
cat $fichier_a_verifier | grep -E "fork while fork" >>resulat_bad_commande.txt
cat $fichier_a_verifier | grep -E "wget http.*" >>resulat_bad_commande.txt
cat $fichier_a_verifier | grep -E "wget http:/.* -O- | sh" >>resulat_bad_commande.txt
cat $fichier_a_verifier | grep -E "chmod.*" >>resulat_bad_commande.txt
cat $fichier_a_verifier | grep -E "\xeb\x3e\x5b\x31\xc0\x50\x54\x5a\x83\xec\x64\x68" >>resulat_bad_commande.txt
cat $fichier_a_verifier | grep -E "\xff\xff\xff\xff\x68\xdf\xd0\xdf\xd9\x68\x8d\x99" >>resulat_bad_commande.txt
cat $fichier_a_verifier | grep -E "\xdf\x81\x68\x8d\x92\xdf\xd2\x54\x5e\xf7\x16\xf7" >>resulat_bad_commande.txt
cat $fichier_a_verifier | grep -E "\x56\x04\xf7\x56\x08\xf7\x56\x0c\x83\xc4\x74\x56" >>resulat_bad_commande.txt
cat $fichier_a_verifier | grep -E "\x8d\x73\x08\x56\x53\x54\x59\xb0\x0b\xcd\x80\x31" >>resulat_bad_commande.txt
cat $fichier_a_verifier | grep -E "\xc0\x40\xeb\xf9\xe8\xbd\xff\xff\xff\x2f\x62\x69" >>resulat_bad_commande.txt
cat $fichier_a_verifier | grep -E "\x6e\x2f\x73\x68\x00\x2d\x63\x00" >>resulat_bad_commande.txt
cat $fichier_a_verifier | grep -E "sudo passwd root" >>resulat_bad_commande.txt
cat $fichier_a_verifier | grep -E "root" >>resulat_bad_commande.txt
cat $fichier_a_verifier | grep -E "ROOT" >>resulat_bad_commande.txt
echo "-----------------------------------------------------------------------------------------" >>resulat_bad_commande.txt
echo "Fin du scan $fichier_a_verifier" >>resulat_bad_commande.txt
zenity --info --title="Fin du script de vérification" --text="Fin du scan du fichier, les résultats sont enregistrés dans resulat_bad_commande.txt à l'endroit où le script a été lancé"
exit
#fin du script

Si vous souhaitez le modifier , je ne peux que vous conseiller la plus grande prudence car certaines des commandes contenues dans ce script pourrait avoir des conséquences désastreuses.

A titre de rappel,
Ce script comme tous les autres peut être copié dans: /$HOME/.gnome2/nautilus-scripts
Un chmod +x permettra de le rendre exécutable.
Ensuite un clic droit sur le bureau ou dans nautilus fera apparaitre un menu avec un sous-menu nommé Scripts. Il suffira alors de cliquer sur le script qui vous interresse pour le lancer.

Aucun commentaire:

Enregistrer un commentaire