06 septiembre 2011

HideMyPHPShell, ofuscador de código PHP

Son ya muy conocidas las clásicas shells escritas en PHP, que comúnmente se utilizan para aprovechar vulnerabilidades del tipo Arbitrary File Upload.

También pueden ser utilizadas para administrar ciertos aspectos en caso de que sólamente tengamos acceso vía web a nuestro servidor.

Es muy común que cuando un atacante consigue subir una shell a un servidor para comprometerlo, ofusque el código fuente de la misma para hacerla más difícil de detectar. De hecho, muchas de estas shells que se han encontrado "in the wild", cuentan con algún tipo de ofuscación.

La herramienta HideMyPHPShell, que os presentamos hoy, permite ofuscar código PHP de cualquier tipo, de una manera rápida, y con varios métodos diferentes.

HideMyPHPShell help
./hidemyphpshell.py method_number php_file
1 eval() base64
2 eval() gzip + base64

En su primera versión soporta ofuscación mediante Base64, o mediante compresión gzip con un grado de compresión aleatorio. La idea es, en un futuro, incluir más métodos, incluso utilizando algoritmos de cifrado más avanzados, aunque la clave esté en el propio fichero y se utilice en la rutina de descifrado.

Podemos ver un ejemplo de uso con PHPShell.

Si la descargamos y vemos el código fuente, es demasiado ruidoso:

$ head phpshell.php
<?php // -*- coding: utf-8 -*-


define('PHPSHELL_VERSION', '2.2');
/*


  **************************************************************
  *                     PHP Shell                              *
  **************************************************************


  PHP Shell is an interactive PHP script that will execute any command

En cambio, si la pasamos por el programa:

./hidemyphpshell.py 2 phpshell.php
Obfuscating phpshell.php with method 2 ...
Done, dumped to phpshell.php.obfuscated.php


cat phpshell.php.obfuscated.php
<?php eval(gzuncompress(base64_decode("eF7lXO1z20Zz/2zP+H84oaxJ2nyR7HSaSiL9KLL8WK0seyS5mYzscCAQFBGBAAOAovUkz//e3+7eHQ4gKTlOpv1QxxOTwN3e3t6+7x5fDfdfzadz1e+r7rOuCtJxlFzvqkUx6X5PT548fvJ4HE6iJGw1P7z9cP726ORk9N9HZ+fH70+bHdV80XvRbO89edx/RiOVevan/jAEte4P...

Además, al utilizar el segundo método compresión gzip, el tamaño del fichero PHP ha sido reducido de 20 KB a 9.1 KB.

Ya podéis descargar HideMyPHPShell (hidemyphpshell.py) desde el repositorio oficial de SbD.

6 comments :

fragaycia dijo...

Algo así estaba buscando. Gracias :D

Aa Es dijo...

Ojo que esto hace que el script vaya bastante más lento. Tanto gzuncompress como base64_decode son muy costosos en el computo de CPU

Juan Aguilera dijo...

Con un tamaño de 20 KB no creo que se note mucho ¿no?

Ruben dijo...

No estaría mal añadir la opción para revertir el proceso. XD

b4dboy dijo...

Hide eval
http://hi.baidu.com/b4dboy/blog/item/c71c36138ce624191c9583c2.html

sabronet dijo...

Gracias, otra forma que nosotros utilizamos para proteger Scripts PHP es ofuscarlos con esta herramienta: www.ofuscarphp.com Saludos