En esta entrada vamos a mostrar una posible solución al reto De-ICE, nivel 1. Ilustraremos un camino bastante directo a la solución, dejando los callejones sin salida para una entrada posterior. La información referente a este nivel es la siguiente:
SCENARIO
IP Subnet Mask: 255.255.255.0
The scenario for this LiveCD is that a CEO of a small company has been pressured by the Board of Directors to have a penetration test done within the company. The CEO, believing his company is secure, feels this is a huge waste of money, especially since he already has a company scan their network for vulnerabilities (using nessus). To make the BoD happy, he decides to hire you for a 5-day job; and because he really doesn’t believe the company is insecure, he has contracted you to look at only one server – a old system that only has a web-based list of the company’s contact information.
The CEO expects you to prove that the admins of the box follow all proper accepted security practices, and that you will not be able to obtain access to the box. Prove to him that a full penetration test of their entire corporation would be the best way to ensure his company is actually following best security practices.
CONFIGURATION
PenTest Lab Disk 1.100:
This LiveCD is configured with an IP address of 192.168.1.100 – no additional configuration is necessary.
Pentest Machine:
Your second system will use the BackTrack (v.2) LiveCD as provided by remote-exploit.org. A copy of the LiveCD can be downloaded from remote-exploit.org. This disk is configured to obtain an IP address through DHCP – thus no additional configuration is required. All tools necessary to exploit Disk 1.100 can be found on the BackTrack Disk. No additional installations will be necessary.
Router Configuration:
The PenTest Lab system and the PenTest machine must connect to a router that has been configured with the following values:
DHCP Server: active
Pool Starting Addr.: 192.168.1.2
LAN TCP/IP:
IP Address: 192.168.1.1
Podéis encontrar más información en los foros de heorot.net. Las imágenes para el reto las podéis descargar también en el foro, en este hilo. Una vez tenemos la máquina virtual levantada, comenzamos con un escaneo sencillo para determinar las oportunidades que tenemos de lograr nuestro objetivo:
Como se puede apreciar en la imagen, parece que la víctima es un Linux 2.6.x, tiene un servidor SMTP, IMAP, POP, un SSH, un Apache y un FTP. Esto es todo lo que tenemos, y por supuesto sus versiones. Una búsqueda en los sitios habituales no arroja ningún exploit remoto de interés, así que iremos a una prueba un poco más manual de los servicios, como se muestra en la siguiente imagen.
Vaya, parece que hay algún problema con la configuración del FTP, lo que nos va a impedir su uso por el momento. En cuanto al SSH, parece funcionar correctamente, pero por desgracia no tenemos la password de root, ni constancia de que existan otros usuarios. Vamos a seguir indagando en los servicios disponibles de la víctima. Algo que deberíamos haber hecho en primer lugar, es abrir un navegador y ver qué encontramos en el servidor web.
marym mmary root mariem mmarie patrickp ppatrick patp ppat ... aadams adamsa adama aadam banterb bbanter bobb bbob ...
Ponemos especial atención a los nombres que aparecen como miembros del equipo de administración de la web, ya que es más que probable que tengan una cuenta privilegiada en el sistema, o al menos una desde la que se puedan escalar privilegios. ¿Cómo saber si alguno de estos usuarios existe? Podríamos coger esta lista y tratar de lanzar un ataque de fuerza bruta contra el servicio SSH, con todos estos usuarios y un buen diccionario. Quizá funcionaría, pero tardaríamos un tiempo muy valioso que quizá podamos acortar con un poco de ingenio.
Si os fijáis, el servidor SMTP permite la enumeración de usuarios, pero hacerlo vía telnet, uno a uno es muy tedioso. Por lo tanto, hemos utilizado smtpguess; una utilidad que desarrollé a raiz de este reto para realizar esta función. Bien, ahora tenemos unos usuarios válidos en la máquina. Vamos a tratar de realizar un ataque de fuerza bruta al servicio SSH (previamente hemos descartado otras opciones, que dan para otro post completo). Deberíamos usar hydra o némesis, pero tienen problemas con la librería de ssl moderna y hay que retroceder a la backtrack 2 o compilarse una versión de xhydra enlazada contra el ssl viejo. Por lo tanto vamos a utilizar brutessh, que si bien es bastante más simple, cumple su función. En primer lugar, vamos a probar un diccionario para dummies, es decir, que va a contener los nombres de los usuarios, sus cuentas en el sistema y algunas palabras del texto que veíamos en la web (nunca se sabe, por ejemplo marmot :P).
¡Premio! El usuario bbanter no ha sido muy cuidadoso con su password, y nos ha regalado el acceso a la víctima 🙂 Con esto es suficiente por ahora, que el post ya es bastante largo de por sí. El acceso a la víctima y la escalada de privilegios, en otro post.
interesante, muy buena la entrada ^^