|
|
curso online 2 primera face de un atake lvl 2
bien, ya tenemos el sistema identificado! sabemos que puertos tiene abiertos y que daemons (programas) los gestionan, y a ser posible sus versiones (esto lo vimos en la primera aportacion k hice) bueno, hasta aki estoi seguro k mucho ya sabian hacerlo, pero ahora k? k podemos hacer ahora?
bien, empezaremos por lo facil, buscaremos si los daemons que corre el servidor tienen errores de seguridad conocidos:
www.securityfocus.com/bid/title
ahi elegimos el nombre del daemon, i nos saldra una lista de errrores k son los k posee el daemon, nada mas al un error nos dice a k version afecta, en la pesta�a discussion nos explica en k se basa el error, i en la seccion exploits es posible k haya codigos para llevar a la practiva la explotacion del bug, en credits nos diran kien descubrio el bug y en solution como parchearlo.
pero, que bugs puede tener un daemon habitualmente?
bueno, existen varios tipos de bugs, dependiendo de k atakemos, ahora estamos hablando de atacar los daemons del sistema, asi que los bugs mas habituales son:
Buffer Overflow
Password bypass
Memory exahustation
Brute forcing
el primero, los Buffer overflow, es el MAS IMPORTANTE bug que debe conocer un hacker, alguien k no conozca los buffers overflow a fondo, NUNCA llegara a nada en el hacking.
Vereis los programas se hacen en lenguages de programacion, la gente dice que tras compilarlos pasan a ser codigo maquina y ya no importa en que fueron programados, pero esto no es cierto, diferentes lenguages de programacion al ser compilados estructuran el codigo makina de maneras diferentes.
existe un lenguage bastante potente y tambien bastante antiguo, el lenguage C, en el k fue escrito Unix, Minix, Linux, SunOS y Windows (el ultimo parece a veces echo en basic xD)
En el lenguage C existe un peke�o problema con el tratamiento de las cadenas de caracteres (char) o tmb llamadas arrays.
el problema reside en k C no tiene ningun metodo para comprobar si se ha llegado al final de la cadena, es decir si por ejemplo intentamos escribir �hackgeneral� en un array de 2 chars (char variable[2] C no dira k eso no podemos hacerlo, i una vez compilado no lo evitara, de forma k continuaremos escribiendo mas haya del array.
pero si el programa tenia reservados 2 bytes y escribimos la palabra hackgeneral en el, y el programa no lo evita, donde va a parar lo k sobra? va a parar a la memoria, a lugares k a simple vista parecen imprevisibles pero no lo son tanto�
vereis en los lenguages de programacion de alto nivel existen lo k llamamos funciones, k son rutinas que se ejecutan con unos valores de entrada, i cuando terminan devuelven o no un valor i continua la ejecucion desde el punto en donde se llamo a la funcion, sin embargo este no es un comportamiento propio de un sistema informatico, i el lenguage makina para llegar a este nivel de abstraccion hace uso de la funcion en assembler call, la cual lo k hace es saltar a un punto del programa i cuando se encuentra la instruccion ret (return) vuelve a donde estava, para lograr esto, call lo k hace es almacenar la direccion actual en la pila (stack) y saltar, luego cuando encuentra ret, recoje la instruccion de la pila i salta a ella�
imaginemos de nuevo un programa en C con una variable llamada: var1, es un array de char de 2 caracteres, intentamos meter hackgeneral en ella, se desborda i la cosa keda asi:
ha ckgeneral
la �ha� keda dentro de la variable var1 i �ckgeneral� keda mas haya de la variable i k hay mas haya? la pila!
wowowowowow!!!!!!
un ejemplo, si desbordamos la variable var1 con �AAAAAAAAAAAAAA� nos daremos cuenta k la A en hexadeciam les 0�41 i si pensamos un poco, la instruccion call habia apilado en la pila la direccion de retorno para regresar, ahora hemos llenado un trozo de la pila con AAAAAA por lo cual la direccion de retorno ha sido sobreescrita i ahora el programa al terminar la funcion saltara a 0�41414141
bueno, hasta aki todo bien�parece sencillo, pero esto para k nos sirve en terminos de hacking hablando? para todo!!!
el virus blaster i sasser, todos los exploits k dan root (la mayoria, bueno) etc utilizan buffers overflow� esto ha sido una mini introduccion si kereis mas informacion acerca de buffers overflows (recomiendo retieradamente comprenderlos al maximo)
http://personal.telefonica.terra.es/web/alexb/manuales/pila.zip
ese es el documento mas detallado sobre ellos, escrito por alephone, moderador de la lista bugtraq (securityfocus, en 1996) i traducido por honoriak para la phrhack 49.
Password bypass
en algunos programas existen errores k hacen k al llevarlos a ciertas cirscumstancias nos dejan entrar sin contrase�a, o bien k de alguna manera podemos acceder directament a archivos teoricamente restringidos.
Memory exahustation.
se trata basicamente de consumir la memoria de la makina victima, para haceros a la idea, imaginemos k un servidor web consume 1 byte de memoria cada vez k le enviamos una peticion especialmente construida con 255 barras (/) por ejemplo, k pasaria si programamos un exploit k empieza a hacer peticiones con 255 (/) muy rapido? al cabo de un rato el servidor caeria por falta de memoria, esto era solo un ejemplo.
brute forcing
estos atakes a simple vista parecen simples, el echo de probar miles i miles de contrase�as�parece algo inutil, sin embargo io puedo decir k con este metodo he hackeado muchos servidores�algunos softwares tiene el errror de no restringir el numero de intentos i podemos estar probando con algun programa toda una noche�es bastante probable acertar.
una vez estamos en securityfocus i tenemos localizados los bugs k tienen los daemons de nuestra victima, anotamos todo en nuestro ducmento victima.txt o en uno al lado llamado: bugs.txt
lo siguiente k diremos: bien pero como ataco io?
bueno, en todos los bugs encontrados miramos a ver si disponen de exploits en la pesta�a exploit, en caso afirmativo lo guardamos en nuestra pc.
una vez hemos reunido todo los exploits k posiblemente afectan a la makina victima, veremos k hay muchos k son .c i otros k son .pl.
los primeros con programas en C, normalmente para explotar buffer overflow (ironico verdad?) i se compilan con visual studio siempre i cuando sean estos para windows, en caso de ser para linux (el exploit) necesitaremos un linux, pero trankilos mas adelante veremos como solo con windows podemos incluso usar exploits k teoricamente con solo para linux (primero kiero ver si comprendeis todo esto, k se k es duro)
lo k son .pl son exploits programados en lenguage perl, pueden ser ejecutados con active perl (podeis bajarlo de internet) o con linux escribiendo perl archivo.pl
bueno llegados aki kiero k buskeis ampliar esto por internet, hagais ensallos etc, i si veo k lo comprendeis en la proxima entrega usaremos lo exploits k hemos recopilado
Copyright © por <<< DiMeNcIoNhAcK>>> Derechos Reservados. Publicado el: 2008-07-21 (193 _READS) _GOBACK |
|