Documente Academic
Documente Profesional
Documente Cultură
P
P
A
A
S
S
O
O
P A S Oa
P A a
a
a
a
a
a
aa
a
a
a
a
a 3 SERVIDORES ON LINE PARA TUS PRACTICAS DE HACK
NUMERO 18
DESCUBRIMOS EL
POTENCIAL DEL XML
TCP / IP: UDP
OLO
TOCO
PROTOC DA AGRAMAS
LO DE DAT
DE USUARIO
LINUX
COMUNICACION
ENTRE PROCESOS
PASO DE VARIABLES
8 414090 202756
GRACIAS...
Curso de PHP
Manejo de formularios web
En la navegación web intervienen los Si nos fijamos, veremos que las variables no
siguientes elementos: poseen el símbolo $ delante. Esto se debe a
Un Cliente (Navegador Web) que en realidad este modo de pasar variables
Un Servidor Web es común a todos los lenguajes (ASP, PHP,
JSP,...)
Una Petición (Request)
Una Respuesta (Response)
Las variables las recibe la página destino del
enlace, y ya podemos trabajar directamente
En pocas palabras, un cliente (Navegador
con ellas; pero no siempre se definen
Web) realiza peticiones (Request) a un
automáticamente las variables recibidas por
Servidor Web que responde (Response) las
parámetro en las páginas Web, depende de
páginas web que están almacenadas en él.
una variable de configuración de PHP:
register_globals, que tiene que estar
Normalmente cuando se desarrollan páginas
activada para que así sea.
Web, es necesario que los datos recogidos
en un primer momento se arrastren entre
A continuación vamos a explicar esto en un
las diferentes páginas mientras nos sean
ejemplo. Tenemos dos páginas, registro1.php
necesarios.
y registro2.php, que siguen los pasos para
un registro simple de usuarios.
Un ejemplo muy claro de esto es un sistema
de registro de usuarios, todos nos hemos
<HTML>
registrado en algún portal o algún site, y
<HEAD>
para realizar el registro completo hay que
<TITLE>Registro Paso 1</TITLE>
realizarlo por pasos, donde cada paso es una
</HEAD>
página Web diferente y los datos obtenidos
<BODY>
en la primera página se deben mantener
<FORM NAME=formRegistro1>
hasta la finalización del registro.
<TABLE BORDER=1>
<TR>
Variables a través de la URL <TD>Nombre:</TD>
<TD><INPUT TYPE=TEXT NAME=NOMBRE VALUE=></TD>
Para pasar las variables de una página PHP </TR>
a otra, lo podemos hacer introduciendo dicha <TR>
variable dentro del enlace hipertexto de la <TD>Apellidos:</TD>
página destino. <TD><INPUT TYPE=TEXT NAME=APELLIDOS VALUE=></TD>
</TR>
La sintaxis sería la siguiente: <TR>
<TD>Email:</TD>
<a href="destino.php?var1=valor1&var2=valor2&...">enlace</a> <TD><INPUT TYPE=TEXT NAME=EMAIL VALUE=></TD>
</TR>
</TABLE>
</FORM>
<A HREF="javascript:window.location.ref. = 'registro2.php?nombre='
+ document.formRegistro1.NOMBRE.value + '&apellidos=' +
document.formRegistro1.APELLIDOS.value + '&email=' +
document.formRegistro1.EMAIL.value">Enviar</A>
</BODY>
</HTML>
$HTTP_GET_VARS
<HTML>
<HEAD>
<TITLE>Registro Paso 2</TITLE>
</HEAD>
<BODY>
<HTML>
Usuario Registrado:
<HEAD>
<TABLE BORDER=1>
<TITLE>Registro Paso 2</TITLE>
<TR>
</HEAD>
<TD>Nombre:</TD>
<BODY>
<TD><? print($HTTP_GET_VARS["nombre"]);?></TD>
Usuario Registrado:
</TR>
<TABLE BORDER=1>
<TR>
<TR>
<TD>Apellidos:</TD>
<TD>Nombre:</TD>
<TD><? print($HTTP_GET_VARS["apellidos"]);?></TD>
<TD><?= $nombre;?></TD>
</TR>
</TR>
<TR>
<TR>
<TD>Email:</TD>
<TD>Apellidos:</TD>
<TD><? print($HTTP_GET_VARS["email"]);?></TD>
<TD><?= $apellidos;?></TD>
</TR>
</TR>
</TABLE>
<TR>
</BODY>
<TD>Email:</TD>
</HTML>
<TD><?= $email;?></TD>
</TR> Aunque podamos recoger variables que se
</TABLE> definen directamente en nuestra página,
</BODY> resulta más seguro utilizar $HTTP_GET_VARS
</HTML> por dos razones:
N o t a : R a í z d e l S e r v i d o r, s i g n i f i c a q u e e l W i n d o w s A d va n c e d
!
Server está instalado en esa unidad (la unidad c:) y
concretamente en el
Por lo tanto, la raíz
directorio por defecto \winnt\
del sistema está en c:\winnt\
MUY IMPORTANTE...
- E l I I S , I n t e r n e t I n f o r m a t i o n S e r v e r, e s e l S e r v i d o r d e
páginas Web y tiene su raíz en c:\inetpub (el directorio
por defecto)
MUY IMPORTANTE!!!!! Por favor, no borres archivos
Nota: Para quien nunca ha tenido instalado el IIS, le será del Servidor si no sabes exactamente lo que estás haciendo ni
e x t ra ñ o t a n t o e l n o m b r e d e e s t a c a r p e t a ( c : \ i n e t p u b ) c o m o
s u c o n t e n i d o . Pe r o b u e n o , u n d í a d e e s t o s o s e n s e ñ a r e m o s borres las carpetas de los demás usuarios. Si haces eso, lo único
a i n s t a l a r v u e s t r o p r o p i o S e r v i d o r We b ( I I S ) y d e t a l l a r e m o s
su funcionamiento. que consigues es que tengamos que reparar el sistema servidor
De momento, lo único que hay que saber es que cuando y, mientras tanto, ni tu ni nadie puede disfrutar de él :(
T Ú p o n g a s n u e s t ra I P ( l a I P d e u n o d e n u e s t r o s s e r v i d o r e s )
en tu navegador (el Internet explorer por ejemplo), lo que Es una tontería intentar romper el Servidor, lo hemos puesto
estás haciendo realmente es ir al directorio
c : \ I n e t p u b \ w w w r o o t \ y l e e r u n a r c h i vo l l a m a d o d e fa u l t . h t m . para que disfrute todo el mundo sin correr riesgos, para que todo
Nota: Como curiosidad, te diremos que APACHE es otro el mundo pueda crearse su carpeta y practicar nuestros ejercicios.
S e r v i d o r d e p á g i n a s We b ( s e g u r o q u e h a s o í d o h a b l a r d e
él). Si tuviésemos instalado el apache, cuando pusieses En el Servidor no hay ni Warez, ni Programas, ni claves, ni nada
n u e s t r a I P e n T U n a v e g a d o r, a c c e d e r í a s a u n d i r e c t o r i o de nada que robar, es un servidor limpio para TI, por lo tanto
raíz del Apache (donde se hubiese instalado) e intentarías
leer una página llamada index.html ... pero... ¿qué te cuídalo un poquito y montaremos muchos más :)
estoy contando?... si has seguido nuestra revista ya
dominas de sobras el APACHE ;)
Serie Xbox Life (IV)
Convirtiendo nuestra Xbox en un
centro Multimedia.
Aquí estamos un mes más, antes de todo Pues muy sencillo, dependiendo del lector que
quiero agradecer a los que apoyan esta serie, tengamos, podremos usar CD´s, CD-RW, DVD
es muy grato ver recompensado el esfuerzo. y determinadas marcas de cada uno de éstos.
GRACIAS.
Samsung:
Este mes vamos a descubrir los distintos Este lector es el
lectores DVD que tiene la consola Xbox y mejor, lee lo que
vamos a instalar y configurar unos programas le metas, tanto
que nos permitan ver películas DivX, escuchar CD´s como
MP3, ver fotos, incluso ahorrarnos el tener D V D ´ s y
que comprar el Kit DVD para ver las películas prácticamente de
en este formato. cualquier marca.
En la imagen de
Como es de costumbre en esta serie, os voy arriba podéis ver
a detallar lo que necesitamos para hacer todas cómo es la
estas cosas. bandeja de este
lector, así podréis
Lo que necesitamos: saber qué lector
Xbox con mod chip. lleva vuestra
Evox instalado en nuestra consola consola sin
Media Center (la versión más reciente) necesidad de
abrirla.
DVDX2.
ZXBTOOLS (Ultima versión).
Philips:
Pc Preparado.
Este lector es el
segundo si los
Todos los programas los podréis encontrar en
ordenamos de
la Web de la revista (www.hackxcrack.com).
mejor a peor. Lee
algunos CD´s y
Los DVD de XBOX: DVD´s de
m a r c a s
Algunos de vosotros sabréis ya que hay 3 conocidas,
fabricantes distintos de lectores para esta siempre y cuando
consola, para quien no lo sepa, las marcas se calibre la lente
son Samsung, Thompson y Philips. para que los lea,
ya que el láser encargado de leer los CD´s
Os podéis estar preguntando, ¿para qué os está tan bajo de potencia que no es capaz de
cuento esto? leerlos.
El calibrar la lente lleva sus riesgos, ya que consola para manejaros por los menús, pero os habréis
ahorrado 30.
le acortas la vida y en muchos casos, si se
hace mal, puede dejar de funcionar. Instalando y Configurando El Xbox Media
Center:
Thompson:
Lo descargamos de la web, lo descomprimimos en una
Este podríamos
carpeta y veremos esto:
decir que es el
peor, ya que no
lee CD´s, solo
CD-RW y de
lagunas marcas
como VERBATIM.
<subtitles>$HOME\subtitles</subtitles> <filetypeicons>
<xbe>defaultProgram.png</xbe>
#Lo dejamos como está !# </filetypeicons>
<startwindow>0</startwindow>
#Esta es la configuración base del menú, es decir
#Extensiones de las fots, Videos y Sonidos que lo que vamos a ver en el programa, en cada sección.
queremos que acepte. Si falta alguna, agregadla!# Podemos agregar o quitar la que queramos, en name
ponemos el nombre que queramos y en path ponemos
<pictureextensions>.png|.jpg|.jpeg|.bmp|.gif|.ico|.tif|.ti
la ruta a la carpeta, por ejemplo, he quitado el acceso
ff|.tga|.pcx</pictureextensions>
a c: y os aconsejo que hagáis lo mismo.!#
<musicextensions>.m4a|.flac|.ac3|.aac|.nfo|.pls|.rm|.
mpa|.wav|.wma|.ogg|.mp3|.mp2|.m3u</musicextensions> #Configuración para Mis programas#
<videoextensions>.nfo|.rm|.m3u|.ifo|.mov|.qt|.divx|.xv
id|.bivx|.vob|.pva|.wmv|.asf|.asx|.ogm|.m2v|.avi|.bin|. <myprograms>
dat|.mpg|.mpeg|.mkv|.avc|.vp3|.svq3|.nuv|.viv|.dv|.fli <bookmark>
</videoextensions> <name>Programas en E:</name>
<path>E:\apps\</path>
<!-- path where xbmc should store its thumbnails !#
</bookmark>
<thumbnails>$HOME\thumbs</thumbnails> <bookmark>
<name> Programas en F:</name>
#Directorio donde almacenará los atajos (lo dejamos <path>F:\apps\</path>
como está !# </bookmark>
<bookmark>
<shortcuts>$HOME\shortcuts</shortcuts>
<name>Programas en DVD </name>
#Ruta donde guarda el contenido destinado a la <path>D:\</path>
memoria caché (lo dejamos como está) !# </bookmark>
</myprograms>
<imdb>$HOME\imdb</imdb>
<bookmark>
# Mi música !#
<name>XNS</name>
<path>xns://192.168.0.1:1400/</path>
<music>
</bookmark>
<default></default>
<bookmark>
<bookmark>
<name>XBMS</name>
<path>xbms://192.168.0.1:1400/</path> <name>Musica E: </name>
</bookmark> <path>E:\MP3\</path>
</bookmark>
#Aquí está la configuración del strem por SMB, <bookmark>
dependiendo de cómo hayáis compartido la carpeta <name>Musica F:</name>
en el pc, se configura de una manara o de otra!# <path>F:\MP3\</path>
</bookmark>
<bookmark> <bookmark>
<name>SMB</name> <name>MP3 DVD</name>
<path>D:\</path>
#Este es un ejemplo
</bookmark>
smb://dominio;Usuario:contraseña@servidor/carp
<bookmark>
eta compartida !#
<name>SMB</name>
#Así tengo configurado el mío !#
<path>smb://192.168.0.1/mp3/</path>
</bookmark>
<path>smb://192.168.0.1/fotos/</path>
</music>
</bookmark>
</pictures>
Abrimos el explorador
de Windows, nos
situamos encima de
la carpeta que
queremos compartir,
por ejemplo el de
videos, pinchamos
con el botón derecho
sobre la carpeta y
pinchamos en
propiedades:
podrán leer y escribir en dicha zona de shmget reserva una zona de memoria de
memoria. tamaño size bytes devolviendo un identificador
que nos permitirá manejar dicha zona de
Esto, que en teoría es sencillo de entender,
memoria. El objetivo de key es similar al visto
a la hora de llevarlo a la práctica se complica
en la llamada de semáforos semget (es decir,
un poco. Cada vez que ejecutamos un proceso, pasar una clave única que servirá en nuestro
este tiene asociada una parte de la memoria caso para identificar de manera única la zona
exclusivamente para él. Ahí será donde guarde de memoria asociada a nuestro proceso).
sus datos ( va r i a b l e s , pila, etc...).
En cuanto a shmflag será una máscara de bits
Si en alguna ocasión este proceso intenta que indicarán el modo de adquisición del
acceder a una zona de memoria a la que no identificador devuelto por shmget:
tiene acceso u otro proceso intenta acceder
Si el bit IPC_CREAT está activo, la zona
a la memoria reservada para este proceso, compartida de memoria se creará a no ser
se estará produciendo una violación de que haya sido creada por otros procesos.
segmenteto con lo cual el programa fallará.
Si los bits IPC_CREAT e IPC_EXCL están
El encargado de controlar esto es el S.O., y activos simultáneamente, la llamada a shmget
afortunadamente en nuestro caso, este falla en caso de que la memoria compartida
dispone de la interfaz adecuada que nos hubiese sido reservada previamente.
permitirá crear zonas de memoria especiales
Además de estos valores podremos indicar
que podrán ser compartidas entre varios
los permisos: 0400 (lectura para el usuario),
procesos.
0200 (modificación para el usuario), 0060
fprintf(stderr, "Error al lanzar proceso hijo\n"); int main(int argc, char *argv[])
return -1; {
}
int shmid, i, estado;
if (pid != 0) // Somos el padre struct sembuf operaciones;
{ char *mensaje, buffer[80];
// leemos de la memoria compartida key_t clave;
// Esperamos a que termine el proceso hijo
wait(&i); //
for(i=0;i<1024;i++) // Zona de creación de memoria compartida
printf("%c-", mensaje[i]); //
return 0; // Creación de la memoria compartida
} // Primero la clave de recurso IPC
else // Somos el hijo if( (clave = ftok("shm.c",'K'))==-1)
{ {
// Escribimos algo fprintf(stderr," Error al crear la clave\n");
strncpy(mensaje, "Hola, esto es una prueba de memoria compartida", 1024); return -1;
return 0; }
} // Ahora la memoria compartida. Tamaño: 1024 caracteres
if( (shmid=shmget(clave, 1024 * sizeof(char), IPC_CREAT | 0600))==-1)
{ return -1;
fprintf(stderr," Error al desaligar memoria compartida\n"); }
} // Ahora debemos enlazar la zona de memoria compartida
return 0; // con la memoria local del proceso.
luis@leonov:~/articulos/articulo11_el_chaman/code$ ./shm_s
Lector
hola
Para todos aquellos que no tienen la primera entrega del Pero, antes de empezar, he de aclararos un
curso de TCP / IP publicada en el número 17 de PC PASO asunto. Supongo que algunos de vosotros os
preguntareis qué ha pasado con la serie RAW.
A PASO, hemos decidido pasarla a formato PDF y liberarla
Mis intenciones no eran de ninguna manera
en la Web de la revista (www.hackxcrack.com).
sustituir la serie RAW por el curso de TCP/IP,
si no desarrollar ambos en paralelo. Pero es
También aprovechamos esta nota para indicar
increíble de qué manera pueden conspirar
a nuestros lectores que todos los artículos juntas las circunstancias de la vida para
liberados y los programas que mencionamos cambiar por completo tu rumbo cuando menos
en los artículos están disponibles en la sección te lo esperas. En poco más de un mes me han
ARTÍCULOS LIBERADOS Y DESCARGAS de la surgido una serie de problemas de todo tipo
Web. (familiares, personales, de salud, laborales,
y académicos) por los cuales ahora (y sin
Para esta primera lección he escogido un plazo definido) dispongo de muchísimo menos
protocolo muy sencillo, el protocolo UDP (User tiempo.
Datagram Protocol --- Protocolo de He barajado un poco mis posibilidades, y creo
Datagramas de Usuario), para así poder que lo que puedo permitirme de momento es
extenderme más en explicaros algunas continuar sólo con el curso de TCP/IP, aunque
herramientas que nos pueden ser útiles a lo no descarto publicar algún otro artículo de la
largo de todo el curso. De momento, estas serie RAW algún mes que consiga juntar algo
herramientas las utilizaremos para manejar más de tiempo. Con esto lo que os quiero
decir es que no os prometo nada con respecto protocolo DNS. Vamos a utilizar este protocolo
a la serie RAW, pero que haré lo que esté en como ejemplo para ver qué ocurre desde que
mi mano para que no termine aquí, aunque un cliente solicita una consulta DNS a un
haya que avanzar ahora mucho más despacio. servidor, hasta que éste cliente recibe la
respuesta pertinente. Os aconsejo que leáis
Gracias por vuestra comprensión. ;-) el artículo sobre DNS de la serie RAW, que se
encuentra en el número 14 de la revista,
! NOTA EDITORIAL aunque voy a empezar haciendo una
introducción sobre este protocolo.
Tal y como nos describe el autor, esperamos poder hacer Os recuerdo que el protocolo DNS es el que
más entregas de la Serie Raw en futuros números, pero de nos permite utilizar las famosas URLs en lugar
forma más dilatada en el tiempo. Mientras tanto disfrutemos de direcciones IP. Es decir, nos permite escribir
de este excelente curso de TCP / IP, una serie de artículos en nuestro navegador http://www.google.com
ampliamente reclamada y esperada por nuestros lectores. en lugar de tener que escribir
http://216.239.39.99, que es la dirección IP
de Google.
Gracias a esto, a continuación nuestro A grandes rasgos, son cuatro los problemas
navegador podrá acceder a la máquina que que hemos encontrado para conseguir llevar
contiene la página Web que deseamos visitar, a cabo esta comunicación. Y, por supuesto,
ya que sólo puede existir una comunicación no es coincidencia que sean cuatro las capas
directa entre dos máquinas si cada una conoce de protocolos utilizadas en una comunicación
la dirección IP de la otra. UDP: capa física, capa de enlace, capa de
red, y capa de transporte.
Ahora vamos a pensar un poco en cómo se
podría conseguir todo este mecanismo del Si no fuese gracias a la existencia de estas 4
DNS, en el cual un cliente solicita un nombre capas diferenciadas, el protocolo DNS debería
a un servidor, y el servidor le responde con encargarse por sí sólo de solucionar todos
la IP correspondiente. ¿Qué problemas se nos estos problemas. Es decir, el protocolo DNS
presentan a la hora de llevar a cabo este debería tener sus propias conexiones físicas
proceso aparentemente tan sencillo? Pensadlo entre máquinas, sus mecanismos para
un poco, y después mirad la lista de problemas encontrar un camino entre todas las máquinas
a salvar que os pongo a continuación, para que están conectadas simultáneamente, sus
ver si habéis llegado a las mismas propias direcciones IP, y sus propios
conclusiones: mecanismos para diferenciarse de
otros servicios (como la Web o el correo
En primer lugar, por supuesto, hay que electrónico).
conseguir que ambas máquinas (cliente y
Esto convertiría al aparentemente sencillo
servidor) tengan una conexión física, ya
protocolo DNS en un sistema de una
sea por cables, por radio, o por cualquier otro
complejidad inabarcable, y lo mismo ocurriría
medio físico que les permita establecer una
con cualquier otro protocolo que tuviese que
comunicación bidireccional.
lidiar él solito con todos los problemas de origen, en cambio, servirá para que el
existentes en una comunicación. servidor pueda responder a nuestra consulta,
utilizando como puerto de destino el que para
Vamos a ver entonces cómo se reparte el n o s o t r o s e ra u n p u e r t o d e o r i g e n .
trabajo de la comunicación para permitir que
En resumen, lo que el protocolo UDP ha
el protocolo DNS se abstraiga de todo lo que
conseguido es identificar una comunicación
no sea su misión directa.
entre dos máquinas, entre las cuales podría
haber simultáneamente varias comunicaciones
Empezamos escribiendo una url en nuestro
establecidas.
navegador:
http://neworder.box.sk/home.html Lo que hace UDP es envolver el paquete con
una pequeña cabecera que añade la
En primer lugar, nuestro navegador quitará información necesaria, es decir, los puertos.
la parte de la URL que no corresponda al
nombre, que es: neworder.box.sk.
Exactamente lo mismo ocurre en el teléfono, Una vez que nuestro paquete está ya circulando
lo cual podemos ver claramente si recordamos por los cables físicos (u ondas de radio físicas),
a las telefonistas de antaño. Antiguamente terminará llegando hasta el servidor DNS. El
(y hoy también ocurre, pero con la diferencia servidor analizará el paquete, verá que se
de que está automatizado) en el instante en trata de una consulta DNS, y hará lo que tenga
que marcabas un número de teléfono no se que hacer para conseguir el resultado pedido
establecía una comunicación. Para conseguir (explicado en detalle en el artículo sobre DNS
esto hacía falta un procedimiento intermedio, de la serie RAW, en el número 14 de la revista).
que era el de las telefonistas. Las telefonistas
se encargaban de ir conectando y Una vez encontrada la respuesta, tendrá que
desconectando cables en sus paneles para construir un sencillo paquete de respuesta
conseguir enlazar los dos puntos de la DNS que simplemente contendrá la dirección
comunicación. IP pedida como resultado de la traducción del
nombre neworder.box.sk. Este paquete, para
En el caso de Internet, a pesar de lo que os poder circular hasta nosotros de vuelta,
hayan contado vuestros padres, no existe también tendrá que tener sus propias
una raza de enanitos encargada de conectar cabeceras UDP, IP, y Ethernet.
y desconectar cables, así que todo esto ocurre
El paquete completo (con las cabeceras) de
de forma automática y virtual, es decir, no
respuesta podría ser parecido a este:
se conecta ni se desconecta nada físicamente,
si no que simplemente se establecen
RESPUESTA DNS:
conexiones lógicas.
IP = 66.250.131.132
sobraba con lo que hace UDP, si no por motivos gruñones que se dedican a desconectar cables
de seguridad, como ya vimos al hablar en la de vez en cuando, ocasionando así la pérdida
s e r i e R AW s o b r e l o s a t a q u e s p o r de paquetes.
envenenamiento de DNS.
No cabe duda de que ninguna tecnología es
En la práctica, hay casos en los que el puerto perfecta, y por eso siempre puede haber
de origen es irrelevante, por lo que no siempre pérdidas de datos en cualquier comunicación.
es obligatorio especificarlo. En estos casos, ¿Qué ocurriría, por ejemplo, si no nos llegase
lo que se hace es usar el puerto 0 como la respuesta del servidor DNS, a pesar de que
origen. éste la hubiera enviado? Si, por cualquier
motivo, la respuesta se perdiese por el camino,
no pudiendo llegar hasta nosotros, ¿habría
2.2.2. Corrección en los datos
alguna forma de detectar y solventar esta
Imaginad que por cualquier problema en la situación?
línea los datos llegasen corruptos hasta
nosotros, y uno de los números que forman Analizando el funcionamiento básico del
la IP que hemos solicitado al servidor DNS protocolo UDP, tal y como lo hemos visto,
es incorrecto. no habría ninguna manera. En UDP cada
máquina envía sus paquetes a la red, sin tener
Sería un gran problema no tener una cierta ninguna certeza de si llegarán o no a su
seguridad de que los datos que nos llegan de destino. Una vez que el servidor DNS envíe
un servidor DNS son correctos. Estaríamos su respuesta, se desentenderá del asunto, al
cada dos por tres estableciendo conexiones no tener forma de saber si la respuesta nos
con direcciones IP incorrectas. ha llegado o no.
UDP no puede garantizar que los datos lleguen, Este es el principal problema de los protocolos
pero si que nos da cierta garantía de que, si no orientados a conexión, como es el caso
han llegado, son correctos. Para ello incorpora de UDP. Como ya vimos en el artículo sobre
en su cabecera un dato que no hemos visto DNS, en el caso de TCP esto es muy diferente,
antes (ya que estabamos viéndolo sólo a ya que TCP es un protocolo orientado a
grandes rasgos), que nos permite comprobar conexión. Por cada paquete transmitido en
que los datos son correctos, tal y como TCP es obligatorio que el receptor envíe un
veremos más adelante. acuse de recibo para que el emisor sepa con
certeza que los datos han llegado al destino.
Este problema de la corrección de los datos Esto no es así en UDP.
perfectamente podría haberlo incluido en la
lista de problemas de la comunicación, pero En UDP no hay manera de saber si los datos
no lo hice a propósito para que saliesen justo llegan al destino. Esto es una gran desventaja
cuatro. :-P pero, por otra parte, tiene la gran ventaja de
hacer la comunicación mucho más fluida, al
2.3. LO QUE NO
NOS DA EL no verse interrumpida constantemente por
miles de paquetes de acuse de recibo.
PROTOCOLO UDP FRENTE A TCP
Esta característica convierte a UDP en un
2.3.1. Fiabilidad en la
p r o t o c o l o d e t ra n s p o r t e i d e a l p a ra
comunicación comunicaciones sencillas (como DNS, o TFTP
(Trivial File Transfer Protocol --- Protocolo
Aunque antes desmentí el mito de los enanitos
Trivial de Transferencia de Ficheros)), y para
telefonistas de Internet, unos enanos que sin
envíos masivos de flujos de datos (como en
duda si que existen en la red son los enanos
Para los ALERGICOS al inglés, tienes al final de este El campo Tamaño paquete son otros 16 bits,
artículo el RFC en perfecto castellano ;) así como el campo Suma de comprobación.
u16 prot_tcp=17;
4. UDP EN LA PRÁCTICA
A continuación, escribimos cualquier cosa: una de las máquinas a las que tienen que dar
servicio.
hola
Wrote 33 byte UDP packet. ¿Y cual puede ser la utilidad de utilizar una IP
que no es la tuya? Pues ya hablaremos sobre
UDP Packet Injected todo eso a lo largo del curso, pero os adelanto
que esto puede servir para llevar a cabo gran
Vamos a analizar lo que hemos hecho. número de ataques.
En primer lugar, al llamar a Nemesis con la
En nuestro caso no queremos atacar a nadie,
opción udp en primer lugar (nemesis udp)
simplemente queremos comprender de forma
le decimos que queremos enviar un paquete
práctica el funcionamiento del protocolo UDP.
UDP, de entre todos los protocolos que
Por lo tanto preferimos utilizar nuestra IP
soporta Nemesis.
como IP de origen:
Por último, os habréis dado cuenta de que no falsa que tenemos almacenada en el archivo
es nada práctico meter los datos directamente envenenamiento.txt. La forma de lanzar
desde teclado, ya que es bastante complicado esta respuesta falsa sería:
generar una consulta DNS a pelo e introducirla
nemesis udp x 53 y 1200 S
desde el teclado. En la mayoría de los casos,
194.220.51.2 D 194.224.52.6 P
os será mucho más útil construir primero la
envenenamiento.txt
consulta con algún editor hexadecimal (por
ejemplo, podéis utilizar UltraEdit, que además
Podemos automatizar esto mediante un script
de ser un magnífico editor y visor de textos,
que haga un bucle en el cual vaya utilizando
es también un editor hexadecimal básico),
distintos Transaction ID y, tal y como vimos
guardarla en un fichero, y luego cargarla
en el artículo sobre DNS, según la versión de
directamente en Nemesis con la opción P.
BIND que utilice el servidor DNS de la víctima
Por ejemplo, si nuestro fichero se llama
tendremos una mayor o menor probabilidad
consulta.txt haremos:
de éxito.
nemesis udp v x 1000 y 53 S
192.168.1.2 D 194.224.52.6 P 4.2. HPING PARA LINUX
consulta.txt
Existe también versión de Nemesis para Linux,
pero os enseñaré mejor una herramienta
Podemos, por ejemplo, capturar una consulta
bastante más potente, que es Hping. Podéis
DNS real con un sniffer, después modificarla
bajar Hping de www.hping.org. Para instalarlo
a nuestra voluntad con el editor hexadecimal,
tendréis que compilarlo primero. Los pasos a
guardar la consulta modificada en un archivo,
seguir son los típicos:
y después enviarla a través de Nemesis.
si no que además implementa sencillos bucles Una opción curiosa de hping es la opción --badcksum
para poder generar muchos paquetes sin que genera una suma de comprobación inválida en el
necesidad de programar scripts. Si queremos paquete enviado, lo cual puede ser útil para comprobar la
que envíe un único paquete tendremos que reacción de un sistema ante un paquete malformado.
usar la opción --count 1. Aunque mejor que
veamos directamente un ejemplo: A lo largo del curso, entraremos en más detalle en el
funcionamiento de éstas y otras herramientas. Por el
hping2 193.224.52.6 --udp --destport 53
momento, os animo a que vayáis investigando por vuestra
--file envenenamiento.dat --data 14 --
cuenta.
count 1
Formato 0 7 8 15 16 23 24 31
0 7 8 15 16 23 24 31 +--------+--------+--------+--------+
+--------+--------+--------+--------+ | dirección de origen |
| Puerto de | Puerto de | +--------+--------+--------+--------+
| Origen | Destino | | dirección de destino |
+--------+--------+--------+--------+ +--------+--------+--------+--------+
| | | | cero |protocol| longitud UDP |
| Longitud | Suma de Control | +--------+--------+--------+--------+
+--------+--------+--------+--------+
|
| octetos de datos ... Si la suma de control calculada es cero, se
+---------------- ... transmite como un campo de unos (el equivalente
en la aritmética del complemento a uno). Un
Formato de la Cabecera de un Datagrama de Usuario valor de la suma de control trasmitido como
un campo de ceros significa que el emisor
Campos no generó la suma de control (para depuración
o para protocolos de más alto nivel a los
El campo Puerto de Origen es opcional; cuando que este campo les sea indiferente).
tiene sentido, indica el puerto del proceso
emisor, y puede que se asuma que ése sea el
puerto al cual la respuesta debería ser Interfaz de Usuario
dirigida en ausencia de otra información. Si
no se utiliza, se inserta un valor cero. Un interfaz de usuario debería permitir:
Febrero ES:
Se indican otros números de protocolo en [5].
Referencias
C o n t r a R e e m b o l s o Giro Postal
Solo tienes que enviarnos un mail a preferente@hackxcrack.com Envíanos un GIRO POSTAL por valor de 45 EUROS a:
indicando: CALLE PERE MARTELL20, 2º 1ª.
- Nombre CP 43001 TARRAGONA
- Apellidos ESPAÑA
- Dirección Completa IMPORTANTE: En el TEXTO DEL GIRO escribe un mail de contacto
- Población o un número de Teléfono.
- Provincia
- Cógigo Postal Y enviarnos un mail a preferente@hackxcrack.com indicando:
- Mail de Contacto y/o Teléfono Contacto - Nombre
Es imprescindible que nos facilites un mail o teléfono de contacto. - Apellidos
- Tipo de Subscripción: CONTRAREEMBOLSO - Dirección Completa
- Número de Revista: - Población
Este será el número a partir del cual quieres subscribirte. Si deseas - Provincia
(por ejemplo) subscribirte a partir del número 5 (incluido), debes poner
- Cógigo Postal
un 5 y te enviaremos desde el 5 hasta el 15 (ambos incluidos) - Mail de Contacto y/o Teléfono Contacto
Es imprescindible que nos facilites un mail o teléfono de contacto.
APRECIACIONES: - Tipo de Subscripción: GIRO POSTAL
* Junto con el primer número recibirás el abono de 45 euros, precio - Número de Revista:
de la subscripción por 11 números (un año) y una carta donde se te Este será el número a partir del cual quieres subscribirte. Si deseas
indicará tu número de Cliente Preferente y justificante/factura de la (por ejemplo) subscribirte a partir del número 5 (incluido), debes poner
subscripción. un 5 y te enviaremos desde el 5 hasta el 15 (ambos incluidos)
* Puedes hacernos llegar estos datos POR MAIL,tal como te hemos
indicado; rellenando el formulario de nuestra WEB APRECIACIONES:
(www.hackxcrack.com) o enviándonos una carta a la siguiente dirección: * Junto con el primer número recibirás una carta donde se te indicará
CALLE PERE MARTELL Nº20, 2º-1ª tu número de Cliente Preferente y justificante/factura de la subscripción.
CP 43001 TARRAGONA * Puedes hacernos llegar estos datos POR MAIL,tal como te hemos
ESPAÑA indicado; o enviándonos una carta a la siguiente dirección:
* Cualquier consulta referente a las subscripciones puedes enviarla CALLE PERE MARTELL Nº20, 2º-1ª
por mail a preferente@hackxcrack.com CP 43001 TARRAGONA
ESPAÑA
* Cualquier consulta referente a las subscripciones puedes enviarla
PC PASO A PASO Nº 18 por mail a preferente@hackxcrack.com Página 39
EL LENGUAJE XSL
TRANSFORMACION DEL DOCUMENTO XML
Por Joaquim Roca Verges
El curso XML provocó muchos mails en los que se repetía la misma pregunta... ¿Para qué
sirve realmente? ¿Cómo puedo utilizarlo para mi Web? ¿Cómo utilizo la información?
LA RESPUESTA ES XSL -----> PREPÁRATE!!!
<xsl:template match=introduccion>
Cuando tengas que hacer cambios de XML a
otro formato, o tengas que realizar alguna
Podemos observar que el elemento
<introduccion> casa (empareja, forma el de las cinco operaciones que he especificado
par) con el valor de la propiedad match del sobre documentos XML, no lo dudes: XSL es
xsl.. la herramienta que debes elegir.
Escribimos en cualquier editor de texto: Una vez lo tengas escrito, guarda el archivo
en la misma carpeta xsl con el nombre:
<?xml version="1.0" encoding="ISO-8859-1"?>
introduccion.xsl
<introduccion>
XSL es una herramienta de transformación potente
¿En que nos podemos fijar de entrada? Pues
</introduccion>
en que el documento está bien formado.
y guardamos el archivo como introduccion.xml Recordamos que un documento bien formado
en una carpeta que denominaremos xsl, y es el que cumple las reglas de escritura de
colgará del directorio raíz de Windows: c:\xsl XML. Por ejemplo, todo elemento que se abre,
a no ser que se especifique lo contrario, debe
Aunque podemos ver el documento XML cerrarse:
directamente en el browser de Internet (el
Internet Explorer de Windows, el antiguo Se abre: <xsl:template>
Navigator de Netscape, etc.), el documento Se cierra:</xsl:template>
solo es una estructura de datos bien formada,
pero no podemos visualizar la información A veces se especifica lo contrario: <xsl:output
formateada. method="html"/> ved que el slash/ está al
final, lo que indica que el elemento es único,
Para ello, para formatear la información y
que se cierra y abre el mismo.
visualizarla , transformaremos el documento
a otro formato, a HTML por ejemplo, y ello lo
Por tanto debemos tener en cuenta que la
vamos a hacer con XSLT, con una hoja de
manera de escribir, sea XSL, XML , HTML o
estilos XSLT (xslt stylesheet) donde
cualquier otro lenguaje de marcado, debe
especificaremos como vamos a transformar
terminar generando un archivo bien formado,
el documento XML introduccion xml.
esto es que sigue las reglas del XML.
De momento ya tenemos el XML que vamos
a transformar, ahora vamos a decirle como Si alguno de vosotros tiene conocimientos de
vamos a transformarlo , y esto vamos a HTML, puede ver que la etiqueta <P> (que
hacerlo con un archivo XSL cuando escribes un HTML puede dejarse sin
cerrar) aquí la hemos cerrado con una etiqueta
Abrid cualquier editor de texto y escribid lo fin de párrafo </P>
siguiente:
Aunque dentro de nada vamos a examinar en
<xsl:stylesheet version="1.0"
detalle las hojas de estilo XSLT, vamos a
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
prestar atención a los fundamentos.
<xsl:output method="html"/>
<xsl:template match="/">
<xsl:template match="introduccion">
La segunda plantilla(template) :
<html>
<body> <xsl:template match="introduccion">
<p>
<xsl:value-of select="."/>
</p> Reemplaza el tag de principio <introduccion>
</body> y el tag de final </introduccion> por el tag
</html>
HTML que le hemos indicado en el XSL: <p>
</xsl:template> y después inserta el valor del elemento
</xsl:stylesheet> <introducción> al tag <p> del html.
Como es una parte muy importante, vamos y esto os provocará el siguiente error:
a dar dos soluciones (si es posible, os
recomendaría tuvierais las dos).
1) Software Libre.
2) Software de pago pero...
Bueno pues nada, a coger moral y a investigar
porque de este error. Veamos, seguramente
1.-Software Libre necesitamos mas archivos de funciones. Nos
vamos a la Web de apache y nos bajamos el
Xalan del Apache XML Project xalan:
http://xml.apache.org/xalan-j/index.html
http://xml.apache.org/dist/xalan-j/xalan-j_2_4_1-bin.zip
(aquí encontrareis toda la información que
queráis acerca del xalan y mas). Copiad el zip a vuestro directorio raíz: C:\,
seleccionadlo y buscad la opción del WinZip
Este es quizá el procesador XSLT más popular que pone Extract Here de manera que una
que existe. Para que funcione tienes que vez descomprimido, en vuestra estructura de
instalarte el java development kit (JDK) de directorios veáis la carpeta C:\ xalan-j_2_4_1.
http://java.sun.com/j2se/1.4.1/download.html
Configuración del CLASSPATH
tambien tienes que bajarte el j2ee (java 2
enterprise edition) de
Para hacer una clase accesible a una aplicación
Java, la aplicación debe saber donde
http://java.sun.com/j2ee/sdk_1.3/
encontrarla. En la variable de entorno
Una vez instalado todo (jdk + j2ee) comprobad CLASSPATH, se informa al ejecutable java
que en tenéis en vuestra estructura de donde encontrar las clases.
directorios la carpeta C:\j2sdkee1.3\lib\org\
Añadir al Classpath las siguientes entradas: Y finalmente haremos que se genere como
archivo de salida (OUT) una página HTML, que
C:\ xalan-j_2_4_1\bin\xalan.jar llamaremos introduccion.html
A continuación vamos a probar que tenemos y si abrimos la carpeta xsl, veremos un nuevo
correctamente instalado el xalan, vamos a archivo, un flamante html, que hemos
compilar una clase java de los ejemplos de generado con XSLT.
xalan, que tenéis en la carpeta
En la imagen siguiente vemos el archivo XML
original de entrada y el HTML de salida que
C:\xalan-j_2_4_1\samples\SimpleTransform
ha pasado el proceso de transformación XSL:
javac SimpleTransform.java
www.altova.com/download_archive.html con el
1. archivo de entrada (IN) de
nombre de XML Spy 4.4 Suite Setup.
donde vamos a leer los datos, que es
un XML llamado introduccion.xml
Una vez tengáis instalado el xml spy, abrid el
2. archivo de transformacion
archivo introduccion.xml y seleccionad la
(XSL) con el cual vamos a aplicar las
opción de menú XSL Assign XSL
transformaciones al archivo de entrada
<xsl:template match=/>
<xsl:apply-templates select=elemento1 />
<xsl:apply-templates select=elemento2 />
<xsl:apply-templates select=elemento3 />
</xsl:template>
Podéis comprobar que el xml spy os ha añadido
.
código extra a vuestro archivo XML
.
</xsl:stylesheet>
<xsl:template match=/>
documento XML, y por debajo los nodos atributos en los documentos XML. Los
hijos(nodos anidados) del raíz, que a su vez atributos no son ni padres, ni hermanos,
pueden tener hijos (mas nodos anidados) y ni hijos de ningún nodo.
también pueden tener nodos hermanos (nodos
que están a un mismo nivel). Texto = representa el texto contenido
en los elementos. Si el texto asociado
Pensad en la estructura de directorios: a un elemento contiene referencias
externas a entidades (por ejemplo una
C:\ sería el nodo raíz imagen) o tipos de caracteres (signos
raros de diferentes abecedarios por
C:\Archivos de Programa seria un ejemplo), estas referencias se resuelven
nodo hijo de C:\ (se trae el contenido de las referencias)
antes que el nodo texto sea creado.
C:\Archivos de programa\Office, seria
un nodo hijo de C:\Archivos de
Programa Comentario = representa elementos
comentario en los documentos XML.
C:\Windows sería un nodo hermano
de C:\Archivos de Programa. Instrucción para procesar =
representa instrucciones que hay que
Esta estructura en árbol hace la tarea fácil al procesar en los documentos XML. Los
nodos de este tipo contienen dos
procesador XSL que entiende a la perfección
valores: el nombre de la instrucción que
la estructura PADRE-HIJO-HERMANO.
puede obtenerse llamando a la función
name( ) y una cadena de tipo String
La tecnología que hace posible que la
con la instrucción en sí.
estructura del documento XML se represente
en una estructura de árbol se llama Xpath. Namespace = representan
Xpath define un conjunto de nodos estándar namespaces declarados en hojas de
y nos da las funciones para localizar estos estilo XSLT. Un namespace se utiliza
nodos en el documento XML. para prevenir conflictos de nombres
dentro de un mismo XML. Supongamos
Tipos nodo definidos por Xpath: que utilicemos la misma etiqueta
<titulo> para designar diferentes
Raiz = representa el elemento raíz conceptos dentro del XML. Por ejemplo,
de los documentos XML. El nodo raíz podemos tener un <titulo> que nos da
contiene todo el documento y todos los el nombre de un libro, y dentro del
nodos del documento son hijos suyos. mismo documento XML, otro <titulo>
que nos da el título obtenido después
Elemento = representa elementos de años de estudio. Este problema se
de los documentos XML, incluyendo el resuelve con los namespaces.
elemento raíz. Los nodos elemento,
pueden incluir otros nodos elemento, Cada uno de estos tipos de nodo tiene una
nodos de texto, nodos de comentario plantilla(template) asociada, que permite que
e instrucciones para procesar que se el nodo sea procesado por XSLT cuando sea
desarrollan dentro del elemento. necesario. Vamos a examinar las reglas de
cada uno de estos templates en el próximo
Atributo = representa elementos número, pero antes vamos a ver dos ejemplos
sencillos, porque me gustaría que antes de
<xsl:template match="/">
<html>
<head>
<title>Convertir un XML en un HTML</title>
</head>
<body>
<h1>Videos de acción</h1>
<p>Listado de videos</p>
<table border="0">
<tr>
<th>Video</th>
<th>Dirección http</th>
<td>
<xsl:value-of select="@http"/>
El segundo ejemplo es una satisfacción </td>
personal, le tenía ganas desde que un
<td>
compañero me lo preguntó en el foro de la
<a>
W e b d e l a r e v i s t a <xsl:attribute name="href">
(http://www.hackxcrack.com/) <xsl:value-of select="@http"/>
</xsl:attribute>
Se trata de convertir un archivo XML con un
<xsl:value-of select="."/>
listado de películas en links HTML.
</a>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
¡¡¡Saludos compañeros!!!!
SABEMOS que muchas personas (quizás tu eres una de ellas) han creado
textos y cursos para consumo propio o de unos pocos.
¿Cómo prevenirnos?
El software legal también puede
contener virus, puedes infectarte tanto
De eso y otras cosas te hablaré ahora en este
si el software que utilizas es legal como
artículo, la mejor manera de enfrentarnos a
si usas copias pirata.
este tipo de programas auto-replicantes es
conocer su funcionamiento
quien sabe, AND, devuelve 1 si los dos bits son 1:
quizás les cojas cariño a estas criaturas y 1001 AND 1000 = 1000 (se
decidas dar a luz una tu mismo algún día, corresponde con la multiplicación
nunca se sabe :P binaria).
Este resulta siempre un punto interesante, Dejando la filosofía a un lado podemos decir
muchos no saben qué es lo que ocurre cuando que un proceso es un programa que está en
nosotros tan felizmente pulsamos el botón ejecución y es la unidad de procesamiento
de power on y esperamos con cara de que el SO debe gestionar correctamente. La
satisfacción el despertar de nuestro inseparable información sobre cada proceso se guarda en
amigo (--¡y no me refiero al Window$! :P). su mayoría en el BCP (Bloque de Control de
Pues ahora te lo voy a explicar paso a paso Proceso) que tiene información de interés
para que veas que las cosas simples son las como podría ser:
más importantes:
U I D : id e n t i f i c a d o r d e u s u a r i o
El primer paso es ejecutar lo que se llama
ROM Starter o iniciador ROM. Es un
PID: identificador de proceso
programa que siempre se encuentra cargado
(en memoria de sólo lectura y/o lectura
Descriptores: comunicaciones abiertas,
exclusiva) y que comprueba el sistema y los
ficheros abiertos y que se manejan por
periféricos conectados.
el proceso, memoria asignada y otras
cosas similares.
A continuación enviará a memoria otro
programa que se responsabilizará de cargar
Estado de los registros: refleja la
el sistema operativo. En el caso de tener
situación de los registros del computador
nuestro disco duro (hoy día de tamaños
para cada proceso en un momento
considerables) lo que cargaremos será el MBR
determinado. Estos serían algunos de
(Master Boot Record, es el primer sector
los datos más importantes a tener en
del disco duro que contiene la tabla de
cuenta sobre un proceso aunque
particiones).
hay otros que no nos interesan
ahora.
Desde aquí se da el control al primer sector
o boot sector que son esos 512 bytes iniciales
2.1.4 Ficheros ejecutables
que ya pueden cargar el resto del programa
y una vez habilitados los componentes se
Un fichero que pretende poder ejecutarse debe
inicializa el Sistema Operativo (para el caso
respetar una estructura concreta para cada
que nos ocupa será Window$) y que realizará
sistema y formato (PE o Portable Executable
- para ir bien - un test del sistema
en el caso de Window$), una estructura
(completando así la tarea iniciada en la ROM),
genérica tiene esta forma:
comprobación de integridad del sistema de
ficheros, establecerá sus estructuras y políticas
propias (como la planificación de procesos y Cabecera con información sobre le
la memoria) y pondrá residentes en la ejecutable en si.
memoria aquellas partes vitales del SO. Ahora Código que el SO deberá ejecutar.
simplemente se crea un proceso inicial o Datos inicializados y no inicializados
proceso padre que incluye una petición y Tabla de Importaciones: son las
comprobación de usuario / contraseña referencias a todas aquellas funciones
opcionalmente. que el programa necesita y que no se
incluye en el propio código, como es el
Llegados a este punto podemos trabajar con caso de las librerías de enlace dinámico
las posibilidades que el SO nos ofrece. (ejemplo: kernel32.dll)
La Cabecera Opcional está en la Así que, para no liar a nadie y para que todo
posición 18h respecto a la cabecera PE el mundo pueda practicar un poco, usaremos
que contiene entre otras cosas de el programa Debug que encontrarás por
interés la AddressOfEntryPoint o punto defecto en tu Window$ y haremos un par de
de entrada y la estructura DataDirectory programas básicos, ¡por algo hay que empezar
con la RVA (Relative Virtual Address o no!?
dirección virtual relativa).
Deja de mirarme y coge tu teclado y el ratón
Tabla de secciones, un vector u array que esto es interactivo ¡vamos! Seguiremos
de varias estructuras. estos pasos:
¡Uyyyyy, pero que es todo eso! Ante todo Ahora tendremos el cursor parpadeando a la
calma, no nos alarmemos te voy a explicar derecha de la última línea (en nuestro caso
esto un poco. 15ED:0100). Venga, escribiremos las siguientes
instrucciones en ensamblador:
Cada registro tiene un nombre y significado.
Tenemos cosas relacionadas con el acarreo mov ax,0004 (y pulsamos enter);
(NC y CY, no hay carry y sí lo hay) o con el pone el valor 0004 en AX
signo positivo y negativo (PL/NG), el flag Zero mov bx,0005 (y pulsamos enter);
(NZ no es cero ZR sí lo es). Todo esto son pone 0006 en BX
algunos de los registros de banderas que add ax,bx (y pulsamos enter);
observamos y que podemos usar como adiciona (suma) en AX el registro BX
estructuras de control para nuestros int 20 (y pulsamos enter);
programas. También te muestra los registros hace que el programa termine
internos junto con su contenido, además es (pulsamos enter otra vez)
interesante mencionar ahora de manera En este momento tendremos lo siguiente:
especial los siguientes registros:
AX se denomina Acumulador
BX es el registro base
CX contador
DX registro datos
IP apuntador a la siguiente instrucción
(no lo usaremos directamente). Hecho esto y desde el indicador, usaremos el
comando g para ejecutar el programa y nos
Vamos a hacer entre los dos un primer
mostrará un mensaje indicando si terminó
programa. En concreto vamos a hacer una
bien la ejecución, lo que no nos asegura que
suma :)
haya ocurrido lo que esperábamos (que era
Si queremos ensamblar (crear) un programa una suma). Pues venga, escribe g y pulsa
usaremos el comando a en el prompt del enter.
debug, donde se le puede indicar la dirección Para comprobar que la suma se ha realizado,
en la que debe iniciarse el ensamblado. utilizaremos el comando g y le añadiremos la
dirección de memoria donde queremos que el
Hablando claro: Escribiremos en la pantallita programa se pare y muestre los valores de
negra a0100. los registros. En nuestro caso será en la
- a es el comando que le indica al debug que dirección de memoria posterior a la suma
vamos a ensamblar (crear) un programa. (comando add ax,bx), es decir, la posición
- 0100 es la dirección de memoria que 0108. Pues venga, escribimos g0108 y pulsaremos
nosotros hemos elegido para iniciar el enter.
ensamblado.
-a0100
-n test.com
0CEB:0100 mov ax,0003
-l
0CEB:0103 mov bx,0002
-u 100 105
0CEB:0106 add ax,bx
0CEB:0108 int 20 0CFC:0100 B80200 MOV AX,0002
0CEB:010A 0CFC:0103 BB0400 MOV BX,0004
-h 10a 100 ;obtenemos la longitud del programa -u 100 109
020A 000A 0CFC:0100 B80200 MOV AX,0002
-n test.com ;pone un nombre al programa 0CFC:0103 BB0400 MOV BX,0004
-rcx ;cambiamos el contenido del registro CX 0CFC:0106 01D8 ADD AX,BX
CX 0000 ;nos interesa el valor 000a (resultado de la resta) 0CFC:0108 CD20 INT 20
:000a ;tras los : podemos modificar el valor de CX
-w ;escribe el programa en el disco duro
Escribiendo 0000A bytes
-
Por si te has perdido, te capturamos la pantalla:
3-Tipos de infecciones
¿En qué se basan estos tipos de virus? El caso de los Active X es muy similar al
anterior con la diferencia de que no existe ese
Básicamente usan las denominadas plantillas entorno seguro, sencillamente hay acceso
globales, como en el caso de normal.dot total al sistema con la inseguridad que eso
de la suite M$ Office. Estos normal.dot se provoca, existe -eso sí- un sistema de firmas
aplican a cada documento nuevo que creas electrónicas para garantizar la fiabilidad... sin
(por ejemplo en Word), y afectan a una serie comentarios.
de eventos que suceden cada vez que se hace
algo concreto, como puede ser abrir o cerrar La carga de Active X debería ser totalmente
(AutoOpen y AutoClose) un documento o denegada ya que el riesgo de compromiso del
incluso al crear uno nuevo (AutoNew). sistema es elevado y aún más conociendo los
numerosos agujeros en el navegador Internet
Las versiones recientes de dichas aplicaciones Explorer.
y la incorporación de VBA (Visual Basic for
Applications) no suponen un problema real 3.1- Otros tipos de código
para la creación y funcionamiento de este malicioso interesante:
tipo de código malicioso que lleva ya tiempo
funcionando.
Troyanos: llegados a este punto de la revista,
es poco probable que no sepas de que estamos
Virus basados en Java , Javascript, Active hablando aquí, pero bueno jeje, paso a paso,
X ... n o p o d e m o s s e g u i r s i n c o m e n t a r l o.
Java es el famoso lenguaje de programación
creado por Sun que luego se usó para crear Este tipo de programa -que aunque carece de
el Javascript, que permite crear aplicaciones técnicas autoreplicantes- se ejecuta y
de forma normal y que se puede usar para permanece residente en el sistema de forma
el desarrollo Web e Internet. Las aplicaciones transparente al usuario y permite la ejecución
que se nos ejecutan en el navegador pueden de instrucciones que pueden dañar los datos
hacerlo gracias a la conocida Java Virtual de nuestro disco duro, instalar backdoors
Machine (JVM máquina virtual Java) que (puertas traseras) y como norma general
interpretará las instrucciones y las traducirá permiten el control remoto del sistema con
para ejecutar el código en nuestra máquina. privilegios mediante canales encubiertos.
Ejemplo de esto son los conocidos Applets Conocidos troyanos son el RAT (alias Sub7)
de Java que se ejecutan en un Sandbox. o el Back Oriffice del grupo Cult Of Dead
Un Sandbox es un entorno seguro que Cow que hizo estragos en su momento.
analiza las características del Afortunadamente, todos estos troyanos son
lenguaje/compilador junto con otras cosas, detectados por casi todos los antivirus actuales.
como el hecho de no poder establecer
conexiones de red ni permitir la
lectura/escritura de ficheros en el cliente (no ! Caso aparte...
puede acceder a tus ficheros) y realizando
la ejecución en otro espacio de memoria
aparte para asegurar el sistema (limitando Caso a parte son los programas que se comentaron el los
los recursos accesibles).
primeros números de la revista, que son troyanos en tanto
Pese a todo, existen virus que han sido capaces que se utilizan como tales, pero que en realidad son
de ejecutar el código no como applet sino programas comerciales (normales). Al ser programas
como una aplicación tipo Java, pudiendo comerciales ningún antivirus detecta como troyanos y
realizar las operaciones que el lenguaje Java pueden causar verdaderos estragos.
permite (acceso al disco y datos).
Logic Bombs (bombas lógicas): bueno, este El caso más conocido (por su impacto) fue el
es el caso diría yo, más simple de todos. Es de Robert Morris que, aprovechando una
simplemente un programa que responde a vulnerabilidad descubierta por su padre
cierto evento (como puede ser pulsar una (investigador experto en seguridad y UNIX)
tecla) o cierto lapso de tiempo, para ejecutar libera por curiosidad según él mismo indicó-
normalmente instrucciones destructivas sobre el 2 Noviembre 1988 un gusano que abusaba
el sistema o incluso la obertura de una puerta de Sendmail , el demonio Fingerd y una
trasera. shell remota (rsh) para propagarse. Además
contaba con un cargador que al compilarse y
Un ejemplo clarito y fácil de implementar ejecutarse cargaba el gusano que, a su vez,
sería lo que fueron las bombas ansi, o un leía las tablas de enrutamiento del sistema
sencillo programa en VBasic e incluso un para enviar una copia del cargador a todos
pequeño fichero con extensión .bat con algo los hosts remotos accesibles por ese sistema
mediante el mismo procedimiento.
tal que así :
NÚMERO 3:
NÚMERO 13:
- Curso de linux: programacion C(II). NÚMERO 15
- Visual Basic:Nuestro primer proyecto.
- APACHE: Configuralo de forma segura. - CURSO DE PHP (II)
- Serie Raw: HTTP. - Xbox. Inst alar Linux
- CURSO XML: DOM. - SERIE RAW
RAW (9): MSN
- CURSO VISUAL BASIC: UN CLIENTE,
UNA NECESIDAD(III).
- PROGRAMACION BAJO LINUX: LENGUAJE C(III)
NÚMERO 17:
- Programación bajo linux: El sistema IPC(II)
- Curso de TCP/IP
- XBOX (III): Cambia el disco duro de tu XBOX
- Hackea Windows en 40 segundos
- Curso de PHP: Cadenas de texto