SlideShare una empresa de Scribd logo
HACK X CRACK: NMAP - EL MEJOR ESCANEADOR DE INTERNET

                                                                         P       Serie RAW: IRC
                                                                         A         I N T E R N E T R E L AY C H AT
                                                                         S                   CHATEANDO
                                                                         O                    MEDIANTE
                                                                                               TELNET
                      P A S Oa
                             a
                             a
                             a
                             a
                             a
                             a
                             aa
                              a
                              a
                              a
                              a
                              a
HACK X CRACK - HACK X CRACK - HACK X CRACK




                                             G
                                              N
                                              U
                                              Permisos de archivo
                                             CAT y otros comandos

                                                 APACHE

                                                                                  Instalación
                                                   Modulos y
                                                                                  Interfaz Gráfica
                                              Servidores Virtuales
                                                                                  Opciones de Uso
                                               DESCUBRE LOS
                                             PROTOCOLOS DE “LA
                                             RED” CON NOSOTROS

                                                    VISUAL BASIC
                                                                                         Iniciación al PORT SCANNING
                                                    Creando Librerias                         Técnicas de “scaneo”
                                                    Acceso a datos

                                              Nº 9 -- P.V.P. 4,5 EUROS
                                                                 00009




                                               8 414090 202756
                                                                             Si no entiendes ni una palabra de esta portada, has llegado a
                                                                                LA REVISTA DE INFORMÁTICA QUE ESTABAS ESPERANDO!!!
                                               PC PASO A PASO: APRENDE A PROGRAMAR CON NOSOTROS
P
                           A
                           S
                           O
           aa
    P A S Oaa
           aa
           a
           a
           aa
            a
            a
            a
            a
            a
            a
            aa




EDITORIAL: EDITOTRANS S.L.           Director de la Publicación
C.I.F:     B43675701                 J. Sentís
                                     E-mail
                                     director@hackxcrack.com
Director Editorial                   Diseño gráfico:
I. SENTIS                            J. M. Velasco
                                     Contacto diseñador gráfico
E-mail contacto                      grafico@hackxcrack.com
director@editotrans.com              Redactores
                                     AZIMUT, ROTEADO, FASTIC, MORDEA, FAUSTO,
Título de la publicación             ENTROPIC, MEIDOR, HASHIMUIRA, BACKBONE,
Los Cuadernos de HACK X CRACK.       ZORTEMIUS, AK22, DORKAN, KMORK, MAILA,
                                     TITINA, SIMPSIM... ... ... ... ...
Nombre Comercial de la publicacíón   Contacto redactores
PC PASO A PASO                       redactores@hackxcrack.com
                                     Colaboradores
Web                                  Mas de 130 personas: de España, de Brasil, de
www.hackxcrack.com                   Argentina, de Francia, de Alemania de Japón y
                                     algún Estadounidense.
Deposito legal:      B.26805-2002    Contacto colaboradores
Código EAN:          8414090202756   colaboradores@hackxcrack.com
Código ISSN:         En proceso      Imprime
                                     I.G. PRINTONE S.A. Tel 91 808 50 15
                                     Distribución
                                     Coedis S.L. Avda. de Barcelona 225. Molins de Rei.
                                     Barcelona. Tel 93 680 03 60 FAX 93 668 82 59
                                     WEB: www.coedis.com (mapa de distribución en la
                                     web)

                                     Teléfono de Atención al Cliente: 977-224580
                                     Horario de Atención:           De 9:30 a 13:30
                                                                  (de Lunes a Viernes)
                                     ** Este número de teléfono se ha habilitado
                                     principalmente para atender cualquier problema
                                     relacionado con la petición de números atrasados
                                     y/o suscripciones. En la Web (www.hackxcrack.com)
                                     tenemos el formulario para que puedas realizar tus
                                     pedidos, por favor utiliza la Web para realizar tu
                                     pedido.

                                     © Copyright Editotrans S.L.
                                     NUMERO 9 -- PRINTED IN SPAIN
                                     PERIOCIDAD MENSUAL
DECLARACION DE INTENCIONES
PARA "LOS OTROS":

1.- La intención de la presente publicación NO ES fomentar la piratería           curiosidad deberéis ponerla VOSOTROS, porque los medios los facilitaremos
informática ni la “delincuencia” en la Red.                                       NOSOTROS. En las siguientes líneas os descubrimos cómo podremos
2.- Cualquier texto publicado es VALIDADO por nuestra Asesoría Jurídica,          conseguir nuestros objetivos y definimos algunas de las palabras que más
por lo que advertimos a cualquier persona, empresa u organización de la           han sido violadas y retorcidas en su significado.
inutilidad de cualquier iniciativa jurídica en nuestra contra. Aun así, en caso
de cualquier iniciativa en contra de esta revista, deberá ser debidamente         Hacker: Este término ha sufrido a lo largo de su corta historia una horrible
presentada y resuelta en la Razón Social que figura en nuestros documentos        conspiración perpetrada por la ignorancia de los medios, eso que
de constitución.                                                                  personalmente llamo "periodismo de telediario" (en clara alusión a los
3.- Esta publicación no se hace responsable del mal uso de los conocimientos      ridículos artículos que no hacen mas que intoxicar nuestra percepción de
que se exponen.                                                                   las cosas e insultar nuestra inteligencia). Ese tipo de periodismo unido a
4.- Esta publicación NO FACILITARÁ los datos de nuestros colaboradores            "otros poderes", desde los monopolios que deben justificar su incompetencia
ni el origen de nuestros conocimientos salvo ORDEN JUDICIAL y, aun así,           hasta los gobiernos que deben justificar sus intereses ocultos pasando por
advertimos que algunos de esos colaboradores NO SON CONOCIDOS mas                 la industria del cine (normalmente demonológica) y los medios informativos
que por sus NICKS (alias). Por ello, correrá a cargo de los organismos            "de masas".
pertinentes su “descubrimiento”.
5.- Esta publicación NO SE HACE RESPONSABLE ni tienen por qué COMPARTIR           Pues bien, HACKER no es mas que una persona que posee conocimientos
las opiniones personales vertidas por sus colaboradores, por lo que NO            avanzados sobre una materia en concreto, normalmente relacionados con
SOMOS RESPONSABLES de las mismas.                                                 la tecnología aunque ni mucho menos limitado a ello. Ponen sus aptitudes
6.- Cualquier texto publicado estará bajo las protecciones de DERECHOS            al servicio de un único objetivo: EL CONOCIMIENTO. Desean conocer el
DE AUTOR y no se permite su copia, publicación, modificación o distribución       funcionamiento de "las cosas" y no encuentran límites en sus camino mas
sin antes obtener el permiso de esta editorial. De este punto quedan exentos      que su propia curiosidad. No se dedican a destruir ni a causar estragos
aquellos textos que han sido obtenidos de terceros y/o que están sujetos          entre sus "victimas", no se dedican a robar ni a chantajear ni a regodearse
a otras licencias (ya sean por parte de su autor o por terceros).                 de sus "conquistas", muy al contrario suelen advertir a terceros de las
7.- Si desean ponerse en contacto con nuestro departamento jurídico,              debilidades de sus sistemas y, desgraciadamente, esos "terceros" en lugar
rogamos enviar mail a juridico@hackxcrack.com                                     de agradecerles su aviso se dedican a denunciarlos o perseguirlos… aunque
                                                                                  no siempre es así, por supuesto, muchas compañías y gobiernos han
PARA NUESTROS LECTORES:                                                           aprendido lo valiosos que son los HACKERS y ahora algunos son colaboradores
                                                                                  (o empleados) de estos. BILL GATES es un HACKER (el papá ventanas),
Como podréis ver, esta no es una revista mas, por primera vez tenéis ante         como Linus Torvalds (el papá Linux) o Grace Hooper (la Almirante,
vosotros una publicación LIBRE que os ofrecerá la posibilidad de explorar         creadora del Lenguaje COBOL), los autores del COREWAR Robert Thomas
la red tal y como debe explorarse ;)                                              Morris, Douglas McIlroy y Victor Vysottsky (precursores de los
                                                                                  creadores de virus informáticos), Fred Cohen (el primer investigador y
Esta publicación responde a la pregunta mas veces expuesta en LA RED:             autor de los virus de la historia), Dennis Ritchie y Ken Thompson
¿Como puedo ser un hacker? Bien, ahora seguro que muchos ya se están              ("hacedores" del Lenguaje C y co-creadores del SO UNIX), Gary Kildall
"sonriendo" y pensando lo ilusos que somos al intentar "eregirnos" en             (autor del sistema operativo CMP y CPM/86), Tim Paterson (autor del
"portadores de LA LUZ", pensando que seremos una "escuela de lamers"              Quick & Dirty DOS), Morris (autor de "The tour of the Worm"), Kevin
y similares a otras publicaciones que, entre sus 100 páginas de revista solo      Mitnick (el más buscado por el FBI), Phiber Optik (líder juvenil convertido
contiene 5 de "material utilizable" (si es que puede llamarse así).               en símbolo de los hackers), Richard Stallman (impulsor del software
                                                                                  libre y GNU), Johan Helsingius (primer conductor de un Remailer
Pues NO, lo siento, vosotros seréis nuestros jueces y, llegado el caso,           Anónimo), Chen Ing-Hou (autor del virus CIH -Chernobyl- ), Sir Dyistic
NUESTROS VERDUGOS.                                                                 (creadorutor del Back Orifice), David L. Smith (virus Melissa), Reonel
                                                                                  Ramonez (virus LoveLetter), Vladimir Levin (Robó electrónicamente
Nuestro objetivo es: ACABAR CON LA BASURA DE LA RED (lamers y demás               10 millones de dólares al Citibank), y muchos mas. ¿Cómo? ¿Pero no hemos
"esencias") con el único método que conocemos: LA EDUCACIÓN y con un              dicho que los hackers no comenten delitos? Pues NO, vuelve a leer su
única bandera que será por siempre nuestra firma: SOLO EL CONOCIMIENTO            definición… pero claro, de todo hay en la viña del señor, y al igual que hay
TE HACE LIBRE
         LIBRE.                                                                   delincuentes entre el clero hay hackers que en un momento u otro han
                                                                                  ·caido· en la ilegalidad, nadie es perfecto!!!!! … y Bill Gates es un HACKER?
Estos son nuestros pilares: LA EDUCACIÓN Y EL CONOCIMIENTO Para ser
                                                CONOCIMIENTO.                     Por supuesto, solo tienes que leerte su biografía. ¿Sorprendido? Espero
un HACKER (maldita palabra mal entendida por unos y peor utilizada por            que no, porque eso no es nada mas que un cero a la izquierda en comparación
otros) solo hace falta dos cosas: curiosidad y medios, a partir de ahora la       con lo que vas a encontrar en esta revista.




  PC PASO A PASO Nº 9                                                                                                                          Página 3
EDITORIAL:

                      gracias a todos

Si eres lector habitual o miembro de EL
F O R O    d e    H a c k   x   C r a c k




                                                               INDICE
(www.hackxcrack.com) ya sabes que
debido a causas mayores AZIMUT me ha
sustituido como director durante los
números 7 y 8.

No tengo palabras para agradecerle el
gran trabajo que ha realizado sacando
adelante esta revista. Hace pocos días
AZIMUT me pidió que cuando escribiese                          3 DECLARACION DE INTENCIONES
esta editorial no le mencionase a él
sino (en sus palabras) “a los verdaderos                       4 EDITORIAL
a r t í f i c e s        d e l   m i l a g r o :       l o s
c o l a b o r a d o r e s ”. E s c i e r t o , d e b e m o s   5   CURSO    DE    LINUX(II)   SISTEMA   DE   ARCHIVOS
agradecerle                que   sigamos           en     la
“palestra” a muchas personas que han                           13 GANADOR DEL CONCURSO SUSE LINUX
c o l a b o ra d o        c o n  H X C      d e    fo r m a
totalmente desinteresada, a los                                14 SERVIDOR DE HXC. MODO DE EMPLEO
miembros del foro que nos ayudan con
sus críticas, a los moderadores que                            15 APACHE:    - CONFIGURACION.
mantienen un lugar donde hablar                                              - COMPARTE ARCHIVOS MEDIANTE WEB
libremente, a los maquetadores que han
trabajado noches enteras y con prisas,                         25 COLABORA CON NOSOTROS
y no hace falta seguir porque la lista
es muy larga y podría dejarme a                                26 CURSO DE VISUAL BASIC:          - MI PRIMERA DLL.
alguien.                                                                                          - ACCESO A DATOS

GRACIAS,            GRACIAS           y    GRACIAS.            36 SUSCRIPCIONES

Espero que este número 9 os guste                              37 TECNICAS DE PORT SCANNING. USO DEL NMAP
tanto como los dos anteriores y os
anuncio que se preparan cambios                                45 PROTOCOLOS Y SU SEGURIDAD: IRC
importantes que ayudarán a que esta
revista llegue tan lejos como todos                            65 BAJATE LOS LOGOS DE PC PASO A PASO (HXC)
deseamos: Ya sabes que en EL FORO
anunciamos las novedades, pásate de                            66 CONCURSO DE SUSE LINUX 8.2
vez en cuando y lee la sección de
COMUNICADOS.                                                   67 NUMEROS ATRASADOS

Un enorme saludo a todos y os dejo con
la revista.




 Página 4                                                                                        PC PASO A PASO Nº 9
gnu linux (II)
             El Sistema de Archivos

          1.- Introducción                                           un determinado nombre. Esto quiere decir que si
                                                                     hemos guardado nuestros datos en un archivo
          Habiendo presentado en artículos anteriores el             llamado ejemplo.txt y luego queremos guardar más
          sistema GNU/LiNUX, vamos a ir profundizando poco           datos en la misma ubicación, tendremos que
          a poco en los aspectos que lo definen. En concreto         guardarlos en un archivo con un nombre distinto
          en el presente artículo se tratará el Sistema de           como ejemplo2.txt.
          Archivos de este Sistema Operativo (S.O.). En el
          próximo artículo pasaremos a describir diversas            2.1.- Tipos de archivo
          tareas administrativas como administración de
          usuarios, dispositivos, etc...                             Los archivos pueden contener diversos tipos de
          Aunque parece fuera de toda lógica, la razón de            información. Básicamente podremos clasificar los
          posponer estos temas a un tercer capítulo es la            archivos conforme a su contenido de la siguiente
          siguiente: Tanto la administración de usuarios, como       manera:
          la de servicios o la de dispositivos requiere de un
          conocimiento al menos básico del Sistema de Archivos       1.- Datos de usuario: Información que crea y
          dado que en este recaerán cosas tan importantes            actualiza un usuario. Puede ir desde un simple
          como permisos, cuotas, etc....                             archivo de texto, hasta archivos más complicados
          Centrándonos ya en el tema que hoy tratamos, no            generados por aplicaciones de usuario tales como
          cabe duda de que tratar con archivos y directorios         aplicaciones CAD, procesadores de texto, etc....
          así como comprender la estructura en la que estos
          se distribuyen en el disco es algo de importancia          2.- Datos del sistema: Información, normalmente
          vital. No ya para comprender GNU/LiNUX sino                en formato de texto plano, que contienen información
          cualquier S.O.                                             sobre como está configurado nuestro sistema. Un
          Tal como dijimos en pasados artículos, GNU/LiNUX           ejemplo de este tipo de archivos será el archivo
          es un S.O. deudor de UNiX y como veremos a lo              /etc/passwd que contiene información relevante sobre
          largo de este artículo, esto también se notará en          las cuentas de usuario. Obviamente este tipo de
          su Sistema de Archivos. Una vez más, el objetivo           archivos es manejado habitualmente por el
          es que lo que aprendamos en el siguiente artículo          administrador del sistema, estando vedado su uso
          no se limite a la distro XXXX... Es más, si después        al resto de los usuarios.
          de una lectura atenta del artículo hemos aprendido
          algo, esto que hayamos aprendido será aplicable a          3.- Archivos ejecutables: Estos archivos contienen
          cualquier sistema UNiX.                                    instrucciones que el ordenador puede comprender
                                                                     e interpretar. Son los llamados programas o
                                                                     ejecutables.
          2.- Archivos
                                                                     4.- Archivos de dispositivo: Como se dijo en el
          El concepto básico de un archivo, con el que casi
                                                                     artículo anterior, una característica que determina
          todos estamos probablemente familiarizados, define
                                                                     el comportamiento de los sistemas UNiX-like, es que
          a "archivo" como un conjunto de datos
                                                                     incluso el acceso al hardware de nuestro ordenador
          independientes que reside en nuestro disco duro.
                                                                     se puede realizar mediante acceso a archivos. Estos
          Con "independientes" queremos decir que podemos
                                                                     archivos un tanto particulares requerirán de un
          tener diversos archivos cuyos contenidos son
                                                                     análisis en mayor profundidad que será abordado
          distintos. Esto hará que sea necesaria la identificación
                                                                     en breve.
          de cada uno de estos archivos de manera que
          podamos identificar el contenido del mismo frente
                                                                     2.2.- Nombres de archivo
          a los demás.
          En GNU/LiNUX identificaremos un archivo por su             En GNU/LiNUX podemos utilizar nombres de archivo
          nombre y su ubicación. En cada ubicación o                 de hasta 256 caracteres. Estos caracteres pueden
          "directorio" sólo podrá existir un único archivo con       ser tanto letras mayúsculas como letras minúsculas,

PC PASO A PASO Nº 9                                                                                                         Página 5
GNU - LINUX (II) SISTEMA DE ARCHIVOS ---- GNU - LINUX (II) SISTEMA DE ARCHIVOS




           números y otros caracteres especiales como el guión      En GNU/LiNUX el directorio que contiene todos los
           (-), el subrayado (_) o el punto (.).                    demás directorios es llamado "directorio raíz".
           En este punto conviene llamar la atención sobre un       Cualquier otro directorio será subdirectorio de este.
           aspecto particular de los sistemas UNiX-like: Los        A partir de este directorio raíz, tras poner un
           nombres de archivos/directorios son case-sensitive;      subdirectorio tras otro, formamos una estructura
           es decir, nombres de archivo que son iguales en          arborescente denominada "árbol de directorios” (ver
           apariencia pero difieren en las mayúsculas y las         fig 1 al final de este artículo)
           minúsculas serán realmente dos nombres de archivo
           distintos. Así por ejemplo los siguientes nombres de     3.3.-       Nombres           de     directorio
           archivos pueden coexistir en una misma ubicación         Los directorios se nombran de la misma manera que
           dado que son archivos distintos: ejemplo.txt,            los archivos; es decir siguiendo la misma regla de
           ejemplo.TXT, Ejemplo.txt, EJEMPLO.TXT,                   caracteres que se pueden utilizar y los que no y
           EjEmPlO.txt, 3j3mp10_h4ch0r_d3_3s0s.txt....              observando el case-sensitive.
           Quitando el último ejemplo que es una dedicación         El carácter barra inclinada (/) es utilizado para
           personal a las reinonas del glam que pululan por         referirnos a directorios o archivos que están dentro
           doquier, creo que queda bien reflejado el sentido        de     un     directorio.        Por      ejemplo,
           del párrafo anterior.                                    artículoshxc/artículo2.abw, nos dice que el archivo
           Existirán así mismo una serie de meta caracteres         artículo2.abw se encuentra dentro del directorio
           que no podrán formar parte del nombre de un              artículoshxc. Así mismo con el siguiente ejemplo
           archivo. Es el caso de los asteriscos (*), signo de      artículoshxc/grafs nos estamos refiriendo a un
           interrogación (?), barra invertida (), etc... Debido    subdirectorio, grafs que se encuentra bajo el directorio
           a que tendrán un significado concreto para la shell.     artículoshxc.
           Cuando se aborde en profundidad la shell y sus           Nótese que a priori es difícil distinguir cuando nos
           intríngulis veremos más de estos meta caracteres.        estamos refiriendo a un archivo o a un directorio.
                                                                    Más adelante veremos que mediante los comandos
           3.- Directorios                                          adecuados y parámetros no menos adecuados
                                                                    podremos distinguir fácilmente cuando listamos
           GNU/LiNUX, al igual que muchos SS.OO. organizan
                                                                    archivos o directorios. Por ahora puede ser un
           los archivos en directorios. Podemos pensar en los
                                                                    ejercicio interesante observar las distintas salidas
           directorios como en carpetas que contienen archivos
                                                                    que provocan las siguientes invocaciones de comando:
           o a su vez más carpetas.

           3.1.- Directorios                    Padre          y    00 $ ls
                                                                    01 $ ls -F
           Subdirectorios
                                                                    02 $ ls --color
           Imaginemos la siguiente situación: Un directorio A       03 $ ls --color -F
           que contiene un directorio B. Llamaremos a B
           subdirectorio del directorio A, y el directorio A será   En cuanto a la salida es probable que muchos no
           el directorio padre del directorio B.                    observéis diferencias. Esto es debido a que sobre
           Esto que a algunos les parecerá una perogrullada         todo las dos últimas opciones (02 y 03) vienen ya
           (sobre todo a los que, como servidor, peinan canas)      activadas "de serie". Por supuesto nosotros
           he decidido ponerlo, no ya para rellenar espacio         aprenderemos a "activar opciones de serie" cuando
           como barruntan las mentes malpensantes, sino como        nos enfrentemos al artículo "La shell y tú: una historia
           una necesidad perentoria. ¿Lo qué? Pues eso; como        de lujuria".
                                                                    El directorio raíz será siempre mostrado con un
           tengo la fortuna de dedicarme a esto de la enseñanza
                                                                    carácter / en vez de referirnos a él con un nombre.
           de rerum calculum machinae, puedo asegurar que
                                                                    No debe causarnos confusión el distinguir cuando
           de los nacidos en el 85 en adelante casi nadie ha
                                                                    el carácter / se utiliza para separar nombres de
           utilizado en su vida algo similar a una línea de         directorios o cuando se utiliza para referirse al
           comandos y que incluso pasar del concepto de             directorio raíz. En este último caso jamás irá precedido
           "carpeta" al de directorio a menudo trae problemas.      de un nombre. Así al escribir /usr/bin nos estamos
                                                                    refiriendo al directorio bin que cuelga del directorio
           3.2.- El directorio raíz: La madre                       usr que a su vez cuelga del directorio / (raíz).
           (¿padre?) de todos los directorios

Página 6                                                                                                      PC PASO A PASO Nº 9
GNU - LINUX (II) SISTEMA DE ARCHIVOS ---- GNU - LINUX (II) SISTEMA DE ARCHIVOS




          3.4- El directorio Home                                      de trabajo. Para ver las numerosas opciones que
                                                                       soporta este comando podemos teclear ls --help |
          GNU/LiNUX proporciona a cada usuario su propio               more (¿quién no se estudió el capítulo de
          directorio. Este es el llamado "directorio home" o           fontanería....? ;o) )
          "directorio casa". Dentro de este directorio cada
          usuario puede guardar sus propios archivos y crear           4.2.- Nombres de archivo absolutos
          sus propios subdirectorios.
                                                                       y relativos
          Dependiendo del sistema GNU/LiNUX que se utilice,
          los demás usuarios podrán acceder o no a los
                                                                       Cuando especificamos el nombre de un archivo,
          archivos de un usuarios determinado.
                                                                       GNU/LiNUX lo busca en el directorio de trabajo. Si
          La localización del directorio home puede ser
                                                                       el archivo no se encuentra en el directorio de trabajo
          cambiada por el administrador, pero habitualmente
                                                                       se nos mostrará un mensaje de error:
          este tipo de directorios se encuentran bajo el
          directorio /home.
                                                                       00 luis@el_chaman ~ $ ls cosa
                                                                       01       cosa
          4.- Navegando por el Sistema de                              02 luis@el_chaman ~ $ ls cosa2
          Archivos de GNU/LiNUX                                        03       ls: cosa: No existe el archivo o directorio

          Navegar por el sistema de archivos GNU/LiNUX es              En algunas ocasiones nos interesará referirnos a un
          una tarea harto sencilla: tan sólo tendremos que             archivo que no se encuentre en el directorio de
          aprender dos comandos y uno de ellos ni siquiera             trabajo. Entonces nos tendremos que referir al
          posee parámetros.                                            archivo diciendo el directorio donde se encuentra
                                                                       y el propio nombre del archivo.
          4.1.- El comando pwd: ¿Dónde estoy?
                                                                       00 luis@el_chaman ~ $ ls artículoshxc/artículo2.abw
          Tecleemos el comando pwd. Observaremos algo                  01       artículo2.abw
          como:                                                        02 luis@el_chaman ~ $

          00 luis@el_chaman ~ $ pwd                                    En el ejemplo vemos como si queremos listar el
          01       /home/luis                                          archivo artículo2.abw que se encuentra dentro del
          02 luis@el_chaman ~ $                                        subdirectorio artículoshxc debemos de especificar
                                                                       el nombre del subdirectorio y el nombre del archivo.
          Esto quiere decir que nos encontramos en el directorio       A esta manera de hacer las cosas se le denomina
          /home/luis. Este directorio (en el que nos                   nombre de archivo relativo dado que la ruta (path)
          encontremos en cada momento) será conocido como              hacia el archivo que buscamos es relativa a nuestro
          directorio de trabajo o directorio actual. Este es el        directorio de trabajo; es decir, a donde nos
          directorio home para el usuario luis. Por defecto,           encontramos en un determinado momento. Si
          cuando entramos en nuestro sistema, GNU/LiNUX                cambiásemos de directorio de trabajo, este manera
          nos deposita en nuestro directorio home.                     de referirnos al archivo artículo2.abw ya no nos
                                                                       serviría.
          El término pwd corresponde al acrónimo print working
          directory. Esto nos muestra otra costumbre bastante          Además, puede parecer que esto nos permite realizar
          común en los entornos UNiX-like: la abreviación de           llamadas relativas sobre subdirectorios (es decir,
          comandos de manera que sean fáciles de teclear.              directorios que se encuentran por debajo de donde
                                                                       nos encontramos nosotros). Esto no es del todo
          Una vez que estamos situados en un directorio,
                                                                       cierto dado que existen dos directorios especiales
          querremos saber que contiene. Para ello, se utiliza
                                                                       que nos permitirán hacer cosas curiosas: . (directorio
          el comando ls.
                                                                       de trabajo) y .. (directorio padre del directorio de
          00 luis@el_chaman ~ $ ls                                     trabajo). Así por ejemplo todas las siguientes llamadas
          01       artículoshxc cosa multimedia public_html            son nombres de archivos relativos al directorio de
          02 luis@el_chaman ~ $                                        trabajo actual:

          El comando ls (list) nos lista el contenido del directorio   00 luis@el_chaman ~ $ ls ./artículoshxc/artículo2.abw


PC PASO A PASO Nº 9                                                                                                              Página 7
GNU - LINUX (II) SISTEMA DE ARCHIVOS ---- GNU - LINUX (II) SISTEMA DE ARCHIVOS




           01     artículo2.abw                                        13 luis@el_chaman $ pwd
           02 luis@el_chaman ~ $ ls ../tuxed/visio.iso                 14       /
           03     visio.iso
                                                                       El directorio raíz no posee padre, así que si ahora
           En el segundo comando .. significa que subimos un           tecleásemos cd .. (obsérvese el espacio obligatorio
           nivel, nos metemos dentro del directorio home del           entre cd y los dos puntos) seguiríamos estando en
           usuario tuxed y listamos el archivo visio.iso. Por          el directorio raíz.
           cierto, este archivo nada tiene que ver con cierta
           aplicación comercial de la que no se puede realizar         Si tecleamos simplemente cd sin pasarle argumentos,
           copias sin el consentimiento expreso de MicroSoft.          automáticamente nos lleva a nuestro directorio home:

           La otra manera de referirnos a estos archivos sería         00 luis@el_chaman $ pwd
           mediante el uso de la ruta que va desde el directorio       01       /usr/doc
           raíz hasta donde se encuentra el archivo que                02 luis@el_chaman $ cd
           queremos sin tener en cuenta para nada el directorio        03 luis@el_chaman $ pwd
           de trabajo. A esta manera de hacer las cosas se le          04       /home/luis
           denomina nombre de archivo absoluto. El ejemplo
           arriba mostrado quedaría de la siguiente manera:            Es bastante común en las últimas distribuciones que
                                                                       el propio prompt (el texto que aparece a la derecha)
           00     luis@el_chaman                 ~ $   ls              nos diga en todo momento en que directorio nos
           /home/luis/artículoshxc/artículo2.abw                       encontramos. Recordad que no todos los GNU/LiNUX
           01       artículo2.abw                                      y mucho menos todos los UNiX están configurados
           02 luis@el_chaman ~ $ ls /home/tuxed/visio.iso              de esta manera. Además, siempre es bueno conocer
           03       visio.iso                                          lo que funcionará en todos los sitios. Como
                                                                       anecdotario particular, la salida real en mi sistema
           4.3.- Nos vamos a hacer turismo por                         de los ejemplos anteriores tiene más bien el siguiente
                                                                       aspecto:
           el disco duro: El comando cd
                                                                       00 luis@el_chaman ~ $ cd /home/luis
           El comando cd (change directory) nos permitirá
                                                                       01 luis@el_chaman ~ $ pwd
           cambiar de directorio de trabajo. Es decir, nos
                                                                       02       /home/luis
           moveremos a otro directorio. La sintaxis de este
                                                                       03 luis@el_chaman ~ $ cd ..
           comando es la siguiente:
                                                                       04 luis@el_chaman /home $ pwd
                                                                       05       /home
           00 cd <directorio_destino>
                                                                       06 luis@el_chaman /home $ cd luis/artículoshxc
                                                                       07 luis@el_chaman ~/artículoshxc $ pwd
           El espacio entre cd y <directorio_destino> es
                                                                       08       /home/artículoshxc/
           obligatorio. El directorio de destino puede ser el
                                                                       09 luis@el_chaman ~/artículoshxc $ cd /usr/doc
           nombre absoluto o relativo de un directorio. Veamos
                                                                       10 luis@el_chaman /usr/doc $ pwd
           algunos ejemplos:
                                                                       11       /usr/doc
                                                                       12 luis@el_chaman /usr/doc $ cd /
           00 luis@el_chaman $ cd /home/luis     //Camino absoluto
                                                                       13 luis@el_chaman / $ pwd
           01 luis@el_chaman $ pwd
                                                                       14       /
           02        /home/luis
                                                                       15 luis@el_chaman / $ cd
           03 luis@el_chaman $ cd ..             //Camino relativo
                                                                       16 luis@el_chaman ~$ pwd
           04 luis@el_chaman $ pwd
                                                                       17       /home/luis
           05        /home
           06 luis@el_chaman $ cd luis/artículoshxc//Camino relativo
                                                                       Obsérvese que por abreviar el directorio home se
           07 luis@el_chaman $ pwd
                                                                       escribe con el símbolo ~
           08       /home/artículoshxc/
           09 luis@el_chaman $ cd /usr/doc       //Camino absoluto
           10 luis@el_chaman $ pwd                                     5.- Creando y borrando archivos
           11       /usr/doc
           12 luis@el_chaman $ cd /             //Camino absoluto      GNU/LiNUX dispone de diversas maneras de crear


Página 8                                                                                                        PC PASO A PASO Nº 9
GNU - LINUX (II) SISTEMA DE ARCHIVOS ---- GNU - LINUX (II) SISTEMA DE ARCHIVOS




          y eliminar archivos. De hecho, algunas de estas             00 luis@el_chaman ~ $ cat /dev/cdrom > imagenCD.iso
          maneras son tan simples de realizar que muchas
          veces tenemos que tener cuidado de no borrar o              Pero antes de meternos en tamaños berenjenales,
          sobrescribir accidentalmente archivos.                      vamos a hablar un poco sobre este gatito. El comando
                                                                      cat funciona de la siguiente manera: toma como
          Inicialmente vamos a crear un archivo utilizando las        entrada el primer parámetro que le pasemos y nos
          redirecciones de entrada/salida. Las redirecciones          muestra su contenido.
          funcionan de la siguiente manera: Una redirección           Por defecto, si se invoca sin ningún parámetro, se
          de salida (>) desvía el flujo de información generado       toma como entrada la entrada estándar (es decir,
          por un programa y que se destina a la salida estándar       el teclado). Veamos un ejemplo:
          hacia otra ubicación, normalmente un archivo. Una
          redirección de entrada (<) desvía el flujo de datos         00 luis@el_chaman ~ $ cat
          de entrada estándar, es decir el teclado, a otra            01       Hola, esto es una prueba. Ahora doy a ENTER
          fuente de datos; normalmente un fichero.                    02       Hola, esto es una prueba. Ahora doy a ENTER
                                                                      03       y sigo en la siguiente línea.
          Vamos a crear nuestro primer fichero mandando               04       y sigo en la siguiente línea.
          todo aquello que debería de salir por pantalla a un         05       ¿Cómo salgo de aquí por Dios?
          archivo. Para ello, vamos a teclear la siguiente            06       ¿Cómo salgo de aquí por Dios?
          secuencia de comandos:                                      07       <Ctrl-D>
                                                                      08       EOF
          00 luis@el_chaman ~ $ cd
          01 luis@el_chaman ~ $ ls -l /bin > ejecutables_en_bin.txt   Parece que nos hemos atascado, compañeros
          02 luis@el_chaman ~ $ ls ejecutables_en_bin.txt             padawanes. Cada vez que le damos a ENTER el gatito
          03        ejecutables_en_bin.txt                            este se empeña en repetir lo que hemos escrito.
          04 luis@el_chaman ~ $                                       Muy bien. Para salir de esta pesadilla lo que tenemos
                                                                      que hacer es presionar la combinación Ctrl-D (
          Tras teclear lo arriba mostrado, habremos generado          Control + D) si estamos al principio de una línea o
          un archivo de texto que contiene un listado de los          Ctrl-D, Ctrl-D (dos veces) si estamos al final. Esto
          archivos contenidos en el directorio /bin. Para que         insertará el carácter fin de archivo (EOF, end of file)
          nos hagamos una idea de lo que contendrá ese                con lo que habremos terminado.
          archivo, basta con que volvamos a ejecutar el
          comando pero sin redireccionar ahora la salida:             Bueno, hemos visto que todo lo que escribíamos se
                                                                      mandaba a la salida estándar. ¿Qué ocurriría si
          00 luis@el_chaman ~ $ cd                                    redireccionamos las salida estándar a un fichero?:
          01 luis@el_chaman ~ $ ls -l /bin
                                                                      00 luis@el_chaman ~ $ cat > nuevo_fichero.txt
          Ahora bien; ¿cómo podemos ver el contenido del              01       Hola, esto es una prueba. Ahora doy a ENTER
          archivo?. De nuevo existirán varias maneras; listo          02       y sigo en la siguiente línea.
          algunas pero nos quedaremos con la última por ser           03       ¿Cómo salgo de aquí por Dios?
          la más potente:                                             04 <Ctrl-D>

          00 luis@el_chaman ~ $ more ejecutables_en_bin.txt           Bueno, parece que el gato este ahora no es tan
          01 luis@el_chaman ~ $ less ejecutables_en_bin.txt           respondón. Pulsamos de nuevo Ctrl-D y veremos
          03 luis@el_chaman ~ $ cat ejecutables_en_bin.txt            que volvemos al prompt del sistema.

          5.1.- cat: Sobre gatos y otros bichos                       00 luis@el_chaman ~ $
                                                                      01 luis@el_chaman ~ $ cat nuevo_fichero.txt
          El comando cat es uno de los más simples, útiles y          02       Hola, esto es una prueba. Ahora doy a ENTER
          versátiles comandos de los que disponemos en                03       y sigo en la siguiente línea.
          GNU/LiNUX. Para que os hagáis una idea: ¿Cómo               04       ¿Cómo salgo de aquí por Dios?
          creo una imagen ISO de un CDROM? ¿Nero? ¿Algo               05 luis@el_chaman ~ $
          similar? Agárrense vuesas mercedes los machos y
          dispongan a asombrarse:                                     Bueno, lo que hemos hecho es utilizar ahora cat


PC PASO A PASO Nº 9                                                                                                             Página 9
GNU - LINUX (II) SISTEMA DE ARCHIVOS ---- GNU - LINUX (II) SISTEMA DE ARCHIVOS




            como visualizador. Simplemente hemos tecleado cat        09       Este es un texto modosito que hacemos para
            nuevo_fichero.txt y el gatito nos muestra el contenido   probar una cosa. Versión dos.
            de dicho fichero. Si quisiéramos añadir más texto        10 luis@el_chaman ~ $
            teclearíamos:
                                                                     Como vemos cat se ha encargado en la línea 06 los
            00 luis@el_chaman ~ $ cat >> nuevo_fichero.txt           archivos otro_fichero1.txt y otro_fichero2.txt mandando
            01       Este es texto añadido                           el contenido al fichero otro_fichero3.txt.
            02       <Ctrl-D>
            03 luis@el_chaman ~ $ cat nuevo_fichero.txt              5.2.- Creando directorios
            04       Hola, esto es una prueba. Ahora doy a ENTER
            05       y sigo en la siguiente línea.                   Para crear un nuevo directorio tendremos que usar
            06       ¿Cómo salgo de aquí por Dios?                   el comando mkdir. La sintaxis de este comando es
            07       Este es texto añadido.                          mkdir <nombre> donde <nombre> es el nombre que
            08 luis@el_chaman ~ $                                    queremos dar al directorio:

            Es decir, un único comando de sistema nos puede          00 luis@el_chaman ~ $ ls
            servir de editor de supervivencia. Eso sí, su uso        01        artículoshxc      cosa           multimedia
            requiere de mucho cuidado. Fijémonos en la línea           nuevo_fichero.txt otro_fichero1.txt
            00. La redirección ha sido sustituida por unos >>.       02        otro_fichero2.txt       otro_fichero3.txt
            Esto quiere que la redirección se comporta como          public_html
            antes pero que añade texto al texto existente. Si        03 luis@el_chaman ~ $ mkdir ejercicios_hxc
            sólo pusiéramos un único > sustituiría el antiguo        04 luis@el_chaman ~ $ ls
            texto por el nuevo (se recomienda experimentar           05        artículoshxc    cosa          ejercicios_hxc
            con esto).                                                  multimedia nuevo_fichero.txt otro_fichero1.txt
                                                                     06 otro_fichero2.txt   otro_fichero3.txt public_html
            Bueno, y podríamos decir que ya hemos terminado
            con el gatito. Bueno, alguien se preguntará el
                                                                     5.3.- Moviendo y copiando archivos,
            porqué de que me haya estado refiriendo
            constantemente a este comando como el gatito. La         mareando la perdiz
            razón es que cat en inglés significa gato. Vale, la
            tontería del número nueve. ¿Pero por qué demonios        A menudo necesitaremos mover o copiar archivos.
            llaman a un comando gato? ¿ Por qué no perro,            Cabe destacar que el término mover en informática
            asno,....? Bueno la razón de ello es que cat NO          se refiere a realizar una copia de un elemento
            significa gato. El significado de este comando es de     borrando el original. Copiar, por el contrario, se
            nuevo una abreviatura que corresponde a la palabra       refiere a hacer una copia conservando el elemento
            inglesa concatenate, concatenar. Y esto es porque        original.
            este comando se construyó para concatenar (unir)
                                                                     Los comandos que tenemos para mover y copiar
            archivos. Veamos a cat en acción en el terreno que
                                                                     son respectivamente:
            mejor domina: la concatenación:

                                                                     mv <origen> <destino>
            00 luis@el_chaman ~ $ cat > otro_fichero1.txt
                                                                     cp <origen> <destino>
            01        Este es un texto modosito que hacemos para
            probar una cosa. Versión uno
                                                                     Vamos a ver algunos ejemplos de uso:
            02       <Ctrl-D>
            03 luis@el_chaman ~ $ cat > otro_fichero2.txt
                                                                     01 luis@el_chaman ~ $ ls
            04        Este es un texto modosito que hacemos para
                                                                     02       artículoshxc    cosa          ejercicios_hxc
            probar una cosa. Versión dos.
                                                                        multimedia nuevo_fichero.txt otro_fichero1.txt
            05       <Ctrl-D>
                                                                     03       otro_fichero2.txt        otro_fichero3.txt
            06 luis@el_chaman ~ $ cat otro_fichero1.txt
                                                                     public_html
            otro_fichero2.txt > otro_fichero3.txt
                                                                     04 luis@el_chaman ~ $ mv ejercicios_hxc ejercicioshxc
            07 luis@el_chaman ~ $ cat otro_fichero1.txt
                                                                     05 luis@el_chaman ~ $ ls
            08        Este es un texto modosito que hacemos para
                                                                     06       atículoshxc     cosa           ejercicioshxc
            probar una cosa. Versión uno
                                                                         multimedia nuevo_fichero.txt otro_fichero1.txt

Página 10                                                                                                     PC PASO A PASO Nº 9
GNU - LINUX (II) SISTEMA DE ARCHIVOS ---- GNU - LINUX (II) SISTEMA DE ARCHIVOS




          07       otro_fichero2.txt      otro_fichero3.txt                multimedia      nuevo_fichero.bck public_html
          public_html                                                 09 luis@el_chaman ~ $ ls ejercicioshxc
          08 luis@el_chaman ~ $ cp nuevo_fichero.txt                  10        cosa     multimedia nuevo_fichero.bck
          nuevo_fichero.bck                                           nuevo_fichero.txt otro_fichero1.txt otro_fichero2.txt
          09 luis@el_chaman ~ $ ls                                     otro_fichero3.txt
          10       artículoshxc      cosa      ejercicioshxc          11 luis@el_chaman ~ $
             multimedia nuevo_fichero.txt nuevo_fichero.bck
          11       otro_fichero1.txt      otro_fichero2.txt           En la línea 01 movemos el directorio cosa (y todo lo
          otro_fichero3.txt public_html                               que contenga) al directorio ejercicioshxc, quedando
                                                                      dentro de este. En 06 sin embargo hacemos una
                                                                      copia de multimedia y todo lo que contenga
          En la línea 04 lo que hacemos es mover el directorio        recursivamente y la situamos dentro de ejercicioshxc.
          que creamos anteriormente; equivale a renombrarlo.          Obsérvese el parámetro -R (de recursive, recursivo)
          En la línea 08 realizamos una copia de                      que es el que indica que se debe de copiar el
          nuevo_fichero.txt a nuevo_fichero.bck.                      directorio y todo sus contenidos (incluyendo posibles
                                                                      subdirectorios). Podemos consultar más parámetros
          El uso común de estos comandos suele ser utilizarlos        de mv o cp tecleando man mv o man cp
           junto con comodines. Los comodines son una serie
          de caracteres especiales que sustituyen partes del          5.4.- Borrando archivos y directorios:
          nombre de un archivo (*) o letras del mismo (?).            Jugamos con fuego.
          Así los siguientes comandos:
                                                                      Antes de nada asegurémonos que no estamos como
          01 luis@el_chaman ~ $ cp * /tmp                             usuario root (administrador) dado que si metemos
          02       Omitiendo artículoshxc: Es un directorio           la pata y borramos algo que no debemos la cosa
          03       Omitiendo cosa: Es un directorio                   tendrá difícil solución. Sin embargo si un usuario
          04       Omitiendo ejercicioshxc: Es un directorio          normal intentase borrar archivos delicados para el
          05       Omitiendo multimedia: Es un directorio             sistema, éste no le dejaría. En próximos apartados
          06       Omitiendo public_html: Es un directorio            veremos la razón de esto.
          07 luis@el_chaman ~ $ mv *.txt ejercicioshxc
          08 luis@el_chaman ~ $ cp *.bc? ejercicioshxc                El comando por antonomasia para el borrado es rm
                                                                      (de remove, eliminar) cuya sintaxis es: rm <nombre>
          En la línea 01, copiamos TODOS los archivos (no             donde nombre es el nombre de archivo a borrar. Al
          directorios) que hay en el directorio de trabajo al         igual que cp y mv admite comodines lo cual puede
          directorio /tmp. En la línea 07 movemos todos los           resultar peligroso. Veamos algunos ejemplos:
          archivos que terminen en .txt al directorio ejercicioshxc
          y en la línea 08 copiamos todos los archivos que            01 luis@el_chaman ~ $ cd ejercicioshxc
          terminen en .bc? siendo ? cualquier carácter (por           02 luis@el_chaman ~/ejercicioshxc $ ls
          ejemplo nuevo_fichero.bck o mikasa.bcx).                    03        cosa      multimedia nuevo_fichero.txt
                                                                      nuevo_fichero.txt otro_fichero1.txt otro_fichero2.txt
          Podemos así mismo mover directorios a otra                   otro_fichero3.txt
          ubicación o copiar estructuras enteras de directorios:      04 luis@el_chaman ~/ejercicioshxc $ rm
                                                                      nuevo_fichero.txt
          01 luis@el_chaman ~ $ mv cosa ejercicioshxc                 05 luis@el_chaman ~/ejercicioshxc $ ls
          02 luis@el_chaman ~ $ ls                                    06        cosa     multimedia nuevo_fichero.bck
          03        artículoshxc     ejercicioshxc multimedia         otro_fichero1.txt otro_fichero2.txt otro_fichero3.txt
               nuevo_fichero.bck public_html                          07 luis@el_chaman ~/ejercicioshxc $ rm otro_*
          04 luis@el_chaman ~ $ ls ejercicioshxc                      08 luis@el_chaman ~/ejercicioshxc $ ls
          05        cosa nuevo_fichero.bck nuevo_fichero.txt          09        cosa     multimedia nuevo_fichero.bck
           otro_fichero1.txt otro_fichero2.txt otro_fichero3.txt      10 luis@el_chaman ~/ejercicioshxc $
          06 luis@el_chaman ~ $ cp multimedia ejercicioshxc -
          R                                                           Una manera segura de utilizar siempre el comando
          07 luis@el_chaman ~ $ ls                                    rm es añadirle el parámetro -i. Esto hará que cada
          08        artículoshxc       ejercicioshxc                  vez que queramos borrar un determinado archivo


PC PASO A PASO Nº 9                                                                                                           Página 11
GNU - LINUX (II) SISTEMA DE ARCHIVOS ---- GNU - LINUX (II) SISTEMA DE ARCHIVOS




            nos pregunte si realmente queremos hacerlo o no:         directorio (podría ser perfectamente un archivo
                                                                     normal) multimedia. El primer luis significa el
            01 luis@el_chaman ~/ejercicioshxc $ ls                   propietario del archivo/directorio y el segundo usr
            02       cosa     multimedia nuevo_fichero.bck           representa al grupo de usuarios al que pertenece el
            03 luis@el_chaman ~/ejercicioshxc $ rm -i                archivo/directorio.
            nuevo_fichero.bck
            04       rm: ¿ borrar "nuevo_fichero.bck"? (s/n) n       6.1.- Cambiando propietarios.
            05 luis@el_chaman ~/ejercicioshxc $
                                                                     Imaginemos la siguiente situación: deseamos que
            Esta opción viene en muchos sistemas activada por        un archivo del ordenador pase a pertenecer a otra
            defecto para el usuario root.                            persona:
            Para eliminar directorios emplearemos el comando
            rmdir cuya sintaxis es rmdir <nombre_directorio>.        01 luis@el_chaman ~/ejercicioshxc $ cd
            Antes de poder eliminar un directorio nos debemos        /usr/share/pixmaps
            de asegurar de que este esté vacío:                      02 luis@el_chaman /usr/share/pixmaps $ ls -l
                                                                     03 -rw-r--r-- 1 pepe raros 4,0K 2003-04-15 23:00
            01 luis@el_chaman ~/ejercicioshxc $ rmdir cosa           logo.png
            02      rmdir: cosa: El directorio no está vacío
            03 luis@el_chaman ~/ejercicioshxc $ rm cosa/*            En el directorio /usr/share/pixmaps tenemos un archivo
            04 luis@el_chaman ~/ejercicioshxc $ rmdir cosa           llamado logo.png que pertenece al usuario pepe y al
                                                                     grupo raros. Queremos cambiar el propietario a luis
            En ocasiones esta manera de borrar un directorio         y el grupo a users. Lo tendremos que hacer como
            puede resultar extremadamente tediosa, sobre todo        root:
            si el directorio a borrar contiene múltiples niveles
            de subdirectorios. Para poderlo hacer con un único       01 luis@el_chaman ~/ejercicioshxc $ su --
            comando emplearemos las opciones -r (recursive)          02 Password:
            y -f (force) del comando rm:                             03 root@el_chaman/usr/share/pixmaps $ chown
                                                                     luis.users logo.png
            01 luis@el_chaman ~/ejercicioshxc $ rm -rf cosa          04 root@el_chaman /usr/share/pixmaps $ ls -l
                                                                     05 -rw-r--r-- 1 luis users 4,0K 2003-04-15 23:00
            Mucho cuidado con este comando. Imaginaos que            logo.png
            ocurre si como root ejecutamos
                                                                     En el ejemplo se cambia a la vez el grupo y el
            rm -rf /. No ejecutar                                    directorio. Sería posible cambiar por separado el
                                                                     usuario y el grupo. Ejemplos que hacen esto serían:
            6.- Permisos y propietarios de los                       chown luis logo.png,
            ficheros                                                 chown .users logo.png.

            Todos y cada uno de los archivos y directorios de        6.2.- Permisos.
            un sistema GNU/LiNUX poseen permisos. Podremos
            cambiar los permisos y en ocasiones los propietarios     Observemos un momento la siguiente tabla. En ella
            de nuestros archivos con el fin de proporcionar          se nos muestra la notación binaria denominada octal
            mayor o menor grado de acceso a los mismos. Los          debido a que puede mostrar ocho valores distintos.
            permisos también determinan si los archivos pueden
            ejecutarse como un comando o no.
                                                                     Ahora analicemos un momento la salida que nos dio
            Si tecleamos ls -l, veremos una salida similar a esta:   la ejecución del comando ls -l anteriormente
                                                                     ejecutado:
            01 luis@el_chaman ~/ejercicioshxc $ ls -l
            02 drw-r--r-- 1 luis usr  4,0K 2003-04-15                05 -rw-r--r-- 1 luis users...........
            23:00 multimedia
                                                                     Agrupemos ahora esa cadena de erres, guiones y
            La cadena drw-r--r-- representa los permisos del         uves doble en grupos de tres comenzando por la


Página 12                                                                                                     PC PASO A PASO Nº 9
GNU - LINUX (II) SISTEMA DE ARCHIVOS ---- GNU - LINUX (II) SISTEMA DE ARCHIVOS




          izquierda. Obtendremos algo parecido a:                          un significado muy distinto para un directorio. Os
          rwx                                                              invito a que investiguéis qué sucede si damos permiso
          rw- permisos para el propietario al que pertenece                de ejecución o no a un directorio. Utilizad dos
          el archivo                                                       usuarios distintos que pertenezcan a distintos grupos.
          r-- permisos para el grupo al que pertenece el                   Ya me contaréis vuestras experiencias ;o)
          archivo
          r--    permisos para el resto de los usuarios                    7.- Conclusiones
          r: permiso de lectura                                            Una vez más nos quedamos cortos de espacio y
          w: permiso de escritura                                          muchas cosas en el tintero. Aún así espero haber
          x: permiso de ejecución                                          sintetizado lo más importante de los sistemas de
          -: sin permiso                                                   archivos bajo entornos UNíX.
          Teniendo esta información en mente, veamos que
                                                                           Quede como comentario final que debido al espacio
          sucede cuando cambiamos los permisos de un
                                                                           no se ha podido comentar en profundidad la finalidad
          archivo:
                                                                           de cada uno de los directorios. Afortunadamente
                                                                           esta es una información bastante sencilla de
          01 root@el_chaman /usr/share/pixmaps $ ls -l
                                                                           encontrar: http://www.pathname.com/fhs/2.2/ En esta
          02 -rw-r--r-- 1 luis users 4,0K 2003-04-15 23:00
                                                                           página se nos muestra el Filesystem Hierarchy
          logo.png
                                                                           Standard ( Jerarquía Estándar del Sistema de
          03 root@el_chaman /usr/share/pixmaps $ exit
                                                                           Archivos) o dicho de otra manera: Qué va en cada
          04 luis@el_chaman /usr/share/pixmaps $ chmod 755
                                                                           directorio, cuántos directorios puedo encontrarme
          logo.png
                                                                           en un sistema UNiX , qué puedo esperar encontrarme
          05 luis@el_chaman /usr/share/pixmaps $ ls -l
                                                                           en cada uno de ellos, etc.....
          06 -rwxr-xr-x 1 luis users 4,0K 2003-04-15 23:00
          logo.png
                                                                           Una vez leáis esa página comprenderéis el porqué
          Vemos como han cambiado los permisos del archivo,                de la omisión de tan interesante apartado (y vital
          ahora bien, ¿cómo lo hemos hecho? ¿Qué significa                 para el tema que tratamos).
          ese extraño número que he puesto? Fijémonos ahora
          en la tabla adjunta. Concretamente en los números                Saludos.
          binarios. Imaginemos que los 1s activan permisos
          i los 0s los cancelan. Como tenemos que asignar a
          cada grupo de permisos (propietario, grupo y resto
          de usuarios) un valor para lectura, escritura y
          ejecución, lo haremos aplicando a los tres posibles
          p e r m i s o s u n a m á s c a ra . A s í t e n d r e m o s :

                              máscara
                      Inicial Dec   Bin        Resultado                      (Fig 1)
          Propietario rwx      7   111        rwx
          Grupo        rwx     5   101        r-x
          Resto        rwx    5    101        r-x

          Observamos que al escribir chmod 755 archivo, lo                        EL GANADOR DEL
          que hacemos es pasar una máscara binaria a los                       SORTEO DE UN SUSE
          posibles permisos activándolos o desactivándolos                   LINUX 8.2 DEL MES DE
          para el archivo. Sólo podremos cambiar los permisos
                                                                                         FEBRERO                  ES:
          de un archivo si poseemos permiso de escritura
          sobre él.                                                            OSCAR PONS MARTI
                                                                                            MENORCA
          Los permisos pueden ser modificados tanto en                     SEGUIR LLAMANDO, EL PROXIMO
          archivos como en directorios teniendo en cuenta                    PODRIA SER PARA TI (PAG 66)
          que el concepto de "permiso de ejecución" posee

PC PASO A PASO Nº 9                                                                                                                 Página 13
SERVIDOR DE HXC
                              MODO DE EMPLEO


            - Hack x Crack ha habilitado un servidor para que puedas     A partir de ese momento, cualquiera que acceda a ese
            realizar las prácticas de hacking.                           servidor, verá el default.htm modificado para vergüenza
                                                                         del “site” hacheado. Esto es muy genérico pero os dará
            - Actualmente tiene el BUG del Code / Decode y lo            una idea de cómo funciona esto de hackear Webs ;)
            dejaremos así por un tiempo (bastante tiempo ;) Nuestra
            intención es ir habilitando servidores a medida que os       - Cuando accedas a nuestro servidor mediante el CODE /
            enseñemos distintos tipos de Hack, pero por el momento       DECODE BUG, crea un directorio con tu nombre (el que
            con un Servidor tendremos que ir tirando (la economía no     mas te guste, no nos des tu DNI) en la unidad d: a ser
            da para mas).
                                                                         posible (que tiene mas espacio libre) y a partir de ahora
            - En el Servidor corre un Windows 2000 Advanced Server       utiliza ese directorio para hacer tus prácticas. Ya sabes,
            con el IIS de Servidor Web y está en la IP 80.36.230.235.    subirnos programitas y practicar con ellos :)

            - El Servidor tiene tres unidades:                           Puedes crearte tu directorio donde quieras, no es necesario
            * La unidad c: --> Con 2GB                                   que sea en d:mellamojuan. Tienes total libertad!!! Una
            * La unidad d: --> Con 35GB y Raíz del Sistema               idea     es     crearlo,        por     ejemplo,        en
            * La unidad e: --> CD-ROM                                    d:winntsystem32defaultmellamojuan (ya irás
                                                                         aprendiendo que cuanto mas oculto mejor :)
            Nota: Raíz del Servidor, significa que el Windows Advanced
            Server está instalado en esa unidad (la unidad d:) y         Es posiblemente la primera vez que tienes la oportunidad
            concretamente en el directorio por defecto winnt           de investigar en un servidor como este sin cometer un
            Por lo tanto, la raíz del sistema está en d:winnt          delito (nosotros te dejamos y por lo tanto nadie te
                                                                         perseguirá). Aprovecha la oportunidad!!! e investiga mientras
            - El IIS, Internet Information Server, es el Servidor de     dure esta iniciativa (que esperamos dure largos años)
            páginas Web y tiene su raíz en d:inetpub (el directorio
            por defecto)                                                 - En este momento tenemos mas de 600 carpetas de peña
                                                                         que, como tu, está practicando. Así que haznos caso y
            Nota: Para quien nunca ha tenido instalado el IIS, le será   crea tu propia carpeta donde trabajar.
            extraño tanto el nombre de esta carpeta (d:inetpub) cómo
            su contenido. Pero bueno, un día de estos os enseñaremos
            a instalar vuestro propio Servidor Web y detallaremos su
            funcionamiento.

            De momento, lo único que hay que saber es que cuando
            TÚ pongas nuestra IP (la IP de nuestro servidor) en tu
            navegador, lo que estás haciendo realmente es ir al               !               MUY IMPORTANTE...
            directorio d:Inetpubwwwroot y leer un archivo llamado
            default.htm.

            Nota: Como curiosidad, te diremos que APACHE es otro              MUY IMPORTANTE!!!!!                    Por favor, no borres archivos
            Servidor de páginas Web (seguro que has oído hablar de
            él). Si tuviésemos instalado el apache, cuando pusieses          del Servidor si no sabes exactamente lo que estás haciendo ni
            nuestra IP en TU navegador, accederías a un directorio           borres las carpetas de los demás usuarios. Si haces eso, lo único
            raíz del Apache (donde se hubiese instalado) e intentarías
            leer una página llamada index.html                               que consigues es que tengamos que reparar el sistema servidor
                                                                             y, mientras tanto, ni tu ni nadie puede disfrutar de él :(
            Explicamos esto porque la mayoría, seguro que piensa en
            un Servidor Web como en algo extraño que no saben ni             Es una tontería intentar “romper” el Servidor, lo hemos puesto
            donde está ni como se accede. Bueno, pues ya sabes               para que disfrute todo el mundo sin correr riesgos, para que todo
            dónde se encuentran la mayoría de IIS (en Inetpub) y
            cuál       es    la    página        por      defecto            el mundo pueda crearse su carpeta y practicar nuestros ejercicios.
            (Inetpubwwwrootdefault.htm). Y ahora, piensa un poco…
                                                                             En el Servidor no hay ni Warez, ni Programas, ni claves, ni nada
            … ¿Cuál es uno de los objetivos de un hacker que quiere
            decirle al mundo que ha hackeado una Web? Pues está              de nada que “robar”, es un servidor limpio para TI, por lo tanto
            claro, el objetivo es cambiar (o sustituir) el archivo
            default.html por uno propio donde diga “hola, soy DIOS           cuídalo un poquito y montaremos muchos más :)
            y he hackeado esta Web” (eso si es un lamer ;)




Página 14                                                                                                              PC PASO A PASO Nº 9
APACHE Parte III :
               Configuracion - Comparte
               tus ficheros mediante web

          Bienvenidos de nuevo. En el número anterior se explicó los comandos básicos de Apache,
          se comentó con ejemplos las principales directivas que hacen funcionar el servidor Apache
          y se aplicó todo lo aprendido para poder compartir ficheros mediante HTTP sin necesidad
          de programas externos.
          Este capítulo está dividido en dos partes, en la primera parte profundizaremos en algunos
          módulos y en la segunda parte comenzaremos a crear servidores virtuales. ¿tienes
          curiosidad de saber qué es todo esto?, ... ya verás.


          1.      Los módulos de Apache.                    qué hacen para luego entender la práctica que
                                                            vamos a realizar.
          Un módulo de Apache es un componente que
          añade funcionalidad al servidor. Existen          mod_auth_anon: permite a usuarios
          diferentes módulos y pueden ser configurables.    anónimos acceder a áreas autentificadas.
          Es necesario que sepas que puedes crear un
          módulo programado en C y adaptar el servidor      mod_auth_dbm: proporciona autentificación
          Apache a tus necesidades. En la red encontrarás   utilizando ficheros DBM.
          infinidad de módulos realizados por
          programadores independientes.                     mod_auth_digest: autentificación de usuario
                                                            utilizando MD5.
          Los módulos se pueden clasificar en 3             mod_cern_meta: Semántica de etiquetas
          categorías:                                       meta del CERN.

          1. Módulos base: Son los módulos con las          mod_expires: Generación de las cabeceras
          funcionas básicas de Apache.                      http Expires, de acuerdo de los criterios
                                                            especificados por el usuario.
          2. Módulos multiproceso: son los responsables
          de la unión con los puertos del ordenador.        mod_headers: personalización de las
                                                            peticiones HTTP y las cabeceras de las
          3. Módulos adicionales: cualquier otro módulo     respuestas.
          que añade funcionalidad pero no es
          estrictamente necesario para el funcionamiento    mod_info: proporciona una visión comprensiva
          del Apache.                                       de la configuración del servidor.

          ¿Dónde se encuentran los módulos adicionales?,    mod_mime_magic: determina el tipo MIME
          los localizarás en c:apachemodules             de un fichero mirando unos pocos bytes del
                                                            contenido.
          Apache instala por defecto los siguientes
          módulos, es necesario que sepáis por lo menos     mod_proxy: servidor HTTP/1.1 proxy/gateway.

PC PASO A PASO Nº 9                                                                                         Página 15
APACHE - CONFIGURACION - SERVIDOR DE ARCHIVOS VIA WEB




            mod_rewrite: proporciona un motor de                 todas las instalaciones requieren de "Virtual
            reescritura basado en reglas que rescribe las       Hosting".
            peticiones de URL's al vuelo.
                                                                Por lo tanto si fueran incluidas todas las
            mod_speling: intenta corregir las URL               funcionalidades posibles en una versión única
            mal puestas por los usuarios, ignorando             de Apache, lo haría sumamente pesado en
            las mayúsculas y permitiendo hasta una              cuanto a requerimientos de Memoria RAM y
            falta.                                              espacio en Disco Duro, por esto se opta por
                                                                "modularizar" e incluir solo lo necesario.
            mod_status: proporciona información en la
            actividad y rendimiento del servidor.               De momento, simplemente vamos a quedarnos
                                                                con la idea de que estos módulos añaden
            mod_unique_id: proporciona variables de             funcionalidad al Servidor Web y que algunos
            entorno y un identificador único para cada          de ellos son instalados por defecto.
            petición.
                                                                Ahora queremos averiguar cuales son los
            mod_usertrack: registro de actividad de un          módulos que están funcionando por defecto
            usuario en el sitio.                                en nuestro Servidor Web. Abrimos una consola
                                                                MSDOS y ponemos el comando de sistema
            mod_vhost_alias: Proporcionado para                 APACHE –l, y aparecerá un listado de los
            configurar muchos servidores virtuales              módulos que están funcionando. Lo que hace
            dinámicamente.                                      el parámetro –l es abrir el archivo de
                                                                configuración httpd.conf y busca los módulos
                                                                que debe cargar Apache al iniciarse.
  !            DMB, MD5...

  DMB, MD5, CERN, Cabeceras HTTP Expires, MIME …
  Si eres profano en la materia, seguro que todo eso te suena
  a "Klingoniano". No te preocupes, ya sabes que cuando
  necesitamos conocer un término/concepto para la
  comprensión de un artículo siempre lo explicamos a lo
  largo del mismo.

  Algunos de estos términos abarcan temas bastante extensos
  y no es necesario explicarlo en este momento puesto que
  NO IMPIDEN la comprensión de este artículo, pero te
  recomendamos que cuando tengas un par de horas libres
  "curiosees" en el mejor buscador que existe actualmente
  www.google.com y hagas una "toma de contacto" con ellos.
  Por cierto, si quieres aprender klingon puedes acudir a The
  Klingon Language Institute (http://www.kli.org/) ;p



             Una de las principales razones de emplear
             módulos en Apache, es que no toda instalación
             requiere de las mismas funcionalidades, no

Página 16                                                                                         PC PASO A PASO Nº 9
APACHE - CONFIGURACION - SERVIDOR DE ARCHIVOS VIA WEB




          2. Listar contenido de los                          estos módulos puede provocar que Apache
          directorios                                         liste el contenido de sus directorios.
                                                              Así de simple. Lógicamente los señores de
          Apache está considerado como uno de los             Apache solucionaron el problema cuando
          servidores web más estables que existen e           fue descubierto, pero aún quedan muchos
          infinitamente más seguro que el servidor IIS        servidores Apache con este problema.
          de Microsoft. Aún así tiene algunos fallos, ¿no     Las versiones hasta 1.3.19 inclusive son
          te lo crees?.                                       vulnerables a este ataque.

          Apache necesita utilizar módulos adicionales
                                                              ¿Es válida cualquier cadena?, no. Tiene que
          para mostrar contenido dinámico, y en estos
                                                              ser una cadena de barras inclinadas y la
          módulos es donde podemos encontrar los fallos,
                                                              longitud es variable. Así que no tenemos
          recuerda que cuantos más módulos se instalen
                                                              más remedio que hacer pruebas hasta
          más probabilidad hay de tener agujeros de
                                                              que Apache liste el directorio. Si consideramos
          seguridad.
                                                              que Apache admite una URL de 8000
                                                              caracteres como máximo, podemos listar
          En el número anterior se explico cómo Apache
                                                              el contenido en un par de minutos si nos
          puede listar el contenido del directorio, siempre
                                                              creamos un programa que genere URLs con
          que nosotros configuremos el archivo httpf.conf
                                                              barras inclinadas.
          para ello. Aún configurando este archivo para
          que no liste el contenido de los directorios
                                                              El código es muy sencillo y supongo que
          podemos saber los archivos alojados en todos
                                                              estás aprendiendo Visual Basic gracias al
          los directorios, incluso en aquellos directorios
                                                              curso de HackxCrack, en los números
          que tienen una página Index.
                                                              anteriores del curso de Visual Basic encontrarás
          Vamos a explicar dos formas de obtener el           todo lo necesario para crear el programa.
          contenido de los directorios, el primer método      De todos modos, colocaremos un sencillo
          será utilizando un gran número de barras            programa que hemos realizado para
          inclinadas y el segundo método utilizando un        aquellos que no quieran calentarse la cabeza.
          bug del módulo Multiview. Al finalizar cada         No estaría mal que cada uno de vosotros
          método daremos respuesta a como evitar que          hiciera una versión y la publicara en el foro,
          seamos víctimas de estos ataques.                   ¿os atrevéis?


          Listado del directorio utilizando barras            Un ejemplo de cadena válida si queremos
          inclinadas.                                         saber el contenido del directorio
                                                              http://www.hackxcrack.com/cgi-
          Cuando realizamos una petición a un servidor        bin//////////////////////////////////// (funcionaría en
          Apache, la URL es procesada por varios              el caso de que el servidor fuese la versión
          módulos, entre ellos mod_negotiation.c,             1.3.19 o anterior)
          mod_include.c, mod_autoindex.c, estos módulos
          se encuentran compilados en la versión              Pero antes de que os pongáis como locos a
          predeterminada de Apache, es decir, que estos       poner barras inclinadas es necesario
          módulos están instalados y activos en la mayoría    que averigüéis la versión de Apache. En
          de los servidores Apache.                           el capítulo anterior se explicaron varias
                                                              formas de saber remotamente la versión de
          Cuando se pasa una URL de gran longitud por         Apache.

PC PASO A PASO Nº 9                                                                                                     Página 17
APACHE - CONFIGURACION - SERVIDOR DE ARCHIVOS VIA WEB




                                                                         !                   Hemos utilizado la ...

                                                                         Hemos utilizado la IP 127.0.0.1 y puerto 80 porque se
             Os vamos a explicar otra forma de identificar               supone que has seguido nuestro curso y en este momento
             el servidor web, a modo de culturilla el                    tienes corriendo el apache en tu sistema en el localhost
             procedimiento de identificar el servidor se le              (127.0.0.1) y puerto 80. Si no, ya sabes, al final de la revista
             llama “captura de mensajes” o “banner                       tienes el índice de los números anteriores publicados y te
             grabbing”. Recordar que no siempre vamos a                  indica cómo conseguirlos y, por si no lo sabes, tienes en
             poder capturar esta información, el servidor                la Web el Número 1 de Hack x Crack GRATIS en formato
             web tiene que tener la especificación HTTP 1.1              PDF… ¿alguien da más? ;p
             (RFC 2616), que envía la información que
             buscamos en los encabezados.                          Solución al problema de las barras
                                                                   invertidas
  !            En esta ocasión...
                                                                   Tenemos dos soluciones: actualizar el servidor
  En esta ocasión vamos a utilizar el todopoderoso programa        web Apache a una versión mayor a 1.3.19 o
  netcat, esta aplicación ya ha sido explicada y utilizada en      modificar el fichero de configuración.
  prácticas anteriores de otros artículos de HxC.
                                                                   Solucionar el problema mediante el archivo de
                                                                   configuración es muy sencillo, abrimos con el
            Abre una venta de MSDOS y pon lo siguiente:            bloc de notas el archivo httpd.conf y buscamos
            nc –nvv 127.0.0.1 80                                   las siguientes líneas:

            tras el mensaje que aparece escribe:                   AddModule mod_autoindex.c
            HEAD / HTTP/1.0                                        AddModule mod_dir.c
            [Pon dos retornos de carro, es decir, pulsa el
            botón Return dos veces]                                Estas líneas son las encargadas de añadir
                                                                   los módulos al iniciarse
            Y verás la información del servidor.                   el Apache,
                                                                   simplemente pon las
            Lo importante es conocer distintas formas              almohadillas delante y
            de averiguar la información, si estás en un            graba el archivo.
            cibercafe y no dispones del netcat pues                sabes que poniendo
             utiliza el telnet o cualquier herramienta             almohadillas delante
                                        online como                transformas la línea
                                        dnsstuff.com o             (instrucción/comando)
                                        n e t c ra f t . c o m ,   en un simple texto
                                        además estas               (comentario), ya lo
                                        herramientas               explicamos           en
                                        online tienen una          anteriores números.
                                        ventaja y es que
                                        el servidor                #AddModule mod_autoindex.c
                                        consultado no              # A d d M o d u l e m o d _ d i r. c

                                        registrará tu IP ;)


Página 18                                                                                                      PC PASO A PASO Nº 9
APACHE - CONFIGURACION - SERVIDOR DE ARCHIVOS VIA WEB




            Como podemos ver con AddModule                       un servidor con este error. Pero no está mal
            configuramos el servidor para que cargue los         saberlo, ¿no crees?
            módulos y así obtener nuevas funcionalidades,
            en este caso hemos quitado la funcionalidad          Módulo de               configuración
            de mostrar el contenido de los directorios de        “mod_info.c”
            manera radical. Tienes que tener en cuenta
            que ya no podremos compartir archivos si             El módulo mod_info.c permite saber la
            hemos anulado estos módulos.                         configuración del servidor Apache, es
                                                                 información estática pero de gran valor para
  !            Siempre que ...                                   consultar como está configurado de manera
                                                                 remota. Lógicamente el módulo mod_info.c no
                                                                 está activado de manera predeterminada. Los
  Siempre que sea posible se recomienda actualizar la versión
                                                                 grandes servidores web, empresas de hosting,
  del programa afectado por un bug, cualquier otra solución
                                                                 ... suelen tener activado este módulo para
  como la explicada es válida pero suele tener consecuencias:
                                                                 conocer el estado de la configuración del servidor
  una limitación en los accesos, anulación de funciones, etc.
                                                                 y ya podemos suponer que a muchos
                                                                 administrados se les olvida proteger o anular
                                                                 el acceso a los usuarios no permitidos
            Listado de directorios                        con
            Multiview                                            El módulo mod_info da una visión general de
                                                                 la configuración del servidor bastante amplia,
            Existe otro bugs que ya ha sido corregido pero       incluyendo los módulos y directrices.
            que aún nos lo podemos encontrar en algunos
            servidor Apache, es un error del parámetro           Vamos a realizar una práctica de cómo ponerlo
            Multiview que permite negociar el contenido          en marcha para nuestro uso personal.
            basándose en el lenguaje del documento.
                                                                 Lo primero que hacemos es abrir el fichero de
            Este parámetro no está activo de manera              configuración httpd.conf y buscamos la cadena
            predeterminada así que es más difícil que lo         #LoadModule               info_module
            encontremos en el servidor de la victima, pero       modules/mod_info.so , esta cadena dice al
            nunca se sabe, ¿verdad?.                             Apache que lea el módulo mod_info.so, le
                                                                 quitamos la almohadilla (#) para que realmente
            Este parámetro puede estar colocado de la            sea leído. Ahora buscamos la cadena
            siguiente forma:                                     #AddModule mod_info.c y también le
                                                                 quitamos la almohadilla (#), con addmodule
            Options FollowSymLinks MultiViews                    le decimos a Apache que añada el módulo
                                                                 mod_info.c
            ¿Cómo podemos listar el contenido del directorio
            utilizando el bugs de MultiViews?, es tan sencillo
            como colocar una URL en el navegador o en                !            Como has ...
            el      netcat,         por        ejemplo:
            http://127.0.0.1/mp3?M=D, fíjate que finaliza            Como has podido comprobar para que Apache tenga en
            con ?M=D.                                                cuenta un módulo primero hay que indicarle que lea el
                                                                     módulo para después sea añadido. Recuerda que son dos
            Esta manera de ver el contenido del directorio           pasos "LoadModule y AddModule".
            no es muy eficaz y es raro de que encuentres

PC PASO A PASO Nº 9                                                                                                   Página 19
APACHE - CONFIGURACION - SERVIDOR DE ARCHIVOS VIA WEB




            Ya queda poco, ahora tenemos que abrir el          * Para información de la configuración de los
            archivo access.conf que lo encontrarás en el       módulos pondremos una dirección tipo
            mismo directorio que el archivo de configuración   http://127.0.0.1/infoservidor?nombre_
            httpd.conf.                                        del_módulo, por ejemplo:
                                                               --->http://127.0.0.1/infoservidor?mod_info.c
            Este archivo también de configuración se utiliza
            para acceder a los permisos de los archivos,       * Para obtener la información de los módulos
            directorios y script del sitio creado. Es un       que se están utilizando:
            archivo de apoyo, el contenido de este archivo     --->http://127.0.0.1/infoservidor?list
            podría estar perfectamente en httpd.conf, pero
            para no terminar teniendo un mega archivo
            de configuración se divide la configuración
            en otros dos archivos (access.conf y
            srm.conf). De momento nos quedamos
            con httpd.conf y access.conf, el primero
            es el archivo principal de configuración y
            el segundo sirve de apoyo cuyo contenido
            es definir permisos.

            Continuamos con la práctica, abrimos el
            archivo access.conf (seguramente estará
            vacío) y ponemos las siguientes líneas:

            <location /infoservidor>
            SetHandler server-info
            </location>
                                         Reiniciamos el
                                         servidor Apache       Por último decir que infoservidor puede ser
                                         (Apache –k            cambiado por cualquier otra palabra como info,
                                         restart)      y       info-servidor, info-server, admin, configure...
                                         ponemos en el         No estaría mal crear un programa cuyo objetivo
                                         navegador la          sea buscar la url de acceso a la configuración
                                         siguiente URL:        del servidor Apache si es que tiene activado el
                                                               módulo mod_info.c, ¿alguien se atreve?, con
                                         --->       http://    lo aprendido aquí y en el curso de Visual Basic
                                         1 2 7 . 0 . 0 . 1     sería suficiente para crear el programa, lo ideal
                                         /infoservidor         sería utilizar un diccionario, ¿algún valiente?

                                         El resultado es una
                                         página con toda la        !            Pásate por el foro ...
                                         información de la
                                         configuración del         Pásate por EL FORO de la revista (www.hackxcrack.com)
                                         servidor Apache.          y podrás conversar con los lectores y colaboradores de PC
                                                                   Paso a Paso (Los Cuadernos de Hack x Crack). A estas
            * Para acceder únicamente a la información             alturas ya formamos una peña de más de 2000 "socios".
            del servidor ponemos:                                  Te estamos esperando!!! ;)
            ---> http://127.0.0.1/infoservidor?server

Página 20                                                                                            PC PASO A PASO Nº 9
APACHE - CONFIGURACION - SERVIDOR DE ARCHIVOS VIA WEB




          Módulo de estado del servidor                     </location>

          Apache ofrece otro módulo de gran valor           Recuerda que podemos cambiar estado-apache
          para conocer mediante URL el estado del           por otra palabra como estado, infoestado , ...
          servidor web. Si es accesible mediante            pero para la práctica ponemos estado-apache.
          URL quiere decir que podemos acceder a
          esta información de otros servidores si           Reiniciamos de nuevo el servidor Apache
          tienen activado este módulo. Para nosotros        mediante Apache –k restart.
          será de vital importancia para conocer
          si el servidor Apache necesita más
          recursos.

          La información que podemos consultar es la
          siguiente:

          ·        Hora actualizada de sistema del
          servidor.
          ·        Hora del último reinicio del servidor.
          ·        Tiempo que ha pasado desde que se
          encendió el servidor.
          ·        Número total de accesos que han
          tenido lugar desde entonces.
          ·        Bytes totales transmitidos.
                                                            Para acceder al estado del servidor colocamos:
          ·        Número total de los thread dedicados
                                                            http://127.0.0.1/estado-apache
          a atender peticiones.
          ·        Número total de thread.
          ·        Estado de cada thread, número de
          peticiones que ha atendido cada uno.
          ·        Promedios con el número de
          peticiones efectuadas por segundo.
          ·        Porcentaje actual de CPU utilizada
          por cada thread y el total que utiliza Apache.
          ·        Host y peticiones procesadas.

          Este módulo no se inicia por defecto, así
          que habrá que hacer lo mismo que con el
          módulo mod_info.c. El módulo que tenemos
          que añadir es mod_status, repetimos los
          pasos anteriores pero esta vez con
          mod_status en el archivo de configuración
          httpd.conf.

                                                            Puede ocurrir que no aparezcan todos los datos
          Abrimos el archivo access.conf y añadimos las
                                                            que esperamos, si por ejemplo
          siguientes líneas:
                                                            no aparece la información tan relevante como
          <location /estado-apache>                         “Total accesses”, “Total Traffic” entre otros datos
          setHandler server-status                          es necesario volver a modificar el fichero de

PC PASO A PASO Nº 9                                                                                               Página 21
APACHE - CONFIGURACION - SERVIDOR DE ARCHIVOS VIA WEB




            configuración httpd.cond, busca la cadena          pueda conocer el estado del servidor.
            ExtendedStatus On y quita la almohadilla.

                                                                   !            Para ir abriendo ...

                                                                  Para ir abriendo miras y sabiendo que este acceso suele
                                                                  estar abierto pero protegido por un nombre que no
                                                                  conocemos (en nuestro caso estado-servidor) y por una IP
                                                                  determinada; podríamos "adivinar" la IP determinada que
                                                                  permite el acceso (muchas veces es la misma que la del
                                                                  servidor, aunque otras no ;)) y el nombre por diccionario
            De momento cualquier navegante que ponga
                                                                  (hemos propuesto ese ejercicio en este mismo artículo) y
            esta URL podrá acceder a la información del
                                                                  utilizando técnicas no explicadas todavía en HXC enviar
            estado y configuración del servidor Apache.
                                                                  peticiones de acceso previamente "retocadas".
            Desde el punto de vista de la seguridad deja
            mucho que desear. Apache nos permite
                                                                  Algunos avanzados ya saben perfectamente a lo que nos
            configurar el acceso a esta información mediante
                                                                  referimos, esas peticiones se "modifican" para hacer creer
            URL y ponerle limitaciones y para ello hay que
                                                                  al servidor que las peticiones provienen de la IP determinada
            configurar de nuevo los comandos que hemos
                                                                  aunque realmente provienen de nuestro PC… pero eso es
            colocado en el archivo access.conf.
                                                                  tema bastante avanzado y antes hay que leer mucho
                                                                  HXC ;)
            Supongamos que solo deseamos que tenga
            acceso a la información del estado del servidor
            la IP 254.67.67.5 (nuestra IP al conectarnos
            a Internet), es tan sencillo como editar el        2. Creación de sitios virtuales
            archivo access.conf y colocarlo de la siguiente
            manera:                                            Cambiamos de tema, ahora vamos a crear sitios
                                                               virtuales, para ello vamos a explicar de manera
            <location /estado-apache>                          rápida en que consiste y la razón de crear sitios
            setHandler server-status                           virtuales.
            order deny,allow
            deny from all                                      Cuando contratamos un espacio web a una
            allow from 254.67.67.5                             empresa de hosting ¿qué crees que realmente
            </location>                                        nos están vendiendo?, nos alquilan un cacho
                                                               de un gran servidor que tienen, este servidor
            De esta forma tan simple eliminamos el acceso      alojará un número variable de sitios. Es decir,
            a cualquier navegante a la información del         la empresa tendrá un gran disco duro y nos
            estado del servidor cuando ponga                   alquilará los megas de ese disco duro según
            http://tu_ip/estado-servidor excepto para el       el plan que le contratemos. El microprocesador,
            navegante que tenga la IP 254.67.67.5 (que         la memoria y demás recursos del servidor
            tiene que coincidir con la IP del administrador    estarán compartidos por todos los clientes. Si
            del servidor Apache).                              estás pensando en crear un proceso que sature
                                                               el micro para que todos los dominios caigan,
            Como se ha comentado anteriormente estos           estás en lo cierto, puedes hacer caer todo
            módulos son de gran utilidad para el               el sistema si el servidor Apache está
            administrador del sistema y suele estar activado   mal configurado y dejar varios dominios sin
            para que el administrador en cualquier momento     funcionar.

Página 22                                                                                             PC PASO A PASO Nº 9
APACHE - CONFIGURACION - SERVIDOR DE ARCHIVOS VIA WEB




             Mediante una correcta configuración del archivo
             httpd.conf es posible crear nuevos sitios y             Si, ya lo se, somos muy pesados, pero recibimos cientos
             convertir nuestro servidor dedicado en un               de mails preguntando cosas que ya se ha explicado en
             potente servidor de hosting ;)                          números anteriores. Si no pides los números atrasados al
                                                                     menos lee el número 1 antes de enviarnos tus dudas y ya
                                                                     de paso os recordamos que EL FORO es el lugar perfecto
  !             La mayoria de ...
                                                                     para resolver tus dudas, que vía mail es mas lento y no
                                                                     podemos atender todas las peticiones.
  La mayoría de los sitios web son virtuales, muy pocos
  sitios tienen un servidor dedicado (un servidor 100%
  dedicado para el sitio web).
                                                                  Paso 1. Crear directorios

                                                                  Lo primero es crear los directorios donde los
             A lo largo de estos capítulos hemos configurado
                                                                  amigos podrán alojar sus archivos y que estos
             nuestro servidor Apache y de momento este
                                                                  archivos puedan ser accedidos desde Internet.
             servidor es dedicado, es decir, estamos
             ofreciendo todos los recursos del sistema a un
                                                                  Creamos una carpeta llamada amigos en el
             sólo sitio web. ¿Has pensado ofrecer espacio
                                                                  mismo nivel de la carpeta htdocs, en realidad
             web a tus amigos?, eso es lo que vamos a
                                                                  podemos crear esta carpeta donde queramos,
             hacer: Vamos a ofrecer hosting a los amigos
                                                                  incluso en otros discos duros. Ahora creamos
             para que puedan alojar sus páginas web, mp3,
                                                                  las carpetas amigo1, amigo2 y amigo3
             divx en nuestro servidor y que cada uno tenga
                                                                  dentro de la carpeta amigos tal y como muestra
             su propia URL.
                                                                  la imagen.
             En este capítulo vamos a crear sitios virtuales      Paso 2. Configurar
             utilizando puertos no estándar, cuando
                                                                  Apache
             expliquemos como tener un servidor DNS en
             nuestro propio servidor crearemos sitios
             virtuales mediante dominios. De momento,             Vamos a ver cómo se
             quédate que vamos a crear sitios virtuales           puede configurar el
             mediante puertos para que nuestros amigos            servidor Apache para que
             puedan tener su propio sitio web en nuestro          utilice un único demonio
             servidor web y que compartan sus archivos.           de proceso para trabajar
                                                                  con todos los sitios web
             Vamos a crear 3 sitios virtuales para 3 amigos,      virtuales.
             que los hemos llamado amigo1, amigo2 y
             amigo3.                                              Apache utiliza la etiqueta
                                                                  <VirtualHost> para definir
  !             Por favor ...                                     las propiedades de cada
                                                                  sitio virtual, como ya
                                                                  sabemos esta etiqueta hay
  Por favor, si eso de DNS te suena extraño, es el momento        que colocarla en el archivo
  de que te leas el número 1 de HXC, lo tienes a tu disposición   httpd.conf. En primer lugar
  en nuestra Web (www.hackxcrack.com) y puedes
                                                                  vamos a configurar de manera básica los tres
  descargártelo enterito y sin pagar un solo euro.
                                                                  sitios webs, para ello tenemos que asignar las
                                                                  urls.


PC PASO A PASO Nº 9                                                                                                Página 23
APACHE - CONFIGURACION - SERVIDOR DE ARCHIVOS VIA WEB




             La url del amigo1 será http://127.0.0.1:8080         ServerName Amigo1
             La url del amigo2 será http://127.0.0.1:8081         </VirtualHost>
             La url del amigo3 será http://127.0.0.1:8082
                                                                  <VirtualHost 127.0.0.1:8081>
                                                                  DocumentRoot
  !             Sustituye ...                                     "c:/apache/Apache/amigos/amigo2/"
                                                                  ServerName Amigo2
  Sustituye 127.0.0.1 por la IP de tu conexión, en este ejemplo   </VirtualHost>
  hemos colocado 127.0.0.1 para realizar las pruebas, pero
  recuerda que para que tus amigos puedan acceder a sus           <VirtualHost 127.0.0.1:8082>
  sitios tendrás que colocar la IP que te ha asignado el          DocumentRoot
  proveedor de acceso, eso ya lo explicamos en anteriores         "c:/apache/Apache/amigos/amigo3/"
  entregas.                                                       ServerName Amigo3
                                                                  </VirtualHost>

             La IP es la misma, lo único que cambia es el
             puerto, a cada sitio se le ha asignando un               !            Las etiquetas ...
             puerto, te recomendamos que sean puertos
             no estándar (mayores a 1024) de lo contrario             Las etiquetas DocumentRoot y ServerName ya fueron
             puede que ocupes un puerto ya en                         explicadas en el capítulo anterior del número 8 de
             funcionamiento.                                          hackxcrack.

             Tenemos que configurar Apache para que esté
             a la escucha por los puertos 8080, 8081 y            Al reiniciar el servidor Apache ya están accesibles
             8082, para ello añadimos los siguientes              las siguientes URLs:
             parámetros en el archivo de configuración
             httpd.conf.                                          http://127.0.0.1:8080
                                                                  http://127.0.0.1:8081
             Listen 8080                                          http://127.0.0.1:8082
             Listen 8081
             Listen 8082                                          Ahora queda que vuestros amigos puedan subir
                                                                  páginas al servidor y para ello instalaremos un
                                                                  servidor FTP (puedes utilizar el servidor UFTP
                                                                  cuyo funcionamiento ya ha sido explicado en
                                                                  hackxcrack). Crea los 3 usuarios en el Servidor
                                                                  FTP apuntando cada uno a la carpeta específica
                                                                  (amigo 1, 2 y 3) y comunica a tus amigos los
                                                                  datos de acceso (user/pass), de esta forma
                                                                  cada usuario tendrá acceso únicamente a su
                                                                  carpeta y no verá las demás (salvando algunos
             Nos colocamos al final del archivo httpd.conf        detalles, esto es lo que hacen las grandes
             y añadimos las siguientes lineas:                    empresas de “hosting” cuando te venden un
                                                                  sitio donde colocar tu Web).
             <VirtualHost 127.0.0.1:8080>
             DocumentRoot                                         Como puedes comprobar todo lo aprendido en
             "c:/apache/Apache/amigos/amigo1/"                    números anteriores te está resultado de gran

Página 24                                                                                               PC PASO A PASO Nº 9
APACHE - CONFIGURACION - SERVIDOR DE ARCHIVOS VIA WEB




          utilidad.

          3. ¿Qué has aprendido?

          Este capítulo ha sido denso y con muchos nuevos conceptos, pero ha merecido la pena, ¿no
          crees?. Has aprendido el concepto de los módulos de apache, a utilizar los módulos mod_info
          y mod_status, a obtener la versión de Apache utilizando el netcat, algunos bugs de Apache y a
          crear sitios virtuales utilizando los puertos.


          En el próximo número ....

          Se explicarán nuevos módulos, nuevas directivas de configuración para los servidores virtuales
          y a interpretar los logs que genera Apache, un gran fichero donde se registran los accesos al
          servidor con datos del navegante (que interesante....)

          David C.M



          ¿QUIERES COLABORAR CON PC PASO A PASO?
         PC PASO A PASO busca personas que posean conocimientos de
         informática y deseen publicar sus trabajos.

         SABEMOS que muchas personas (quizás tu eres una de ellas) han creado
         textos y cursos para “consumo propio” o “de unos pocos”.

         SABEMOS que muchas personas tienen inquietudes periodísticas pero
         nunca se han atrevido a presentar sus trabajos a una editorial.

         SABEMOS que hay verdaderas “obras de arte” creadas por personas
         como tu o yo y que nunca verán la luz.
         PC PASO A PASO desea contactar contigo!

         NOSOTROS PODEMOS PUBLICAR TU OBRA!!!
         SI DESEAS MÁS INFORMACIÓN, envíanos un mail a
         empleo@editotrans.com y te responderemos concretando nuestra oferta.

         También necesitamos urgentemente alguien que se ocupe de la
         publicidad y de la web de esta editorial, para más información
         envíanos un mail a empleo@editotrans.com


PC PASO A PASO Nº 9                                                                                        Página 25
vISUAL BASIC (iv): Mi primera
       DLL y Accediendo a datos
                                          Por pedro del valle



            Hola de nuevo. Hoy intentaré introduciros en el mundo del acceso a datos, pero antes os explicaré
            que es una DLL y haremos una práctica para entenderlo mejor. Al igual que los OCX, explicados
            en el curso anterior, las DLL son herramientas creadas por los programadores para facilitar el
            trabajo a la hora de desarrollar una aplicación. Dentro de las DLL solemos encontrar rutinas y
            funciones que, o bien son muy complejas, o simplemente se repiten con frecuencia. Pero más
            importante es aun su función de encapsulado. El programador que utilice tu DLL o tu OCX no
            tiene ni debe saber el funcionamiento interno de esta. Pongamos por ejemplo una DLL que se
            encargue del acceso a datos de una BD de Access. Esta DLL tiene unas funciones implícitas, que
            son, por ejemplo, Ruta (donde indicamos la ruta de la base de datos), Nombre (nombre de la base
            de datos), Conectar (abre la conexión contra la BD) y TraerRegistros (que nos va a traer todos
            los registros de la tabla que le indiquemos).

            También podríamos implementar otras funciones como Añadir, Editar, Borrar. Y son precisamente
            estas tres últimas las que dan sentido a nuestra DLL, ya que serán utilizadas varias veces en
            nuestro proyecto.
            Bien, una vez hecha la introducción a las DLL, vamos a crear una desde 0.
            Abrimos el Visual Basic, y en la primera pantalla vamos a escoger “DLL ActiveX”.

            Vemos que se nos abre el editor, como siempre, pero con la peculiaridad de que a nuestra
            derecha, en el explorador de proyectos, no existen formularios, sino solo un módulo de tipo clase
            llamado por defecto Class.
            Vale, lo primero que vamos a hacer es darle nombre al proyecto, por lo que nos pondremos
            encima de proyecto1 en el explorador de proyectos y cambiaremos el nombre en el cuadro de
            propiedades.
            En el ejemplo de hoy, nuestra DLL será
            sencilla, ya que me reservo lo mas
            complicado para la segunda parte,
            cuando tratemos el acceso a datos.
            Esta DLL sencillamente realizará las 4
            operaciones básicas matemáticas,
            suma, resta, división y producto.
            Yo he llamado a mi proyecto Calc.

            Ahora deberíamos cambiar también el
            nombre de la clase, para ello vamos
            al explorador de proyectos, nos
            posicionamos sobre la Class1 y
            cambiamos su nombre en el cuadro de
            propiedades, por ejemplo, ClCalc.
            Ahora deberíais tener el proyecto como
            podemos ver en la imagen:


Página 26                                                                                        PC PASO A PASO Nº 9
CURSO DE VISUAL BASIC - CREACION DE DLL - ACCEDIENDO A DATOS




          Muy bien, como ya he dicho anteriormente, esta DLL será sencilla, pues solo quiero enseñaros
          como poder crearlas y su funcionamiento. Lo que vamos a hacer es crear una función por cada
          una de las operaciones que queremos codificar, es decir, cuatro. El código quedaría así:

          Public Function Suma(a As Integer, b As Integer) As Integer
            Suma = a + b
          End Function

          Public Function Resta(a As Integer, b As Integer) As Integer
            Resta = a - b
          End Function

          Public Function Producto(a As Integer, b As Integer) As Integer
            Producto = a * b
          End Function
          Public Function Division(a As Integer, b As Integer) As Integer
            Division = a / b
          End Function

          Cojamos la primera de las funciones. Su nombre es Suma, ya que será la encargada de sumar
          dos números. Como podemos ver entre paréntesis, la función recibe 2 parámetros (a y b), los
          cuales son de tipo entero, aunque podrían haber sido también de tipo long o double.
          También podemos observar que justamente después del cierre de los paréntesis tenemos escrito
          As Integer. Esto es debido a que vamos a realizar el cálculo dentro de nuestra función y devolver
          el resultado, y este As Integer es el tipo de dato que vamos a devolver.
          Lo que sigue es sencillo, estamos diciendo que el valor que devuelve la función es la suma de a
          + b.
          Una vez escritas estas líneas, vamos a generar la DLL. Abrimos el menú Archivo y picamos en
          la opción Generar DLL. Podemos dejarle
          el nombre que viene por defecto, que si
          nos damos cuenta es el mismo que hemos
          puesto en el nombre de la DLL en nuestro
          proyecto.
          Una vez generada, nos olvidaremos de
          ella y abriremos un nuevo proyecto, pero
          esta vez picaremos en EXE Estándar. Ahora,
          y como siempre, vamos a darle un nombre
          al form y al proyecto. Por ejemplo, yo he
          llamado al proyecto Prueba y al Form
          FrmPrueba.

          Colocaremos un par de cajas de texto para
          recoger los valores, otra para el resultado
          y 4 botones para las operaciones
          matemáticas.


PC PASO A PASO Nº 9                                                                                           Página 27
CURSO DE VISUAL BASIC - CREACION DE DLL - ACCEDIENDO A DATOS




            El diseño del proyecto es totalmente opcional, yo aquí lo he hecho bastante simple, pero podéis
            poner un label entre las dos primeras cajas de texto que cambie conforme pulsas un botón u otro,
            con el operador correspondiente (+,-,*,/).
            ¿Todo bien?, perfecto, vamos entonces a registrar la DLL que anteriormente hemos generado.
            Para ello vamos al menú Proyecto -> Referencias. Podemos ver que hay varias DLL seleccionadas
            por defecto, estas son necesarias para el correcto funcionamiento de los proyectos en VB.

            Picamos el botón Examinar y buscamos nuestra DLL, allá donde la hemos generado, y la agregamos
            a nuestra aplicación.
            Si lo hacemos bien, deberíamos poder declarar una variable del tipo Calc en mi caso, y en el
            vuestro, dependiendo del nombre que halláis utilizado anteriormente.
            Vamos al editor de código e intentamos declarar una la variable del tipo Calc, ¿cómo?, así:

            Option Explicit
            Dim Cl As Calc.ClCalc

            Ya tenemos declarada la variable, pero no está instanciada.
            Este tipo de variables, sobre todo aquellas que sean objetos o correspondan a DLL deben ser
            instanciadas. Para ello vamos al Form_Load() y escribimos lo siguiente:

            Private Sub Form_Load()
              Set Cl = New Calc.ClCalc
            End Sub

            Pasemos ahora a codificar los botones. Vamos al botón Sumar, por ejemplo, y escribimos:

            Private Sub CmdMas_Click()
              TextRes = Cl.Suma(Texta, Textb)
            End Sub

            Donde TextRes es la caja de texto que contendrá el resultado y Texta, Textb son los dos valores
            que queremos sumar.
            Si lo probáis veréis que la DLL se encarga de sumar los dos números y devuelve el valor a la caja
            de texto, aunque también podríamos poner una variable.
            El resto de operaciones es exactamente lo mismo, así que os lo dejo a vosotros.
            Y con esto, hemos acabado la DLL. Como podéis ver, una DLL y un OCX no son muy diferentes
            entre si. Realmente, la diferencia más grande que hay entre los dos es que el OCX posee entorno
            grafico para poder interactuar con él, mientras que la DLL no.
            Suponiendo que habéis entendido el funcionamiento de los OCX y DLL, creo que ya estamos listos para
            ir al tópico mas extendido de la programación: El ACCESO A DATOS.


                    ACCESO A DATOS

            El acceso a datos es, actualmente, una de las técnicas mas solicitadas en el mercado laboral en
            cuanto al mundo de la programación se refiere, y también es muy necesario para aplicaciones


Página 28                                                                                          PC PASO A PASO Nº 9
CURSO DE VISUAL BASIC - CREACION DE DLL - ACCEDIENDO A DATOS




          que necesiten registrar información o datos de cualquier tipo.
          Los grandes gestores de base de datos, como Oracle o SQL Server (e incluso MySql) tienen en
          común un punto muy importante, el lenguaje que interpretan. Este es conocido como SQL, y,
          aunque con algunas diferencias de sintaxis, todos los gestores de base de datos entienden las
          querys generadas en SQL, y se pueden crear desde cualquier lenguaje de programación. Ya que
          no todo el mundo puede tener un Oracle en casa, nosotros usaremos una base de datos Access
          para nuestra práctica.
          Bien, empecemos entonces.

          Si recordáis, en la primera entrega del curso os indiqué los componentes de acceso a datos que
          debíais instalaros, para estandarizar el uso de estos. Estos componentes se llaman MSDAC 2.6
          sp1 y JET.
          Si están correctamente instalados, deberíamos poder ver sus referencias en el Visual Basic, las
          cuales os indicaré posteriormente.
          Antes de nada, debemos crear nuestra base de datos. Para ello abrimos la herramienta Access
          que viene en el paquete de Microsoft Office. En nuestro caso, utilizaremos la versión 2000 de
          la misma.

          En la primera pantalla picaremos en la opción “base de datos en blanco”, y la guardaremos con
          el nombre bd.mdb en la misma carpeta donde se encontrará nuestro nuevo proyecto. Una vez
          creada, vamos a la opción “crear una tabla en vista de diseño”. Cuando estemos dentro veremos
          que nos aparece un grid con las columnas Nombre de campo, Tipos de datos y descripción. En
          esta pantalla vamos a diseñar nuestras tablas, que en nuestro caso, para simplificar, solo será
          una.

          Bien, nuestra tabla será un clásico, la tabla “Clientes”. Debemos empezar a crear los campos.
          Por ejemplo, el primero, será el identificador de cliente, el cual podemos llamar IdCliente. En “tipo
          de dato”, vamos a declararlo Numérico, Ya que contendrá un número que será siempre único.
          Al indicarle el tipo de dato, vemos que abajo podemos cambiar las propiedades de este, ya que
          el tipo numérico puede tener muchas variantes (recordemos que los números pueden ser enteros,
          dobles, long...)
          En este caso dejaremos las propiedades que aparecen por defecto, es decir: entero largo, formato
          en blanco, posiciones decimales Automático, etc...
          El siguiente campo podría ser el nombre del cliente, por ejemplo, NomCliente. Este campo será
          de tipo Texto, y en sus propiedades le diremos que la longitud sea de 100. El siguiente campo
          contendrá el teléfono del cliente, llamémosle TelCliente. Este es un caso anecdótico, porque a
          mas de uno seguro que se le ha ocurrido declarar este campo como numérico. Eso es una
          barbaridad, teniendo en cuenta la cantidad de números que puede llegar a tener un teléfono, e
          incluso puede que, en algunos casos, se deban insertar símbolos o caracteres no numéricos,
          como por ejemplo el signo “+”, para el “+34” que simboliza el territorio español. Por lo tanto,
          este será un campo de tipo Texto con longitud 15.
          Por último, añadiremos un campo con la dirección. Le llamaremos DirCliente, para no variar, y
          será de tipo Memo. Este tipo de campo es poco recomendable, ya que se trata de un tipo Texto
          pero sin longitud máxima. Por ejemplo, este tipo de campo es utilizado en aquellos foros donde
          no hay límite d caracteres en los posts.
          Si todo ha ido bien deberíais tener el diseño como el de la imagen.

PC PASO A PASO Nº 9                                                                                               Página 29
CURSO DE VISUAL BASIC - CREACION DE DLL - ACCEDIENDO A DATOS




                                                                             Para acabar, pulsamos en el botón
                                                                             de guardar, e introducimos el
                                                                             nombre de la tabla, si no lo habíais
                                                                             hecho antes.
                                                                             ¿Os ha aparecido un mensaje? ¿Sí?,
                                                                             no pasa nada, es totalmente normal.
                                                                             Este mensaje nos está diciendo que
                                                                             no hemos indicado ninguna clave
                                                                             en el diseño de la tabla. Los campos
                                                                             claves son aquellos cuyo valor no
                                                                             pueden repetirse bajo ningún
                                                                             concepto. Es posible crear claves
                                                                             con mas de un campo, es decir, con
                                                                             2, 3, 4…, pero en nuestro ejercicio
                                                                             el único campo clave que hay es
                                                                             IdClietne.
                                                                             Así pues, le decimos que no
                                                                             queremos que nos cree una clave
            principal, y así le indicamos cual es la que nosotros hemos elegido. Para hacer esto, señalamos
            toda la línea de IdCliente y picamos sobre el icono de la llave que podemos encontrar en la barra
            del menú. Si lo habéis hecho bien, os debería aparecer una pequeña llave en este campo.

            Ahora si, picamos de nuevo en guardar y cerramos la ventana hija. En la pantalla que nos aparece
            deberíamos tener un pequeño icono que simboliza la tabla clientes, y que si hacemos doble click
            sobre él, nos permitirá introducir datos.

            Podemos introducir
            unos 4 o 5 clientes,
            inventándonos los
            datos, pero recordad
            que IdCliente es
            campo clave y por lo
            tanto es único, por lo
            que no podréis repetir
            el número, y si lo
            hacéis, debería
            devolveros un error y
            no permitirlo. Un
            ejemplo de clientes es
            el que podéis ver en
            la imagen.
            Una vez introducidos,
            damos al botón salvar,
            y salimos por
            completo del Access.


Página 30                                                                                            PC PASO A PASO Nº 9
CURSO DE VISUAL BASIC - CREACION DE DLL - ACCEDIENDO A DATOS




          Vamos a pasar al Visual Basic, para programar una aplicación que sea capaz de leer la tabla y
          navegar a través de los registros. Es ahora entonces cuando debemos agregar las DLL y los OCX
          necesarios para el acceso a datos. Abrimos un nuevo proyecto en VB y vamos a referencias.
          Tenemos que agregar, de la lista, Microsoft ActiveX data object 2.6 library. Todos deberíamos tener
          esta versión, la 2.6, ya que instalamos estos componentes en la primera entrega del curso. Es
          el turno de los OCX. En este
          caso, solo será necesario
          agregar el Microsoft ADO
          Data Control 6.0, el cual nos
          será muy útil para la
          introducción de hoy, pero
          debéis saber que en un
          futuro debemos intentar
          prescindir de ellos.
          Ahora toca lo mas pesado,
          diseñar, cambiar nombres,
          poner objetos...
          En nuestro caso, debemos
          tener 4 cajas de texto (tantas
          como campos) para
          visualizar los valores, un
          DataControl, y un botón salir.
          Una posible opción sería
          esta:
          Bien, ahora, lo primero que
          debemos hacer, es abrir una conexión con la base de datos. Para hacer esto, usaremos una
          cadena de conexión, donde especificaremos el proveedor de datos (Access), la ruta, el nombre
          de la BD, user y password, si los hubiere.
          Es aquí cuando vamos a utilizar un pequeño truco, porque aunque podríamos tener apuntadas
          las cadenas de conexión de cada gestor, eso sería bastante engorroso. Vamos a nuestro DataControl,
          que yo he llamado DC (original, ¿no?). Buscamos la propiedad ConnectionString en el cuadro
          de propiedades y abrimos las opciones, con doble click o pulsando sobre el botón buscar (...).
          Nos aparece una página de propiedades, donde vemos seleccionado “Usar cadena de conexión”.
          Es correcto así, pulsemos entonces el botón “Generar”.
          Vemos que se despliega una lista de proveedores, que serán todos aquellos que tengamos
          instalados localmente en nuestro PC. El proveedor de Microsoft
          Access es el Microsoft Jet 4.0, que todos deberíamos tener
          instalado (si no lo tenéis, probad con la versión anterior).
          Pulsamos siguiente y nos aparece una pantalla donde debemos
          pulsar el botón buscar y seleccionar la base de datos de Access,
          que debería estar en la misma carpeta que donde vais a guardar
          este proyecto. Una vez seleccionada, pulsad “Probar conexión”,
          para verificar que lo hemos hecho bien.
          ¿Ha ido bien?, aceptad entonces y copiar en el portapapeles la
          cadena generada, borrándola posteriormente de donde está, ya
          que nosotros vamos a conectar por código.

PC PASO A PASO Nº 9                                                                                             Página 31
CURSO DE VISUAL BASIC - CREACION DE DLL - ACCEDIENDO A DATOS




            Vamos al evento Form_Load() del formulario, y creamos la conexión. Para ello debemos indicarle
            a la propiedad ConnectionString del DataControl la cadena de conexión que hemos guardado
            en el portapapeles. Una vez puesto esto, vamos a depurarlo mas, y allá donde pone la ruta,
            vamos a utilizar un objeto de VB para indicársela, porque si no, esto solo funciona cuando la
            base de datos se encuentra en él la ruta especificada en la cadena de conexión.
            Este objeto que vamos a utilizar, se llama App, y la propiedad que nos devuelve la ruta es la
            .Path. Entonces, la cosa quedaría así:

            Private Sub Form_Load()
               DC.ConnectionString =   "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path &
                                                          "bd.mdb;Persist Security Info=False"
              DC.RecordSource = "Clientes"
              DC.Refresh
            End Sub

            Vemos que se ha sustituido la cadena por el objeto App.Path. También podemos observar que
            a la propiedad RecordSource le hemos pasado el literal Clientes. En la propiedad Recordsource
            indicamos la sentencia SQL que queremos que se ejecute. En este caso, y como queremos que
            se traiga todos los registros de la tabla Clientes, podemos escribir
            DC.RecordSource = "Clientes" o DC.RecordSource = "Select * from Clientes", que tendría el mismo
            significado. En breve haré una propuesta en los foros de hackxcrack, para saber si creéis necesario
            una entrega completa explicando la sintaxis de SQL, ya que es un mundo realmente complejo
            y extenso.
            Bien, por último podemos ver escrito Dc.refresh. De esta manera “refrescamos” o actualizamos
            el DtControl, y es necesario, ya que si no lo ponemos jamás conectaría con la base de datos.
            Para el botón Salir, lo único que debemos hacer es cerrar la conexión y cerrar el formulario. Esto
            se haría así:

            Private Sub CmdSalir_Click()
              DC.Recordset.Close
              Unload Me
            End Sub

            Vemos que lo que estamos cerrando realmente es el Recordset, y eso es debido a que, cuando
            nosotros cargamos el Recordsource, realmente estamos llenando el Recordset que lleva intrínseco
            el Datacontrol.
            Es el turno de las cajas de texto. Pongamos el foco sobre el primer TextBox, el que mostrará el
            IdCliente. Vamos al cuadro de propiedades y buscamos DataSource. Vemos que se nos despliega
            un pequeño combo con una única opción, que es precisamente el
            nombre de nuestro DataControl.
            Lo seleccionamos y buscamos la propiedad DataField. Aquí vamos
            a poner el nombre del campo que queremos que muestre esta
            caja de texto. En este caso, escribiremos idCliente.
            Repetimos la operación para los restantes TextBox. Una vez acabado
            esto, ejecutamos el proyecto y... ¡Ualap!, deberíamos estar viendo
            los datos del primer registro en nuestro formulario.


Página 32                                                                                          PC PASO A PASO Nº 9
CURSO DE VISUAL BASIC - CREACION DE DLL - ACCEDIENDO A DATOS




          Si pulsamos las flechas del DataControl deberíamos poder navegar, sirviendo unas para moverse
          paso a paso y otras para ir al inicio o al final de los registros de la tabla.
          Esta es la manera simple y, recordemos, poco recomendada, de acceder a datos. Pero claro, para
          este ejercicio tan sencillo, dentro de lo que es el mundo de acceso a datos, he preferido enseñaros
          primero este camino, el fácil, y ahora explicaros otra forma mucho más correcta de hacer
          exactamente lo mismo. Esta otra manera será implícitamente por código, y no por diseño. Los
          TextBox volverán a tener en blanco sus
          propiedades DataSource y DataField y eliminaremos
          el DataControl para dar paso a los objetos
          Connection y Recordset de ADO.
          ¿Estáis listos?, bien, eliminemos entonces el
          DataControl y añadamos unos botones que sirvan
          para moverse adelante, atrás, al principio y al final.
          También no os olvidéis de dejar en blanco las
          propiedades que habíamos cambiado de las cajas
          de texto. Quedaría algo como esto:

          Vamos ahora a la declaración de variables. Hoy
          conoceremos dos nuevos tipos de dato, muy importantes para la conexión y gestión de datos.
          Estos objetos son el ADODB.Connection y el ADODB.Recordset
          El primero, es el encargado de realizar la conexión contra la base de datos, ya sea un Access,
          Oracle o SQL Server. A este objeto debemos indicarle, entre otras cosas, el proveedor y la
          localización de la base de datos, ya sea por ruta o por ODBC.
          El segundo, Recordset, no es mas que un puntero (concepto que mejor no explicaré, pues
          tendríamos para 10 capítulos) que apunta a la base de datos. Este objeto es el que contendrá
          los registros que nosotros queramos, indicándoselo en su propiedad open. Por ejemplo, un
          recordset puede apuntar a todos los registros de la tabla clientes, o solo a aquellos clientes que
          se llamen “Camilo”, o los que vivan en “Barcelona”.
          Después de esta explicación técnica, vamos a la práctica. Declaremos las dos variables anteriormente
          mencionadas. Por ejemplo:

          Option Explicit
          Dim Cnx As ADODB.Connection
          Dim RsRecordset As ADODB.Recordset

          Vamos ahora al Form_Load() y generemos la conexión. Para ello debemos utilizar la propiedad
          Open de nuestra variable Connection. Tenemos que “pasarle” la cadena de conexión con el
          proveedor y la ruta, tal y como hicimos con el DataControl anteriormente.
          Casi se me olvida deciros que, anteriormente, debéis instanciar la variable, ¿recordáis?

          Set Cnx = New ADODB.Connection

          Así es como la instanciaríamos. Con estas dos líneas, hemos realizado una conexión contra la
          base de datos, pero aún no nos hemos traído el conjunto de registros que necesitamos, y para
          ello pediremos ayuda a nuestro nuevo amigo, el Recordset.
          Justo después de abrir la conexión, abriremos el recordset. Para ello utilizaremos la propiedad

PC PASO A PASO Nº 9                                                                                              Página 33
CURSO DE VISUAL BASIC - CREACION DE DLL - ACCEDIENDO A DATOS




             .Open, (Recordad instanciar también este objeto) y le indicaremos el nombre de la tabla, la
            conexión y el modo de apertura y bloqueo del recordset.
            Los modos de apertura indican si queremos el recordset en modo lectura, escritura, y el bloqueo
            indica que pueden hacer otros usuarios con este registro cuando nosotros lo estamos leyendo o
            editando. Bueno, nuestro Form_Load() quedaría así:

            Private Sub Form_Load()
              Set Cnx = New ADODB.Connection
              Cnx.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "bd.mdb;Persist
                                                                                 Security Info=False"
             Set RsRecordset = New ADODB.Recordset
             RsRecordset.Open "Clientes", Cnx, adOpenDynamic, adLockOptimistic
            End Sub

  !            El tipo de...                                   Bien, ya hemos abierto una conexión y recogido
                                                               los registros de la tabla Clientes. Ahora deberíamos
  El tipo de apertura es importante en este caso, y nosotros   mostrar los datos en los TextBox. Para ello podemos
  lo abrimos de forma Dinámica, que permite actualizaciones.   añadir debajo del RsRecordset.Open las líneas
  En cambio el tipo de bloqueo, nos es poco importante ya      necesarias. El Recordset contiene los datos, y para
  que solo trabajaremos nosotros contra esa base de datos.     acceder a ellos lo haremos de la siguiente forma:



               TxtIdCliente = RsRecordset("IdCliente")
               TxtNomCliente = RsRecordset("NomCliente")
               TxtDirCliente = RsRecordset("DirCliente")
               TxtTelCliente = RsRecordset("TelCliente")

            Si os fijáis, entre los paréntesis vemos el literal con el nombre del campo, pero también podríamos
            referirnos a estos con su índice, por ejemplo, RsRecordset(“NomCliente”) sería RsRecordset(2).
            Ejecutamos la aplicación y vemos que las cajas de texto se han rellenado con los datos de la BD.
            Ahora deberíamos movernos por los registros.
            Vamos al botón siguiente, y en su evento Click pondremos RsRecordset.MoveNext. Con esto nos
            moveremos al siguiente registro, pero debemos volver a cargar las cajas de texto con los datos.
            Ya que esto lo vamos a tener que hacer en cada botón, mejor creamos una función que mueva
            los valores del recordset a los TextBox. La función la podríamos llamar LlenarCampos, y la
            codificaríamos así:


            Public Function LlenarCampos()
              TxtIdCliente = RsRecordset("IdCliente")
              TxtNomCliente = RsRecordset("NomCliente")
              TxtDirCliente = RsRecordset("DirCliente")
              TxtTelCliente = RsRecordset("TelCliente")
            End Function

            Una vez escrita la función, el botón siguiente quedaría así:


Página 34                                                                                              PC PASO A PASO Nº 9
CURSO DE VISUAL BASIC - CREACION DE DLL - ACCEDIENDO A DATOS




          Private Sub CmdSiguiente_Click()                      Dim RsRecordset As ADODB.Recordset
            RsRecordset.MoveNext
            LlenarCampos                                        Private Sub CmdAnterior_Click()
          End Sub                                                 RsRecordset.MovePrevious
                                                                  LlenarCampos
          Los demás, no tiene ningún secreto, podríais          End Sub
          intentar hacerlos vosotros mismos, yo os pondré
          aquí el código, pero antes de leerlo, intentadlo.     Private Sub CmdPrimero_Click()
                                                                  RsRecordset.MoveFirst
          Private Sub CmdAnterior_Click()                         LlenarCampos
            RsRecordset.MovePrevious                            End Sub
           LlenarCampos
          End Sub                                               Private Sub CmdSalir_Click()
                                                                  RsRecordset.Close
          Private Sub CmdPrimero_Click()                          Unload Me
            RsRecordset.MoveFirst                               End Sub
            LlenarCampos
          End Sub                                               Private Sub CmdSiguiente_Click()
                                                                  RsRecordset.MoveNext
          Private Sub CmdSiguiente_Click()                        LlenarCampos
            RsRecordset.MoveNext                                End Sub
            LlenarCampos
          End Sub                                               Private Sub CmdUltimo_Click()
                                                                  RsRecordset.MoveLast
          Private Sub CmdUltimo_Click()                           LlenarCampos
            RsRecordset.MoveLast                                End Sub
            LlenarCampos
          End Sub                                               Private Sub Form_Load()
                                                                  Set Cnx = New ADODB.Connection Cnx.Open
          Y con esto, hemos acabado por hoy. Para que           "Provider=Microsoft.Jet.OLEDB.4.0;Data
          practiquéis, codificar el botón salir, y si os dais   Source=" & App.Path & "bd.mdb;Persist Security
          cuenta, cuando hacéis “siguiente” varias veces,       Info=False"
          hasta llegar al último registro, el programa
          devuelve un error, porque intentáis avanzar           Set RsRecordset = New ADODB.Recordset
          donde ya no existen datos. Solo os daré una           RsRecordset.Open "Clientes", Cnx,
          pista, las propiedades EOF y BOF indican el           adOpenDynamic, adLockOptimistic
          final y principio de un recordset respectivamente,
          devolviendo True o False.                             TxtIdCliente =    RsRecordset("IdCliente")
          Un saludo a todos                                     TxtNomCliente =   RsRecordset("NomCliente")
                                                                TxtDirCliente =   RsRecordset("DirCliente")
          En la próxima entrega, altas, modificaciones y        TxtTelCliente =   RsRecordset("TelCliente")
          bajas!!!
                                                                End Sub
          Fuente:
          Option Explicit                                       Public Function LlenarCampos()
          Dim Cnx As ADODB.Connection                             TxtIdCliente = RsRecordset("IdCliente")

PC PASO A PASO Nº 9                                                                                               Página 35
CURSO DE VISUAL BASIC - CREACION DE DLL - ACCEDIENDO A DATOS




                  TxtNomCliente = RsRecordset("NomCliente")
                 TxtDirCliente = RsRecordset("DirCliente")
                 TxtTelCliente = RsRecordset("TelCliente")
                End Function




                        SUSCRIBETE A
                        PC PASO A PASO
                                                                              45 EUROS (10% DE DESCUENTO)
   SUSCRIPCIÓN POR:                                                           +
   1 AÑO                                                       =              SORTEO DE UNA CONSOLA XBOX
                                                                              +
   11 NUMEROS                                                                 SORTEO 2 JUEGOS PC (A ELEGIR)

C o n t r a R e e m b o l s o Giro Post al
Solo tienes que enviarnos un mail a preferente@hackxcrack.com              Envíanos un GIRO POSTAL por valor de 45 EUROS a:
indicando:                                                                 CALLE HIGINIO ANGLES Nº2, 4º-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
puesto que 24 horas después de que recibamos tu petición de                - Dirección Completa
subscripción te daremos un número de Cliente Preferente. Este              - Población
número será utilizado para los sorteos.                                    - Provincia
- Tipo de Subscripción: CONTRAREEMBOLSO                                    - Cógigo Postal
- Número de Revista:                                                       - Mail de Contacto y/o Teléfono Contacto
Este será el número a partir del cual quieres subscribirte. Si deseas      Es imprescindible que nos facilites un mail o teléfono de contacto,
(por ejemplo) subscribirte a partir del número 5 (incluido), debes poner   puesto que 24 horas después de que recibamos tu petición de
un 5 y te enviaremos desde el 5 hasta el 15 (ambos incluidos)              subscripción te daremos un número de Cliente Preferente. Este
                                                                           número será utilizado para los sorteos.
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 HIGINIO ANGLES Nº2, 4º-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; rellenando el formulario de nuestra WEB
* Cualquier consulta referente a las subscripciones puedes enviarla        (www.hackxcrack.com) o enviándonos una carta a la siguiente dirección:
por mail a preferente@hackxcrack.com                                       CALLE HIGINIO ANGLES Nº2, 4º-1ª
                                                                           CP 43001 TARRAGONA
                                                                           ESPAÑA
                                                                           * Cualquier consulta referente a las subscripciones puedes enviarla
                                                                           por mail a preferente@hackxcrack.com




 Página 36                                                                                                             PC PASO A PASO Nº 9
TeCNICAS DE PORT SCANNING
               Y USO DEL NMAP.

             1- ¿Qué es el escaneo de puertos
             y para qué sirve?                                       necesitamos una referencia y este artículo cumplirá esa
                                                                    función.
             El escaneo de puertos es una técnica usada
             por hackers y administradores (sin ánimo
             de hacer distinciones) para auditar máquinas         Algunos tipos de escaneo explicados de forma
             y redes con el fin de saber que puertos están        breve, y que luego verás mejor con la práctica,
             abiertos o cerrados, los servicios que son           son:
             ofrecidos, chequear la existencia de un
             firewall así como verificaciones sobre el            -TCP connect: esta es una técnica rápida y
             funcionamiento del mismo y algunas otras             simple, pero tiene el inconveniente de que
             cosas. Ni que decir tiene que ésta es una de         canta un poquito xD y se detecta fácilmente.
             las técnicas más utilizadas a la hora de penetrar    Además por lo general si utilizas esta técnica
             en un sistema y realizar un análisis preliminar      tus conexiones serán logueadas y/o filtradas.
             del sistema... sin duda una de las mejores y
             más efectivas para llevar a cabo nuestras            Se basa en intentar establecer una conexión
             "oscuras intenciones".                               con el puerto del host remoto mediante la
                                                                  llamada a connect () si se establece
             De eso te hablaré aquí, de las diversas técnicas     dicha conexión, evidentemente, el puerto está
             de escaneo, de cómo escanear una máquina             abierto.
             o red y de cómo aprovechar los resultados
             obtenidos para atacar o proteger nuestro             -TCP SYN: se trata de un escaneo en el que
             sistema, todo con un propósito puramente             no se establece una conexión completa,
             educativo ;-)                                        enviamos SYN y en función de la respuesta
                                                                  obtenida por el host contestamos con RST (en
                                                                  caso de estar abierto) para resetear la conexión,
             2- Algunos tipos de escaneo
                                                                  es decir, abortar.
             conocidos.                                           Puede darse el caso de que al enviar un paquete
                                                                  TCP con el bit SYN no se reciba respuesta lo
             Antes de seguir con la explicación deberías
                                                                  que significa que el host está desconectado o
             tener algunas nociones básicas acerca del
                                                                  se filtra la conexión a ese puerto.
             protocolo TCP y algunas otras cosas que ya
                                                                  A este tipo de escaneo se le conoce como
             se han explicado en la revista.
                                                                  escaneo "medio abierto" o "SYN stealth".

  !             Si no estas...                                    -Stealth Scan (TCP FIN): se trata de enviar
                                                                  FIN y esperar la respuesta del host víctima de
  Si no estás iniciado en el tema, lo que leerás a continuación   nuestro escaneo FIN stealth ("sigiloso"), si
  quizás te amedrente un poco. Vamos a ver, este artículo         ignora los paquetes enviados entonces el puerto
  servirá de plataforma para explicar en profundidad muchos       está abierto. Los sistemas de la compañía
  temas en próximos números, todo aquello que ahora no            Micro$oft (entre otros) no son susceptibles
  entiendas será explicado, como hacemos siempre, pero            a este tipo de escaneo aunque parezca mentira
                                                                  :P .

PC PASO A PASO Nº 9                                                                                                   Página 37
PORT SCANING - NMAP - PORT SCANING - NMAP - PORT SCANING - NMAP




            -Reverse Ident (TCP): realizamos un               -Null Scan: se trata de otro método de escaneo
            escaneo normal TCP pero miramos si el puerto      stealth, en el que enviamos un curioso paquete
            113 está abierto con el objetivo de saber quién   sin banderas levantadas.
            es dueño de los servicios que corren en otros
            puertos de la máquina.                            -Xmas Scan: lo realizamos enviando paquetes
                                                              TCP anormalmente configurados y todos los
            -Ping Scan: ...bastante explícito xD en todo      flags (banderas) SYN, ACK, PSH, RST, URG
            caso se debe usar cuando tu intención sea         y FIN levantados.
            saber que máquina(s) están despiertas, es
            posible bloquear los pings, pero luego (con la    -Idle scan: se trata de una técnica de escaneo
            practica) veremos como saltarse esta              stealth muy potente y eficaz, con la que no
            "protección" en caso de encontrarnos con el       tenemos necesidad de enviar ni un solo paquete
            inconveniente.                                    con nuestra IP si no que se utilizan host's
                                                              zombis, sería interesante comentar esta técnica
            -Bounce Attack (vía ftp): se trata de             detalladamente en su propio espacio por lo que
            aprovechar la conexión proxy ftp para escanear    no profundizaremos ahora.
            a través de un servidor FTP. Esto es así porque
            podemos utilizar el comando PORT indicando        Finalmente,
            una dirección IP y un puerto, en este caso el
            objetivo de nuestro escaneo y solicitamos una     -RCP Scan: se trata de enviar el comando
            transmisión de datos, si el puerto en cuestión    NULL (SunRPC) a los puertos tcp o udp
            está cerrado se generará un error 425 ("Can´t     que están abiertos y ver si son puertos RPC
            get data conection" o algo muy similar). Es       para saber qué programa y su versión está
            una buena idea deshabilitar la opción ftp         corriendo.
            proxy para evitar que terceros utilicen nuestro
            servidor para escanear y/o atacar otras redes.    Estos son los tipos de escaneo fundamentales
                                                              aunque no son los únicos.
            -UDP Scan: este escaneo mostrará los puertos
            abiertos que utilizan el protocolo UDP (con       3- Nuestros enemigos: "IDS".
            sus inconvenientes), es bastante lento aunque
            irá mejor si escaneas una máquina que utilice     Antes de proceder a ver de qué manera
            la plataforma Window$ gracias a la política       podemos aplicar los diferentes ataques
            de M$ de hacer las cosas "iguales pero            existentes que acabamos de repasar brevemente
            diferentes" y "viva el monopolio".                me gustaría dejar clara una cosa a la hora de
                                                              escanear puertos a diestro y siniestro: DEBES
            -ACK Scan: muchas veces nos encontramos           SER CUIDADOSO Y NO DAR LA NOTA (--
            con un bonito firewall que impide el "correcto    ¡no j*d*s!) ten en cuenta que aparte de haber
            flujo de los paquetes" xDD desde nuestra          buenos administradores (pocos pero hay :P)
            máquina al host víctima, por eso y otros          monitoreando el tráfico y la actividad de sistema,
            motivos nos interesa saber qué tipo de            los cortafuegos y los logs del sistema... existen
            configuración tiene el cortafuegos, es decir si   los llamados: IDS (Intrusion Detection System,
            el tráfico ha sido filtrado o no.                 que no traduciré porque seguro que ya sabéis
                                                              lo que significa xD) mediante estos sistemas
            -Window Scan: muy parecido al anterior,           es posible detectar un escaneo, activar las
            pero nos dice también que puertos están           alarmas y llevar a cabo las acciones oportunas,
            abiertos.                                         es decir, que si un "UIA" (Usuario del Intesné

Página 38                                                                                           PC PASO A PASO Nº 9
PORT SCANING - NMAP - PORT SCANING - NMAP - PORT SCANING - NMAP




           Aburrido) se dedica a escanear ciento y pico         ¿De dónde me bajo el NMap?
           máquinas de una red de arriba a abajo en plan
           "destroyer" tiene todos los números de meterse
                                                                Como acabo de decir se trata de una
           en un buen lío ...aunque os pego aquí un texto
                                                                herramienta LIBRE y eso significa que dispones
           sacado de la web de los Men In Green ;-)
                                                                del código fuente y el programa compilado; lo
           << Es de destacar que conductas tan frecuentes       tienes para diversas plataformas. Aunque NMap
           en esta Sociedad de la Información, como son el      está pensado para su uso en la consola (línea
           Spam o el simple Escaneo de puertos, difícilmente    de comando) dispone de un agradable GUI
           encuentran cabida entre los delitos tipificados en   (Interfaz Gráfica de Usuario) que hace más
           nuestro Código Penal, por lo que no son              fácil todavía su manejo, si piensas utilizar NMap
           perseguibles por vía penal. >>                       bajo la plataforma Window$ te recomiendo
                                                                que sea un Window$ NT/2K aunque existe
           Ejemplos de aplicaciones "IDS" son: Cyber            para 95/98/ME, por supuesto las versiones
           Cop, CISCO NetRanger, TripWire, Snort                para Window$ no son tan rápidas ni estables
           y L.I.D.S siendo estos tres últimos                  como cabría esperar debido a que todavía se
                                                                encuentran en constante desarrollo.
           gratuitos :)
                                                                Te puedes bajar la versión NMap 1.3.1 para
 !            IDS ¿Qué? ...                                     Window$ aquí:

                                                                ttp://download.insecure.org/nmap/dist/nmapwin
 IDS ¿Qué? ¿?¿? Si nunca has oído hablar de esto, ya sabes,     _1.3.1.exe
 www.google.com e investiga un poco por tu cuenta.
                                                                INSTALACIÓN                DEL       NMAP:

                                                                Si has optado por descargarte NMAP junto con
            4- Visión práctica: usando el NMap.                 su GUI ("NMapWin") simplemente sigue
                                                                estos pasos:
            NMap es una herramienta LIBRE para la
            auditoria de redes, disponible en varias
            plataformas aunque fue desarrollada                 1-Bájate NMapwin_1.3.1.exe (instalador para
            inicialmente para entornos Unix, y para mí          Window$) mencionado justo arriba.
            una de las mejores utilidades que existen
            actualmente para el propósito, mediante esta        2-Ejecuta el instalador y sigue las instrucciones
            potente herramienta podemos por ejemplo:            indicadas.

                                                                3-Una vez finalizado esto te vas al directorio
            -Determinar que host's están disponibles en
                                                                que diste al programa y encontrarás nuevos
            una red.
                                                                ejecutables, debes instalar WinPCap.
            -Determinar los puertos abiertos que tiene el
            sistema y que servicios ofrecen.                    4-Una vez reiniciado Window$ (por una vez
            -Determinar que sistema operativo corre en el       que sea decisión tuya ¿no? xD) ya dispones de
            host objetivo.                                      Nmap para la línea de comandos y su interfaz
            -Determinar la configuración y uso de               gráfica plenamente funcionales :)
            cortafuegos.
            -Arreglar una tarde aburrida escaneando el          Ahora explicaremos cómo utilizar el NMap
            ordenador de nuestra vecina ;)                      mediante su GUI para escanear los puertos de

PC PASO A PASO Nº 9                                                                                                 Página 39
PORT SCANING - NMAP - PORT SCANING - NMAP - PORT SCANING - NMAP




            un sistema mediante las diversas técnicas que   También se permite el uso del asterisco, por
            he comentado.                                   ejemplo: 198.154.3.* e incluso el escaneo de
                                                                   puertos dentro de un rango específico.


                                                                      !           Si has leido ...

                                                                      Si has leído los números anteriores de esta
                                                                      publicación ya sabes lo que es una IP y el formato
                                                                      que tiene, por lo tanto solo te puntualizo que cuando
                                                                      sustituyes una parte de la IP por un asterisco, lo
                                                                      que haces es escanear un rango de IPs.

                                                                      Si tomamos como ejemplo 198.154.3.*, lo que
                                                                      hacemos es escanear desde la IP 198.154.3.0 a la
                                                                      IP 198.154.3.255


                                                                    Justo abajo tenemos una serie de
                                                                    pestañitas para indicar el tipo de escaneo
                                                                    a realizar así como las opciones
                                                                    adicionales que queremos aplicar. Los
                                                                    resultados obtenidos tras el escaneo
                                                                    aparecerán en el cuadro de salida
            Para empezar lo mejor será ver todas esas       (Output), además si te fijas en la barra de abajo
            opciones que puedes utilizar jeje seguro que    aparecen los argumentos que deberíamos
            estás inquieto pensando en darle al botoncito   pasarle al NMap mediante la línea de comandos.
            de "scan" pero no te impacientes.

            En primer lugar tenemos un cuadro de
            texto donde indicaremos el host que
            queremos escanear, podemos usar la IP
            o el nombre del host indicando además:

            /32 para escanear únicamente el servidor
            especificado.                                   Veamos esas opciones que es importante
            /16 para escanear una dirección de clase 'B'.   conocer, por ejemplo ya hemos comentado que
            /24 para escanear una dirección de clase 'C'.   es posible que nuestra víctima (por llamarla de
                                                            alguna manera :P) esté on-line pero no deja
                                                            que "pinguées" su servidor.
  !            Si   no     entiendes            ...
                                                            Si te fijas en la pestañita "SCAN" verás que
  .Si no entiendes eso de Clase A, B, C, no te preocupes,
                                                            puedes seleccionar las modalidades de escaneo
  en los próximos números y tomando de referencia este
                                                            que te he explicado hace un momento, y que
  texto explicaremos las MUCHAS cosas que seguro no
                                                            no volveremos a comentar ahora, pero lo que
  comprendes ahora mismo de este artículo… poco a poco
                                                            si que es interesante explicar son las opciones
  y paso a paso :)
                                                            de tu derecha ("Scan Options").

Página 40                                                                                          PC PASO A PASO Nº 9
PORT SCANING - NMAP - PORT SCANING - NMAP - PORT SCANING - NMAP




          Como se puedes ver si quieres indicar un rango     así: -PT80 (puerto 80 por no ser normalmente
          de puertos a escanear (con -P) debes marcar        filtrado) si el objetivo no permite pings puedes
          la opción Port Range, por ejemplo así: 10-         estas dos últimas opciones... aunque es una
          2048.                                              sugerencia xD.
          Otra opción curiosa que me gusta bastante          -Realizar un "ping" TCP usando SYN (-PS).
          (aunque yo no la uso :P) es Decoy, sirve para      -Realizar un ping mediante ICMP.
          escanear usando uno o más señuelos para que        Por defecto NMap realiza un ping ICMP + ACK
          el servidor objetivo vea que le atacan desde       en paralelo, es decir, -PI y -PT.
          varias IP's que debes indicar separadas por
          comas, si no indicas "ME" en una de las            Si ahora te vas a "OPTIONS" podrás ver unas
          posiciones se te asignará una de oficio, digo,     opciones muy interesantes, por ejemplo:
          aleatoria xD imagínate que locura para un
          administrador ;)                                   Fragmentation (-f) con esta opción se usan
                                                             paquetes fragmentados que dificultan la
          Más cosas, en Device (-e) especificamos la         detección del escaneo, en un futuro os
          interfaz desde la que enviar y recibir los         hablaremos de ataques de ataques de
          paquetes, aunque normalmente NMap detecta          fragmentación y relacionados ampliamente.
          esto de forma automática :) así que salvo casos
          puntuales no debes preocuparte por eso.            OS detection: pues eso, si quieres determinar
          Otra de las opciones de especial interés es        que tipo de SO utiliza el objetivo marca esta
          indicar una IP en Source Address (-S) de           casilla, recomendado.
          manera que aparentemente el ataque se realiza
          desde esa IP, aunque evidentemente el escaneo      Get Ident Info: usa la técnica del escaneo
          no te servirá de nada :( especifica la interfaz    inverso (TCP reverse ident scanning) siempre
          en este caso (-e) y ten en cuenta que falsear      que sea posible, úsalo al realizar un escaneo
          la dirección de origen por otra ajena puede        tipo -sT (connect), útil cuando quieras saber si
          hacer que "esa IP" se meta en problemas, por       un servicio corre con privilegios de administrador.
          favor, utiliza esta función con responsabilidad.
                                                             Fast Scan (-F): escanea los puertos especificados
          Otra opción es Bounce Attack (-b) necesita         de /etc/services (nmap-services en nuestro
          que le pases usuario:password@servidor:puerto      caso xD).
          y ya sabes lo que hace ;) pero recuerda que
          va muy lento.                                      Random Host's: objetivos aleatorios (-iR) y
          También podemos especificar el Source Port         bueno, realmente no nos interesa.
          (puerto de origen) con -g o marcando su casilla
          en la interfaz gráfica con el fin de establecer    Con don´t resolve (-n) y resolve all (-R)
          ese puerto como fuente de nuestro escaneo.         indicamos si queremos resolución DNS, es decir,
          Esto tiene sentido especialmente si un firewall    resolución de nombres de host por su IP.
          hace excepciones en función del puerto de
          origen para filtrar o no los paquetes.             Mediant Resume (--resume fichero) podemos
                                                             retomar un escaneo detenido usando un fichero
          En la pestañita "DISCOVER" encontrarás             de salida.
          nuevas posibilidades:
                                                             Verbose y very verbose: nos da información
          -No realizar un ping previo. (-P0)                 más amplia de lo que sucede (-v) puedes usarlo
          -Realizar un "ping" TCP usando ACK tal que         dos veces (very verbose) para mostrar todavía

PC PASO A PASO Nº 9                                                                                                Página 41
PORT SCANING - NMAP - PORT SCANING - NMAP - PORT SCANING - NMAP




            más información.                                     número máximo de escaneos que se permitirán
                                                                ejecutar en paralelo, no debes utilizar un valor
                                                                muy alto para no agotar los recursos de tu
                                                                máquina ;-)

                                                                Scan Delay: tiempo mínimo de espera entre
                                                                las diferentes pruebas en milisegundos, lo
                                                                puedes usar para evitar (¿?) que algunos IDS
                                                                detecten el escaneo.

                                                                Pasemos a la siguiente pestañita como ves hay
                                                                MUCHAS opciones xD para "curiosear" redes;
            Si ahora pasas a la pestañita "timing"              en Files encontrarás Input File y Output File (-
            encontrarás opciones referentes al tiempo que,      iL y -oN respectivamente):
            por lo general, no es necesario que modifiques
            aunque si por ejemplo te encuentras en una          Input File: escanear los objetivos de un fichero
            red con tráfico excesivo u otros casos en los       dado con objetivos separados por retornos de
            que sea necesario reajustar estos valores debes     carro (intro), espacios y tabulaciones.
            hacerlo aquí, veamos lo que podemos hacer:
                                                                Output File: guarda los resultados obtenidos
            Throttle: sirve para configurar el tiempo de        en un fichero especificado, podemos especificar
            envío y respuesta de paquetes de forma general,     el formato del salida pero lo suyo es dejarlo
            siendo Paranoid el más lento e Insane el más        normal (-oN) puedes marcar Append para añadir
            rápido. (-T Paranoid|Sneaky|Polite|Normal...).      la nueva información al final del fichero.

            Otras alternativas disponibles (¡no debes usarlas   A continuación se puede ver la pestaña "Service"
            si modificas algo usando Throttle!)                 que simplemente se usa para configurar el
                                                                servicio pero para lo que estamos tratando
            Host Timeout: indica el tiempo máximo en            ahora no es importante así que pasemos a
            milisegundos que se dedica al escaneo de un         otras opciones que aunque tampoco son
            único sistema, por defecto no tiene impuesto        especialmente necesarias veremos algunas,
            un límite tal y como se puede ver.                  son las de la pestañita "Win32" y se usan para
                                                                lo siguiente:
            Max RTT: tiempo máximo de espera en
            milisegundos que NMap esperará a recibir            No Pcap (--win_nopcap): deshabilita el soporte
            respuesta del sistema escaneado.                    Wincap.

            Min RTT (ms): para evitar casos de demora en        No Raw Sockets (--win_norawsock): deshabilita
            la comunicación NMap nos asegura un tiempo          el soporte para raw sockets (algún día
            mínimo de espera.                                   hablaremos de los sockets y los sockets en
                                                                crudo puesto que proporcionan ventajas
            Initial RTT (ms): al especificar la opción -P0      interesantes aunque por ahora puede ser
            para probar un cortafuegos podemos especificar      demasiado avanzado).
            un tiempo de espera en las pruebas iniciales.
                                                                List Interfaces (--win_list_interfaces): lista todas
            Parallelism: (--max_parallelism num) indica el      las interfaces de red.

Página 42                                                                                               PC PASO A PASO Nº 9
PORT SCANING - NMAP - PORT SCANING - NMAP - PORT SCANING - NMAP




          C:>nmap --win_list_interfaces                    y obtendremos como respuesta algo parecido
          Available interfaces:                             a esto:

          Name           Raw send Raw recieve IP            Starting nmap V. 3.00 ( www.insecure.org/nmap )
          loopback0 SOCK_RAW SOCK_RAW 127.0.0.1             Host (***.***.**.*) appears to be up ... good.
          eth0        SOCK_RAW winpcap     0.0.0.0          Initiating SYN Stealth Scan against (***.***.**.*)
          ppp0            SOCK_RAW SOCK_RAW                 The SYN Stealth Scan took 0 seconds to scan 1
          211.98.199.104                                    ports.
                                                            Interesting ports on (***.***.**.*):
          Force Raw Socket(--Win_forcerawsock): probar      Port      State    Service
          los raw sockets incluso en un sistema que no      1080/tcp filtered socks
          sea Window$ 2000.                                 [...]

                                                                  Aunque lo mismo interesa buscar algunos
                                                                  servidores con NT:
                                                                  nmap -sS -O -p 80 objetivo/24.

                                                                  Más ejemplos,

                                                            nmap -sS -PI -v ***
          Hemos visto lo podemos hacer y supongo que        Starting nmap V. 3.00 ( www.insecure.org/nmap )
          te das cuenta de la potente herramienta que       Host (***.***.***.***) appears to be down,
          tienes en tus manos ¿verdad? jeje pues espera     skipping it.
          a usarla ;).                                      Note: Host seems down. If it is really up, but
                                                            blocking our ping probes, try -P0
          4.1- Algunos ejemplos de uso.
                                                            ...mmm parece ser que con un escaneo (usando
          Ahora veremos algunos ejemplos de escaneo         ping) normalillo no basta :P
          utilizando el NMap, yo como soy un maniático
          usaré la línea de comandos, cada uno que use      nmap -sS -PT -v ***
          lo que más le guste :)                            Starting nmap V. 3.00 ( www.insecure.org/nmap )
                                                            Host (***.***.***.***) appears to be up ... good.
          Antes de ponernos a "curiosear" permíteme         Initiating SYN Stealth Scan against
          recomendarte no escanear desde tu propio PC       (***.***.***.***)
          =:) búscate el cyber cutre de turno o asegúrate   Adding open port 80/tcp
          de ocultar bien tu IP, etc.                       Adding open port 53/tcp
          Realizamos un primer chequeo:                     Adding open port 22/tcp
                                                            Adding open port 443/tcp
          Hoy es un día aburrido y no hay nada mejor        Adding open port 25/tcp
          que hacer que buscar WinGates (servicio           The SYN Stealth Scan took 31 seconds to scan
          ofrecido normalmente en el puerto 1080),          1601 ports.
          abrimos una ventana de comandos y                 Interesting ports on (***.***.***.***):
          escribimos: (sustituye “objetivo” por la IP       (The 1584 ports scanned but not shown below are
          de la víctima)                                    in state: closed)
                                                            Port      State   Service
          nmap -sP -vv -p 1080 objetivo                     22/tcp open        ssh

PC PASO A PASO Nº 9                                                                                              Página 43
PORT SCANING - NMAP - PORT SCANING - NMAP - PORT SCANING - NMAP




            25/tcp open       smtp                                      Remote operating system guess: Linux 2.2.12 -
            53/tcp open       domain                                    2.2.19
            79/tcp filtered finger
                                                                        [...]
            80/tcp open       http
            137/tcp filtered netbios-ns
            138/tcp filtered netbios-dgm
            139/tcp filtered netbios-ssn                                nmap -sS -O -vv NOMBRE/IP_víctima/24
            143/tcp filtered imap2
            389/tcp filtered ldap
            443/tcp open       https                                    Con este escaneo barremos una red de clase
            901/tcp filtered samba-swat
                                                                        C mediante un escaneo oculto (stealth SYN) y
            3306/tcp filtered mysql
                                                                        con la intención de averiguar el SO, además
            5432/tcp filtered postgres
            6346/tcp filtered gnutella                                  hemos especificado el modo very verbose para
            6699/tcp filtered napster                                   obtener más detalles acerca de lo que está
            10000/tcp filtered         snet-sensor-mgmt                 ocurriendo.

            vaya... pues si que estaba despierto mira tu
            que cosas :P y resulta que tiene algunos puertos
                                                                        Estos son algunos ejemplos simples de escaneo,
            filtrados, ok. En cambio tiene otros como el 25
                                                                        ahora ya estás listo para salir "ahí fuera" a
            (servidor SMTP), el 53 (name-domain server)
            y 22/ssh (secure shell) abiertos.                           explorar de forma efectiva y segura (?) ya
                                                                        iremos viendo como explotar algunos agujeros
            Vamos a investigar eso un poco ;-) por simple               de seguridad más a fondo en la revista para
            curiosidad:                                                 los cuales es buena idea realizar un análisis
                                                                        previo del sistema del que queremos
            C:>telnet ***.*** 25
                                                                        comprometer la seguridad, no te pierdas los
                                                                        próximos artículos ;).
            220 correo.***.*** ESMTP
            MAIL FROM yo mismamente!
            250 ok
            #en fin, no ha hecho falta el saludo xD. Seguimos.
            [...]

            y si nos conectamos al puerto 22 sacamos esto                       !            Para tus primeras...
            SSH-2.0-OpenSSH_2.5.2p2 xD.
                                                                                Para tus primeras pruebas, te recomendamos utilizar como
            M o l a r í a s a b e r e l s i s t e m a o p e ra i vo :           víctima para tus escaneos el servidor de Hack x Crack que
            nmap -sS -PT -PI -O -T 3 (usamos -O para                            está en la IP 80.36.230.235, que para eso está ;)
            detectar el SO)

            Starting nmap V. 3.00 ( www.insecure.org/nmap
            )
            [...]




Página 44                                                                                                        PC PASO A PASO Nº 9
SERIE RA W: CONOCIENDO
           PROTOCOLOS Y SU SEGURIDAD.
                    RAW3: IRC
             (Internet relay chat)
          0. INDICE:                                   2.3. Comando PRIVMSG
          1. DOCUMENTACION                                 2.3.1.     Mensajes    privados
             1.1. Un lugar donde vivir                     2.3.2.Escribiendo en el canal
             1.2. Como siempre, empezamos con              2.3.3. Escribiendo en un canal en
                  los RFCs                                       el que no estamos
             1.3. Arquitectura del IRC                     2.3.4. El protocolo CTCP
                  1.3.1. Redes                             2.3.4.1. CTCP PING
                  1.3.2. Servidores                        ATENCION!! Sobre el ping timeout
                  1.3.3. Canales                                    2.3.4.2. CTCP VERSION
                        Tipos de usuarios de un                     2.3.4.3. CTCP TIME
                        canal                                       2.3.5. El protocolo DCC
             1.4. Seguridad en IRC                     2.4. Comandos de consulta al servidor
                                                           2.4.1. Comando MOTD
          2. PROTOCOLO IRC
                                                           2.4.2. Comando LUSERS
             2.1. Comandos de conexión
                                                           2.4.3.     Comando    VERSION
                  2.1.1. Conectando con el servidor
                                                           2.4.4. Comando STATS
                  2.1.2. Identificándonos
                                                           2.4.5. Comando LINKS
                         2.1.2.1. Comando NICK
                                                           2.4.6. Comando TIME
                         2.1.2.2. Comando USER
                                                           2.4.7. Comando TRACE
                         2.1.2.3. Comando OPER
                                                           2.4.8. Comando ADMIN
                         2.1.2.4. El IDENT
                                                           2.4.9. Comando INFO
                  2.1.3. Comando MODE (modos de
                                                       2.5. Comandos de consulta sobre los
                                 usuario)
                                                           usuarios
                  2.1.4. Comando QUIT, y /quote
                                                           2.5.1. Comando WHO
             2.2. Comandos de canales
                                                           2.5.1.1. Listado de usuarios
                  2.2.1. Comando JOIN
                                                           2.5.1.2. Listado de usuarios en
                  2.2.2. Comando PART
                                                                     canales
                  2.2.3. Comando MODE (modos de
                                                           2.5.1.3. Búsqueda de usuarios
                                 canal)
                                                                    por IP
                  2.2.4. Comando MODE (modos de
                                                                    2.5.2. Comando WHOIS
                                 usuario por canal)
                                                                    2.5.3. Comando WHOWAS
                  2.2.5. Comando TOPIC
                  2.2.6. Comando LIST                 3. PARA TERMINAR
                  2.2.7. Comando INVITE
                  2.2.8. Comando KICK

PC PASO A PASO Nº 9                                                                            Página 45
SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC




            1.       DOCUMENTACIÓN                                   objetivo de este artículo, en el cual no voy a
                                                                     hablaros sobre el mundillo del IRC, si no sobre
            1. 1. Un lugar donde vivir                               el protocolo que hace que la cosa funcione.

            Un mes más, tenéis con vosotros la serie RAW,            1.2. Como siempre, empezamos
            pero esta vez para presentaros algo más que              con los RFCs
            un protocolo. Y es que el IRC es más que eso,
            ya que es también un lugar donde vivir.                  Aunque muchos de vosotros paséis del tema,
            Realmente, hay una diferencia cualitativa entre          ya que para saciar la curiosidad de la mayoría
            pasar tus ratos en Internet visitando páginas            bastará con leer el artículo (que para eso está),
            Web y bajando algún que otro gigabyte, y                 aun así es mi deber dar las referencias para
            entre tener además una residencia fija en la             los que queráis profundizar más en el tema.
            red, donde se sabe que se te podrá encontrar             C o n s i d e ra n d o l a g ra n c a n t i d a d d e
            siempre que estés en persona en la red (es               documentación que circula sobre IRC, me veo
            decir, que no esté sólo tu PC conectado mientras         en la necesidad de insistir en que aquí sólo voy
            tú te tomas unas cervezas).                              a hablar de IRC como protocolo. Así que este
            Por supuesto, tú no eres el único habitante de           no es otro más de los miles de artículos clónicos
            esa residencia, si no que la compartes con               en los que se explican las mismas barbaridades
            millones de usuarios de todo el mundo que                de siempre (takeovers, nukes, etc, etc). Así
            han escogido alguna red de IRC como su hogar             que cambiemos el chip, e imaginemos que
            en la red.                                               somos ingenieros de la IETF (Internet
            ¿Y por qué IRC, y no cualquiera de los otros             Engineering Task Force), y no simples usuarios
            famosos sistemas de mensajería, como                     curiosos. ;-)
            Messenger, ICQ, ...? Pues hay muchos motivos,            Con respecto a los RFCs, hay básicamente 4
            pero yo creo que los más importantes son                 que abarcan todos los aspectos del protocolo
            sobre todo dos:                                          IRC, aunque en este artículo hablaremos un
            -          En primer lugar, por la libertad, ya que      poco también de un quinto documento: el de
            IRC no es un sistema propietario, como lo                IDENT.
            puede ser Messenger (Microsoft), ICQ                     El RFC que empieza explicando los conceptos
            (Mirabillis), y muchos otros. Al ser IRC un              básicos de la arquitectura del IRC es el RFC
            estándar libre, tienes cientos de redes en todo          2 8 1 0 ( f t p : / / f t p . r f c - e d i t o r. o r g / i n -
            el mundo para escoger la que más te guste.               notes/rfc2810.txt). Si conocéis ya bien el
            Hay redes al gusto de cada uno. Por ejemplo,             funcionamiento del IRC os podéis saltar este
            si te gusta la anarquía (en el sentido de que            RFC, aunque nunca está de más mirarlo por si
            no hay prácticamente bots de servicio) puedes            acaso os enteráis de algo nuevo.
            escoger EfNet, en cambio, si te gusta ser                Hay otro RFC, que es el que profundiza en el
            controlado, puedes escoger el IRC Hispano.               tema de la administración de canales. Se
            -          En segundo lugar, porque desde 1988           explican todos los tipos de canales, así como
            ( c u a n d o J a r k ko O i k a r i n e n p u s o e n   sus modos. Este es el RFC 2811 (ftp://ftp.rfc-
            funcionamiento el primer servidor de IRC), las           editor.org/in-notes/rfc2811.txt).
            redes de IRC han ido creciendo y convirtiéndose           El tercer RFC es el más interesante, y es sobre
            en un complejo universo autosuficiente. Y digo           el que más hablaremos a lo largo del artículo.
            autosuficiente porque puedes conseguir                   En él se explica el protocolo utilizado entre un
            cualquier cosa utilizando tan sólo el IRC. Podría        cliente y un servidor de IRC, y es el RFC
            hablaros de los miles de canales de warez, y             2 8 1 2 ( f t p : / / f t p . r f c - e d i t o r. o r g / i n -
            de otras muchas cosas, pero ese no es el                 notes/rfc2812.txt).

Página 46                                                                                                            PC PASO A PASO Nº 9
SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC




          Por último, en el RFC 2813 (ftp://ftp.rfc-           con mayor número de usuarios (en el momento
          editor.org/in-notes/rfc2813.txt) se entra en        en que escribo esto hay casi 124000 usuarios
          detalle en el protocolo utilizado para la           conectados)
          comunicación de dos o más servidores de             -       Undernet: Otra red clásica. Hace años
          IRC. Si hemos leído el primer RFC ya sabremos       se movía mucho warez por ahí, pero las cosas
          que la arquitectura de IRC es distribuida, pero     ya no están como antes. Aún así sigue siendo
          tranquilos, que ahora mismo os lo explico. :-)      una red con bastante vida.
                                                              -       Dalnet: Bastante parecida a Undernet.
          1.3. Arquitectura del IRC                           También se movía mucho warez, y cuenta
                                                              también con bastantes usuarios.
          Esto será un breve resumen, ya que escaparía        -       IRC-Hispano: Es una red española,
          de la intención de este artículo el hacer una       a diferencia de las otras. La mayoría de los
          descripción detallada de las cuestiones que         usuarios son españoles, y no se ven apenas
          están más allá de la mera descripción de un         sudamericanos. Esta red, sobre todo en los
          protocolo.                                          últimos años, ha sufrido gran cantidad de
          Podríamos estructurar, simplificando mucho, la      polémicas por usuarios descontentos por la
          arquitectura del IRC en 3 capas:                    política de sus administradores. Yo,
          -        redes                                      personalmente, hace más de un año que juré
          -        servidores                                 no volver a pisarla, pero no voy a entrar aquí
          -        canales                                    en polémicas. ;-)
                                                              -       Red latina: Otra red de habla hispana
          1.3.1. Redes                                        pero, al contrario que la anterior, ésta está
                                                              poblada sobre todo por sudamericanos, y
          Existe una gran variedad de redes de IRC            apenas se ven españoles. Es una red bastante
          totalmente independientes. Cada red sería           insegura, aunque explicar el por qué se saldría
          como un mundo aparte. Por ejemplo, el canal         del objetivo de este artículo. 0:)
          #hackxcrack puede existir tanto en EfNet como
          en el IRC-Hispano, pero nada tendrán que ver        1.3.2. Servidores
          entre sí ambos canales, ya que en cada uno
          habrá una gente diferente, y unas normas            Cada red de IRC está formada a su vez por un
          diferentes.                                         cierto número de servidores. Todos los
          Nombro aquí unas cuantas redes con algún            servidores forman una red única (o así debería
          comentario personal (basado únicamente              ser) cuya finalidad es hacer que la naturaleza
          en mi experiencia) sobre sus características:       distribuida del servicio de IRC sea transparente
          -        EfNet: la primera red que se mantiene      al usuario. Es decir, independientemente del
          desde el comienzo del IRC hasta nuestros días.      servidor al que te conectes, tendrás los mismos
          Técnicamente, funciona bastante bien (pocos         servicios y tendrás comunicación con las mismas
          splits, poco lag, etc) y, al ser una red tan        personas y los mismos canales, siempre y
          antigua, tiene ya muchos canales firmemente         cuando los servidores pertenezcan a la misma
          consolidados en los que se pueden encontrar         red. Esto en la práctica no es tan perfecto como
          gran cantidad de recursos (información,             lo pinto aquí, ya que hay muchos problemas
          software, etc). Su principal inconveniente podría   como los splits, o las diferencias en los detalles
          ser quizá la anarquía, ya que no existen bots       de configuración entre servidores.
          de servicio para registro de nicks y canales,       La arquitectura distribuida de las redes de IRC
          pero eso es según se mire, ya que muchos lo         permite tener un mayor número de usuarios,
          pueden considerar una ventaja. Es quizá la red      aunque el sistema es poco eficiente, y cada

PC PASO A PASO Nº 9                                                                                                Página 47
SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC




              vez que se conecta un nuevo usuario aumenta       Dalnet:       irc.dal.net
             la carga de todos los servidores (y no sólo del                  irc.eu.dal.net
             servidor al que se ha conectado), ya que todos     Undernet:     eu.undernet.org
             los servidores tienen que mantener unas tablas                   us.undernet.org
             de datos comunes, así como una comunicación
             constante de todo tipo de eventos, para            1.3.3. Canales
             “garantizar” la transparencia de la arquitectura
             de la red de cara al usuario.               Dentro de cada red, habrá un cierto número
             Por poner un ejemplo, en el instante en que de canales de todo tipo. Hay canales temáticos
             escribo esto, hay 4081 usuarios conectados  (distintos estilos o grupos de música, distintos
             al servidor de EfNet al que estoy yo conectado,
                                                         hobbies, etc), así como canales de colectivos
             mientras que en total, en todo EfNet, hay casi
                                                         de toda índole (desde grupos de warez, hasta
             124000 usuarios.                            simples grupos de amigos). Cualquiera puede
                                                                                crear un canal con tan sólo
                                                                                escribir un comando, por
                                                                                lo que el número de
                                                                                canales es realmente
                                                                                grande. Por ejemplo,
                                                                                mientras escribo esto, en
                                                                                EfNet están funcionando
                                                                                en este instante 44345
                                                                                canales.
                                                                                dicho, la arquitectura
                                                                                distribuida de una red de
                                                                                IRC es transparente al
                                                                                usuario, por lo que
                                                                                cualquier usuario
                                                                                conectado a una
                                                                                determinada red debería
                                                                                ver los mismos canales que
                                                                                cualquier otro usuario que
                                                                                esté conectado a otro
                                                                                servidor de la misma red.
Mapa de servidores del IRC-Hispano. En http://wjr.or g/?tar get=ircmaps& Sólo hay una salvedad a
                                                                               esto, y es que existe la
state=expand tenéis el mapa de servidores de EfNet.
                                                                               posibilidad de crear canales
                                                         locales para cada servidor, y son los canales
           A modo de ejemplo, estos son algunos
                                                         que, en lugar de comenzar por # comienzan
           servidores de algunas redes. Se pueden
                                                         por &.
           encontrar listas completas en la Web de cada
                                                         Por ejemplo, si estoy en el servidor irc.isdnet.fr
           red, o bien en la ventana de conexión de
                                                         de EfNet y creo el canal #hackxcrack,
           cualquier cliente de IRC:
                                                         cualquier usuario de EfNet podrá entrar en ese
                                                         canal, esté en el servidor que esté. En cambio,
           Efnet:           irc.isdnet.fr
                                                         si creo el canal &hackxcrack, sólo podrán
                            irc.homelien.no
                                                         entrar en él los usuarios de EfNet que además
                            efnet.demon.co.uk
                                                         estén conectados a través del servidor

 Página 48                                                                                      PC PASO A PASO Nº 9
SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC




           irc.isdnet.fr.                                       paciencia, y esperad al próximo mes para
                                                               conocer los entresijos del DCC. ;-)
          Tipos de usuarios de un canal :
                                                               2.      PROTOCOLO IRC
          Para comprender muchas de las cosas que
          explicaré a lo largo del artículo, hay que conocer   Vamos ya al grano.
          los 3 tipos básicos de usuarios en cualquier         Podríamos dividir el IRC como protocolo en 3
          canal:                                               capas de abstracción:
          -        operadores (@) : son los usuarios
          con privilegios para administrar la configuración    -       script
          del canal. En la lista de usuarios del canal, su     -       aplicación cliente
          nombre aparecerá precedido por una arroba            -       protocolo raw
          @. A lo largo del artículo veremos en qué
          consisten exactamente los privilegios de un          La capa script sería aquella en la que se realizan
          operador. Es importante que no confundamos           las acciones mediante menús e iconos. Cuando
          un operador de canal con un operador de la           se pulsa uno de estos iconos o menús, lo que
          red o del servidor (a veces llamados IRCops).        hace nuestro script en realidad es ejecutar una
          -        voz (+) : su nombre aparece                 serie de comandos de las capas inferiores que
          precedido por una cruz +. En los canales             veremos ahora mismo.
          moderados (ya veremos más adelante lo que            La capa aplicación cliente es quizá la más
          significa esto), son los únicos que pueden           conocida por parte de los asiduos al IRC. Son
          hablar en el canal sin ser operadores. En canales    aquellos comandos que escribimos directamente
          no moderados, se utiliza muchas veces como           desde el cliente de IRC, utilizando como prefijo
          signo de distinción, aunque no les da ningún         la famosa barra /.
          privilegio sobre la administración del canal.        Al contrario de los que algunos piensan,
          -        usuarios llanos : todos los que no          estos comandos no son los que envía a pelo
          tengan ni @ ni +. :-)                                nuestro cliente de IRC al servidor. Al igual que
                                                               los menús y los iconos, siguen siendo
          1.4. Seguridad en IRC                                simplificaciones para hacer más fácil el manejo
                                                               al usuario.
          ¿Os creéis que os voy a contar aquí lo que           En la capa de protocolo raw es en la que se
          podéis encontrar en cualquiera de los millones       envían a pelo los comandos que entiende el
          de tutoriales sobre “hacking” en IRC? Mi objetivo    servidor, y ésta es en la que se va a centrar el
          es aportar algo nuevo, así que si queréis conocer    artículo. Éste es el protocolo que tendréis que
          los típicos truquitos de toda la vida, recurrid al   utilizar si conectáis por Telnet a un servidor
          omnisciente Google. :-)                              de IRC, ya que es el único que entiende el
          En este artículo me voy a centrar sólo en el         servidor. Algunos comandos difieren muy poco
          protocolo IRC.                                       entre la capa raw y la anterior (en muchos
          Lo que sí que puedo aportar con respecto a           casos, la única diferencia es que en la capa
          seguridad, y que no encontraréis en cualquiera       raw el comando es el mismo pero sin la barra
          de esos tutoriales clónicos, es la seguridad en      / delante), pero otros son bastante más
          el protocolo DCC (utilizado para conexiones          complejos (por ejemplo, los comandos de DCC,
          punto a punto dentro de IRC, por ejemplo para        que explicaré en el próximo artículo).
          chats privados, o para envío de archivos), pero      Nos olvidamos de las demás capas, y nos
          el DCC es un protocolo en si mismo, y merece         centramos a partir de ahora tan sólo en la capa
          un artículo entero para el solito, así que           raw.

PC PASO A PASO Nº 9                                                                                                 Página 49
SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC




            2.1. Comandos de conexión                              comando NICK cada vez que queramos cambiar
                                                                   nuestro nickname.
            2.1.1. Conectando con el servidor
                                                                   2.1.2.2 Comando USER
            ¿Tenéis ya vuestro cliente de Telnet calentando
            motores? Espero que así sea, porque entramos           El segundo paso consiste en dar el resto de
            ya directamente con el tema.                           datos para identificarnos, es decir: el nombre
            El puerto estándar para los servidores de IRC          de usuario, nuestro nombre “real”, y los modos
            es el 6667, aunque dependiendo de cada                 de usuario.
            servidor, el servicio podrá encontrarse en otro
            puerto. Por eso es necesario tener siempre a
            mano los detalles de cada servidor.                    Si sois ya usuarios de IRC, supongo que miles
            A lo largo del artículo vamos a utilizar el servidor   de veces habréis hecho un WHOIS a alguien,
            irc.isdnet.fr de EfNet (EfNet es una red libre,        y la primera línea que os habrá respondido el
            por lo que al utilizarlo como ejemplo no entro         servidor será algo parecido a esto:
            en polémicas de partidismos; Además, en EfNet
            se encuentra el canal #hackxcrack en el que
            podréis encontrarme normalmente), así que
            esto es lo que tendríais que escribir para lanzar
            la aplicación de Telnet:
            telnet irc.isdnet.fr 6667

                                                                   Como vemos aquí, lo primero que nos muestra
            2.1.2. Identificándonos                                el whois es el nick (PyC), lo segundo el nombre
                                                                   de usuario (Pic2), lo tercero la IP, o un DNS
            Una vez conectados, tenemos que ser rápidos,
                                                                   asociado a esa IP (218-13-21-
            ya que el servidor tiene un timeout, así que
                                                                   72.uc.nombres.ttd.es), y por último el nombre
            tendremos que tener preparados los comandos
                                                                   “real” del usuario (PyC PoC). Tanto en el campo
            de identificación para lanzarlos rápidamente.
                                                                   de nombre de usuario, como en el de nombre
            Son 2 los comandos a ejecutar para completar
                                                                   real en principio podemos poner lo que
            la entrada en el servidor:
                                                                   queramos, por lo que no le demos más vueltas.
                                                                   El único detalle que hemos de saber es que en
            2.1.2.1. Comando NICK                                  el campo de nombre real es el único en el que
                                                                   se pueden separar palabras por espacios.
            El primer paso es muy sencillo, simplemente            Lo único importante a la hora de identificarnos
            tenemos que indicar nuestro nickname. Si, por          sería el campo de modos, pero en realidad en
            ejemplo, queremos que nuestro nick sea PyC,            muchos servidores no está implementado el
            sólo tenemos que escribir:                             cambio de modos durante la identificación (por
            NICK PyC                                               ejemplo, en el que estamos utilizando,
            Si nos dice que el nick ya está en uso, podemos        irc.isdnet.fr, no está implementado), por lo que
            volver a ejecutar el comando NICK tantas               normalmente hay que cambiar los modos
            veces como queramos, hasta que encontremos             después de habernos identificado.
            un nick libre.                                         El campo de modos en la identificación permite
            Después de haber completado el proceso de              poner automáticamente los modos de usuario
            identificación (con este comando y el que              +w y +i, mediante una máscara de bits (bit
            explico a continuación), podremos utilizar el          2 para +w, y bit 3 para +i). Por tanto, estos

Página 50                                                                                              PC PASO A PASO Nº 9
SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC




           son los valores que habría que poner en este       DNS. Pues el nickname lo especificamos
          campo según los modos que queramos activar:         precisamente en el primer comando (comando
                                                              NICK), y la IP la obtiene directamente el
                                                              servidor de la conexión que tenemos establecida
                                                              (cualquier conexión TCP/IP es una conexión
                                                              punto a punto que requiere de forma
                                                              imprescindible que los dos interlocutores
                                                              conozcan la dirección IP del otro).

          Aunque insisto en que no es mi objetivo explicar    2.1.2.3. ¿Y              si     fuésemos
          en este artículo el funcionamiento del IRC a        operadores?
          nivel de usuario, os recuerdo que:
          -         el modo +i es el modo de usuario          Si fuésemos operadores (IRCops, o como los
          invisible, que permite que tu nick no aparezca      quieras llamar) de la red, tendríamos que utilizar
          en la lista de usuarios de un canal cuando se       un comando adicional para identificarnos como
          hace un /who de ese canal. Por lo demás, el         operadores. Para eso se utiliza el comando
          usuario es perfectamente visible mediante           OPER, con la siguiente sintaxis:
          /whois, o para los usuarios que comparten           OPER nombre password
          algún canal con él, por lo que desde luego esta     El primer campo es el nombre del operador, y
          invisibilidad no es comparable a la del anillo      el segundo su password de operador.
          único. ;-)
          -         el modo +w sirve para recibir los         2.1.2.4 El IDENT
          mensajes wallops, que son los mensajes para
          administración de la red que se envían a los        Seguramente habréis oído hablar más de una
          operadores y a los demás interesados. En            vez acerca del famoso IDENT, pero es probable
          muchas redes este modo no tiene ningún efecto.      que no tengáis más que una idea vaga de lo
          Como en nuestro ejemplo el servidor no soporta      que es. Probablemente lo habréis visto en la
          el cambio de modos en la identificación, nosotros   configuración de vuestro cliente de IRC, y por
          pondremos un 0. Vamos a ver entonces cómo           eso seguramente habéis pensado que forma
          quedaría el comando USER para el usuario            parte del protocolo IRC, pero no es así.
          PyC:                                                El protocolo IDENT es un protocolo totalmente
                                                              independiente y, de hecho, no sólo se usa en
          USER Pic2 0 * : PyC PoC                             relación con IRC. Este protocolo está asignado
                                                              al puerto 113 de TCP. En el caso concreto
          Veamos campo por campo:                             que nos ocupa no podemos estudiarlo por
          En primer lugar, tenemos el nombre de               Telnet, ya que nosotros seremos los
          usuario: Pic2.                                      servidores de ident, y no los clientes.
          En segundo lugar, la máscara de modos: 0.           Algunos servidores de IRC no permiten entrar
          En tercer lugar, un campo que no se utiliza,        a ningún usuario que no tenga un servidor de
          por lo que podemos poner cualquier cosa: *.         ident. Durante un tiempo, el servidor que
          Por último, e incluyendo espacios si queremos,      utilizamos para el ejemplo restringía sus
          separado del resto de campos por dos puntos         conexiones de esta forma, así que espero que
          (:), tenemos el nombre “real”: PyC PoC.             para cuando salga a la luz el artículo no
                                                              tengamos este problema. Este problema, al
          ¿De dónde salen entonces el resto de campos         menos en los casos en que yo lo he visto, suele
          del whois? Es decir: el nickname, y la IP, o        ser siempre cuestión de un servidor concreto,

PC PASO A PASO Nº 9                                                                                                Página 51
SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC




            y no de toda la red, por lo que si un servidor       [16:13] -luna.irc-hispano.org- *** Notice
            no nos permite entrar sin tener servidor identd      -- sol.irc-hispano.org adding GLINE for
            activo, podemos buscar otros servidores de la        *@usuario69.lco.es, expiring at
            misma red hasta encontrar uno que sí que nos         1049296487 (Wed Apr 2 17:14:47 2003):
            lo permita.                                          Proxy abierto o Sub7 server, desinfectese
            El protocolo IDENT viene especificado en el          El servidor nos acaba de decir que en la dirección
            RFC 1413 (ftp://ftp.rfc-editor.org/in-               usuario69.lco.es está funcionando, o bien un
            notes/rfc1413.txt).                                  servidor sub7, o bien un Proxy. Basta con que
            Como resumen, éste protocolo se utiliza para         ahora hagamos un escaneo de los puertos de
            verificar la identidad del usuario de una            esa IP para encontrar su vulnerabilidad (en
            conexión TCP/IP específica, que viene                caso de que sea un sub7) o su “servicio”
            identificada por un par de puertos (el puerto        disponible (en caso de que sea un Proxy).
            del cliente, y el puerto del servidor).              Son muy variopintos estos mensajes, pero nos
                                                                 pueden dar en muchos casos información útil.
            2.1.3. Más sobre los modos de                        Otra utilidad más rebuscada de esto,
            usuario (comando MODE)                               concretamente en el IRC-Hispano, es conseguir
                                                                 la IP de un usuario mediante un poco de
            Tanto si nuestro servidor no permitía cambiar        ingeniería social. Lo cuento sólo como anécdota,
            los modos de usuario directamente en la              ya que tiene poco interés, pero al menos es
            identificación, como si queremos fijar otros         curioso. Fue uno de mis muchos experimentos
            modos de usuario aparte del +w y el +i,              chorras. El IRC-Hispano utiliza un sistema de
            podemos utilizar en cualquier momento el             direcciones virtuales que oculta la IP de los
            comando MODE.                                        usuarios, por lo que hay que recurrir a diversas
            Este es un resumen de los modos de usuario           tretas (que no voy a detallar porque se sale
            que merecen mención:                                 del tema) para conseguir estas IPs. Como
            -         modo +i: ya hablé de él en el punto        sabréis los residentes en el IRC-Hispano, existe
            anterior. :P                                         un bot de servicio llamado _antispam que se
            -         modo +w: ídem. :P                          encarga de que los únicos que se lucren en el
            -         modos +o y +O: indica que el usuario       IRC-Hispano sean sus administradores,
            es un operador de la red, o un operador local,       intentando evitar que nadie publique URLs de
            respectivamente. Si no te has identificado           páginas Web con supuestos fines publicitarios,
            previamente con OPER, olvídate de este modo.         a no ser que paguen previamente. El que
            ;-)                                                  mencione una de estas URLs en un canal en el
            -         modo +s: este modo, si está                que resida _antispam, será g-lineado
            implementado en el servidor, puede ser bastante      (expulsado de la red) automáticamente. Así
            interesante. En el servidor del ejemplo              que lo que hice en esta ocasión, fue conseguir
            (irc.isdnet.fr), este modo no está implementado.     mediante un mínimo de esfuerzo de ingeniería
            Podemos probarlo, por ejemplo, en el IRC-            social (algo en plan: “¿alguien sabe una Web
            Hispano. Este modo sirve para recibir mensajes       donde haya tal o cual?”) que el usuario en
            del servidor, referentes a g-lines, kills, etc. ¿Y   cuestión escribiese una de las URLs malditas.
            qué utilidad puede tener esto? Pues se puede         Inmediatamente después de escribirla, fue g-
            extraer información útil si miramos con              lineado por el bot _antispam. Inmediatamente
            detenimiento los mensajes. Permanezcamos             miré los mensajes del servidor (que podía ver
            un rato conectados logeando los mensajes del         gracias al modo +s), y vi algo parecido a esto:
            servidor y veremos, por ejemplo, algo como           [16:58] -luna.irc-hispano.org- *** Notice
            esto:                                                -- sol.irc-hispano.org adding GLINE for

Página 52                                                                                              PC PASO A PASO Nº 9
SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC




           *@61-136-23-69.dialup.uni2.es, expiring              Con esto cerramos la conexión con el servidor
          at 1048696764 (Wed Mar 26 17:39:24                    de IRC, enviando como mensaje de despedida
          2003): Publicidad no autorizada. Si desea             “Hasta pronto!”. Este mensaje lo leerán los
          contratar servicios publicitarios, consulte           usuarios de todos los canales en los que estés
          http://www.irc-hispano.org/servicios/                 cuando cierres.
          Ese g-line correspondía con el usuario que            Si queremos enviar esto mismo desde nuestra
          acababa de ser expulsado por _antispam, por           aplicación cliente de IRC (mIRC, kvirc,
          lo que ya tenía su IP: 61.136.23.69.                  xchat, o el que sea), sólo tendremos que
          -        modo +x: Claro que, si somos unos            escribir:
          maestros de la ingeniería social, podemos             /quote QUIT :Hasta pronto!
          conseguir que el usuario del IRC-Hispano cuya         Y esto será igual para todos los comandos
          IP queremos conocer escriba en su cliente de          explicados en este artículo, incluidos los ya
          IRC: /mode usuario -x. Donde usuario es su            explicados, excepto el comando USER.
          nick. Con el modo –x inhabilitamos la dirección
          virtual de ese usuario, por lo que cuando le          2.2.    Comandos de canales
          hagamos un whois veremos directamente su
          IP, y no una dirección virtual.                       2.2.1. E n t r a n d o     en     canales
                                                                (comando JOIN)
          Como hemos visto al hablar de este último
          modo, un usuario sólo puede cambiar sus               Si estamos acostumbrados a manejar
          propios modos (es de cajón, ¿no?). La forma           aplicaciones cliente de IRC, veremos que de
          de hacer esto mediante el protocolo RAW es            momento hay pocas diferencias entre los típicos
          prácticamente igual que desde la aplicación           comandos con la barra / y el protocolo raw de
          cliente. Por ejemplo, para activar el modo +s,        IRC, y eso sigue siendo igual para el comando
          siendo el usuario PyC, haremos:                       para entrar en un canal:
          MODE PyC +s                                           JOIN #hackxcrack
                                                                Es el comando raw para entrar en el canal
          2.1.4. Comando QUIT (y el /quote)                     #hackxcrack.
                                                                Este canal existe en EfNet (que es precisamente
          Ya que estoy siguiendo más o menos el orden           donde estamos haciendo las pruebas), y es
          en el que se explican los comandos en el RFC          probable que me encontréis ahí, así que podéis
          (al menos los que considero importantes),             pasaros para vuestras pruebas. ;-)
          seguiré con el comando QUIT. No creáis que            Como particularidades del comando JOIN,
          es demasiado pronto para cerrar la conexión,          puedo decir 4 cosas:
          porque quizá os convenga saber que para               En primer lugar, algunos canales necesitan un
          probar el resto de comandos podéis cerrar ya          password para entrar. Supongamos que el
          vuestra aplicación de Telnet. Y es que cualquier      password del canal #hackxcrack es
          cliente de IRC proporciona un mecanismo para          pcpasoapaso. En ese caso el comando para
          enviar mensajes raw al servidor, y es el comando      entrar en el canal será:
          /quote. Después de un /quote, todo lo que             JOIN #hackxcrack pcpasoapaso
          se escriba será enviado tal cual al servidor, por     La segunda particularidad es que puedes entrar
          lo que deberá seguir el protocolo raw de IRC          en varios canales utilizando sólo un comando
          (que es el protocolo que explico en este artículo).   JOIN, separando los canales por comas. Por
          Empezamos probando el comando QUIT desde              ejemplo:
          nuestro cliente de Telnet:                            JOIN #hackxcrack,#spanishwarez
          QUIT :Hasta pronto!                                   Tercera curiosidad, si escribimos:

PC PASO A PASO Nº 9                                                                                               Página 53
SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC




            JOIN 0                                              sólo pueden hablar en el canal los usuarios que
            Saldremos simultáneamente de todos los              previamente han entrado en el mismo. Aunque
            canales en los que previamente hayamos hecho        esto os suene raro, si un canal está en modo
            un JOIN.                                            –n (es decir, no está en modo +n) cualquiera
            Por último, si hacéis JOIN a un canal que no        puede hablar sin necesidad de estar dentro del
            ha sido creado por nadie previamente,               canal. Ya veremos más adelante cómo se hace
            automáticamente ese canal será creado y tú          esto.
            serás operador del canal (la famosa @). En el       -        modo +s (secret) : el canal no
            momento en que abandone el canal el último          aparecerá en la lista de canales de un usuario
            usuario, el canal desaparecerá (es decir,           cuando se haga whois a este usuario.
            simplemente será borrado de las tablas de           -        modo +t (topic) : el topic del canal
            datos que mantienen en tiempo real los              sólo puede ser cambiado por los operadores
            servidores).                                        (@).
                                                                -        modo +k (key) : sólo se puede entrar
            2.2.2. S a l i e n d o d e         canales          al canal si se conoce el password.
            (comando PART)                                      -        modo +l (limit) : limita el número
                                                                máximo de usuarios que pueden entrar en el
            Una vez más, el comando nos será ya familiar:       canal.
            PART #hackxcrack
            Sirve para salir del canal #hackxcrack. Si          Todos estos modos sólo pueden ser cambiados
            queremos incluir un mensaje de despedida,           por los operadores (@) del canal.
            podemos hacer:                                      Como ejemplo, para poner el canal
            PART #hackxcrack :me piro!                          #hackxcrack en modo secreto (suponiendo
            En el comando PART también podemos poner            que seamos operadores del canal) haremos:
            varios canales, separados por comas.                MODE #hackxcrack +s
                                                                Si luego nos arrepentimos, y queremos quitar
                                                                este modo, podemos hacer:
            2.2.3. Modos de canal (comando
                                                                MODE #hackxcrack –s
            MODE de nuevo)                                      Para limitar el número de usuarios a 22:
                                                                MODE #hackxcrack +l 22
            El comando MODE no sólo sirve para cambiar
                                                                A partir de este momento, cuando intente entrar
            los modos de usuario, sino también los modos
                                                                (con JOIN) alguien en el canal, habiendo ya
            de canal. En el RFC 2811 tenéis detallados
                                                                22 personas, no podrá hacerlo hasta que alguien
            todos los modos de canal, así que sólo os
                                                                salga del canal.
            resumo los más importantes:
                                                                Como último ejemplo, para poner el password
            -        modo +i (invite only) : sólo pueden
                                                                pcpasoapaso en el canal #hackxcrack,
            entrar en el canal los usuarios que son invitados
                                                                haremos:
            explícitamente, mediante el comando INVITE,
                                                                MODE #hackxcrack +k pcpasoapaso
            o bien aquellos que están en la lista de
                                                                A partir de este momento, para entrar en el
            excepción de invite del canal (están
                                                                canal habrá que hacerlo con el comando:
            permanentemente invitados).
                                                                JOIN #hackxcrack pcpasoapaso
            -        modo +m (moderated) : sólo
                                                                Para lo cual, por supuesto, habrá que conocer
            pueden hablar en el canal los usuarios que
                                                                previamente el password pcpasoapaso. ;-)
            son operadores (@), y los que tienen voz
                                                                También se pueden poner simultáneamente
            (+).
                                                                varios modos, por ejemplo:
            -       modo +n (no outside messages) :
                                                                MODE #hackxcrack +ntk pcpasoapaso

Página 54                                                                                          PC PASO A PASO Nº 9
SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC




          Activaría simultáneamente los modos +n, +t,       El tema de las máscaras (los otros 3 modos)
          y +k con password pcpasoapaso.                    es ya más complejo. Vamos a ir viendo distintos
                                                            tipos de máscaras mediante ejemplos con los
          2.2.4. Modos de usuario para un                   distintos modos.
          canal (comando MODE una vez
                                                            En primer lugar, imaginemos que queremos
          más)
                                                            que en el canal #españa sólo entre gente desde
                                                            una IP española. Para ello podemos hacer:
          No termina aquí la utilidad del comando MODE.
                                                            M O D E            # e s p a ñ a            + i
          Pero no penséis que éste es el comando más
                                                            MODE #españa +I *!*@*.es
          polifacético, ya que el comando PRIVMSG,
                                                            El primer comando pondrá el canal en modo
          que veremos más adelante, le supera con
                                                            invite only, por lo que sólo podrán entrar los
          creces. :-)
                                                            usuarios que sean invitados explícitamente, o
          Los modos de usuario para un canal son aquellos
                                                            bien los que estén en la lista de excepción de
          que aplican unas normas o unos privilegios
                                                            invitaciones. Esta lista es la que se administra
          para un determinado usuario sólo dentro de
                                                            con el modo +I, y eso es precisamente lo que
          un determinado canal. Todos ellos pueden ser
                                                            hacemos con el segundo comando, en el que
          fijados sólo por un operador del canal.
                                                            especificamos que todos aquellos usuarios, se
          Estos modos vienen también especificados en
                                                            llamen como se llamen, que vengan de un
          el RFC 2811, así que resumo aquí los más
                                                            dominio .es, puedan entrar al canal sin
          importantes:
                                                            necesidad de ser invitados explícitamente.
          -        modo +o (operator) : convierte a
          un usuario en operador del canal (la famosa
                                                            Otra forma de hacer esto mismo, sería la
          @).
                                                            siguiente:
          -        modo +v (voice) : da voz a un
                                                            MODE #hackxcrack +b *!*@*
          usuario en un canal (el famoso +).
                                                            MODE #hackxcrack +e *!*@*.es
          -        modo +b (ban) : sirve para crear
                                                            Con el primer comando, denegamos el acceso
          máscaras que denieguen el acceso al canal
                                                            a todos los usuarios. Con el segundo,
          a un usuario, o bien a un grupo de usuarios,
                                                            hacemos una excepción a esa lista de
          según cómo se forme la máscara. Esto lo
                                                            denegaciones de acceso, permitiendo que sí
          explicaré más adelante.
                                                            que puedan entrar los que vengan desde un
          -        modo +e (exception) : sirve para
                                                            dominio .es.
          permitir acceso a un usuario concreto que
          esté dentro de las máscaras de denegación.
                                                            Ahora vamos a ver cómo denegar el acceso al
          Ya lo veremos luego, que suena un poco lioso.
                                                            usuario cuyo nickname sea PyC:
          :-)
                                                            MODE #hackxcrack +b PyC!*@*
          -        modo +I (invitation mask) :
                                                            Si PyC tiene 2 dedos de frente, bastará con
          permite crear máscaras para que determinados
                                                            que se cambie el nick para poder entrar (con
          usuarios puedan entrar en un canal en modo
                                                            el comando NICK).
          invite only (+i) sin necesidad de que nadie
          les invite explícitamente.
                                                            A veces hay canales en los que, por el motivo
                                                            que sea, no quieren que los usuarios utilicen
          El ejemplo más sencillo es el de los modos +o
                                                            determinados scripts. Los scripts suelen poner
          y +v. Por ejemplo:
                                                            por defecto un determinado nombre de
          MODE #hackxcrack +o PyC
                                                            usuario a la hora de identificarse, por lo que
          Da @ al usuario PyC.
                                                            es fácil identificarlos siempre y cuando el usuario

PC PASO A PASO Nº 9                                                                                               Página 55
SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC




            no haya modificado este dato a posteriori.        de PC Paso a Paso.
            Supongamos, por ejemplo, que queremos             El topic sólo puede ser modificado por los
            banear (denegar el acceso) a todos los            operadores del canal, a no ser que el canal
            usuarios que utilicen el script Ircap 7.1. Si     esté en modo –t (es decir, que no tenga activo
            vemos el whois de un usuario de Ircap 7.1,        el modo +t).
            será parecido a éste:
            PyC is ~ircap71@201.Red-22-15-                    2.2.6. Buscando canales (comando
            15.pooles.rima-tde.net                     *
                                                              LIST)
            http://www.ircap.net !
            Como vemos, el campo nombre de usuario
                                                              Aquí la cosa se pone fea. :-(
            es ~ircap71, que es el que pone por defecto
                                                              ¿Habéis usado alguna vez la función LIST
            este script. Por tanto, podemos hacer:
                                                              CHANNELS de mIRC para buscar canales que
            MODE #hackxcrack +b *!*ircap71@*
                                                              contengan una determinada cadena de texto?
            Para denegar el acceso a todos los usuarios
            que tengan ircap71 en el nombre de usuario.

            Por último, podemos banear una IP específica
            de la siguiente forma:
            MODE #hackxcrack +b *!*@201.Red-22-
            15-15.pooles.rima-tde.net
            Está claro, ¿no? ;-)

            2.2.5. El Topic del canal (comando
            TOPIC)

            El topic es, por así decirlo, un texto de
            presentación de un canal. Cuando entras
            a un canal, lo primero que recibes es el texto
            del topic.
            Las utilidades del topic son muchas: dar una
            serie de normas básicas para los usuarios del
            canal (estos topics suelen permanecer fijos),
            dar alguna URL interesante de actualidad
                                                              Menú en mIRC para buscar la cadena "mp3" en la
            (estos topics suelen cambiar de un día para
                                                              lista de canales de EfNet.
            otro), o simplemente escribir la chorrada de
            turno (he llegado a ver conversaciones enteras
            entre 2 o más operadores cambiando el topic       Lo que hace esta función de mIRC en realidad
            en lugar de escribiendo en el canal).             es pedir al servidor la lista de todos los canales,
            La primera utilidad del comando TOPIC es          y luego el propio mIRC hace la búsqueda de
            simplemente ver el texto actual del topic:        la cadena de texto dentro de la lista que le ha
            TOPIC #hackxcrack                                 proporcionado el servidor. Por tanto, no hay
            Nos mostrará el topic actual del canal            forma de que podáis hacer una búsqueda
            #hackxcrack.                                      selectiva lanzando comandos raw desde
            Para modificar el topic, simplemente añadiremos   Telnet. :-(
            un campo más:                                     Para obtener la lista completa de canales,
            TOPIC #hackxcrack :Bienvenidos al canal           con sus topics, y el número de usuarios, basta

Página 56                                                                                           PC PASO A PASO Nº 9
SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC




          con que ejecutéis:                                   sin problemas.
          LIST                                                En el caso de que el usuario tenga IP fija, no
                                                              hay más misterio, baneas directamente la IP
          2.2.7. Comando INVITE                               y se acabó (a no ser que utilice un bouncer,
                                                              pero eso ya es otra historia).
          Por seguir con el orden del RFC, tenemos un
          comando muy simple, que es para invitar a           2.3. Al fin vamos a hablar (el
          un usuario a un canal, normalmente porque           versátil PRIVMSG)
          el canal se encuentra en modo invite only
          (+i):                                               ¡Tanto rollo y todavía no sabemos como decir
          INVITE PyC #hackxcrack                              “hola” en un canal! Aquí es cuando vemos al
          Con esto invitamos al usuario PyC al canal          fin una diferencia importante entre los comandos
          #hackxcrack.                                        famosos de la barra /, y el protocolo raw.
                                                              Pensad en todas las cosas de las que todavía
          2.2.8. El comando prohibido                         no he hablado: escribir en un canal, escribir en
          (comando KICK)                                      una query (mensajes privados entre 2 usuarios),
                                                              lanzar comandos CTCP, lanzar comandos DCC...
          Normalmente, si eres una persona madura e           ¡Pues todas ellas se hacen con un único
          inteligente, no necesitarás utilizar este comando   comando! Y éste comando es el mágico
          salvo en situaciones muy concretas. Este            PRIVMSG. Vamos a ver todo esto con detalle.
          comando permite a los operadores expulsar
          a un usuario de un canal. Por ejemplo:              2.3.1. Mensajes privados (queries)
          KICK #hackxcrack PyC :nos estas
          floodeando                                          Para hablar en privado con otro usuario, basta
          Expulsaría al usuario PyC del canal #hackxcrack,    con que hagamos:
          exponiendo el motivo: “nos estas floodeando”.       PRIVMSG PyC :hola!
          Si queremos expulsar permanentemente                El usuario PyC recibirá un mensaje privado
          a ese usuario del canal, tendremos que              diciendo “hola!”. Quizá os preguntaréis: ¿cómo
          banearle primero, es decir, aplicar una             que un mensaje privado? ¿y que hay del query
          máscara para denegar su acceso al canal:            de toda la vida?
          MODE #hackxcrack +b PyC!*@*                         Y es que supongo que muchos de vosotros
          KICK #hackxcrack PyC :vete y no vuelvas             tendréis la equivocada idea de que una query
          Claro que, ya he dicho que este ban es poco         es una especie de conexión establecida entre
          efectivo, ya que basta con que el usuario se        2 usuarios, pero eso no es así. Esa es la ilusión
          cambie de nick para poder entrar. Según cada        que os da vuestro cliente de IRC al abrir una
          caso será más efectivo un tipo de ban u otro.       ventana específica para la query, pero en
          Por ejemplo, para usuarios con IP dinámica          realidad las queries no son más que sucesiones
          habría que banear un subdominio, siempre            de mensajes entre 2 usuarios, sin ningún tipo
          y cuando no haya más usuarios legítimos en          de establecimiento de conexión.
          ese subdominio (en ese caso tendríamos que
          utilizar además una mascara de excepción con        2.3.2. Escribiendo en el canal
          el modo +e para los usuarios legítimos). Otra
          solución para la IP dinámica, es banear según       Para escribir a todos los usuarios de un canal,
          el campo nombre de usuario, pero ese                el formato es el mismo:
          campo es fácilmente modificable, por lo que         PRIVMSG #hackxcrack :hola a todos!
          si el tío es un poco listo podría volver a entrar   Con esto escribimos en el canal #hackxcrack

PC PASO A PASO Nº 9                                                                                               Página 57
SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC




             la frase “hola a todos!”.                         está bien conocer estas chorradas, ¿no? :-)
            Ahora que la cosa es un poco diferente a lo
            que estáis acostumbrados a hacer con el cliente    2.3.4. El protocolo CTCP
            de IRC, es buen momento para probar el
            comando /quote para hacer esto mismo,              El comando PRIVMSG es tan versátil que
            desde vuestra aplicación cliente de IRC:           encapsula él solito todo un protocolo, que es
            /quote privmsg #hackxcrack :hola a                 el CTCP, o Client To Client Protocol.
            todos!                                             No voy a entrar en muchos detalles sobre el
                                                               protocolo CTCP, así que sólo hablaré de los
            2.3.3. Escribiendo en un canal en                  comandos más básicos.
            el que no estamos
                                                               2.3.4.1. CTCP PING
            Escribir en un canal en el que no estemos (no
            hayamos hecho previamente un JOIN) es igual        El comando más típico de CTCP es el PING.
            de sencillo, salvo que tiene un prerequisito       Su utilidad es doble: en primer lugar, saber si
            importante, y es que el canal tiene que estar      un usuario aparentemente conectado realmente
            en modo –n, es decir, que no esté en modo          lo está, ya que muchas veces cuando un usuario
            +n.                                                pierde la conexión con el servidor, durante un
            Si tenemos la suerte de encontrar un canal en      tiempo su nick sigue apareciendo como si
            modo –n podemos hacer una chorrada para            siguiese conectado (¿os suena el famoso ping
            pasar el rato. En muchos clientes de IRC, la       timeout?), y en segundo lugar mide el lag
            letra i mayuscula se ve prácticamente igual        que tienes con respecto a un usuario.
            que la letra ele minúscula. Si, por ejemplo,       ¿Qué es el lag? Es simplemente el retardo
            tenemos en el canal #lameretes un usuario          que hay entre 2 usuarios, es decir, el tiempo
            cuyo nick sea zer0c00l (nick de lamer de           que transcurre entre que uno escribe algo y el
            primera), podemos ponernos nosotros un nick        otro lo lee. El lag varía según la carga del
            bastante parecido, que sería zer0c00I. Este        servidor o incluso según el ancho de banda
            nick, cambiando la ele por una i mayúscula,        disponible de los usuarios. La peor situación es
            se verá bastante parecido en un cliente de         cuando hay varios usuarios hablando, cada uno
            IRC, por lo que será dificil notar la diferencia   con un lag diferente pero muy alto, por lo que
            a simple vista, a no ser que estén los 2 nicks     se forman conversaciones sin sentido en el que
            uno al lado del otro. Una vez puesto ese nick,     cada uno da una respuesta que llega a los
            sin entrar en el canal #lameretes, escribiremos:   demás en un momento diferente.
            PRIVMSG #lameretes :pero mira que soy              Yo personalmente utilizo el PING de vez en
            lamer                                              cuando para medir mi propio lag. Lo que hago
            La gente del canal #lameretes, a no ser que        es lanzarme un PING a mi mismo. En el mejor
            sean un poco avispados, creerá que es zer0c00l     de los casos debería haber un lag de 0 segundos,
            quien está diciendo eso, ya que no verán a         pero muchas veces este lag puede ser de varios
            ningún otro usuario con un nick similar en el      segundos, y con eso ya sabes que, como
            canal. Por otra parte, zer0c00l probablemente      mínimo, todo lo que leas o escribas tendrá un
            se volverá loco creyendo que le han hackeado,      retraso de tantos segundos.
            poseído, o algo así. Por supuesto, esto es una
            tremenda gilipollez, y cualquiera con 2 dedos      Para cualquier comando CTCP tenemos que
            de frente lo descubriría (sobre todo porque        utilizar el ascii 1, que aquí representaremos
            cualquiera con 2 dedos de frente normalmente       como: . Como espero que ya sepáis, podeis
            tendría el canal en modo +n), pero siempre         poner escribir cualquier ascii del cual conozcáis

Página 58                                                                                          PC PASO A PASO Nº 9
SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC




          su valor numérico pulsando la tecla Alt y, sin      P y C ! ~ P i c @ 8 0 - 2 5 - 3 2 -
          soltarla, escribiendo su valor en el teclado        27.uc.nombres.ttd.es NOTICE Fulanin
          numérico. Por tanto, para escribir el ascii 1,      : PING 1048765767
          pulsaremos la Alt+1. Si la aplicación que estás     Como vemos, responde con el mismo número,
          utilizando no te permite escribir este ascii,       para que podamos confirmar que esta respuesta
          tendrás que escribirlo en alguna otra aplicación    se corresponde con la petición que habíamos
          y copiar el ascii desde ahí mediante el clásico     lanzado.
          copy/paste.
                                                              ¡¡ATENCION!! Sobre el ping timeout:
          Volviendo al tema, ¿en qué consiste el ping?
          Pues simplemente es un mensaje corto que            Antes de continuar, hago aquí un inciso muy
          contiene tan sólo un número aleatorio. En           importante, aprovechando que he mencionado
          cuanto el receptor lo reciba, tiene que enviar      antes el ping timeout. Los que sepais bien
          una respuesta que contenga exactamente el           en qué consiste este tipo de caída,
          mismo número. Nuestra aplicación cronometrará       probablemente habréis pensado: “este tío no
          el tiempo transcurrido desde que se envió el        tiene ni idea, el ping timeout no tiene nada
          número, hasta que éste llegó de vuelta. Para        q u e v e r c o n l o s p i n g s d e c t c p ”.
          enviar un ping al usuario PyC esto es lo que        El motivo por el que he mencionado el ping
          tenemos que ejecutar:                               timeout es porque mediante ctcp ping puedes
          PRIVMSG PyC : PING 1048765767                       detectar si alguien está caído, pero en realidad
          Para comprender la respuesta que nos                con lo que tiene que ver esta caída no es con
          devuelven al PING hay que hablar de un nuevo        los pings de ctcp, si no con los pings del
          comando, que es el NOTICE.                          servidor.
                                                              Cuando superas un cierto tiempo de inactividad,
          Un NOTICE tiene exactamente la misma                el servidor ha de asegurarse de que sigues ahí,
          función que un PRIVMSG, pero con una                para lo cual te lanza un ping bastante parecido
          salvedad, y es que los NOTICE son mensajes          a los de CTCP.
          que no deben tener respuesta. Es decir, cada        Si no respondes a este ping, el servidor cerrará
          vez que una aplicación de IRC recibe un             la conexión, asumiendo que se ha quedado
          NOTICE de cualquier tipo, simplemente lo            colgada. En esto consiste precisamente el ping
          leerá e interpretará como deba, pero nunca          timeout.
          dando ningún tipo de respuesta. Por tanto, la       Cuando conectemos por telnet al servidor de
          utilidad del NOTICE es el enviar mensajes en        IRC, si no hacemos nada durante un tiempo,
          los que haya riesgo de entrar en bucles infinitos   nos aparecerá un mensaje de PING de servidor,
          de respuestas.                                      preguntándonos si seguimos ahí. Este mensaje
          En nuestro caso, el usuario al que hemos hecho      puede contener un número, como en los CTCP
          el PING nos responderá con el mismo mensaje,        PING, o bien cualquier otro texto que tenemos
          pero con la salvedad de que lo hará con             que enviar de vuelta. Por ejemplo, en el caso
          NOTICE en lugar de con PRIVMSG. Si nos              del servidor que estamos utilizando de ejemplo,
          respondiese con PRIVMSG, nuestro cliente            éste será el PING que nos lanzará:
          de IRC interpretaría que es a él a quien están      PING :irc.isdnet.fr
          lanzando un PING, por lo que tendría que            En cuanto veamos esto, tenemos que responder
          responder al mismo, y así se formaría un bucle      lo antes posible con este comando:
          infinito de pings. Por tanto, la respuesta de       PONG :irc.isdnet.fr
          PyC a nuestro PING, suponiendo que nuestro          Algunos servidores lanzan el primer PING nada
          nick es fulanin, sería algo como esto:              más identificarnos, por lo que hemos de estar

PC PASO A PASO Nº 9                                                                                              Página 59
SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC




            atentos al mensaje de bienvenida a la hora         usuario. Este comando es útil para conocer el
            de conectar con un servidor, para ver si éste      país en el que se encuentra el usuario (por la
            incluye un PING al que tenemos que responder       diferencia horaria), así como para sincronizar
            antes de nada.                                     alguna cita. Aunque suene a coña, yo uso el
                                                               TIME a veces para sincronizarme con algún
            2.3.4.2. CTCP VERSION                              amigo para quedar a alguna hora.
                                                               El formato del mensaje es muy simple:
            Este mensaje CTCP nos puede dar información        PRIVMSG PyC : TIME
            bastante útil, pero hemos de saber siempre         La respuesta a este comando será un NOTICE
            que la respuesta puede haber sido manipulada       con éste formato:
            por el usuario, por lo que podría estar dándonos   P y C ! ~ P i c @ 2 1 5 - 2 0 5 - 1 9 -
            información falsa.                                 7.uc.nombres.ttd.es NOTICE fulanin :
            El objetivo de este mensaje es preguntar a un         TIME Fri Mar 28 13:29:16 2003
            usuario qué software está utilizando como
            aplicación cliente de IRC.                         2.3.5. El protocolo DCC
            El formato de la consulta es muy sencillo:
            PRIVMSG PyC : VERSION                              ¡También el DCC funciona mediante el comando
            Ante esto, la aplicación cliente del usuario PyC   PRIVMSG! ¿Os gustaría saber cómo se pueden
            nos responderá de manera automática con            interceptar envíos de archivos, o chats
            una respuesta que identifica el software y el      privados, por DCC? ¿Os gustaría saber
            número de versión, así como si tiene algún         cómo spoofear vuestra IP en un DCC?
            script funcionando encima, etc.                    Esto, y más, es lo que explicaré en el próximo
            Respuestas típicas son las siguientes:             artículo. ;-)
            mIRC: mIRC v6.01 Khaled Mardam-Bey
            Xchat para windows : xchat 2.0.0 Windows           2.4. Comandos de consulta al
            5.0 [i686/449MHz]
                                                               servidor
            mIRC con IRCap 7.1 : mIRC v6.03 Khaled
            Mardam-Bey
                                                               Vamos a ver ahora un grupo de comandos que
                                       • I R c a p 7. 3 1 •
                                                               se utilizan para pedir información variada al
            http://www.ircap.com •
                                                               servidor.
            Kvirc 3 : KVIrc 3.0.0-beta2 "T-Rex" :
            2003.01.04-12554 : build Sat Jan 4 20:53:34
            UTC 2003 : i686-cefikloprstAGT                     2.4.1. Mensaje del día (comando
            Como vemos, podemos extraer información            MOTD)
            útil sobre el sistema operativo del usuario, así
            como sobre el software que utiliza (que podría     Cuando entramos en un server, nos da un
            tener bugs conocidos, en caso de que               mensaje de bienvenida, también conocido como
            quisiésemos hacer experimentos de seguridad).      MOTD (Message Of The Day), que nos da
            He de insistir en que estos mensajes de            información útil sobre el servidor. Podemos
            respuesta al VERSION pueden ser modificados        pedir al servidor en cualquier momento su
            por el usuario para que ponga cualquier cosa.      MOTD, o incluso el de cualquier otro servidor
                                                               de la misma red. Algunos son curiosos, como
            2.3.4.3. CTCP TIME                                 por ejemplo:

            Por último, vamos a ver otro CTCP típico, que      MOTD efnet.vuurwerk.nl
            sirve para saber qué hora tiene el PC de un        A ver a qué os recuerda ese dibujito ascii. ;-)

Página 60                                                                                         PC PASO A PASO Nº 9
SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC




          2.4.2. Carga del servidor (comando                           2.4.4. Estadísticas del servidor
          LUSERS)                                                      (comando STATS)

          Al principio del artículo os di algunas cifras               Muchos servidores desactivan alguna de estas
          concretas sobre los usuarios que había                       opciones, al no querer que los usuarios puedan
          conectados en EfNet en ese instante, así como                extraer demasiada información que podría ser
          sobre el número de canales, y el número de                   utilizada para algún tipo de ataque. Son varias
          usuarios en un servidor concreto. Todas esas                 las opciones, pero mostraré sólo las que
          c i f ra s p o d e m o s v e r l a s e j e c u t a n d o :   funcionan en el servidor que estamos utilizando
          LUSERS                                                       de ejemplo.
                                                                       En primer lugar, si hacemos:
          2.4.3. Versión del software en el                            STATS u
                                                                       Nos muestra el uptime del servidor, es decir,
          servidor (comando VERSION)
                                                                       cuánto tiempo lleva funcionando desde la última
                                                                       vez que se reinició.
          No sólo podemos ver el software que utilizan
                                                                       En segundo lugar, está la estadística de uso
          los clientes, si no también el software del
                                                                       de comandos, pero antes de que lo probéis
          servidor, así como otra información útil,
                                                                       os tengo que advertir. Si ejecutais este comando
          mediante el comando:
                                                                       en este servidor os hará un k-line temporal,
          VERSION
                                                                       es decir, os expulsará de toda la red durante
          Por ejemplo, en el servidor irc.isdnet.fr, ésta
                                                                       24 horas. Eso sí, os lo hará después de daros
          será la respuesta:
                                                                       el resultado, lo cual veo bastante absurdo. Si
                                                                       no quieren que utilices ese comando, ¿no es
          2.8/hybrid-6.3.1(20020418_1).
                                                                       más razonable que no lo implementen, en lugar
          irc.isdnet.fr AGHiKMpYZ TS5owc
                                                                       de ejecutarlo para después expulsarte? Para
          -
                                                                       evitaros el k-line os pasteo aquí el resultado
          WALLCHOPS PREFIX=(ov)@+
                                                                       que me dio a mi la última vez que ejecuté este
          CHANTYPES=#& MAXCHANNELS=20
                                                                       comando. El comando a ejecutar sería:
          MAXBANS=25              NICKLEN=9
                                                                       STATS m
          TOPICLEN=120            KICKLEN=90
                                                                       Y ésta la respuesta del servidor:
          N E T W O R K = E F n e t
          CHANMODES=b,k,l,imnpst KNOCK
                                                                       ADMIN 161 1715
          MODES=4 are supported by this server
                                                                       AWAY 1324744 41605335
          De aquí extraemos información interesante
                                                                       CAPAB 8 160
          sobre la configuración del servidor. Por
                                                                       CLOSE 6 20
          ejemplo, nos dice que sólo soporta
                                                                       CONNECT 491 9057
          canales de tipo # (globales) y & (locales)
                                                                       DIE 14 138
          (existen también los canales ! y +, pero
                                                                       DLINE 5 119
          no he considerado que merezca la pena
                                                                       ERROR 5425 156096
          hablar de ellos), el número máximo de
                                                                       GLINE 1031 100586
          canales por usuario es 20, el número
                                                                       HASH 4 8
          máximo de entradas en la lista de bans
                                                                       HELP 124 442
          (denegación de acceso a un canal) es
                                                                       HTM 54 7
          de 25, la longitud máxima de un nickname
                                                                       INFO 356 4588
          es de 9 caracteres, la longitud máxima
                                                                       INVITE 624304 11705238
          de un topic es de 120 caracteres, etc.
                                                                       ISON 48403584 2260375326

PC PASO A PASO Nº 9                                                                                                       Página 61
SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC




            JOIN 12335190 135226756          WHOWAS 6383 48645
            KICK 2169543 91710944
            KILL 26745 2459300               Esos números nos muestran el número de veces
            KLINE 1210 73957                 que ha sido utilizado cada comando. La utilidad
            KNOCK 858 8501                   que podais sacar de esta información ya
            LINKS 652 3195                   depende de vuestra imaginación. Por ejemplo,
            LIST 75991 305704                el uso más obvio es conocer todos los comandos
            LOCOPS 15 353                    que tiene implementados el servidor. Los
            LTRACE 1 12                      comandos que no conozcais los podéis buscar
            LUSERS 298179 7191563            en el RFC 2812 y el RFC 2813, aunque
            LWALLOPS 0 0                     algunos ni siquiera estarán contemplados en
            MODE 72304763 1431760954         los RFC. Además, muchos de estos comandos
            MOTD 467 3691                    sólo los pueden ejecutar los operadores de la
            NAMES 127934 1381606             red. Por si tenéis curiosidad, os pasteo a
            NICK 72403821 2147611586         continuación el k-line que me hizo el servidor
            NOTICE 36420416 2708147443       inmediatamente después de ejecutar el
            OPER 387 5729                    comando:
            OPERWALL 14733 536306            You are banned from this server-
            PART 11601855 106863938          Temporary K-line 1440 min. - stop stating
            PASS 1041568 7289166             (2003/03/14 18.37)
            PING 40404679 442423522          -
            PONG 24647891 346314785          [18:35]             Closing            Link:
            PRIVMSG 238041898 1376495144     PyC[PyC@213.206.14.9] (Connection
            QUIT 19063494 472024380          closed)
            REHASH 15 89
            RESTART 2 14                     2.4.5. C o m p r o b a n d o        la    red
            SERVER 4472 154251
                                             (comando LINKS)
            SET 9 127
            SJOIN 58209061 2226248553
                                             Con el comando LINKS podemos ver todos los
            SQUIT 4073 114713
                                             servidores a los que está conectado el nuestro
            STATS 819 7103
                                             (o cualquier otro de la red), lo cual nos sirve
            SVINFO 7 93
                                             para detectar posibles splits (desconexión de
            TESTLINE 6 94
                                             algunos servidores a la red, lo que causa la
            TIME 86997 759067
                                             aparición de dos o más redes fantasma).
            TOPIC 1140668 80984008
                                             Simplemente                 ejecutamos:
            TRACE 10218 59279
                                             LINKS
            UNDLINE 0 0
                                             Y nos dará la lista de servidores. Mediante este
            UNGLINE 0 0
                                             comando podemos estudiar además la topología
            UNKLINE 26 757
                                             de la red.
            USER 37767462 867701368
            USERHOST 4102785 63264793
                                             2.4.6. Poniendo el reloj en hora
            USERS 21238 327
            VERSION 7628 55489               (comando TIME)
            WALLOPS 176 8224
            WHO 4503972 40190982             ¿Alguna vez habéis utilizado el teletexto, o la
            WHOIS 2268763 17289803           radio para saber la hora y aseguraros de que

Página 62                                                                        PC PASO A PASO Nº 9
SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC




          vuestro reloj no se ha quedado sin pilas? Pues     INFO
          se acabó el utilizar medios anticuados, a partir   Para que nos cuenten lo que les de la gana.
          de ahora vais a poner en hora los relojes con      :-P
          vuestro servidor de IRC :P
                                                             2.5. Comandos de consulta sobre
          TIME                                               los usuarios

          Os dará la fecha y hora que tiene el servidor.     Este último grupo de comandos son de uso
                                                             cotidiano, no como los últimos que hemos visto.
          2.4.7. T r a c e o d e       servidores            Son fundamentales, así que estad bien atentos.
          (comando TRACE)                                    ;-)

          Con este comando podéis ver la ruta que hay        2.5.1. Comando WHO
          entre vuestro servidor y cualquier otro de la
          misma red. Si, por ejemplo, ejecutamos:            Este comando tiene muchas utilidades. Vamos
                                                             a ver las más importantes, pero hay que tener
          TRACE efnet.demo.co.uk                             en cuenta que los usuarios en modo invisible
                                                             (modo de usuario +i) no aparecen en los listados
          Nos mostrará la ruta que hay que atravesar         g e n e ra d o s p o r u n a c o n s u l t a W H O.
          para comunicar tu servidor con este otro por
          el camino más corto.
          Nos puede servir también, por ejemplo, para
                                                             2.5.1.1. Listado de usuarios
          buscar servidores de un determinado país. Por
                                                             En primer lugar, podemos utilizar WHO para
          ejemplo, si hacemos:
                                                             listar todos los usuarios de un determinado
                                                              dominio:
          TRACE *.es
                                                             WHO *.es
                                                             Nos mostrará todos los usuarios conectados a
          Podremos comprobar que no hay ningún
                                                             la red que vengan de un dominio .es, siempre
          servidor español de EfNet. :-(
                                                             y cuando no estén en modo invisible.

          2.4.8. Información sobre los                       2.5.1.2. Listado de usuarios en
          administradores (comando                           canales
          ADMIN)
                                                             Para ver los usuarios (no invisibles) que hay
          Si queremos, por ejemplo, saber cómo contactar     en el canal #hackxcrack, haremos:
          con los administradores del servidor               WHO #hackxcrack
          irc.homelien.no, sólo tenemos que ejecutar:
          ADMIN irc.homelien.no                              2.5.1.3. Búsqueda de usuarios por
          Y nos dará la información de contacto.
                                                             IP

          2.4.9. U n p o c o         de     historia         Este punto si que es realmente interesante. Si
          (comando INFO)                                     conocemos la IP de alguien, podemos saber si
                                                             está conectado a nuestra red de IRC, y también
          Si queremos saber algo de la historia de IRC,      con qué nickname.
          o del servidor, podemos ejecutar:                  Supongamos, por ejemplo, que la IP es:

PC PASO A PASO Nº 9                                                                                                Página 63
SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC




            217.125.24.17 (al igual que todas las IPs              tipo de usuario que es en cada canal. En este
            utilizadas a lo largo del artículo, esta IP ha sido   ejemplo concreto, el usuario PyC está como
            escogida de forma totalmente aleatoria). En           usuario llano en el canal #LCo, como usuario
            primer lugar, tenemos que conocer el DNS              con voz en el canal #españa, y como
            asignado a esa IP, para lo cual, desde nuestra        operador en los canales #spanishwarez y
            aplicación cliente de IRC (¡no desde telnet!)         #hackxcrack.
            podemos ejecutar lo siguiente:                        Por último, nos dice el servidor a través del
            /dns 217.125.24.17                                    cual está conectado el usuario. En este caso el
            Nos responderá algo como esto:                        servidor sería efnet.demon.co.uk. La frase que
            [17:04] *** Looking up 217.125.24.17                  pone despues es un pequeño quote que añade
            -                                                     el servidor, así que no tiene el más mínimo
            [17:04] *** Resolved 217.125.24.17 to                 interés.
            217-125-24-17.uc.nombres.ttd.es                       Si el usuario estuviese en el mismo servidor
            Ya sabemos cual es el DNS asociado a esa IP.          que nosotros, nos habría dado una información
            Si ahora hacemos la siguiente consulta:               adicional, como ésta:
            WHO 217-125-24-17.uc.nombres.ttd.es*                  PyC has been idle 2secs, signed on Fri
            Nos devolverá el (o los) nickname de esa IP,          Mar 28 16:56:59
            si es que ese usuario está conectado a la misma       Esta información nos dice el idle, es decir, el
            red de IRC que nosotros. Si el usuario no está        tiempo que lleva este usuario sin escribir nada,
            conectado, simplemente nos dirá algo como             y la fecha y hora en la que conectó con el
            esto:                                                 servidor.
            217-125-24-17.uc.nombres.ttd.es* End                  Si queremos saber esto mismo y no estamos
            of /WHO list.                                         en el mismo servidor que este usuario, bastará
                                                                  con que hagamos la consulta poniendo su nick
            2.5.2. Comando WHOIS                                  2 veces:
                                                                  WHOIS PyC PyC
            Este comando es uno de los que más utilizo            Intuitivo, eh? ;-)
            constántemente. Nos da mucha información
            útil sobre un usuario. Si hacemos:                    2.5.3. Comando WHOWAS
            WHOIS PyC
            Nos puede devolver una respuesta como ésta:
                                                                  Este comando nos dice cuándo estuvo conectado
            PyC is ~Pic2@138.Red-25-12-
                                                                  un determinado nick. Por ejemplo, para saber
            191.pooles.rima-tde.net * PyC PoC
                                                                  cuándo estuvo conectado el usuario PyC:
            PyC on #LCo @#spanishwarez
                                                                  WHOWAS PyC
            @#hackxcrack +#españa
                                                                  Nos responderá algo como esto:
            PyC using efnet.demon.co.uk <pils> how
                                                                  PyC was PyC@203.47.23.8 * PoC
            do you think i got oline?
                                                                  PyC using efnet.demon.co.uk Fri Mar 28
            PyC End of /WHOIS list.
                                                                  17:33:03 2003
            La primera línea del whois nos indica su
                                                                  End of WHOWAS
            nombre de usuario (~Pic2), su IP o DNS
            (138.Red-25-12-191.pooles.rima-tde.net), y su
                                                                  3.      PARA TERMINAR
            nombre “real” (PyC PoC).
            Después de eso, nos muestra la lista de
            canales en los que está el usuario, siempre           Buff... ha sido una tarea más pesada de lo que
            y cuando el canal no sea secreto (modo +s)            esperaba al principio, pero ya están resumidas
            o privado (modo +p). Además, nos dice el              las bases del protocolo IRC. :-)


Página 64                                                                                             PC PASO A PASO Nº 9
SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC




          En este artículo he seguido el RFC de forma          el IRC no es case-sensitive, es decir, que no
          más estricta que en los anteriores. Si habéis        distingue entre mayúsculas y minúsculas, y
          seguido los 3 artículos publicados hasta ahora,      esto produce algunas situaciones curiosas. Por
          habréis comprobado que el estilo de redacción        ejemplo, por raro que parezca, en IRC se
          ha cambiado en los 3, y es debido a que estoy        considera que los caracteres { } | ^ son las
          experimentando para ver vuestra reacción ante        minúsculas de los caracteres [ ]  ~
          las distintas formas de escribir, para ver cual      respectivamente. Así que, por ejemplo, el nick
          os gusta más. :-)                                    ^{Zer0C00|}^ es equivalente al nick
          En primer lugar, he de aclarar que no he incluido    ~[zer0c00]~. Si no sois asiduos a las redes
          la mayoría de las respuestas del servidor a          de IRC, os parecerán nicks muy raros, pero os
          cada comando, ya que si no el artículo se            aseguro que mucha gente utiliza nicks con ese
          extendería hasta el infinito. He considerado         tipo de símbolos. :-)
          que la mayoría de las respuestas son
          suficientemente intuitivas. Si lo queréis ver               Autor: PyC (LCo)
          desde otro punto de vista, os dejo la
          interpretación de las respuestas como ejercicio.
                                                               Agradecimientos: Scherzo (LCo),
          :-P                                                   PoLLo, polhux, skitter, Tuxed,
          Se me ocurren algunas curiosidades que contar        NetLander, _Stealth_, KaR]V[aN,
          para terminar.
                                                                   y los que se me olviden.
          En primer lugar, os resumo la lista de tareas
          que puede realizar el operador de un
          canal (los de la famosa @):
          -        INVITE – invitar a un usuario a un              PERSONALIZATUMOVIL
                                                                   PERSONALIZATUMOVIL
                                                                   PERSONALIZATUMOVIL
                                                                    PERSONALIZATUMOVIL
                                                                    PERSONALIZATUMOVIL
                                                                    PERSONALIZATUMOVIL
                                                                     PERSONALIZATUMOVIL  MOVIL
                                                                                         MOVIL
                                                                                     TUMOVIL
                                                                                        MOVIL
                                                                     PERSONALIZATUTUMOVIL
                                                                                        MOVIL
                                                                                        MOVIL
                                                                     PERSONALIZATUTUMOVIL
                                                                                        MOVIL
                                                                      PERSONALIZATUTUMOVIL
                                                                                        MOVIL
                                                                                        MOVIL
                                                                                       MOVIL
                                                                       PERSONALIZA TUMOVIL
                                                                                       MOVIL
                                                                                       MOVIL
                                                                                      MOVIL
                                                                                      MOVIL
                                                                      PERSONALIZATU MOVIL
                                                                                      MOVIL
                                                                      PERSONALIZA TU MOVIL
                                                                                     MOVIL
          canal en modo invite only (modo +i).                         PERSONALIZA
                                                                       PERSONALIZA
                                                                        PERSONALIZA
                                                                         PERSONALIZATUMOVIL
                                                                                       TUMOVIL
                                                                                          MOVIL
                                                                                          MOVIL
                                                                           PERSONALIZA TUMOVIL
                                                                         PERSONALIZATU MOVIL
                                                                                          MOVIL
                                                                           PERSONALIZA TUMOVIL
                                                                                          MOVIL
                                                                         PERSONALIZATU MOVIL
                                                                                          MOVIL
                                                                          PERSONALIZA TUMOVIL
                                                                                          MOVIL
                                                                          PERSONALIZA TU MOVIL
                                                                          PERSONALIZA TUMOVIL
                                                                                         MOVIL
          -        KICK – expulsar a un usuario del
          canal.
          -        MODE – cambiar los modos del canal,
          y los modos de otros usuarios en el canal.
          -        TOPIC – cambiar el topic del canal si
          el canal está en modo +t. Si no, cualquiera
          puede hacerlo, y no solo un operador.
          -        PRIVMSG – Por supuesto, un
          operador siempre puede hablar en el canal,
          aunque éste se encuentre en modo moderado
          (modo +m).
          Otra cosa que he de mencionar, es que no he
          hablado de la mitad del protocolo IRC, que es
          el que se utiliza entre los distintos servidores
          de una red, y no entre un cliente y un servidor.
          He dado por hecho que, si sois administradores
          de una red de IRC, tendréis mejores fuentes
          de consulta que esta revista y, en caso contrario,
          no os interesará lo más mínimo conocer este
          protocolo. De todas formas, lo tenéis                              HAY MUCHOS MAS EN
          completamente detallado en el RFC 2813.                         http://pclog.buscalogos.com/
          Por último, una pequeña curiosidad, y es que

PC PASO A PASO Nº 9                                                                                             Página 65
SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC




      !              MUY         I M P O R TA N T E :              COMUNICADO                       E D I TO R I A L

      Este número 9 de PC PASO A PASO (Los Cuadernos de Hack x Crack) contiene gran cantidad de palabras y conceptos
      que seguro ha pillado desprevenido a más de uno. Si eres un lector habitual ya sabes que solemos explicar precisamente
      todos esos conceptos a lo largo de nuestros artículos, pero en este caso (y nos referimos en especial al artículo del NMAP)
      hemos preferido dar una visión general a partir de la cual profundizaremos en próximos números.

      Si es la primera vez que nos lees y no posees un cierto nivel en esto de la informática, seguro que te has quedado “fuera
      de lugar” y sin saber muy bien qué tipo de revista has comprado, por ejemplo, hablamos de establecer conexiones por
      TELNET sin más explicaciones y nos quedamos “tan anchos”. Bien, esto no es así, en los números anteriores hemos
      explicado hasta el hartazgo desde cómo se abre una Ventana DOS (Ventana de Comandos) hasta cómo se establece una
      conexión por Telnet y mil cosas más de nivel básico. Estás leyendo un número que utiliza los conocimientos ya adquiridos
      en anteriores entregas, por ejemplo el curso de Visual Basic ya está por la entrega 3, igual que la SERIE RAW.

      Si quieres ver nuestra línea editorial tienes en nuestra Web el número 1 de Hack x Crack a tu disposición en formato
      PDF, descárgalo y léelo tranquilamente, es completamente gratis y podrás ver que hemos empezado DESDE CERO!!!

      Posdata para los miembros del foro: Si algún miembro del foro cree que esta nota la hemos puesto para “rellenar”, solo
      tiene que mirar la revista para darse cuenta de que hemos empezado a reducir el tamaño de letra porque hemos tenido
      verdaderos problemas de espacio, no digamos ya los concursos de Linux y logos (que son miniaturas en comparación
      con anteriores números). Esta nota es muy importante porque tenemos miedo de estar tomando una línea demasiado
      técnica y todos sabemos que eso es peligroso, por ello necesitábamos advertir a los nuevos lectores que si no comprenden
      este número de PC PASO A PASO es precisamente porque son nuevos lectores y no han seguido la revista desde su
      inicio.

      Parece mentira pero en tan solo 9 números nos hemos introducido de lleno en un mundo para muchos desconocido e
      intentamos en cada nuevo número editado llegar un poco más lejos. Ahora sería el momento ideal para decirte que si
      te falta algún número de la revista puedes pedirlo desde nuestra Web e intentar venderte “la moto”, pero no es ninguna
      “moto”, es algo que deberás hacer si eres un nuevo lector y quieres seguir avanzando. Para nosotros la venta de números
      atrasados es más una cruz que un beneficio, te lo aseguro, pero es un servicio que estamos dando porque es
      IMPRESCINDIBLE para los nuevos lectores. Bueno, que me quedo sin espacio, un fuerte abrazo a toda la peña del foro
      ;)




                     SI TE GUSTA LA INFORMÁTICA.
            SI ESTAS “CABREADO” CON GÜINDOUS ;)
                SI QUIERES PROGRESAR DE VERDAD
                                                                                                 Incluye 7 CD’s y 1 DVD
                         PC PASO A PASO                                                          Manual de Instalación.
               SOR TEA CADA MES UN S.O.                                                          Manual de Administracion

            SUSE LINUX PR OFESSION AL 8.2
             SIMPLEMENTE ENVIA LA PALABRA
                    PCCON AL 5099
                              DESDE TU MOVIL
          PRECIO DEL MENSAJE: 0,90€ + IVA. VALIDO PARA (MOVISTAR - VODAFONE Y AMENA)
                                      IVA. VALIDO PARA (MOVISTAR


                       EL PREMIO PUEDE SER CANJEABLE POR UN JUEGO
                           DE PC O CONSOLA QUE NO SUPERELOS 85€
          EL GANADOR SALDRA PUBLICADO AQUÍ 2 NÚMEROS DESPUES DE LA PUBLICACIÓN.



Página 66                                                                                                    PC PASO A PASO Nº 9
NÚMERO1:

                                                   -CREA TU PRIMER TROYANO
                                                   INDETECTABLE POR LOS ANTIVIRUS.
                                                   -FLASHFXP: SIN LÍMITE DE VELOCIDAD.
                                                   -FTP SIN SECRETOS: PASVMODE.
                                                   -PORT MODE/PASV MODE Y LOS
                                                   FIREWALL: LA UTILIDAD DE LO
                                                   APRENDIDO.
                                                   -TCP-IP:INICIACIÓN     (PARTE   1).
                                                   -EL MEJOR GRUPO DE SERVIDORES FTP
                                                   DE HABLA HISPANA.
                                                   -EDONKEY 2000 Y SPANISHARE.
                                                   -LA FLECHA ÁCIDA.




NÚMERO 2:

     -CODE/DECODE BUG: INTRODUCCIÓN.
     -CODE/DECODE BUG: LOCALIZACIÓN
     DEL OBJETIVO.
     -CODE/DECODE BUG: LÍNEA DE
     COMANDOS.
     -CODE/DECODE BUG: SUBIENDO
     ARCHIVOS AL SERVIDOR REMOTO.
     -OCULTACIÓN DE IP: PRIMEROS PASOS.
     -LA FLECHA ÁCIDA: LA SS DIGITAL.
     AZNAR AL FRENTE DE LA SS DEL SIGLO
     XXI.




                                             NÚMERO 3:

                                                    -PROXY: OCULTANDO NUESTRA
                                             IP.             ASUMIENDO CONCEPTOS.
                                                    -PROXY: OCULTANDO NUESTRA
                                             IP.             ENCADENANDO PROXIES.
                                                    -PROXY: OCULTANDO NUESTRA
                                             IP.             OCULTANDO        TODOS
                                             NUESTROS
                                             PROGRAMAS TRAS LAS CADENAS DE
                                                    PROXIES.
                                                    -EL SERVIDOR DE HACKXCRACK
                                                    CONFIGURACIÓN Y MODO DE EMPLEO.
                                                    -SALA DE PRACTICAS: EXPLICACIÓN.
                                                    -PRÁCTICA 1ª: SUBIENDO UN ARCHIVO
                                                    A NUESTRO SERVIDOR.
                                                    -PRÁCTICA 2ª: MONTANDO UN DUMP
                                                    CON EL SERV-U.
                                                    PRÁCTICA 3ª: CODE/DECODE BUG.
                                                    LÍNEA DE COMANDOS.




   NÚMERO 4:

         -CREA TU SEGUNDO TROYANO,
         INDETECTABLE E INMUNE A LOS
         ANTIVIRUS.
                 CONOCIENDO EL RADMIN.
                 GESTIONANDO UNA SALA
                 DE ORDENADORES.
                 OCULTANDO EL RADMIN.
                 INSTALANDO EL RADMIN
                 EN EQUIPOS REMOTOS.
         -OCULTACIÓN DE IP POR NOMBRE DE
         DOMINIO.
         -CREA LETRAS DE IMPACTO PARA TUS
         DOCUMENTOS (LETRAS DE FUEGO).
         - CONSIGUE UNA IP FIJA.
NÚMERO 5:

                                                         -HACK-OPINION: LA PIRATERÍA EN
                                                         INTERNET.
                                                         -ROOTKITS: LA PESADILLA DE CUALQUIER
                                                         ADMINISTRADOR.
                                                         -ROOTKITS: EL SR. NTROOT.
                                                         -WAREZ: APPZ, GAMEZ, MP3Z, DIVX,
                                                         FTPZ, 0-DAY.
                                                         -APRENDIENDO A COMPILAR
                                                         PROGRAMAS. COMPILA TU PROPIO
                                                         NETCAT.
                                                         -BUGS, ERRORES Y OTRAS FORMA DE
                                                         JOD...
                                                         -NETBIOS: ESTUDIO Y PENETRACIÓN DE
                                                         SISTEMAS.
                                                         -ASESINADOS POR LA LSSI.
                                                         -LISTADO DE ORDENES PARA NETBIOS.
                                                         -HACK-OPINION: PAGOS POR INTERNET
                                                         SEGUROS YÁ.




NÚMERO 6:

- PASA TUS PELICULAS A DIVX (STREAMING)
- PASA TUS PELICULAS A DIVX II (CODEC DIVX)
- PUERTOS & SERVICIOS
- eMule: EL NUEVO REY DEL P2P
- NUEVA SECCION: PROGRAMACION DESDE 0
- CURSO DE VISUAL BASIC
-IPHXC: EL TERCER TROYANO DE HXC
- TENDENCIAS ACTUALES EN CODIGO MALICIOSO
- OCULTACION DE FICHEROS. METODO STREAM
(ads)
- TRASTEANDO CON EL HARDWARE DE UNA LAN




                                              NÚMERO 7:

                                              - PROTOCOLOS: POP3
                                              - PASA TUS PELICULAS A DIVX III (EL AUDIO)
                                              - PASA TUS PELICULAS A DIVX IV (MULTIPLEXADO)
                                              - CURSO DE VISUAL BASIC: LA CALCULADORA
                                              -IPHXC: EL TERCER TROYANO DE HXC II
                                              - APACHE: UN SERVIDOR WEB EN NUESTRO PC
                                              - CCPROXY: IV TROYANO DE PC PASO A PASO
                                              - TRASTEANDO CON EL HARDWARE DE UNA LAN




NÚMERO 8:

-   CURSO DE LINUX
-   APACHE: COMPARTE ARCHIVOS
-   REVERSE SHELL
-   CURSO DE VISUAL BASIC: MAS CALCULADORA
-   PROTOCOLOS Y SU SEGURIDAD: SMTP

Más contenido relacionado

PDF
Hxc10
PDF
Hxc23
PDF
Hxc13
PDF
Hxc16
PDF
Hxc20
PDF
Hxc14
PDF
Hxc21
PDF
Hxc5
Hxc10
Hxc23
Hxc13
Hxc16
Hxc20
Hxc14
Hxc21
Hxc5

Similar a Hxc9 (20)

PDF
Hxc8
PDF
Haxcra8.pdf
PDF
Hxc17
PDF
Hxc7
PDF
Hxc19
PDF
Hxc3
PDF
Hxc15
PDF
Emprendimiento Tecnológico
PDF
Hxc12
PDF
Hxc18
PDF
Hxc2
PDF
Hxc22
PPTX
Haichl natalia cantor sanchez 4 y balentina
PDF
Haichl natalia cantor sanchez 4 y balentina
PDF
Haichl natalia cantor sanchez 4 y balentina
DOC
Actividades de software.
PPS
Presentacion plataformas tecn.
PPS
Presentacion plataformas tecn.
PPTX
Diccionario informatico luz marina
Hxc8
Haxcra8.pdf
Hxc17
Hxc7
Hxc19
Hxc3
Hxc15
Emprendimiento Tecnológico
Hxc12
Hxc18
Hxc2
Hxc22
Haichl natalia cantor sanchez 4 y balentina
Haichl natalia cantor sanchez 4 y balentina
Haichl natalia cantor sanchez 4 y balentina
Actividades de software.
Presentacion plataformas tecn.
Presentacion plataformas tecn.
Diccionario informatico luz marina
Publicidad

Más de rubenroa (20)

PPTX
Estudios epidemiologicos
PPTX
Efectividad de la vacunacion Covid-19 en variante delta
PPTX
Causalidad
PPTX
Evaluacion de tecnologias sanitarias
PPT
Epidemiologia
PPT
Pediatrics 2008 jul 122(1) 143 8, figure-1
PPT
Introducción análisis farmacoepidemiológico sss&farma-taller15jun2011
PPTX
Maceira sss&farma-taller15jun2011
PPTX
Datos cohorte chilena sida (1)
PPT
Ferinject
PPTX
Kappos fingolimod moa-clin_results_vfinal_buenosaires1a
PPT
Uso Racional de Medicamentos
PPS
tabaquismo
PPT
Sesion ppt -2641_
PPT
Auditoria em
PPS
Indice tobillo brazo
PPS
indice tobillo brazo
PPTX
Epistemología y paradigmas
PPS
Vertigo acv
PPS
Apendicectomia
Estudios epidemiologicos
Efectividad de la vacunacion Covid-19 en variante delta
Causalidad
Evaluacion de tecnologias sanitarias
Epidemiologia
Pediatrics 2008 jul 122(1) 143 8, figure-1
Introducción análisis farmacoepidemiológico sss&farma-taller15jun2011
Maceira sss&farma-taller15jun2011
Datos cohorte chilena sida (1)
Ferinject
Kappos fingolimod moa-clin_results_vfinal_buenosaires1a
Uso Racional de Medicamentos
tabaquismo
Sesion ppt -2641_
Auditoria em
Indice tobillo brazo
indice tobillo brazo
Epistemología y paradigmas
Vertigo acv
Apendicectomia
Publicidad

Último (20)

PDF
Distribucion de frecuencia exel (1).pdf
DOCX
Guía 5. Test de orientación Vocacional 2.docx
PDF
Diapositiva proyecto de vida, materia catedra
PDF
MANUAL de recursos humanos para ODOO.pdf
PDF
CyberOps Associate - Cisco Networking Academy
PPTX
CLAASIFICACIÓN DE LOS ROBOTS POR UTILIDAD
PDF
informe_fichas1y2_corregido.docx (2) (1).pdf
PPTX
Presentacion de Alba Curso Auditores Internos ISO 19011
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PPTX
la-historia-de-la-medicina Edna Silva.pptx
PDF
CONTABILIDAD Y TRIBUTACION, EJERCICIO PRACTICO
PDF
PRESENTACIÓN GENERAL MIPIG - MODELO INTEGRADO DE PLANEACIÓN
PPTX
Historia Inteligencia Artificial Ana Romero.pptx
DOCX
TRABAJO GRUPAL (5) (1).docxsjjsjsksksksksk
PPTX
ccna: redes de nat ipv4 stharlling cande
PPTX
unidad 3 tecnología 8° básico: planificación y elaboración de un objeto
PPTX
Propuesta BKP servidores con Acronis1.pptx
PPTX
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
DOCX
TRABAJO GRUPAL (5) (1).docxjesjssjsjjskss
PPTX
El uso de las TIC en la vida cotidiana..
Distribucion de frecuencia exel (1).pdf
Guía 5. Test de orientación Vocacional 2.docx
Diapositiva proyecto de vida, materia catedra
MANUAL de recursos humanos para ODOO.pdf
CyberOps Associate - Cisco Networking Academy
CLAASIFICACIÓN DE LOS ROBOTS POR UTILIDAD
informe_fichas1y2_corregido.docx (2) (1).pdf
Presentacion de Alba Curso Auditores Internos ISO 19011
historia_web de la creacion de un navegador_presentacion.pptx
la-historia-de-la-medicina Edna Silva.pptx
CONTABILIDAD Y TRIBUTACION, EJERCICIO PRACTICO
PRESENTACIÓN GENERAL MIPIG - MODELO INTEGRADO DE PLANEACIÓN
Historia Inteligencia Artificial Ana Romero.pptx
TRABAJO GRUPAL (5) (1).docxsjjsjsksksksksk
ccna: redes de nat ipv4 stharlling cande
unidad 3 tecnología 8° básico: planificación y elaboración de un objeto
Propuesta BKP servidores con Acronis1.pptx
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
TRABAJO GRUPAL (5) (1).docxjesjssjsjjskss
El uso de las TIC en la vida cotidiana..

Hxc9

  • 1. HACK X CRACK: NMAP - EL MEJOR ESCANEADOR DE INTERNET P Serie RAW: IRC A I N T E R N E T R E L AY C H AT S CHATEANDO O MEDIANTE TELNET P A S Oa a a a a a a aa a a a a a HACK X CRACK - HACK X CRACK - HACK X CRACK G N U Permisos de archivo CAT y otros comandos APACHE Instalación Modulos y Interfaz Gráfica Servidores Virtuales Opciones de Uso DESCUBRE LOS PROTOCOLOS DE “LA RED” CON NOSOTROS VISUAL BASIC Iniciación al PORT SCANNING Creando Librerias Técnicas de “scaneo” Acceso a datos Nº 9 -- P.V.P. 4,5 EUROS 00009 8 414090 202756 Si no entiendes ni una palabra de esta portada, has llegado a LA REVISTA DE INFORMÁTICA QUE ESTABAS ESPERANDO!!! PC PASO A PASO: APRENDE A PROGRAMAR CON NOSOTROS
  • 2. P A S O aa P A S Oaa aa a a aa a a a a a a aa EDITORIAL: EDITOTRANS S.L. Director de la Publicación C.I.F: B43675701 J. Sentís E-mail director@hackxcrack.com Director Editorial Diseño gráfico: I. SENTIS J. M. Velasco Contacto diseñador gráfico E-mail contacto grafico@hackxcrack.com director@editotrans.com Redactores AZIMUT, ROTEADO, FASTIC, MORDEA, FAUSTO, Título de la publicación ENTROPIC, MEIDOR, HASHIMUIRA, BACKBONE, Los Cuadernos de HACK X CRACK. ZORTEMIUS, AK22, DORKAN, KMORK, MAILA, TITINA, SIMPSIM... ... ... ... ... Nombre Comercial de la publicacíón Contacto redactores PC PASO A PASO redactores@hackxcrack.com Colaboradores Web Mas de 130 personas: de España, de Brasil, de www.hackxcrack.com Argentina, de Francia, de Alemania de Japón y algún Estadounidense. Deposito legal: B.26805-2002 Contacto colaboradores Código EAN: 8414090202756 colaboradores@hackxcrack.com Código ISSN: En proceso Imprime I.G. PRINTONE S.A. Tel 91 808 50 15 Distribución Coedis S.L. Avda. de Barcelona 225. Molins de Rei. Barcelona. Tel 93 680 03 60 FAX 93 668 82 59 WEB: www.coedis.com (mapa de distribución en la web) Teléfono de Atención al Cliente: 977-224580 Horario de Atención: De 9:30 a 13:30 (de Lunes a Viernes) ** Este número de teléfono se ha habilitado principalmente para atender cualquier problema relacionado con la petición de números atrasados y/o suscripciones. En la Web (www.hackxcrack.com) tenemos el formulario para que puedas realizar tus pedidos, por favor utiliza la Web para realizar tu pedido. © Copyright Editotrans S.L. NUMERO 9 -- PRINTED IN SPAIN PERIOCIDAD MENSUAL
  • 3. DECLARACION DE INTENCIONES PARA "LOS OTROS": 1.- La intención de la presente publicación NO ES fomentar la piratería curiosidad deberéis ponerla VOSOTROS, porque los medios los facilitaremos informática ni la “delincuencia” en la Red. NOSOTROS. En las siguientes líneas os descubrimos cómo podremos 2.- Cualquier texto publicado es VALIDADO por nuestra Asesoría Jurídica, conseguir nuestros objetivos y definimos algunas de las palabras que más por lo que advertimos a cualquier persona, empresa u organización de la han sido violadas y retorcidas en su significado. inutilidad de cualquier iniciativa jurídica en nuestra contra. Aun así, en caso de cualquier iniciativa en contra de esta revista, deberá ser debidamente Hacker: Este término ha sufrido a lo largo de su corta historia una horrible presentada y resuelta en la Razón Social que figura en nuestros documentos conspiración perpetrada por la ignorancia de los medios, eso que de constitución. personalmente llamo "periodismo de telediario" (en clara alusión a los 3.- Esta publicación no se hace responsable del mal uso de los conocimientos ridículos artículos que no hacen mas que intoxicar nuestra percepción de que se exponen. las cosas e insultar nuestra inteligencia). Ese tipo de periodismo unido a 4.- Esta publicación NO FACILITARÁ los datos de nuestros colaboradores "otros poderes", desde los monopolios que deben justificar su incompetencia ni el origen de nuestros conocimientos salvo ORDEN JUDICIAL y, aun así, hasta los gobiernos que deben justificar sus intereses ocultos pasando por advertimos que algunos de esos colaboradores NO SON CONOCIDOS mas la industria del cine (normalmente demonológica) y los medios informativos que por sus NICKS (alias). Por ello, correrá a cargo de los organismos "de masas". pertinentes su “descubrimiento”. 5.- Esta publicación NO SE HACE RESPONSABLE ni tienen por qué COMPARTIR Pues bien, HACKER no es mas que una persona que posee conocimientos las opiniones personales vertidas por sus colaboradores, por lo que NO avanzados sobre una materia en concreto, normalmente relacionados con SOMOS RESPONSABLES de las mismas. la tecnología aunque ni mucho menos limitado a ello. Ponen sus aptitudes 6.- Cualquier texto publicado estará bajo las protecciones de DERECHOS al servicio de un único objetivo: EL CONOCIMIENTO. Desean conocer el DE AUTOR y no se permite su copia, publicación, modificación o distribución funcionamiento de "las cosas" y no encuentran límites en sus camino mas sin antes obtener el permiso de esta editorial. De este punto quedan exentos que su propia curiosidad. No se dedican a destruir ni a causar estragos aquellos textos que han sido obtenidos de terceros y/o que están sujetos entre sus "victimas", no se dedican a robar ni a chantajear ni a regodearse a otras licencias (ya sean por parte de su autor o por terceros). de sus "conquistas", muy al contrario suelen advertir a terceros de las 7.- Si desean ponerse en contacto con nuestro departamento jurídico, debilidades de sus sistemas y, desgraciadamente, esos "terceros" en lugar rogamos enviar mail a juridico@hackxcrack.com de agradecerles su aviso se dedican a denunciarlos o perseguirlos… aunque no siempre es así, por supuesto, muchas compañías y gobiernos han PARA NUESTROS LECTORES: aprendido lo valiosos que son los HACKERS y ahora algunos son colaboradores (o empleados) de estos. BILL GATES es un HACKER (el papá ventanas), Como podréis ver, esta no es una revista mas, por primera vez tenéis ante como Linus Torvalds (el papá Linux) o Grace Hooper (la Almirante, vosotros una publicación LIBRE que os ofrecerá la posibilidad de explorar creadora del Lenguaje COBOL), los autores del COREWAR Robert Thomas la red tal y como debe explorarse ;) Morris, Douglas McIlroy y Victor Vysottsky (precursores de los creadores de virus informáticos), Fred Cohen (el primer investigador y Esta publicación responde a la pregunta mas veces expuesta en LA RED: autor de los virus de la historia), Dennis Ritchie y Ken Thompson ¿Como puedo ser un hacker? Bien, ahora seguro que muchos ya se están ("hacedores" del Lenguaje C y co-creadores del SO UNIX), Gary Kildall "sonriendo" y pensando lo ilusos que somos al intentar "eregirnos" en (autor del sistema operativo CMP y CPM/86), Tim Paterson (autor del "portadores de LA LUZ", pensando que seremos una "escuela de lamers" Quick & Dirty DOS), Morris (autor de "The tour of the Worm"), Kevin y similares a otras publicaciones que, entre sus 100 páginas de revista solo Mitnick (el más buscado por el FBI), Phiber Optik (líder juvenil convertido contiene 5 de "material utilizable" (si es que puede llamarse así). en símbolo de los hackers), Richard Stallman (impulsor del software libre y GNU), Johan Helsingius (primer conductor de un Remailer Pues NO, lo siento, vosotros seréis nuestros jueces y, llegado el caso, Anónimo), Chen Ing-Hou (autor del virus CIH -Chernobyl- ), Sir Dyistic NUESTROS VERDUGOS. (creadorutor del Back Orifice), David L. Smith (virus Melissa), Reonel Ramonez (virus LoveLetter), Vladimir Levin (Robó electrónicamente Nuestro objetivo es: ACABAR CON LA BASURA DE LA RED (lamers y demás 10 millones de dólares al Citibank), y muchos mas. ¿Cómo? ¿Pero no hemos "esencias") con el único método que conocemos: LA EDUCACIÓN y con un dicho que los hackers no comenten delitos? Pues NO, vuelve a leer su única bandera que será por siempre nuestra firma: SOLO EL CONOCIMIENTO definición… pero claro, de todo hay en la viña del señor, y al igual que hay TE HACE LIBRE LIBRE. delincuentes entre el clero hay hackers que en un momento u otro han ·caido· en la ilegalidad, nadie es perfecto!!!!! … y Bill Gates es un HACKER? Estos son nuestros pilares: LA EDUCACIÓN Y EL CONOCIMIENTO Para ser CONOCIMIENTO. Por supuesto, solo tienes que leerte su biografía. ¿Sorprendido? Espero un HACKER (maldita palabra mal entendida por unos y peor utilizada por que no, porque eso no es nada mas que un cero a la izquierda en comparación otros) solo hace falta dos cosas: curiosidad y medios, a partir de ahora la con lo que vas a encontrar en esta revista. PC PASO A PASO Nº 9 Página 3
  • 4. EDITORIAL: gracias a todos Si eres lector habitual o miembro de EL F O R O d e H a c k x C r a c k INDICE (www.hackxcrack.com) ya sabes que debido a causas mayores AZIMUT me ha sustituido como director durante los números 7 y 8. No tengo palabras para agradecerle el gran trabajo que ha realizado sacando adelante esta revista. Hace pocos días AZIMUT me pidió que cuando escribiese 3 DECLARACION DE INTENCIONES esta editorial no le mencionase a él sino (en sus palabras) “a los verdaderos 4 EDITORIAL a r t í f i c e s d e l m i l a g r o : l o s c o l a b o r a d o r e s ”. E s c i e r t o , d e b e m o s 5 CURSO DE LINUX(II) SISTEMA DE ARCHIVOS agradecerle que sigamos en la “palestra” a muchas personas que han 13 GANADOR DEL CONCURSO SUSE LINUX c o l a b o ra d o c o n H X C d e fo r m a totalmente desinteresada, a los 14 SERVIDOR DE HXC. MODO DE EMPLEO miembros del foro que nos ayudan con sus críticas, a los moderadores que 15 APACHE: - CONFIGURACION. mantienen un lugar donde hablar - COMPARTE ARCHIVOS MEDIANTE WEB libremente, a los maquetadores que han trabajado noches enteras y con prisas, 25 COLABORA CON NOSOTROS y no hace falta seguir porque la lista es muy larga y podría dejarme a 26 CURSO DE VISUAL BASIC: - MI PRIMERA DLL. alguien. - ACCESO A DATOS GRACIAS, GRACIAS y GRACIAS. 36 SUSCRIPCIONES Espero que este número 9 os guste 37 TECNICAS DE PORT SCANNING. USO DEL NMAP tanto como los dos anteriores y os anuncio que se preparan cambios 45 PROTOCOLOS Y SU SEGURIDAD: IRC importantes que ayudarán a que esta revista llegue tan lejos como todos 65 BAJATE LOS LOGOS DE PC PASO A PASO (HXC) deseamos: Ya sabes que en EL FORO anunciamos las novedades, pásate de 66 CONCURSO DE SUSE LINUX 8.2 vez en cuando y lee la sección de COMUNICADOS. 67 NUMEROS ATRASADOS Un enorme saludo a todos y os dejo con la revista. Página 4 PC PASO A PASO Nº 9
  • 5. gnu linux (II) El Sistema de Archivos 1.- Introducción un determinado nombre. Esto quiere decir que si hemos guardado nuestros datos en un archivo Habiendo presentado en artículos anteriores el llamado ejemplo.txt y luego queremos guardar más sistema GNU/LiNUX, vamos a ir profundizando poco datos en la misma ubicación, tendremos que a poco en los aspectos que lo definen. En concreto guardarlos en un archivo con un nombre distinto en el presente artículo se tratará el Sistema de como ejemplo2.txt. Archivos de este Sistema Operativo (S.O.). En el próximo artículo pasaremos a describir diversas 2.1.- Tipos de archivo tareas administrativas como administración de usuarios, dispositivos, etc... Los archivos pueden contener diversos tipos de Aunque parece fuera de toda lógica, la razón de información. Básicamente podremos clasificar los posponer estos temas a un tercer capítulo es la archivos conforme a su contenido de la siguiente siguiente: Tanto la administración de usuarios, como manera: la de servicios o la de dispositivos requiere de un conocimiento al menos básico del Sistema de Archivos 1.- Datos de usuario: Información que crea y dado que en este recaerán cosas tan importantes actualiza un usuario. Puede ir desde un simple como permisos, cuotas, etc.... archivo de texto, hasta archivos más complicados Centrándonos ya en el tema que hoy tratamos, no generados por aplicaciones de usuario tales como cabe duda de que tratar con archivos y directorios aplicaciones CAD, procesadores de texto, etc.... así como comprender la estructura en la que estos se distribuyen en el disco es algo de importancia 2.- Datos del sistema: Información, normalmente vital. No ya para comprender GNU/LiNUX sino en formato de texto plano, que contienen información cualquier S.O. sobre como está configurado nuestro sistema. Un Tal como dijimos en pasados artículos, GNU/LiNUX ejemplo de este tipo de archivos será el archivo es un S.O. deudor de UNiX y como veremos a lo /etc/passwd que contiene información relevante sobre largo de este artículo, esto también se notará en las cuentas de usuario. Obviamente este tipo de su Sistema de Archivos. Una vez más, el objetivo archivos es manejado habitualmente por el es que lo que aprendamos en el siguiente artículo administrador del sistema, estando vedado su uso no se limite a la distro XXXX... Es más, si después al resto de los usuarios. de una lectura atenta del artículo hemos aprendido algo, esto que hayamos aprendido será aplicable a 3.- Archivos ejecutables: Estos archivos contienen cualquier sistema UNiX. instrucciones que el ordenador puede comprender e interpretar. Son los llamados programas o ejecutables. 2.- Archivos 4.- Archivos de dispositivo: Como se dijo en el El concepto básico de un archivo, con el que casi artículo anterior, una característica que determina todos estamos probablemente familiarizados, define el comportamiento de los sistemas UNiX-like, es que a "archivo" como un conjunto de datos incluso el acceso al hardware de nuestro ordenador independientes que reside en nuestro disco duro. se puede realizar mediante acceso a archivos. Estos Con "independientes" queremos decir que podemos archivos un tanto particulares requerirán de un tener diversos archivos cuyos contenidos son análisis en mayor profundidad que será abordado distintos. Esto hará que sea necesaria la identificación en breve. de cada uno de estos archivos de manera que podamos identificar el contenido del mismo frente 2.2.- Nombres de archivo a los demás. En GNU/LiNUX identificaremos un archivo por su En GNU/LiNUX podemos utilizar nombres de archivo nombre y su ubicación. En cada ubicación o de hasta 256 caracteres. Estos caracteres pueden "directorio" sólo podrá existir un único archivo con ser tanto letras mayúsculas como letras minúsculas, PC PASO A PASO Nº 9 Página 5
  • 6. GNU - LINUX (II) SISTEMA DE ARCHIVOS ---- GNU - LINUX (II) SISTEMA DE ARCHIVOS números y otros caracteres especiales como el guión En GNU/LiNUX el directorio que contiene todos los (-), el subrayado (_) o el punto (.). demás directorios es llamado "directorio raíz". En este punto conviene llamar la atención sobre un Cualquier otro directorio será subdirectorio de este. aspecto particular de los sistemas UNiX-like: Los A partir de este directorio raíz, tras poner un nombres de archivos/directorios son case-sensitive; subdirectorio tras otro, formamos una estructura es decir, nombres de archivo que son iguales en arborescente denominada "árbol de directorios” (ver apariencia pero difieren en las mayúsculas y las fig 1 al final de este artículo) minúsculas serán realmente dos nombres de archivo distintos. Así por ejemplo los siguientes nombres de 3.3.- Nombres de directorio archivos pueden coexistir en una misma ubicación Los directorios se nombran de la misma manera que dado que son archivos distintos: ejemplo.txt, los archivos; es decir siguiendo la misma regla de ejemplo.TXT, Ejemplo.txt, EJEMPLO.TXT, caracteres que se pueden utilizar y los que no y EjEmPlO.txt, 3j3mp10_h4ch0r_d3_3s0s.txt.... observando el case-sensitive. Quitando el último ejemplo que es una dedicación El carácter barra inclinada (/) es utilizado para personal a las reinonas del glam que pululan por referirnos a directorios o archivos que están dentro doquier, creo que queda bien reflejado el sentido de un directorio. Por ejemplo, del párrafo anterior. artículoshxc/artículo2.abw, nos dice que el archivo Existirán así mismo una serie de meta caracteres artículo2.abw se encuentra dentro del directorio que no podrán formar parte del nombre de un artículoshxc. Así mismo con el siguiente ejemplo archivo. Es el caso de los asteriscos (*), signo de artículoshxc/grafs nos estamos refiriendo a un interrogación (?), barra invertida (), etc... Debido subdirectorio, grafs que se encuentra bajo el directorio a que tendrán un significado concreto para la shell. artículoshxc. Cuando se aborde en profundidad la shell y sus Nótese que a priori es difícil distinguir cuando nos intríngulis veremos más de estos meta caracteres. estamos refiriendo a un archivo o a un directorio. Más adelante veremos que mediante los comandos 3.- Directorios adecuados y parámetros no menos adecuados podremos distinguir fácilmente cuando listamos GNU/LiNUX, al igual que muchos SS.OO. organizan archivos o directorios. Por ahora puede ser un los archivos en directorios. Podemos pensar en los ejercicio interesante observar las distintas salidas directorios como en carpetas que contienen archivos que provocan las siguientes invocaciones de comando: o a su vez más carpetas. 3.1.- Directorios Padre y 00 $ ls 01 $ ls -F Subdirectorios 02 $ ls --color Imaginemos la siguiente situación: Un directorio A 03 $ ls --color -F que contiene un directorio B. Llamaremos a B subdirectorio del directorio A, y el directorio A será En cuanto a la salida es probable que muchos no el directorio padre del directorio B. observéis diferencias. Esto es debido a que sobre Esto que a algunos les parecerá una perogrullada todo las dos últimas opciones (02 y 03) vienen ya (sobre todo a los que, como servidor, peinan canas) activadas "de serie". Por supuesto nosotros he decidido ponerlo, no ya para rellenar espacio aprenderemos a "activar opciones de serie" cuando como barruntan las mentes malpensantes, sino como nos enfrentemos al artículo "La shell y tú: una historia una necesidad perentoria. ¿Lo qué? Pues eso; como de lujuria". El directorio raíz será siempre mostrado con un tengo la fortuna de dedicarme a esto de la enseñanza carácter / en vez de referirnos a él con un nombre. de rerum calculum machinae, puedo asegurar que No debe causarnos confusión el distinguir cuando de los nacidos en el 85 en adelante casi nadie ha el carácter / se utiliza para separar nombres de utilizado en su vida algo similar a una línea de directorios o cuando se utiliza para referirse al comandos y que incluso pasar del concepto de directorio raíz. En este último caso jamás irá precedido "carpeta" al de directorio a menudo trae problemas. de un nombre. Así al escribir /usr/bin nos estamos refiriendo al directorio bin que cuelga del directorio 3.2.- El directorio raíz: La madre usr que a su vez cuelga del directorio / (raíz). (¿padre?) de todos los directorios Página 6 PC PASO A PASO Nº 9
  • 7. GNU - LINUX (II) SISTEMA DE ARCHIVOS ---- GNU - LINUX (II) SISTEMA DE ARCHIVOS 3.4- El directorio Home de trabajo. Para ver las numerosas opciones que soporta este comando podemos teclear ls --help | GNU/LiNUX proporciona a cada usuario su propio more (¿quién no se estudió el capítulo de directorio. Este es el llamado "directorio home" o fontanería....? ;o) ) "directorio casa". Dentro de este directorio cada usuario puede guardar sus propios archivos y crear 4.2.- Nombres de archivo absolutos sus propios subdirectorios. y relativos Dependiendo del sistema GNU/LiNUX que se utilice, los demás usuarios podrán acceder o no a los Cuando especificamos el nombre de un archivo, archivos de un usuarios determinado. GNU/LiNUX lo busca en el directorio de trabajo. Si La localización del directorio home puede ser el archivo no se encuentra en el directorio de trabajo cambiada por el administrador, pero habitualmente se nos mostrará un mensaje de error: este tipo de directorios se encuentran bajo el directorio /home. 00 luis@el_chaman ~ $ ls cosa 01 cosa 4.- Navegando por el Sistema de 02 luis@el_chaman ~ $ ls cosa2 Archivos de GNU/LiNUX 03 ls: cosa: No existe el archivo o directorio Navegar por el sistema de archivos GNU/LiNUX es En algunas ocasiones nos interesará referirnos a un una tarea harto sencilla: tan sólo tendremos que archivo que no se encuentre en el directorio de aprender dos comandos y uno de ellos ni siquiera trabajo. Entonces nos tendremos que referir al posee parámetros. archivo diciendo el directorio donde se encuentra y el propio nombre del archivo. 4.1.- El comando pwd: ¿Dónde estoy? 00 luis@el_chaman ~ $ ls artículoshxc/artículo2.abw Tecleemos el comando pwd. Observaremos algo 01 artículo2.abw como: 02 luis@el_chaman ~ $ 00 luis@el_chaman ~ $ pwd En el ejemplo vemos como si queremos listar el 01 /home/luis archivo artículo2.abw que se encuentra dentro del 02 luis@el_chaman ~ $ subdirectorio artículoshxc debemos de especificar el nombre del subdirectorio y el nombre del archivo. Esto quiere decir que nos encontramos en el directorio A esta manera de hacer las cosas se le denomina /home/luis. Este directorio (en el que nos nombre de archivo relativo dado que la ruta (path) encontremos en cada momento) será conocido como hacia el archivo que buscamos es relativa a nuestro directorio de trabajo o directorio actual. Este es el directorio de trabajo; es decir, a donde nos directorio home para el usuario luis. Por defecto, encontramos en un determinado momento. Si cuando entramos en nuestro sistema, GNU/LiNUX cambiásemos de directorio de trabajo, este manera nos deposita en nuestro directorio home. de referirnos al archivo artículo2.abw ya no nos serviría. El término pwd corresponde al acrónimo print working directory. Esto nos muestra otra costumbre bastante Además, puede parecer que esto nos permite realizar común en los entornos UNiX-like: la abreviación de llamadas relativas sobre subdirectorios (es decir, comandos de manera que sean fáciles de teclear. directorios que se encuentran por debajo de donde nos encontramos nosotros). Esto no es del todo Una vez que estamos situados en un directorio, cierto dado que existen dos directorios especiales querremos saber que contiene. Para ello, se utiliza que nos permitirán hacer cosas curiosas: . (directorio el comando ls. de trabajo) y .. (directorio padre del directorio de 00 luis@el_chaman ~ $ ls trabajo). Así por ejemplo todas las siguientes llamadas 01 artículoshxc cosa multimedia public_html son nombres de archivos relativos al directorio de 02 luis@el_chaman ~ $ trabajo actual: El comando ls (list) nos lista el contenido del directorio 00 luis@el_chaman ~ $ ls ./artículoshxc/artículo2.abw PC PASO A PASO Nº 9 Página 7
  • 8. GNU - LINUX (II) SISTEMA DE ARCHIVOS ---- GNU - LINUX (II) SISTEMA DE ARCHIVOS 01 artículo2.abw 13 luis@el_chaman $ pwd 02 luis@el_chaman ~ $ ls ../tuxed/visio.iso 14 / 03 visio.iso El directorio raíz no posee padre, así que si ahora En el segundo comando .. significa que subimos un tecleásemos cd .. (obsérvese el espacio obligatorio nivel, nos metemos dentro del directorio home del entre cd y los dos puntos) seguiríamos estando en usuario tuxed y listamos el archivo visio.iso. Por el directorio raíz. cierto, este archivo nada tiene que ver con cierta aplicación comercial de la que no se puede realizar Si tecleamos simplemente cd sin pasarle argumentos, copias sin el consentimiento expreso de MicroSoft. automáticamente nos lleva a nuestro directorio home: La otra manera de referirnos a estos archivos sería 00 luis@el_chaman $ pwd mediante el uso de la ruta que va desde el directorio 01 /usr/doc raíz hasta donde se encuentra el archivo que 02 luis@el_chaman $ cd queremos sin tener en cuenta para nada el directorio 03 luis@el_chaman $ pwd de trabajo. A esta manera de hacer las cosas se le 04 /home/luis denomina nombre de archivo absoluto. El ejemplo arriba mostrado quedaría de la siguiente manera: Es bastante común en las últimas distribuciones que el propio prompt (el texto que aparece a la derecha) 00 luis@el_chaman ~ $ ls nos diga en todo momento en que directorio nos /home/luis/artículoshxc/artículo2.abw encontramos. Recordad que no todos los GNU/LiNUX 01 artículo2.abw y mucho menos todos los UNiX están configurados 02 luis@el_chaman ~ $ ls /home/tuxed/visio.iso de esta manera. Además, siempre es bueno conocer 03 visio.iso lo que funcionará en todos los sitios. Como anecdotario particular, la salida real en mi sistema 4.3.- Nos vamos a hacer turismo por de los ejemplos anteriores tiene más bien el siguiente aspecto: el disco duro: El comando cd 00 luis@el_chaman ~ $ cd /home/luis El comando cd (change directory) nos permitirá 01 luis@el_chaman ~ $ pwd cambiar de directorio de trabajo. Es decir, nos 02 /home/luis moveremos a otro directorio. La sintaxis de este 03 luis@el_chaman ~ $ cd .. comando es la siguiente: 04 luis@el_chaman /home $ pwd 05 /home 00 cd <directorio_destino> 06 luis@el_chaman /home $ cd luis/artículoshxc 07 luis@el_chaman ~/artículoshxc $ pwd El espacio entre cd y <directorio_destino> es 08 /home/artículoshxc/ obligatorio. El directorio de destino puede ser el 09 luis@el_chaman ~/artículoshxc $ cd /usr/doc nombre absoluto o relativo de un directorio. Veamos 10 luis@el_chaman /usr/doc $ pwd algunos ejemplos: 11 /usr/doc 12 luis@el_chaman /usr/doc $ cd / 00 luis@el_chaman $ cd /home/luis //Camino absoluto 13 luis@el_chaman / $ pwd 01 luis@el_chaman $ pwd 14 / 02 /home/luis 15 luis@el_chaman / $ cd 03 luis@el_chaman $ cd .. //Camino relativo 16 luis@el_chaman ~$ pwd 04 luis@el_chaman $ pwd 17 /home/luis 05 /home 06 luis@el_chaman $ cd luis/artículoshxc//Camino relativo Obsérvese que por abreviar el directorio home se 07 luis@el_chaman $ pwd escribe con el símbolo ~ 08 /home/artículoshxc/ 09 luis@el_chaman $ cd /usr/doc //Camino absoluto 10 luis@el_chaman $ pwd 5.- Creando y borrando archivos 11 /usr/doc 12 luis@el_chaman $ cd / //Camino absoluto GNU/LiNUX dispone de diversas maneras de crear Página 8 PC PASO A PASO Nº 9
  • 9. GNU - LINUX (II) SISTEMA DE ARCHIVOS ---- GNU - LINUX (II) SISTEMA DE ARCHIVOS y eliminar archivos. De hecho, algunas de estas 00 luis@el_chaman ~ $ cat /dev/cdrom > imagenCD.iso maneras son tan simples de realizar que muchas veces tenemos que tener cuidado de no borrar o Pero antes de meternos en tamaños berenjenales, sobrescribir accidentalmente archivos. vamos a hablar un poco sobre este gatito. El comando cat funciona de la siguiente manera: toma como Inicialmente vamos a crear un archivo utilizando las entrada el primer parámetro que le pasemos y nos redirecciones de entrada/salida. Las redirecciones muestra su contenido. funcionan de la siguiente manera: Una redirección Por defecto, si se invoca sin ningún parámetro, se de salida (>) desvía el flujo de información generado toma como entrada la entrada estándar (es decir, por un programa y que se destina a la salida estándar el teclado). Veamos un ejemplo: hacia otra ubicación, normalmente un archivo. Una redirección de entrada (<) desvía el flujo de datos 00 luis@el_chaman ~ $ cat de entrada estándar, es decir el teclado, a otra 01 Hola, esto es una prueba. Ahora doy a ENTER fuente de datos; normalmente un fichero. 02 Hola, esto es una prueba. Ahora doy a ENTER 03 y sigo en la siguiente línea. Vamos a crear nuestro primer fichero mandando 04 y sigo en la siguiente línea. todo aquello que debería de salir por pantalla a un 05 ¿Cómo salgo de aquí por Dios? archivo. Para ello, vamos a teclear la siguiente 06 ¿Cómo salgo de aquí por Dios? secuencia de comandos: 07 <Ctrl-D> 08 EOF 00 luis@el_chaman ~ $ cd 01 luis@el_chaman ~ $ ls -l /bin > ejecutables_en_bin.txt Parece que nos hemos atascado, compañeros 02 luis@el_chaman ~ $ ls ejecutables_en_bin.txt padawanes. Cada vez que le damos a ENTER el gatito 03 ejecutables_en_bin.txt este se empeña en repetir lo que hemos escrito. 04 luis@el_chaman ~ $ Muy bien. Para salir de esta pesadilla lo que tenemos que hacer es presionar la combinación Ctrl-D ( Tras teclear lo arriba mostrado, habremos generado Control + D) si estamos al principio de una línea o un archivo de texto que contiene un listado de los Ctrl-D, Ctrl-D (dos veces) si estamos al final. Esto archivos contenidos en el directorio /bin. Para que insertará el carácter fin de archivo (EOF, end of file) nos hagamos una idea de lo que contendrá ese con lo que habremos terminado. archivo, basta con que volvamos a ejecutar el comando pero sin redireccionar ahora la salida: Bueno, hemos visto que todo lo que escribíamos se mandaba a la salida estándar. ¿Qué ocurriría si 00 luis@el_chaman ~ $ cd redireccionamos las salida estándar a un fichero?: 01 luis@el_chaman ~ $ ls -l /bin 00 luis@el_chaman ~ $ cat > nuevo_fichero.txt Ahora bien; ¿cómo podemos ver el contenido del 01 Hola, esto es una prueba. Ahora doy a ENTER archivo?. De nuevo existirán varias maneras; listo 02 y sigo en la siguiente línea. algunas pero nos quedaremos con la última por ser 03 ¿Cómo salgo de aquí por Dios? la más potente: 04 <Ctrl-D> 00 luis@el_chaman ~ $ more ejecutables_en_bin.txt Bueno, parece que el gato este ahora no es tan 01 luis@el_chaman ~ $ less ejecutables_en_bin.txt respondón. Pulsamos de nuevo Ctrl-D y veremos 03 luis@el_chaman ~ $ cat ejecutables_en_bin.txt que volvemos al prompt del sistema. 5.1.- cat: Sobre gatos y otros bichos 00 luis@el_chaman ~ $ 01 luis@el_chaman ~ $ cat nuevo_fichero.txt El comando cat es uno de los más simples, útiles y 02 Hola, esto es una prueba. Ahora doy a ENTER versátiles comandos de los que disponemos en 03 y sigo en la siguiente línea. GNU/LiNUX. Para que os hagáis una idea: ¿Cómo 04 ¿Cómo salgo de aquí por Dios? creo una imagen ISO de un CDROM? ¿Nero? ¿Algo 05 luis@el_chaman ~ $ similar? Agárrense vuesas mercedes los machos y dispongan a asombrarse: Bueno, lo que hemos hecho es utilizar ahora cat PC PASO A PASO Nº 9 Página 9
  • 10. GNU - LINUX (II) SISTEMA DE ARCHIVOS ---- GNU - LINUX (II) SISTEMA DE ARCHIVOS como visualizador. Simplemente hemos tecleado cat 09 Este es un texto modosito que hacemos para nuevo_fichero.txt y el gatito nos muestra el contenido probar una cosa. Versión dos. de dicho fichero. Si quisiéramos añadir más texto 10 luis@el_chaman ~ $ teclearíamos: Como vemos cat se ha encargado en la línea 06 los 00 luis@el_chaman ~ $ cat >> nuevo_fichero.txt archivos otro_fichero1.txt y otro_fichero2.txt mandando 01 Este es texto añadido el contenido al fichero otro_fichero3.txt. 02 <Ctrl-D> 03 luis@el_chaman ~ $ cat nuevo_fichero.txt 5.2.- Creando directorios 04 Hola, esto es una prueba. Ahora doy a ENTER 05 y sigo en la siguiente línea. Para crear un nuevo directorio tendremos que usar 06 ¿Cómo salgo de aquí por Dios? el comando mkdir. La sintaxis de este comando es 07 Este es texto añadido. mkdir <nombre> donde <nombre> es el nombre que 08 luis@el_chaman ~ $ queremos dar al directorio: Es decir, un único comando de sistema nos puede 00 luis@el_chaman ~ $ ls servir de editor de supervivencia. Eso sí, su uso 01 artículoshxc cosa multimedia requiere de mucho cuidado. Fijémonos en la línea nuevo_fichero.txt otro_fichero1.txt 00. La redirección ha sido sustituida por unos >>. 02 otro_fichero2.txt otro_fichero3.txt Esto quiere que la redirección se comporta como public_html antes pero que añade texto al texto existente. Si 03 luis@el_chaman ~ $ mkdir ejercicios_hxc sólo pusiéramos un único > sustituiría el antiguo 04 luis@el_chaman ~ $ ls texto por el nuevo (se recomienda experimentar 05 artículoshxc cosa ejercicios_hxc con esto). multimedia nuevo_fichero.txt otro_fichero1.txt 06 otro_fichero2.txt otro_fichero3.txt public_html Bueno, y podríamos decir que ya hemos terminado con el gatito. Bueno, alguien se preguntará el 5.3.- Moviendo y copiando archivos, porqué de que me haya estado refiriendo constantemente a este comando como el gatito. La mareando la perdiz razón es que cat en inglés significa gato. Vale, la tontería del número nueve. ¿Pero por qué demonios A menudo necesitaremos mover o copiar archivos. llaman a un comando gato? ¿ Por qué no perro, Cabe destacar que el término mover en informática asno,....? Bueno la razón de ello es que cat NO se refiere a realizar una copia de un elemento significa gato. El significado de este comando es de borrando el original. Copiar, por el contrario, se nuevo una abreviatura que corresponde a la palabra refiere a hacer una copia conservando el elemento inglesa concatenate, concatenar. Y esto es porque original. este comando se construyó para concatenar (unir) Los comandos que tenemos para mover y copiar archivos. Veamos a cat en acción en el terreno que son respectivamente: mejor domina: la concatenación: mv <origen> <destino> 00 luis@el_chaman ~ $ cat > otro_fichero1.txt cp <origen> <destino> 01 Este es un texto modosito que hacemos para probar una cosa. Versión uno Vamos a ver algunos ejemplos de uso: 02 <Ctrl-D> 03 luis@el_chaman ~ $ cat > otro_fichero2.txt 01 luis@el_chaman ~ $ ls 04 Este es un texto modosito que hacemos para 02 artículoshxc cosa ejercicios_hxc probar una cosa. Versión dos. multimedia nuevo_fichero.txt otro_fichero1.txt 05 <Ctrl-D> 03 otro_fichero2.txt otro_fichero3.txt 06 luis@el_chaman ~ $ cat otro_fichero1.txt public_html otro_fichero2.txt > otro_fichero3.txt 04 luis@el_chaman ~ $ mv ejercicios_hxc ejercicioshxc 07 luis@el_chaman ~ $ cat otro_fichero1.txt 05 luis@el_chaman ~ $ ls 08 Este es un texto modosito que hacemos para 06 atículoshxc cosa ejercicioshxc probar una cosa. Versión uno multimedia nuevo_fichero.txt otro_fichero1.txt Página 10 PC PASO A PASO Nº 9
  • 11. GNU - LINUX (II) SISTEMA DE ARCHIVOS ---- GNU - LINUX (II) SISTEMA DE ARCHIVOS 07 otro_fichero2.txt otro_fichero3.txt multimedia nuevo_fichero.bck public_html public_html 09 luis@el_chaman ~ $ ls ejercicioshxc 08 luis@el_chaman ~ $ cp nuevo_fichero.txt 10 cosa multimedia nuevo_fichero.bck nuevo_fichero.bck nuevo_fichero.txt otro_fichero1.txt otro_fichero2.txt 09 luis@el_chaman ~ $ ls otro_fichero3.txt 10 artículoshxc cosa ejercicioshxc 11 luis@el_chaman ~ $ multimedia nuevo_fichero.txt nuevo_fichero.bck 11 otro_fichero1.txt otro_fichero2.txt En la línea 01 movemos el directorio cosa (y todo lo otro_fichero3.txt public_html que contenga) al directorio ejercicioshxc, quedando dentro de este. En 06 sin embargo hacemos una copia de multimedia y todo lo que contenga En la línea 04 lo que hacemos es mover el directorio recursivamente y la situamos dentro de ejercicioshxc. que creamos anteriormente; equivale a renombrarlo. Obsérvese el parámetro -R (de recursive, recursivo) En la línea 08 realizamos una copia de que es el que indica que se debe de copiar el nuevo_fichero.txt a nuevo_fichero.bck. directorio y todo sus contenidos (incluyendo posibles subdirectorios). Podemos consultar más parámetros El uso común de estos comandos suele ser utilizarlos de mv o cp tecleando man mv o man cp junto con comodines. Los comodines son una serie de caracteres especiales que sustituyen partes del 5.4.- Borrando archivos y directorios: nombre de un archivo (*) o letras del mismo (?). Jugamos con fuego. Así los siguientes comandos: Antes de nada asegurémonos que no estamos como 01 luis@el_chaman ~ $ cp * /tmp usuario root (administrador) dado que si metemos 02 Omitiendo artículoshxc: Es un directorio la pata y borramos algo que no debemos la cosa 03 Omitiendo cosa: Es un directorio tendrá difícil solución. Sin embargo si un usuario 04 Omitiendo ejercicioshxc: Es un directorio normal intentase borrar archivos delicados para el 05 Omitiendo multimedia: Es un directorio sistema, éste no le dejaría. En próximos apartados 06 Omitiendo public_html: Es un directorio veremos la razón de esto. 07 luis@el_chaman ~ $ mv *.txt ejercicioshxc 08 luis@el_chaman ~ $ cp *.bc? ejercicioshxc El comando por antonomasia para el borrado es rm (de remove, eliminar) cuya sintaxis es: rm <nombre> En la línea 01, copiamos TODOS los archivos (no donde nombre es el nombre de archivo a borrar. Al directorios) que hay en el directorio de trabajo al igual que cp y mv admite comodines lo cual puede directorio /tmp. En la línea 07 movemos todos los resultar peligroso. Veamos algunos ejemplos: archivos que terminen en .txt al directorio ejercicioshxc y en la línea 08 copiamos todos los archivos que 01 luis@el_chaman ~ $ cd ejercicioshxc terminen en .bc? siendo ? cualquier carácter (por 02 luis@el_chaman ~/ejercicioshxc $ ls ejemplo nuevo_fichero.bck o mikasa.bcx). 03 cosa multimedia nuevo_fichero.txt nuevo_fichero.txt otro_fichero1.txt otro_fichero2.txt Podemos así mismo mover directorios a otra otro_fichero3.txt ubicación o copiar estructuras enteras de directorios: 04 luis@el_chaman ~/ejercicioshxc $ rm nuevo_fichero.txt 01 luis@el_chaman ~ $ mv cosa ejercicioshxc 05 luis@el_chaman ~/ejercicioshxc $ ls 02 luis@el_chaman ~ $ ls 06 cosa multimedia nuevo_fichero.bck 03 artículoshxc ejercicioshxc multimedia otro_fichero1.txt otro_fichero2.txt otro_fichero3.txt nuevo_fichero.bck public_html 07 luis@el_chaman ~/ejercicioshxc $ rm otro_* 04 luis@el_chaman ~ $ ls ejercicioshxc 08 luis@el_chaman ~/ejercicioshxc $ ls 05 cosa nuevo_fichero.bck nuevo_fichero.txt 09 cosa multimedia nuevo_fichero.bck otro_fichero1.txt otro_fichero2.txt otro_fichero3.txt 10 luis@el_chaman ~/ejercicioshxc $ 06 luis@el_chaman ~ $ cp multimedia ejercicioshxc - R Una manera segura de utilizar siempre el comando 07 luis@el_chaman ~ $ ls rm es añadirle el parámetro -i. Esto hará que cada 08 artículoshxc ejercicioshxc vez que queramos borrar un determinado archivo PC PASO A PASO Nº 9 Página 11
  • 12. GNU - LINUX (II) SISTEMA DE ARCHIVOS ---- GNU - LINUX (II) SISTEMA DE ARCHIVOS nos pregunte si realmente queremos hacerlo o no: directorio (podría ser perfectamente un archivo normal) multimedia. El primer luis significa el 01 luis@el_chaman ~/ejercicioshxc $ ls propietario del archivo/directorio y el segundo usr 02 cosa multimedia nuevo_fichero.bck representa al grupo de usuarios al que pertenece el 03 luis@el_chaman ~/ejercicioshxc $ rm -i archivo/directorio. nuevo_fichero.bck 04 rm: ¿ borrar "nuevo_fichero.bck"? (s/n) n 6.1.- Cambiando propietarios. 05 luis@el_chaman ~/ejercicioshxc $ Imaginemos la siguiente situación: deseamos que Esta opción viene en muchos sistemas activada por un archivo del ordenador pase a pertenecer a otra defecto para el usuario root. persona: Para eliminar directorios emplearemos el comando rmdir cuya sintaxis es rmdir <nombre_directorio>. 01 luis@el_chaman ~/ejercicioshxc $ cd Antes de poder eliminar un directorio nos debemos /usr/share/pixmaps de asegurar de que este esté vacío: 02 luis@el_chaman /usr/share/pixmaps $ ls -l 03 -rw-r--r-- 1 pepe raros 4,0K 2003-04-15 23:00 01 luis@el_chaman ~/ejercicioshxc $ rmdir cosa logo.png 02 rmdir: cosa: El directorio no está vacío 03 luis@el_chaman ~/ejercicioshxc $ rm cosa/* En el directorio /usr/share/pixmaps tenemos un archivo 04 luis@el_chaman ~/ejercicioshxc $ rmdir cosa llamado logo.png que pertenece al usuario pepe y al grupo raros. Queremos cambiar el propietario a luis En ocasiones esta manera de borrar un directorio y el grupo a users. Lo tendremos que hacer como puede resultar extremadamente tediosa, sobre todo root: si el directorio a borrar contiene múltiples niveles de subdirectorios. Para poderlo hacer con un único 01 luis@el_chaman ~/ejercicioshxc $ su -- comando emplearemos las opciones -r (recursive) 02 Password: y -f (force) del comando rm: 03 root@el_chaman/usr/share/pixmaps $ chown luis.users logo.png 01 luis@el_chaman ~/ejercicioshxc $ rm -rf cosa 04 root@el_chaman /usr/share/pixmaps $ ls -l 05 -rw-r--r-- 1 luis users 4,0K 2003-04-15 23:00 Mucho cuidado con este comando. Imaginaos que logo.png ocurre si como root ejecutamos En el ejemplo se cambia a la vez el grupo y el rm -rf /. No ejecutar directorio. Sería posible cambiar por separado el usuario y el grupo. Ejemplos que hacen esto serían: 6.- Permisos y propietarios de los chown luis logo.png, ficheros chown .users logo.png. Todos y cada uno de los archivos y directorios de 6.2.- Permisos. un sistema GNU/LiNUX poseen permisos. Podremos cambiar los permisos y en ocasiones los propietarios Observemos un momento la siguiente tabla. En ella de nuestros archivos con el fin de proporcionar se nos muestra la notación binaria denominada octal mayor o menor grado de acceso a los mismos. Los debido a que puede mostrar ocho valores distintos. permisos también determinan si los archivos pueden ejecutarse como un comando o no. Ahora analicemos un momento la salida que nos dio Si tecleamos ls -l, veremos una salida similar a esta: la ejecución del comando ls -l anteriormente ejecutado: 01 luis@el_chaman ~/ejercicioshxc $ ls -l 02 drw-r--r-- 1 luis usr 4,0K 2003-04-15 05 -rw-r--r-- 1 luis users........... 23:00 multimedia Agrupemos ahora esa cadena de erres, guiones y La cadena drw-r--r-- representa los permisos del uves doble en grupos de tres comenzando por la Página 12 PC PASO A PASO Nº 9
  • 13. GNU - LINUX (II) SISTEMA DE ARCHIVOS ---- GNU - LINUX (II) SISTEMA DE ARCHIVOS izquierda. Obtendremos algo parecido a: un significado muy distinto para un directorio. Os rwx invito a que investiguéis qué sucede si damos permiso rw- permisos para el propietario al que pertenece de ejecución o no a un directorio. Utilizad dos el archivo usuarios distintos que pertenezcan a distintos grupos. r-- permisos para el grupo al que pertenece el Ya me contaréis vuestras experiencias ;o) archivo r-- permisos para el resto de los usuarios 7.- Conclusiones r: permiso de lectura Una vez más nos quedamos cortos de espacio y w: permiso de escritura muchas cosas en el tintero. Aún así espero haber x: permiso de ejecución sintetizado lo más importante de los sistemas de -: sin permiso archivos bajo entornos UNíX. Teniendo esta información en mente, veamos que Quede como comentario final que debido al espacio sucede cuando cambiamos los permisos de un no se ha podido comentar en profundidad la finalidad archivo: de cada uno de los directorios. Afortunadamente esta es una información bastante sencilla de 01 root@el_chaman /usr/share/pixmaps $ ls -l encontrar: http://www.pathname.com/fhs/2.2/ En esta 02 -rw-r--r-- 1 luis users 4,0K 2003-04-15 23:00 página se nos muestra el Filesystem Hierarchy logo.png Standard ( Jerarquía Estándar del Sistema de 03 root@el_chaman /usr/share/pixmaps $ exit Archivos) o dicho de otra manera: Qué va en cada 04 luis@el_chaman /usr/share/pixmaps $ chmod 755 directorio, cuántos directorios puedo encontrarme logo.png en un sistema UNiX , qué puedo esperar encontrarme 05 luis@el_chaman /usr/share/pixmaps $ ls -l en cada uno de ellos, etc..... 06 -rwxr-xr-x 1 luis users 4,0K 2003-04-15 23:00 logo.png Una vez leáis esa página comprenderéis el porqué Vemos como han cambiado los permisos del archivo, de la omisión de tan interesante apartado (y vital ahora bien, ¿cómo lo hemos hecho? ¿Qué significa para el tema que tratamos). ese extraño número que he puesto? Fijémonos ahora en la tabla adjunta. Concretamente en los números Saludos. binarios. Imaginemos que los 1s activan permisos i los 0s los cancelan. Como tenemos que asignar a cada grupo de permisos (propietario, grupo y resto de usuarios) un valor para lectura, escritura y ejecución, lo haremos aplicando a los tres posibles p e r m i s o s u n a m á s c a ra . A s í t e n d r e m o s : máscara Inicial Dec Bin Resultado (Fig 1) Propietario rwx 7 111 rwx Grupo rwx 5 101 r-x Resto rwx 5 101 r-x Observamos que al escribir chmod 755 archivo, lo EL GANADOR DEL que hacemos es pasar una máscara binaria a los SORTEO DE UN SUSE posibles permisos activándolos o desactivándolos LINUX 8.2 DEL MES DE para el archivo. Sólo podremos cambiar los permisos FEBRERO ES: de un archivo si poseemos permiso de escritura sobre él. OSCAR PONS MARTI MENORCA Los permisos pueden ser modificados tanto en SEGUIR LLAMANDO, EL PROXIMO archivos como en directorios teniendo en cuenta PODRIA SER PARA TI (PAG 66) que el concepto de "permiso de ejecución" posee PC PASO A PASO Nº 9 Página 13
  • 14. SERVIDOR DE HXC MODO DE EMPLEO - Hack x Crack ha habilitado un servidor para que puedas A partir de ese momento, cualquiera que acceda a ese realizar las prácticas de hacking. servidor, verá el default.htm modificado para vergüenza del “site” hacheado. Esto es muy genérico pero os dará - Actualmente tiene el BUG del Code / Decode y lo una idea de cómo funciona esto de hackear Webs ;) dejaremos así por un tiempo (bastante tiempo ;) Nuestra intención es ir habilitando servidores a medida que os - Cuando accedas a nuestro servidor mediante el CODE / enseñemos distintos tipos de Hack, pero por el momento DECODE BUG, crea un directorio con tu nombre (el que con un Servidor tendremos que ir tirando (la economía no mas te guste, no nos des tu DNI) en la unidad d: a ser da para mas). posible (que tiene mas espacio libre) y a partir de ahora - En el Servidor corre un Windows 2000 Advanced Server utiliza ese directorio para hacer tus prácticas. Ya sabes, con el IIS de Servidor Web y está en la IP 80.36.230.235. subirnos programitas y practicar con ellos :) - El Servidor tiene tres unidades: Puedes crearte tu directorio donde quieras, no es necesario * La unidad c: --> Con 2GB que sea en d:mellamojuan. Tienes total libertad!!! Una * La unidad d: --> Con 35GB y Raíz del Sistema idea es crearlo, por ejemplo, en * La unidad e: --> CD-ROM d:winntsystem32defaultmellamojuan (ya irás aprendiendo que cuanto mas oculto mejor :) Nota: Raíz del Servidor, significa que el Windows Advanced Server está instalado en esa unidad (la unidad d:) y Es posiblemente la primera vez que tienes la oportunidad concretamente en el directorio por defecto winnt de investigar en un servidor como este sin cometer un Por lo tanto, la raíz del sistema está en d:winnt delito (nosotros te dejamos y por lo tanto nadie te perseguirá). Aprovecha la oportunidad!!! e investiga mientras - El IIS, Internet Information Server, es el Servidor de dure esta iniciativa (que esperamos dure largos años) páginas Web y tiene su raíz en d:inetpub (el directorio por defecto) - En este momento tenemos mas de 600 carpetas de peña que, como tu, está practicando. Así que haznos caso y Nota: Para quien nunca ha tenido instalado el IIS, le será crea tu propia carpeta donde trabajar. extraño tanto el nombre de esta carpeta (d:inetpub) cómo su contenido. Pero bueno, un día de estos os enseñaremos a instalar vuestro propio Servidor Web y detallaremos su funcionamiento. De momento, lo único que hay que saber es que cuando TÚ pongas nuestra IP (la IP de nuestro servidor) en tu navegador, lo que estás haciendo realmente es ir al ! MUY IMPORTANTE... directorio d:Inetpubwwwroot y leer un archivo llamado default.htm. Nota: Como curiosidad, te diremos que APACHE es otro MUY IMPORTANTE!!!!! Por favor, no borres archivos Servidor de páginas Web (seguro que has oído hablar de él). Si tuviésemos instalado el apache, cuando pusieses del Servidor si no sabes exactamente lo que estás haciendo ni nuestra IP en TU navegador, accederías a un directorio borres las carpetas de los demás usuarios. Si haces eso, lo único raíz del Apache (donde se hubiese instalado) e intentarías leer una página llamada index.html que consigues es que tengamos que reparar el sistema servidor y, mientras tanto, ni tu ni nadie puede disfrutar de él :( Explicamos esto porque la mayoría, seguro que piensa en un Servidor Web como en algo extraño que no saben ni Es una tontería intentar “romper” el Servidor, lo hemos puesto donde está ni como se accede. Bueno, pues ya sabes para que disfrute todo el mundo sin correr riesgos, para que todo dónde se encuentran la mayoría de IIS (en Inetpub) y cuál es la página por defecto el mundo pueda crearse su carpeta y practicar nuestros ejercicios. (Inetpubwwwrootdefault.htm). Y ahora, piensa un poco… En el Servidor no hay ni Warez, ni Programas, ni claves, ni nada … ¿Cuál es uno de los objetivos de un hacker que quiere decirle al mundo que ha hackeado una Web? Pues está de nada que “robar”, es un servidor limpio para TI, por lo tanto claro, el objetivo es cambiar (o sustituir) el archivo default.html por uno propio donde diga “hola, soy DIOS cuídalo un poquito y montaremos muchos más :) y he hackeado esta Web” (eso si es un lamer ;) Página 14 PC PASO A PASO Nº 9
  • 15. APACHE Parte III : Configuracion - Comparte tus ficheros mediante web Bienvenidos de nuevo. En el número anterior se explicó los comandos básicos de Apache, se comentó con ejemplos las principales directivas que hacen funcionar el servidor Apache y se aplicó todo lo aprendido para poder compartir ficheros mediante HTTP sin necesidad de programas externos. Este capítulo está dividido en dos partes, en la primera parte profundizaremos en algunos módulos y en la segunda parte comenzaremos a crear servidores virtuales. ¿tienes curiosidad de saber qué es todo esto?, ... ya verás. 1. Los módulos de Apache. qué hacen para luego entender la práctica que vamos a realizar. Un módulo de Apache es un componente que añade funcionalidad al servidor. Existen mod_auth_anon: permite a usuarios diferentes módulos y pueden ser configurables. anónimos acceder a áreas autentificadas. Es necesario que sepas que puedes crear un módulo programado en C y adaptar el servidor mod_auth_dbm: proporciona autentificación Apache a tus necesidades. En la red encontrarás utilizando ficheros DBM. infinidad de módulos realizados por programadores independientes. mod_auth_digest: autentificación de usuario utilizando MD5. Los módulos se pueden clasificar en 3 mod_cern_meta: Semántica de etiquetas categorías: meta del CERN. 1. Módulos base: Son los módulos con las mod_expires: Generación de las cabeceras funcionas básicas de Apache. http Expires, de acuerdo de los criterios especificados por el usuario. 2. Módulos multiproceso: son los responsables de la unión con los puertos del ordenador. mod_headers: personalización de las peticiones HTTP y las cabeceras de las 3. Módulos adicionales: cualquier otro módulo respuestas. que añade funcionalidad pero no es estrictamente necesario para el funcionamiento mod_info: proporciona una visión comprensiva del Apache. de la configuración del servidor. ¿Dónde se encuentran los módulos adicionales?, mod_mime_magic: determina el tipo MIME los localizarás en c:apachemodules de un fichero mirando unos pocos bytes del contenido. Apache instala por defecto los siguientes módulos, es necesario que sepáis por lo menos mod_proxy: servidor HTTP/1.1 proxy/gateway. PC PASO A PASO Nº 9 Página 15
  • 16. APACHE - CONFIGURACION - SERVIDOR DE ARCHIVOS VIA WEB mod_rewrite: proporciona un motor de todas las instalaciones requieren de "Virtual reescritura basado en reglas que rescribe las Hosting". peticiones de URL's al vuelo. Por lo tanto si fueran incluidas todas las mod_speling: intenta corregir las URL funcionalidades posibles en una versión única mal puestas por los usuarios, ignorando de Apache, lo haría sumamente pesado en las mayúsculas y permitiendo hasta una cuanto a requerimientos de Memoria RAM y falta. espacio en Disco Duro, por esto se opta por "modularizar" e incluir solo lo necesario. mod_status: proporciona información en la actividad y rendimiento del servidor. De momento, simplemente vamos a quedarnos con la idea de que estos módulos añaden mod_unique_id: proporciona variables de funcionalidad al Servidor Web y que algunos entorno y un identificador único para cada de ellos son instalados por defecto. petición. Ahora queremos averiguar cuales son los mod_usertrack: registro de actividad de un módulos que están funcionando por defecto usuario en el sitio. en nuestro Servidor Web. Abrimos una consola MSDOS y ponemos el comando de sistema mod_vhost_alias: Proporcionado para APACHE –l, y aparecerá un listado de los configurar muchos servidores virtuales módulos que están funcionando. Lo que hace dinámicamente. el parámetro –l es abrir el archivo de configuración httpd.conf y busca los módulos que debe cargar Apache al iniciarse. ! DMB, MD5... DMB, MD5, CERN, Cabeceras HTTP Expires, MIME … Si eres profano en la materia, seguro que todo eso te suena a "Klingoniano". No te preocupes, ya sabes que cuando necesitamos conocer un término/concepto para la comprensión de un artículo siempre lo explicamos a lo largo del mismo. Algunos de estos términos abarcan temas bastante extensos y no es necesario explicarlo en este momento puesto que NO IMPIDEN la comprensión de este artículo, pero te recomendamos que cuando tengas un par de horas libres "curiosees" en el mejor buscador que existe actualmente www.google.com y hagas una "toma de contacto" con ellos. Por cierto, si quieres aprender klingon puedes acudir a The Klingon Language Institute (http://www.kli.org/) ;p Una de las principales razones de emplear módulos en Apache, es que no toda instalación requiere de las mismas funcionalidades, no Página 16 PC PASO A PASO Nº 9
  • 17. APACHE - CONFIGURACION - SERVIDOR DE ARCHIVOS VIA WEB 2. Listar contenido de los estos módulos puede provocar que Apache directorios liste el contenido de sus directorios. Así de simple. Lógicamente los señores de Apache está considerado como uno de los Apache solucionaron el problema cuando servidores web más estables que existen e fue descubierto, pero aún quedan muchos infinitamente más seguro que el servidor IIS servidores Apache con este problema. de Microsoft. Aún así tiene algunos fallos, ¿no Las versiones hasta 1.3.19 inclusive son te lo crees?. vulnerables a este ataque. Apache necesita utilizar módulos adicionales ¿Es válida cualquier cadena?, no. Tiene que para mostrar contenido dinámico, y en estos ser una cadena de barras inclinadas y la módulos es donde podemos encontrar los fallos, longitud es variable. Así que no tenemos recuerda que cuantos más módulos se instalen más remedio que hacer pruebas hasta más probabilidad hay de tener agujeros de que Apache liste el directorio. Si consideramos seguridad. que Apache admite una URL de 8000 caracteres como máximo, podemos listar En el número anterior se explico cómo Apache el contenido en un par de minutos si nos puede listar el contenido del directorio, siempre creamos un programa que genere URLs con que nosotros configuremos el archivo httpf.conf barras inclinadas. para ello. Aún configurando este archivo para que no liste el contenido de los directorios El código es muy sencillo y supongo que podemos saber los archivos alojados en todos estás aprendiendo Visual Basic gracias al los directorios, incluso en aquellos directorios curso de HackxCrack, en los números que tienen una página Index. anteriores del curso de Visual Basic encontrarás Vamos a explicar dos formas de obtener el todo lo necesario para crear el programa. contenido de los directorios, el primer método De todos modos, colocaremos un sencillo será utilizando un gran número de barras programa que hemos realizado para inclinadas y el segundo método utilizando un aquellos que no quieran calentarse la cabeza. bug del módulo Multiview. Al finalizar cada No estaría mal que cada uno de vosotros método daremos respuesta a como evitar que hiciera una versión y la publicara en el foro, seamos víctimas de estos ataques. ¿os atrevéis? Listado del directorio utilizando barras Un ejemplo de cadena válida si queremos inclinadas. saber el contenido del directorio http://www.hackxcrack.com/cgi- Cuando realizamos una petición a un servidor bin//////////////////////////////////// (funcionaría en Apache, la URL es procesada por varios el caso de que el servidor fuese la versión módulos, entre ellos mod_negotiation.c, 1.3.19 o anterior) mod_include.c, mod_autoindex.c, estos módulos se encuentran compilados en la versión Pero antes de que os pongáis como locos a predeterminada de Apache, es decir, que estos poner barras inclinadas es necesario módulos están instalados y activos en la mayoría que averigüéis la versión de Apache. En de los servidores Apache. el capítulo anterior se explicaron varias formas de saber remotamente la versión de Cuando se pasa una URL de gran longitud por Apache. PC PASO A PASO Nº 9 Página 17
  • 18. APACHE - CONFIGURACION - SERVIDOR DE ARCHIVOS VIA WEB ! Hemos utilizado la ... Hemos utilizado la IP 127.0.0.1 y puerto 80 porque se Os vamos a explicar otra forma de identificar supone que has seguido nuestro curso y en este momento el servidor web, a modo de culturilla el tienes corriendo el apache en tu sistema en el localhost procedimiento de identificar el servidor se le (127.0.0.1) y puerto 80. Si no, ya sabes, al final de la revista llama “captura de mensajes” o “banner tienes el índice de los números anteriores publicados y te grabbing”. Recordar que no siempre vamos a indica cómo conseguirlos y, por si no lo sabes, tienes en poder capturar esta información, el servidor la Web el Número 1 de Hack x Crack GRATIS en formato web tiene que tener la especificación HTTP 1.1 PDF… ¿alguien da más? ;p (RFC 2616), que envía la información que buscamos en los encabezados. Solución al problema de las barras invertidas ! En esta ocasión... Tenemos dos soluciones: actualizar el servidor En esta ocasión vamos a utilizar el todopoderoso programa web Apache a una versión mayor a 1.3.19 o netcat, esta aplicación ya ha sido explicada y utilizada en modificar el fichero de configuración. prácticas anteriores de otros artículos de HxC. Solucionar el problema mediante el archivo de configuración es muy sencillo, abrimos con el Abre una venta de MSDOS y pon lo siguiente: bloc de notas el archivo httpd.conf y buscamos nc –nvv 127.0.0.1 80 las siguientes líneas: tras el mensaje que aparece escribe: AddModule mod_autoindex.c HEAD / HTTP/1.0 AddModule mod_dir.c [Pon dos retornos de carro, es decir, pulsa el botón Return dos veces] Estas líneas son las encargadas de añadir los módulos al iniciarse Y verás la información del servidor. el Apache, simplemente pon las Lo importante es conocer distintas formas almohadillas delante y de averiguar la información, si estás en un graba el archivo. cibercafe y no dispones del netcat pues sabes que poniendo utiliza el telnet o cualquier herramienta almohadillas delante online como transformas la línea dnsstuff.com o (instrucción/comando) n e t c ra f t . c o m , en un simple texto además estas (comentario), ya lo herramientas explicamos en online tienen una anteriores números. ventaja y es que el servidor #AddModule mod_autoindex.c consultado no # A d d M o d u l e m o d _ d i r. c registrará tu IP ;) Página 18 PC PASO A PASO Nº 9
  • 19. APACHE - CONFIGURACION - SERVIDOR DE ARCHIVOS VIA WEB Como podemos ver con AddModule un servidor con este error. Pero no está mal configuramos el servidor para que cargue los saberlo, ¿no crees? módulos y así obtener nuevas funcionalidades, en este caso hemos quitado la funcionalidad Módulo de configuración de mostrar el contenido de los directorios de “mod_info.c” manera radical. Tienes que tener en cuenta que ya no podremos compartir archivos si El módulo mod_info.c permite saber la hemos anulado estos módulos. configuración del servidor Apache, es información estática pero de gran valor para ! Siempre que ... consultar como está configurado de manera remota. Lógicamente el módulo mod_info.c no está activado de manera predeterminada. Los Siempre que sea posible se recomienda actualizar la versión grandes servidores web, empresas de hosting, del programa afectado por un bug, cualquier otra solución ... suelen tener activado este módulo para como la explicada es válida pero suele tener consecuencias: conocer el estado de la configuración del servidor una limitación en los accesos, anulación de funciones, etc. y ya podemos suponer que a muchos administrados se les olvida proteger o anular el acceso a los usuarios no permitidos Listado de directorios con Multiview El módulo mod_info da una visión general de la configuración del servidor bastante amplia, Existe otro bugs que ya ha sido corregido pero incluyendo los módulos y directrices. que aún nos lo podemos encontrar en algunos servidor Apache, es un error del parámetro Vamos a realizar una práctica de cómo ponerlo Multiview que permite negociar el contenido en marcha para nuestro uso personal. basándose en el lenguaje del documento. Lo primero que hacemos es abrir el fichero de Este parámetro no está activo de manera configuración httpd.conf y buscamos la cadena predeterminada así que es más difícil que lo #LoadModule info_module encontremos en el servidor de la victima, pero modules/mod_info.so , esta cadena dice al nunca se sabe, ¿verdad?. Apache que lea el módulo mod_info.so, le quitamos la almohadilla (#) para que realmente Este parámetro puede estar colocado de la sea leído. Ahora buscamos la cadena siguiente forma: #AddModule mod_info.c y también le quitamos la almohadilla (#), con addmodule Options FollowSymLinks MultiViews le decimos a Apache que añada el módulo mod_info.c ¿Cómo podemos listar el contenido del directorio utilizando el bugs de MultiViews?, es tan sencillo como colocar una URL en el navegador o en ! Como has ... el netcat, por ejemplo: http://127.0.0.1/mp3?M=D, fíjate que finaliza Como has podido comprobar para que Apache tenga en con ?M=D. cuenta un módulo primero hay que indicarle que lea el módulo para después sea añadido. Recuerda que son dos Esta manera de ver el contenido del directorio pasos "LoadModule y AddModule". no es muy eficaz y es raro de que encuentres PC PASO A PASO Nº 9 Página 19
  • 20. APACHE - CONFIGURACION - SERVIDOR DE ARCHIVOS VIA WEB Ya queda poco, ahora tenemos que abrir el * Para información de la configuración de los archivo access.conf que lo encontrarás en el módulos pondremos una dirección tipo mismo directorio que el archivo de configuración http://127.0.0.1/infoservidor?nombre_ httpd.conf. del_módulo, por ejemplo: --->http://127.0.0.1/infoservidor?mod_info.c Este archivo también de configuración se utiliza para acceder a los permisos de los archivos, * Para obtener la información de los módulos directorios y script del sitio creado. Es un que se están utilizando: archivo de apoyo, el contenido de este archivo --->http://127.0.0.1/infoservidor?list podría estar perfectamente en httpd.conf, pero para no terminar teniendo un mega archivo de configuración se divide la configuración en otros dos archivos (access.conf y srm.conf). De momento nos quedamos con httpd.conf y access.conf, el primero es el archivo principal de configuración y el segundo sirve de apoyo cuyo contenido es definir permisos. Continuamos con la práctica, abrimos el archivo access.conf (seguramente estará vacío) y ponemos las siguientes líneas: <location /infoservidor> SetHandler server-info </location> Reiniciamos el servidor Apache Por último decir que infoservidor puede ser (Apache –k cambiado por cualquier otra palabra como info, restart) y info-servidor, info-server, admin, configure... ponemos en el No estaría mal crear un programa cuyo objetivo navegador la sea buscar la url de acceso a la configuración siguiente URL: del servidor Apache si es que tiene activado el módulo mod_info.c, ¿alguien se atreve?, con ---> http:// lo aprendido aquí y en el curso de Visual Basic 1 2 7 . 0 . 0 . 1 sería suficiente para crear el programa, lo ideal /infoservidor sería utilizar un diccionario, ¿algún valiente? El resultado es una página con toda la ! Pásate por el foro ... información de la configuración del Pásate por EL FORO de la revista (www.hackxcrack.com) servidor Apache. y podrás conversar con los lectores y colaboradores de PC Paso a Paso (Los Cuadernos de Hack x Crack). A estas * Para acceder únicamente a la información alturas ya formamos una peña de más de 2000 "socios". del servidor ponemos: Te estamos esperando!!! ;) ---> http://127.0.0.1/infoservidor?server Página 20 PC PASO A PASO Nº 9
  • 21. APACHE - CONFIGURACION - SERVIDOR DE ARCHIVOS VIA WEB Módulo de estado del servidor </location> Apache ofrece otro módulo de gran valor Recuerda que podemos cambiar estado-apache para conocer mediante URL el estado del por otra palabra como estado, infoestado , ... servidor web. Si es accesible mediante pero para la práctica ponemos estado-apache. URL quiere decir que podemos acceder a esta información de otros servidores si Reiniciamos de nuevo el servidor Apache tienen activado este módulo. Para nosotros mediante Apache –k restart. será de vital importancia para conocer si el servidor Apache necesita más recursos. La información que podemos consultar es la siguiente: · Hora actualizada de sistema del servidor. · Hora del último reinicio del servidor. · Tiempo que ha pasado desde que se encendió el servidor. · Número total de accesos que han tenido lugar desde entonces. · Bytes totales transmitidos. Para acceder al estado del servidor colocamos: · Número total de los thread dedicados http://127.0.0.1/estado-apache a atender peticiones. · Número total de thread. · Estado de cada thread, número de peticiones que ha atendido cada uno. · Promedios con el número de peticiones efectuadas por segundo. · Porcentaje actual de CPU utilizada por cada thread y el total que utiliza Apache. · Host y peticiones procesadas. Este módulo no se inicia por defecto, así que habrá que hacer lo mismo que con el módulo mod_info.c. El módulo que tenemos que añadir es mod_status, repetimos los pasos anteriores pero esta vez con mod_status en el archivo de configuración httpd.conf. Puede ocurrir que no aparezcan todos los datos Abrimos el archivo access.conf y añadimos las que esperamos, si por ejemplo siguientes líneas: no aparece la información tan relevante como <location /estado-apache> “Total accesses”, “Total Traffic” entre otros datos setHandler server-status es necesario volver a modificar el fichero de PC PASO A PASO Nº 9 Página 21
  • 22. APACHE - CONFIGURACION - SERVIDOR DE ARCHIVOS VIA WEB configuración httpd.cond, busca la cadena pueda conocer el estado del servidor. ExtendedStatus On y quita la almohadilla. ! Para ir abriendo ... Para ir abriendo miras y sabiendo que este acceso suele estar abierto pero protegido por un nombre que no conocemos (en nuestro caso estado-servidor) y por una IP determinada; podríamos "adivinar" la IP determinada que permite el acceso (muchas veces es la misma que la del servidor, aunque otras no ;)) y el nombre por diccionario De momento cualquier navegante que ponga (hemos propuesto ese ejercicio en este mismo artículo) y esta URL podrá acceder a la información del utilizando técnicas no explicadas todavía en HXC enviar estado y configuración del servidor Apache. peticiones de acceso previamente "retocadas". Desde el punto de vista de la seguridad deja mucho que desear. Apache nos permite Algunos avanzados ya saben perfectamente a lo que nos configurar el acceso a esta información mediante referimos, esas peticiones se "modifican" para hacer creer URL y ponerle limitaciones y para ello hay que al servidor que las peticiones provienen de la IP determinada configurar de nuevo los comandos que hemos aunque realmente provienen de nuestro PC… pero eso es colocado en el archivo access.conf. tema bastante avanzado y antes hay que leer mucho HXC ;) Supongamos que solo deseamos que tenga acceso a la información del estado del servidor la IP 254.67.67.5 (nuestra IP al conectarnos a Internet), es tan sencillo como editar el 2. Creación de sitios virtuales archivo access.conf y colocarlo de la siguiente manera: Cambiamos de tema, ahora vamos a crear sitios virtuales, para ello vamos a explicar de manera <location /estado-apache> rápida en que consiste y la razón de crear sitios setHandler server-status virtuales. order deny,allow deny from all Cuando contratamos un espacio web a una allow from 254.67.67.5 empresa de hosting ¿qué crees que realmente </location> nos están vendiendo?, nos alquilan un cacho de un gran servidor que tienen, este servidor De esta forma tan simple eliminamos el acceso alojará un número variable de sitios. Es decir, a cualquier navegante a la información del la empresa tendrá un gran disco duro y nos estado del servidor cuando ponga alquilará los megas de ese disco duro según http://tu_ip/estado-servidor excepto para el el plan que le contratemos. El microprocesador, navegante que tenga la IP 254.67.67.5 (que la memoria y demás recursos del servidor tiene que coincidir con la IP del administrador estarán compartidos por todos los clientes. Si del servidor Apache). estás pensando en crear un proceso que sature el micro para que todos los dominios caigan, Como se ha comentado anteriormente estos estás en lo cierto, puedes hacer caer todo módulos son de gran utilidad para el el sistema si el servidor Apache está administrador del sistema y suele estar activado mal configurado y dejar varios dominios sin para que el administrador en cualquier momento funcionar. Página 22 PC PASO A PASO Nº 9
  • 23. APACHE - CONFIGURACION - SERVIDOR DE ARCHIVOS VIA WEB Mediante una correcta configuración del archivo httpd.conf es posible crear nuevos sitios y Si, ya lo se, somos muy pesados, pero recibimos cientos convertir nuestro servidor dedicado en un de mails preguntando cosas que ya se ha explicado en potente servidor de hosting ;) números anteriores. Si no pides los números atrasados al menos lee el número 1 antes de enviarnos tus dudas y ya de paso os recordamos que EL FORO es el lugar perfecto ! La mayoria de ... para resolver tus dudas, que vía mail es mas lento y no podemos atender todas las peticiones. La mayoría de los sitios web son virtuales, muy pocos sitios tienen un servidor dedicado (un servidor 100% dedicado para el sitio web). Paso 1. Crear directorios Lo primero es crear los directorios donde los A lo largo de estos capítulos hemos configurado amigos podrán alojar sus archivos y que estos nuestro servidor Apache y de momento este archivos puedan ser accedidos desde Internet. servidor es dedicado, es decir, estamos ofreciendo todos los recursos del sistema a un Creamos una carpeta llamada amigos en el sólo sitio web. ¿Has pensado ofrecer espacio mismo nivel de la carpeta htdocs, en realidad web a tus amigos?, eso es lo que vamos a podemos crear esta carpeta donde queramos, hacer: Vamos a ofrecer hosting a los amigos incluso en otros discos duros. Ahora creamos para que puedan alojar sus páginas web, mp3, las carpetas amigo1, amigo2 y amigo3 divx en nuestro servidor y que cada uno tenga dentro de la carpeta amigos tal y como muestra su propia URL. la imagen. En este capítulo vamos a crear sitios virtuales Paso 2. Configurar utilizando puertos no estándar, cuando Apache expliquemos como tener un servidor DNS en nuestro propio servidor crearemos sitios virtuales mediante dominios. De momento, Vamos a ver cómo se quédate que vamos a crear sitios virtuales puede configurar el mediante puertos para que nuestros amigos servidor Apache para que puedan tener su propio sitio web en nuestro utilice un único demonio servidor web y que compartan sus archivos. de proceso para trabajar con todos los sitios web Vamos a crear 3 sitios virtuales para 3 amigos, virtuales. que los hemos llamado amigo1, amigo2 y amigo3. Apache utiliza la etiqueta <VirtualHost> para definir ! Por favor ... las propiedades de cada sitio virtual, como ya sabemos esta etiqueta hay Por favor, si eso de DNS te suena extraño, es el momento que colocarla en el archivo de que te leas el número 1 de HXC, lo tienes a tu disposición httpd.conf. En primer lugar en nuestra Web (www.hackxcrack.com) y puedes vamos a configurar de manera básica los tres descargártelo enterito y sin pagar un solo euro. sitios webs, para ello tenemos que asignar las urls. PC PASO A PASO Nº 9 Página 23
  • 24. APACHE - CONFIGURACION - SERVIDOR DE ARCHIVOS VIA WEB La url del amigo1 será http://127.0.0.1:8080 ServerName Amigo1 La url del amigo2 será http://127.0.0.1:8081 </VirtualHost> La url del amigo3 será http://127.0.0.1:8082 <VirtualHost 127.0.0.1:8081> DocumentRoot ! Sustituye ... "c:/apache/Apache/amigos/amigo2/" ServerName Amigo2 Sustituye 127.0.0.1 por la IP de tu conexión, en este ejemplo </VirtualHost> hemos colocado 127.0.0.1 para realizar las pruebas, pero recuerda que para que tus amigos puedan acceder a sus <VirtualHost 127.0.0.1:8082> sitios tendrás que colocar la IP que te ha asignado el DocumentRoot proveedor de acceso, eso ya lo explicamos en anteriores "c:/apache/Apache/amigos/amigo3/" entregas. ServerName Amigo3 </VirtualHost> La IP es la misma, lo único que cambia es el puerto, a cada sitio se le ha asignando un ! Las etiquetas ... puerto, te recomendamos que sean puertos no estándar (mayores a 1024) de lo contrario Las etiquetas DocumentRoot y ServerName ya fueron puede que ocupes un puerto ya en explicadas en el capítulo anterior del número 8 de funcionamiento. hackxcrack. Tenemos que configurar Apache para que esté a la escucha por los puertos 8080, 8081 y Al reiniciar el servidor Apache ya están accesibles 8082, para ello añadimos los siguientes las siguientes URLs: parámetros en el archivo de configuración httpd.conf. http://127.0.0.1:8080 http://127.0.0.1:8081 Listen 8080 http://127.0.0.1:8082 Listen 8081 Listen 8082 Ahora queda que vuestros amigos puedan subir páginas al servidor y para ello instalaremos un servidor FTP (puedes utilizar el servidor UFTP cuyo funcionamiento ya ha sido explicado en hackxcrack). Crea los 3 usuarios en el Servidor FTP apuntando cada uno a la carpeta específica (amigo 1, 2 y 3) y comunica a tus amigos los datos de acceso (user/pass), de esta forma cada usuario tendrá acceso únicamente a su carpeta y no verá las demás (salvando algunos Nos colocamos al final del archivo httpd.conf detalles, esto es lo que hacen las grandes y añadimos las siguientes lineas: empresas de “hosting” cuando te venden un sitio donde colocar tu Web). <VirtualHost 127.0.0.1:8080> DocumentRoot Como puedes comprobar todo lo aprendido en "c:/apache/Apache/amigos/amigo1/" números anteriores te está resultado de gran Página 24 PC PASO A PASO Nº 9
  • 25. APACHE - CONFIGURACION - SERVIDOR DE ARCHIVOS VIA WEB utilidad. 3. ¿Qué has aprendido? Este capítulo ha sido denso y con muchos nuevos conceptos, pero ha merecido la pena, ¿no crees?. Has aprendido el concepto de los módulos de apache, a utilizar los módulos mod_info y mod_status, a obtener la versión de Apache utilizando el netcat, algunos bugs de Apache y a crear sitios virtuales utilizando los puertos. En el próximo número .... Se explicarán nuevos módulos, nuevas directivas de configuración para los servidores virtuales y a interpretar los logs que genera Apache, un gran fichero donde se registran los accesos al servidor con datos del navegante (que interesante....) David C.M ¿QUIERES COLABORAR CON PC PASO A PASO? PC PASO A PASO busca personas que posean conocimientos de informática y deseen publicar sus trabajos. SABEMOS que muchas personas (quizás tu eres una de ellas) han creado textos y cursos para “consumo propio” o “de unos pocos”. SABEMOS que muchas personas tienen inquietudes periodísticas pero nunca se han atrevido a presentar sus trabajos a una editorial. SABEMOS que hay verdaderas “obras de arte” creadas por personas como tu o yo y que nunca verán la luz. PC PASO A PASO desea contactar contigo! NOSOTROS PODEMOS PUBLICAR TU OBRA!!! SI DESEAS MÁS INFORMACIÓN, envíanos un mail a empleo@editotrans.com y te responderemos concretando nuestra oferta. También necesitamos urgentemente alguien que se ocupe de la publicidad y de la web de esta editorial, para más información envíanos un mail a empleo@editotrans.com PC PASO A PASO Nº 9 Página 25
  • 26. vISUAL BASIC (iv): Mi primera DLL y Accediendo a datos Por pedro del valle Hola de nuevo. Hoy intentaré introduciros en el mundo del acceso a datos, pero antes os explicaré que es una DLL y haremos una práctica para entenderlo mejor. Al igual que los OCX, explicados en el curso anterior, las DLL son herramientas creadas por los programadores para facilitar el trabajo a la hora de desarrollar una aplicación. Dentro de las DLL solemos encontrar rutinas y funciones que, o bien son muy complejas, o simplemente se repiten con frecuencia. Pero más importante es aun su función de encapsulado. El programador que utilice tu DLL o tu OCX no tiene ni debe saber el funcionamiento interno de esta. Pongamos por ejemplo una DLL que se encargue del acceso a datos de una BD de Access. Esta DLL tiene unas funciones implícitas, que son, por ejemplo, Ruta (donde indicamos la ruta de la base de datos), Nombre (nombre de la base de datos), Conectar (abre la conexión contra la BD) y TraerRegistros (que nos va a traer todos los registros de la tabla que le indiquemos). También podríamos implementar otras funciones como Añadir, Editar, Borrar. Y son precisamente estas tres últimas las que dan sentido a nuestra DLL, ya que serán utilizadas varias veces en nuestro proyecto. Bien, una vez hecha la introducción a las DLL, vamos a crear una desde 0. Abrimos el Visual Basic, y en la primera pantalla vamos a escoger “DLL ActiveX”. Vemos que se nos abre el editor, como siempre, pero con la peculiaridad de que a nuestra derecha, en el explorador de proyectos, no existen formularios, sino solo un módulo de tipo clase llamado por defecto Class. Vale, lo primero que vamos a hacer es darle nombre al proyecto, por lo que nos pondremos encima de proyecto1 en el explorador de proyectos y cambiaremos el nombre en el cuadro de propiedades. En el ejemplo de hoy, nuestra DLL será sencilla, ya que me reservo lo mas complicado para la segunda parte, cuando tratemos el acceso a datos. Esta DLL sencillamente realizará las 4 operaciones básicas matemáticas, suma, resta, división y producto. Yo he llamado a mi proyecto Calc. Ahora deberíamos cambiar también el nombre de la clase, para ello vamos al explorador de proyectos, nos posicionamos sobre la Class1 y cambiamos su nombre en el cuadro de propiedades, por ejemplo, ClCalc. Ahora deberíais tener el proyecto como podemos ver en la imagen: Página 26 PC PASO A PASO Nº 9
  • 27. CURSO DE VISUAL BASIC - CREACION DE DLL - ACCEDIENDO A DATOS Muy bien, como ya he dicho anteriormente, esta DLL será sencilla, pues solo quiero enseñaros como poder crearlas y su funcionamiento. Lo que vamos a hacer es crear una función por cada una de las operaciones que queremos codificar, es decir, cuatro. El código quedaría así: Public Function Suma(a As Integer, b As Integer) As Integer Suma = a + b End Function Public Function Resta(a As Integer, b As Integer) As Integer Resta = a - b End Function Public Function Producto(a As Integer, b As Integer) As Integer Producto = a * b End Function Public Function Division(a As Integer, b As Integer) As Integer Division = a / b End Function Cojamos la primera de las funciones. Su nombre es Suma, ya que será la encargada de sumar dos números. Como podemos ver entre paréntesis, la función recibe 2 parámetros (a y b), los cuales son de tipo entero, aunque podrían haber sido también de tipo long o double. También podemos observar que justamente después del cierre de los paréntesis tenemos escrito As Integer. Esto es debido a que vamos a realizar el cálculo dentro de nuestra función y devolver el resultado, y este As Integer es el tipo de dato que vamos a devolver. Lo que sigue es sencillo, estamos diciendo que el valor que devuelve la función es la suma de a + b. Una vez escritas estas líneas, vamos a generar la DLL. Abrimos el menú Archivo y picamos en la opción Generar DLL. Podemos dejarle el nombre que viene por defecto, que si nos damos cuenta es el mismo que hemos puesto en el nombre de la DLL en nuestro proyecto. Una vez generada, nos olvidaremos de ella y abriremos un nuevo proyecto, pero esta vez picaremos en EXE Estándar. Ahora, y como siempre, vamos a darle un nombre al form y al proyecto. Por ejemplo, yo he llamado al proyecto Prueba y al Form FrmPrueba. Colocaremos un par de cajas de texto para recoger los valores, otra para el resultado y 4 botones para las operaciones matemáticas. PC PASO A PASO Nº 9 Página 27
  • 28. CURSO DE VISUAL BASIC - CREACION DE DLL - ACCEDIENDO A DATOS El diseño del proyecto es totalmente opcional, yo aquí lo he hecho bastante simple, pero podéis poner un label entre las dos primeras cajas de texto que cambie conforme pulsas un botón u otro, con el operador correspondiente (+,-,*,/). ¿Todo bien?, perfecto, vamos entonces a registrar la DLL que anteriormente hemos generado. Para ello vamos al menú Proyecto -> Referencias. Podemos ver que hay varias DLL seleccionadas por defecto, estas son necesarias para el correcto funcionamiento de los proyectos en VB. Picamos el botón Examinar y buscamos nuestra DLL, allá donde la hemos generado, y la agregamos a nuestra aplicación. Si lo hacemos bien, deberíamos poder declarar una variable del tipo Calc en mi caso, y en el vuestro, dependiendo del nombre que halláis utilizado anteriormente. Vamos al editor de código e intentamos declarar una la variable del tipo Calc, ¿cómo?, así: Option Explicit Dim Cl As Calc.ClCalc Ya tenemos declarada la variable, pero no está instanciada. Este tipo de variables, sobre todo aquellas que sean objetos o correspondan a DLL deben ser instanciadas. Para ello vamos al Form_Load() y escribimos lo siguiente: Private Sub Form_Load() Set Cl = New Calc.ClCalc End Sub Pasemos ahora a codificar los botones. Vamos al botón Sumar, por ejemplo, y escribimos: Private Sub CmdMas_Click() TextRes = Cl.Suma(Texta, Textb) End Sub Donde TextRes es la caja de texto que contendrá el resultado y Texta, Textb son los dos valores que queremos sumar. Si lo probáis veréis que la DLL se encarga de sumar los dos números y devuelve el valor a la caja de texto, aunque también podríamos poner una variable. El resto de operaciones es exactamente lo mismo, así que os lo dejo a vosotros. Y con esto, hemos acabado la DLL. Como podéis ver, una DLL y un OCX no son muy diferentes entre si. Realmente, la diferencia más grande que hay entre los dos es que el OCX posee entorno grafico para poder interactuar con él, mientras que la DLL no. Suponiendo que habéis entendido el funcionamiento de los OCX y DLL, creo que ya estamos listos para ir al tópico mas extendido de la programación: El ACCESO A DATOS. ACCESO A DATOS El acceso a datos es, actualmente, una de las técnicas mas solicitadas en el mercado laboral en cuanto al mundo de la programación se refiere, y también es muy necesario para aplicaciones Página 28 PC PASO A PASO Nº 9
  • 29. CURSO DE VISUAL BASIC - CREACION DE DLL - ACCEDIENDO A DATOS que necesiten registrar información o datos de cualquier tipo. Los grandes gestores de base de datos, como Oracle o SQL Server (e incluso MySql) tienen en común un punto muy importante, el lenguaje que interpretan. Este es conocido como SQL, y, aunque con algunas diferencias de sintaxis, todos los gestores de base de datos entienden las querys generadas en SQL, y se pueden crear desde cualquier lenguaje de programación. Ya que no todo el mundo puede tener un Oracle en casa, nosotros usaremos una base de datos Access para nuestra práctica. Bien, empecemos entonces. Si recordáis, en la primera entrega del curso os indiqué los componentes de acceso a datos que debíais instalaros, para estandarizar el uso de estos. Estos componentes se llaman MSDAC 2.6 sp1 y JET. Si están correctamente instalados, deberíamos poder ver sus referencias en el Visual Basic, las cuales os indicaré posteriormente. Antes de nada, debemos crear nuestra base de datos. Para ello abrimos la herramienta Access que viene en el paquete de Microsoft Office. En nuestro caso, utilizaremos la versión 2000 de la misma. En la primera pantalla picaremos en la opción “base de datos en blanco”, y la guardaremos con el nombre bd.mdb en la misma carpeta donde se encontrará nuestro nuevo proyecto. Una vez creada, vamos a la opción “crear una tabla en vista de diseño”. Cuando estemos dentro veremos que nos aparece un grid con las columnas Nombre de campo, Tipos de datos y descripción. En esta pantalla vamos a diseñar nuestras tablas, que en nuestro caso, para simplificar, solo será una. Bien, nuestra tabla será un clásico, la tabla “Clientes”. Debemos empezar a crear los campos. Por ejemplo, el primero, será el identificador de cliente, el cual podemos llamar IdCliente. En “tipo de dato”, vamos a declararlo Numérico, Ya que contendrá un número que será siempre único. Al indicarle el tipo de dato, vemos que abajo podemos cambiar las propiedades de este, ya que el tipo numérico puede tener muchas variantes (recordemos que los números pueden ser enteros, dobles, long...) En este caso dejaremos las propiedades que aparecen por defecto, es decir: entero largo, formato en blanco, posiciones decimales Automático, etc... El siguiente campo podría ser el nombre del cliente, por ejemplo, NomCliente. Este campo será de tipo Texto, y en sus propiedades le diremos que la longitud sea de 100. El siguiente campo contendrá el teléfono del cliente, llamémosle TelCliente. Este es un caso anecdótico, porque a mas de uno seguro que se le ha ocurrido declarar este campo como numérico. Eso es una barbaridad, teniendo en cuenta la cantidad de números que puede llegar a tener un teléfono, e incluso puede que, en algunos casos, se deban insertar símbolos o caracteres no numéricos, como por ejemplo el signo “+”, para el “+34” que simboliza el territorio español. Por lo tanto, este será un campo de tipo Texto con longitud 15. Por último, añadiremos un campo con la dirección. Le llamaremos DirCliente, para no variar, y será de tipo Memo. Este tipo de campo es poco recomendable, ya que se trata de un tipo Texto pero sin longitud máxima. Por ejemplo, este tipo de campo es utilizado en aquellos foros donde no hay límite d caracteres en los posts. Si todo ha ido bien deberíais tener el diseño como el de la imagen. PC PASO A PASO Nº 9 Página 29
  • 30. CURSO DE VISUAL BASIC - CREACION DE DLL - ACCEDIENDO A DATOS Para acabar, pulsamos en el botón de guardar, e introducimos el nombre de la tabla, si no lo habíais hecho antes. ¿Os ha aparecido un mensaje? ¿Sí?, no pasa nada, es totalmente normal. Este mensaje nos está diciendo que no hemos indicado ninguna clave en el diseño de la tabla. Los campos claves son aquellos cuyo valor no pueden repetirse bajo ningún concepto. Es posible crear claves con mas de un campo, es decir, con 2, 3, 4…, pero en nuestro ejercicio el único campo clave que hay es IdClietne. Así pues, le decimos que no queremos que nos cree una clave principal, y así le indicamos cual es la que nosotros hemos elegido. Para hacer esto, señalamos toda la línea de IdCliente y picamos sobre el icono de la llave que podemos encontrar en la barra del menú. Si lo habéis hecho bien, os debería aparecer una pequeña llave en este campo. Ahora si, picamos de nuevo en guardar y cerramos la ventana hija. En la pantalla que nos aparece deberíamos tener un pequeño icono que simboliza la tabla clientes, y que si hacemos doble click sobre él, nos permitirá introducir datos. Podemos introducir unos 4 o 5 clientes, inventándonos los datos, pero recordad que IdCliente es campo clave y por lo tanto es único, por lo que no podréis repetir el número, y si lo hacéis, debería devolveros un error y no permitirlo. Un ejemplo de clientes es el que podéis ver en la imagen. Una vez introducidos, damos al botón salvar, y salimos por completo del Access. Página 30 PC PASO A PASO Nº 9
  • 31. CURSO DE VISUAL BASIC - CREACION DE DLL - ACCEDIENDO A DATOS Vamos a pasar al Visual Basic, para programar una aplicación que sea capaz de leer la tabla y navegar a través de los registros. Es ahora entonces cuando debemos agregar las DLL y los OCX necesarios para el acceso a datos. Abrimos un nuevo proyecto en VB y vamos a referencias. Tenemos que agregar, de la lista, Microsoft ActiveX data object 2.6 library. Todos deberíamos tener esta versión, la 2.6, ya que instalamos estos componentes en la primera entrega del curso. Es el turno de los OCX. En este caso, solo será necesario agregar el Microsoft ADO Data Control 6.0, el cual nos será muy útil para la introducción de hoy, pero debéis saber que en un futuro debemos intentar prescindir de ellos. Ahora toca lo mas pesado, diseñar, cambiar nombres, poner objetos... En nuestro caso, debemos tener 4 cajas de texto (tantas como campos) para visualizar los valores, un DataControl, y un botón salir. Una posible opción sería esta: Bien, ahora, lo primero que debemos hacer, es abrir una conexión con la base de datos. Para hacer esto, usaremos una cadena de conexión, donde especificaremos el proveedor de datos (Access), la ruta, el nombre de la BD, user y password, si los hubiere. Es aquí cuando vamos a utilizar un pequeño truco, porque aunque podríamos tener apuntadas las cadenas de conexión de cada gestor, eso sería bastante engorroso. Vamos a nuestro DataControl, que yo he llamado DC (original, ¿no?). Buscamos la propiedad ConnectionString en el cuadro de propiedades y abrimos las opciones, con doble click o pulsando sobre el botón buscar (...). Nos aparece una página de propiedades, donde vemos seleccionado “Usar cadena de conexión”. Es correcto así, pulsemos entonces el botón “Generar”. Vemos que se despliega una lista de proveedores, que serán todos aquellos que tengamos instalados localmente en nuestro PC. El proveedor de Microsoft Access es el Microsoft Jet 4.0, que todos deberíamos tener instalado (si no lo tenéis, probad con la versión anterior). Pulsamos siguiente y nos aparece una pantalla donde debemos pulsar el botón buscar y seleccionar la base de datos de Access, que debería estar en la misma carpeta que donde vais a guardar este proyecto. Una vez seleccionada, pulsad “Probar conexión”, para verificar que lo hemos hecho bien. ¿Ha ido bien?, aceptad entonces y copiar en el portapapeles la cadena generada, borrándola posteriormente de donde está, ya que nosotros vamos a conectar por código. PC PASO A PASO Nº 9 Página 31
  • 32. CURSO DE VISUAL BASIC - CREACION DE DLL - ACCEDIENDO A DATOS Vamos al evento Form_Load() del formulario, y creamos la conexión. Para ello debemos indicarle a la propiedad ConnectionString del DataControl la cadena de conexión que hemos guardado en el portapapeles. Una vez puesto esto, vamos a depurarlo mas, y allá donde pone la ruta, vamos a utilizar un objeto de VB para indicársela, porque si no, esto solo funciona cuando la base de datos se encuentra en él la ruta especificada en la cadena de conexión. Este objeto que vamos a utilizar, se llama App, y la propiedad que nos devuelve la ruta es la .Path. Entonces, la cosa quedaría así: Private Sub Form_Load() DC.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "bd.mdb;Persist Security Info=False" DC.RecordSource = "Clientes" DC.Refresh End Sub Vemos que se ha sustituido la cadena por el objeto App.Path. También podemos observar que a la propiedad RecordSource le hemos pasado el literal Clientes. En la propiedad Recordsource indicamos la sentencia SQL que queremos que se ejecute. En este caso, y como queremos que se traiga todos los registros de la tabla Clientes, podemos escribir DC.RecordSource = "Clientes" o DC.RecordSource = "Select * from Clientes", que tendría el mismo significado. En breve haré una propuesta en los foros de hackxcrack, para saber si creéis necesario una entrega completa explicando la sintaxis de SQL, ya que es un mundo realmente complejo y extenso. Bien, por último podemos ver escrito Dc.refresh. De esta manera “refrescamos” o actualizamos el DtControl, y es necesario, ya que si no lo ponemos jamás conectaría con la base de datos. Para el botón Salir, lo único que debemos hacer es cerrar la conexión y cerrar el formulario. Esto se haría así: Private Sub CmdSalir_Click() DC.Recordset.Close Unload Me End Sub Vemos que lo que estamos cerrando realmente es el Recordset, y eso es debido a que, cuando nosotros cargamos el Recordsource, realmente estamos llenando el Recordset que lleva intrínseco el Datacontrol. Es el turno de las cajas de texto. Pongamos el foco sobre el primer TextBox, el que mostrará el IdCliente. Vamos al cuadro de propiedades y buscamos DataSource. Vemos que se nos despliega un pequeño combo con una única opción, que es precisamente el nombre de nuestro DataControl. Lo seleccionamos y buscamos la propiedad DataField. Aquí vamos a poner el nombre del campo que queremos que muestre esta caja de texto. En este caso, escribiremos idCliente. Repetimos la operación para los restantes TextBox. Una vez acabado esto, ejecutamos el proyecto y... ¡Ualap!, deberíamos estar viendo los datos del primer registro en nuestro formulario. Página 32 PC PASO A PASO Nº 9
  • 33. CURSO DE VISUAL BASIC - CREACION DE DLL - ACCEDIENDO A DATOS Si pulsamos las flechas del DataControl deberíamos poder navegar, sirviendo unas para moverse paso a paso y otras para ir al inicio o al final de los registros de la tabla. Esta es la manera simple y, recordemos, poco recomendada, de acceder a datos. Pero claro, para este ejercicio tan sencillo, dentro de lo que es el mundo de acceso a datos, he preferido enseñaros primero este camino, el fácil, y ahora explicaros otra forma mucho más correcta de hacer exactamente lo mismo. Esta otra manera será implícitamente por código, y no por diseño. Los TextBox volverán a tener en blanco sus propiedades DataSource y DataField y eliminaremos el DataControl para dar paso a los objetos Connection y Recordset de ADO. ¿Estáis listos?, bien, eliminemos entonces el DataControl y añadamos unos botones que sirvan para moverse adelante, atrás, al principio y al final. También no os olvidéis de dejar en blanco las propiedades que habíamos cambiado de las cajas de texto. Quedaría algo como esto: Vamos ahora a la declaración de variables. Hoy conoceremos dos nuevos tipos de dato, muy importantes para la conexión y gestión de datos. Estos objetos son el ADODB.Connection y el ADODB.Recordset El primero, es el encargado de realizar la conexión contra la base de datos, ya sea un Access, Oracle o SQL Server. A este objeto debemos indicarle, entre otras cosas, el proveedor y la localización de la base de datos, ya sea por ruta o por ODBC. El segundo, Recordset, no es mas que un puntero (concepto que mejor no explicaré, pues tendríamos para 10 capítulos) que apunta a la base de datos. Este objeto es el que contendrá los registros que nosotros queramos, indicándoselo en su propiedad open. Por ejemplo, un recordset puede apuntar a todos los registros de la tabla clientes, o solo a aquellos clientes que se llamen “Camilo”, o los que vivan en “Barcelona”. Después de esta explicación técnica, vamos a la práctica. Declaremos las dos variables anteriormente mencionadas. Por ejemplo: Option Explicit Dim Cnx As ADODB.Connection Dim RsRecordset As ADODB.Recordset Vamos ahora al Form_Load() y generemos la conexión. Para ello debemos utilizar la propiedad Open de nuestra variable Connection. Tenemos que “pasarle” la cadena de conexión con el proveedor y la ruta, tal y como hicimos con el DataControl anteriormente. Casi se me olvida deciros que, anteriormente, debéis instanciar la variable, ¿recordáis? Set Cnx = New ADODB.Connection Así es como la instanciaríamos. Con estas dos líneas, hemos realizado una conexión contra la base de datos, pero aún no nos hemos traído el conjunto de registros que necesitamos, y para ello pediremos ayuda a nuestro nuevo amigo, el Recordset. Justo después de abrir la conexión, abriremos el recordset. Para ello utilizaremos la propiedad PC PASO A PASO Nº 9 Página 33
  • 34. CURSO DE VISUAL BASIC - CREACION DE DLL - ACCEDIENDO A DATOS .Open, (Recordad instanciar también este objeto) y le indicaremos el nombre de la tabla, la conexión y el modo de apertura y bloqueo del recordset. Los modos de apertura indican si queremos el recordset en modo lectura, escritura, y el bloqueo indica que pueden hacer otros usuarios con este registro cuando nosotros lo estamos leyendo o editando. Bueno, nuestro Form_Load() quedaría así: Private Sub Form_Load() Set Cnx = New ADODB.Connection Cnx.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "bd.mdb;Persist Security Info=False" Set RsRecordset = New ADODB.Recordset RsRecordset.Open "Clientes", Cnx, adOpenDynamic, adLockOptimistic End Sub ! El tipo de... Bien, ya hemos abierto una conexión y recogido los registros de la tabla Clientes. Ahora deberíamos El tipo de apertura es importante en este caso, y nosotros mostrar los datos en los TextBox. Para ello podemos lo abrimos de forma Dinámica, que permite actualizaciones. añadir debajo del RsRecordset.Open las líneas En cambio el tipo de bloqueo, nos es poco importante ya necesarias. El Recordset contiene los datos, y para que solo trabajaremos nosotros contra esa base de datos. acceder a ellos lo haremos de la siguiente forma: TxtIdCliente = RsRecordset("IdCliente") TxtNomCliente = RsRecordset("NomCliente") TxtDirCliente = RsRecordset("DirCliente") TxtTelCliente = RsRecordset("TelCliente") Si os fijáis, entre los paréntesis vemos el literal con el nombre del campo, pero también podríamos referirnos a estos con su índice, por ejemplo, RsRecordset(“NomCliente”) sería RsRecordset(2). Ejecutamos la aplicación y vemos que las cajas de texto se han rellenado con los datos de la BD. Ahora deberíamos movernos por los registros. Vamos al botón siguiente, y en su evento Click pondremos RsRecordset.MoveNext. Con esto nos moveremos al siguiente registro, pero debemos volver a cargar las cajas de texto con los datos. Ya que esto lo vamos a tener que hacer en cada botón, mejor creamos una función que mueva los valores del recordset a los TextBox. La función la podríamos llamar LlenarCampos, y la codificaríamos así: Public Function LlenarCampos() TxtIdCliente = RsRecordset("IdCliente") TxtNomCliente = RsRecordset("NomCliente") TxtDirCliente = RsRecordset("DirCliente") TxtTelCliente = RsRecordset("TelCliente") End Function Una vez escrita la función, el botón siguiente quedaría así: Página 34 PC PASO A PASO Nº 9
  • 35. CURSO DE VISUAL BASIC - CREACION DE DLL - ACCEDIENDO A DATOS Private Sub CmdSiguiente_Click() Dim RsRecordset As ADODB.Recordset RsRecordset.MoveNext LlenarCampos Private Sub CmdAnterior_Click() End Sub RsRecordset.MovePrevious LlenarCampos Los demás, no tiene ningún secreto, podríais End Sub intentar hacerlos vosotros mismos, yo os pondré aquí el código, pero antes de leerlo, intentadlo. Private Sub CmdPrimero_Click() RsRecordset.MoveFirst Private Sub CmdAnterior_Click() LlenarCampos RsRecordset.MovePrevious End Sub LlenarCampos End Sub Private Sub CmdSalir_Click() RsRecordset.Close Private Sub CmdPrimero_Click() Unload Me RsRecordset.MoveFirst End Sub LlenarCampos End Sub Private Sub CmdSiguiente_Click() RsRecordset.MoveNext Private Sub CmdSiguiente_Click() LlenarCampos RsRecordset.MoveNext End Sub LlenarCampos End Sub Private Sub CmdUltimo_Click() RsRecordset.MoveLast Private Sub CmdUltimo_Click() LlenarCampos RsRecordset.MoveLast End Sub LlenarCampos End Sub Private Sub Form_Load() Set Cnx = New ADODB.Connection Cnx.Open Y con esto, hemos acabado por hoy. Para que "Provider=Microsoft.Jet.OLEDB.4.0;Data practiquéis, codificar el botón salir, y si os dais Source=" & App.Path & "bd.mdb;Persist Security cuenta, cuando hacéis “siguiente” varias veces, Info=False" hasta llegar al último registro, el programa devuelve un error, porque intentáis avanzar Set RsRecordset = New ADODB.Recordset donde ya no existen datos. Solo os daré una RsRecordset.Open "Clientes", Cnx, pista, las propiedades EOF y BOF indican el adOpenDynamic, adLockOptimistic final y principio de un recordset respectivamente, devolviendo True o False. TxtIdCliente = RsRecordset("IdCliente") Un saludo a todos TxtNomCliente = RsRecordset("NomCliente") TxtDirCliente = RsRecordset("DirCliente") En la próxima entrega, altas, modificaciones y TxtTelCliente = RsRecordset("TelCliente") bajas!!! End Sub Fuente: Option Explicit Public Function LlenarCampos() Dim Cnx As ADODB.Connection TxtIdCliente = RsRecordset("IdCliente") PC PASO A PASO Nº 9 Página 35
  • 36. CURSO DE VISUAL BASIC - CREACION DE DLL - ACCEDIENDO A DATOS TxtNomCliente = RsRecordset("NomCliente") TxtDirCliente = RsRecordset("DirCliente") TxtTelCliente = RsRecordset("TelCliente") End Function SUSCRIBETE A PC PASO A PASO 45 EUROS (10% DE DESCUENTO) SUSCRIPCIÓN POR: + 1 AÑO = SORTEO DE UNA CONSOLA XBOX + 11 NUMEROS SORTEO 2 JUEGOS PC (A ELEGIR) C o n t r a R e e m b o l s o Giro Post al Solo tienes que enviarnos un mail a preferente@hackxcrack.com Envíanos un GIRO POSTAL por valor de 45 EUROS a: indicando: CALLE HIGINIO ANGLES Nº2, 4º-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 puesto que 24 horas después de que recibamos tu petición de - Dirección Completa subscripción te daremos un número de Cliente Preferente. Este - Población número será utilizado para los sorteos. - Provincia - Tipo de Subscripción: CONTRAREEMBOLSO - Cógigo Postal - Número de Revista: - Mail de Contacto y/o Teléfono Contacto Este será el número a partir del cual quieres subscribirte. Si deseas Es imprescindible que nos facilites un mail o teléfono de contacto, (por ejemplo) subscribirte a partir del número 5 (incluido), debes poner puesto que 24 horas después de que recibamos tu petición de un 5 y te enviaremos desde el 5 hasta el 15 (ambos incluidos) subscripción te daremos un número de Cliente Preferente. Este número será utilizado para los sorteos. 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 HIGINIO ANGLES Nº2, 4º-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; rellenando el formulario de nuestra WEB * Cualquier consulta referente a las subscripciones puedes enviarla (www.hackxcrack.com) o enviándonos una carta a la siguiente dirección: por mail a preferente@hackxcrack.com CALLE HIGINIO ANGLES Nº2, 4º-1ª CP 43001 TARRAGONA ESPAÑA * Cualquier consulta referente a las subscripciones puedes enviarla por mail a preferente@hackxcrack.com Página 36 PC PASO A PASO Nº 9
  • 37. TeCNICAS DE PORT SCANNING Y USO DEL NMAP. 1- ¿Qué es el escaneo de puertos y para qué sirve? necesitamos una referencia y este artículo cumplirá esa función. El escaneo de puertos es una técnica usada por hackers y administradores (sin ánimo de hacer distinciones) para auditar máquinas Algunos tipos de escaneo explicados de forma y redes con el fin de saber que puertos están breve, y que luego verás mejor con la práctica, abiertos o cerrados, los servicios que son son: ofrecidos, chequear la existencia de un firewall así como verificaciones sobre el -TCP connect: esta es una técnica rápida y funcionamiento del mismo y algunas otras simple, pero tiene el inconveniente de que cosas. Ni que decir tiene que ésta es una de canta un poquito xD y se detecta fácilmente. las técnicas más utilizadas a la hora de penetrar Además por lo general si utilizas esta técnica en un sistema y realizar un análisis preliminar tus conexiones serán logueadas y/o filtradas. del sistema... sin duda una de las mejores y más efectivas para llevar a cabo nuestras Se basa en intentar establecer una conexión "oscuras intenciones". con el puerto del host remoto mediante la llamada a connect () si se establece De eso te hablaré aquí, de las diversas técnicas dicha conexión, evidentemente, el puerto está de escaneo, de cómo escanear una máquina abierto. o red y de cómo aprovechar los resultados obtenidos para atacar o proteger nuestro -TCP SYN: se trata de un escaneo en el que sistema, todo con un propósito puramente no se establece una conexión completa, educativo ;-) enviamos SYN y en función de la respuesta obtenida por el host contestamos con RST (en caso de estar abierto) para resetear la conexión, 2- Algunos tipos de escaneo es decir, abortar. conocidos. Puede darse el caso de que al enviar un paquete TCP con el bit SYN no se reciba respuesta lo Antes de seguir con la explicación deberías que significa que el host está desconectado o tener algunas nociones básicas acerca del se filtra la conexión a ese puerto. protocolo TCP y algunas otras cosas que ya A este tipo de escaneo se le conoce como se han explicado en la revista. escaneo "medio abierto" o "SYN stealth". ! Si no estas... -Stealth Scan (TCP FIN): se trata de enviar FIN y esperar la respuesta del host víctima de Si no estás iniciado en el tema, lo que leerás a continuación nuestro escaneo FIN stealth ("sigiloso"), si quizás te amedrente un poco. Vamos a ver, este artículo ignora los paquetes enviados entonces el puerto servirá de plataforma para explicar en profundidad muchos está abierto. Los sistemas de la compañía temas en próximos números, todo aquello que ahora no Micro$oft (entre otros) no son susceptibles entiendas será explicado, como hacemos siempre, pero a este tipo de escaneo aunque parezca mentira :P . PC PASO A PASO Nº 9 Página 37
  • 38. PORT SCANING - NMAP - PORT SCANING - NMAP - PORT SCANING - NMAP -Reverse Ident (TCP): realizamos un -Null Scan: se trata de otro método de escaneo escaneo normal TCP pero miramos si el puerto stealth, en el que enviamos un curioso paquete 113 está abierto con el objetivo de saber quién sin banderas levantadas. es dueño de los servicios que corren en otros puertos de la máquina. -Xmas Scan: lo realizamos enviando paquetes TCP anormalmente configurados y todos los -Ping Scan: ...bastante explícito xD en todo flags (banderas) SYN, ACK, PSH, RST, URG caso se debe usar cuando tu intención sea y FIN levantados. saber que máquina(s) están despiertas, es posible bloquear los pings, pero luego (con la -Idle scan: se trata de una técnica de escaneo practica) veremos como saltarse esta stealth muy potente y eficaz, con la que no "protección" en caso de encontrarnos con el tenemos necesidad de enviar ni un solo paquete inconveniente. con nuestra IP si no que se utilizan host's zombis, sería interesante comentar esta técnica -Bounce Attack (vía ftp): se trata de detalladamente en su propio espacio por lo que aprovechar la conexión proxy ftp para escanear no profundizaremos ahora. a través de un servidor FTP. Esto es así porque podemos utilizar el comando PORT indicando Finalmente, una dirección IP y un puerto, en este caso el objetivo de nuestro escaneo y solicitamos una -RCP Scan: se trata de enviar el comando transmisión de datos, si el puerto en cuestión NULL (SunRPC) a los puertos tcp o udp está cerrado se generará un error 425 ("Can´t que están abiertos y ver si son puertos RPC get data conection" o algo muy similar). Es para saber qué programa y su versión está una buena idea deshabilitar la opción ftp corriendo. proxy para evitar que terceros utilicen nuestro servidor para escanear y/o atacar otras redes. Estos son los tipos de escaneo fundamentales aunque no son los únicos. -UDP Scan: este escaneo mostrará los puertos abiertos que utilizan el protocolo UDP (con 3- Nuestros enemigos: "IDS". sus inconvenientes), es bastante lento aunque irá mejor si escaneas una máquina que utilice Antes de proceder a ver de qué manera la plataforma Window$ gracias a la política podemos aplicar los diferentes ataques de M$ de hacer las cosas "iguales pero existentes que acabamos de repasar brevemente diferentes" y "viva el monopolio". me gustaría dejar clara una cosa a la hora de escanear puertos a diestro y siniestro: DEBES -ACK Scan: muchas veces nos encontramos SER CUIDADOSO Y NO DAR LA NOTA (-- con un bonito firewall que impide el "correcto ¡no j*d*s!) ten en cuenta que aparte de haber flujo de los paquetes" xDD desde nuestra buenos administradores (pocos pero hay :P) máquina al host víctima, por eso y otros monitoreando el tráfico y la actividad de sistema, motivos nos interesa saber qué tipo de los cortafuegos y los logs del sistema... existen configuración tiene el cortafuegos, es decir si los llamados: IDS (Intrusion Detection System, el tráfico ha sido filtrado o no. que no traduciré porque seguro que ya sabéis lo que significa xD) mediante estos sistemas -Window Scan: muy parecido al anterior, es posible detectar un escaneo, activar las pero nos dice también que puertos están alarmas y llevar a cabo las acciones oportunas, abiertos. es decir, que si un "UIA" (Usuario del Intesné Página 38 PC PASO A PASO Nº 9
  • 39. PORT SCANING - NMAP - PORT SCANING - NMAP - PORT SCANING - NMAP Aburrido) se dedica a escanear ciento y pico ¿De dónde me bajo el NMap? máquinas de una red de arriba a abajo en plan "destroyer" tiene todos los números de meterse Como acabo de decir se trata de una en un buen lío ...aunque os pego aquí un texto herramienta LIBRE y eso significa que dispones sacado de la web de los Men In Green ;-) del código fuente y el programa compilado; lo << Es de destacar que conductas tan frecuentes tienes para diversas plataformas. Aunque NMap en esta Sociedad de la Información, como son el está pensado para su uso en la consola (línea Spam o el simple Escaneo de puertos, difícilmente de comando) dispone de un agradable GUI encuentran cabida entre los delitos tipificados en (Interfaz Gráfica de Usuario) que hace más nuestro Código Penal, por lo que no son fácil todavía su manejo, si piensas utilizar NMap perseguibles por vía penal. >> bajo la plataforma Window$ te recomiendo que sea un Window$ NT/2K aunque existe Ejemplos de aplicaciones "IDS" son: Cyber para 95/98/ME, por supuesto las versiones Cop, CISCO NetRanger, TripWire, Snort para Window$ no son tan rápidas ni estables y L.I.D.S siendo estos tres últimos como cabría esperar debido a que todavía se encuentran en constante desarrollo. gratuitos :) Te puedes bajar la versión NMap 1.3.1 para ! IDS ¿Qué? ... Window$ aquí: ttp://download.insecure.org/nmap/dist/nmapwin IDS ¿Qué? ¿?¿? Si nunca has oído hablar de esto, ya sabes, _1.3.1.exe www.google.com e investiga un poco por tu cuenta. INSTALACIÓN DEL NMAP: Si has optado por descargarte NMAP junto con 4- Visión práctica: usando el NMap. su GUI ("NMapWin") simplemente sigue estos pasos: NMap es una herramienta LIBRE para la auditoria de redes, disponible en varias plataformas aunque fue desarrollada 1-Bájate NMapwin_1.3.1.exe (instalador para inicialmente para entornos Unix, y para mí Window$) mencionado justo arriba. una de las mejores utilidades que existen actualmente para el propósito, mediante esta 2-Ejecuta el instalador y sigue las instrucciones potente herramienta podemos por ejemplo: indicadas. 3-Una vez finalizado esto te vas al directorio -Determinar que host's están disponibles en que diste al programa y encontrarás nuevos una red. ejecutables, debes instalar WinPCap. -Determinar los puertos abiertos que tiene el sistema y que servicios ofrecen. 4-Una vez reiniciado Window$ (por una vez -Determinar que sistema operativo corre en el que sea decisión tuya ¿no? xD) ya dispones de host objetivo. Nmap para la línea de comandos y su interfaz -Determinar la configuración y uso de gráfica plenamente funcionales :) cortafuegos. -Arreglar una tarde aburrida escaneando el Ahora explicaremos cómo utilizar el NMap ordenador de nuestra vecina ;) mediante su GUI para escanear los puertos de PC PASO A PASO Nº 9 Página 39
  • 40. PORT SCANING - NMAP - PORT SCANING - NMAP - PORT SCANING - NMAP un sistema mediante las diversas técnicas que También se permite el uso del asterisco, por he comentado. ejemplo: 198.154.3.* e incluso el escaneo de puertos dentro de un rango específico. ! Si has leido ... Si has leído los números anteriores de esta publicación ya sabes lo que es una IP y el formato que tiene, por lo tanto solo te puntualizo que cuando sustituyes una parte de la IP por un asterisco, lo que haces es escanear un rango de IPs. Si tomamos como ejemplo 198.154.3.*, lo que hacemos es escanear desde la IP 198.154.3.0 a la IP 198.154.3.255 Justo abajo tenemos una serie de pestañitas para indicar el tipo de escaneo a realizar así como las opciones adicionales que queremos aplicar. Los resultados obtenidos tras el escaneo aparecerán en el cuadro de salida Para empezar lo mejor será ver todas esas (Output), además si te fijas en la barra de abajo opciones que puedes utilizar jeje seguro que aparecen los argumentos que deberíamos estás inquieto pensando en darle al botoncito pasarle al NMap mediante la línea de comandos. de "scan" pero no te impacientes. En primer lugar tenemos un cuadro de texto donde indicaremos el host que queremos escanear, podemos usar la IP o el nombre del host indicando además: /32 para escanear únicamente el servidor especificado. Veamos esas opciones que es importante /16 para escanear una dirección de clase 'B'. conocer, por ejemplo ya hemos comentado que /24 para escanear una dirección de clase 'C'. es posible que nuestra víctima (por llamarla de alguna manera :P) esté on-line pero no deja que "pinguées" su servidor. ! Si no entiendes ... Si te fijas en la pestañita "SCAN" verás que .Si no entiendes eso de Clase A, B, C, no te preocupes, puedes seleccionar las modalidades de escaneo en los próximos números y tomando de referencia este que te he explicado hace un momento, y que texto explicaremos las MUCHAS cosas que seguro no no volveremos a comentar ahora, pero lo que comprendes ahora mismo de este artículo… poco a poco si que es interesante explicar son las opciones y paso a paso :) de tu derecha ("Scan Options"). Página 40 PC PASO A PASO Nº 9
  • 41. PORT SCANING - NMAP - PORT SCANING - NMAP - PORT SCANING - NMAP Como se puedes ver si quieres indicar un rango así: -PT80 (puerto 80 por no ser normalmente de puertos a escanear (con -P) debes marcar filtrado) si el objetivo no permite pings puedes la opción Port Range, por ejemplo así: 10- estas dos últimas opciones... aunque es una 2048. sugerencia xD. Otra opción curiosa que me gusta bastante -Realizar un "ping" TCP usando SYN (-PS). (aunque yo no la uso :P) es Decoy, sirve para -Realizar un ping mediante ICMP. escanear usando uno o más señuelos para que Por defecto NMap realiza un ping ICMP + ACK el servidor objetivo vea que le atacan desde en paralelo, es decir, -PI y -PT. varias IP's que debes indicar separadas por comas, si no indicas "ME" en una de las Si ahora te vas a "OPTIONS" podrás ver unas posiciones se te asignará una de oficio, digo, opciones muy interesantes, por ejemplo: aleatoria xD imagínate que locura para un administrador ;) Fragmentation (-f) con esta opción se usan paquetes fragmentados que dificultan la Más cosas, en Device (-e) especificamos la detección del escaneo, en un futuro os interfaz desde la que enviar y recibir los hablaremos de ataques de ataques de paquetes, aunque normalmente NMap detecta fragmentación y relacionados ampliamente. esto de forma automática :) así que salvo casos puntuales no debes preocuparte por eso. OS detection: pues eso, si quieres determinar Otra de las opciones de especial interés es que tipo de SO utiliza el objetivo marca esta indicar una IP en Source Address (-S) de casilla, recomendado. manera que aparentemente el ataque se realiza desde esa IP, aunque evidentemente el escaneo Get Ident Info: usa la técnica del escaneo no te servirá de nada :( especifica la interfaz inverso (TCP reverse ident scanning) siempre en este caso (-e) y ten en cuenta que falsear que sea posible, úsalo al realizar un escaneo la dirección de origen por otra ajena puede tipo -sT (connect), útil cuando quieras saber si hacer que "esa IP" se meta en problemas, por un servicio corre con privilegios de administrador. favor, utiliza esta función con responsabilidad. Fast Scan (-F): escanea los puertos especificados Otra opción es Bounce Attack (-b) necesita de /etc/services (nmap-services en nuestro que le pases usuario:password@servidor:puerto caso xD). y ya sabes lo que hace ;) pero recuerda que va muy lento. Random Host's: objetivos aleatorios (-iR) y También podemos especificar el Source Port bueno, realmente no nos interesa. (puerto de origen) con -g o marcando su casilla en la interfaz gráfica con el fin de establecer Con don´t resolve (-n) y resolve all (-R) ese puerto como fuente de nuestro escaneo. indicamos si queremos resolución DNS, es decir, Esto tiene sentido especialmente si un firewall resolución de nombres de host por su IP. hace excepciones en función del puerto de origen para filtrar o no los paquetes. Mediant Resume (--resume fichero) podemos retomar un escaneo detenido usando un fichero En la pestañita "DISCOVER" encontrarás de salida. nuevas posibilidades: Verbose y very verbose: nos da información -No realizar un ping previo. (-P0) más amplia de lo que sucede (-v) puedes usarlo -Realizar un "ping" TCP usando ACK tal que dos veces (very verbose) para mostrar todavía PC PASO A PASO Nº 9 Página 41
  • 42. PORT SCANING - NMAP - PORT SCANING - NMAP - PORT SCANING - NMAP más información. número máximo de escaneos que se permitirán ejecutar en paralelo, no debes utilizar un valor muy alto para no agotar los recursos de tu máquina ;-) Scan Delay: tiempo mínimo de espera entre las diferentes pruebas en milisegundos, lo puedes usar para evitar (¿?) que algunos IDS detecten el escaneo. Pasemos a la siguiente pestañita como ves hay MUCHAS opciones xD para "curiosear" redes; Si ahora pasas a la pestañita "timing" en Files encontrarás Input File y Output File (- encontrarás opciones referentes al tiempo que, iL y -oN respectivamente): por lo general, no es necesario que modifiques aunque si por ejemplo te encuentras en una Input File: escanear los objetivos de un fichero red con tráfico excesivo u otros casos en los dado con objetivos separados por retornos de que sea necesario reajustar estos valores debes carro (intro), espacios y tabulaciones. hacerlo aquí, veamos lo que podemos hacer: Output File: guarda los resultados obtenidos Throttle: sirve para configurar el tiempo de en un fichero especificado, podemos especificar envío y respuesta de paquetes de forma general, el formato del salida pero lo suyo es dejarlo siendo Paranoid el más lento e Insane el más normal (-oN) puedes marcar Append para añadir rápido. (-T Paranoid|Sneaky|Polite|Normal...). la nueva información al final del fichero. Otras alternativas disponibles (¡no debes usarlas A continuación se puede ver la pestaña "Service" si modificas algo usando Throttle!) que simplemente se usa para configurar el servicio pero para lo que estamos tratando Host Timeout: indica el tiempo máximo en ahora no es importante así que pasemos a milisegundos que se dedica al escaneo de un otras opciones que aunque tampoco son único sistema, por defecto no tiene impuesto especialmente necesarias veremos algunas, un límite tal y como se puede ver. son las de la pestañita "Win32" y se usan para lo siguiente: Max RTT: tiempo máximo de espera en milisegundos que NMap esperará a recibir No Pcap (--win_nopcap): deshabilita el soporte respuesta del sistema escaneado. Wincap. Min RTT (ms): para evitar casos de demora en No Raw Sockets (--win_norawsock): deshabilita la comunicación NMap nos asegura un tiempo el soporte para raw sockets (algún día mínimo de espera. hablaremos de los sockets y los sockets en crudo puesto que proporcionan ventajas Initial RTT (ms): al especificar la opción -P0 interesantes aunque por ahora puede ser para probar un cortafuegos podemos especificar demasiado avanzado). un tiempo de espera en las pruebas iniciales. List Interfaces (--win_list_interfaces): lista todas Parallelism: (--max_parallelism num) indica el las interfaces de red. Página 42 PC PASO A PASO Nº 9
  • 43. PORT SCANING - NMAP - PORT SCANING - NMAP - PORT SCANING - NMAP C:>nmap --win_list_interfaces y obtendremos como respuesta algo parecido Available interfaces: a esto: Name Raw send Raw recieve IP Starting nmap V. 3.00 ( www.insecure.org/nmap ) loopback0 SOCK_RAW SOCK_RAW 127.0.0.1 Host (***.***.**.*) appears to be up ... good. eth0 SOCK_RAW winpcap 0.0.0.0 Initiating SYN Stealth Scan against (***.***.**.*) ppp0 SOCK_RAW SOCK_RAW The SYN Stealth Scan took 0 seconds to scan 1 211.98.199.104 ports. Interesting ports on (***.***.**.*): Force Raw Socket(--Win_forcerawsock): probar Port State Service los raw sockets incluso en un sistema que no 1080/tcp filtered socks sea Window$ 2000. [...] Aunque lo mismo interesa buscar algunos servidores con NT: nmap -sS -O -p 80 objetivo/24. Más ejemplos, nmap -sS -PI -v *** Hemos visto lo podemos hacer y supongo que Starting nmap V. 3.00 ( www.insecure.org/nmap ) te das cuenta de la potente herramienta que Host (***.***.***.***) appears to be down, tienes en tus manos ¿verdad? jeje pues espera skipping it. a usarla ;). Note: Host seems down. If it is really up, but blocking our ping probes, try -P0 4.1- Algunos ejemplos de uso. ...mmm parece ser que con un escaneo (usando Ahora veremos algunos ejemplos de escaneo ping) normalillo no basta :P utilizando el NMap, yo como soy un maniático usaré la línea de comandos, cada uno que use nmap -sS -PT -v *** lo que más le guste :) Starting nmap V. 3.00 ( www.insecure.org/nmap ) Host (***.***.***.***) appears to be up ... good. Antes de ponernos a "curiosear" permíteme Initiating SYN Stealth Scan against recomendarte no escanear desde tu propio PC (***.***.***.***) =:) búscate el cyber cutre de turno o asegúrate Adding open port 80/tcp de ocultar bien tu IP, etc. Adding open port 53/tcp Realizamos un primer chequeo: Adding open port 22/tcp Adding open port 443/tcp Hoy es un día aburrido y no hay nada mejor Adding open port 25/tcp que hacer que buscar WinGates (servicio The SYN Stealth Scan took 31 seconds to scan ofrecido normalmente en el puerto 1080), 1601 ports. abrimos una ventana de comandos y Interesting ports on (***.***.***.***): escribimos: (sustituye “objetivo” por la IP (The 1584 ports scanned but not shown below are de la víctima) in state: closed) Port State Service nmap -sP -vv -p 1080 objetivo 22/tcp open ssh PC PASO A PASO Nº 9 Página 43
  • 44. PORT SCANING - NMAP - PORT SCANING - NMAP - PORT SCANING - NMAP 25/tcp open smtp Remote operating system guess: Linux 2.2.12 - 53/tcp open domain 2.2.19 79/tcp filtered finger [...] 80/tcp open http 137/tcp filtered netbios-ns 138/tcp filtered netbios-dgm 139/tcp filtered netbios-ssn nmap -sS -O -vv NOMBRE/IP_víctima/24 143/tcp filtered imap2 389/tcp filtered ldap 443/tcp open https Con este escaneo barremos una red de clase 901/tcp filtered samba-swat C mediante un escaneo oculto (stealth SYN) y 3306/tcp filtered mysql con la intención de averiguar el SO, además 5432/tcp filtered postgres 6346/tcp filtered gnutella hemos especificado el modo very verbose para 6699/tcp filtered napster obtener más detalles acerca de lo que está 10000/tcp filtered snet-sensor-mgmt ocurriendo. vaya... pues si que estaba despierto mira tu que cosas :P y resulta que tiene algunos puertos Estos son algunos ejemplos simples de escaneo, filtrados, ok. En cambio tiene otros como el 25 ahora ya estás listo para salir "ahí fuera" a (servidor SMTP), el 53 (name-domain server) y 22/ssh (secure shell) abiertos. explorar de forma efectiva y segura (?) ya iremos viendo como explotar algunos agujeros Vamos a investigar eso un poco ;-) por simple de seguridad más a fondo en la revista para curiosidad: los cuales es buena idea realizar un análisis previo del sistema del que queremos C:>telnet ***.*** 25 comprometer la seguridad, no te pierdas los próximos artículos ;). 220 correo.***.*** ESMTP MAIL FROM yo mismamente! 250 ok #en fin, no ha hecho falta el saludo xD. Seguimos. [...] y si nos conectamos al puerto 22 sacamos esto ! Para tus primeras... SSH-2.0-OpenSSH_2.5.2p2 xD. Para tus primeras pruebas, te recomendamos utilizar como M o l a r í a s a b e r e l s i s t e m a o p e ra i vo : víctima para tus escaneos el servidor de Hack x Crack que nmap -sS -PT -PI -O -T 3 (usamos -O para está en la IP 80.36.230.235, que para eso está ;) detectar el SO) Starting nmap V. 3.00 ( www.insecure.org/nmap ) [...] Página 44 PC PASO A PASO Nº 9
  • 45. SERIE RA W: CONOCIENDO PROTOCOLOS Y SU SEGURIDAD. RAW3: IRC (Internet relay chat) 0. INDICE: 2.3. Comando PRIVMSG 1. DOCUMENTACION 2.3.1. Mensajes privados 1.1. Un lugar donde vivir 2.3.2.Escribiendo en el canal 1.2. Como siempre, empezamos con 2.3.3. Escribiendo en un canal en los RFCs el que no estamos 1.3. Arquitectura del IRC 2.3.4. El protocolo CTCP 1.3.1. Redes 2.3.4.1. CTCP PING 1.3.2. Servidores ATENCION!! Sobre el ping timeout 1.3.3. Canales 2.3.4.2. CTCP VERSION Tipos de usuarios de un 2.3.4.3. CTCP TIME canal 2.3.5. El protocolo DCC 1.4. Seguridad en IRC 2.4. Comandos de consulta al servidor 2.4.1. Comando MOTD 2. PROTOCOLO IRC 2.4.2. Comando LUSERS 2.1. Comandos de conexión 2.4.3. Comando VERSION 2.1.1. Conectando con el servidor 2.4.4. Comando STATS 2.1.2. Identificándonos 2.4.5. Comando LINKS 2.1.2.1. Comando NICK 2.4.6. Comando TIME 2.1.2.2. Comando USER 2.4.7. Comando TRACE 2.1.2.3. Comando OPER 2.4.8. Comando ADMIN 2.1.2.4. El IDENT 2.4.9. Comando INFO 2.1.3. Comando MODE (modos de 2.5. Comandos de consulta sobre los usuario) usuarios 2.1.4. Comando QUIT, y /quote 2.5.1. Comando WHO 2.2. Comandos de canales 2.5.1.1. Listado de usuarios 2.2.1. Comando JOIN 2.5.1.2. Listado de usuarios en 2.2.2. Comando PART canales 2.2.3. Comando MODE (modos de 2.5.1.3. Búsqueda de usuarios canal) por IP 2.2.4. Comando MODE (modos de 2.5.2. Comando WHOIS usuario por canal) 2.5.3. Comando WHOWAS 2.2.5. Comando TOPIC 2.2.6. Comando LIST 3. PARA TERMINAR 2.2.7. Comando INVITE 2.2.8. Comando KICK PC PASO A PASO Nº 9 Página 45
  • 46. SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC 1. DOCUMENTACIÓN objetivo de este artículo, en el cual no voy a hablaros sobre el mundillo del IRC, si no sobre 1. 1. Un lugar donde vivir el protocolo que hace que la cosa funcione. Un mes más, tenéis con vosotros la serie RAW, 1.2. Como siempre, empezamos pero esta vez para presentaros algo más que con los RFCs un protocolo. Y es que el IRC es más que eso, ya que es también un lugar donde vivir. Aunque muchos de vosotros paséis del tema, Realmente, hay una diferencia cualitativa entre ya que para saciar la curiosidad de la mayoría pasar tus ratos en Internet visitando páginas bastará con leer el artículo (que para eso está), Web y bajando algún que otro gigabyte, y aun así es mi deber dar las referencias para entre tener además una residencia fija en la los que queráis profundizar más en el tema. red, donde se sabe que se te podrá encontrar C o n s i d e ra n d o l a g ra n c a n t i d a d d e siempre que estés en persona en la red (es documentación que circula sobre IRC, me veo decir, que no esté sólo tu PC conectado mientras en la necesidad de insistir en que aquí sólo voy tú te tomas unas cervezas). a hablar de IRC como protocolo. Así que este Por supuesto, tú no eres el único habitante de no es otro más de los miles de artículos clónicos esa residencia, si no que la compartes con en los que se explican las mismas barbaridades millones de usuarios de todo el mundo que de siempre (takeovers, nukes, etc, etc). Así han escogido alguna red de IRC como su hogar que cambiemos el chip, e imaginemos que en la red. somos ingenieros de la IETF (Internet ¿Y por qué IRC, y no cualquiera de los otros Engineering Task Force), y no simples usuarios famosos sistemas de mensajería, como curiosos. ;-) Messenger, ICQ, ...? Pues hay muchos motivos, Con respecto a los RFCs, hay básicamente 4 pero yo creo que los más importantes son que abarcan todos los aspectos del protocolo sobre todo dos: IRC, aunque en este artículo hablaremos un - En primer lugar, por la libertad, ya que poco también de un quinto documento: el de IRC no es un sistema propietario, como lo IDENT. puede ser Messenger (Microsoft), ICQ El RFC que empieza explicando los conceptos (Mirabillis), y muchos otros. Al ser IRC un básicos de la arquitectura del IRC es el RFC estándar libre, tienes cientos de redes en todo 2 8 1 0 ( f t p : / / f t p . r f c - e d i t o r. o r g / i n - el mundo para escoger la que más te guste. notes/rfc2810.txt). Si conocéis ya bien el Hay redes al gusto de cada uno. Por ejemplo, funcionamiento del IRC os podéis saltar este si te gusta la anarquía (en el sentido de que RFC, aunque nunca está de más mirarlo por si no hay prácticamente bots de servicio) puedes acaso os enteráis de algo nuevo. escoger EfNet, en cambio, si te gusta ser Hay otro RFC, que es el que profundiza en el controlado, puedes escoger el IRC Hispano. tema de la administración de canales. Se - En segundo lugar, porque desde 1988 explican todos los tipos de canales, así como ( c u a n d o J a r k ko O i k a r i n e n p u s o e n sus modos. Este es el RFC 2811 (ftp://ftp.rfc- funcionamiento el primer servidor de IRC), las editor.org/in-notes/rfc2811.txt). redes de IRC han ido creciendo y convirtiéndose El tercer RFC es el más interesante, y es sobre en un complejo universo autosuficiente. Y digo el que más hablaremos a lo largo del artículo. autosuficiente porque puedes conseguir En él se explica el protocolo utilizado entre un cualquier cosa utilizando tan sólo el IRC. Podría cliente y un servidor de IRC, y es el RFC hablaros de los miles de canales de warez, y 2 8 1 2 ( f t p : / / f t p . r f c - e d i t o r. o r g / i n - de otras muchas cosas, pero ese no es el notes/rfc2812.txt). Página 46 PC PASO A PASO Nº 9
  • 47. SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC Por último, en el RFC 2813 (ftp://ftp.rfc- con mayor número de usuarios (en el momento editor.org/in-notes/rfc2813.txt) se entra en en que escribo esto hay casi 124000 usuarios detalle en el protocolo utilizado para la conectados) comunicación de dos o más servidores de - Undernet: Otra red clásica. Hace años IRC. Si hemos leído el primer RFC ya sabremos se movía mucho warez por ahí, pero las cosas que la arquitectura de IRC es distribuida, pero ya no están como antes. Aún así sigue siendo tranquilos, que ahora mismo os lo explico. :-) una red con bastante vida. - Dalnet: Bastante parecida a Undernet. 1.3. Arquitectura del IRC También se movía mucho warez, y cuenta también con bastantes usuarios. Esto será un breve resumen, ya que escaparía - IRC-Hispano: Es una red española, de la intención de este artículo el hacer una a diferencia de las otras. La mayoría de los descripción detallada de las cuestiones que usuarios son españoles, y no se ven apenas están más allá de la mera descripción de un sudamericanos. Esta red, sobre todo en los protocolo. últimos años, ha sufrido gran cantidad de Podríamos estructurar, simplificando mucho, la polémicas por usuarios descontentos por la arquitectura del IRC en 3 capas: política de sus administradores. Yo, - redes personalmente, hace más de un año que juré - servidores no volver a pisarla, pero no voy a entrar aquí - canales en polémicas. ;-) - Red latina: Otra red de habla hispana 1.3.1. Redes pero, al contrario que la anterior, ésta está poblada sobre todo por sudamericanos, y Existe una gran variedad de redes de IRC apenas se ven españoles. Es una red bastante totalmente independientes. Cada red sería insegura, aunque explicar el por qué se saldría como un mundo aparte. Por ejemplo, el canal del objetivo de este artículo. 0:) #hackxcrack puede existir tanto en EfNet como en el IRC-Hispano, pero nada tendrán que ver 1.3.2. Servidores entre sí ambos canales, ya que en cada uno habrá una gente diferente, y unas normas Cada red de IRC está formada a su vez por un diferentes. cierto número de servidores. Todos los Nombro aquí unas cuantas redes con algún servidores forman una red única (o así debería comentario personal (basado únicamente ser) cuya finalidad es hacer que la naturaleza en mi experiencia) sobre sus características: distribuida del servicio de IRC sea transparente - EfNet: la primera red que se mantiene al usuario. Es decir, independientemente del desde el comienzo del IRC hasta nuestros días. servidor al que te conectes, tendrás los mismos Técnicamente, funciona bastante bien (pocos servicios y tendrás comunicación con las mismas splits, poco lag, etc) y, al ser una red tan personas y los mismos canales, siempre y antigua, tiene ya muchos canales firmemente cuando los servidores pertenezcan a la misma consolidados en los que se pueden encontrar red. Esto en la práctica no es tan perfecto como gran cantidad de recursos (información, lo pinto aquí, ya que hay muchos problemas software, etc). Su principal inconveniente podría como los splits, o las diferencias en los detalles ser quizá la anarquía, ya que no existen bots de configuración entre servidores. de servicio para registro de nicks y canales, La arquitectura distribuida de las redes de IRC pero eso es según se mire, ya que muchos lo permite tener un mayor número de usuarios, pueden considerar una ventaja. Es quizá la red aunque el sistema es poco eficiente, y cada PC PASO A PASO Nº 9 Página 47
  • 48. SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC vez que se conecta un nuevo usuario aumenta Dalnet: irc.dal.net la carga de todos los servidores (y no sólo del irc.eu.dal.net servidor al que se ha conectado), ya que todos Undernet: eu.undernet.org los servidores tienen que mantener unas tablas us.undernet.org de datos comunes, así como una comunicación constante de todo tipo de eventos, para 1.3.3. Canales “garantizar” la transparencia de la arquitectura de la red de cara al usuario. Dentro de cada red, habrá un cierto número Por poner un ejemplo, en el instante en que de canales de todo tipo. Hay canales temáticos escribo esto, hay 4081 usuarios conectados (distintos estilos o grupos de música, distintos al servidor de EfNet al que estoy yo conectado, hobbies, etc), así como canales de colectivos mientras que en total, en todo EfNet, hay casi de toda índole (desde grupos de warez, hasta 124000 usuarios. simples grupos de amigos). Cualquiera puede crear un canal con tan sólo escribir un comando, por lo que el número de canales es realmente grande. Por ejemplo, mientras escribo esto, en EfNet están funcionando en este instante 44345 canales. dicho, la arquitectura distribuida de una red de IRC es transparente al usuario, por lo que cualquier usuario conectado a una determinada red debería ver los mismos canales que cualquier otro usuario que esté conectado a otro servidor de la misma red. Mapa de servidores del IRC-Hispano. En http://wjr.or g/?tar get=ircmaps& Sólo hay una salvedad a esto, y es que existe la state=expand tenéis el mapa de servidores de EfNet. posibilidad de crear canales locales para cada servidor, y son los canales A modo de ejemplo, estos son algunos que, en lugar de comenzar por # comienzan servidores de algunas redes. Se pueden por &. encontrar listas completas en la Web de cada Por ejemplo, si estoy en el servidor irc.isdnet.fr red, o bien en la ventana de conexión de de EfNet y creo el canal #hackxcrack, cualquier cliente de IRC: cualquier usuario de EfNet podrá entrar en ese canal, esté en el servidor que esté. En cambio, Efnet: irc.isdnet.fr si creo el canal &hackxcrack, sólo podrán irc.homelien.no entrar en él los usuarios de EfNet que además efnet.demon.co.uk estén conectados a través del servidor Página 48 PC PASO A PASO Nº 9
  • 49. SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC irc.isdnet.fr. paciencia, y esperad al próximo mes para conocer los entresijos del DCC. ;-) Tipos de usuarios de un canal : 2. PROTOCOLO IRC Para comprender muchas de las cosas que explicaré a lo largo del artículo, hay que conocer Vamos ya al grano. los 3 tipos básicos de usuarios en cualquier Podríamos dividir el IRC como protocolo en 3 canal: capas de abstracción: - operadores (@) : son los usuarios con privilegios para administrar la configuración - script del canal. En la lista de usuarios del canal, su - aplicación cliente nombre aparecerá precedido por una arroba - protocolo raw @. A lo largo del artículo veremos en qué consisten exactamente los privilegios de un La capa script sería aquella en la que se realizan operador. Es importante que no confundamos las acciones mediante menús e iconos. Cuando un operador de canal con un operador de la se pulsa uno de estos iconos o menús, lo que red o del servidor (a veces llamados IRCops). hace nuestro script en realidad es ejecutar una - voz (+) : su nombre aparece serie de comandos de las capas inferiores que precedido por una cruz +. En los canales veremos ahora mismo. moderados (ya veremos más adelante lo que La capa aplicación cliente es quizá la más significa esto), son los únicos que pueden conocida por parte de los asiduos al IRC. Son hablar en el canal sin ser operadores. En canales aquellos comandos que escribimos directamente no moderados, se utiliza muchas veces como desde el cliente de IRC, utilizando como prefijo signo de distinción, aunque no les da ningún la famosa barra /. privilegio sobre la administración del canal. Al contrario de los que algunos piensan, - usuarios llanos : todos los que no estos comandos no son los que envía a pelo tengan ni @ ni +. :-) nuestro cliente de IRC al servidor. Al igual que los menús y los iconos, siguen siendo 1.4. Seguridad en IRC simplificaciones para hacer más fácil el manejo al usuario. ¿Os creéis que os voy a contar aquí lo que En la capa de protocolo raw es en la que se podéis encontrar en cualquiera de los millones envían a pelo los comandos que entiende el de tutoriales sobre “hacking” en IRC? Mi objetivo servidor, y ésta es en la que se va a centrar el es aportar algo nuevo, así que si queréis conocer artículo. Éste es el protocolo que tendréis que los típicos truquitos de toda la vida, recurrid al utilizar si conectáis por Telnet a un servidor omnisciente Google. :-) de IRC, ya que es el único que entiende el En este artículo me voy a centrar sólo en el servidor. Algunos comandos difieren muy poco protocolo IRC. entre la capa raw y la anterior (en muchos Lo que sí que puedo aportar con respecto a casos, la única diferencia es que en la capa seguridad, y que no encontraréis en cualquiera raw el comando es el mismo pero sin la barra de esos tutoriales clónicos, es la seguridad en / delante), pero otros son bastante más el protocolo DCC (utilizado para conexiones complejos (por ejemplo, los comandos de DCC, punto a punto dentro de IRC, por ejemplo para que explicaré en el próximo artículo). chats privados, o para envío de archivos), pero Nos olvidamos de las demás capas, y nos el DCC es un protocolo en si mismo, y merece centramos a partir de ahora tan sólo en la capa un artículo entero para el solito, así que raw. PC PASO A PASO Nº 9 Página 49
  • 50. SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC 2.1. Comandos de conexión comando NICK cada vez que queramos cambiar nuestro nickname. 2.1.1. Conectando con el servidor 2.1.2.2 Comando USER ¿Tenéis ya vuestro cliente de Telnet calentando motores? Espero que así sea, porque entramos El segundo paso consiste en dar el resto de ya directamente con el tema. datos para identificarnos, es decir: el nombre El puerto estándar para los servidores de IRC de usuario, nuestro nombre “real”, y los modos es el 6667, aunque dependiendo de cada de usuario. servidor, el servicio podrá encontrarse en otro puerto. Por eso es necesario tener siempre a mano los detalles de cada servidor. Si sois ya usuarios de IRC, supongo que miles A lo largo del artículo vamos a utilizar el servidor de veces habréis hecho un WHOIS a alguien, irc.isdnet.fr de EfNet (EfNet es una red libre, y la primera línea que os habrá respondido el por lo que al utilizarlo como ejemplo no entro servidor será algo parecido a esto: en polémicas de partidismos; Además, en EfNet se encuentra el canal #hackxcrack en el que podréis encontrarme normalmente), así que esto es lo que tendríais que escribir para lanzar la aplicación de Telnet: telnet irc.isdnet.fr 6667 Como vemos aquí, lo primero que nos muestra 2.1.2. Identificándonos el whois es el nick (PyC), lo segundo el nombre de usuario (Pic2), lo tercero la IP, o un DNS Una vez conectados, tenemos que ser rápidos, asociado a esa IP (218-13-21- ya que el servidor tiene un timeout, así que 72.uc.nombres.ttd.es), y por último el nombre tendremos que tener preparados los comandos “real” del usuario (PyC PoC). Tanto en el campo de identificación para lanzarlos rápidamente. de nombre de usuario, como en el de nombre Son 2 los comandos a ejecutar para completar real en principio podemos poner lo que la entrada en el servidor: queramos, por lo que no le demos más vueltas. El único detalle que hemos de saber es que en 2.1.2.1. Comando NICK el campo de nombre real es el único en el que se pueden separar palabras por espacios. El primer paso es muy sencillo, simplemente Lo único importante a la hora de identificarnos tenemos que indicar nuestro nickname. Si, por sería el campo de modos, pero en realidad en ejemplo, queremos que nuestro nick sea PyC, muchos servidores no está implementado el sólo tenemos que escribir: cambio de modos durante la identificación (por NICK PyC ejemplo, en el que estamos utilizando, Si nos dice que el nick ya está en uso, podemos irc.isdnet.fr, no está implementado), por lo que volver a ejecutar el comando NICK tantas normalmente hay que cambiar los modos veces como queramos, hasta que encontremos después de habernos identificado. un nick libre. El campo de modos en la identificación permite Después de haber completado el proceso de poner automáticamente los modos de usuario identificación (con este comando y el que +w y +i, mediante una máscara de bits (bit explico a continuación), podremos utilizar el 2 para +w, y bit 3 para +i). Por tanto, estos Página 50 PC PASO A PASO Nº 9
  • 51. SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC son los valores que habría que poner en este DNS. Pues el nickname lo especificamos campo según los modos que queramos activar: precisamente en el primer comando (comando NICK), y la IP la obtiene directamente el servidor de la conexión que tenemos establecida (cualquier conexión TCP/IP es una conexión punto a punto que requiere de forma imprescindible que los dos interlocutores conozcan la dirección IP del otro). Aunque insisto en que no es mi objetivo explicar 2.1.2.3. ¿Y si fuésemos en este artículo el funcionamiento del IRC a operadores? nivel de usuario, os recuerdo que: - el modo +i es el modo de usuario Si fuésemos operadores (IRCops, o como los invisible, que permite que tu nick no aparezca quieras llamar) de la red, tendríamos que utilizar en la lista de usuarios de un canal cuando se un comando adicional para identificarnos como hace un /who de ese canal. Por lo demás, el operadores. Para eso se utiliza el comando usuario es perfectamente visible mediante OPER, con la siguiente sintaxis: /whois, o para los usuarios que comparten OPER nombre password algún canal con él, por lo que desde luego esta El primer campo es el nombre del operador, y invisibilidad no es comparable a la del anillo el segundo su password de operador. único. ;-) - el modo +w sirve para recibir los 2.1.2.4 El IDENT mensajes wallops, que son los mensajes para administración de la red que se envían a los Seguramente habréis oído hablar más de una operadores y a los demás interesados. En vez acerca del famoso IDENT, pero es probable muchas redes este modo no tiene ningún efecto. que no tengáis más que una idea vaga de lo Como en nuestro ejemplo el servidor no soporta que es. Probablemente lo habréis visto en la el cambio de modos en la identificación, nosotros configuración de vuestro cliente de IRC, y por pondremos un 0. Vamos a ver entonces cómo eso seguramente habéis pensado que forma quedaría el comando USER para el usuario parte del protocolo IRC, pero no es así. PyC: El protocolo IDENT es un protocolo totalmente independiente y, de hecho, no sólo se usa en USER Pic2 0 * : PyC PoC relación con IRC. Este protocolo está asignado al puerto 113 de TCP. En el caso concreto Veamos campo por campo: que nos ocupa no podemos estudiarlo por En primer lugar, tenemos el nombre de Telnet, ya que nosotros seremos los usuario: Pic2. servidores de ident, y no los clientes. En segundo lugar, la máscara de modos: 0. Algunos servidores de IRC no permiten entrar En tercer lugar, un campo que no se utiliza, a ningún usuario que no tenga un servidor de por lo que podemos poner cualquier cosa: *. ident. Durante un tiempo, el servidor que Por último, e incluyendo espacios si queremos, utilizamos para el ejemplo restringía sus separado del resto de campos por dos puntos conexiones de esta forma, así que espero que (:), tenemos el nombre “real”: PyC PoC. para cuando salga a la luz el artículo no tengamos este problema. Este problema, al ¿De dónde salen entonces el resto de campos menos en los casos en que yo lo he visto, suele del whois? Es decir: el nickname, y la IP, o ser siempre cuestión de un servidor concreto, PC PASO A PASO Nº 9 Página 51
  • 52. SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC y no de toda la red, por lo que si un servidor [16:13] -luna.irc-hispano.org- *** Notice no nos permite entrar sin tener servidor identd -- sol.irc-hispano.org adding GLINE for activo, podemos buscar otros servidores de la *@usuario69.lco.es, expiring at misma red hasta encontrar uno que sí que nos 1049296487 (Wed Apr 2 17:14:47 2003): lo permita. Proxy abierto o Sub7 server, desinfectese El protocolo IDENT viene especificado en el El servidor nos acaba de decir que en la dirección RFC 1413 (ftp://ftp.rfc-editor.org/in- usuario69.lco.es está funcionando, o bien un notes/rfc1413.txt). servidor sub7, o bien un Proxy. Basta con que Como resumen, éste protocolo se utiliza para ahora hagamos un escaneo de los puertos de verificar la identidad del usuario de una esa IP para encontrar su vulnerabilidad (en conexión TCP/IP específica, que viene caso de que sea un sub7) o su “servicio” identificada por un par de puertos (el puerto disponible (en caso de que sea un Proxy). del cliente, y el puerto del servidor). Son muy variopintos estos mensajes, pero nos pueden dar en muchos casos información útil. 2.1.3. Más sobre los modos de Otra utilidad más rebuscada de esto, usuario (comando MODE) concretamente en el IRC-Hispano, es conseguir la IP de un usuario mediante un poco de Tanto si nuestro servidor no permitía cambiar ingeniería social. Lo cuento sólo como anécdota, los modos de usuario directamente en la ya que tiene poco interés, pero al menos es identificación, como si queremos fijar otros curioso. Fue uno de mis muchos experimentos modos de usuario aparte del +w y el +i, chorras. El IRC-Hispano utiliza un sistema de podemos utilizar en cualquier momento el direcciones virtuales que oculta la IP de los comando MODE. usuarios, por lo que hay que recurrir a diversas Este es un resumen de los modos de usuario tretas (que no voy a detallar porque se sale que merecen mención: del tema) para conseguir estas IPs. Como - modo +i: ya hablé de él en el punto sabréis los residentes en el IRC-Hispano, existe anterior. :P un bot de servicio llamado _antispam que se - modo +w: ídem. :P encarga de que los únicos que se lucren en el - modos +o y +O: indica que el usuario IRC-Hispano sean sus administradores, es un operador de la red, o un operador local, intentando evitar que nadie publique URLs de respectivamente. Si no te has identificado páginas Web con supuestos fines publicitarios, previamente con OPER, olvídate de este modo. a no ser que paguen previamente. El que ;-) mencione una de estas URLs en un canal en el - modo +s: este modo, si está que resida _antispam, será g-lineado implementado en el servidor, puede ser bastante (expulsado de la red) automáticamente. Así interesante. En el servidor del ejemplo que lo que hice en esta ocasión, fue conseguir (irc.isdnet.fr), este modo no está implementado. mediante un mínimo de esfuerzo de ingeniería Podemos probarlo, por ejemplo, en el IRC- social (algo en plan: “¿alguien sabe una Web Hispano. Este modo sirve para recibir mensajes donde haya tal o cual?”) que el usuario en del servidor, referentes a g-lines, kills, etc. ¿Y cuestión escribiese una de las URLs malditas. qué utilidad puede tener esto? Pues se puede Inmediatamente después de escribirla, fue g- extraer información útil si miramos con lineado por el bot _antispam. Inmediatamente detenimiento los mensajes. Permanezcamos miré los mensajes del servidor (que podía ver un rato conectados logeando los mensajes del gracias al modo +s), y vi algo parecido a esto: servidor y veremos, por ejemplo, algo como [16:58] -luna.irc-hispano.org- *** Notice esto: -- sol.irc-hispano.org adding GLINE for Página 52 PC PASO A PASO Nº 9
  • 53. SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC *@61-136-23-69.dialup.uni2.es, expiring Con esto cerramos la conexión con el servidor at 1048696764 (Wed Mar 26 17:39:24 de IRC, enviando como mensaje de despedida 2003): Publicidad no autorizada. Si desea “Hasta pronto!”. Este mensaje lo leerán los contratar servicios publicitarios, consulte usuarios de todos los canales en los que estés http://www.irc-hispano.org/servicios/ cuando cierres. Ese g-line correspondía con el usuario que Si queremos enviar esto mismo desde nuestra acababa de ser expulsado por _antispam, por aplicación cliente de IRC (mIRC, kvirc, lo que ya tenía su IP: 61.136.23.69. xchat, o el que sea), sólo tendremos que - modo +x: Claro que, si somos unos escribir: maestros de la ingeniería social, podemos /quote QUIT :Hasta pronto! conseguir que el usuario del IRC-Hispano cuya Y esto será igual para todos los comandos IP queremos conocer escriba en su cliente de explicados en este artículo, incluidos los ya IRC: /mode usuario -x. Donde usuario es su explicados, excepto el comando USER. nick. Con el modo –x inhabilitamos la dirección virtual de ese usuario, por lo que cuando le 2.2. Comandos de canales hagamos un whois veremos directamente su IP, y no una dirección virtual. 2.2.1. E n t r a n d o en canales (comando JOIN) Como hemos visto al hablar de este último modo, un usuario sólo puede cambiar sus Si estamos acostumbrados a manejar propios modos (es de cajón, ¿no?). La forma aplicaciones cliente de IRC, veremos que de de hacer esto mediante el protocolo RAW es momento hay pocas diferencias entre los típicos prácticamente igual que desde la aplicación comandos con la barra / y el protocolo raw de cliente. Por ejemplo, para activar el modo +s, IRC, y eso sigue siendo igual para el comando siendo el usuario PyC, haremos: para entrar en un canal: MODE PyC +s JOIN #hackxcrack Es el comando raw para entrar en el canal 2.1.4. Comando QUIT (y el /quote) #hackxcrack. Este canal existe en EfNet (que es precisamente Ya que estoy siguiendo más o menos el orden donde estamos haciendo las pruebas), y es en el que se explican los comandos en el RFC probable que me encontréis ahí, así que podéis (al menos los que considero importantes), pasaros para vuestras pruebas. ;-) seguiré con el comando QUIT. No creáis que Como particularidades del comando JOIN, es demasiado pronto para cerrar la conexión, puedo decir 4 cosas: porque quizá os convenga saber que para En primer lugar, algunos canales necesitan un probar el resto de comandos podéis cerrar ya password para entrar. Supongamos que el vuestra aplicación de Telnet. Y es que cualquier password del canal #hackxcrack es cliente de IRC proporciona un mecanismo para pcpasoapaso. En ese caso el comando para enviar mensajes raw al servidor, y es el comando entrar en el canal será: /quote. Después de un /quote, todo lo que JOIN #hackxcrack pcpasoapaso se escriba será enviado tal cual al servidor, por La segunda particularidad es que puedes entrar lo que deberá seguir el protocolo raw de IRC en varios canales utilizando sólo un comando (que es el protocolo que explico en este artículo). JOIN, separando los canales por comas. Por Empezamos probando el comando QUIT desde ejemplo: nuestro cliente de Telnet: JOIN #hackxcrack,#spanishwarez QUIT :Hasta pronto! Tercera curiosidad, si escribimos: PC PASO A PASO Nº 9 Página 53
  • 54. SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC JOIN 0 sólo pueden hablar en el canal los usuarios que Saldremos simultáneamente de todos los previamente han entrado en el mismo. Aunque canales en los que previamente hayamos hecho esto os suene raro, si un canal está en modo un JOIN. –n (es decir, no está en modo +n) cualquiera Por último, si hacéis JOIN a un canal que no puede hablar sin necesidad de estar dentro del ha sido creado por nadie previamente, canal. Ya veremos más adelante cómo se hace automáticamente ese canal será creado y tú esto. serás operador del canal (la famosa @). En el - modo +s (secret) : el canal no momento en que abandone el canal el último aparecerá en la lista de canales de un usuario usuario, el canal desaparecerá (es decir, cuando se haga whois a este usuario. simplemente será borrado de las tablas de - modo +t (topic) : el topic del canal datos que mantienen en tiempo real los sólo puede ser cambiado por los operadores servidores). (@). - modo +k (key) : sólo se puede entrar 2.2.2. S a l i e n d o d e canales al canal si se conoce el password. (comando PART) - modo +l (limit) : limita el número máximo de usuarios que pueden entrar en el Una vez más, el comando nos será ya familiar: canal. PART #hackxcrack Sirve para salir del canal #hackxcrack. Si Todos estos modos sólo pueden ser cambiados queremos incluir un mensaje de despedida, por los operadores (@) del canal. podemos hacer: Como ejemplo, para poner el canal PART #hackxcrack :me piro! #hackxcrack en modo secreto (suponiendo En el comando PART también podemos poner que seamos operadores del canal) haremos: varios canales, separados por comas. MODE #hackxcrack +s Si luego nos arrepentimos, y queremos quitar este modo, podemos hacer: 2.2.3. Modos de canal (comando MODE #hackxcrack –s MODE de nuevo) Para limitar el número de usuarios a 22: MODE #hackxcrack +l 22 El comando MODE no sólo sirve para cambiar A partir de este momento, cuando intente entrar los modos de usuario, sino también los modos (con JOIN) alguien en el canal, habiendo ya de canal. En el RFC 2811 tenéis detallados 22 personas, no podrá hacerlo hasta que alguien todos los modos de canal, así que sólo os salga del canal. resumo los más importantes: Como último ejemplo, para poner el password - modo +i (invite only) : sólo pueden pcpasoapaso en el canal #hackxcrack, entrar en el canal los usuarios que son invitados haremos: explícitamente, mediante el comando INVITE, MODE #hackxcrack +k pcpasoapaso o bien aquellos que están en la lista de A partir de este momento, para entrar en el excepción de invite del canal (están canal habrá que hacerlo con el comando: permanentemente invitados). JOIN #hackxcrack pcpasoapaso - modo +m (moderated) : sólo Para lo cual, por supuesto, habrá que conocer pueden hablar en el canal los usuarios que previamente el password pcpasoapaso. ;-) son operadores (@), y los que tienen voz También se pueden poner simultáneamente (+). varios modos, por ejemplo: - modo +n (no outside messages) : MODE #hackxcrack +ntk pcpasoapaso Página 54 PC PASO A PASO Nº 9
  • 55. SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC Activaría simultáneamente los modos +n, +t, El tema de las máscaras (los otros 3 modos) y +k con password pcpasoapaso. es ya más complejo. Vamos a ir viendo distintos tipos de máscaras mediante ejemplos con los 2.2.4. Modos de usuario para un distintos modos. canal (comando MODE una vez En primer lugar, imaginemos que queremos más) que en el canal #españa sólo entre gente desde una IP española. Para ello podemos hacer: No termina aquí la utilidad del comando MODE. M O D E # e s p a ñ a + i Pero no penséis que éste es el comando más MODE #españa +I *!*@*.es polifacético, ya que el comando PRIVMSG, El primer comando pondrá el canal en modo que veremos más adelante, le supera con invite only, por lo que sólo podrán entrar los creces. :-) usuarios que sean invitados explícitamente, o Los modos de usuario para un canal son aquellos bien los que estén en la lista de excepción de que aplican unas normas o unos privilegios invitaciones. Esta lista es la que se administra para un determinado usuario sólo dentro de con el modo +I, y eso es precisamente lo que un determinado canal. Todos ellos pueden ser hacemos con el segundo comando, en el que fijados sólo por un operador del canal. especificamos que todos aquellos usuarios, se Estos modos vienen también especificados en llamen como se llamen, que vengan de un el RFC 2811, así que resumo aquí los más dominio .es, puedan entrar al canal sin importantes: necesidad de ser invitados explícitamente. - modo +o (operator) : convierte a un usuario en operador del canal (la famosa Otra forma de hacer esto mismo, sería la @). siguiente: - modo +v (voice) : da voz a un MODE #hackxcrack +b *!*@* usuario en un canal (el famoso +). MODE #hackxcrack +e *!*@*.es - modo +b (ban) : sirve para crear Con el primer comando, denegamos el acceso máscaras que denieguen el acceso al canal a todos los usuarios. Con el segundo, a un usuario, o bien a un grupo de usuarios, hacemos una excepción a esa lista de según cómo se forme la máscara. Esto lo denegaciones de acceso, permitiendo que sí explicaré más adelante. que puedan entrar los que vengan desde un - modo +e (exception) : sirve para dominio .es. permitir acceso a un usuario concreto que esté dentro de las máscaras de denegación. Ahora vamos a ver cómo denegar el acceso al Ya lo veremos luego, que suena un poco lioso. usuario cuyo nickname sea PyC: :-) MODE #hackxcrack +b PyC!*@* - modo +I (invitation mask) : Si PyC tiene 2 dedos de frente, bastará con permite crear máscaras para que determinados que se cambie el nick para poder entrar (con usuarios puedan entrar en un canal en modo el comando NICK). invite only (+i) sin necesidad de que nadie les invite explícitamente. A veces hay canales en los que, por el motivo que sea, no quieren que los usuarios utilicen El ejemplo más sencillo es el de los modos +o determinados scripts. Los scripts suelen poner y +v. Por ejemplo: por defecto un determinado nombre de MODE #hackxcrack +o PyC usuario a la hora de identificarse, por lo que Da @ al usuario PyC. es fácil identificarlos siempre y cuando el usuario PC PASO A PASO Nº 9 Página 55
  • 56. SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC no haya modificado este dato a posteriori. de PC Paso a Paso. Supongamos, por ejemplo, que queremos El topic sólo puede ser modificado por los banear (denegar el acceso) a todos los operadores del canal, a no ser que el canal usuarios que utilicen el script Ircap 7.1. Si esté en modo –t (es decir, que no tenga activo vemos el whois de un usuario de Ircap 7.1, el modo +t). será parecido a éste: PyC is ~ircap71@201.Red-22-15- 2.2.6. Buscando canales (comando 15.pooles.rima-tde.net * LIST) http://www.ircap.net ! Como vemos, el campo nombre de usuario Aquí la cosa se pone fea. :-( es ~ircap71, que es el que pone por defecto ¿Habéis usado alguna vez la función LIST este script. Por tanto, podemos hacer: CHANNELS de mIRC para buscar canales que MODE #hackxcrack +b *!*ircap71@* contengan una determinada cadena de texto? Para denegar el acceso a todos los usuarios que tengan ircap71 en el nombre de usuario. Por último, podemos banear una IP específica de la siguiente forma: MODE #hackxcrack +b *!*@201.Red-22- 15-15.pooles.rima-tde.net Está claro, ¿no? ;-) 2.2.5. El Topic del canal (comando TOPIC) El topic es, por así decirlo, un texto de presentación de un canal. Cuando entras a un canal, lo primero que recibes es el texto del topic. Las utilidades del topic son muchas: dar una serie de normas básicas para los usuarios del canal (estos topics suelen permanecer fijos), dar alguna URL interesante de actualidad Menú en mIRC para buscar la cadena "mp3" en la (estos topics suelen cambiar de un día para lista de canales de EfNet. otro), o simplemente escribir la chorrada de turno (he llegado a ver conversaciones enteras entre 2 o más operadores cambiando el topic Lo que hace esta función de mIRC en realidad en lugar de escribiendo en el canal). es pedir al servidor la lista de todos los canales, La primera utilidad del comando TOPIC es y luego el propio mIRC hace la búsqueda de simplemente ver el texto actual del topic: la cadena de texto dentro de la lista que le ha TOPIC #hackxcrack proporcionado el servidor. Por tanto, no hay Nos mostrará el topic actual del canal forma de que podáis hacer una búsqueda #hackxcrack. selectiva lanzando comandos raw desde Para modificar el topic, simplemente añadiremos Telnet. :-( un campo más: Para obtener la lista completa de canales, TOPIC #hackxcrack :Bienvenidos al canal con sus topics, y el número de usuarios, basta Página 56 PC PASO A PASO Nº 9
  • 57. SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC con que ejecutéis: sin problemas. LIST En el caso de que el usuario tenga IP fija, no hay más misterio, baneas directamente la IP 2.2.7. Comando INVITE y se acabó (a no ser que utilice un bouncer, pero eso ya es otra historia). Por seguir con el orden del RFC, tenemos un comando muy simple, que es para invitar a 2.3. Al fin vamos a hablar (el un usuario a un canal, normalmente porque versátil PRIVMSG) el canal se encuentra en modo invite only (+i): ¡Tanto rollo y todavía no sabemos como decir INVITE PyC #hackxcrack “hola” en un canal! Aquí es cuando vemos al Con esto invitamos al usuario PyC al canal fin una diferencia importante entre los comandos #hackxcrack. famosos de la barra /, y el protocolo raw. Pensad en todas las cosas de las que todavía 2.2.8. El comando prohibido no he hablado: escribir en un canal, escribir en (comando KICK) una query (mensajes privados entre 2 usuarios), lanzar comandos CTCP, lanzar comandos DCC... Normalmente, si eres una persona madura e ¡Pues todas ellas se hacen con un único inteligente, no necesitarás utilizar este comando comando! Y éste comando es el mágico salvo en situaciones muy concretas. Este PRIVMSG. Vamos a ver todo esto con detalle. comando permite a los operadores expulsar a un usuario de un canal. Por ejemplo: 2.3.1. Mensajes privados (queries) KICK #hackxcrack PyC :nos estas floodeando Para hablar en privado con otro usuario, basta Expulsaría al usuario PyC del canal #hackxcrack, con que hagamos: exponiendo el motivo: “nos estas floodeando”. PRIVMSG PyC :hola! Si queremos expulsar permanentemente El usuario PyC recibirá un mensaje privado a ese usuario del canal, tendremos que diciendo “hola!”. Quizá os preguntaréis: ¿cómo banearle primero, es decir, aplicar una que un mensaje privado? ¿y que hay del query máscara para denegar su acceso al canal: de toda la vida? MODE #hackxcrack +b PyC!*@* Y es que supongo que muchos de vosotros KICK #hackxcrack PyC :vete y no vuelvas tendréis la equivocada idea de que una query Claro que, ya he dicho que este ban es poco es una especie de conexión establecida entre efectivo, ya que basta con que el usuario se 2 usuarios, pero eso no es así. Esa es la ilusión cambie de nick para poder entrar. Según cada que os da vuestro cliente de IRC al abrir una caso será más efectivo un tipo de ban u otro. ventana específica para la query, pero en Por ejemplo, para usuarios con IP dinámica realidad las queries no son más que sucesiones habría que banear un subdominio, siempre de mensajes entre 2 usuarios, sin ningún tipo y cuando no haya más usuarios legítimos en de establecimiento de conexión. ese subdominio (en ese caso tendríamos que utilizar además una mascara de excepción con 2.3.2. Escribiendo en el canal el modo +e para los usuarios legítimos). Otra solución para la IP dinámica, es banear según Para escribir a todos los usuarios de un canal, el campo nombre de usuario, pero ese el formato es el mismo: campo es fácilmente modificable, por lo que PRIVMSG #hackxcrack :hola a todos! si el tío es un poco listo podría volver a entrar Con esto escribimos en el canal #hackxcrack PC PASO A PASO Nº 9 Página 57
  • 58. SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC la frase “hola a todos!”. está bien conocer estas chorradas, ¿no? :-) Ahora que la cosa es un poco diferente a lo que estáis acostumbrados a hacer con el cliente 2.3.4. El protocolo CTCP de IRC, es buen momento para probar el comando /quote para hacer esto mismo, El comando PRIVMSG es tan versátil que desde vuestra aplicación cliente de IRC: encapsula él solito todo un protocolo, que es /quote privmsg #hackxcrack :hola a el CTCP, o Client To Client Protocol. todos! No voy a entrar en muchos detalles sobre el protocolo CTCP, así que sólo hablaré de los 2.3.3. Escribiendo en un canal en comandos más básicos. el que no estamos 2.3.4.1. CTCP PING Escribir en un canal en el que no estemos (no hayamos hecho previamente un JOIN) es igual El comando más típico de CTCP es el PING. de sencillo, salvo que tiene un prerequisito Su utilidad es doble: en primer lugar, saber si importante, y es que el canal tiene que estar un usuario aparentemente conectado realmente en modo –n, es decir, que no esté en modo lo está, ya que muchas veces cuando un usuario +n. pierde la conexión con el servidor, durante un Si tenemos la suerte de encontrar un canal en tiempo su nick sigue apareciendo como si modo –n podemos hacer una chorrada para siguiese conectado (¿os suena el famoso ping pasar el rato. En muchos clientes de IRC, la timeout?), y en segundo lugar mide el lag letra i mayuscula se ve prácticamente igual que tienes con respecto a un usuario. que la letra ele minúscula. Si, por ejemplo, ¿Qué es el lag? Es simplemente el retardo tenemos en el canal #lameretes un usuario que hay entre 2 usuarios, es decir, el tiempo cuyo nick sea zer0c00l (nick de lamer de que transcurre entre que uno escribe algo y el primera), podemos ponernos nosotros un nick otro lo lee. El lag varía según la carga del bastante parecido, que sería zer0c00I. Este servidor o incluso según el ancho de banda nick, cambiando la ele por una i mayúscula, disponible de los usuarios. La peor situación es se verá bastante parecido en un cliente de cuando hay varios usuarios hablando, cada uno IRC, por lo que será dificil notar la diferencia con un lag diferente pero muy alto, por lo que a simple vista, a no ser que estén los 2 nicks se forman conversaciones sin sentido en el que uno al lado del otro. Una vez puesto ese nick, cada uno da una respuesta que llega a los sin entrar en el canal #lameretes, escribiremos: demás en un momento diferente. PRIVMSG #lameretes :pero mira que soy Yo personalmente utilizo el PING de vez en lamer cuando para medir mi propio lag. Lo que hago La gente del canal #lameretes, a no ser que es lanzarme un PING a mi mismo. En el mejor sean un poco avispados, creerá que es zer0c00l de los casos debería haber un lag de 0 segundos, quien está diciendo eso, ya que no verán a pero muchas veces este lag puede ser de varios ningún otro usuario con un nick similar en el segundos, y con eso ya sabes que, como canal. Por otra parte, zer0c00l probablemente mínimo, todo lo que leas o escribas tendrá un se volverá loco creyendo que le han hackeado, retraso de tantos segundos. poseído, o algo así. Por supuesto, esto es una tremenda gilipollez, y cualquiera con 2 dedos Para cualquier comando CTCP tenemos que de frente lo descubriría (sobre todo porque utilizar el ascii 1, que aquí representaremos cualquiera con 2 dedos de frente normalmente como: . Como espero que ya sepáis, podeis tendría el canal en modo +n), pero siempre poner escribir cualquier ascii del cual conozcáis Página 58 PC PASO A PASO Nº 9
  • 59. SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC su valor numérico pulsando la tecla Alt y, sin P y C ! ~ P i c @ 8 0 - 2 5 - 3 2 - soltarla, escribiendo su valor en el teclado 27.uc.nombres.ttd.es NOTICE Fulanin numérico. Por tanto, para escribir el ascii 1, : PING 1048765767 pulsaremos la Alt+1. Si la aplicación que estás Como vemos, responde con el mismo número, utilizando no te permite escribir este ascii, para que podamos confirmar que esta respuesta tendrás que escribirlo en alguna otra aplicación se corresponde con la petición que habíamos y copiar el ascii desde ahí mediante el clásico lanzado. copy/paste. ¡¡ATENCION!! Sobre el ping timeout: Volviendo al tema, ¿en qué consiste el ping? Pues simplemente es un mensaje corto que Antes de continuar, hago aquí un inciso muy contiene tan sólo un número aleatorio. En importante, aprovechando que he mencionado cuanto el receptor lo reciba, tiene que enviar antes el ping timeout. Los que sepais bien una respuesta que contenga exactamente el en qué consiste este tipo de caída, mismo número. Nuestra aplicación cronometrará probablemente habréis pensado: “este tío no el tiempo transcurrido desde que se envió el tiene ni idea, el ping timeout no tiene nada número, hasta que éste llegó de vuelta. Para q u e v e r c o n l o s p i n g s d e c t c p ”. enviar un ping al usuario PyC esto es lo que El motivo por el que he mencionado el ping tenemos que ejecutar: timeout es porque mediante ctcp ping puedes PRIVMSG PyC : PING 1048765767 detectar si alguien está caído, pero en realidad Para comprender la respuesta que nos con lo que tiene que ver esta caída no es con devuelven al PING hay que hablar de un nuevo los pings de ctcp, si no con los pings del comando, que es el NOTICE. servidor. Cuando superas un cierto tiempo de inactividad, Un NOTICE tiene exactamente la misma el servidor ha de asegurarse de que sigues ahí, función que un PRIVMSG, pero con una para lo cual te lanza un ping bastante parecido salvedad, y es que los NOTICE son mensajes a los de CTCP. que no deben tener respuesta. Es decir, cada Si no respondes a este ping, el servidor cerrará vez que una aplicación de IRC recibe un la conexión, asumiendo que se ha quedado NOTICE de cualquier tipo, simplemente lo colgada. En esto consiste precisamente el ping leerá e interpretará como deba, pero nunca timeout. dando ningún tipo de respuesta. Por tanto, la Cuando conectemos por telnet al servidor de utilidad del NOTICE es el enviar mensajes en IRC, si no hacemos nada durante un tiempo, los que haya riesgo de entrar en bucles infinitos nos aparecerá un mensaje de PING de servidor, de respuestas. preguntándonos si seguimos ahí. Este mensaje En nuestro caso, el usuario al que hemos hecho puede contener un número, como en los CTCP el PING nos responderá con el mismo mensaje, PING, o bien cualquier otro texto que tenemos pero con la salvedad de que lo hará con que enviar de vuelta. Por ejemplo, en el caso NOTICE en lugar de con PRIVMSG. Si nos del servidor que estamos utilizando de ejemplo, respondiese con PRIVMSG, nuestro cliente éste será el PING que nos lanzará: de IRC interpretaría que es a él a quien están PING :irc.isdnet.fr lanzando un PING, por lo que tendría que En cuanto veamos esto, tenemos que responder responder al mismo, y así se formaría un bucle lo antes posible con este comando: infinito de pings. Por tanto, la respuesta de PONG :irc.isdnet.fr PyC a nuestro PING, suponiendo que nuestro Algunos servidores lanzan el primer PING nada nick es fulanin, sería algo como esto: más identificarnos, por lo que hemos de estar PC PASO A PASO Nº 9 Página 59
  • 60. SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC atentos al mensaje de bienvenida a la hora usuario. Este comando es útil para conocer el de conectar con un servidor, para ver si éste país en el que se encuentra el usuario (por la incluye un PING al que tenemos que responder diferencia horaria), así como para sincronizar antes de nada. alguna cita. Aunque suene a coña, yo uso el TIME a veces para sincronizarme con algún 2.3.4.2. CTCP VERSION amigo para quedar a alguna hora. El formato del mensaje es muy simple: Este mensaje CTCP nos puede dar información PRIVMSG PyC : TIME bastante útil, pero hemos de saber siempre La respuesta a este comando será un NOTICE que la respuesta puede haber sido manipulada con éste formato: por el usuario, por lo que podría estar dándonos P y C ! ~ P i c @ 2 1 5 - 2 0 5 - 1 9 - información falsa. 7.uc.nombres.ttd.es NOTICE fulanin : El objetivo de este mensaje es preguntar a un TIME Fri Mar 28 13:29:16 2003 usuario qué software está utilizando como aplicación cliente de IRC. 2.3.5. El protocolo DCC El formato de la consulta es muy sencillo: PRIVMSG PyC : VERSION ¡También el DCC funciona mediante el comando Ante esto, la aplicación cliente del usuario PyC PRIVMSG! ¿Os gustaría saber cómo se pueden nos responderá de manera automática con interceptar envíos de archivos, o chats una respuesta que identifica el software y el privados, por DCC? ¿Os gustaría saber número de versión, así como si tiene algún cómo spoofear vuestra IP en un DCC? script funcionando encima, etc. Esto, y más, es lo que explicaré en el próximo Respuestas típicas son las siguientes: artículo. ;-) mIRC: mIRC v6.01 Khaled Mardam-Bey Xchat para windows : xchat 2.0.0 Windows 2.4. Comandos de consulta al 5.0 [i686/449MHz] servidor mIRC con IRCap 7.1 : mIRC v6.03 Khaled Mardam-Bey Vamos a ver ahora un grupo de comandos que • I R c a p 7. 3 1 • se utilizan para pedir información variada al http://www.ircap.com • servidor. Kvirc 3 : KVIrc 3.0.0-beta2 "T-Rex" : 2003.01.04-12554 : build Sat Jan 4 20:53:34 UTC 2003 : i686-cefikloprstAGT 2.4.1. Mensaje del día (comando Como vemos, podemos extraer información MOTD) útil sobre el sistema operativo del usuario, así como sobre el software que utiliza (que podría Cuando entramos en un server, nos da un tener bugs conocidos, en caso de que mensaje de bienvenida, también conocido como quisiésemos hacer experimentos de seguridad). MOTD (Message Of The Day), que nos da He de insistir en que estos mensajes de información útil sobre el servidor. Podemos respuesta al VERSION pueden ser modificados pedir al servidor en cualquier momento su por el usuario para que ponga cualquier cosa. MOTD, o incluso el de cualquier otro servidor de la misma red. Algunos son curiosos, como 2.3.4.3. CTCP TIME por ejemplo: Por último, vamos a ver otro CTCP típico, que MOTD efnet.vuurwerk.nl sirve para saber qué hora tiene el PC de un A ver a qué os recuerda ese dibujito ascii. ;-) Página 60 PC PASO A PASO Nº 9
  • 61. SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC 2.4.2. Carga del servidor (comando 2.4.4. Estadísticas del servidor LUSERS) (comando STATS) Al principio del artículo os di algunas cifras Muchos servidores desactivan alguna de estas concretas sobre los usuarios que había opciones, al no querer que los usuarios puedan conectados en EfNet en ese instante, así como extraer demasiada información que podría ser sobre el número de canales, y el número de utilizada para algún tipo de ataque. Son varias usuarios en un servidor concreto. Todas esas las opciones, pero mostraré sólo las que c i f ra s p o d e m o s v e r l a s e j e c u t a n d o : funcionan en el servidor que estamos utilizando LUSERS de ejemplo. En primer lugar, si hacemos: 2.4.3. Versión del software en el STATS u Nos muestra el uptime del servidor, es decir, servidor (comando VERSION) cuánto tiempo lleva funcionando desde la última vez que se reinició. No sólo podemos ver el software que utilizan En segundo lugar, está la estadística de uso los clientes, si no también el software del de comandos, pero antes de que lo probéis servidor, así como otra información útil, os tengo que advertir. Si ejecutais este comando mediante el comando: en este servidor os hará un k-line temporal, VERSION es decir, os expulsará de toda la red durante Por ejemplo, en el servidor irc.isdnet.fr, ésta 24 horas. Eso sí, os lo hará después de daros será la respuesta: el resultado, lo cual veo bastante absurdo. Si no quieren que utilices ese comando, ¿no es 2.8/hybrid-6.3.1(20020418_1). más razonable que no lo implementen, en lugar irc.isdnet.fr AGHiKMpYZ TS5owc de ejecutarlo para después expulsarte? Para - evitaros el k-line os pasteo aquí el resultado WALLCHOPS PREFIX=(ov)@+ que me dio a mi la última vez que ejecuté este CHANTYPES=#& MAXCHANNELS=20 comando. El comando a ejecutar sería: MAXBANS=25 NICKLEN=9 STATS m TOPICLEN=120 KICKLEN=90 Y ésta la respuesta del servidor: N E T W O R K = E F n e t CHANMODES=b,k,l,imnpst KNOCK ADMIN 161 1715 MODES=4 are supported by this server AWAY 1324744 41605335 De aquí extraemos información interesante CAPAB 8 160 sobre la configuración del servidor. Por CLOSE 6 20 ejemplo, nos dice que sólo soporta CONNECT 491 9057 canales de tipo # (globales) y & (locales) DIE 14 138 (existen también los canales ! y +, pero DLINE 5 119 no he considerado que merezca la pena ERROR 5425 156096 hablar de ellos), el número máximo de GLINE 1031 100586 canales por usuario es 20, el número HASH 4 8 máximo de entradas en la lista de bans HELP 124 442 (denegación de acceso a un canal) es HTM 54 7 de 25, la longitud máxima de un nickname INFO 356 4588 es de 9 caracteres, la longitud máxima INVITE 624304 11705238 de un topic es de 120 caracteres, etc. ISON 48403584 2260375326 PC PASO A PASO Nº 9 Página 61
  • 62. SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC JOIN 12335190 135226756 WHOWAS 6383 48645 KICK 2169543 91710944 KILL 26745 2459300 Esos números nos muestran el número de veces KLINE 1210 73957 que ha sido utilizado cada comando. La utilidad KNOCK 858 8501 que podais sacar de esta información ya LINKS 652 3195 depende de vuestra imaginación. Por ejemplo, LIST 75991 305704 el uso más obvio es conocer todos los comandos LOCOPS 15 353 que tiene implementados el servidor. Los LTRACE 1 12 comandos que no conozcais los podéis buscar LUSERS 298179 7191563 en el RFC 2812 y el RFC 2813, aunque LWALLOPS 0 0 algunos ni siquiera estarán contemplados en MODE 72304763 1431760954 los RFC. Además, muchos de estos comandos MOTD 467 3691 sólo los pueden ejecutar los operadores de la NAMES 127934 1381606 red. Por si tenéis curiosidad, os pasteo a NICK 72403821 2147611586 continuación el k-line que me hizo el servidor NOTICE 36420416 2708147443 inmediatamente después de ejecutar el OPER 387 5729 comando: OPERWALL 14733 536306 You are banned from this server- PART 11601855 106863938 Temporary K-line 1440 min. - stop stating PASS 1041568 7289166 (2003/03/14 18.37) PING 40404679 442423522 - PONG 24647891 346314785 [18:35] Closing Link: PRIVMSG 238041898 1376495144 PyC[PyC@213.206.14.9] (Connection QUIT 19063494 472024380 closed) REHASH 15 89 RESTART 2 14 2.4.5. C o m p r o b a n d o la red SERVER 4472 154251 (comando LINKS) SET 9 127 SJOIN 58209061 2226248553 Con el comando LINKS podemos ver todos los SQUIT 4073 114713 servidores a los que está conectado el nuestro STATS 819 7103 (o cualquier otro de la red), lo cual nos sirve SVINFO 7 93 para detectar posibles splits (desconexión de TESTLINE 6 94 algunos servidores a la red, lo que causa la TIME 86997 759067 aparición de dos o más redes fantasma). TOPIC 1140668 80984008 Simplemente ejecutamos: TRACE 10218 59279 LINKS UNDLINE 0 0 Y nos dará la lista de servidores. Mediante este UNGLINE 0 0 comando podemos estudiar además la topología UNKLINE 26 757 de la red. USER 37767462 867701368 USERHOST 4102785 63264793 2.4.6. Poniendo el reloj en hora USERS 21238 327 VERSION 7628 55489 (comando TIME) WALLOPS 176 8224 WHO 4503972 40190982 ¿Alguna vez habéis utilizado el teletexto, o la WHOIS 2268763 17289803 radio para saber la hora y aseguraros de que Página 62 PC PASO A PASO Nº 9
  • 63. SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC vuestro reloj no se ha quedado sin pilas? Pues INFO se acabó el utilizar medios anticuados, a partir Para que nos cuenten lo que les de la gana. de ahora vais a poner en hora los relojes con :-P vuestro servidor de IRC :P 2.5. Comandos de consulta sobre TIME los usuarios Os dará la fecha y hora que tiene el servidor. Este último grupo de comandos son de uso cotidiano, no como los últimos que hemos visto. 2.4.7. T r a c e o d e servidores Son fundamentales, así que estad bien atentos. (comando TRACE) ;-) Con este comando podéis ver la ruta que hay 2.5.1. Comando WHO entre vuestro servidor y cualquier otro de la misma red. Si, por ejemplo, ejecutamos: Este comando tiene muchas utilidades. Vamos a ver las más importantes, pero hay que tener TRACE efnet.demo.co.uk en cuenta que los usuarios en modo invisible (modo de usuario +i) no aparecen en los listados Nos mostrará la ruta que hay que atravesar g e n e ra d o s p o r u n a c o n s u l t a W H O. para comunicar tu servidor con este otro por el camino más corto. Nos puede servir también, por ejemplo, para 2.5.1.1. Listado de usuarios buscar servidores de un determinado país. Por En primer lugar, podemos utilizar WHO para ejemplo, si hacemos: listar todos los usuarios de un determinado dominio: TRACE *.es WHO *.es Nos mostrará todos los usuarios conectados a Podremos comprobar que no hay ningún la red que vengan de un dominio .es, siempre servidor español de EfNet. :-( y cuando no estén en modo invisible. 2.4.8. Información sobre los 2.5.1.2. Listado de usuarios en administradores (comando canales ADMIN) Para ver los usuarios (no invisibles) que hay Si queremos, por ejemplo, saber cómo contactar en el canal #hackxcrack, haremos: con los administradores del servidor WHO #hackxcrack irc.homelien.no, sólo tenemos que ejecutar: ADMIN irc.homelien.no 2.5.1.3. Búsqueda de usuarios por Y nos dará la información de contacto. IP 2.4.9. U n p o c o de historia Este punto si que es realmente interesante. Si (comando INFO) conocemos la IP de alguien, podemos saber si está conectado a nuestra red de IRC, y también Si queremos saber algo de la historia de IRC, con qué nickname. o del servidor, podemos ejecutar: Supongamos, por ejemplo, que la IP es: PC PASO A PASO Nº 9 Página 63
  • 64. SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC 217.125.24.17 (al igual que todas las IPs tipo de usuario que es en cada canal. En este utilizadas a lo largo del artículo, esta IP ha sido ejemplo concreto, el usuario PyC está como escogida de forma totalmente aleatoria). En usuario llano en el canal #LCo, como usuario primer lugar, tenemos que conocer el DNS con voz en el canal #españa, y como asignado a esa IP, para lo cual, desde nuestra operador en los canales #spanishwarez y aplicación cliente de IRC (¡no desde telnet!) #hackxcrack. podemos ejecutar lo siguiente: Por último, nos dice el servidor a través del /dns 217.125.24.17 cual está conectado el usuario. En este caso el Nos responderá algo como esto: servidor sería efnet.demon.co.uk. La frase que [17:04] *** Looking up 217.125.24.17 pone despues es un pequeño quote que añade - el servidor, así que no tiene el más mínimo [17:04] *** Resolved 217.125.24.17 to interés. 217-125-24-17.uc.nombres.ttd.es Si el usuario estuviese en el mismo servidor Ya sabemos cual es el DNS asociado a esa IP. que nosotros, nos habría dado una información Si ahora hacemos la siguiente consulta: adicional, como ésta: WHO 217-125-24-17.uc.nombres.ttd.es* PyC has been idle 2secs, signed on Fri Nos devolverá el (o los) nickname de esa IP, Mar 28 16:56:59 si es que ese usuario está conectado a la misma Esta información nos dice el idle, es decir, el red de IRC que nosotros. Si el usuario no está tiempo que lleva este usuario sin escribir nada, conectado, simplemente nos dirá algo como y la fecha y hora en la que conectó con el esto: servidor. 217-125-24-17.uc.nombres.ttd.es* End Si queremos saber esto mismo y no estamos of /WHO list. en el mismo servidor que este usuario, bastará con que hagamos la consulta poniendo su nick 2.5.2. Comando WHOIS 2 veces: WHOIS PyC PyC Este comando es uno de los que más utilizo Intuitivo, eh? ;-) constántemente. Nos da mucha información útil sobre un usuario. Si hacemos: 2.5.3. Comando WHOWAS WHOIS PyC Nos puede devolver una respuesta como ésta: Este comando nos dice cuándo estuvo conectado PyC is ~Pic2@138.Red-25-12- un determinado nick. Por ejemplo, para saber 191.pooles.rima-tde.net * PyC PoC cuándo estuvo conectado el usuario PyC: PyC on #LCo @#spanishwarez WHOWAS PyC @#hackxcrack +#españa Nos responderá algo como esto: PyC using efnet.demon.co.uk <pils> how PyC was PyC@203.47.23.8 * PoC do you think i got oline? PyC using efnet.demon.co.uk Fri Mar 28 PyC End of /WHOIS list. 17:33:03 2003 La primera línea del whois nos indica su End of WHOWAS nombre de usuario (~Pic2), su IP o DNS (138.Red-25-12-191.pooles.rima-tde.net), y su 3. PARA TERMINAR nombre “real” (PyC PoC). Después de eso, nos muestra la lista de canales en los que está el usuario, siempre Buff... ha sido una tarea más pesada de lo que y cuando el canal no sea secreto (modo +s) esperaba al principio, pero ya están resumidas o privado (modo +p). Además, nos dice el las bases del protocolo IRC. :-) Página 64 PC PASO A PASO Nº 9
  • 65. SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC En este artículo he seguido el RFC de forma el IRC no es case-sensitive, es decir, que no más estricta que en los anteriores. Si habéis distingue entre mayúsculas y minúsculas, y seguido los 3 artículos publicados hasta ahora, esto produce algunas situaciones curiosas. Por habréis comprobado que el estilo de redacción ejemplo, por raro que parezca, en IRC se ha cambiado en los 3, y es debido a que estoy considera que los caracteres { } | ^ son las experimentando para ver vuestra reacción ante minúsculas de los caracteres [ ] ~ las distintas formas de escribir, para ver cual respectivamente. Así que, por ejemplo, el nick os gusta más. :-) ^{Zer0C00|}^ es equivalente al nick En primer lugar, he de aclarar que no he incluido ~[zer0c00]~. Si no sois asiduos a las redes la mayoría de las respuestas del servidor a de IRC, os parecerán nicks muy raros, pero os cada comando, ya que si no el artículo se aseguro que mucha gente utiliza nicks con ese extendería hasta el infinito. He considerado tipo de símbolos. :-) que la mayoría de las respuestas son suficientemente intuitivas. Si lo queréis ver Autor: PyC (LCo) desde otro punto de vista, os dejo la interpretación de las respuestas como ejercicio. Agradecimientos: Scherzo (LCo), :-P PoLLo, polhux, skitter, Tuxed, Se me ocurren algunas curiosidades que contar NetLander, _Stealth_, KaR]V[aN, para terminar. y los que se me olviden. En primer lugar, os resumo la lista de tareas que puede realizar el operador de un canal (los de la famosa @): - INVITE – invitar a un usuario a un PERSONALIZATUMOVIL PERSONALIZATUMOVIL PERSONALIZATUMOVIL PERSONALIZATUMOVIL PERSONALIZATUMOVIL PERSONALIZATUMOVIL PERSONALIZATUMOVIL MOVIL MOVIL TUMOVIL MOVIL PERSONALIZATUTUMOVIL MOVIL MOVIL PERSONALIZATUTUMOVIL MOVIL PERSONALIZATUTUMOVIL MOVIL MOVIL MOVIL PERSONALIZA TUMOVIL MOVIL MOVIL MOVIL MOVIL PERSONALIZATU MOVIL MOVIL PERSONALIZA TU MOVIL MOVIL canal en modo invite only (modo +i). PERSONALIZA PERSONALIZA PERSONALIZA PERSONALIZATUMOVIL TUMOVIL MOVIL MOVIL PERSONALIZA TUMOVIL PERSONALIZATU MOVIL MOVIL PERSONALIZA TUMOVIL MOVIL PERSONALIZATU MOVIL MOVIL PERSONALIZA TUMOVIL MOVIL PERSONALIZA TU MOVIL PERSONALIZA TUMOVIL MOVIL - KICK – expulsar a un usuario del canal. - MODE – cambiar los modos del canal, y los modos de otros usuarios en el canal. - TOPIC – cambiar el topic del canal si el canal está en modo +t. Si no, cualquiera puede hacerlo, y no solo un operador. - PRIVMSG – Por supuesto, un operador siempre puede hablar en el canal, aunque éste se encuentre en modo moderado (modo +m). Otra cosa que he de mencionar, es que no he hablado de la mitad del protocolo IRC, que es el que se utiliza entre los distintos servidores de una red, y no entre un cliente y un servidor. He dado por hecho que, si sois administradores de una red de IRC, tendréis mejores fuentes de consulta que esta revista y, en caso contrario, no os interesará lo más mínimo conocer este protocolo. De todas formas, lo tenéis HAY MUCHOS MAS EN completamente detallado en el RFC 2813. http://pclog.buscalogos.com/ Por último, una pequeña curiosidad, y es que PC PASO A PASO Nº 9 Página 65
  • 66. SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC - SERIE RAW - IRC ! MUY I M P O R TA N T E : COMUNICADO E D I TO R I A L Este número 9 de PC PASO A PASO (Los Cuadernos de Hack x Crack) contiene gran cantidad de palabras y conceptos que seguro ha pillado desprevenido a más de uno. Si eres un lector habitual ya sabes que solemos explicar precisamente todos esos conceptos a lo largo de nuestros artículos, pero en este caso (y nos referimos en especial al artículo del NMAP) hemos preferido dar una visión general a partir de la cual profundizaremos en próximos números. Si es la primera vez que nos lees y no posees un cierto nivel en esto de la informática, seguro que te has quedado “fuera de lugar” y sin saber muy bien qué tipo de revista has comprado, por ejemplo, hablamos de establecer conexiones por TELNET sin más explicaciones y nos quedamos “tan anchos”. Bien, esto no es así, en los números anteriores hemos explicado hasta el hartazgo desde cómo se abre una Ventana DOS (Ventana de Comandos) hasta cómo se establece una conexión por Telnet y mil cosas más de nivel básico. Estás leyendo un número que utiliza los conocimientos ya adquiridos en anteriores entregas, por ejemplo el curso de Visual Basic ya está por la entrega 3, igual que la SERIE RAW. Si quieres ver nuestra línea editorial tienes en nuestra Web el número 1 de Hack x Crack a tu disposición en formato PDF, descárgalo y léelo tranquilamente, es completamente gratis y podrás ver que hemos empezado DESDE CERO!!! Posdata para los miembros del foro: Si algún miembro del foro cree que esta nota la hemos puesto para “rellenar”, solo tiene que mirar la revista para darse cuenta de que hemos empezado a reducir el tamaño de letra porque hemos tenido verdaderos problemas de espacio, no digamos ya los concursos de Linux y logos (que son miniaturas en comparación con anteriores números). Esta nota es muy importante porque tenemos miedo de estar tomando una línea demasiado técnica y todos sabemos que eso es peligroso, por ello necesitábamos advertir a los nuevos lectores que si no comprenden este número de PC PASO A PASO es precisamente porque son nuevos lectores y no han seguido la revista desde su inicio. Parece mentira pero en tan solo 9 números nos hemos introducido de lleno en un mundo para muchos desconocido e intentamos en cada nuevo número editado llegar un poco más lejos. Ahora sería el momento ideal para decirte que si te falta algún número de la revista puedes pedirlo desde nuestra Web e intentar venderte “la moto”, pero no es ninguna “moto”, es algo que deberás hacer si eres un nuevo lector y quieres seguir avanzando. Para nosotros la venta de números atrasados es más una cruz que un beneficio, te lo aseguro, pero es un servicio que estamos dando porque es IMPRESCINDIBLE para los nuevos lectores. Bueno, que me quedo sin espacio, un fuerte abrazo a toda la peña del foro ;) SI TE GUSTA LA INFORMÁTICA. SI ESTAS “CABREADO” CON GÜINDOUS ;) SI QUIERES PROGRESAR DE VERDAD Incluye 7 CD’s y 1 DVD PC PASO A PASO Manual de Instalación. SOR TEA CADA MES UN S.O. Manual de Administracion SUSE LINUX PR OFESSION AL 8.2 SIMPLEMENTE ENVIA LA PALABRA PCCON AL 5099 DESDE TU MOVIL PRECIO DEL MENSAJE: 0,90€ + IVA. VALIDO PARA (MOVISTAR - VODAFONE Y AMENA) IVA. VALIDO PARA (MOVISTAR EL PREMIO PUEDE SER CANJEABLE POR UN JUEGO DE PC O CONSOLA QUE NO SUPERELOS 85€ EL GANADOR SALDRA PUBLICADO AQUÍ 2 NÚMEROS DESPUES DE LA PUBLICACIÓN. Página 66 PC PASO A PASO Nº 9
  • 67. NÚMERO1: -CREA TU PRIMER TROYANO INDETECTABLE POR LOS ANTIVIRUS. -FLASHFXP: SIN LÍMITE DE VELOCIDAD. -FTP SIN SECRETOS: PASVMODE. -PORT MODE/PASV MODE Y LOS FIREWALL: LA UTILIDAD DE LO APRENDIDO. -TCP-IP:INICIACIÓN (PARTE 1). -EL MEJOR GRUPO DE SERVIDORES FTP DE HABLA HISPANA. -EDONKEY 2000 Y SPANISHARE. -LA FLECHA ÁCIDA. NÚMERO 2: -CODE/DECODE BUG: INTRODUCCIÓN. -CODE/DECODE BUG: LOCALIZACIÓN DEL OBJETIVO. -CODE/DECODE BUG: LÍNEA DE COMANDOS. -CODE/DECODE BUG: SUBIENDO ARCHIVOS AL SERVIDOR REMOTO. -OCULTACIÓN DE IP: PRIMEROS PASOS. -LA FLECHA ÁCIDA: LA SS DIGITAL. AZNAR AL FRENTE DE LA SS DEL SIGLO XXI. NÚMERO 3: -PROXY: OCULTANDO NUESTRA IP. ASUMIENDO CONCEPTOS. -PROXY: OCULTANDO NUESTRA IP. ENCADENANDO PROXIES. -PROXY: OCULTANDO NUESTRA IP. OCULTANDO TODOS NUESTROS PROGRAMAS TRAS LAS CADENAS DE PROXIES. -EL SERVIDOR DE HACKXCRACK CONFIGURACIÓN Y MODO DE EMPLEO. -SALA DE PRACTICAS: EXPLICACIÓN. -PRÁCTICA 1ª: SUBIENDO UN ARCHIVO A NUESTRO SERVIDOR. -PRÁCTICA 2ª: MONTANDO UN DUMP CON EL SERV-U. PRÁCTICA 3ª: CODE/DECODE BUG. LÍNEA DE COMANDOS. NÚMERO 4: -CREA TU SEGUNDO TROYANO, INDETECTABLE E INMUNE A LOS ANTIVIRUS. CONOCIENDO EL RADMIN. GESTIONANDO UNA SALA DE ORDENADORES. OCULTANDO EL RADMIN. INSTALANDO EL RADMIN EN EQUIPOS REMOTOS. -OCULTACIÓN DE IP POR NOMBRE DE DOMINIO. -CREA LETRAS DE IMPACTO PARA TUS DOCUMENTOS (LETRAS DE FUEGO). - CONSIGUE UNA IP FIJA.
  • 68. NÚMERO 5: -HACK-OPINION: LA PIRATERÍA EN INTERNET. -ROOTKITS: LA PESADILLA DE CUALQUIER ADMINISTRADOR. -ROOTKITS: EL SR. NTROOT. -WAREZ: APPZ, GAMEZ, MP3Z, DIVX, FTPZ, 0-DAY. -APRENDIENDO A COMPILAR PROGRAMAS. COMPILA TU PROPIO NETCAT. -BUGS, ERRORES Y OTRAS FORMA DE JOD... -NETBIOS: ESTUDIO Y PENETRACIÓN DE SISTEMAS. -ASESINADOS POR LA LSSI. -LISTADO DE ORDENES PARA NETBIOS. -HACK-OPINION: PAGOS POR INTERNET SEGUROS YÁ. NÚMERO 6: - PASA TUS PELICULAS A DIVX (STREAMING) - PASA TUS PELICULAS A DIVX II (CODEC DIVX) - PUERTOS & SERVICIOS - eMule: EL NUEVO REY DEL P2P - NUEVA SECCION: PROGRAMACION DESDE 0 - CURSO DE VISUAL BASIC -IPHXC: EL TERCER TROYANO DE HXC - TENDENCIAS ACTUALES EN CODIGO MALICIOSO - OCULTACION DE FICHEROS. METODO STREAM (ads) - TRASTEANDO CON EL HARDWARE DE UNA LAN NÚMERO 7: - PROTOCOLOS: POP3 - PASA TUS PELICULAS A DIVX III (EL AUDIO) - PASA TUS PELICULAS A DIVX IV (MULTIPLEXADO) - CURSO DE VISUAL BASIC: LA CALCULADORA -IPHXC: EL TERCER TROYANO DE HXC II - APACHE: UN SERVIDOR WEB EN NUESTRO PC - CCPROXY: IV TROYANO DE PC PASO A PASO - TRASTEANDO CON EL HARDWARE DE UNA LAN NÚMERO 8: - CURSO DE LINUX - APACHE: COMPARTE ARCHIVOS - REVERSE SHELL - CURSO DE VISUAL BASIC: MAS CALCULADORA - PROTOCOLOS Y SU SEGURIDAD: SMTP