.

.

viernes, 3 de agosto de 2018

SecTalks: BNE0x03 - Simple


En esta entrada, vamos ha realizar un hackeo de la siguiente máquina de Vulnhub:


  • SecTalks: BNE0x03 - Simple

Web Oficial: https://www.vulnhub.com/entry/sectalks-bne0x03-simple,141/

Descarga: https://github.com/sectalks/sectalks/tree/master/ctfs/BNE0x03


En la web oficial podemos ver las siguientes instrucciones:
Una vez que cargue la máquina virtual, trátela como una máquina que puede ver en la red, es decir, no tiene acceso físico a esta máquina. Por lo tanto, no se permiten trucos como editar el BIOS de la VM o la configuración de Grub. Solo se permiten ataques remotos./root/flag.txt es tu objetivo final.


Vamos a ello.

Realizo un nmap:









Solo tiene el puerto 80 abierto




















Pruebo credenciales por defecto: admin/admin, root/root, etc., y nada.


También pruebo con : -'/-' , ‘or ’1'='1

Inspecciono el código fuente y no veo nada raro:



























Hago un escaneo con "dirb"




Pruebo con el directorio:
http://192.168.0.22/core/




No encuentro nada.

Otro: http://192.168.0.22/docs




Son artículos sobre PHP que tampoco tienen nada.

Seguimos:
http://192.168.0.22/skins/




Después de revisar todos los directorios y no encontrar nada vuelvo a la página inicial:




Como me da la opción de registrarme, voy a probar




Pongo la contraseña: D123456n

Una vez acepto el registro, estoy directamente dentro:








Se puede subir un archivo




Voy a intentar subir una shell.

Teniendo la versión de la web: "CuteNews 2.0.3", decido por mirar en BBDD de Exploit, a ver si me encuentro alguna.

Me encuentro con un Exploit adecuado a la versión:
https://www.exploit-db.com/exploits/37474/




Pasos indicados en el exploit:

1 - Registrarse como nuevo usuario


2 - Iniciar sesión


3 - Vaya a Opciones personales


4 - Seleccione Subir Avatar / Ejemplo: Evil.jpg


5 - Use los datos de sabotaje y cambie el nombre del archivo Evil.jpg a Evil.php

----------------------------- 2847913122899 \ r \ nContenido-Disposición: form-data; name = "avatar_file"; filename = "Evil.php" \ r \


6 - Su Shell: http://127.0.0.1/cutenews/uploads/avatar_Username_FileName.php

Ejemplo: http://127.0.0.1/cutenews/uploads/avatar_toxic_Evil.php



Ahora busco una shell en PHP

En pentestmonkey.net






Me descargo la que aquí observamos: ph-reverse-shell-1.0.tar.gz

Edito el texto y cambio los parámetros que me indica, que son la IP desde la que vamos a escuchar la comunicación (nuestro terminal de linux) y el puerto.



Una vez que ya lo tengo, guardo, y lo subo.




No me ha hecho falta cambiar la extensión, coge sin problema el .php

Guardo.

El siguiente paso, antes de ejecutar o comprobar la shell subida a la web, es poner en nuestro terminal de Linux o Kali, Netcat en escucha al puerto indicado.



Ahora sí, podemos ir al navegador, y poner la ruta a la que se sube el avatar del perfil de usuario, o lo que es lo mismo, la shell en PHP que hemos subido.

http://192.168.0.26/uploads/avatar_DANIEL_rshell.php

La escucha al puerto 5000 da sus frutos:



Estoy dentro.

WHOAMI / PWD



IFCONFIG




Ls –lah




Uname –a



Cat etc/passwd




Despúes de probar a entrar en los diferentes directorios, veo que no tengo acceso a ninguno, es un usuario muy limitado.

Intento hacer "sudo su", pero me encuentro ante un terminal sin TTY.

Ejecuto el comando de python: python -c 'import pty; pty.spawn("/bin/sh")'




Ya tengo un terminal con TTY

Intento hacer "sudo su" con claves por defecto (admin, root, vacio, etc.)

No consigo entrar.

Voy a ver si encuentro algún exploit para la versión del kernel o el sistema operativo.

El "uname –a" me devolvió:



V 3.16.0

Encuentro en la base de datos de exploit:
https://www.exploit-db.com/exploits/37292/




Como no consigo ser root, voy a intentar descargar mediante wget el exploit, pero en un directorio que me lo permita.

Mi opción /tmp




Se ven las letras de manera doble, no sé porqué, pero el terminal me las está doblando.




Busco como compilar en c









Soy root!!











martes, 8 de agosto de 2017

Red Team & Blue Team Field Manual (RTFM & BTFM)


En estas semanas han llegado a mis manos dos libros imprescindibles para todos los que nos dedicamos a la seguridad y el hacking, dos pequeñas biblias de comandos que te facilitaran la vida más de lo que piensas y que totalmente recomiendo.

¿Cuantas veces en medio de una tarea hemos tenido que buscar un comando que hace tanto que no usamos que ya no recordamos?
O simplemente, estamos utilizando una herramienta que no conocíamos y queremos saber el comando que utilizar para conseguir un resultado concreto.

En estos dos libros se separan los comandos y utilidades, en tareas de ataque y defensa, así dando lugar a:

- "RTFM" Read Team Field Manual.
- "BTFM" Blue Team Field Manual.


No son dos libros en los que podamos leer teoría sobre la materia. Son dos "chuletarios" muy bien editados, donde se separan todos los comandos básicos que se pueden utilizar en Red & Blue Team, por sistemas operativos, herramientas, tipos de tarea, etc.

A modo de ejemplo podemos echar un pequeño vistazo a una parte de la tabla de contenidos del "BTFM".



BLUE TEAM

Ejemplo de lo que podemos encontrar.
Queremos trabajar con los logs en linux y hay comandos que no recordamos.

Capítulo 3 = DETECT (VISIBILITY)
Apartado de Linux

Look at Samba activity:
# grep -i samba /var/log/syslog

Look in Apache Logs for 404 errors:
# grep 404 <LOG FILE NAME> | grep -v -E "favicon.ico | robots.txt"

Monitor for new created files every 5 min:
# watch -n 300 -d ls -lR / <WEB DIRECTORY>


RED TEAM

Apartado WEB.
SQLMAP

Sql Injection and collect DB Version, name, and user:
./sqlmap.py -u "http://<url>" --data="id=1&str=val" -p "id" --tables -D "testdb"


________________

RTFM - Autor: Ben Clark
BTFM - Autores: Alan White & Ben Clark

*Puedes encontrarlo en plataformas como Amazon.



martes, 27 de junio de 2017

Python (3ª Parte)- Textos y Operadores

Seguimos con Python en la tercera entrada consecutiva al respecto.
Recuerdo, que esto no es un manual paso a paso, sino un breve repaso de este lenguaje de programación donde iremos viendo pinceladas, que espero os ayude y colabore en el gusto por la materia.

En la entrada anterior nos quedamos viendo en tratamiento de texto, asi que vamos a seguir viendo alguna función que nos ayudará mucho.

Como ya vimos en las entradas anteriores, una cadena lleva una asignación númerica para cada caracter en el siguiente orden:

entrada = [COHETE]
C/0 , O/1, H/2, E/3, T/4, E/5 por delante, o C/-6 , O/-5, H/-4, E/-3, T/-2, E/-1.

De modo que podremos llamar a los diferentes caracteres de la palabra "COHETE":


También podemos llamar a parte de la palabra utilizando [:].
Los dos puntos representarían el de un sitio inicial a un sitio final. Por ejemplo de lugar número 2 al 5: [2:5]. Si dejamos el hueco en blanco dependiendo si es al principio o al final, sería desde el primer carácter al último. Por ejemplo, del caracter 2 hasta el final, sería: [2: ]


Otro comando interesante, sería "len".
Con "len" averiguamos la longitud de una entrada.

len (ejemplo)
6

Pero recordar que siempre la longitud de la entrada que queramos medir, debe de estar asignada a algo, si no dará error.



 Ahora vamos a ver los operadores, algo que tendremos que utilizar casi a diario en la ejecución de nuestros códigos.

  • (==) = ¿Verdad qué?
¿Verdad que 1 + 1 = 2?        1+1 == 2
TRUE

  •  (!=) = ¿Distinto a?
¿Es 6 distinto a 7?                6 != 7
TRUE

  •  >      Mayor que
  • <       Menor que
  • >=     Mayor o igual que
  • <=     Menor o igual que
*Aclaración: El valor TRUE es igual a 1  /  El valor FALSE es igual a 0
Ejemplo: True * 5 = 5   /   False * 5 = 0

jueves, 22 de junio de 2017

Python (Segunda Parte)- Operadores básicos


Muchos se preguntarán, el por qué dedicar una serie de entradas a un lenguaje de programación como es Python. Pues muy fácil, porque se ha convertido en un lenguaje de referencia dentro del hacking y la seguridad informática, gracias a su dinamismo, facilidad de uso y lo intuitivo que es.
Además que Python, es una gran herramienta para automatizar tareas mediante scripts que nos facilitaran la vida a la hora de realizar un Pentesting, o crear herramientas para cualquiera tarea, que nos evitará depender de las de terceros.

Los que empeceis de manera autodidacta, recomiendo que echeis un ojo a muchos tutoriales que se pueden encontrar por Youtube, ya que os pueden servir de gran apoyo y hay algunos realmente completos, como por ejemplo: "pildorasinformaticas"; con hasta veinte videos dedicados a la materia.


Bien, vamos a empezar a ver operadores básicos.
Como ya os aconseje en la primera entrada, para empezar a practicar os recomiendo la instalación de herramientas como "Anaconda" con su multitud de lenguajes de programación, o uno que me gusta mucho por la ayuda que ofrece y lo intuitivo que es: "Sublime".

Como último apunte antes de empezar, decir que todas las funciones y demás cosas que se nombraran aquí están adaptadas a la última versión de Python, o lo que es lo mismo Python3.

Como en otros lenguajes, la almoadilla "#" será señal de comentario y todo lo que vaya detrás de ella no será tomado como código ejecutable.

# EMPEZAMOS

Para ejecutar los resultados, si estamos trabajando como os he aconsejado en Anaconda, para estás primeras prácticas he ir rodando, pulsamos : SHIFT + INTRO
 

A la hora de realizar operaciones complejas, solo tenemos que tener en cuenta los operadores y el orden estructural en que se van a realizar las operaciones.


Algo muy interesante de Python es la asignación de valores.
Podemos operar con cualquier cosa, siempre y cuando le asignemos previamente un valor. Solo tenemos que decirle que x = y.

No os asusteis, es más facil de entender con ejemplos.
A = 5
B = 3

Ahora si operamos y decimos que: A + B  (El resultado será 8).
De esta manera podemos dar valor a por ejemplo:

- Letras: Z = 56
- Números: 0 = 10
- Palabras: Jirafa = 16 / Coche = 3500 / Alquiler = 750

Es algo muy valioso a la hora de realizar operaciones como:




















# TERMINAMOS LA ENTRADA CON LOS TEXTOS

Python reconoce textos, pero debemos de separarlos siempre entre comillas simples (') o dobles (").
Así: 'Hacking' o "Hacking".

En frases largas podemos y debemos alternarlas para no liar a Python, ya que el reconoce el texto en su totalidad que tenemos entre comillas: "Buenas tardes a todos", de manera que si quisieramos remarcar una palabra dentro del texto, lo debemos de hacer de la siguiente manera:
"Buenas tardes a 'tí' amigo", porque si pusiesemos "Buenas tardes a "tí" amigo" python comprendería dos cadenas diferentes.

Veamos el primer comando o función (print), la función de impresión.
En Informática, la "salida" de un programa son los datos que el programa proporciona al exterior. Aunque en los incios de la informática la salida más habitual era una impresora, hace muchos años que el dispositivo de salida más habitual es la pantalla del ordenador.

En los programa, para mostrar texto o variables hay que utilizar la función print().
La función print() permite mostrar texto en pantalla. El texto a mostrar se escribe como argumento de la función:


Print siempre lleva sus paréntesis, entre los que colocará el texto a imprimir: print ()


 También podemos imprimir variables.
Asignamos por ejemplo a algo un valor y lo ejecutamos. Vamos a verlo.

Fecha_Hora = "Hoy es jueves 22 de Junio y son las 21:15"



domingo, 11 de junio de 2017

Python Returns

Hace más de un año que comence la andadura de este blog, y precisamente empecé con una entrada dedicada a Python "Primeros pasos con Python"... dije que iba a ser la primera de unas cuantas dedicadas a este magnífico lenguaje de programación, pero entre unas cosas y otras me he ido retrasando y posponiendo la materia...



... pero ha llegado el momento de retomar las rienda de la materia.  Así que vamos a empezar con ello.

¿Qué es Python? A parte de uno de los lenguajes más punteros de la actualidad y uno de los más intuitivos de aprender, su mayor característica es sin duda su filosofía de estar compuesto de una sintaxis que favorezca un código legible y facilmente comprensible.

Otra de sus grandes virtudes, es la de tratartese de un lenguaje multiparadigma, lo cual quiere decir que no se cierra a un simple enfoque o manera de abarcar los problemas, sino que utiliza la mejor filosofía posible y más adaptable a cada problema para encontrar la mejor solucción posible (permite encontrar solucciones utilizando más de un estilo de programación, dependiendo de a qué elemento esté enfocada esa programación).

Como no, estamos ante un software de código abierto y en este caso administrado por la "PSF" Python Software Foundation.



Python, como he dicho permite varios tipos de programación, haciendose adaptable a los programadores y no al revés. Podemos utilizar una "programación orientada a objetos",  "programación imperativa",  o "programación funcional".

Bueno, estas son algunas de sus características más notables, las cuales cito aquí para ir entrando en calor, pero esta no es una entrada destinada ni mucho menos a hablar de Python, de su historia y utilidades, si no, como reza su título para empezar a jugar.
De esta manera vamos a ir juntos paso a paso introduciendonos en el mundo de este lenguaje y aprendiendo a través de diferentes entradas que iré publicando periodicamente.
No vamos a detenernos en la instalación Python, lo cual ya hice en la primera entrada, el cual podemos hacerlo desde la página oficial de Python, o desde alguna de las herramientas que permiten su utilización. Hay muchas y variadas y podemos localizarlas con una simple búsqueda en cualquier navegador.

Para el aprendizaje de lenguajes de programación, yo recomiendo la instalación de "Anaconda" y "Jupyter Notebook",  un entorno interactivo web de ejecución de código en los que, por ejemplo, puedes incluir gráficas que ayuden en el análisis e explicación de tus datos. Utilizados para facilitar la explicación y reproducción de estudios y análisis.
Si instalamos Anaconda este paquete ya viene instalado por defecto en la distribución, si utilizamos la versión estándar tendremos que instalarla.
Si ya tenías una versión antigua de IPython con Anaconda, podemos actualizar estas versiones ejecutando en el terminal.

Una vez instalado, solo tenemos que ejecutar en el terminal de nuestro equipo:
$ jupyter notebook

 Para arrancarlo en el navegador solo hay que introducir la url que nos devuelve el terminal en "localhost:8888".


En la siguiente entrada comenzaremos a ver los comandos y operaciones básicas.

martes, 16 de mayo de 2017

The Harvester - Recolección de información


Hay una pregunta recurrente en todas las empresas, cuando cada día reciben ataques del tipo phising intentando pillarlos en un renuncio y que pinchen un enlace, que según el mail le llevará a unos documentos o facturas que ha solicitado, o suplantando a uno de sus compañeros.
¿De donde sacarán todas las direcciones de correo?

Ya hemos visto en anteriores entradas, una de las mejores herramientas de recopilación de información: Maltego (Ver entrada).

Uno de los mayores problemas que tienen tanto empresas, como cualquier usuario a día de hoy, es el descontrol y fuga de información sin control. Regalamos información a discreción en web, redes sociales, formularios de contacto, etc.
Por ejemplo a nivel empresarial, hay direcciones de correo que no deberían de ser públicadas abiertamente y por el contrario se hace, ya por ignorancia de las consecuencias, o simple descuido.

Toda esta información está ahí, solo hay que tener las herramientas concretas y adecuadas para hacerlo.

Esto permitiría a los ciberdelincuentes, de manera fácil y efectiva, enviar ataques personalizados por correo electrónico a todo el personal, aumentando la superficie de ataque y las probabilidades de éxito.

The Harvester es una herramienta para recopilar cuentas de correo electrónico, nombres de subdominio, Hosts, puertos / banners abiertos y nombres de empleados de diferentes fuentes públicas (Motores de búsqueda, servidores de clave pgp).

The Harvester utiliza fuentes como:
  1. -google: motor de búsqueda de google - www.google.com 
  2. -googleCSE: motor de búsqueda personalizado de Google 
  3. -google-profiles: motor de búsqueda de google, búsqueda específica de perfiles de Google 
  4. -Bar: motor de búsqueda de microsoft - www.bing.com 
  5. -bingapi: microsoft motor de búsqueda, a través de la API (tiene que agregar su clave en El archivo discovery / bingsearch.py) 
  6. -dogpile: Motor de búsqueda de Dogpile - www.dogpile.com 
  7. -pgp: pgp servidor de claves 
  8. - mit.edu 
  9. -linkedin: motor de búsqueda google, búsqueda específica para usuarios de Linkedin 
  10. -vhost: Búsqueda de hosts virtuales de Bing 
  11. -twitter: cuentas de Twitter relacionadas con un dominio específico (usa la búsqueda de google) 
  12. -googleplus: usuarios que trabajan en la empresa de destino (utiliza la búsqueda de google) 
  13. -yahoo: Motor de búsqueda de Yahoo 
  14. -baidu: Buscador Baidu 
  15. -shodan: Shodan Buscador de computadoras, buscará puertos y banner de la Hosts descubiertos ( http://www.shodanhq.com/ )
Aunque en anteriores versiones de Kali Linux si hemos encontrado esta herramienta, es cierto que en las últimas no viene añadido, pero es muy facil de descargar e instalar en cualquier distro de Linux.
Solo tenemos que descargarlo en:
 https://github.com/laramies/theHarvester

Si tienes problemas con la instalación, o no quieres descargar y realizar todo el proceso, abre el terminal y:

# sudo apt-get install subversion
# cd /opt
# svn checkout https://github.com/laramies/theHarvester.git
(Puedes hacer un "ls" para ver el contenido)

#cd theHarvester.git/trunk
(Puedes hacer un "ls" para ver el contenido)
Como puedes ver, si todo ha salido bien, tienes un "theHarvester.py" (Ya puedes utilizar tu herramienta)

Vamos a probar la herramienta.
Es tan fácil como seguir una estructura de lanzamiento de la herramienta:
 # python theHarvester.py

Y para completar el comando, añadir algunas opciones (utilidades) de la herramienta y una de las fuentes mencionadas con anterioridad de las usadas por theharvester.

Por ejemplo, probemos una combinación de comando:

 # python theHarvester.py -d hotmail.com -l 500 -b bing

Tenemos el comando genérico, alguna de las opciones (-d, -l, -b) que ahora indicaremos su utilidad, 500 sería el rango de resultados que vamos a buscar (podríamos poner 50, 100, los que quisieramos), que clase de correo queremos buscar, en este caso "hotmail.com" y dentro de bing (ya que pertenecen ambas a Microsoft).

Opciones:

-d /: permite definir el dominio a buscar o nombre de la empresa.
-l /: limita el número de resultados con el cual trabajar.
-b /: define la fuente de datos (google, bing, linkedin).
-f /: la cual guarda los resultados en un archivo HTML y XML. El archivo creado se visualiza con el navegador. Es necesario indicar a continuación la ruta en la que se guardará el archivo (Por ejemplo: -f /tmp/emails.xml)

 Resultado:



Vamos a ver guardando el informe:


Una vez lanzado el comando y ejecutado, solo tenemos que copiar la ruta donde hemos guardado el mismo (en este caso: /tmp/emails.html) y copiarlo en el navegador.


martes, 2 de mayo de 2017

Hacking Wi-Fi con Airgeddon - Parte 4

Creo que en los articulos dedicados al script Airgeddon, para hacer hacking en WiFi, habéis podido ver la cantidad de posibilidades que ofrece y el gran potencial que tiene este pequeño y la vez tan grande script. Realmente esta era mi intención.

El siguiente paso es instarlo en casa y que comenceis a hacer pruebas.

Para cerrar esta serie de artículos, voy a nombrar alguna de las opciones que no he nombrado con anterioridad y que sin embargo tienen mucho que aprovechar.


No pararé mucho en el siguiente apartado: Evil Twin, porque necesitaría otros tres artículos con solo este apartado y además es un tema ciertamente comprometido.
¿Por qué?

Evil Twin = El Gemelo Diabólico
Es un punto de acceso Wi-Fi fraudulento que parece ser legítimo, configurado para escuchar las comunicaciones inalámbricas.

 Digamos que es una suplantación en directo de un punto de acceso WiFi legítimo, con unas intenciones evidentemente no tan legítimas.

Para los que no lo entiendan veamos un ejemplo.
Imaginamos un restaurante cualquiera de comida rápida, por ejemplo un Macdonald, donde la gente se suele conectar a la WiFi gratuita, con un nombre como por ejemplo: Macdonald_GranVia_Free.
Ahora imaginemos que alguien pudiese llegar, sentarse fuera o dentro del restaurante y crear un punto WiFi con el mismo nombre: Macdonald_GranVia_Free, imitando cada uno de los aspectos de la red original, pero con la diferencia de que en vez de conectarnos al restaurante, nos estaríamos conectando al equipo de alguien con malas intenciones al que le estamos ofreciendo todos nuestros datos.
Eso es un Evil Twin.


Con Airgeddon podemos generar un Evil Twin utilizando diferentes técnicas.
Como en diferentes apartados que ya hemos tocado es muy intuitivo y fácil de utilizar y configurar.
Para realizar esta práctica se requiere el modo monitor en la tarjeta inalámbrica, tener un dhcp activo u hostapd dhcpd en alguna de las opciones.


Otra de las opciones y servicios que nos ofrece Airgeddon y que hará las delicias de muchos, es la posibilidad de realizar ataques WPS (Opción de menú número 8).

El WPS (Wi-Fi Protected Setup) de los dispositivos inalámbricos entre los que destacan routers y puntos de acceso, es una característica incorporada en el estándar 802.11N para facilitar la conexión de los clientes inalámbricos a estos equipos, sin necesidad de introducir largas contraseñas de acceso. WPS además permite sincronizar los equipos de forma automática durante 60 segundos con tan sólo presionar un botón en cada dispositivo (router o AP y cliente inalámbrico).

Hace un tiempo se descubrió una vulnerabilidad que permitía crackear el código PIN del WPS, por lo que cualquier atacante ya no necesitaría crackear una contraseña WPA o WPA2 con muchos caracteres, sino que simplemente podría realizar un ataque de fuerza bruta contra el WPS que tiene tan sólo 8 dígitos. Con una longitud de 8 dígitos el número de combinaciones es de 10^8, sin embargo, la arquitectura del PIN de WPS divide el PIN en dos subpines.
El PIN1 tiene cuatro dígitos y por tanto el número de combinaciones es de 10^4. El PIN2 varía dependiendo del fabricante, en el primer caso (y más común) se utiliza el último dígito como checksum, por lo que el número de combinaciones de este PIN2 es de tan sólo 10^3, en el segundo y último caso se usaría este último dígito como PIN también, en este caso el número de combinaciones sería de 10^4.

Airgeddon nos ayudará en todo esto con un amplio abanico de posibilidades:


 Como podemos ver la imagen, solo tenemos que elegir el target u objetivo, en el punto 4 del menú y una vez seleccionado este, solo hay que decantarse por una de las opciones ofrecidas.
Entre las opciones, fuerza bruta, ataques basados en BBDD conocidas para PIN, o podemos intentar una asociación por PIN personalizado.