jeudi 16 juillet 2009

Remote file inclusion - Part1

Les Remote File Inclusion, ou RFI sont un vecteur d'attaque largement employé aujourd'hui.

Son fonctionnement consiste à faire exécuter à un serveur web du code choisi par l'attaquant. La majorité des attaques concerne PHP bien qu'il soit possible d'imaginer tout type de service web vulnérable à ce type d'attaque.

Le principe de base repose sur le fait que des serveurs webs peuvent inclure des fichiers qui sont en dehors de leur racine, voire en dehors de leur machine.
Ainsi, il suffit au pirate de demander de choisir le fichier à inclure pour exécuter le code de son choix.

M'intéressant au phénomène, j'ai donc codé un tool qui me permet de rappatrier à des fins d'analyses ces fameux fichiers.

Je vous propose donc l'analyse des RFI que j'ai pu mener suite à l'utilisation de cet outil.

1/Analyse globale
Globalement, les fichiers récoltés sont souvent les mêmes.
La première récolte m'a donc rappatrié 161 fichiers provenant d'autant de sources différentes. Une fois vérifiés, j'ai obtenu au total 53 fichiers différents.
Et effectivement au fur et à mesure de mes analyses je me suis rendu compte que les fichiers sont extrêmement souvent les mêmes. Les différences sont souvent mimimes, et repose majoritairement sur le nom du pirate qui est modifié.

2/ Analyse des buts visés
Il est possible globalement de classifier ces fichiers dans trois familles. Les fichiers de découverte, les fichiers de récupération d'informations et enfin les fichiers offensifs.

A/
Les fichiers de découvertes. Généralement, ils sont très petits, par exemple:

<?php /* aJ99ID */ echo("di"."Ki"); die("di"."Ki"); /* aJ99ID */ ?>

Le principe consiste juste à appeler un site visé en incluant ce fichier et vérifier que la page rendue contient le mot diKidiKi. Le but doit uniquement servir à découvrir un serveur web vulnérable.
Enormément de fichiers tournent autour de variations de celui-ci, à chaque fois le commentaire et le nom change.

B/
Des fichiers de découverte plus profonde. Ils récupèrent souvent la configuration php, l'OS utilisé, la taille disque, etc..
Comme on peut le voir dans cet exemple, le pirate récupère son nom, l'OS, l'uid sous laquelle il tourne, la mémoire utilisé, l'espace disque utilisé et l'espace disque total.

Par exemple:
(...différentes fonctions définies)
echo "Coracore<br>";
echo "uname -a: $un<br>";
echo "os: $os<br>";
echo "id: $id1<br>";
echo "free: $free<br>";
echo "used: $used<br>";
echo "total: $all<br>";


De même, ce type de fichiers existe en de multiples exemplaires, tous tournant autour de ce type de récupération de données. Ceci va permettre au pirate de se constituer une base de données un peu plus précise des machines vulnérables et de leur interêt relatif selon l'usage futur qu'il peut imaginer.

C/
Enfin, les fichiers qui sont des scripts réellement offensifs. Il existe les PHPshells et les bots. Le PHPshell qui revient le plus souvent est le C99shell et le r57shell.
Au travers d'une interface web, ils permettent d'obtenir un contrôle complet de la machine visée.
Voir par exemple http://www.honeynet.cz/img/rfi-c99.jpg qui donne une bonne idée des possibilités offertes par ce genre d'outil.
Enfin, les bots lancent un process qui va se connecter sur un canal IRC afin d'attendre des ordres donnés par le pirate.
Ces fichiers sont bien entendus uniquement différents de par le nom du pirate et des canaux IRC sur lesquels il doivent se connecter.

Bien entendu, plusieurs autres fichiers s'écartent de cette classification, ce qui sera vu dans un second post.

Aucun commentaire:

Enregistrer un commentaire