Hack
  Curso hacking
 
CURSO DE HACKING

Cap?tulo 1.

El arte del Hacking
Saludos, internautas de Lanus y a los otros tambien. voy a intentar resumir en cuatro o cinco lecciones lo que yo creo que deb?s saber si quer?s convertirte en hackers. Este curso est? orientado a todas aquellas personas que est?n interesadas en aprender el arte del hacking, pero del hacking tal y c?mo se entiende, y esta es una cuesti?n que vamos a tratar especialmente en esta unidad.

Pero ?cuidado! Este curso, tal y como su nombre indica, es de car?cter introductorio. Todo lo que voy a ense?ar no es m?s que lo que ten?s que aprender para empezar, de alguna manera, a hackear. Es simplemente lo m?s b?sico, con esto no vas a convertir en ?lite. Deberas buscar m?s material y con el tiempo acabaras siendo ?lite, pero no quieras aprenderlo todo en un d?a, y no te obsesiones mucho en este peque?o tutorial. Simplemente t?malo como el primer paso para entrar en el hacking. Una vez hayas hecho este paso ya estar?s dentro y no ser? f?cil salir.


?Por qu? un curso de car?cter introductorio y no uno completo?
Para empezar, creo que lo que m?s cuesta es iniciar, empezar a hacer algo de hacking. Es decir, te pod?s pasar horas leyendo documentos en ingl?s que pueden explicar cosas muy interesantes como el IP Spoofing o c?mo programar caballos de troya en C, pero que no te ser?n de utilidad si antes no sab?s que ten?s que tener determinado sistema operativo y unos determinados conocimientos b?sicos para aprovechar ese material. Y es que, de hecho, en Internet hay pocos tutoriales que realmente expliquen paso a paso qu? hacer para empezar a hackear. Por eso creo que este tutorial cumple una funci?n muy importante. Como ya te e dicho antes, con este tutorial podes dar un primer paso. Luego, ya te vas a despabilar solito. En segundo lugar, aunque llevo un tiempo en esto del hacking, no me considero ?lite y no tengo suficientes conocimientos para hacer un curso completo que abarque todo lo que se puede hacer hackeando.


?Requerimientos?
No importa si no sab?is mucho de inform?tica, lo m?s importante es que teng?s ganas de aprender y no se?s muy perezoso



El curso se divide b?sicamente en:

Introducci?n al hacking
Teor?a: Entorno LINUX (incluyendo ejemplos, ejercicios pr?cticos, etc?)
Teor?a: Entornos UNIX internacionales
M?todos de hacking: entrar un sistema


Antes de empezar?
He aqu? unas definiciones que debes saber, porque las voy a ir usando durante el curso. Estas son solo las b?sicas, a medida que avance el curso iras aprendiendo m?s. La mayor?a de estas definiciones las sabras pero, repito, este curso est? orientado a toda clase de usuarios, expertos y novatos.

Linux : Sistema Operativo multiusuario, versi?n UNIX de PC.
Login: Nombre de usuario que se usa para entrar en un sistema determinado

Password:Clave que tiene cada usuario para entrar en un sistema determinado

Anonymous: Login predeterminado para sistemas que dejan entrar usuarios libremente sin ped?rles identificaci?n. Esto comporta siempre limitaciones y restricciones.

FTP: File Transfer Protocol. Es el puerto 21 de un sistema determinado, que usa un programa servidor de FTP para que otros usuarios entren con un programa cliente de FTP con el fin de poder subir/bajar archivos de/a ese sistema.

Telnet: Corresponde al puerto 23 de un sistema determinado. Podemos entrar en ?l y, dependendiendo del tipo de cuenta que tengamos en el sistema podemos manipular ese ordenador como si fuese nuestro, tecleamos las ?rdenes como las teclear?amos en nuestro Linux.

Listening: Se dice que un ordenador est? listening si est? esperando conexiones, es decir, si acepta conexiones remotas. Cualquier ordenador que est? listening es vulnerable, nunca olvides esto.

Root: Es el super-usuario de un sistema determinado, lo cual quiere decir que puede manipular el ordenador sin ning?n tipo de restricci?n. Esto significa que puede ver/manipular/eliminar cualquier archivo de cualquier directorio del sistema. El root es, por supuesto, el amo del sistema, pero cualquier usuario que tenga acceso a ?ste, puede, si sabe c?mo, obtener este nivel. Es de hecho en lo que se basa el hacking.

IP: Es la combinaci?n de n?meros que nuestro proveedor de Internet nos asigna cada vez que conectamos y que nos identifica. Ejemplo: 194.179.106.2 (xxx.xxx.xxx.xxx). Cada usuario de Internet tiene una distinta. Los sistemas, por supuesto, tambi?n tienen la suya, pero es fija y por eso su Host tambi?n es fijo. Ciertos usuarios tambi?n pueden contratar una IP fija si lo desean en su proveedor.

Host: Es la manera f?cil de leer una IP, ya que est? formada por palabras y algunos n?meros. Ejemplo: ppp342.redestb.es.



Introducci?n al Hacking. ?Qu? es el hacking?

Si hici?semos esta pregunta a cien personas, quiz?s solo quince nos dir?an una definici?n adecuada y correcta. El Hacker es aquella persona capaz de irrumpir en un sistema cualquiera, sin permiso previo, para leer, modificar, o simplemente curiosear entre la informaci?n que hay dentro de este, y marchar sin dejar ning?n rastro. Un hacker no es aquella persona que anda por el IRC diciendo a todo el mundo: "Soy un hacker de la ?lite y te voy a romper el ordenador y la reparaci?n te va a costar ? " . Esas personas ni son hackers ni son ?lite, simplemente son personas que se aburren, que tienen complejos de inferioridad y que no saben en qu? invertir su tiempo.

?Para qu? sirve el hacking?

A parte de ser un entretenimiento que te hace aprender mucho sobre sistemas, es un reto intelectual que te somete a un esp?ritu de constante superaci?n. Es peligroso, s?, pero eso es parte del juego. El hacking te llena adem?s de amplios conocimientos de sistemas y telecomunicaciones en general. Aprendes a usar un sistema operativo alternativo (LINUX), descubres los errores de TCP/IP, los fallos de seguridad de los sistemas UNIX? Es en definitiva una manera de ampliar nuestros conocimientos si de verdad nos interesa estemundoque es la inform?tica.

Las normas del hacking

Hay muchos boletines en Internet que contienen las normas, los mandamientos, es decir, las pautas que tiene que seguir un buen hacker. Estas diez normas son las que yo creo m?s importantes:

No hay que hacer acciones que perjudiquen a terceras personas. Por ejemplo, borrar el contenido de un directorio de inicio de un usuario que no conocemos de nada.

No hay que dar nunca nuestros datos personales en ning?n sitio, solo a las personas que conozcamos y tengamos confianza en ellas.

No hay que hackear en sistemas gubernamentales. Nos encontrar?an f?cilmente. Las peque?as empresas y las universidades muchas veces no se permiten el lujo de buscarnos en el caso que nos dejemos nuestra IP en el sistema.

No hay que dar datos del sistema en el que estamos hackeando a nadie. ?No querr?s que otro hacker te robe el trabajo que llevas hecho?

Solo destruiremos aquella informaci?n que nos perjudique o que perjudique a alguna persona, no destruiremos nada si no tenemos ning?n buen motivo para hacerlo.

Modificaremos solo los archivos que borren nuestras huellas y los que nos permitan un futuro acceso.

Si nos detienen es porque hemos hecho algo mal, siempre que hayamos dejado intacto el sistema no tienen nada que alegar en contra nuestra, a no ser que hayamos tenido acceso a informaci?n muy privada, de sistemas muy importantes como la FBI, la NASA? entonces hay que contactar con un abogado. A un buen hacker no le caen nunca condenas grandes.

No hay que estar m?s de dos horas conectado a un sistema cuando se es root.

Hackearemos cuando estemos seguros de que el sysop del sistema no est? delante del ordenador (por la noche o en festivos).

No usaremos nukes, mail bombs, ni cosas por ell estilo para putear a otras personas, a no ser que tengamos un buen motivo para hacerlo. Es decir, no usaremos esos programas por simple diversi?n.


Lo b?sico del hacking

Ahora ya sab?s qu? es y para qu? sirve el hacking, y c?mo te tenes que comportar si quer?s ser buen hackers. Este punto aclarar? todas o casi todas las dudas que teng?s una vez llegado aqu?. Cada uno de ustedes tendr? una motivaci?n diferente respeto al hacking. Pero deb?s conocer las fronteras y los l?mites de este. Es decir, lo que pod?s y lo que no pod?s hacer sabiendo hackear.

Para empezar, no os hag?s ilusiones, no podr?s entrar en el ordenador de un amigo y manejar el prompt de MS-DOS como si estuvieras ah?. Entrar en un ordenador que no est? listening (esperando conexiones) es m?s dif?cil y se hace a trav?s de un puerto que muchos, casi todos los usuarios de Internet suelen tener abierto. Pero esto no lo voy a explicar porque la intenci?n del curso no es esta.

En este curso solo aprender?s a entrar en ordenadores UNIX, y que tengan al menos telnet o ftp en listening. No ote preocupes la mayor?a de ordenadores de universidades, ftp?s y dem?s usan UNIX,

solo unos pocos usan sistemas como Mac o NT.

Ahora es muy dif?cil poder hackear ordenadores de proveedores de Internet, ya no suelen tener el telnet nunca abierto.

"Este curso est? enfocado al hacking desde LINUX, que es el sistema UNIX que podemos tener m?s a mano. En el pr?ximo cap?tulo voy a explicar c?mo conseguir LINUX y c?mo instalarlo. Desde Win 98 se pueden hacer muchas cosas instalando programas que ya vienen preparados para estas funciones,
como ser scaner de puertos, buscadores de direcciones ip etc...."



Les gusto ???? sigan que el curso no termina...

HA!!!, recomienden la pagina a sus amigos.

ByE... ByE...

Cap?tulo 2.

Manejando Linux,


Qu? es LINUX

Iniciarse en el entorno LINUX/UNIX

Entender el entorno multiusuario UNIX

Otros ejercicios pr?cticos para LINUX


Si estas aca porque ya leiste el capitulo anterior

Lo que es en realidad el hacking

Para qu? sirve el hacking

C?mo se comporta un hacker


?Qu? es LINUX?
LINUX es la versi?n del sistema operativo multiusuario UNIX para PC. Se trata de un SO de dominio p?blico y totalmente gratuito que se distribuye por Internet y por revistas. Consulta el primer cap?tulo del curso introductorio al Linux en las paginas de lanusonline para obtener m?s informaci?n acerca de qu? es Linux y c?mo conseguirlo. As? mismo, en la pr?xima lecci?n te dare informaci?n m?s t?cnica sobre Linux as? como algunos de sus bugs m?s conocidos.

En este cap?tulo vamos a tratar a partir del Linux los comandos m?s b?sicos de los sistemas UNIX en general, el sistema de ficheros y de directorios, el sistema multiusuario de UNIX...

Consigue Linux y empieza a leer este cap?tulo.

Iniciarse en el entorno Linux
Antes que nada debes saber que para poder tener en un mismo disco los dos sistemas operativos
instalados o sea win y linux deberas particionar este y instalarle el LILO, que es un arranque dual
para que puedas elegir con que sistema queres trabajar

Despu?s de teclear la palabra Linux en el prompt del LILO veremos el sistema de arranque de este sistema, c?mo nos va detectando cada dispositivo, etc...

Finalmente aparecer? el prompt de inicio



"

Welcome to Linux 2.0.1

Host Login:

"

(Host es el host que hemos asignado a nuestro ordenador)

Cuando instalamos Linux entramos como root, porque por defecto la cuenta de root ya est? creada. As? que solo tenemos que entrar como root y ya estamos dentro, no nos pedir? ning?n password. Una vez dentro, vamos a establecer un password para que nadie m?s que nosotros pueda entrar como root. No seas lamers y busca un password realmente dif?cil de desencriptar, que no sea una palabra sola sino que sea una serie de letras y n?meros que no tengan sentido. Un buen root pone siempre un password de este tipo ya que los hackers suelen utilizar programas de desencriptaci?n asociados a diccionarios (palabras agrupadas seg?n temas) para desencriptar el password, pero todo esto lo explicar? m?s adelante.

Solo tenes que teclear:



# passwd root

Y a continuaci?n introducir el password que hay?s pensado. M?s adelante vamos a ver c?mo crear m?s cuentas y todo lo relacionado con el entorno multiusuario que es Linux.

Ahora echale un vistazo a lo que ten?s delante. S?, es como un MS-DOS pero con colores (depende de la distribuci?n). Las ?ltimas distribuciones incluyen, adem?s, un entorno gr?fico muy parecido a Windows 98, llamado X-Windows, que no voy a explicar c?mo instalar porque no es de vital importancia para hackear., pero si para conectarte a internet, porque aunque linux es muy bueno tiene sus grandes
complicaciones a la hora de manejarse en el entorno del promt

Sistema de ficheros y directorios
Antes que nada tenemos que entender c?mo son los ficheros en Linux y en UNIX en general. Pueden tener extensiones m?s extensas a tres caracteres, que es el m?ximo en MS-DOS y en Windows. Con un listado detallado (m?s adelante veremos c?mo hacerlo) obtenemos una informaci?n as?:

* 1 2 3
(.)nombre del fichero.(extensi?n) bytes _ _ _ _ | _ _ _ | _ _ _
Si aparece el punto delante del nombre del fichero es que es un fichero oculto.

* - aqu? puede haber una D, que nos indicar?a que se trata de un directorio, no de un fichero

En estas tres casillas aparecen los accesos que tiene el owner sobre este fichero. El owner de un fichero es el que lo ha creado y el que puede cambiar los accesos de ?ste. Los accesos de un fichero son:

R - Si aparece una R es que se puede leer

W - Se puede escribir, alterar, modificar

X - Si es ejecutable, se puede ejecutar

De este modo, si en las tres casillas del owner hay una R, una W y una X es que el propietario de este fichero tiene todos los accesos sobre ?ste, cosa que es normal.

Los accesos que tienen que pertenecen al mismo grupo que el owner. En sistemas UNIX los usuarios pueden clasificarse por grupos por el root.

Los accesos que tiene cualquier usuario del sistema sobre el fichero.

Es importante que adquier?s la costumbre de interpretar los accesos de cada fichero que quieras examinar. Cuando est?s hackeando tendras que conocer siempre tus posibilidades sobre un fichero determinado.

En cuanto al sistema de directorios, es parecido al de MS-DOS. Los directorios pueden variar de un sistema UNIX a otro, pero todos tiene estos:

/usr/ - es donde est?n las cuentas de inicio de cada usuario

/adm/ - directorio exclusivo para el admin del sistema

/root/ - directorio de inicio para el admin del sistema

Comandos m?s utilizados para manejar ficheros
- Cp - Este comando sirve para hacer copias de un fichero. Y esta es su sintaxis:



cp (fichero a copiar) (fichero destino)

As?, si queremos hacer una copia de un fichero llamado "hacking.13886" a uno que simplemente se llame "138" haremos:



# cp hacking.13886 138

El fichero a copiar sigue intacto, solamente hemos hecho una copia sin borrar el fichero original.

- Rm - Este comando sirve para eliminar uno o m?s ficheros. Esta es su s?ntaxi:



rm (fichero a eliminar1) (fichero a eliminar2) (etc)

Tambi?n podemos elliminar directorios con este comando. Con rm (directorio) eliminamos un directorio suponiendo que est? vac?o. Si a?adimos la opci?n -r podemos eliminar directorios llenos, incluso con subdirectorios.

- Cat - Este comando nos permite ver el contenido de un fichero sin editarlo. En un terminal sencillo (que no sea X-Windows), si el contenido es muy largo solo vamos a ver el final de este fichero. Podemos ver el contenido de varios ficheros a la vez, ya que su sintaxis es:



cat (fichero a ver1) (fichero a ver2) (etc)

- Mv - Con este comando podemos mover el contenido de un directorio a otro directorio. Podemos hacer lo mismo con dos ficheros, pero el fichero de inicio queda eliminado al mover todo su contenido al fichero de destino.



mv (directorio/fichero inicio) (directorio/fichero destino)

- Chmod - Nos permite cambiar los accesos de un archivo. Su s?ntaxis es algo complicada:



chmod (tipo de acceso)+(acceso) (fichero)

Tipo de acceso: Aqu? tenemos que escribir una letra, que nos servir? para especificar si queremos cambiar los accesos para todos los usuarios, para el owner, o para los del grupo:

(a)ll, accesos para todos

(o)wner, accesos para el owner

(g)roup, accesos para el grupo

Acceso: Aqu? tenemos que especificar cualquiera de estos tres accesos: R, W, X, que como ya sab?s son de lectura, de escritura y de ejecuci?n respectivamente.

Ejemplo: Si queremos cambiar el acceso del fichero host.equiv para que todos los usuarios puedan modificarlo (algo que no deb? hacer nunca) har?amos:



# chmod a+w host.equiv

- Find - Es un buen buscador presente en casi todos los sistemas UNIX que nos permite encontrar cualquier fichero. Esta es su sintaxis:



find . -name (raz?n de b?squeda)* -print

Naturalmente es un programa complejo y se puede usar de muchas maneras pero esta es la manera en que yo lo uso casi siempre. La raz?n de b?squeda es simplemente un trozo del nombre de un fichero o el nombre del fichero. Por ejemplo, si sabemos que hay un fichero que se llama lilo pero no sabemos como acaba y tampoco donde est?, pondremos:



# find . -name lilo* -print

Nos encontrar? varios ficheros con su ruta completa y decidiremos cu?l es el que est?bamos buscando, que en este caso ser?a lilo.conf



/etc/lilo.conf

- File - Este comando, en cualquier sistema UNIX nos permite obtener informaci?n b?sica acerca de un fichero, no el contenido del mismo. Podemos ver en pantalla la informaci?n de varios ficheros a la vez ya que su s?ntaxis es:

file (fichero1) (fichero2) (etc)

Comandos m?s utilizados para moverse por los directorios
- Pwd - Si escribimos pwd en el prompt, obtenemos la ruta completa del directorio en el que estamos. Si simplemente sale una / es que evidentemente estamos en la ra?z.

# pwd

/usr/

- Ls - Hace un listado de los ficheros del directorio activo. Si s?lo escribimos Ls, veremos los ficheros que son visibles. Con ls -a veremos el listado de todos los ficheros. Con ls -l veremos, adem?s todos los detalles de un fichero (excepto el contenido del mismo).

Atenci?n: En un sistema UNIX, hay ficheros visibles y ficheros ocultos. Los ficheros ocultos llevan delante un punto (.), esto es muy importante y debes aprenderlo. Haz siempre un listado con los par?metros -la para ver todos los detalles del directorio.

- Cd - En Linux podemos desplazarnos por los directorios igual que en MS-DOS, con el comando CD. Hay unas ligeras diferencias. Cuando queremos cambiar al directorio anterior en vez de escribir



# cd..

Unknow command

Tenemos que escribir:

# cd ..

#

Eso es, con un espacio entre los dos puntos y el comando CD.

En muchos sistemas UNIX, si simplemente tecleamos CD nos movemos al directorio de inicio.



# cd

# pwd

/root

- Mkdir - Con este comando podemos crear directorios. Funciona como el comando md de MS-DOS.

Entorno multiusuario UNIX
Cuando decimos que UNIX es un sistema multiusuario nos referimos a que es un sistema dise?ado para que pueda ser usado por usuarios distintos. As?, un sistema UNIX puede ser utilizado para que varios usuarios remotos (Internet) o locales (LAN, Ethernet) puedan conectarse a ?l y puedan estar dentro del sistema simult?neamente. Esto ya nos supone un problema, pues si nos paramos a pensar, en teor?a cualquier usuario que pudiese conectar con el sistema podr?a hacer cualquier tarea, cualquier acci?n como la har?a el propietario del sistema; en definitiva este usuario podr?a manejar a su antojo el ordenador, algo que sin duda el propietario del mismo no est? dispuesto a permitir. Por eso se crean una serie de accesos, de prioridades, para hacer m?s f?cil la convivencia entre los diferentes usuarios de un sistema UNIX (M?s adelante aprenderemos a cambiar nuestro acceso para hacer lo que precisamente el propietario del sistema no quiere que hagamos, manejarlo como lo har?a ?l).

As? pues, dentro de un sistema UNIX hay que diferenciar dos clases de usuarios:



1 - El usuario ordinario. Un usuario ordinario entra en el sistema gracias a una cuenta predefinida por el root, que consta de login y password, en un directorio de inicio. El login es el nombre por el cual los otros usuarios pueden identificarlo. El directorio de inicio es donde puede escribir o borrar ficheros, crear o borrar directorios, ejecutar programas... Este tipo de usuario puede ejecutar programas hechos por ?l ya sea en shell o en C y programas gen?ricos que cualquiera pueda ejecutar como es el ejemplo de un editor de texto. Generalmente no puede moverse de su directorio de inicio, lo que lo restringe de otras ?reas del sistema. Cada usuario ordinario tiene en su directorio un archivo llamado .profile que es como un AUTOEXEC.BAT de MS-DOS, contiene comandos que, cuando hace un login al sistema, se ejecutan. Esto es importante que lo sepas porque se pueden crear caballos de troya en archivos .profile.

El ejemplo de este tipo de usuario puede ser el del t?pico estudiante universitario que se conecta a un sistema UNIX para escribir documentos relacionados con su carrera, o si es un estudiante de inform?tica para aprender el entorno UNIX y saber programar dentro de ?l, etc..
hoy dia son muy pocos los sistemas que permiten programacion en sus entornos.

El directorio de inicio es visible por el root como /usr/login, donde login es el nombre del usuario, es decir, su login.

Podemos saber si somos un usuario ordinario si tenemos como prompt el signo:



$

Es decir, si antes de escribir un comando tenemos este signo.

Al escribir who nos debe salir nuestro login.



$ who

juan178

$

2 - El usuario root o, en su defecto, el usuario con acceso de root. Tambi?n llamado superusuario, es el usuario que tiene acceso a todo el sistema sin restricci?n alguna. En un principio solo el propietario del sistema puede acceder como root a su propio sistema, pero los hackers basan muchas veces sus ataques en intentar conseguir accesos de root a partir de una cuenta ordinaria. Es decir, que en cualquier sistema UNIX se puede llegar a conseguir acceso de root si se es lo suficientemente h?bil. El principal problema de los sistemas UNIX desde mi punto de vista es que el root, como cualquier usuario tiene su propia cuenta. De esta manera podemos llegar a alterarla o incluso a crear otra cuenta con acceso de root. M?s adelante veremos todo esto.

Sabremos si somos root si tenemos como prompt este signo:



#

Y si a?n no nos lo creemos podemos escribir el comando who.



# who

root

#

Las cuentas, el fichero passwd
Ahora ya sabes que hay dos tipos de usuarios bien distinguidos en un sistema UNIX. Si un usuario puede entrar en un sistema es porque tiene una cuenta, esto lo entendemos, ahora bien ? C?mo sabe el sistema qu? usuarios pueden entrar y cu?les no ? A trav?s del fichero passwd. Localic?moslo. El fichero passwd se encuentra, en la mayor?a de sistemas UNIX en el directorio /etc. Es s?lo modificable por el root, pero le?ble por todos los usuarios. Eso es un gran fallo ya que se puede aprovechar muchas veces para desencriptar contrase?as, algo que vamos a ver en el cap?tulo 4.

El fichero passwd contiene las cuentas del sistema, es decir, contiene la informaci?n de todos los usuarios que pueden hacer login al sistema, independientemente de su acceso (ordinario o root).



Es interesante que empieces a meterte en sistemas que acepten cuentas an?nimas (por ejemplo, FTP's) para que veas c?mo es el fichero passwd. La mayor?a de FTP's dejan acceder como anonymous al sistema, sin ning?n password. Consulta el final de esta unidad para hacer este ejercicio.

Sabemos, pues, que el fichero password lleva las cuentas de todos los usuarios del sistema. Cada linea del fichero es una cuenta, y en esta linea hay representados estos elementos:

login del usuario (ya sabemos lo que es)

password del usuario (no te iluciones nunca aparece tal como es)

nombre del usuario (en algunos sistemas) o n?mero del usuario (en otros sistemas)

grupo al que pertenece el usuario

directorio de inicio del usuario

shell del usuario


En otra unidad veremos muchas m?s cosas sobre el fichero passwd, y aprenderemos a crackearlo y a aprovecharlo.

Desde nuestro LINUX podemos crear cuentas, con el comando adduser. Simplemente hay que teclear adduser y ir contestando a las preguntas que va haciendo.

Ejercicios para LINUX
Ahora, conviene que vayas practicando con tu LINUX. Te recomiendo que hagas estos ejercicios:

1 - Crea directorios y ficheros. Por ejemplo, puedes empezar por crear un directorio con tu nombre y empezar a escribir un diario de tus experiencias como hacker.

Para editar o crear ficheros puedes usar el editor "vi". Simplemente tienes que escribir "vi" y el nombre de fichero que quieras crear/editar. Inicialmente, con la letra A empiezas a escribir. Con ESC activas el modo de no-escribir con el que puede borrar l?neas apretando dos veces la tecla R, con ":wq" salvas lo que has escrito y con ":q!" quitas sin salvar.

Pero mejor aprende a usar el editor ED, porque el Vi no est? en todos los sistemas UNIX.

2 - Configura tu Linux para el acceso a Internet. Esto puedes conseguirlo buscando informaci?n al respeto. busca por Internet, seguro que encontrar?s programas o informaci?n para hacerlo.

3 - Haz sesiones en FTP's. Esto lo puedes hacer escribiendo FTP y el host de la m?quina en la que quieres entrar. Muchos FTP's aceptan usuarios an?nimos, as? que no hay problema. Busca y b?jate el archivo passwd y empieza a mir?rtelo.

4 - Curiosea sanamente en tu LINUX. Esto quiere decir que no toques algo si no sabes lo que es, simplemente ded?cate a moverte por los directorios y a observar qu? hay. Siempre con mucho cuidado.

5 - Crea cuentas, con el comando adduser.

Y??? lo estas siguiendo ? te gusto el capitulo 2

No te muevas de esa silla que hay 2 cap?tulos m?s.....

Cap?tulo 3.


Breve an?lisis a los sistemas Unix
En esta unidad aprendera


M?s sobre los sistemas UNIX

Tipos de sistemas UNIX

Caracter?sticas de los sistemas UNIX m?s importantes

Si est?s aqu? se supone que sabes:

Lo que es en realidad el hacking

Para qu? sirve el hacking

C?mo se comporta un hacker

Qu? es LINUX

Iniciarse en el entorno LINUX/UNIX

Entender el entorno multiusuario UNIX

Otros ejercicios pr?cticos para LINUX


Bien, en este minicap?tulo vamos a aprender algo sobre los sistemas UNIX universales, casi todos los que existen en Internet. Inicialmente esta informaci?n no te ser? de gran utilidad, pero m?s adelante si.


Sistemas UNIX
Desde los or?genes de Internet, este ha estado formado b?sicamente por m?quinas UNIX. Se trata de un sistema multiusuario que es usado, b?sicamente, como servidor. As?, podemos encontrar m?quinas UNIX en servidores de FTP, en servidores de correo electr?nico, en servidores de WWW, en servidores de IRC... Pero dado su entorno multiusuario es tambi?n usado mucho en Universidades, Bancos, as? como en algunas entidades gubernamentales. Actualmente el n?mero de sistemas UNIX en Internet est? disminuyendo y est? aumentando el de sistemas NT, aunque UNIX sigue siendo claramente superior (alrededor del 65% de m?quinas de Internet son UNIX). El otro 35%, lo forman b?sicamente sistemas como el NT, ya mencionado, aunque tambi?n existen otros como VM/CMS, VM/ESA, VMS...


Clasificaci?n de sistemas UNIX
Inicialmente podemos dividir los sistemas UNIX seg?n el tipo (BSD, System V, etc...). Pero en este cap?tulo vamos a hacer una distinci?n seg?n los fabricantes de cada sistema UNIX:

AIX - Fabricado por IBM

SunOS y Solaris - Fabricados por Sun

HP-UX - Fabricado por Hewlett Packard

Ultrix y OSF/1 - Fabricados por DEC


Aunque Linux no ha estado fabricado por ninguna multinacional, he cre?do conveniente incluirlo en esta lista.

Linux - UNIX para PC, no ha sido fabricado por ninguna multinacional


Estos son los m?s importantes, despu?s hay otros como el IRIX, el Convex, el UnicOS... de menor proliferaci?n.

Voy a describir cinco de estos sistemas: AIX, SunOS, Solaris, Linux y HP-UX.



AIX:

AIX es la versi?n UNIX de IBM. Desde que sali? ha sido de los sistemas que m?s bugs ha presentado. Para que tengas una idea, la versi?n 3.25 ten?a fallos tan gordos como estos:

1 - El comando lquerypv pod?a ser utilizado para leer cualquier archivo:



$ lquerypv -h /etc/passwd

root:Xds4cdXcMoV:0:0::/root:/bin/bash

...

2 - Este bug habla por s? solo:



$ echo "badboy::0:0:blablabla:/:/bin/sh" >>/etc/shadow

$ telnet localhost

login: badboy

# whoami

root

3 - Otro bug:

$ rlogin localhost -l -froot

# whoami

root

4 - Y otro bug que permite enROOTarse:



$ tproof -x /bin/sh

Naturalmente, existen parches para estos bugs tan tontos.

La versi?n 3.25 fue substituida por la 4.1, aunque esta tambi?n presenta errores (como todos los sistemas). Estos son los cambios de la 3.25 a la 4.1:



Versi?n 3.25 y 4.1.x

Tanto la versi?n 3.2.5 como la 4.1 de AIX son compatibles con los tres sistemas IBM RISC System/600 (POWER, POWER2 y PowerPC 601). La versi?n 4.1, adem?s, incorpora compatibilidad con sistemas PowerPC.

En la versi?n 4.1 se incluyen los estandartes de programaci?n POSIX 1003.2 y 1003.2a, FIPS 151-2 y XPG4.

Las librer?as TCP/IP permiten el uso de BIND y NIS para resolver direcciones IP.

En la versi?n 4.1, el IP forwarding est?, por defecto, desactivado.



SunOS
Se trata de un sistema de la casa Sun. Estos son sus fallos:

El SunOS, es, inicialmente vulnerable a IP Spoofings, si la opci?n Source routing est? activada. Aunque, para que SunOS sea totalmente seguro a un ataque de spoof, se tienen que introducir ciertas modificaciones en el kernel referentes a IP forwarding. Por eso, probablemente en este sistema una t?ctica muy aconsejable es el IP Spoofing.

SunOS Tambi?n presenta fallos en la configuraci?n NFS, a no ser que est? activado el NFS por monitoring (por defecto no lo est?).

Un fallo muy importante es que, inicialmente, la librer?a ruserok(3) permite el acceso a .rhosts y a hosts.equiv con cualquier comando "r".

El fichero /dev/eeprom es inicialmente le?ble por cualquier usuario, pero este suele ser un bug que casi todos los admins suelen solucionar. Otro bug tonto: muchos admins dejan activada la cuenta "sync" sin password.


Linux
Linux es el famoso sistema operativo disponible para PC y para otras plataformas. A?ade a UNIX un SO de 32 bits, soporta multitud de dispositivos (PCI, SCSI...) y es capaz de leer FAT32 y NTFS. Se trata de un sistema especialmente estable y fiable, poco propenso a colgarse. Pone a disposici?n del usuario el c?digo fuente del Kernel. Funciona en un 386 con 4 de RAM, gracias a que s?lo utiliza los recursos que necesita.( ojo esto ya ha quedado muy lejos, dado que las ultimas versiones de linux consumen tantos o mas recursos que windows, por ejemplo la red-hot 6.2 la instalacion minima requiere 500Mg. la de Corel una de las mas peque?as y parecida a win 300 Mg, si queres probar con una distribucion viejita que si cabe en peque?as pc tenes que instlarte la red-hot 5.2, pero te diria que te vas a venir loco para navegar dado que trae fallos ( esa es la manera que yo interpreto) en el netscape Es multitarea y incorpora un entorno gr?fico parecido a Windows 98, llamado X-Windows. Hay diferentes distribuciones de Linux, y no todas son gratuitas, las m?s importantes (gratuitas) son:

Slackware : Se puede conseguir en ftp.cdrom.com:/pub/Linux/slackware.

Debian: Para conseguirla, se puede hacer un ftp a ftp.debian.org o en slug.ctv.es.

Red Hat: ftp.redhat.com para conseguirla.


Como principales bugs voy a destacar:

En Debian Linux 2.0, /usr/bin/suidexec permite nivel de root a cualquier usuario.

En cualquier sistema Linux se puede sobreescribir un buffer en /usr/X11/bin/color_xterm para obtener nivel root.

En cualquier sistema Linux se puede exploitar la librer?a vsyslog() 5.4.38 para obtener root.

Aunque es un bug muy viejo, se puede obtener nivel root sobreescribiendo un buffer en /usr/bin/splitvt

En distribuciones RedHat de Linux, se puede conseguir nivel root sobreescribiendo un buffer en /usr/bin/zgv


Solaris
Se trata de un sistema mejorado de la misma casa que SunOS (por supuesto, SUN). Las ?ltimas versiones de este sistema se caracterizan por contener un mejorado sistema de WebNFS.

Pero como todo sistema, Solaris tiene tambi?n muchos bugs. Los m?s importantes son:

Se pueden crear o borrar cualquier tipo de ficheros como si fu?semos root usando el statd (s?lo en la versi?n 2.5.1)

el sistema se cae si el syslog recibe un mensage y no puede resolver la IP que lo ha producido.

En cualquier sistema Solaris 2.x, podemos petar o reiniciar el sistema con un ping flood (enviando una gran cantidad de paquetes de manera que se quede bloqueado)

Se pueden aprovechar los archivos /usr/bin/ps y /usr/ucb/ps para conseguir acceso root en cualquier sistema Solaris

As? mismo, sobreescribiendo un b?fer determinado en /usr/bin/fdformat tambi?n podemos conseguir root en cualquier Solaris 2.x

Tambi?n se puede aprovechar y explotar /usr/lib/nis/nispopulate en los sistemas Solaris 2.5

Sobreescribiendo un b?fer determinado en el archivo passwd podemos enROOTarnos, s?lo en la versi?n 2.5, igualmente, en esta versi?n podemos explotar /usr/openwin/bin/kcms_calibrate para obtener root


HP-UX
HP-UX ha sido fabricado por la conocida multinacional Hewlett Packard. Se han hecho multitud de versiones de este sistema, tanto es as? que una de las ?ltimas versiones es la 9.01. A diferencia de otros sistemas UNIX, presenta pocos bugs, de los cuales destaco:

SAM (System Administration Manager) puede ser usado en cualquier sistema HP-UX para modificar archivos.

En la versi?n HP-UX 9, el programa rpc.mountd contiene un bug que puede ser explotado para obtener privilegios NFS.

Cap?tulo 4

Entrar en un sistema y "enrootarse"

En esta unidad aprender?s:
C?mo recoger informaci?n del sistema al que queremos entrar
T?cnicas para entrar sin tener una cuenta en el sistema
C?mo conseguir root dentro del sistema
Qu? hacer una vez se es root en el sistema
C?mo asegurar el futuro acceso al sistema una vez se es root

Si est?s aqu? se supone que sab?s:

Lo que es en realidad el hacking

Para qu? sirve el hacking

C?mo se comporta un hacker

Qu? es LINUX

Iniciarse en el entorno LINUX/UNIX

Entender el entorno multiusuario UNIX

Otros ejercicios pr?cticos para LINUX

Mucho sobre sistemas UNIX

Clasificaci?n de sistemas UNIX

Caracter?sticas de los diferentes sistemas UNIX


Bien, estamos ante la lecci?n clave de este curso. Para entenderla, es esencial que hayas leido las lecciones anteriores, especialmente la 1 y la 2.


Entrar en un sistema:
Esta es la acci?n principal y primordial para hackear.

La acci?n de entrar en un sistema se puede dividir en dos fases :

Recopilacion de informacion

Incursi?n en el sistema:

o bien

A trav?s de una cuenta shell

A trav?s de otros m?todos

Pero tambi?n tenemos que saber que la entrada en un sistema puede ser, seg?n el nivel de privilegio:

Directamente como root

Como usuario normal

como usuario an?nimo (pero esta ?ltima queda descartada ya que como usuario an?nimo no podemos hacer pr?cticamente nada.)

As? pues, antes de entrar en un sistema (aunque ya tengamos una cuenta shell), tenemos que pasar por la etapa de recopilacion de informacion


1 - Recopilacion de informaci?n
La informaci?n que debemos saber de cualquier sistema la vamos a dividir en:

Informaci?n primordial

Informaci?n extendida

Informaci?n complementaria

La informaci?n primordial la tenemos que saber sea como sea, si no, ya nos podemos olvidar del sistema y buscarnos otro. La informaci?n extendida nos ser? de utilidad m?s adelante, y la complementaria... bueno, siempre va bien tenerla.


Informaci?n primordial: cu?l es y c?mo se consigue
La informaci?n primordial de cualquier sistema es qu? Host/IP tiene, as? como la versi?n de UNIX que usa. Si tenemos el host y queremos saber la IP, basta con teclear:



# nslookup

Una vez sabemos el Host/IP de un sistema, tenemos que hacer un telnet a ?ste y observar qu? versi?n de UNIX usa. El nombre del sistema nos basta para la informaci?n primordial (si es SunOS, si es Solaris, si es Linux, etc...).



# telnet
SunOS v3.25
login:

Informaci?n extendida: cu?l es, para qu? usarla y c?mo se consigue
Al hacer el telnet, no estar?a mal que apareciese qu? versi?n (sea el UNIX que sea) est? usando. Es un dato que puede ayudarnos a elegir exploits para usarlos m?s adelante.

Otro dato que nos puede ayudar (y mucho) es la versi?n de Sendmail que usa. Esto lo conseguimos haciendo un telnet al puerto 25 del host.



Nota: si el sistema que queremos hackear no permite hacer un telnet al puerto 25, deberemos descartar cualquier ataque v?a Sendmail.

Para hacer un telnet al puerto 25 del host, escribimos simplemente esto:



# telnet 25

Y nos aparecer? una l?nea con la versi?n del Sendmail.

Otra informaci?n extendida importante es saber detectar si el host tiene alguna actividad NFS. NFS (Network File System) es un sistema por el cual un ordenador puede compartir directorios con otros ordenadores, de manera que estos pueden manejar dichos directorios como si fuesen suyos. En muchos sistemas UNIX, el NFS est? mal configurado, lo que supone un fallo de seguridad. Para saber si este sistema recibe directorios NFS, y si es que s?, cu?les son, escribiremos:



# showmount -e

Podr?amos considerar importante m?s informaci?n, pero con esta ya tenemos de momento suficiente.


Informaci?n complementaria
Siempre va bien saber, por ejemplo, qu? tipo de sistema es (si es gubernamental, si es una universidad...), en qu? sitio geogr?fico est? situado, cu?nto tiempo lleva on-line, qu? servicios ofrece, y un largo etc?tera.

Hay muchos programas como por ejemplo el nmap, que se usan para saber que tipo de sistema operativo se esta usando, este programa tiene la caracteristica que nos dice hasta que version es, por
ejemplo linux red-hot 6.2 , solaris 6.0 etc,tiene a su ves funciones que no permiten al otro sistema leer
nuestra direccion ip puesto que usa una tecnica muy avanzada para peticionar la informacion, pero por
el momento no te preocupes por esto ya que deberas saber lo basico.


2 - Incursi?n en el sistema
Bien, ahora que ya tenemos suficiente informaci?n vamos a tratar algunos de los m?todos que se suelen usar para entrar en un sistema (los m?s f?ciles, por supuesto).

Si ya tenemos una cuenta shell, nos basta con entrar v?a telnet, poner el login y el password y ya estamos dentro. Si este es el caso, deberemos pasar a ver c?mo podemos obtener root.

Pero si estamos en nuestro ordenador y no tenemos ni siquiera un login,,y no sabemos qu? hacer para poder entrar, antes que nada probaremos los m?todos que s?lo funcionan de vez en cuando, m?todos que pueden parecer anti-elitistas, pero que muchas veces nos ahorran esfuerzo mental si, de casualidad, funcionan, claro est?.

Un ejemplo puede ser un rlogin . Por incre?ble que parezca, mi primera incursi?n en un sistema fue gracias a esta t?ctica. Simplemente escribimos:



# rlogin

Y hay una probabilidad entre 100 de que entremos. Pero lo bueno es que entramos directamente como root, que fue lo que a mi me sucedi?. Lo que ocurre es que, al no especificar con qu? nombre (login) queremos entrar en el sistema, el comando entiende que queremos entrar como root, y como no hemos puesto password, entiende que el password es simplemente, ENTER (o sea, nada). En otras palabras, que hemos entrado con la cuenta de root sin asignar password, el root no tiene aun un password asignado, cosa que es pr?cticamente imposible (para qu? negarlo) ? Pero nunca est? de m?s probarlo !

Y otra t?ctica de este tipo consiste en hacer lo mismo, pero usando las "default counts", que son las cuentas que vienen por defecto en cualquier sistema UNIX, y, a no ser que el root les cambie el password o las desactive, se pueden usar. Esto es bueno probarlo porque algunas veces el root solo actualiza las cuentas que usa y las otras las deja activadas. Las default counts, en sistemas UNIX son:



Login / Password

admin - admin
sysadmin - sysadmin o admin
unix - unix
uucp - uucp
rje - rje
guest - guest
demo - demo
daemon - daemon
sysbin - sysbin
bin - bin




Las cuentas bin son muy interesantes ya que permiten la manipulaci?n de muchos ficheros importantes como el fichero passwd.

adm - adm
nuucp - nuucp
lp - lp

Si con ?stas no funciona, entonces tenemos que pensar un poco m?s. Vamos a ver, si el sitio al que nos conectamos se llama por ejemplo "Daddy's INC", no estar?a de m?s probar a entrar como daddys, o daddy.

Algunos sistemas UNIX tienen una cuenta llamada test abierta, sin password, o con el mismo login y password (test/test).

En unos pocos sistemas UNIX, podemos ejecutar algunos comandos en el prompt de login. Estos pueden ser b?sicamente tres:



who
rwho
finger

Con lo que podemos saber si hay alguien dentro del sistema. Y, si hay alguien, ya tenemos el login de un usuario. Imaginemos que hay un tal "pepe" conectado. Probablemente, ser? de esos que prefiere conectar r?pido al sistema y no le ha pasado nunca por la cabeza que alg?n hacker pueda usar su cuenta. As? que no estar?a de m?s intentar entrar como pepe y poner como password pepe, pepe1, pp, o lo que se nos pase por la cabeza...

Bueno, como seguramente no hemos entrado en el sistema, ya nos podemos quitar las lega?as y pasar a hacer algo m?s serio. Si seguimos fuera del sistema, tenemos varias opciones:

Explotar el Sendmail

Explotar el NFS mediante un IP Spoofing

Lo primero, consiste en usar el sistema de Mail del ordenador para obtener privilegios de root. Esto se hace aprovechando los fallos que presenta seg?n la versi?n que use (ver informaci?n extendida). As? que a partir de ahora ya podemos empezar a usar exploits para hacer nuestras tareas m?s f?ciles. Muchos no sabran de lo que estoy hablando. As? que vamos a explicar lo que es un exploit.



Un exploit: no es m?s que un programa que aprovecha los bugs de un sistema UNIX determinado. Hay, por supuesto, muchos exploits, para cada tipo de sistema, y diariamente van saliendo nuevos seg?n los sistemas se actualizan y se van encontrando nuevos fallos. Los buenos hackers saben programar sus propios exploits, pero de momento vamos a usar los que ya est?n hechos. Una direcci?n donde podemos encontrar muchos es: www.rootshell.com. Los exploits est?n programados en C o en shell. Y, dentro de la programaci?n en shell podemos encontrar diferentes tipos, seg?n el tipo de shell en que se base (BASH, PERL...). Una vez tenemos el exploit que queremos usar, debemos editarlo, leer las instrucciones que contenga (muchos contienen lineas de texto haciendo referencia a las maneras que hay de usarlo, c?mo hay que usarlo para que funcione de una manera u otra, etc) y salvar s?lo la parte ejecutable (ya sea en shell o en C). Si est? en C tendremos que compilar el exploit. Si est? en shell, basta con darle permiso de ejecuci?n y ya est? listo para usar. Poco a poco ir? hablando de las diferentes maneras de usar los exploits.

Ahora que ya sabemos lo que es un exploit, podemos ir a cualquier site y bajarnos todos los que haya referentes a la versi?n de Sendmail que usa este sistema, compilarlos (si necesitan ser compilados), y usarlos.

Realmente, el sistema de Mail de UNIX es muy ?til para hacer fake mails, una vez dentro del sistema. Podemos hacernos pasar por cualquier direcci?n de correo existente.



Es importante la organizaci?n de los exploits en el disco duro, la mejor manera es clasificarlos seg?n: qu? tipo de exploit son y a qu? sistema hacen referencia.

Bueno, los exploits locales son una buena manera de entrar directamente, pero no siempre funcionan, sobretodo porque los mismos exploits suelen tener bugs y tenemos que saber modificarlos, pero por esto de momento no te preocupes. Hay, por supuesto, t?cnicas m?s avanzadas para entrar en sistemas. Una de ellas es el IP Spoofing.

El IP Spoofing nos permite cambiar nuestra IP. pero ? Qu? ganamos con eso ? Bien, supongamos que el sistema al que queremos entrar est? en una subred, y, por lo tanto, se comunica con sistemas trusteds, sistemas que son "colegas". ? Qu? quiere decir que son colegas ? Pues que est?n comunicados entre s? y que por lo tanto tienen ciertos privilegios (tienen acceso a directorios compartidos v?a NFS). Los programas de IP Spoofing lo que hacen es (de manera simplificada), intentar comunicar con un sistema trusted (colega del sistema al que queremos entrar), hacer que no responda y en ese intervalo de tiempo alterar nuestra IP para hacernos pasar por ese sistema, de manera que ya tenemos ciertos privilegios en el sistema en el que queremos entrar.

Lo primero que tienes que hacer para poner en pr?ctica esta t?ctica es bajarte un buen programa de IP Spoofing. Mejor b?jate varios por si alguno no funciona. Ahora tienes que saber cu?les son los sistemas trusteds del sistema al que quieres entrar. En otras palabras, qu? estructura NFS tiene. Para esto escribe lo siguiente:



# showmount -e

Por otra parte, esto ya lo tendr?as que haber hecho al recopilar la informaci?n del sistema.

Y, con estos datos, ya puedes ejecutar el programa de IP Spoofing, que seguramente lo har? todo ?l solito. No olvides compilarlo (si est? en C) y quitar las instrucciones.

En teor?a con todas estas t?cnicas puedes pasarte un buen rato intentando entrar en un sistema. He dejado muchas t?cnicas por explicar y las que he descrito las he descrito muy por encima, porque considero que un hacker novicio ha de empezar siempre teniendo shells. Es decir, que ya conozcas de antemano alguna cuenta en ese sistema, eso facilita much?simo las cosas. La ?nica manera de conseguir una sino puedes ni siquiera entrar de forma an?nima en un sistema es utilizar la ingenier?a social. Si conoces el lugar f?sico en el que est? ubicado el sistema, tienes que relacionarte con la gente que accede a ?l, robar papelillos o buscarlos en la papelera, espiar, hacer lo que sea hasta conseguir una cuenta en el sistema. El IRC puede ser un buen medio, pero tambi?n tienes que saber pedir las cosas. Internet, en definitiva, es un buen medio. Alguna que otra p?gina encontrar?s con shells. El fake mail puede ser tambi?n ?til, hacerte pasar por alguna direcci?n importante de un proveedor de internet y enviar un mail a un usuario de ese proveedor para de alguna manera averiguar su login y password, aunque para eso tienes que estar antes en un sistema UNIX, y no todos los sistemas UNIX permiten hacer fake mails, o sea que esta t?cnica queda descartada. Pero si buscas informaci?n al respecto no te estar? de m?s.


Conseguir ROOT una vez dentro del sistema
Bien, si hemos conseguido finalmente entrar en el sistema con shell de usuario ordinario, tenemos muchas cosas que hacer. Lo primero que querremos hacer es, por supuesto, ver qu? posibilidades nos ofrece nuestra cuenta.

1 - Hacemos un listado de nuestro directorio de inicio

2 - Miramos qu? programas colectivos podemos ejecutar

3 - Echamos un vistazo al archivo .profile

Nuestro directorio de inicio, dependiendo de en qu? tipo de ordenador estemos estar? generalmente ocupado por programas en C o documentos relacionados con carreras universitarias (si estamos en una universidad). Conviene no modificar ninguno de estos elementos, porque el usuario real de esta shell se dar?a cuenta de que la fecha ha cambiado. Y a?n peor si se nos ocurre borrarlos. Simplemente les echamos un vistazo (si nos interesa, claro).

Ahora ejecutamos el comando help para ver qu? programas colectivos podemos ejecutar (editores de texto, programas de mail, etc...). Y por ?ltimo, no nos ir? mal saber qu? hay en nuestro .profile, y, si tenemos que modificarlo, no tenemos que olvidar volver a poner la fecha original (con el comando touch).

Despu?s tenemos que intentar movernos del directorio en el que estamos, a ver si podemos explorar otras ?reas del sistema. Si no podemos, no hay que desesperarse. Quiz?s s? podemos leer ficheros del sistema aunque no podamos movernos del directorio, por eso tenemos que probar a hacer esto:



$ cat /etc/passwd

Si estamos de suerte y sale algo, pues grabamos la informaci?n en un fichero nuestro.



$ cat /etc/passwd >> passwd

Y ya tenemos el archivo passwd.

Ahora vamos a mirar m?s archivos importantes



$ cat /etc/hosts

Este archivo te mostrar? todos los sistemas que est?n en la subred del sistema en el que est?s. Esto te puede ser ?til porque, si te cierran la cuenta aqu?, probablemente puedas intentar entrar en alg?n sistema de la misma subred con la misma cuenta. Si te interesa, salva esta informaci?n en otro archivo.

Ahora vamos a ver qu? podemos hacer con el archivo passwd.

Como ya sabes, este fichero contiene las cuentas del sistema. Tambi?n sabes qu? elementos contiene. Cuando dije que conten?a el password del usuario dije que nunca aparec?a tal y como era. El password puede aparecer de varias formas:

Shadow
Cuando el password est? shadow, en realidad se encuentra en otro archivo que se llama shadow, que no es visible m?s que por el root. En este caso no podemos hacer nada. Aparece shadow si aparece como un asterisco o una x:



Anastasio:*:1500:10:Anastasio Fernandez:/usr/anastasio:/bin/sh
Anastasio:x:1500:10:Anastasio Fernandez:/usr/anastasio:/bin/sh

Encriptado
El password est? encriptado si est? formado por una combinaci?n muy extra?a de car?cteres. Esta combinaci?n no es el password en s?, sino el password encriptado. En este caso s? podemos hacer algo, es m?s, tenemos muchas posibilidades de descubrir de qu? password se trata. Lo que tenemos que hacer es bajarnos un buen desencriptador de passwords. Yo suelo usar el John The Ripper, es un desencriptador muy bueno. Los desencriptadores suelen funcionar intentando asociar una serie de palabras agrupadas por temas a los passwords encriptados. Estas agrupaciones se llaman diccionarios y tambi?n se pueden bajar. Aunque, si queremos desencriptar bien las contrase?as hay algunos desencriptadores que hacen una desencriptaci?n completa, sin usar ning?n diccionario, prueban todas las combinaciones posibles. Lo malo que tiene este sistema es que el proceso de desencriptaci?n puede tardar muchas horas, pero vale la pena sobretodo si tienes un archivo de passwords con una cuenta root encriptada.

Los desencriptadores, por supuesto, funcionan off-line. As? que lo que tienes que hacer si has conseguido el archivo de contrase?as encriptado es desconectar y probar a desencriptarlo.

Una cuenta encriptada tiene este aspecto:



Anastasio:Mo54Wasl6H:1500:10:Anastasio Fernandez:/usr/anastasio:/bin/sh

Normal
Si encuentras alguna cuenta as?, te mereces un premio, porque pr?cticamente es imposible de encontrar. Simplemente la contrase?a se muestra tal cual es.



Anastasio:juana:1500:10:Anastasio Fernandez:/usr/anastasio:/bin/sh

Sin password
En este caso no hay password, para acceder con esta cuenta simplemente hacemos telnet, ponemos el login y ya estamos dentro.



Anastasio::1500:10:Anastasio Fernandez:/usr/anastasio:/bin/sh

Nota: Hay que tener en cuenta que si nos encontramos un espacio en blanco, un asterisco o un signo de admiraci?n delante del password, la cuenta est? inhabilitada temporalmente, eso significa que el acceso del usuario al sistema ha sido restringuido por el admin (? o por un hacker !).

Bueno, crackear el archivo password es una posibilidad a tener en cuenta para conseguir acceso root, averiguando cu?l es la contrase?a que usa el root. En el hipot?tico caso de que lleguemos a saber cu?l es la contrase?a del root, lo que tenemos que hacer es, ante todo, no cambiarla (una vez estemos dentro como root). Despu?s, pasar a mirar la parte de esta unidad referente a qu? hacer cuando se es root.

Si lo del archivo passwd no ha resultado, vamos a pasar a intentar buscar defectos en el sistema en el que estamos. Ya podemos ir preparando los exploits que necesitemos. Ahora bien, ? Con qu? criterio hay que elegirlos ? Los exploits que ejecutes en el sistema tienen que cumplir siempre estas condiciones:

1 - La m?s trivial, que hagan referencia al sistema UNIX en el que est?s. No ejecutes un exploit para HP-UX si est?s en un Solaris.

2 - Que hagan referencia a la versi?n exacta del sistema UNIX en el que est?s. De una versi?n a otra se corrigen los errores, por lo tanto un exploit para AIX 3.25 no funcionar? en un AIX 4.x

3 - Que sean lo m?s nuevos posibles. Los exploits aparecen a medida que se van encontrando los errores en los sistemas. Por lo tanto, hay m?s posibilidades que el admin del sistema no haya tenido tiempo a parchear el bug al que haga referencia el exploit. En ciertos sites como rootshell.com aparecen exploits nuevos cada mes.

4 - Que hagan lo que necesitas que hagan. Leete qu? es lo que hacen, inicialmente te interesa ganar acceso root, pues busca solo los que hagan esto. No te interesar?, por ejemplo, hacer caer el sistema, ni colocar un sniffer. Tambi?n habr?n exploits que para ejecutarlos necesitar?s ser root en el sistema ? Tampoco te interesan !

No todos los exploits son iguales, eso es algo que ya hemos comentado antes. Antes he mencionado la palabra exploit local. Llegados a este punto, tienes que entender la diferencia entre exploit local y exploit remoto:

- Exploit local: tanto si est? en C como en Shell, tiene que ejecutarse sin estar conectado a ning?n sistema (? pero s? a Internet !).

- Exploit remoto: Si est? en C, hay que subir el c?digo fuente al sistema y compilarlo DENTRO del sistema. Una vez compilado se ejecuta. Si est? en Shell simplemente hay que subirlo al sistema y ejecutarlo dentro del sistema.

Ahora vamos a ver c?mo podemos poner a punto nuestro exploit. Debes seguir este proceso:

1 - Descomprime el exploit si est? en formato .tgz. Esto lo puedes hacer con:



# tar xfvz .tgz

2 - Edita el exploit.

Te encontrar?s con que algunos exploits no son m?s que un archivo de texto explicando c?mo aprovechar un bug. Si este es el caso, l?ete cuidadosamente el archivo y apunta en un papel lo que te diga que tienes que hacer (normalmente te dir? que usando un comando de tal manera puedes conseguir root o leer ciertos archivos...). Otros exploits ser?n shellscripts, y al principio habr?n las instrucciones. Tienes que le?rtelas bien, y guardar en otro archivo solo el shellscript (quitando las l?neas de texto que sobren). Para poder ejecutarlo tienes que darle permiso de ejecuci?n. Otros ser?n programas en C, en este caso si hay instrucciones, estas son ignoradas al compilar, as? que no hay problema. Ya sabes que si es un exploit remoto tienes que subir el c?digo al sistema (esto puedes hacerlo a trav?s de una sesi?n FTP, usando el mismo login y el mismo password que para la sesi?n telnet), y una vez dentro, compilarlo (haciendo una sesi?n telnet) usando esta l?nea:



$ gcc .c

Y el resultado de esta operaci?n ser? un archivo llamado a.out, que tienes que renombrar a tu gusto ( o ejecutar directamente con ese nombre ).

Hay exploits que son una mezcla entre C y shellscript, es decir, que una parte est? en C y otra en shell. En este caso tienes que separar las dos partes en dos archivos distintos y hacer lo que ya sabes.

3 - La ?ltima parte es ejecutarlos, esperando que funcionen. Suelen funcionar si el sistema no est? parcheado al m?ximo.

Experimenta por ti mismo todo lo referente a exploits, ahora que ya sabes c?mo utilizarlos.

Pero recuerda, si los exploits que has seleccionado no funcionan, no hagas el tonto subiendo otros que sabes que no van a funcionar. Debes saber que todo lo que haces en un sistema UNIX queda registrado en varios logs (algo que veremos en la pr?xima lecci?n), as? que si en una sesi?n no has conseguido hacerte root, al cabo de un d?a tu cuenta estar? cerrada porque, probablemente, el admin se habr? dado cuenta de que has estado haciendo cosas "sospechosas". Por si acaso, si te tienes que ir, no olvides dejar el directorio de inicio del usuario tal y como estaba. Si te dejas tus exploits ah?, te puedo asegurar que te van a cerrar la cuenta pase lo que pase (porque el usuario se dar? cuenta y lo comunicar? al admin). Tambi?n he comentado que, si has modificado alg?n archivo ya existente, tienes que volver a ponerle la fecha que ya ten?a con el comando touch.

Pero si te han cerrado la cuenta, lo que tienes que hacer es buscarte m?s shells y seguir practicando.

Si has conseguido nivel root, vamos a pasar a explicar qu? es lo que tienes que hacer.


? Qu? hacer una vez se es ROOT ?
Una vez eres root, el sistema es tuyo. No hay ning?n tipo de restricci?n, puedes pasearte por el sistema como si fuese tuyo. Es muy importante, cuando se es root, asegurarse de que nos vamos a ir sin dejar ninguna huella. Pero esto lo voy a explicar en la pr?xima lecci?n. As? mismo, si queremos asegurarnos nuestra continuidad como hacker en ese sistema, tenemos que ingeniarnos alg?n m?todo para que podamos entrar y salir siendo siempre root. Una manera ser?a hacer el mismo proceso que hemos hecho para conseguir root. Pero, ? Y si es un proceso demasiado largo ? ? Y si tenemos root y no sabemos ni c?mo lo hemos conseguido ?

Podr?amos crear una cuenta con acceso root, pero el admin del sistema lo acabar?a viendo. Lo que podemos hacer es usar el .profile del root para asegurarnos el futuro acceso mediante un caballo de troya.

Muchos se preguntaran ? Qu? es un caballo de troya ? Bueno, un caballo de troya no es m?s que un proceso oculto. Vamos a verlo mediante un ejemplo muy sencillo:

Caballo de troya 1
Vamos a meter un caballo de troya en el archivo .profile de un usuario normal. Nos movemos a su directorio de inicio.

Lo primero que hacemos es una copia del archivo original a un archivo temporal oculto:



# cp .profile .temp

Ahora, editamos el archivo .profile y a?adimos estas l?neas al final:



echo " Bienvenido, Anastasio Fern?ndez "
echo " Que tengas un buen d?a. "
echo " ? A que no sabes c?mo te est?n llegando estas l?neas ? "

Y la l?nea m?s importante que tenemos que a?adir es:



mv .temp .profile

?Qu? hemos hecho con esto?. Acabamos de ocultar un proceso, en este caso un mensage de bienvenida. El archivo original .profile estaba guardado en en uno temporal (.temp). De manera que cuando Anastasio entra en el sistema, su .profile (que es el que hemos modificado) se encarga de ocultarse moviendo el contenido del archivo temporal otra vez al archivo profile, de manera que cuando Anastasio mire en su .profile no ver? nada anormal. Excepto la fecha de modificaci?n, pero eso lo podemos arreglar a?adiendo un comando touch al final del caballo de troya.

Naturalmente no es muy recomendable hacer esto, ya que a un usuario normal no le har?a mucha gracia y comunicar?a al admin que ha ent
 
  Hoy habia 4 visitantes (4 clics a subpáginas) ¡Aqui en esta página!  
 

Get your own Chat Box! Go Large!

Get your own Chat Box! Go Large!
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis