RSS |

Blog de Omar

Just another WordPress weblog

Advertisement

Como lo prometido es deuda, estoy tratando de escribir más seguido en el blog. Dejando de lado el tedioso proceso de documentación de los proyectos que estoy realizando, dejando de lado el calor infernal que nos asfixia en Lima durante este verano y dejando de lado la pereza dominical que me invade cada fin de semana que me estoy atreviendo a escribir un nuevo post en el blog.

Antes de comenzar, es casi un requisito leer el post anterior donde habíamos revisado algunas técnicas backdoors que ahora vamos a utilizar: [Backdoors en Linux – Parte 01]

Google Hacking y backdoors

Hay algunos backdoors que son fácilmente de ubicar a través de algunas técnicas de Google Hacking, por lo general estos archivos son utilizados porque son empaquetados y están listos para ser utilizados. Los más comunes son los famosos C99.PHP, C100.PHP, R57.PHP y todas sus variantes. De hecho es muy fácil encontrar servidores que han sido vulnerados y cuyos sysadmins aun no han advertido del hacking ocurrido sobre sus servidores.

image

 

image

 

Ok y si son tan buenos backdoors que todos utilizan, ¿cuál es el problema? de hecho si hay problema, cuando se instalan estos backdoors las solicitudes a estas páginas se realizan a través del método GET y son muy evidentes cuando se revisan los logs, es decir, un administrador de sistemas puede notar algún movimiento extraño al llamar a un archivo que normalmente no forma parte de la aplicación. De hecho hay dos (02) maneras básicas para poder detectar posibles backdoors que podría utilizar un administrador de sistemas:

  1. A través de la evaluación de los logs del servidor: Esto se podría hacer manualmente, es decir buscar archivos clásicos utilizados como backdoors, [AQUÍ] una lista de los más utilizados. Existen herramientas que automatizan la revisión de los archivos de eventos en busca de palabras típicas de un evento de hacking.

    image

    Una herramienta muy interesante para analizar logs de un servidor APACHE se llama LORG y encuentra todo tipo de ataques realizados al servidor. Pueden encontrar mayor información del proyecto LORG en el siguiente enlace: [AQUÍ]. Yo lo instalé para probarlo y ver si detectaba un backdoor muy conocido como el C99.PHP y no lo identificó, realicé algunos ataques manuales de Inyección de Código SQL y funcionó muy bien, aquí si detecto el ataque, les dejo algunas gráficas para que vean como funciona.

    image

  2. A través de scripts que revisan los archivos tipo PHP en busca de funciones “maliciosas” en el servidor, es decir, funciones que no deberían ser utilizadas normalmente, por ejemplo, funciones: EVAL, SYSTEM, EXEC, etc etc. Al final lo que hace este script es buscar funciones dentro de los archivos y nos muestra un resumen de los archivos que ha encontrado con información de posibles puertas traseras.

    Existen varias herramientas que hacen esta revisión:

    - Neopi [Enlace AQUÍ]: De manera personal debo decir que este script realizado en Python no me gusto mucho, me mostraba muchos falsos positivos a pesar de que utilicé los diferentes mecanismos de detección, a pesar de eso pueden probarlo y sacar sus propias conclusiones.

    - PHP SHELL Detector [Enlace AQUÍ]: Este es mucho más simple de utilizar, basta copiar los archivos en el directorio raiz de nuestro apache y ejecutarlo desde el browser. Me gustó porque detectó los backdoors que había colocado en mi servidor de prueba. Lo recomiendo totalmente, aquí les dejo unos printscreen de los resultados obtenidos, en la imagen se puede observar como detectó un archivo PHP ofuscado y el clásico C99.PHP.

    image

    image

  3. Otro mecanismo para detectar los backdoors es buscar de manera manual funciones maliciosas. ¿De manera manual? Pues, es como si tuviéramos que buscar un string en unos archivos que están en determinada carpeta.

image

 

 

Hookworm: Un backdoor muy silencioso

Todas las técnicas arriba mostradas para detectar puertas traseras son las más básicas y seguro funcionan muy bien pero si queremos esconder algún backdoor hay muchas formas interesantes de poder hacerlo y obviamente sin que alguien pueda advertir de su presencia. Voy a detallar los pasos para tener un backdoor en el servidor, aunque primero voy a detallar un escenario para que se comprenda mejor:

Escenario:

Un atacante tiene acceso a través de SSH a un servidor Linux ya que obtuvo la contraseña, un patrón de contraseña utilizado por el administrador de servidores para todos los servidores de la organización. El atacante sabe que el acceso a través de SSH solo es posible desde la red LAN de la empresa y que sólo el puerto TCP/80 del servicio Apache se encuentra expuesto a Internet. Además, cabe la posibilidad que el administrador de servidores restrinja el acceso al puerto SSH a ciertas direcciones IP por lo que es imperativo dejar un backdoor que cumpla con tres (03) características: que le permita acceder con privilegios del usuario ROOT,  sea accedido desde Internet y que además sea lo mas sigiloso posible para pasar desapercibido.

Pasos a realizar:

1. Crear y compilar un archivo escrito en C para obtener un ejecutable. Configurar el SETUID para que se pueda ejecutar con permisos de ROOT.

2. Modificar un archivo el servidor web, de preferencia un archivo PHP que ya existe y añadir la siguiente línea:

image
3. Si reparan en el archivo PHP creado en el paso 02, lo que realmente hace es recibir la variable enviado a través de la cabecera HTTP, en este caso las cookies. Estas cookies recibidas son ejecutadas en el sistema operativo para acceder a cierta información. Lo único que nos falta es poder ejecutar comandos con privilegios de ROOT. Es aquí donde entra el paso 01, con el archivo escrito C y configurado el SETUID podemos obtener estos permisos. Nada complicado por si lo notan, sólo que sigiloso ya que no son enviadas a través de GET o POST.

A. Entonces creamos el archivo en C y lo compilamos para tener un ejecutable. Esto ya lo hicimos en un anterior POST donde está mejor explicado, puedes leer el detalle [AQUÍ]

 

B. Desde un navegador web en donde podamos modificar las cabeceras HTTP y colocar un valor en el cookie. Podríamos haber utilizado BURP SUITE o el TAMPER. Yo he utilizado el Burp Suite que se me hace más fácil de utilizar.

image

 

C. Ahora si ejecutamos comandos de manera conjunta con el backdoor que hemos dejado podemos pasar a convertirnos en ROOT y ser felices tan sólo una vez mas.

image

 

Finalmente, podríamos reemplazar la función SHELL_EXEC (  ) con la función EVAL(  ) de PHP para que pueda pasar más desapercibido todavía. Esto lo haremos en el video para no alargar mas el POST. Hasta pronto.

image

Pd: Este POST comenzó a escribirse el domingo 28 de Febrero de 2016 y terminó de escribirse el 09 de Marzo, me estoy haciendo viejo para escribir en el blog Triste. Saludos.

Popularity: 7% [?]

Si te gusto este post, asegurate de suscribirte a mi RSS feed!

Omar Palomino

Hola mi nombre es Omar Palomino. Si te gustan las noticias de mi blog, no olvides suscribirte a la página. Puedes leer más en Acerca de MI, o bien ponerte en contacto conmigo al correo: omarc320@gmail.com

More Posts - Website

Post Relacionados

  • No Related Posts

SI TE GUSTO ESTE ARTICULO, COMPARTELO!


Comments

There is one comment for this post.

  1. Nicogo on Reply to this comment Marzo 19, 2016 12:41 am

    Hola Palomo,

    Muy bueno tu blog y que bueno que estes de vuelta. Tengo una duda, todo funciona perfect. Pero si vulneras un server, como haces para que el backdoor subirlo quede aun como propietario root y no por el usuario apache, www-data o el usuario correspondiente?. Hice una prueba en un ambiente mio y por un uploader en php simple, el propietario queda apache. Este metodo más bien es por intermedio fisico (directamente plantar esto en el server?).

    Saludos y gracias por tus conocimientos!.

Write a Comment

*

Spam Protection by WP-SpamFree