SlideShare una empresa de Scribd logo
HACK X CRACK: HACKEANDO LAS RESTRICCIONES DE SEGURIDAD DE WINDOWS

                              P
                              P
                              A
                              A
                              S
                              S
                              O
                              O
P A S Oa
P A    a
       a
       a
       a
       a
       a
       aa
        a
        a
        a
        a
        a                         3 SERVIDORES ON LINE PARA TUS PRACTICAS DE HACK




                                     HACKEANDO EL CORAZON
                                         DE WINDOWS
  JUEGA                                 LAS DIRECTIVAS DE SEGURIDAD
    GRATIS
                                             Y
                                  TE PRESENTAMOS
  COLAS DE MENSAJES


   Qué son los



   Nº 19 -- P.V.P. 4,5 EUROS
                      00019




    8 414090 202756
                                   LOS MEJORES ARTÍCULOS GRATIS EN NUESTRA WEB
  P C PA S O A PA S O : A P R E N D E A P R O G R A M A R S O C K E T S ! ! !
Hxc19
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
                                                J. Sentís
C.I.F:     B43675701
PERE MARTELL Nº 20, 2º - 1ª                     E-mail contacto
43001 TARRAGONA (ESPAÑA)                        director@hackxcrack.com
Director Editorial                              Diseño gráfico:
I. SENTIS                                       J. M. Velasco
E-mail contacto
director@editotrans.com                         E-mail contacto:
Título de la publicación
Los Cuadernos de HACK X CRACK.                  grafico@hackxcrack.com
Nombre Comercial de la publicacíón
PC PASO A PASO                                  Redactores
Web: www.hackxcrack.com                         AZIMUT, ROTEADO, FASTIC, MORDEA, FAUSTO,
Dirección: PERE MARTELL Nº 20, 2º - 1ª.         ENTROPIC, MEIDOR, HASHIMUIRA, BACKBONE,
            43001 TARRAGONA (ESPAÑA)
                                                ZORTEMIUS, AK22, DORKAN, KMORK, MAILA,
                                                TITINA, SIMPSIM... ... ... ... ...
¿Quieres insertar publicidad en PC PASO A Contacto redactores
PASO? Tenemos la mejor relación precio-difusión redactores@hackxcrack.com
del mercado editorial en España. Contacta con
nosotros!!!                                     Colaboradores
                                                Mas de 130 personas: de España, de Brasil, de
Director de Marketing                           Argentina, de Francia, de Alemania, de Japón y
Sr. Miguel Mellado                              algún Estadounidense.
Tfno. directo: 652 495 607
Tfno. oficina: 877 023 356
E-mail: miguel@editotrans.com                   E-mail contacto
                                                colaboradores@hackxcrack.com
                                                Imprime
                                                I.G. PRINTONE S.A. Tel 91 808 50 15
                                                DISTRIBUCIÓN:
                                                SGEL, Avda. Valdeparra 29 (Pol. Ind.)
                                                28018 ALCOBENDAS (MADRID)
                                                Tel 91 657 69 00 FAX 91 657 69 28
                                                WEB: www.sgel.es

                                                TELÉFONO DE ATENCIÓN AL CLIENTE: 977 22 45 80
                                                Petición de Números atrasados y Suscripciones (Srta. Genoveva)

                                                HORARIO DE ATENCIÓN:                DE 9:30 A 13:30
                                                                                   (LUNES A VIERNES)
                                                © Copyright Editotrans S.L.
                                                NUMERO 19 -- PRINTED IN SPAIN
                                                PERIOCIDAD MENSUAL
                                                Deposito legal: B.26805-2002
                                                Código EAN:      8414090202756
EDITORIAL
        No hay mal que por bien no venga...



Hace poco publicamos un artículo que fue criticado de
forma muy positiva por nuestros lectores: Hackear
Windows en 40 segundos. La verdad, ese tipo de artículos
pertenecen al tipo “hackear sin saber”.                     4 EDIT ORIAL

Pero los lectores mandan y por mucho que nosotros nos       5 PR OGRAMA CION BA JO LINUX: C OLA DE MENS A JES
esforcemos en ENSEÑAR y vosotros en aprender, debemos
reconocer que también hay que divertirse, así que este      1 2 XB O X (V): JUG AR ONLINE GRATIS
mes podrás leer otro de estos artículos. Esta vez
crackearemos el regedit.exe (programa que utiliza Windows   16   CRACK EANDO LAS R ES TRICCIONES DE SEGURIDAD DE WINDOWS
                                                                                                                 WINDOWS

para acceder al registro), pero aprenderemos mucho más
                                                            28 CURSO DE SEGURID AD EN REDES - IDS
que con el publicado anteriormente.
                                                            56 CURSO DE PHP: MANE JO DE SOCKET S
Por primera vez trabajaremos con un desensamblador y
un editor hexadecimal, y lo haremos sin grandes esfuerzos
(prometido).

Este mes hemos impregnado varios artículos de TCP/IP,       5 4 C OLAB ORA C ON NOSO TR OS
pero no hay un artículo completo dedicado al tema porque
nuestro colaborador encargado del curso ha tenido que       55 SER VIDOR DE HXC . MODO DE EMPLE O
ausentarse por causas mayores. Tranquilos, el mes que
viene estará de nuevo con nosotros.                         63 BA J ATE NUESTR OS L OGOS Y MEL ODIAS

                                                            6 4 SUSCRIPCIONES
Y no hay mal que por bien no venga, prepárate porque
llega un nuevo curso MUY INTERESANTE. Te                    65 NUMER OS ATRAS ADOS
presentamos el SNORT. Si no sabes lo que es, ya puedes
empezar a leer la revista :)

Y no me despido sin antes hacer un comentario que quizás
te venga muy bien si estás pensando en comprar un monitor
TFT. Hace unos días tuve que aguantar perplejo como un
vendedor de hardware intentaba vender un monitor TFT
de 20 pulgadas con una resolución de 1280*1024.

Un TFT de 20 pulgadas, entre otras cosas debe tener una
resolución de 1600*1200. No exijas menos… lastima que
en esta revista no tratamos temas de hardware… ¿a quien
se le ocurre fabricar un 20 pulgadas a 1280*1024? Como
mínimo es una tomadura de pelo.

Bueno, que me extiendo demasiado. Gracias de nuevo a
todos los colaboradores, a AZIMUT que está poniendo un
poco de orden en el CAOS y a los moderadores del foro
que hacen todo lo posible por mantener un espacio donde
reunirse y resolver dudas.

GRACIAS UNA VEZ MÁS.
Programacion en gnu linux
          colas de mensajes
                        el_chaman. Luis U. Rodriguez Paniagua

          - Intercambio de Información entre programas: Ya hemos tratado los semáforos y la
          memoria compartida.
          - Este mes le toca el turno a las "Colas de Mensajes".



          1. Presentación                                   También es posible hacer "tipos" de mensajes
                                                            distintos, de forma que cada tipo de mensaje
          Las colas de mensajes, junto con los              contiene una información distinta y va
          semáforos y la memoria compartida serán           identificado por un entero. Por ejemplo, los
          los recursos que ponen a nuestra disposición      mensajes de tipo 1 pueden contener el saldo
          los sistemas UNiX para que los programas          de una cuenta de banco y el número de dicha
          puedan intercambiar información entre sí.         cuenta, los de tipo 2 pueden contener el
                                                            nombre de una sucursal bancaria y su calle,
          2. Colas de Mensajes.                             etc.

          Una cola será una estructura de datos             Los procesos luego pueden retirar mensajes
          gestionada por el núcleo, donde van a poder       de la cola selectivamente por su tipo. Si un
          escribir o leer varios procesos. Los mecanismos   proceso sólo está interesado en saldos de
          de sincronismo para que no se produzca            cuentas, extraería únicamente mensajes de
          colisión serán responsabilidad del núcleo.        tipo 1, etc. Ni que decir tiene que si tenemos
                                                            varios procesos que leen de una cola, el tipo
          Obsérvese que en el número pasado, al
                                                            de mensaje nos puede servir para que un
          manejar memoria compartida, el propio
                                                            determinado tipo de mensajes sea sólo
          programador tenía que gestionar la
          sincronización entre los procesos que accedían    atendido por un proceso concreto y el resto
          a la memoria compartida. En este caso, esto       ignorado.
          ya no es así: Será el sistema (núcleo del         Tras resaltar esto último, una pequeña
          S.O.) el encargado de realizar esta tarea,        aclaración: Es posible hacer que un proceso
          pudiéndonos concentrar más en tareas de
                                                            que lea de la cola pueda especificar que desea
          comunicación entre procesos que de
                                                            leer mensajes independientemente de su tipo.
          concurrencia.
          El manejo de colas de mensajes permite que        2.1. Solitud de una Cola de
          dos procesos distintos sean capaces de
                                                            Mensajes
          enviarse mensajes (estructuras de datos que
          serán tratadas como un todo indivisible) y de     La primera operación que debemos aprender
          esta forma pueden intercambiar información.       es la necesaria para solicitar una cola de
          El mecanismo para conseguirlo es el de una        mensajes. La manera de hacer esto es
          cola de mensajes. Los procesos introducen         mediante la función:
          mensajes en la cola y se van almacenando
          en ella. Cuando un proceso extrae un mensaje      #include <sys/types.h>
          de la cola, extrae el primer mensaje que se       #include <sys/ipc.h>
          introdujo y dicho mensaje se borra de la cola.    #include <sys/shm.h>
          A esta forma de comportarse una cola, y lo
          que la define, se le conoce como FIFO (First      int msgget(key_t key, int shmflg);
          Input, First Output, Primero en entrar, Primero
                                                            Retorna: -1 en caso de error, o el identificador
          en Salir).
                                                            de la cola creada en otro caso.

PC PASO A PASO Nº 19                                                                                           Página 5
Programación bajo LiNUX - Colas de mensajes - Programación bajo LiNUX - Colas de mensajes




           El primer parámetro, key de tipo Clave,          Para crear una cola de mensajes podemos emplear un
           funciona tal y como se explicó en anteriores     código como el siguiente:
           números, siendo su objetivo el de proporcionar
                                                              int msqid;
           al sistema un identificador común para los
                                                                 key_t clave;
           recursos IPC que están siendo utilizados por          ...
           un grupo de procesos que acceden                      clave = ftok ("archivo",'M');
           conjuntamente a un recurso IPC.                       if (( msqid = msgget(clave, IPC_CREAT | 0600 )) == -1)
                                                                 {
           Una vez obtenida la clave, se crea la cola de               fprintf(stderr, " ERROR al crear cola de mensajesn");
           mensajes. Para ello está la función mostrada          }
           msgget. Con dicha función creamos la cola y           ....
           nos devuelve un identificador para la misma.

           Si la cola correspondiente a la Clave key ya
                                                            2.2. Control de las colas de mensajes.
           estuviera creada, simplemente nos daría el       Una vez que hemos creado una cola de mensajes, podemos
           identificador de la misma (siempre y cuando      realizar diversas operaciones de control sobre dicha cola
           los parámetros no indiquen lo contrario).        con el fin de establecer distintos atributos de la misma u
           El segundo parámetro son unos flags. Aunque      obtener diversa información estadística. Estas operaciones
           hay más posibilidades, lo imprescindible es:     de control las realizará la función msgctl.

                                                            La declaración de esta función es:

             9 bits menos significativos, son permisos          #include <sys/types.h>
             de lectura/escritura/ejecución para                #include <sys/ipc.h>
             propietario/grupo/otros, al igual que los          #include <sys/msg.h>
             ficheros. Para obtener una cola con todos
             los permisos para todo el mundo, debemos           int msgctl(int msqid, int cmd, struct msqid_ds *buf);
             poner como parte de los flags el número
             0777.                                          Retorna 0 en caso de éxito y -1 en caso de error.

             Es importante el cero delante, para que el     msqid es el identificador de cola sobre el que vamos a
             número se interprete en octal y queden los     operar.
             bits en su sitio (En C, cualquier número que
             empiece por cero, se considera octal). El      cmd es la operación de control que queremos realizar. Este
                                                            parámetro puede tomar los siguientes valores:
             de ejecución no tiene sentido y se ignora.

                                                              IPC_STAT Lee el estado de la estructura de control de
             IPC_CREAT. Junto con los bits anteriores,
                                                              la cola y lo devuelve a través de la zona de memoria
             este bit indica si se debe crear la cola en      apuntada por *buf. La estructura de esta zona de memoria
             caso de que no exista.                           es:
                                                                  /* Structure of record for one message inside the kernel.
             Si está puesto, la cola se creará si no lo          The type `struct msg' is opaque. */
             está ya y se devolverá el identificador. Si             struct msqid_ds
                                                                     {
             no está puesto, se intentará obtener el
                                                                     struct ipc_perm msg_perm; /* structure describing operation permission */
             identificador y se obtendrá un error si no                  __time_t msg_stime;         /* time of last msgsnd command */
             está ya creada.                                             unsigned long int __unused1;
                                                                         __time_t msg_rtime;         /* time of last msgrcv command */
           En resumen, los flags deberían ser algo así                   unsigned long int __unused2;
           como 0777 | IPC_CREAT                                         __time_t msg_ctime;         /* time of last change */
                                                                         unsigned long int __unused3;
           El identificador devuelto por msgget será                     unsigned long int __msg_cbytes; /* current number of bytes on queue */
                                                                         msgqnum_t msg_qnum;              /* number of messages currently on queue */
           heredado por los procesos descendientes del                   msglen_t msg_qbytes;         /* max number of bytes allowed on queue */

           actual.                                                       __pid_t msg_lspid;         /* pid of last msgsnd() */


Página 6                                                                                                        PC PASO A PASO Nº 19
Programación bajo LiNUX - Colas de mensajes - Programación bajo LiNUX - Colas de mensajes




               __pid_t msg_lrpid;       /* pid of last msgrcv() */                          msgtyp sólo aparece en la llamada de lectura
               unsigned long int __unused4;                                                 y especifica el tipo de mensaje que queremos
               unsigned long int __unused5;
          };                                                                                leer. Puede tomar los siguientes valores:
         struct ipc_perm {
             key_t key;                                                                       msgtyp = 0 Leer el primer mensaje que
             ushort uid; /* owner euid and egid */                                            haya en la cola.
             ushort gid;
             ushort cuid; /* creator euid and egid */                                         msgtyp > 0 Leer el primer mensaje de tipo
             ushort cgid;
             ushort mode; /* lower 9 bits of access modes */                                  msgtyp que haya en la cola.
             ushort seq; /* sequence number */
         };                                                                                   msgtyp < 0 Leer el primer mensaje cumpla
                                                                                              que su tipo es menor o igual al valor absoluto
  IPC_SET Inicializa algunos de los campos de la estructura                                   de msgtyp y a la vez sea el más pequeño
  de control de la cola. El valor de estos campos se toma                                     de los que hay.
  de la estructura referenciada por *buf.
                                                                                            msgflg es un mapa de bits que tiene distinto
  IPC_RMID Elimina el sistema de cola de mensajes                                           significado dependiendo de que estemos
  asociado al identificador msqid. Si la cola está siendo
                                                                                            utilizando la función msgsnd o msgrcv:
  usada por varios procesos, no se elimina hasta que todos
  los procesos liberen la cola.                                                               Para el caso de escritura en cola (msgsnd),
                                                                                              si la cola está llena:
2.3. Operaciones con colas de mensajes
                                                                                                IPC_NOWAIT: Si activamos este bit, la
Para poder usar una cola de mensajes, las operaciones                                           llamada de a msgsnd devolverá el control
básicas que realizaremos serán escribir y leer mensajes.
                                                                                                inmediatamente          retornando       -1.
Para realizar estas operaciones disponemos respectivamente
de las funciones msgsnd y msgrcv:                                                               IPC_NOWAIT: Si no activamos este bit,
                                                                                                el proceso suspende su ejecución hasta
   #include <sys/types.h>                                                                       que haya espacio libre disponible en la
   #include <sys/ipc.h>                                                                         cola..
   #include <sys/msg.h>
                                                                                              Para el caso de lectura desde la cola
   int msgsnd(int msqid, struct msgbuf *msgp, size_t msgsz, int msgflg);                      (msgrcv), si la cola está vacía:

   ssize_t msgrcv(int msqid, struct msgbuf *msgp, size_t msgsz, long msgtyp, int msgflg);       IPC_NOWAIT: Si activamos este bit, la
                                                                                                llamada de a msgsnd devolverá el control
En ambas funciones msqid se corresponde al identificador
                                                                                                inmediatamente          retornando       -1.
de la cola sobre la que vamos a operar.
                                                                                                IPC_NOWAIT: Si no activamos este bit,
msgp es un puntero que señala la zona de memoria donde                                          el proceso suspende su ejecución hasta
están o donde queremos recibir los datos que se enviarán                                        que haya un mensaje del tipo disponible
o leerán de la cola. La composición de esta zona de memoria                                     en la cola.
es definida por el usuario mediante una estructura de
datos. La única restricción que se impone es que el primer                                  En el caso de que todo funcione correctamente,
campo sea de tipo long, siendo su funcionalidad la de                                       msgsnd devuelve 0 y msgrcv el número de
identificar el tipo de mensaje.                                                             bytes recibidos sin incluir los bytes del tipo de
                                                                                            mensaje.
msgsz será el tamaño en bytes del mensaje que queramos
enviar o recibid. Ojo: En este tamaño no se incluyen los                                    Veamos cuales serían las líneas de código
bits que ocupa el campo long antes descrito (el tipo de                                     necesarias para enviar y recibir un mensaje
mensaje).                                                                                   de tipo 1 compuesto de 20 caracteres:



 PC PASO A PASO Nº 19                                                                                                                           Página 7
Programación bajo LiNUX - Colas de mensajes - Programación bajo LiNUX - Colas de mensajes




           int msqid;                                               simple archivo binario que deberemos especificar por línea
           struct                                                   de comandos cuando arranquemos el gestor y sobre el
           {                                                        que escribirá y leerá directamente.
             long tipo;
             char cadena[20];
           }mensaje;                                                Para comunicarse con el gestor se utilizarán dos colas:
                                                                    Una llamada cliente-gestor será la empleada para que los
           /* Debemos de quitar el tamaño del tipo */               clientes envíen mensajes al gestor, y otra llamada gestor-
           int longitud = sizeof(mensaje) - sizeof(mensaje.tipo);   clientes para que el gestor se comunique con los clientes.

           ....
                                                                    Este funcionamiento se muestra en el siguiente esquema:
           /* Envío del mensaje */
                                                                    Archivo de definición de tipos y constantes (datos.h):
           mensaje.tipo=-1;
           strcpy(mensaje.cadena,2HOLA");
           if(msgsnd(msqid, &mensaje, longitud, 0)==-1)             /*
           {                                                         * FICHERO: datos.h
                /* error */                                          *
           }                                                         * DESCRIPCI~N:
           ....                                                      * Fichero de cabecera com~n para los clientes y DBM de la base de datos.
           /* Recepción del mensaje */                               *
           if(msgrcv(msqid, &mensaje, longitud,1, 0)==-1)            * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * */
           {                                                        #ifndef _DATOS_H_
                /* error */                                         #define _DATOS_H_
           }
                                                                    /* Creamos un tipo de datos para almacenar los datos
           2.4. Ejemplo de uso                                       * de una persona.
                                                                     */
           El presente ejemplo está basado en uno                   typedef struct
           similar sacado del libro "UNiX, programación             {
                                                                         char nombre[61];
           avanzada, Ed. Ra-Ma" de Fco. Manuel
                                                                         char direccion[121];
           Márquez. La razón de ello, como pronto se                     char telefono[11];
           verá, es que es una aplicación bastante                  }persona ;
           completa y a la vez sencilla, utilizando al
           máximo las capacidades del tema expuesto                 /* Creamos un tipo de datos para almacenar los datos
           hoy.                                                      * de un mensaje.
                                                                     */
                                                                    typedef struct
           Este ejemplo está disponible de manera                   {
           gratuita para el público en la página de la                   long pid;
           editorial Ra-Ma. Me he permitido modificar                    int orden;
                                                                         union
           partes del código y añadir comentarios para
                                                                         {
           que dicho ejemplo sea coherente con los visto                       persona una_persona;
           en el presente curso, manteniendo en                          }datos;
           cualquier caso el interés didáctico que el autor         }mensaje;
           original supo plasmar en él.

                                                                    #define LONGITUD (sizeof(mensaje) -sizeof(long))
           El ejemplo pretende ilustrar la construcción
           de un DBM (Data Base Manager) de manera                  /* Comandos para el DBM */
           que pueda gestionar los distintas tareas que             #define LISTAR 1
           le mandan hacer distintos usuarios (programas            #define ANADIR 2
           clientes) de una minimalista base de datos.              #define FIN 3
                                                                    #define ERROR 4
           Dicho gestor se comunicará directamente con
           la base de datos. En nuestro caso será un                #define FICHERO_CLAVE "datos.h"


Página 8                                                                                                         PC PASO A PASO Nº 19
Programación bajo LiNUX - Colas de mensajes - Programación bajo LiNUX - Colas de mensajes




#define CLAVE_CLIENTE_GESTOR 'K'                                       */
#define CLAVE_GESTOR_CLIENTE 'L'                                       msgrcv(cola_cg, &un_mensaje, LONGITUD, 0, 0);

#endif                                                                 /* Una vez le~do un mensaje, tendremos que atender a lo que
                                                                        * nos manda hacer*/

Gestor (gestor.c):                                                     /* Listar la base de datos que estar~ almacenada en el fichero
                                                                        * que hemos pasado por l~nea de comandos */
#include <stdio.h>                                                     if(un_mensaje.orden == LISTAR)
#include <sys/types.h>                                                 {
#include <sys/ipc.h>                                                         /* Si el fichero de base de datos no se puede leer...*/
#include <sys/msg.h>                                                         if((base_de_datos=fopen(argv[1],"r"))==NULL)
#include "datos.h"                                                           {
                                                                                   /* Imprimimos en la salida est~ndar de error
int main(int argc,char *argv[])                                                     * que ha ocurrido esto
{                                                                                   */
     int cola_cg, cola_gc, funcionando=1;                                             fprintf(stderr,"GESTOR listar: error al abrir el fichero de bases de datos");
     mensaje un_mensaje;                                                              /* Informamos al cliente de lo que ha sucedido */
     key_t clave;                                                                     un_mensaje.orden=ERROR;
     FILE *base_de_datos;                                                             msgsnd(cola_gc, &un_mensaje, LONGITUD, 0);
                                                                              }
    /* Como este programa recibe datos desde la                               else
     * l~nea de comandos, tenemos que verificarlos                            {
     */                                                                               /* Realizamos un listado, enviando al cliente todos
    if(argc != 2)                                                                      * los registros de la base de datos
    {                                                                                  */
          fprintf(stderr,"Forma de uso: %s fichero.n",argv[0]);                  while(fread(&un_mensaje.datos.una_persona, sizeof(persona), 1, base_de_datos)==1)
          return -1;                                                                  {
    }                                                                                     msgsnd(cola_gc, &un_mensaje, LONGITUD, 0);
                                                                                      }
                                                                                      fclose(base_de_datos);
    /* Creaci~n de las colas de mensajes (ver documentaci~n                           /*Preparamos un mensaje especial para envi~rselo
     * adjunta en el art~culo)                                                         * al cliente con el fin de indicarle que se ha
     */                                                                                terminado el listado. */
    clave=ftok(FICHERO_CLAVE, CLAVE_CLIENTE_GESTOR);                                  un_mensaje.orden=FIN;
    if((cola_cg=msgget(clave,IPC_CREAT|0666))==-1)                                    msgsnd(cola_gc, &un_mensaje, LONGITUD, 0);
    {                                                                         }
          fprintf(stderr,"Error al crear la cola CLIENTE-SERVIDOR");   }
          return -1;                                                   else
    }                                                                  {
    clave=ftok(FICHERO_CLAVE, CLAVE_GESTOR_CLIENTE);                          if(un_mensaje.orden==ANADIR)
    if((cola_gc=msgget(clave,IPC_CREAT|0666))==-1)                            {
    {                                                                                 if( ( base_de_datos=fopen(argv[1],"a") )==NULL ){
                                                                                       fprintf(stderr,"GESTOR a~adir: error al abrir el fichero de bases de datosn");
          fprintf(stderr,"Error al crear la cola SERVIDOR-CLIENTE");
          return -1;                                                                          un_mensaje.orden=ERROR;
                                                                                              msgsnd(cola_gc, &un_mensaje, LONGITUD, 0);
    }
                                                                                      }
                                                                                      else
                                                                                      {
    /*                                                                                     fwrite(&un_mensaje.datos.una_persona, sizeof(persona),1,base_de_datos);
     * Comienza el servicio del GESTOR. Nos limitamos a mirar si hay                       fclose(base_de_datos);
     * cosas que leer de la cola CLIENTE-SERVIDOR y si es as~                              un_mensaje.orden=FIN;
     * actuaremos en consecuencia.                                                         msgsnd(cola_gc,&un_mensaje,LONGITUD,0);
     */                                                                               }
    while(funcionando) /* Este proceso dura indefinidamente */                }
    {                                                                         else
         /* Obs~rvese que no activamos el bit el bit IPC_NOWAIT               {
          * Esto quiere decir que si no hay nada que leer de la cola                  if(un_mensaje.orden==FIN)
          * esperamos a que lo haya.                                                  {

 PC PASO A PASO Nº 19                                                                                                                          Página 9
Programación bajo LiNUX - Colas de mensajes - Programación bajo LiNUX - Colas de mensajes




                             /* Tenemos que apagar todo esto */                              printf("tOrden: ");
                             msgctl(cola_gc,IPC_RMID,NULL);                                  scanf("%s",minibuf);
                             msgctl(cola_cg,IPC_RMID,NULL);
                             funcionando=0;                                                  opcion=minibuf[0];
                             printf("n Programa Gestor parado a petici~n del clienten");
                      }                                                                      if(opcion=='l')
                      else                                                                   {
                      {                                                                           /* Esta orden producir~ una respuesta por parte
                             /* ~una opci~n desconocida? */                                        * del servidor. Nos preparamos para recibir datos.
                             un_mensaje.orden=ERROR;                                               */
                             msgsnd(cola_gc,&un_mensaje, LONGITUD,0);                             recibir=SI;
                      }                                                                           un_mensaje.orden = LISTAR;
                  }                                                                               msgsnd(cola_cg,&un_mensaje, LONGITUD, 0);
           }                                                                                 }
      }                                                                                      else
      return 0;                                                                              {
}                                                                                                 if(opcion=='a')
                                                                                                  {
Cliente (cliente.c):                                                                                  recibir=SI;
                                                                                                      printf("tNombre: ");
#include <stdio.h>                                                                                    scanf("%s",un_mensaje.datos.una_persona.nombre);
#include <sys/types.h>                                                                                printf("tDirecci~n: ");
#include <sys/ipc.h>                                                                                  scanf("%s",un_mensaje.datos.una_persona.direccion);
#include <sys/msg.h>                                                                                  printf("tTel~fono: ");
#include "datos.h"                                                                                    scanf("%s",un_mensaje.datos.una_persona.telefono);
                                                                                                      un_mensaje.orden=ANADIR;
int main(int argc, char *argv[])                                                                      msgsnd(cola_cg,&un_mensaje,LONGITUD,0);
{                                                                                                 }
     int cola_gc, cola_cg, pid;                                                                   else
     char opcion, minibuf[2];                                                                     {
     mensaje un_mensaje;                                                                                if(opcion=='f')
     key_t clave;                                                                                       {
     enum {NO, SI} recibir = NO;                                                                             recibir=NO;
                                                                                                             un_mensaje.orden=FIN;
                                                                                                             msgsnd(cola_cg, &un_mensaje, LONGITUD, 0);
      /* Creaci~n de las colas de mensajes */                                                         }
      clave = ftok(FICHERO_CLAVE, CLAVE_CLIENTE_GESTOR);                                              else
      if((cola_cg=msgget(clave,0666))==-1)                                                            {
      {                                                                                                      if(opcion=='s')
            fprintf(stderr,"CLIENTE %i: error creando cola_cg",getpid());                                    {
            return -1;                                                                                            return 0;
      }                                                                                                      }
      clave = ftok(FICHERO_CLAVE, CLAVE_GESTOR_CLIENTE);                                                     else
      if((cola_gc=msgget(clave,0666))==-1)                                                                   {
      {                                                                                                           recibir = NO;
            fprintf(stderr,"CLIENTE %i: error creando cola_gc",getpid());                                         printf("Opci~n [%c] err~nean", opcion);
            return -1;                                                                                       }
      }                                                                                               }
                                                                                                 }
      un_mensaje.pid = pid = getpid();                                                       }
      while(1)
      {                                                                                      /*
                                                                                              * Si nos hemos preparado a recibir algo, tenemos que
           printf("Ordenes:n");
                                                                                              * mirar si en la cola hay algo para nuestro cliente
           printf("l - Listarn");                                                            */
           printf("a - A~adirn");                                                           if(recibir==SI)
           printf("f - Finn");                                                              {
           printf("s -Salirn");                                                                   do


    Página 10                                                                                                                 PC PASO A PASO Nº 19
Programación bajo LiNUX - Colas de mensajes - Programación bajo LiNUX - Colas de mensajes




        {                                                                                               {
            /*                                                                                                            printf("n Mensaje de error recibido desde el servidorn");

             * F~jense en que ahora s~lo queremos                                                             }else
             * leer los mensajes del tipo de nuestro                                                          {
            * cliente, por ello pasamomos como par~metro el PID                                                       if(un_mensaje.orden==FIN)
            */                                                                                                        {
            msgrcv(cola_gc, &un_mensaje, LONGITUD, pid, 0);                                                                printf("----n");
            if(un_mensaje.orden==LISTAR)                                                                              }
            {                                                                                                         else
                 /* Hay que imprimir esto */                                                                          {
            printf("n Registro: %s %s %s n", un_mensaje.datos.una_persona.nombre,                                          printf("Se recibi~ un mensaje desconocidon");
            un_mensaje.datos.una_persona.direccion,                                                                   }
            un_mensaje.datos.una_persona.telefono);
                                                                                                              }
            }                                                                                           }
            else                                                                                  }while((un_mensaje.orden!=FIN) && (un_mensaje.orden!=ERROR));
            {                                                                                 }
                   if(un_mensaje.orden==ERROR)                                            }
                                                                                      }
Xbox Life V
                  Jugando Online Gratis
                                    Por Alfonso Menkel

             - ¿Quieres jugar GRATIS por Internet con la XBOX?
             - Descubre el XBCONNECT
             - Crea Partidas por Internet e Invita a tus Amigos.



              Saludos compañeros, aquí estamos un mes                      Mientras está bajando el programa, nos fijamos
              más. Este mes os voy a enseñar a jugar                       en el lado derecho de la Web y veremos los
              online GRATIS, pero quiero que quede claro                   juegos compatibles con este método.
              que no vamos a piratear el servicio XBOX
              LIVE, sino que vamos a usar un programa                      Como vemos en la lista, todos los juegos
              alternativo. No es tan bueno como el Live,                   tienen algo en común: todos tienen la
              pero está muy bien.                                          posibilidad de jugar en red local. Pues gracias
                                                                           a eso y al Xbconnect podemos hacer eso
              Lo que necesitamos:                                          m i s m o, p e r o a t rav é s d e I n t e r n e t .


                        Consola Xbox -El mod chip es                       Ahora que ya sabemos cómo funciona el
                      opcional, pero es necesario si queréis               sistema, vamos a instalar el programa:
                      jugar con copias de seguridad ;)
                        PC con tarjeta de red o Router.                    La instalación es muy sencilla, damos a Next
                                                                           hasta que se acabe la instalación :)
                       Conexión de banda ancha (ya sea
                      ADSL o Cable).
                                                                           Arrancamos el programa y veremos la primera
                        XBCONNECT             ultima       versión.
                                                                           pantalla.
                        Un juego compatible con este método.

              Como ya he explicado en los números
              anteriores, hace falta conectividad de Xbox
              a PC, sin esto no será posible jugar online.

              Nos vamos a la Web oficial de Xbconnect
              ( h t t p : / / w w w. x b c o n n e c t . c o m ) y n o s
              descargamos la última versión, lo siento por
              los usuarios de linux, pero de momento no
              esta el programa para el SO del Pingüino.

              El programa también encontrarás en la Web
              de la revista (www.hackxcrack.com), en la
              sección Artículos liberados y Descargas


  !              Hay dos versiones del ...                                 Pues nada, pinchamos en el OK.

  Hay dos versiones del programa, el Normal (gratis) y el PRO              Acto seguido veremos la siguiente pantalla
  (de pago), la verdad es que no sé qué diferencia hay si pagas por        donde se nos pregunta en perfecto Ingles si
  el pro, pero la versión normal va muy bien.                              d e s e a m o s c r e a r u n a n u e va c u e n t a .


Página 12                                                                                                          PC PASO A PASO Nº 19
Xbox Live - Jugando online grátis - Xbox Live - Jugando online grátis - Xbox Live




                                                         nos pide que nos tomemos unos segundos
                                                         para actualizar nuestro perfil… … llegando a
                                                         la siguiente pantalla.




          Si no tenemos una cuenta creada
          anteriormente, pulsaremos el botón YES.

          Acto seguido nos saldrá un formulario que
          deberemos cumplimentar.
                                                         Lo único que debemos hacer ahora es
                                                         seleccionar los juegos que tenemos, aceptamos
                                                         y llegaremos a la pantalla principal del
                                                         programa.




          Una vez rellenamos los datos que nos pide
          pulsaremos el botón NEXT. Nos aparecerán
          un par de ventanitas de confirmación y
          finalmente llegaremos a la siguiente imagen.




                                                         Ahora debemos conectar la consola al PC
                                                         mediante el cable RJ45


                                                             !                 Si la conexión...

                                                             Si la conexión es directa de la consola al PC, EL CABLE RJ-45 debe ser
                                                             cruzado. Si entre el PC y la Xbox hay un swich, Hub o Router, el cable
          Si hemos sido originales, no habrá ningún
                                                             debe ser no cruzado.
          problema con el alta de usuario, pero si el
                                                             Si no tienes ni idea de cables y esto te suena muy raro, no tengas vergüenza.
          Nick estuviese ocupado ya, deberemos elegir        Te aseguramos que si vas a una tienda y pides un “Cable de Red RJ-45
          otro hasta que lo acepte.                          no Cruzado” o un “Cable de Red RJ-45 Cruzado”, te entenderán
                                                             perfectamente.
          Introducimos el Nick y Pass que acabamos           No siempre fue así, hace algunos años (bastantes), si pedías “eso” te
                                                             miraban mal :)
          de crear y pinchamos en Login. El programa


PC PASO A PASO Nº 19                                                                                                        Página 13
Xbox Live - Jugando online grátis - Xbox Live - Jugando online grátis - Xbox Live




             Con esto claro, debemos pinchar en el Menu            Ahora pinchamos en OK.
             Options --> General Options.
                                                                   Este programa tiene opción de chat, para así
                                                                   organizar mejor las partidas.

                                                                   Si queremos podemos conectarnos al Chat,
                                                                   basta con pulsar el botón de la esquina inferior
                                                                   derecha (Connect Chat).

                                                                   Podemos, o bien jugar una partida creada, o
                                                                   bien crear una partida y esperar a que se junte
                                                                   la peña. Veamos las dos formas.



                                                                   JUGANDO UNA PARTIDA CREADA:

                                                                   En la parte superior vemos todas las partidas
                                                                   que hay en juego, seleccionamos una que nos
                                                                   guste, pinchamos dos veces encima de la
                                                                   partida que queremos jugar.

             Ahora en la consola ponemos el juego al que
             queramos jugar. En el juego debemos ir a
             INTERCONEXION o JUGAR EN RED y BUSCAR
                                                                       !            Los juegos ...
             PARTIDA.
                                                                       Los juegos vienen en varios formatos dependiendo de su
             Ahora en el PC pinchamos el botón FIND                    procedencia. El formato PAL es la europea, NTSC Japonesa y
             (puedes verlo en la imagen anterior) y, si                Americana.
             todo está configurado bien, nos encontrará
             la tarjeta de red del PC, y la consola Xbox.              Para poder jugar una partida online, debemos tener el mismo
                                                                       formato que el juego creado.
             Fijaos que arriba del todo, en el lado derecho,
             pone “My Xbox Status FOUND”, hasta que
             este estatus no esté en Found, no se podrá
             jugar online.



  !             Los problemas...

  Los problemas más frecuentes a la hora de encontrar la consola
  son:

           Que tengas un cortafuegos y esto no permita el buen
         funcionamiento. Para solucionar esto, configuramos el
         cortafuegos o lo desactivamos.

           Que el cable no este bien o no sea cruzado cuando
         debe serlo, o viceversa.                                  El juego debe estar buscando partida, cuando
                                                                   el tipo que haya creado la partida la inicie,
            Que no tengáis la conexión de Internet compartida.     vais a la consola y a jugar.


Página 14                                                                                                 PC PASO A PASO Nº 19
Xbox Live - Jugando online grátis - Xbox Live - Jugando online grátis - Xbox Live




          CREAR PARTIDAS:                                Espero veros jugando online y poder retaros
                                                         a unas partidas, nos lo pasaremos muy bien.
          Pinchamos en HOST
                                                         El mes que viene meteremos varios juegos
                                                         en un mismo DVD con un menú personalizado
                                                         por nosotros mismos.

                                                         Hasta el mes que viene.

                                                         Salu2.

                                                         PD. Este mes quiero agradecerle a mi novia
                                                         Cristina su gran labor a la hora de corregirme
          Seleccionamos el juego, la cantidad de         los artículos, MUCHAS GRACIAS ERES LA
          jugadores que permitimos, la contraseña es     MEJOR :)
          opcional, la descripción del formato (NTSC o
          PAL), la cantidad de jugadores que van a
          jugar en tu Xbox y el mensaje de bienvenida.




          Esperamos a que entre la gente a jugar y
          cuando nos guste, nos vamos a la consola e
          iniciamos la partida.

          Hay algunas opciones que no he explicado
          porque son muy sencillas y os enteraréis
          fácilmente de cómo son estas cosas.

          Hay otro programa que se llama Xlink que
          también es muy bueno y se configura de la
          misma forma.

          También podéis encontrar estos programas
          para otras consolas, como Game Cube y
          PS2.


PC PASO A PASO Nº 19                                                                                      Página 15
Crackeando las restricciones de
                 seguridad de Windows
                                                      por Hexborg




            Estáis en el ordenador del trabajo. O en el de clase. O en un cyber. Os apetece hackear. Queréis
            instalar un programa que os gusta o que necesitáis. Os ponéis manos a la obra y entonces...
            ¡Horror! ¡Los programas no se instalan! ¡No podéis ejecutar el editor del registro! ¡No podéis lanzar
            el panel de control! ¡El menú de contexto no funciona! ¡Esto es un infierno!
            El administrador, para que no toquetees el sistema, ha deshabilitado la mayoría de opciones!!! ¿Y
            ahora qué hacemos? Pues leer este artículo ;)



            0. ADVERTENCIA!!!                                   El truco está en que es el propio
                                                                programa el que comprueba si esos
            No empieces a hacer este ejercicio “a lo            valores existen en el registro. Aquí
            loco”. Antes léelo completo y decide si             está el punto débil: si hacemos que
            vas a hacerlo o no. Ni la editorial ni el           el programa no compruebe nada, la
            autor de este artículo se hace responsable          restricción será inútil :)
            del mal uso de las explicaciones expuestas          Vamos a verlo con un ejemplo. Vamos a
            ni de los perjuicios que puedas causar              hacer que el programa regedit (un
            en tu ordenador (o en el de terceros).              componente de Windows que sirve
                                                                precisamente para modificar el Registro
            Venga, resumiendo, que las pruebas en               de Windows) no pueda ser ejecutado y
            casa y con gaseosa. A estas alturas ya              de esa forma “nadie” pueda cambiar
            deberías tener un Sistema Operativo “de             nuestro registro de Windows. Esto lo que
            pruebas” para hacer los ejercicios que              hacen algunos administradores para que
            te proponemos :)                                    no puedas “tocarles el Windows”.      --
                                                                -> Y después “eludiremos” esta
            1. ¿Qué son las restricciones                       protección <---
            de seguridad?
                                                                Abrid el regedit. Ya sabéis, no está en
            Windows permite controlar la ejecución
                                                                el “menú de programas”, así que usad
            de algunos de sus programas y
                                                                --> Botón Inicio --> Ejecutar (escribimos
            componentes colocando ciertos valores
                                                                “regedit” y pulsamos aceptar).
            en el famoso “Registro de Windows”.

            Cuando ejecutamos un programa, este
            comprueba primero los valores del
            “Registro de Windows”. Si en el registro
            existe “tal valor”, el programa se negará
            a ejecutarse y, si existe “tal otro”, se
            ejecutará sin novedad.

            En esto consisten las restricciones de
            seguridad. Se trata de un sistema poco
            efectivo que resulta muy sencillo de saltar.


Página 16                                                                                            PC PASO A PASO Nº 19
Regedit - consigue libertad de acción - Regedit - consigue libertad de acción




            Ahora      buscad   la   clave
            HKEY_CURRENT_USERSOFTWARE                            En cuanto selecciones la opción Clave (pulsando con el
            MicrosoftWindowsCurrentVersi                       botón izquierdo del Mouse), verás una nueva Clave (con
            onPoliciesSystem.                                   un nombre tipo “Clave nueva #1”).
                                                                  Pulsando sobre esta nueva Clave (con el botón derecho
                                                                  del Mouse) selecciona la opción Cambiar Nombre y dale
                                                                  el nombre System. Ojo!!! He dicho System, no system.




  !            Puede ser que...

  Puede ser que en tu Windows solo llegues hasta
  HKEY_CURRENT_USERSOFTWAREMicrosoftWindo
  wsCurrentVersionPolicies y no encuentres la clave System
  (porque simplemente no existe).                                 Muy bien, pues ya tenemos nuestra Clave System :)
  Ningún problema, sitúa el Mouse sobre Policies, pulsa el
  botón derecho, aparecerán varias opciones, selecciona        En esa clave, crearemos un nuevo valor
  Nuevo ---> Clave (como en la imagen)                         de tipo dword, que se llame
                                                               DisableRegistryTools y le daremos valor
                                                               1. Venga, que no es complicado:

                                                                      Coloca el Mouse sobre la Clave
                                                                    System y pulsa el botón derecho.
                                                                    Selecciona (pulsa con el botón
                                                                    izquierdo del Mouse) la opción
                                                                    Nuevo Valor --> Valor DWORD




PC PASO A PASO Nº 19                                                                                          Página 17
Regedit - consigue libertad de acción - Regedit - consigue libertad de acción




                   En la ventana de la derecha
                  podrás ver que se ha creado un
                  nuevo valor llamado (por defecto)
                  Nuevo valor #1
                  Cámbiale el nombre por
                  DisableRegistryTools. Esto se
                  consigue pulsando con el botón
                  derecho del Mouse sobre Nuevo
                  valor #1 y seleccionando la opción
                  Cambiar Nombre. Acto seguido
                                                                Pues venga, en la nueva pantalla
                  escribes el nombre que queremos
                                                              que aparecerá cambiaremos el 0
                  darle,         ya      sabes,
                                                              por un 1, pulsaremos aceptar y
                  DisableRegistryTools.
                                                              listo!!!




                  Esto es lo que nos quedará:
                                                        ¿Ahora que? ¿Qué hemos
                                                        hecho?
                                                        Ya puedes cerrar el regedit. Con esto lo
                                                        que hemos hecho es impedir que el
                                                        usuario actual, o sea, nosotros, podamos
                                                        ejecutar una herramienta de edición del
                                                        registro. Usease, el regedit. Si le diéramos
                                                        a DisableRegistryTools el valor 0 o lo
                                                        borrásemos del registro, podríamos volver
                   P o r            d e f e c t o ,     a ejecutar el regedit sin problemas.
                  DisableRegistryTools tiene el
                  valor 0 (es decir, inactivo). Vamos   Vamos a probarlo. Ejecutad el regedit
                  a darle el valor 1 (es decir,         como antes y fijaos qué mensaje más
                  activado). En la ventana derecha,     chulo nos sale diciendo que el
                  pulsamos el botón derecho del         administrador ha deshabilitado la
                  M o u s e               s o b r e     modificación del registro. En esto consisten
                  DisableRegistryTools y                las restricciones de seguridad de Windows
                  seleccionamos la opción Modificar     basadas en el registro.

Página 18                                                                                PC PASO A PASO Nº 19
Regedit - consigue libertad de acción - Regedit - consigue libertad de acción




                                                               es tan complicado como parece. Un
                                                               programa, como ya debéis saber, no es
                                                               más que una secuencia de instrucciones
                                                               que se ejecutan en serie para llegar a
                                                               realizar la tarea que se le ha
                                                               encomendado.
                                                               Cuando un programador escribe un
Al regedit no le                                               programa, lo hace en un lenguaje de alto
  caigo bien.
                    Alguien podría pensar que la forma de      nivel como C, PASCAL, BASIC o cualquier
                    solucionar esto es muy simple: sólo hay    otro de los muchos que existen. Estos
                    que borrar las claves del registro que     lenguajes se llaman “de alto nivel” porque
                    nos están molestando y se acabó el         están próximos a la forma de pensar de
                                                               las personas. Es decir, tienen instrucciones
                    problema. Pero, ¿qué pasa si estamos
                                                               escritas en un lenguaje “similar” al inglés
                    ante un Windows de la familia de NT, en    que se pueden entender fácilmente al
                    el que las claves del registro tienen      leerlas.
                    permisos, y no tenemos permiso para
                                                               También existen los lenguajes de bajo
                    modificarlas? Pues que habrá que pasar     nivel, que son lenguajes cercanos al
                    a palabras mayores ;)                      funcionamiento interno del ordenador.
                                                               Están formados por instrucciones muy
                    2. ¿Qué hacemos ahora?                     básicas que resultan muy sencillas de
                                                               ejecutar.
                    Bueno, ya podemos volver a ejecutar el     Uno de estos lenguajes es el que se llama
                    regedit para borrar la clave que hemos     “lenguaje máquina” o “código
                    creado. Un momento... No podemos           máquina”. Este lenguaje es el único que
                    ejecutar el regedit porque la clave        el microprocesador entiende directamente.
                    no nos lo permite!!!, y no podemos         Todos los demás deben ser traducidos a
                                                               lenguaje máquina para poder ser Esto es código
                    borrar la clave sin ejecutar el regedit.                                             máquina. Libera tu
                                                               ejecutados.
                    ¡Houston, tenemos un problema!                                                                 mente.
                    Pero tranquilos, que no cunda el pánico.
                    Vamos a solucionarlo.
                    Antes que nada quiero advertiros de
                    que el regedit con el que voy a
                    trabajar es la versión de Windows XP.
                    Si usáis otra versión, podéis encontrar
                    diferencias, pero todo lo que digo aquí
                    os sirve.
                    Lo primero que hay que hacer en estos
                    casos es tomar nota del mensaje que
                    nos aparece al ejecutar el programa.
                    Lo recordáis, ¿verdad? : “El
                    administrador ha deshabilitado la
                    modificación del Registro“. Ese
                    mensaje es el que nos permitirá
                    encontrar la instrucción que hay que
                    modificar para conseguir nuestro
                    objetivo, tranquilo, que ahora lo
                    explicamos :)
                    ¿Cómo vamos a hacer esto? Pues no


 PC PASO A PASO Nº 19                                                                                           Página 19
Regedit - consigue libertad de acción - Regedit - consigue libertad de acción




             Recapitulando, cuando un programador        La gracia está en que existe una
             escribe un programa, lo escribe en un       equivalencia entre las instrucciones del
             lenguaje de alto nivel. Luego lo traduce    ensamblador y las del lenguaje máquina,
             a lenguaje máquina usando un programa       es decir, se puede traducir directamente
             llamado compilador o ensamblador            de lenguaje máquina a ensamblador y
             dependiendo de que el lenguaje sea de       viceversa.
             alto o de bajo nivel y, tras un proceso
                                                         Esta característica muy especial y no la
             que no me corresponde explicar aquí (ya
                                                         tienen otros lenguajes, en los que es muy
             ha sido explicado en anteriores números
                                                         fácil traducir del lenguaje que estáis
             de esta revista), acaba obteniendo un
                                                         usando a lenguaje máquina, pero es muy
             ejecutable (por ejemplo el típico archivo
                                                         difícil hacer el proceso inverso.
             loquesea.exe).
                                                         De manera que lo que necesitamos es un
             De manera que un ejecutable no es ni
                                                         programa que traduzca de lenguaje
             más ni menos que una serie de
                                                         máquina a lenguaje ensamblador y nos
             instrucciones traducidas a lenguaje
                                                         permita ver así el ejecutable. Este
             máquina. Si conocemos el lenguaje
                                                         programa se llama desensamblador, y
             máquina y podemos leer y modificar estas
                                                         nosotros utilizaremos el W32Dasm, que
             instrucciones, entonces seremos capaces
                                                         es uno de los mejores desensambladores
             de entender lo que hace el programa y
                                                         que existen.
             cambiarlo a nuestro gusto.

             Esto que parece muy sencillo en realidad    3. Manos a la obra
             puede ser terriblemente complicado. El
             problema es que el lenguaje máquina         Antes que nada, pasaremos por
             está formado por números. Esos números      www.hackxcrack.com, iremos a la sección
             se agrupan en varios grupos y cada grupo    “Artículos Liberados y Descargas”,
             de números es una instrucción con sus       entraremos en el número 19 y nos
             parámetros y todo.                          descargaremos el programa W32Dasm.
             Si miráis un programa en lenguaje           Nada mas descargarlo ya puedes
                                                         ejecutarlo -no necesita instalarse :)-.
             máquina, cosa que se puede hacer
             abriendo un ejecutable con un editor
             hexadecimal, lo único que veréis será un
             montón de números en hexadecimal. A
             ver quién es el guapo que entiende algo
             en ese galimatías que parece el código
             de matrix. Pues hay gente que es capaz
             de hacerlo, os lo aseguro, pero nosotros
             no lo vamos a necesitar (menos mal).

             La solución es usar otro lenguaje llamado
             “lenguaje ensamblador”. Este es otro
             lenguaje de bajo nivel que, a diferencia    Ahora creamos una carpeta en C:
             del lenguaje máquina, está formado por      llamada, por ejemplo, loveasm.
             palabras que se pueden entender.            Buscamos en nuestro PC el archivo

Página 20                                                                               PC PASO A PASO Nº 19
Regedit - consigue libertad de acción - Regedit - consigue libertad de acción




          regedit.exe (normalmente estará en
          C:Windows) y lo copiamos (he dicho
          copiar, no mover) en C:loveasm. Vamos
          a modificar dicho archivo, por lo tanto
          modificaremos nuestra copia, la que
          hemos copiado en c:loveasm.


          Ahora nos vamos al W32Dasm, Menu
          Disassembler --> Open File to
          Dissasemble y seleccionamos
          c:loveasmregedit.exe




                                                       ¿Qué es eso de cadenas y referencias a        Desensamblado del
                                                                                                     regedit. Más adelante
                                                       cadenas? Por cadenas me refiero a
                                                                                                        llegaremos a
                                                       cadenas de caracteres, es decir, mensajes     entenderlo casi todo.
                                                       u otros textos que el programa necesita
                                                       utilizar mientras se está ejecutando. Y
                                                       las referencias a cadenas son instrucciones
                                                       que hacen referencia a esas cadenas.

                                                       Pongamos un ejemplo. Supongamos que
                                                       un programador quiere proteger un
          Inmediatamente, el W32Dasm comenzará         programa para que no funcione después
          a desensamblar el fichero. Cuando haya       de cierto tiempo. Podría escribir algo como
          terminado, nos encontraremos ante una        esto: (Lo voy a poner en pseudos-código
          pantalla que nos mostrará todas las          para que todo el mundo lo entienda, sin
          interioridades del ejecutable. Como veis     tener que conocer ningún lenguaje de
          no sólo hay instrucciones sino también       programación):
          datos, recursos de Windows, referencias
          a librerías y varias cosas que el programa   Si el tiempo ha expirado
          necesita para funcionar.                     Entonces
                                                         Mostrar “Se acabó el asunto, colega”
          Como ya os he dicho antes, el mensaje          Terminar el programa
                                                       Sino
          que nos muestra el regedit cuando se           Resto del programa
          niega a ejecutarse será crucial para         Fin
          crackearlo. El W32Dasm nos permite
          ver las cadenas de un ejecutable o buscar    Aquí aparece una cadena: “Se acabó el
          en el listado las referencias a dichas       asunto, colega”. Y una referencia a la
          cadenas.                                     cadena en la instrucción “mostrar”, porque

PC PASO A PASO Nº 19                                                                                 Página 21
Regedit - consigue libertad de acción - Regedit - consigue libertad de acción




             esa instrucción utiliza la cadena para        y veremos una ventana que nos muestra
             mostrarla en la pantalla. La cadena estará    una lista de las cadenas que el regedit
             guardada en algún lugar de la memoria         utiliza internamente. Si nos fijamos un
             (...o del ejecutable) y la instrucción        poco, abajo del todo está la nuestra (si
             “mostrar” tomará como parámetro la            no la veis, darle un poco para abajo),
             dirección de memoria en la que está la
             cadena. Ésa es la referencia. De esta
             manera, si en otro lugar del programa
             necesita utilizar la misma cadena, no es
             necesario que la guarde dos veces en la
             memoria, simplemente volverá a colocar
             la dirección de memoria en la que está
             y, de esta manera, habrá otra referencia
             a la misma cadena.

             De modo que, en nuestro caso, tenemos
             una cadena. Si buscamos las referencias
             a esa cadena, encontraremos todas las
             instrucciones que utilizan esa cadena
             para algo.

             ¿Y de qué nos va a servir eso? Si os fijáis
             en el pseudo-código que he puesto más         Así que hacemos doble click sobre ella
             arriba, veréis que justo encima de la         y aparecemos en una instrucción en medio
             instrucción que utiliza la cadena hay un      del listado ensamblador del regedit. Si
             “si”. ¿Qué pasaría si quitásemos ese “si”     hay varias referencias a la cadena, cada
             e hiciésemos que pasara directamente          vez que hagamos doble click,
             al “resto del programa”? Pues que se          apareceremos en la siguiente referencia.
             acabó la protección.
                                                           Lo que estáis viendo ahora mismo es un
                                                           trozo del desensamblado del programa
             4. De la teoría a la práctica
                                                           regedit. Como veis, está dividido en tres
             Así que vamos a llevar esto a la práctica.    columnas. Cada línea es una instrucción,
             En el W32Dasm veremos un menú que             tanto en lenguaje máquina como en
             pone Refs. Efectivamente, lo habéis           ensamblador. La primera columna es la
             adivinado, ahí es donde están las opciones    dirección de memoria en la que está la
             relacionadas con las referencias.             instrucción, la segunda columna es el
             Elegimos Menu Refs --> String Data            código de la instrucción en lenguaje
             References                                    máquina y la tercera columna es la
                                                           instrucción en ensamblador.
                                                           También hay otras líneas con mensajes
                                                           del W32Dasm que nos dicen cuales son
                                                           las referencias y qué instrucciones están
                                                           referenciadas desde otras. Esto lo usan
                                                           las instrucciones de salto para saltar a
                                                           otras partes del programa. Vamos a ver
                                                           lo que significa todo esto.


Página 22                                                                                 PC PASO A PASO Nº 19
Regedit - consigue libertad de acción - Regedit - consigue libertad de acción




                                                        continuar. En caso contrario, seguirá por
                                                        las instrucciones que hay detrás del salto,
                                                        que muestran el mensaje y terminan.

                                                        Así que, lo que tenemos aquí es un
                                                        esquema igual al del pseudo-código. El
                                                        “si” es el salto y el parámetro del salto
                                                        es la dirección de memoria de la
                                                        instrucción a saltar (como nuestra etiqueta
                                                        continuar). Podéis ver que esa instrucción
                                                        está después de la que hace referencia a
                                                        la cadena. En este caso se trata de un
                                                        salto condicional (salta SI es igual). Lo
                                                        que hay que hacer es convertirlo en un
                                                        salto incondicional, o sea, que siempre
                                                        salte :)

                                                        5. El truco del almendruco
                                                        Aquí vamos a meternos un poco con el
          Si os fijáis un poco más arriba de la
                                                        código máquina, porque lo que vamos a
          referencia, hay una instrucción que
                                                        hacer es modificar el código de la
          empieza con “je”. Esto es un salto. (je =
                                                        instrucción de salto (ese que pone “74
          jump if equal, saltar si es igual). Lo que
                                                        1A”) para convertirla en un salto
          estáis viendo ahora mismo es un esquema
                                                        incondicional.
          similar al pseudo-código que he puesto
          antes, y tiene la siguiente estructura:       El W32Dasm no nos permite modificar
                                                        directamente las instrucciones en
                 comprobar una condición
                 test eax, eax                          ensamblador, lo cual tampoco nos
                 je Continuar
                 mostrar mensaje y salir                interesa, porque ya os habréis fijado en
                 continuar:                             que no todas las instrucciones tienen la
                 Resto del programa
                                                        misma longitud. Por ejemplo, la instrucción
          Las instrucciones clave son test, je y la     de salto puñetera ocupa 2 bytes, pero la
          etiqueta. Lo primero que hay es código        instrucción call que hay un poco más
          para comprobar la protección. Son las         arriba ocupa 5 bytes.
          instrucciones que hay delante de test.        Imaginaros lo que pasaría si nos
          Esas instrucciones dejan un valor en eax,     equivocásemos y cambiásemos una
          que es un registro del procesador, algo       instrucción que ocupa 2 bytes por otra
          así como una variable que contiene un         que ocupa más. Sobrescribiríamos las
          dato.                                         instrucciones que hay a continuación y
                                                        Windows cantaría su canción favorita: “El
          eax valdrá 1 si la protección esta activada   programa ha efectuado una operación no
          y 0 si no lo está. La instrucción “test       permitida”.
          eax, eax” comprueba si eax es igual a
                                                        Así que tenemos que cambiar el salto
          cero, y la instrucción je hace que, en
                                                        condicional de 2 bytes por un salto
          caso de que eax valga cero, el programa
                                                        incondicional que también ocupe 2 bytes.
          siga ejecutándose a partir de la etiqueta

PC PASO A PASO Nº 19                                                                                  Página 23
Regedit - consigue libertad de acción - Regedit - consigue libertad de acción




             A parte de saltos condicionales e              parte del código de jmp.
             incondicionales también existen saltos
                                                            Bueno, pues a estas alturas seguro que
             largos y saltos cortos. Se diferencian en
                                                            ya sabéis lo que hay que hacer. Hay que
             lo que ocupan. Aquí están sus códigos:
                                                            cambiar el “74” por “EB”.
                                                            Primero haced doble click sobre la
             Saltos cortos:                                 instrucción de salto para seleccionarla
                                                            (aparecerá una barra verde sobre ella).




             Saltos largos:




             Por supuesto, las XX del código máquina
             dependen de las direcciones de los saltos,
             pero eso no lo vamos a tocar, sólo hay         Ahora si os fijáis en la barra de estado
             que conocer los números del principio.         del W32Dasm (la de abajo del todo de la
             Hay muchos más saltos, pero de                 ventana) veréis que, entre otras cosas,
             momento estos son los únicos que vamos         aparece el texto “@Offset 00007F12h
             a necesitar. También es interesante            in File: regedit.exe”. Tomad nota de
             conocer una instrucción más. Os la voy         este número porque es el offset en el
             a presentar: Se llama nop, su código es        que está el salto dentro del ejecutable
             90 y sirve para no hacer nada.                 (que no es lo mismo que la dirección de
                                                            memoria).
             A primera vista no parece una instrucción
             muy útil, pero en realidad es una de las
             que más se utilizan a la hora de crackear.
             Por ejemplo, si os fijáis en el código largo
             de la instrucción jmp veréis que hay un
             90 delante.
                                                                !            Como ya os dije antes...
             Lo que pasa es que la instrucción jmp
             ocupa un byte menos que los demás                 Como ya os dije antes, SIEMPRE debéis trabajar sobre
             saltos largos y para ajustar la longitud          una copia de los ficheros originales que vayáis a modificar.
             nosotros añadiremos una instrucción nop           Nosotros ya estamos trabajando sobre una copia. No vamos
                                                               a modificar el regedit.exe original. De esta manera, si no
             delante. Por eso lo he puesto entre               tenéis permisos para modificar el regedit.exe podéis hacerlo
             paréntesis. Realmente el 90 no forma              de todos modos.


Página 24                                                                                         PC PASO A PASO Nº 19
Regedit - consigue libertad de acción - Regedit - consigue libertad de acción




          Abrid la copia del regedit con un editor
          hexadecimal. ¿Cómo? ¿Nunca has
          utilizado uno? Bueno, vale… Nosotros
          vamos a utilizar el UltraEdit-32 en su
          versión 10.10c (aunque podrías utilizar
          cualquier otro).


          Lo primero, como siempre, nos vamos a
          www.hackxcrack.com y descargamos el
          programa. Lo instalamos y ejecutamos.
          Os encontrareis frente a la ventana
          principal del programa :)




                                                     Como es muy obediente, lo abrirá y
                                                     tendremos lo siguiente :)




          Ahora, desde nuestro nuevo juguete (el
          UltraEdit-32) hay que ir al offset que
          decía el W32Dasm (00007F12h).


          ¿Qué como se hace eso?


          Bueno, vengaaaa. Ya tenemos el
          UltraEdit-32 ejecutado y esperándonos,
          bien. Lo que queremos hacer es EDITAR      Ahora tenemos el regedit.exe a nuestros
          (modificar) el regedit, pues tenemos       pies, podemos editar (modificar)
          que decirle al UltraEdit-32 que abra el    directamente su código. Primero (como
          regedit.                                   ya hemos dicho) tenemos que ir al offset
          Pues venga, Menu Archivo --> Abrir y le    que decía el W32Dasm (00007F12h).
          conducimos al regedit.exe que tenemos      Pues venga, Menu Buscar --> Ir a
          en C:lovease                             línea/pagina o la combinación de teclas
                                                     Ctrl-G

PC PASO A PASO Nº 19                                                                            Página 25
Regedit - consigue libertad de acción - Regedit - consigue libertad de acción




                                                             debemos escribir “0x00007F12h” (sin
                                                             las comillas). Si alguien se pregunta el
                                                             motivo de añadir “0x” el mismo recuadro
                                                             ya lo aclara, estamos introduciendo un
                                                             dato en HEX (más detalles consultar
                                                             anteriores número de la revista o consultar
                                                             en el foro www.hackxcrack.com).
                                                             Venga, que acabamos, pulsamos el botón
                                                             aceptar y nos encontraremos lo siguiente:




  !            Para los que...

  Para los que no utilicen el UltraEdit-32:
  Como ya hemos dicho, editores hexadecimales hay muchos.
  Para hacer lo mismo en el Hex Workshop, es con
                                                             Lo primero es asegurarnos de que en esa
  Edit/Goto... o Ctrl-G y debéis seleccionar “Beginning of
                                                             posición está el salto, hay que asegurarse
  file” y “Hex”. Usando el WinHex es con Position/Go to
                                                             de que estén los códigos “74 1A”. Fíjate
  Offset... o Alt-G. Aseguráos de que esté seleccionado
                                                             en la imagen, hemos “pintado” de azul
  “Beginning of file” y “Bytes”.
                                                             los códigos. Si no estuviesen, es que te
                                                             has equivocado en algo, revisa los pasos
             Y nos aparecerá esta escueta ventana:           a seguir e inténtalo de nuevo.
                                                             Una vez hemos encontrado el salto “74
                                                             1A”, deberemos… ALTO!!! LEE LA
                                                             S I G U I E N T E N OTA A N T E S D E
                                                             CONTINUAR!!!


                                                                !           Para los que...

                                                                LEGAL o ILEGAL: Ahora te diremos que para seguir el
                                                                ejercicio “DEBERÍAS” hacer tal y cual cosa. Remarcamos
                                                                lo de DEBERÍAS, además no te enseñaremos NINGUNA
                                                                ventanita que indique que nosotros estamos haciendo el
             En el rectángulo blanco hay que escribir           ejercicio… ¿por qué?... Pues porque es ILEGAL emplear
             el offset PRECEDIDO de “0x” (el número             la ingeniería inversa para MODIFICAR programas de
             0 y la letra x sin las comillas). Es decir,

Página 26                                                                                       PC PASO A PASO Nº 19
Regedit - consigue libertad de acción - Regedit - consigue libertad de acción




                                                                Si con la segunda tampoco funciona seguid
 terceros (en este caso el regedit.exe, un programa de          probando hasta encontrar la buena. No
 MICRO$OFT).                                                    os preocupéis, no hay muchas. Por
 Por lo tanto, te lo advertimos, si sigues el ejercicio estás   ejemplo, en Windows Millenium, un
 cometiendo un delito. Si estuviésemos tu y yo sentados en      pajarito me dijo que la buena es la
 tu casa te diría que no pasa nada (no creo que en tu casa      segunda ;)
 Bill Gates tenga una cámara espiándote), pero como estás
 leyendo una publicación legal debemos avisarte y remarcar
 este tipo de cosas.                                            7. Deja el sistema operativo como
                                                                estaba

                                                                Si ejecutáis el regedit.exe original de
            Ahora DEBERÍAS cambiar el 74 por “EB”
                                                                Windows (situado normalmente en
            (como si estuvieses en Word :). No te
            enseñamos la pantalla porque es ILEGAL.             C:Windows) veréis que aún sigue
            Y DEBERÍAS guardar el fichero, en el                mostrando el mensaje “El Administrador
            UltraEdit-32, Menu Archivo --> Guardar.             ha deshabilitado la modificación del
                                                                Registro”; pero si ejecutases
            Se acabó!!! Ahora DEBERÍAS ejecutar el
                                                                regedit.exe que has crackeado (el que
            regedit.exe que DEBERÍAS haber
                                                                tienes en c:loveasm), funciona sea cual
            modificado y que lo tienes en c:loveasm.
            PODRÍAS comprobar que ahora SÍ                      sea el valor que tenga en el registro
            DEBERÍAS poder acceder al registro de               DisableRegistryTools.
            Windows.                                            Ahora       ya     podéis      borrar
                                                                DisableRegistryTools o poner su valor
            6. Ultimando detalles                               a 0 (dejar vuestro sistema como estaba).
            Si no os funcionase, puede ser porque               Con todo esto DEBERÍAMOS haber
            estáis usando otra versión del regedit              conseguido un regedit.exe que
            y la referencia correcta no era esa (el
                                                                PODRÍAMOS llevar a cualquier sitio (por
            salto correcto no era ese). Ningún
                                                                ejemplo un “cyber-cafe”) y nos permitirá
            problema, borrad la copia del regedit y
                                                                editar el registro de cualquier PC de la
            volved a copiar el original en c:loveasm.
                                                                sala aunque el administrador haya
            Con el W32Dasm volved a buscar la                   deshabilitado esa opción ;)
            referencia. Esta vez, en lugar de una,
            haced doble click dos veces sobre la                Ya sabes que el registro de Windows es
            cadena “El Administrador ha                         el “alma” de Windows, si puedes acceder
            deshabilitado la modificación del                   a él y modificarlo puedes hacer “casi
            Regist” en la ventana “W32Dasm List                 cualquier cosa”.
            of String Data Ítems” (recuerda que                 Espero que no os haya parecido muy difícil
            llegaste a esta ventana mediante el Menu            y que lo hayáis entendido bien. Saludos
            Refs del W32Dasm).                                  a todos.
            Haciendo esto iremos a la segunda
            posición y deberemos repetir el resto del
            proceso. En este caso la referencia del
            offset será distinta (recuerda apuntarla).


PC PASO A PASO Nº 19                                                                                         Página 27
Curso de seguridad
                         en redes - ids

            - Conoceremos SNORT: Un potente IDS, un potente snifer, un potente "caza-intrusos"
            - Sistemas IDS: HIDS, NIDS Y DIDS
            - Vamos a acercarnos a LA VERDADERA SEGURIDAD!!!



            Hola amig@s, otra vez por aquí ;)                  Algunos estaréis pensando... “Joer, qué
                                                               misterio tendrá... si total se instala, se aplican
            En esta ocasión no vamos a probar                  las reglas, se ejecuta y a mirar...” bueno,
            vulnerabilidades, todo lo contrario, vamos ha      pues si queremos entender... primero hay que
            intentar taparlas, protegernos y asegurar          aprender... además ya conocéis la filosofía de
            nuestros PC’s. Y cuando digo nuestros PC’s         esta publicación: “... no sólo nos gusta que
            digo TODOS, no sólo uno de ellos.                  funcione, nos gusta saber cómo funciona...”


            Este es el primero de una colección de artículos   Si tienes un conocimiento medio de snort,
            que tratan de SEGURIDAD, lo pongo en               este artículo te sabrá a poco, pero si no sabes
            mayúsculas porque eso es lo que vamos a            lo que son cosas como el pre-procesador,
            implementar, seguridad, seguridad y                Frag2, Stream4 ó Stream5, el sistema de
            seguridad.                                         detección, plug-in para salida, etc... este
                                                               artículo te abrirá los ojos y te ayudará a
            La idea esencial es aprender dos cosas básicas:    entender “el alma” de los IDS y sobre todo
                                                               ASEGURAR la red mediante un sofisticado
                    Un Sistema de Detección de Intrusos        mecanismo de alertas y detección de ataques
                  (IDS - Intrusion Detection System)           comunes, exploración de puertos, exploits,
                   Un Cortafuegos (Firewall) y/o               desbordamientos de memoria, etc.
                  Proxy-Firewall
                                                               Terminaremos creando un Sistema Central
            Empezaremos por los IDS. Cuando me decidí          IDS, con soporte de Bases de datos, servicios
            a escribir sobre estos temas me surgió una         Web para la generación de informes, alertas
            gran duda entre dos posibilidades: ¿Qué            por mensajería, reglas personalizadas y más....
            haces, Vic_Thor? ¿Pones cuatro links, das
            tres ejemplos y te ventilas el IDS en dos          Las aplicaciones escogidas se ejecutan sin
            páginas? O.... ¿Explicas el cómo, por qué,         problemas en plataformas LiNUX y Windows,
            dónde y de qué manera se implementa un             quizás en lo que más difieren unas versiones
            IDS?                                               de otras es en el momento de la instalación,
                                                               de los “añadidos” y de alguna que otra cuestión
            Opté por la última, lo que quiere decir que        menor o mayor dependiendo de cómo lo
            son “malas y buenas” noticias, “malas” porque      veamos.... con gran esfuerzo y cariño hacia
            me tendréis que aguantar más de un mes ya          vosotr@s estos artículos están pensados en
            que me decidí a explicar pormenorizadamente        ambas plataformas, lo iréis descubriendo poco
            la arquitectura de snort, que será el IDS a        a poco.
            implementar, y serán “buenas” porque tras
            esta serie de artículos seréis capaces de          En artículos posteriores abordaremos firewalls
            manejar sin problemas, sin miedos y con total      y proxys no... no se trata de ZoneAlarm...
            seguridad este tipo de aplicaciones.               que va... es algo más profundo y “serio”,


Página 28                                                                                           PC PASO A PASO Nº 19
Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad




          flexible y configurable, que analice no sólo        Una de las mejores analogías para describir
          puertos e Ip’s, también contenidos y, si nos        un IDS es la de un antivirus... estos examinan
          animamos, hasta nos terminamos montando             los archivos de tu disco duro en busca de
          un Honeypot para despistar a nuestros               códigos dañinos, establecen un sistema de
          “atacantes”, me estoy refiriendo a Firewalls        protección de archivos, memoria y arranque,
          del tipo Next Generation o Firewall 1 de            y protege a los archivos en tiempo de
          Checkpoint, a squid o ISA Server...                 ejecución.

          No me gustan las dedicatorias, pero en este         Esto mismo es lo que hace un IDS, pero en
          caso se merecen... este artículo se lo dedico       lugar de inspeccionar archivos, particiones y
          especialmente a mi hijo Oscar, que con sus          bloques de memoria, analizan paquetes de
          siete años me ha tenido que aguantar                datos, analizan el tráfico de la red en busca
          demasiados fines de semana “enfrascado” en          de patrones predefinidos que hagan
          el ordenador mientras él jugaba o veía sus          “sospechoso” un paquete de datos a nivel IP
          “pelis” o me “daba la lata” con eso de.... “Papa    o MAC.
          y ahora qué hacemos.... deja ya de trabajar....”
                                                              Al igual que sus “primos” los firewalls, pueden
          Mil besos, hijo por tu paciencia y tu cariño.       ser Software, Hardware o una combinación
                                                              de ambos, y pueden detectar accesos no
          Alarma, Alarma... Intrusos !!!!                     autorizados desde dentro o fuera de la red.


          Parece obvio y casi todos podríamos dar varias      Aunque un IDS puede configurarse en el
          definiciones de lo que es una intrusión, yo         mismo sistema donde corre un firewall, un
          me voy a quedar con dos:                            servidor, etc.. no es muy recomendable, lo
                                                              más habitual es que el IDS sea un equipo
          Intrusión es el acto de entrar en un lugar          independiente puesto que la carga de
          sin invitación o sin ser bienvenido, es como        procesador puede ser muy alta si la red es
          colarse en una fiesta privada a la que no           muy “parlanchina”.
          fuimos invitados.
                                                              Un IDS puedes imaginarlo como un análisis
          En el mundo de las redes, una intrusión             de sangre, por el simple hecho de hacerte un
          es simplemente el intento de comprometer            chequeo no curarás una enfermedad, un IDS
          cualquiera de nuestros dispositivos de red,         hará saltar las alertas, avisarte de que estas
          ya sean switches, routers, estaciones de            bajo de hierro, que tienes un exceso de
          trabajo, servidores o cualquier otro medio          colesterol o que los trasaminasas están por
          que brinda conectividad o se conecta a la red.      las nubes, “curar” la enfermedad pueden
                                                              escapársele al IDS, puede parar la ingesta
          Visto de ese modo, un IDS podría compararse         de alimentos que aumenten el colesterol o
          con una alarma antirrobo, detecta las               que dañen el organismo pero realmente no
          intrusiones o accesos no permitidos y hace          cura la enfermedad...
          “sonar la sirena”.
                                                              Para lograr estas proezas, utilizan diversas
          Lo cierto es que un IDS hace algo mas...
                                                              técnicas, desde la “detección de firmas” como
          reconoce a los intrusos, los identifica e incluso
                                                              lo hacen los antivirus, pasando por las huellas
          puede parar el ataque, de este modo, un IDS
                                                              de ataques conocidos hasta las detecciones
          es como una alarma antirrobo con cámaras
                                                              “anómalas” de tráfico inusual, actividad
          de seguridad, junto con un banco de datos
                                                              “normal” o “anormal” muy parecido a como
          que reconoce al intruso y con un sistema de
                                                              lo hacen los antivirus con el llamado análisis
          vigilancia que registra los accesos y envía “la
                                                              heurístico.
          policía” a detener al ladrón.

PC PASO A PASO Nº 19                                                                                            Página 29
Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad




            Algunos IDS pueden hasta llegar a
            desconectar el host atacado, incluso aunque       !            Modo          Promiscuo...
            fuese un router o la puerta de enlace, para
            mantener “el orden” y la seguridad en la red.     Modo Promiscuo / Modo No Promiscuo: Si te estás
                                                              preguntando cómo poner una Tarjeta de Red en modo
            Los IDS funcionan como el análisis forense
                                                              Promiscuo, tranquilo, cuando lleguemos a la parte practica
            de la escena de un crimen, obtienen las huellas
                                                              del artículo lo podrás hacer tu mismo :)
            dactilares, análisis de ADN, pautas de
            comportamiento, muestras de cabello, sangre,
            etc... de ese modo recomponen “el ataque”
            lo identifican, lo detienen o al menos lanzan       En la figura 1
            las alertas.                                        observamos una
                                                                red con 4IDS
            IDS hay más de uno...                               basados en host,
                                                                uno para el
            Aunque es habitual hacer referencia al IDS          S e r v i d o r We b
            como el Sistema Detector de Intrusos,               corporativo y
            ciertamente puede ser más sofisticado que           otros tres para
            una máquina perdida por nuestra red..               e q u i p o s
            disponemos de tres tipos de IDS, los HIDS,          individuales de la
            NIDS y DIDS, los vemos a continuación:              LAN.


                    HIDS (HostIDS) esto es, un IDS                NIDS
                  vigilando un único host que observa           (NetworkIDS) o
                                                                IDS basados en
                  únicamente a ese host, en este caso,
                                                                red. Este tipo de
                  la tarjeta de red corre en modo no
                                                                s i s t e m a s                        Figura 1. IDS
                  promiscuo, es decir, sólo recogerá,
                                                                detectarán ataques a TODO el segmento basado en Host.
                  analizará y detectará paquetes de datos                                                 HIDS
                                                                de la red en el que corre el IDS, la
                  que vayan dirigidos a ese host en             tarjeta de red del NIDS debe corren
                  concreto y los paquetes que salgan de         en modo promiscuo, es decir,
                  ese host... bueno algunos otros               capturará TODO el tráfico que vaya
                  también...                                    destinado a cualquier equipo del
                                                                segmento de red y no sólo al equipo
                  Su mayor ventaja reside en un uso             donde se ejecute el NIDS
                  menor de la CPU y en la existencia de
                  tarjetas de red que por hardware no           La utilización de este sistema debe ser
                  es posible ponerlas en el modo                autorizado por el administrador y
                                                                monitorizado, puesto que teóricamente
                  promiscuo.
                                                                puede resultar comprometida la red
                                                                completa. Incluso pueden utilizarse más
                  Otra ventaja es la de “acotar” las reglas
                                                                de un NIDS para asegurar con mayor
                  de procesamiento de los paquetes a
                                                                efectividad todos los host.
                  analizar, por ejemplo, si instalamos un
                  HIDS en un servidor web, podemos              En la figura 2, vemos un sistema IDS
                  eliminar del conjunto de reglas ataques       basado en dos NIDS el primero
                  a otro tipo de servicios y servidores         protegería el segmento compuesto por
                  como DNS, FTP, etc.                           el Servidor Web y el Servidor Mail,
                                                                mientras que el segundo protegería a


Página 30                                                                                       PC PASO A PASO Nº 19
Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad




                                          TODO el segmento          un IDS se convierte
                                          LAN                       en un analizador de
                                                                    los cambios en el
                                          DIDS                      comportamiento del
                                         (DistributedIDS) o         firewall o de las ACL
                                         IDS Distribuidos.          de y proveen a los
                                         Esto es un sistema         mismos       de    un
                                         IDS basado en              mecanismo          de
                                         arquitectura               auditoria y control.
                                         Cliente/Servidor,
                                         los NIDS actúan            Te       e s t a r á s
                                         como los sensores de       preguntando        ...
                                         un sistema de              ¿Entonces si uso un
                                         alarmas y están            IDS puedo pasar del
                                         distribuidos por la        firewall? R:NO, el
                                         red,    localizan                                                                Figura 3
                                                                    firewall bloquea los accesos a puertos no IDS Distribuido
                                         ataques,        los
                                                                    permitidos y generalmente cumple bien sus
 Figura 2. IDS          centralizan y pueden almacenar o
 basado en red.                                                     cometidos, pero en muchos casos no están
                        recuperar los datos de una Base de
     NIDS                                                           diseñados para analizar el contenido de los
                        Datos centralizada.
                                                                    paquetes que circulan por los puertos
                        En este modo, las tarjetas pueden           autorizados.
                        estar en modo promiscuo o no
                        promiscuo, las reglas de cada una se        El motivo por el que los firewalls (y sobre todo
                        hacen “a medida” según las                  los personales, tipo Zone Alarm, Kerio, etc..)
                        necesidades de cada segmento, host          no analizan los paquetes es por el alto consumo
                        o red completa, las alertas, las huellas,   de recursos. El uso de ciclos de CPU es
                        las firmas de ataques, los registros,       extremadamente intenso y el rendimiento del
                        etc., se extraen o vuelcan en un sistema    equipo sería muy bajo, no digamos nada si
                        central, este tipo de soluciones son        se trata de un proxy-firewall, deberíamos
                        habituales en arquitecturas del tipo        disponer de un “maquinón” para soportar en
                        VPN (Virtual Private Network, Redes         la misma máquina un proxy, un firewall y un
                        Privadas Virtuales)                         IDS corriendo a la vez.

                        Un DIDS puede ser un sistema de             Además, por los puertos permitidos puede
                        NIDS, HIDS o una combinación de             correr tráfico “enmascarado”, ya sabes, lo de
                        ambos, son soluciones complejas con         tunelizar las conexiones y hacer pasar algo
                        alto grado de seguridad.                    por lo que no es. Imagina un servidor de IRC,
                                                                    Web, KaZaA o un servidor de mensajería
                        En la figura 3, tenemos un Sistema
                                                                    instantánea, es posible configurar un IDS para
                        Distribuido IDS, en la que los 3 NIDS
                                                                    detectar e informar de tráfico no “habitual”
                        de red se comunican con el NIDS
                                                                    por esos protocolos y puertos.
                        central dónde se almacenan las
                        incidencias, logs, etc...
                                                                    Un IDS puede ser configurado para monitorizar
                                                                    una red, pasiva o activamente. En el modo
                  El uso de un IDS con firewalls y/o routers
                  con listas de acceso (ACL’s) implementadas        pasivo se limitará a registrar los accesos y a
                  que permiten o deniegan el tráfico eleva al       guardar logs de los mismos, en el modo activo
                  máximo la seguridad en la red, en estos casos     puede reaccionar contra la intrusión.


PC PASO A PASO Nº 19                                                                                                   Página 31
Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad




            Se pueden monitorizar Servidores de Bases        Podemos configurar snort en tres modos
            de datos (SQL, MySQL, ORACLE...) Servidores      básicos:
            DNS, Servidores Mail, Servidores de
            administración remoto (VNC, TS, Citrix,                   Sniffer, como un “simple”
            PcAnywhere...)                                           analizador de protocolos
                                                                       Packet logger, como un capturador
            Snort, El espía que me amó....                           y “grabador” de paquetes
                                                                      NIDS, como un sistema de
            El creador de Snort fue Marty Roesch y en                detección de intrusos en red
            un principio lo llamó “Lightweight Intrusión
            Detection System”, (Sistema ligero de            Lógicamente, configurar snort como un NIDS
            detección de intrusos), sin embargo, snort       es la forma más compleja y flexible de usarlo.
            es todo menos “ligero”.
                                                             Snort se basa en firmas IDS y usa reglas para
            Snort es capaz de analizar en tiempo real el     comprobar los paquetes que viajan por la red
            tráfico de paquetes en un equipo o en una        y genera alertas enviándolas a una Base de
            red corporativa y además mantener un registro
                                                             datos, un archivo de sucesos o mensajes
            de logs e identificar ataques concretos en
                                                             SNMP.
            función de su “huella dactilar”.

                                                             Originalmente fue concebido como un esnifer,
            Snort puede ejecutarse en multitud de
            Sistemas Operativos, es una distribución         Martín Roesch lo escribió para LiNUX y para
            “Open Source” y bastante común entre los         su propio uso, apenas si contaba con 1.600
            administradores de sistemas.                     líneas de código distribuidas en dos ficheros.,
                                                             tras el éxito obtenido y las sucesivas revisiones
            Si lo deseamos snort puede ser un “simple”       del producto, hoy en día se puede implementar
            esnifer, es decir, podemos configurar snort      en varios sistemas operativos y su código
            sin reglas de procesamiento y análisis de        asciende a más de 75.000 líneas., hasta
            tráfico. Aunque lo normal es que no sea así,     dispone de plug-ins para bases de datos como
            una de las más poderosas características se      MySQL o Postgres, para RPC, etc.. hasta plug-
            snort es la de utilizar registro de sucesos, y   ins gráficos para una administración “mas
            métodos de alertas volcando sus resultados       sencilla” . Igualmente existen plug-ins para
            en servidores Syslog ya sea en texto plano,      protocolos específicos, como HTTP, 802.11
            archivos XML o incluso enviar mensajes del       (wireless) ARP, etc...
            tipo WinPopup a clientes Windows.
                                                             Las reglas de snort incluyen diversos tipos
            Según las definiciones que hemos ido dando
                                                             de servicios, P2P, Backdoors, troyanos y/o
            anteriormente, snort es una vacuna para los
                                                             puertas traseras, Denegación de Servicios
            paquetes de datos que circulan por la red, es
                                                             DoS y DDoS, ataques Web, e incluso algunos
            un sistema de Rayos X que inspecciona estos      virus conocidos.
            paquetes, los captura (sniffer) los coloca en
            un contenedor o registro (packet logger)
            y/o los examina en busca de patrones, ataques        !            Si eres un nuevo lector...
            y análisis forense (NIDS)

                                                                Si eres un nuevo lector de PC PASO A PASO, seguro que
            Snort es un sistema NIDS, puede analizar
                                                                te desespera leer cosas como MySQL, Postgres, RPC,
            tráfico IP en busca de “huellas” comunes de
                                                                HTTP, 802.11, ARP, P2P, Backdoors, DDoS, DoS. No
            un ataque, analiza los protocolos
                                                                dejes que te atemoricen!!! La mayoría han sido explicados
            individualmente, como ejemplo puede detectar
                                                                ya en anteriores números, de todas maneras ya verás que
            ataques del tipo Buffer overflow, ataques CGI,
                                                                podrás seguir este artículo sin necesidad de ellos :)
            SMB, RPC o un escaneo de puertos.


Página 32                                                                                         PC PASO A PASO Nº 19
Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad



Algunos links interesantes para empezar con snort:          El otro componente crítico es la tarjeta de
                                                            red, o mejor dicho... “las tarjetas de red....”
http://sourceforge.net/mailarchive/forum.php?forum=snort-   aconsejable dos una para la escucha
users ---> Foros de uso de la aplicación.                   “pasiva” y otra para la conectividad básica
                                                            del segmento de red.... aunque se puede
http://sourceforge.net/mailarchive/forum.php?forum=snort-   implementar en una sola tarjeta de red, no
sigs ---> Foros dedicados exclusivamente al uso de las      es lo ideal.
            reglas.
                                                            Por supuesto la velocidad de la tarjeta de
Y cómo no... http://www.snort.org/ ---> Para encontrar      red deberá ser acorde con la velocidad
 documentación, descargas, plug-ins, etc...                 de la LAN, si instalamos un equipo snort con
                                                            una tarjeta de red de 10 Mbs en una LAN con
http://www.snort.org/cgi-bin/done.cgi y                     PC’s equipados con tarjetas de red a 100 Mbs,
http://www.snort.org/cgi-bin/needed.cgi --> Índice de       perderemos paquetes y tendremos resultados
reglas.                                                     erróneos.

http://www.snort.org/docs/ ---> Documentación.              No olvides que snort es un programa de
                                                            escucha PASIVO, sólo escucha y analiza...
http://www.snort.org/dl/ ---> Descargas.                    una táctica para “ocultar” snort a ojos y
                                                            miradas indiscretas es la de utilizar cableado
            Las reglas se organizan por números (los        en el que los hilos de transmisión no están
            llamados SID o SIGS), por ejemplo el Sids       conectados (snort es pasivo, sólo escucha)
            para los ataques a IIS del bug de unicode       de ese modo si alguien en la red o fuera de
            y otros son 970, 974, 981, 982, 983,            ella “busca” el IDS no lo encontrará ya que
            recuerdas esto de algo, ¿no? (números dos       esa máquina no responderá al tener “capada”
            y tres de la revista).                          su posibilidad de transmitir.

            La última versión de snort disponible es la     Por lo demás, snort no es muy quisquilloso,
            2.1.1 aunque algunas herramientas y plug-       aunque como en todas las aplicaciones de alto
            ins están orientadas a la versión 2.0.x con     rendimiento, mejor cuanto más veloz sea el
            pocos cambios y revisar el changelog de la      microprocesador, mejor 256 MB de RAM que
            página oficial para conocer las mejoras         128Mb... también dependerá de la plataforma
            implementadas por la versión 2.1.1 podremos     elegida... a Windows le gusta mucho la RAM...
            usarlos.


            Requisitos Hardware y Software                      !           Para los curiosos
            para Snort
                                                                Para los curiosos: ¿Qué es eso de utilizar cableado
            Hardware                                            en que los hilos de transmisión no están conectados?
                                                                ¿eso existe? :)
            Si configuramos Snort como NIDS, de todos
            los componentes Hard de una máquina,                No es necesario disponer de un cable “capado para
            debemos pensar en disponer de un buen               transmitir” para seguir este artículo, pero como
                                                                sabemos que esta revista la compran “mentes MUY
            espacio en Disco para almacenar los logs,.
                                                                curiosas”, te invitamos a investigar el tema.
            En el Disco duro se almacenarán los archivos        Actualmente, para conectar los distintos elementos
            y registros de sucesos, de momento vamos            de red se utilizan los típicos cables UTP5 y en sus
            a ir pensando en reservar unos 10 GigaBytes         extremos clavijas (enchufes) tipo RJ-45 (parecidos
            por cada “sensor” que instalemos en la red.

 PC PASO A PASO Nº 19                                                                                         Página 33
Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad




  a los del teléfono pero más gruesos). Dentro del cable      Si no tienes ganas de hacerlo tu mismo, siempre puedes
  UTP5 hay 8 hilos y cada uno tiene su misión, unos           ir a una tienda de venta de componentes para PC y pedir
  hilos transmiten, otros reciben, etc.                       que te hagan un "Cable Ethernet UTP5 RJ45 no cruzado"
                                                              PERO remarcándoles que NO CONECTEN a la clavija
                                                              RJ45 los hilos 1 y 2. Te dirán que entonces el cable no
                                                              funcionará correctamente, diles que ya lo sabes, que lo
                                                              quieres así para que la tarjeta conectada sea incapaz de
                                                              transmitir PERO si de recibir :)

                                                              Ya está, no te damos más la lata.



                                                           Software y Sistema Operativo

                                                           Snort corre en la práctica totalidad de
                                                           Sistemas Operativos modernos, desde los
  TIPICO CABLE UTP5                TERMINACIÓN RJ-45
                                                           basados en x86 como LiNUX, FreeBSD,
                                                           Windows, etc.. hasta otros Sistemas basados
  Si eres de los que le encanta el PC-Bricolaje, tu
                                                           en Sparc Solaris, PowerPC MacOS, RISC
  mismo puedes hacerte estos cables, consulta en el
                                                           HP-UX...
  buscador www.google.com por "construir cable
  ethernet" y encontrarás páginas como                     Las Librerías libcap o WinPcap
  http://www.coloredhome.com/cable_cruzado/cable_
  cruzado.htm, donde te explica paso a paso el tema.       Opcionalmente y dependiendo de la
  A medida que investigues, verás que puedes construir     configuración de snort puede ser necesario
                                                           disponer de:
  cables ethernet "normales" (para conectar los PC al
  Hubs y Switch) y cables ethernet "cruzados" (para               MySQL, Postgres, ORACLE o bases de
  conectar dos PCs sin necesidad de Hub o Switch,                datos SQL
  directamente de -tarjeta de red- a -tarjeta de red-).           Clientes SMB si usamos mensajería
                                                                 WinPopup
  Después del "paseo" por google, estarás en                       Servidor Web Apache u otros como
  condiciones de crear tu propio cable y crearlo "como           IIS
  tu quieras". En nuestro caso concreto, buscamos                  PHP, Perl para determinados plug-ins
  construir un cable ethernet "normal" pero sin conectar         y add-ons
  los hilos 1 y 2 (que son los que transmiten). De esta            SSH o Terminal Services para acceso
  forma tendrás un cable "normal" pero "capado para              remoto
  la transmisión" (solo podrá recibir datos).                      Módulos SSL para Apache o IIS

                                                           Medios de red. Switches y Hubs

                                                           La principal diferencia entre un hub y un switch
                                                           estriba en cómo se reparten el cable los equipos
                                                           conectados a los mismos.

                                                           Frecuentemente se dice que las redes
  DETALLE DE UN CONECTOR RJ-45                             conectadas con un HUB son redes
    Y LA NUMERACIÓN DE LOS HILOS
                                                           compartidas (Todos los PC's comparten el
                                                           Ancho de banda disponible) mientras que las


Página 34                                                                                         PC PASO A PASO Nº 19
Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad




             redes conectadas mediante un switch son                IDS y HUBS
             redes conmutadas (Cada Pc dispone de su
             propio ancho de banda para el sólito).                 Los HUB repiten la señal por cada puerto
                                                                    excepto por el que ha llegado, es decir, un
             En redes compartidas TODOS los equipos                 hub propaga TODO por TODAS las bocas o
             pueden escuchar el tráfico generado en ese             puertos disponibles.
             segmento, por tanto un equipo con una tarjeta
             en modo promiscuo será capaz de escuchar,              Un HUB trabaja en la capa 1 del modelo
             capturar y analizar "las conversaciones" de            OSI, trabaja a nivel físico puesto que su único
             cualquier otro.                                        cometido es amplificar, regenerar y
                                                                    repetir la señal.
             En redes conmutadas sólo podremos escuchar
             nuestras propias conversaciones y aquellas             Si conectamos nuestro IDS a cualquier puerto
             que vallan dirigidas a todos los host (el llamado      de un HUB y ponemos la tarjeta en modo
             broadcast).                                            promiscuo seremos capaces de analizar TODO
                                                                    el tráfico de la red sin problemas.

                                                                    La desventaja de usar HUB está en que la
                                                                    velocidad de transmisión entre dos puntos de
                                                                    la red es inferior a si usamos un switch.

             TIPICO SWITCH DE 24 PUERTOS (24 “ENCHUFES” RJ45)       IDS y SWITCHES

                                                                    Los switches se dice que dedican el ancho
   !             Cuando entres...                                   de banda puesto que la comunicación entre
                                                                    dos host cualquiera de la red no la
                                                                    propaga por otros puertos que no sean
  Cuando entres en una oficina, en un centro oficial del estado o
                                                                    aquellos en el que están conectados ambos.
  en un hospital, a partir de ahora fíjate en los ordenadores, en
  los cables y seguro que acabarás encontrando (normalmente en
                                                                    Un switch trabaja en capa 2 del modelo
  el techo o en una pared) un "Rack de Switches". Estos RACKS
  conectan TODOS los ordenadores del centro y el aspecto es de      OSI, a nivel de enlace de datos, toma
  unos cuantos switches apilados y un montón de cables ethernet     decisiones en función de la dirección MAC
  conectados.                                                       de las tarjetas de red y relaciona esas MAC’s
                                                                    con los puertos físicos a los que están
                                                                    conectados en el switch.


                                                                    Por ejemplo, cuando un host conectado al
                                                                    puerto 1 se comunica con un host conectado
                                                                    al puerto 7, el switch conmuta en su interior
                                                                    el tráfico y lo hace salir o entrar únicamente
                                                                    por los puertos 1 y 7, el resto de ellos ni se
                                                                    enteran...


                                                                    Cuando un host quiere comunicarse con TODOS
                                                                    en un switch, propaga una señal broadcast
                                                                    dirigida a todos los host, en esos casos el
  Imagen "bastante extrema" ;) de lo que puedes llegar a ver en
                                                                    switch se comporta como un hub, pero sólo
  algunas oficinas.
                                                                    cuando el tráfico de red es broadcast.


PC PASO A PASO Nº 19                                                                                                  Página 35
Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad




            Si conectamos nuestro IDS a cualquier puerto       Realmente el preprocesador, el sistema
            de un switch y ponemos la tarjeta en modo          detector y la salida son plug-ins que se
            promiscuo sólo seremos capaces de analizar         han añadido como parte del código de snort.
            el tráfico de la red que vaya dirigido a nuestro
            equipo y/o el tráfico broadcast del segmento
            de red.


            Es decir, si no se pone remedio a este asunto
            snort sólo podría ejecutarse como un HIDS,
            IDS basado en Host, independientemente de
            que la tarjeta esté en modo promiscuo o no.
                                                                                                                    Figura 4.
                                                               El módulo Esnifer
            Para estos casos y algunos otros también, los                                                        Arquitectura y
                                                                                                                 componentes de
            Switchs disponen de los llamados puertos           El esnifer captura los paquetes de datos que           snort
            SPAN (Switch Port Analiser, Puerto analizador      circulan por la red, el prepocesador determina
            de switch)                                         si esos paquetes deben ser analizados y los
                                                               pasa al sistema de detección que se
            Un puerto SPAN es capaz de escuchar todo           encargará de comprobar si existen reglas
            el tráfico de los otros puertos, como un hub,      específicas para ese tipo de paquetes y en su
            de forma que un IDS conectado al puerto            caso las aplica.. Dependiendo de si se cumplen
            SPAN del switch nos permitirá utilizar snort       o no dichas reglas se generan alertas,
            como un NIDS.                                      mensajes, logs, etc.. ese trabajo queda
                                                               destinado para el sistema de salida.
            Todavía se puede complicar más... VLAN’s ,
            switches en stack, en cascada,                     Si hacemos otra analogía.... pensemos en
            redundantes...bueno, pensemos en un switch         un cajero automático cuando nos disponemos
            con puertos SPAN, aunque lamentablemente           a pagar el importe del parking... por la ranura
            no todos los switches tienen esa capacidad.        introducimos las monedas o billetes (el
            Si ese es tu caso todavía quedan opciones,         esnifer), el preprocesador dirige esas
            pero degradará enormemente la eficiencia de        monedas o billetes por los conductos del cajero
            la red, mejor conformarte con instalar un          hacia el sistema de detección que analiza
            snort en modo HIDS o prepara el bolsillo y         cada moneda, billete, etc verificando que son
            cambia de switch (te saldrá muy caro).             auténticos, que no hemos “metido otras cosas”
                                                               y aplica las reglas de validación. Cuando
            Arquitectura de Snort                              termina de verificar el dinero emite una salida
                                                               (el sistema de salida) que puede ser el
            Antes de empezar con snort es útil conocer         cambio, una sirena de aviso, un mensaje de
            sus componentes básicos, ya hemos dicho            que faltan x euros o quedarse con el ticket
            que puede ser un esnifer, un generador de          del parking porque le estamos intentando
            logs o un NIDS, además le podemos añadir           engañar :P
            un motón de plug-ins para personalizarlo ,
            snort se compone de cuatro componentes             El esnifer puede analizar tráfico IP, TCP, UDP,
            básicos:                                           ICMP, protocolos de enrutamiento como RIP,
                                                               OSPF, etc..
            1.-   El   esnifer
            2.-   El   preprocesador                           Los esnifers se pueden usar “para lo bueno
            3.-   El   sistema de detección                    y para lo malo”, depende de quien lo use.
            4.-   El   sistema de salida (Alertas y logs)      Podemos,. desde detectar problemas de


Página 36                                                                                         PC PASO A PASO Nº 19
Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad




               comunicación (cuellos de botella, etc) hasta                  stream4 ó stream5, capaces de
               capturar contraseñas y datos sensibles...                   seguir 64000 conexiones simultáneas
                                                                           establecidas.
               Otra forma de usar las capacidades de sniffing
                                                                             portscan y portscan2, para detectar
               de snort es volcar o guardar el tráfico
                                                                           escaneos y detección de sistemas
               capturado en tráfico “logueado” para analizarlo             operativos.
               más tarde.
                                                                           Quizás los “más difíciles” de entender
                                                                           ahora sean frag2 y stream, hablemos
               El preprocesador                                            de ellos.

               El preprocesador recoge los paquetes que                    El preprocesador frag2 detecta,
               le pasa el esnifer y comprueba si dispone de                reensambla e inspecciona paquetes
                                                                           fragmentados.
               plug-ins para analizar el tipo de paquete, por
               ejemplo HTTP, RPC, SMB, Escaneo de puertos,
                                                                     La fragmentación en el mundo de las redes y
               etc..                                                 las comunicaciones es necesaria, los cables y
                                                                     medios por los que viajan nuestros datos
               Existen muchos plug-ins para el                       tienen un tamaño máximo determinado (MTU,
               preprocesador de snort, sería imposible               Unidad máxima de Transmisión) y cuando un
               relatar todos y dar una explicación                   paquete es más grande que la MTU debe
               pormenorizada de cada uno de ellos, más               fragmentarse, trocearse en “cachitos” más
               adelante veremos como usarlos.                        pequeños para que pueda ser enviado.

                                       Aunque en los próximos        Volvemos con las analogías.... Supongamos
                                       artículos hablaremos          que nuestra “tía de Badajoz” nos quiere enviar
                                       más a fondo del               un chorizo ibérico... bueno y un salchichón y
                                       preprocesador y el            lomo.... ahhgghhh qué hambre me está
                                       sistema de detección, es      entrando
                                       importante ahora que
                                       conozcas algunos              Bien, el caso es que la empresa de transporte
                                       términos del mismo.           sólo acepta paquetes del tamaño de una caja
                                                                     de zapatos... entonces nuestra amada “Tía de
                                        Las directivas o reglas      Badajoz” trocea los embutidos, los mete en
   Figura 5.                                                         diferentes cajas, las numera, les pone las
                    del preprocesador se nombran de la forma:
Funcionamiento del                                                   señas a cada una y las lleva al servicio de
Preprocesador en un
                    protocolo_decode donde protocolo puede
                                                                     transporte.
ejemplo para RPC ser un protocolo, servicio o directiva a aplicar.

                                                                     Nadie nos garantiza que cuando recibamos
               Hay varios, pero los más interesantes son:
                                                                     tan estimados y suculentos manjares lo
                                                                     hagamos en el mismo orden que salió, es
                        http_decode para examinar el flujo
                      de datos en servidores web y/o                 probable que recibamos la “caja 6/8” antes
                      protocolo http.                                que la “caja 1/6”, es más... puede ocurrir
                                                                     que la empresa de transporte delegue en otra
                         ftp_decode, para servidores ftp.            el envío y que la nueva empresa utilice un
                                                                     MTU más bajo y “trocee” las cajas en otras
                        telnet_decode, protocolo y servicios         más pequeñas...
                      de telnet.

                                                                     Este ejemplo nos sirve para entender cómo
                         rpc_decode, protocolo RPC.
                                                                     funciona frag2... los sistemas operativos, más
                         frag2, fragmentación de paquetes.           concretamente la pila TCP/IP del sistema
                                                                     operativo, inspecciona cada paquete, es más,


  PC PASO A PASO Nº 19                                                                                                Página 37
Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad




            algunos routers o dispositivos de conmutación     configurarlo para decirle “Mira a esta IP durante
            puede enviar los fragmentos “inmediatamente”      1 hora” o “mira lo que hace está IP en los
            o esperar a recomponer todos... esto parece       próximos 250 paquetes”....
            normal, pero.... ¿Y si “La Tía de Badajoz”
            hace una “gracia” y nos envía el chorizo          De hecho stream4/5 puede seguir
            ibérico en paquetes del tamaño de una caja        simultáneamente más de una conexión, no
            de cerillas?                                      sólo el puerto 80 como en el ejemplo anterior,
                                                              puede seguir hasta prácticamente la totalidad
            Pues tendremos miles de trocitos, y ya sabes...   de servicios y puertos disponibles, el único
            es más fácil “desordenar” que “reordenar”,        inconveniente de ello es el trabajo excesivo,
            siempre pongo el ejemplo del puzzle, aun no       duro y difícil que tendrá nuestro PC... para
            conozco a nadie que sea capaz de montar un        esos casos precisaremos de un buen equipo,
            puzzle de 1.000 fichas en el mismo tiempo         rápido y con suficientes recursos.
            que yo “mezclo” esas fichas...
                                                              El sistema de detección
            Valeeee, ¿y esto por qué? Pues porque una
            táctica para “mantener” ocupados a los            El sistema de detección toma los paquetes
            servidores, routers, etc.. consiste en            del preprocesador y/o de los plug-ins instalados
            fragmentar EXCESIVAMENTE los paquetes,            y los comprueba con las reglas establecidas
            primero tendrán que esperar a que los reciban     para los mismos, dependiendo de las acciones
            todos, luego recomponer el mensaje y por          a realizar los dejará pasar, generará alertas,
            ultimo ofrecer la respuesta adecuada, esto        registros o incluso detendrá un eventual
            significa, más memoria, más tiempo y              ataque.
            más trabajo
                                                              La mayor parte del trabajo y optimización de
            Esta misma táctica se utiliza para intentar       snort se realiza aquí... utiliza funciones y
            provocar un ataque por denegación de              reglas agrupadas por categorías (Troyanos,
            servicios a un IDS, a un Firewall, etc... de      desbordamiento de buffer, acceso a
            esto es de lo que se preocupa frag2, de           aplicaciones, etc..)
            recomponer los paquetes ANTES de que sean
                                                              El corazón del sistema de detección son
            enviados al sistema de detección, hablaremos
                                                              las reglas, estas las impone el administrador
            de ello más profundamente a medida que
                                                              y podemos dividirlas en dos partes:
            avancemos, incluso probaremos nuestros IDS
            y nuestros Firewalls con aplicaciones
                                                                      Reglas de cabeceras: Basadas en
            específicas... ¿qué te parecería si te enviasen
                                                              la detección de paquetes por tipo (TCP, UDP,
            12.000 correos diarios “a trozos”? pues eso
                                                              ICMP....) o por dirección (Origen, destino,
            es lo que haremos, enviar miles de paquetes
                                                              puerto)
            por segundo muy, muy, muy fragmentados...
                                                                    Reglas de Contenido: Son reglas que
            stream4 o stream5 (la última revisión de          examinan el interior del paquete, es decir, el
            snort) se ocupa de realizar “un seguimiento       contenido de los datos transportados por el
            a cada conexión”, es decir, de monitorizar las    protocolo.
            conversaciones “punto a punto”, por
            ejemplo.... imagina que se detecta un ataque              Reglas de Control: Controlan desde
            a nuestro Servidor WEB (generalmente puerto       la dirección del tráfico en la red hasta las
            80) por el archiconocido bug del code-            contramedidas en tiempo real, pasando por
            decode... además de “avisarnos” puede             la monitorización de sesiones, desbordamiento
            “seguir atento” a todas las acciones que          de buffers, shellcodes, negación de servicios,
            vengan de la IP “atacante”, incluso podemos       etc...


Página 38                                                                                          PC PASO A PASO Nº 19
Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad




          Siguiendo el ejemplo del cajero                           Pérdida de paquetes, como ya se
          automático, las reglas de cabecera                      ha dicho por problemas en la
          determinarían si se trata de un billete, de             conectividad o deficiencias en las
          una moneda o de fraude, mientras que las                implementaciones de la pila TCP/IP del
          reglas de contenido, descubrirán si la moneda           sistema operativo
          es de 1 euro, de 2 euros, etc...
                                                                    Falsas alarmas, pueden ser falsos
          El sistema de Salida. Registro y alertas.                 positivos o falsos negativos.

          Una vez que se inspeccionaron las reglas y              Un falso positivo es una falsa alarma,
          se validó el paquete algo hay que hacer con             un paquete o conjunto de paquetes que
          los resultados, de eso se encarga el sistema            disparan una alerta cuando realmente
          de salida.                                              son inofensivos.

          Las alertas pueden enviarse a un fichero                Los falsos negativos son paquetes que
          de logs, a un equipo remoto mediante sockets            comprometen la estabilidad de snort y
          o mensajes emergentes, traps SNMP e                     que no es capaz de detectar, pueden
          incluso se pueden almacenar en una Base                 ser debidos a errores de implementación
          de datos SQL                                            en las reglas o a ataques contra el propio
                                                                  snort por vulnerabilidades descubiertas
          El sistema de salida también dispone de
          plug-ins que simplifican la presentación de       Snort es una GRAN utilidad, no exenta de
          las alertas en formatos XML, HTML, interfaces     ataques, pero muy, muy eficiente. No obstante
          Web y muchos otros.                               y como ya estamos acostumbrados a que nada
                                                            es para siempre hay que estar al tanto de
          Al igual que los plug-ins del preprocesador       actualizaciones y mejoras, las revisiones, los
          será imposible detallar o describir todos, cada   updates, los parches de seguridad.
          día los desarrolladores de software crean
          nuevos plug-ins, mejoras y nuevas                 Y no siempre las actualizaciones se deben a
          visualizaciones, veremos unos cuantos...          problemas de seguridad, pueden ser debidas
          algunos muy interesantes.                         a la aparición de nuevas reglas, a cambios de
                                                            sintaxis... en definitiva a mejorar el programa,
          Limitaciones,                  Bugs          y    recuerda, la seguridad también consiste en
                                                            mantenerse al día en la aparición de bugs y
          actualizaciones
                                                            parches para solventar los mismos...
          Como todo software snort es vulnerable y
          no siempre actúa eficientemente, en algunas       Instalando Snort
          ocasiones se debe a limitaciones en el
          hardware, como puede ser la velocidad de la       Ya hemos comentado la versatilidad de snort,
          tarjeta de red, agujeros de seguridad que         tanto por sus análisis como por la variedad
          permiten “saltarse” el IDS o simplemente la       de Sistemas Operativos en los que puede
          generación de falsas alarmas, bien por una        ejecutarse...
          mala elección de las reglas o por determinados
          paquetes generados en la red.                     En esta sección nos vamos a centrar en la
                                                            instalación de snort para plataformas LiNUX
          Entre los fallos más comunes al usar snort
                                                            Red Hat y para Win32, concretamente para
          están:
                                                            Windows 2000/XP


PC PASO A PASO Nº 19                                                                                           Página 39
Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad




            Para otras distribuciones de LiNUX será           Instalando snort en Windows
            “parecido”, aunque aquí lo instalaremos           2000/XP
            mediante RPM. Esto significa que las distros
            de Red Hat, SuSe, Mandrake, Conectiva, etc        Lo     primero      bajarse       el    IDS
            serán aptas para seguir estos pasos.              http://www.snort.org/dl/binaries/win32/ una
                                                              vez en nuestro PC se instala como la práctica
            Si usas Debian Gentoo, Slackware u otros          totalidad de aplicaciones Windows....
            deberás consultar las diferentes formas de
            instalación, mediante apt-get install/remove,     Paso 1) Aceptar los Términos de Licencia,
            emerge o installpkg/removepkg/upgradepkg          recuerda que snort es un producto GNU
                                                              Paso 2) Seleccionar la configuración.
            Puedes pasarte por los foros de hackxcrack
            si tienes dudas o no sabes como hacerlo...
            seguro que lo dominas mejor que yo :P para
            los que me conocéis “soy un chico Windows”
            en su 90% de trabajo y creedme que me ha
            costado lo mío ponerme al día con LiNUX...
            mereció la pena de verdad.


            Si   tienes     dudas     no    lo   dudes:
            http://www.hackxcrack.com/phpBB2/index.
            php Mejor aún, actualmente estamos
            desarrollando un proyecto, una LIVE CD, una
            distribución “especial” de LiNUX personalizada,
            orientada a Seguridad y en la que muchos
            de los foreros de hackxcrack estamos
            colaborando... esta distribución puede ser
                                                                                                              Pantalla 1. Aceptar
            tuya también, en ella ya figura snort como        Quizás sea el único paso que merece la pena     los términos de la
            IDS y otras muchas utilidades, paquetes de        comentar, todas las implementaciones de              licencia
            seguridad, una forma fácil y sencilla de seguir   snort para sistemas Win32 incluyen el soporte
            estos artículos es participar en el Proyecto      para Bases de Datos MySQL y ODBC, si
            de la Live... es libre, todos aportamos lo que    deseamos mantener los registros y alertas de
            podemos, ¿podrás unirte? Te esperamos y te        snort en otras Gestores de Bases de Datos
            necesitamos.
                                                              como SQL Server u ORACLE seleccionaremos
                                                              las opciones 2 ó 3 respectivamente, no será
            Volviendo al proceso de instalación....
                                                              nuestro caso, nosotros, cuando llegue la
                                                              ocasión, usaremos MySQL tanto para
            También necesitaremos instalar libpcap y si
                                                              plataformas LiNUX o Windows.
            debemos compilar el código fuente
            necesitaremos gcc, automake, autoconf,
            binutils, make... no te asustes... lo haremos     Tal y como indica la pantalla, si deseamos
            “paso a paso” ;)                                  usar SQL Server u ORACLE, se debe disponer
                                                              tanto de los Gestores como de los clientes
            La instalación de snort en plataformas            necesarios para ellos.
            Windows sigue las “directrices de siempre”
            Siguiente-Siguiente-Siguiente... y en este        ¿Por qué MySQL? Muchas podrían ser las
            caso, en lugar de las librerías libpcap se        respuestas, principalmente por:
            necesitará WinPcap.


Página 40                                                                                       PC PASO A PASO Nº 19
Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad




                           En números anteriores de la revista     Paso 4) Directorio de Instalación.
                          ya se enseñó a instalar y configurar
                          MySQL                                    Elegimos C:snort como carpeta o directorio
                            MySQL es muy eficiente y además es     en donde se instalará snort
                          Libre
                           No dependeremos de un Sistema
                          Operativo en concreto
                           Muchos plug-ins, scripts y programas
                          de terceros se brindan con soporte
                          MySQL

                    Por tanto en la pantalla que sigue escogemos
                    la primera opción la cual nos posibilitará
                    almacenar logs en Bases de Datos MySQL u
                    OBDC.



                                                                                                                 Pantalla 4. Elegir el
                                                                   Paso 5) Finalizar la instalación                 directorio de
                                                                                                                     instalación




   Pantalla 2.      Paso 3) Seleccionar los componentes a
 Seleccionar el
                    instalar.
gestor de Base de
Datos y funciones
   adicionales      Verificamos todos los que aparecen si no lo
                    están ya, snort, la documentación y Contrib
                    (que contiene plug-ins y añadidos que                                                        Pantalla 5. Finalizar
                    contribuyen al manejo de snort)                                                                 la instalación
                                                                   Una vez finalizada la instalación debemos
                                                                   instalar las librerías pcap, en Windows,
                                                                   WinPcap


                                                                   Sólo algunas salvedades.... Las librerías
                                                                   Pcap (ya sean libpcap o WinPcap) operan
                                                                   en la capa 2 del modelo OSI (enlace a
                                                                   datos) y son necesarias para que snort
                                                                   capture el tráfico que circula por la red.


                                                                   En el caso particular de Windows, puedes
                                                                   descargar la última versión de WinPcap en
   Pantalla 3.
 Seleccionar los
 componentes de
  instalación en
                                                                   http://winpcap.polito.it/
    Windows




   PC PASO A PASO Nº 19                                                                                          Página 41
Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad




              Actualmente está en desarrollo la versión
              3.1 beta de WinPcap, no te recomiendo
              que instales la última, a mi me dio bastantes
              problemas, sobre todo si usamos snort
              directamente sobre equipos con MODEM
              analógico y protocolos ppp.


              Con la versión 2.3 funciona perfectamente,
              si no encuentras en la web oficial
              (http://winpcap.polito.it/) el link de descarga
              de WinPcap 2.3 puedes bajarlo directamente
              de nuestro Servidor Virtual.


              http://www.forohxc.com/ids/snort/winpcap
              /2.3/WinPcap_2_3.exe

                                                                                                                         Pantalla 6. Aceptar
   !             Los programas...                                     Aunque no lo dice, tras finalizar la instalación
                                                                      mejor reiniciar el equipo....
                                                                                                                         los términos de la
                                                                                                                         licencia de WinPcap

   Los programas utilizados en el presente artículo también           Instalando snort en LiNUX desde
   pueden ser descargados desde la Web de la revista PC               RPM
   PASO A PASO: www.hackxcrack.com (en la sección
   “Artículos Liberados y Descargas”).                                Como antes, lo primero el lugar donde
                                                                      encontrarlo:
                                                                      http://www.snort.org/dl/binaries/LiNUX/


  !              IMPORTANTE                                           Entre todos ellos

                                                                      1º) http://www.snort.org/dl/binaries/
  IMPORTANTE: Antes de instalar las librerías comprueba que
                                                                      linux/snort-2.1.1-1.i386.rpm
  no tengas otras versiones de la misma instaladas en tu PC,
  muchos esnifers y productos de Windows utilizan WinPcap y           2º) http://www.snort.org/dl/binaries/
  hasta es posible que ya dispongas de esta u otras versiones sin     LiNUX/snort-mysql-2.1.1-1.i386.rpm
  conocerlo.... no creo que haga falta decirte a estas alturas como
  se desinstala un software en Windows no? Bueeeeeno, Inicio-         Tras descargar snort (los dos enlaces
  Configuración-Panel de Control-Agregar o quitar programas....       anteriores) y alojarlo en el directorio elegido
  busca en la lista si aparece WinPcap y la desinstalas... después    podremos instalarlo bien desde consola o
  instalas la que te acabas de descargar.                             bien desde X Window

                                                                      1.- Desde consola:
              La instalación de WinPcaP no tiene ningún
              misterio, es totalmente automatizada y lo               rpm –Uvh snort-mysql-2.1.1-1.i386.rpm
              único que debemos hacer es ir pulsando en               si lo que deseamos es actualizar una versión
                                                                      ya existente, o bien,
              el botón de Next, Next, Next a medida que
              nos van apareciendo pantallas (y aceptar los
                                                                      rpm –i snort-mysql-2.1.1-1.i386.rpm para
              términos de la licencia cuando aparezca, como
                                                                      instalar snort por primera vez. Advierto
              en la pantalla que se muestra a continuación)
                                                                      que si ya dispones de una versión instalada


Página 42                                                                                                 PC PASO A PASO Nº 19
Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad




          y configurada con reglas personalizadas, etc..         autoconf, utilidad para configurar el código
          utilizar este método puede significar perderlo         fuente “al vuelo”
          todo y empezar de cero.
                                                                 binutils, utilidades para binarios
          2.- Desde XWindow
                                                                 make, utilidad para compilar código individual
          Usando escritorios gráficos como KDE,
          GNOME u otros, simplemente hacer doble                 Paso 1) Selección de paquetes de instalación
          clic en el archivo RPM descargado
                                                                 Desde el usuario root, seleccionar
          Instalar las librerías PCAP                            Configuración del sistema – Paquetes

          Al igual que las versiones Windows, debemos            Y se abrirá el cuadro de diálogo Add or
          de tener las librerías pcap, aquí son libpcap          Remove Packages
          y no WinPcap, para que snort funcione
          correctamente.                                         Paso 2) Mover la barra de desplazamiento
                                                                 hasta la sección Development y verificar la
          Red Hat y otras distribuciones de LiNUX ya             casilla de verificación Herramientas de
          las incluyen en la instalación, si no es tu caso       desarrollo
          o si quieres actualizar la revisión de las librerías
          puedes seguir los pasos que vienen a
          continuación, en caso contrario tu snort ya
          está preparado.

          Las últimas revisiones de libpcap las puedes
          encontrar en http://www.tcpdump.org la
          última revisión en el momento de escribir
          este artículo es la 0.8.1 y la puedes descargar
          directamente                   de      aquí:
          http://www.tcpdump.org/release/
          libpcap-0.8.1.tar.gz


          Para instalar libpcap desde los archivos fuente
          basta con compilar el código, el único requisito
          es elegir de las utilidades de desarrollo
          (development tools) en la distribución que                                                                Pantalla 7. Añadir o
                                                                 Paso 3) Pinchar en Actualización
          uses.                                                                                                      quitar paquetes y
                                                                                                                     herramientas de
                                                                 El sistema operativo calculará las dependencias        desarrollo
          En el ejemplo que sigue a continuación
                                                                 y paquetes necesarios.                               (Development)
          describe los pasos para instalar libpcap en
          Red Hat 8.                                             Paso 4) Si se desea pinchar en Mostrar
                                                                 detalles para ver las opciones seleccionadas
          Necesitaremos:
                                                                 Paso 5) Pinchar en Continuar y el sistema
          gcc, El compilador de C                                procederá a la instalación
                                                                 Ahora que el sistema ya tiene los paquetes
          automake, utilidad para crear los makefiles            necesarios para ya puedes usar configure,
          “al vuelo”                                             make y make install para instalar la librerías,


PC PASO A PASO Nº 19                                                                                               Página 43
Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad




                      para ello descomprime el archivo libpcap-          este paso sin errores, el software estará
                      0.8.1.tar.gz, abre una sesión de consola y         instalado y disponible para su uso.
                      sigue estos pasos:                                 Otra forma es encontrar un RPM listo para
                                                                         instalarse en la distribución que usemos...
                      1º) Ejecutar el script ./configure                 puedes encontrarlas aquí:

                      ./configure es un script que contiene la           http://www.rpmfind.net/LiNUX/rpm2html/se
                      información necesaria de la máquina en la          arch.php?query=libpcap
                      que está corriendo, las dependencias, variables
                      y verifica el software.                            Y puedes seguir los mismos pasos indicados
                                                                              para instalar snort desde RPM para
                                                                              libpcap.




Pantalla 8. Listado                                                      Bueno, también te puede dar por compilar y crear            Pantalla 9.
de archivos fuente                                                       los configure-make-make install desde el código          Instalación desde
                      También es el responsable de generar los
  de las librarías                                                       fuente de snort, eso lo dejo a tu elección... si eres    una distribución
                      makefiles necesarios y en caso que se
   libpcap para                                                          un usuario poco avezado en LiNUX como lo soy yo...             RPM
plataformas LiNUX
                      produzcan errores nos avisará de ello.
                                                                         será una buena práctica personal y te ayudará a
                                                                         resolver otras muchas situaciones cuando se tenga
                      2º) Compilar el código fuente con make             que compilar otros códigos fuente, en el próximo
                                                                         artículo esta acción será de uso obligado puesto
                      make es un comando que existe en la práctica       que no siempre los binarios se compilaron con todas
                                                                         las opciones disponibles ;)
                      totalidad de distribuciones LiNUX, no es un
                      script como configure, make usará el makefile
                                                                         Verificando       la   instalación      de   snort
                      creado por configure y su función es compilar
                      el código que será usado durante la instalación    Plataformas Windows
                      final, es como un archivo de inicialización y
                      al igual que antes en muy importante que no        No busques
                                                                         snort en
                      se hayan producido errores durante el proceso.
                                                                         agregar o
                                                                         quitar
                      3º ) Instalar las librerías usando make            programas...
                      install                                            no está allí...
                                                                         si has seguido
                      make install, esto es el paso final del proceso.   los pasos uno                                            Pantalla 10.
                                                                         por uno lo                                               Vista de la
                      Lee la información del makefile creado, la
                                                                         tendrás en la                                            carpeta de
                      distribución que está siendo usada y los                                                                   instalación en
                                                                         carpeta snort
                      ficheros ejecutables u otros archivos creados      en C:snort                                              plataformas
                      en la estructura de directorios. Tras finalizar                                                              Windows



    Página 44                                                                                                    PC PASO A PASO Nº 19
Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad




             Esta no es la forma de probar snort, pero al       También puedes actualizar las reglas en:
             menos estamos viendo las carpetas que se
             crearon durante el proceso de instalación y        http://www.snort.org/dl/rules/
             un programa unistall.exe para eliminarlo.
                                                                También puedes usar whereis para encontrar
                                                                los lugares donde está repartido snort
bin están los binarios y programas para ejecutar snort

doc, la documentación y ayudas

log, se guardaran los registros de las intrusiones

                                                                En fin, llegados a este punto, ya sea en LiNUX          Pantalla 11.
Contrib, encontrarás programas y archivos que
                                                                o Windows, deberíamos tener “a punto” todo              Ejemplo del
contribuyen o mejoran el funcionamiento                                                                               comando whereis
                                                                lo necesario para empezar con nuestro IDS.
                                                                                                                      para localizar los
etc, hay algunos archivos para mantener alertas, reglas,                                                             binarios de snort en
                                                                Aunque para este primer artículo no es preciso
pero sobre todo un archivo muy, muy especial...                                                                            LiNUX
                                                                disponer de las aplicaciones que vienen a
snort.conf que es el archivo de configuración del
                                                                continuación, lo serán más adelante, así que,
programa, algo así como el lugar donde snort acudirá
                                                                vete instalando si los tienes aún las siguientes:
para saber en el modo que ha de ejecutarse, las reglas
que debe incluir, variables, directivas del pre-procesador...
etc...                                                                 Un Servidor Web, mejor Apache
                                                                      aunque uses Windows... aunque también
rules, se guardan las reglas que se podrán aplicar.                   puede ser ISS
                                                                        El gestor de Bases de Datos, MySQL
                                                                      (imprescindible si instalamos snort con
             Plataformas LiNUX                                        soporte MySQL)
                                                                        Intérprete de perl para Windows o
             En LiNUX los lugares en donde se instala
                                                                      LiNUX
             snort es diferente...
                                                                        Lenguaje PHP para la versión de tu
                                                                      sistema operativo.
/usr/bin/snort están los binarios y programas para
ejecutar snort                                                  Todos estos programas y aplicaciones ya han
                                                                fueron usadas en artículos anteriores en la
/usr/share/man/man8/snort.8.gz, la documentación                revista, revisa los números donde se hablaba
y ayudas                                                        de dsniff (en donde se usaba algún que otro
                                                                script en perl) y en el artículo de creación
/var/log/snort/, se guardaran los registros de las              de foros phpBB2 (Apache+MySQL+PHP)
intrusiones
                                                                Si no dispones de los programas los
/etc/snort, está el archivo de configuración y otros            encontrarás en:


/etc/snort/rules/ Las reglas                                    http://httpd.apache.org/download.cgi

             ¿Y qué fue de Contrib?                             http://www.php.net/downloads.php

                                                                http://www.mysql.com/downloads/in
             Pues en LiNUX no se instala a menos que
                                                                dex.html
             descarguemos las contribuciones de terceros:

                                                                http://www.perl.com/pub/a/language
             http://www.snort.org/dl/contrib/                   /info/software.html


PC PASO A PASO Nº 19                                                                                                Página 45
Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad




                 El archivo de Configuración de                          No es el momento ahora de hablar
                 snort: Snort.conf                                       profundamente del mismo, pero es importante
                                                                         que modifiques o configures el archivo a las
                 Si editamos el archivo snort.conf veremos               características de tu red y preferencias...
                 algo así:
                                                                         Snort usa variables para conocer la red,
                                                                         máquinas, etc... por omisión los valores son:




                                                                         Es imprescindible que ahora modifiques las      Tabla . Principales
                                                                         variables con los valores correspondientes      variables definidas
                                                                         al entorno que usas, para las prácticas que         por snort
                                                                         vienen a continuación usaremos este
                                                                         escenario:
 Pantalla 12.
Contenido del
 archivo de          !         Donde está...                             Red interna: 172.28.0.0 /16
                                                                         Red externa: cualquier dirección IP, red o subred
configuración.
 Snort.conf                                                              Servidor web: 172.28.0.99
                   ¿Dónde está el archivo snort.conf?
                   Venga, vale… En Windows hemos instalado el
                                                                         Al menos tienes que modificar las variables
  SNORT en c:snort ¿verdad?, pues el archivo snort.conf está en la      HOME_NET,            EXTERNAL_NET,
  carpeta c:snortetc                                                  HTTP_SERVERS.            HTTP_PORTS y
                                                                         RULE_PATH, para ello busca dentro del
  ¿cómo podemos abrir y editar el archivo snort.conf? No, si picas       archivo snort.conf las declaraciones de estas
  con el Mouse dos veces sobre el archivo NO SE ABRE, claro, puesto      cuatro variables y dales los valores que
  que tiene extensión .conf y nuestro Windows “pasa” de él. Tienes       necesiten, obviamente es posible que no
  que abrirlo con cualquier editor de texto plano, por ejemplo el Bloc   manejes los mismos rangos de red/subred
  de Notas de nuestro Windows :)                                         que los míos, adáptalos a tu configuración
                                                                         personal
  Y para los que crean que no es necesario explicar algo tan básico,
  bufff, tendrían que ver los correos electrónicos que nos llegan a la    var HOME_NET 172.28.0.0/16
  editorial ;)                                                            var EXTERNAL_NET any
                                                                          var HTTP_SERVERS 172.28.0.24
                 Es un archivo en texto plano que indica a
                                                                          var HTTP_PORTS 80
                 snort cómo debe actuar, las redes de que
                 disponemos, las reglas, las variables “de                var RULE_PATH ../rules (en Windows)
                 entorno”, las directivas del pre-procesador ,            var RULE_PATH /etc/snort/rules (en LiNUX)
                 las alertas...


 Página 46                                                                                                 PC PASO A PASO Nº 19
Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad




                        Vamos a probarlo, escribe snort –W en la           Práctica 2. Ejecutar snort como un esnifer
                        ventana de comandos y pulsa enter, pongo
                        la captura de Windows.                             La forma más simple de ejecutar snort como
                                                                           un esnifer de paquetes usando algunas de
                                                                           las opciones mencionadas es:

                                                                           snort –dev (y pulsamos enter)


                                                                               !              IMPORTANTE


                                                                              IMPORTANTE:
Pantalla 14. Mostrar
                        En este caso hay 3, dos para WAN y 1 para
los interfaces de red   ethernet... este equipo es un portátil y dispone
                                                                              Antes hemos dicho que mediante la instrucción snort –W
  disponibles en        de un MODEM interno que también puede ser
                                                                              podríamos visualizar las “tarjetas de red” que tenemos, en nuestro
Windows con -W          usado para monitorizar el tráfico con snort.
                                                                              caso han sido llamadas por Windows 1, 2 y 3 (pantalla 14).

                        Seleccionar la tarjeta de red en ambas
                                                                              Ahora te acabamos de decir que ejecutes la orden snort –dev,
                        plataformas se realiza con la opción –i sequida
                                                                              bien, en este caso “snifaremos” por defecto la tarjeta de red 1.
                        del número de tarjeta de red deseada
                        (Windows) o –i tarjeta de red (LiNUX, p.e.
                                                                              Pero en tu caso particular, puedes tener una o dos o tres o 200
                        –i eth0), tranquilo, ahora lo veremos en la
                                                                              “tarjetas de red” (cada uno tiene el equipo que puede comprar).
                        practica 2.
                                                                              Imagina que en tu caso particular la tarjeta que está conectada a
                                                                              Internet es la 2 y queremos “snifar” precisamente esa. En tal caso,
                        Tampoco puedo ahora extenderme mucho en
                                                                              en lugar de escribir snort –dev deberemos escribir snort –i 2
                        cada una de las opciones, ya sabes...
                                                                              –dev (y pulsar enter).
                        problemas de espacio del artículo, por el
                        momento veamos estas:
                                                                              -i 2   le dice al snort que “snife” la tarjeta de red número 2
   -D, ejecuta snort como demonio o servicio
   -a, habilita la decodificación de protocolo ARP
   -e, similar a la anterior                                               y podremos ver cosas como estas...
   -C decodifica los resultados en caracteres ASCII
   -v, muestra la decodificación detallada
   -d, volcado de los paquetes capturados
   -l, indica un directorio donde se guardarán los logs
   -p, inicializa snort en modo no promiscuo
   -N, no guarda logs
   -n, indica que tras n paquetes recibidos se tome una acción, por
   ejemplo terminar snort
   -y, muestra el año junto con la decodificación o logs
   -U, fecha/hora del análisis
   -c indica el directorio del archivo de configuración y sus reglas
   (snort.conf)


                        Hay mas.... MUCHAS MAS... las iremos viendo                                                                    Pantalla 15.Ejemplo
                        a medida que avancemos, y no te equivoques         cuando pulsemos CTRL.+c se detendrá de salida estándar de
                        en el uso entre mayúsculas y minúsculas, no                                                    snort
                                                                           snort... y mostrará las estadísticas:
                        es lo mismo –A que -a


    PC PASO A PASO Nº 19                                                                                                             Página 47
Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad




             De hecho no hubiese sido preciso                         Comandos). Ya se ha explicado mil veces
             modificar nada, si lo dejamos como está                  -----------> Menu Inicio --> Todos los
             funcionarán igual de bien nuestras                       programas --> Accesorios --> Símbolo
             prácticas pero es mejor “delimitar” el                   del Sistema
             alcance de snort y empezar a manipular                     Nos situaremos en el directorio de
             el archivo... más adelante será necesario.               instalación (C:snortbinsnort, si
                                                                      seguiste los pasos indicados
             Si te estás preguntando si se pueden indicar             anteriormente). Ya sabes, escribiremos
             más de una red interna o externa, más de                 en la ventanita negra la orden cd
             un puerto para el web server, etc... la                  c:snortbin (y pulsaremos enter)
             respuesta es SI, sería así:                              Ejecutaremos el programa, ya sabes,
                                                                      escribiremos snort (y pulsaremos enter)

var INTERNAL_NETS [172.28.0.0/16,192.168.10.0/24,10.0.0.0/8]
var HTTP_PORTS 80:85


             Estas líneas definen tres redes internas y le
             dicen a snort que el webserver escucha
             peticiones por los puertos, 80, 81, 82, 83,
             84, ó 85....



   !            Buff!!!...

   Buff!!!, no puedo, no tengo espacio para explicar lo que
   son las redes, subredes, máscaras de subred, CIDR…. En
   los foros de hackxcrack (www.hackxcrack.com) podremos
   ayudarte, además de varios links ya existentes podemos
   explicártelo un poquito más, ahora no es el momento, por
   otra parte la Revista acaba de iniciar un curso de TCP/IP
   que seguro responde a esas dudas, también el los foros
   hicimos un Taller de TCP/IP hace unos meses, pásate por
   allí si no sabes cual es el formato CIDR que debes aplicar
   a tu dirección de red…


             Práctica 1. Ejecutar snort y
             opciones de ejecución

             Lo primero que haremos es ejecutar snort
             “sin más”.
                                                                                                                  Pantalla 13.
                                                                Las opciones y sintaxis con las que se puede    Opciones de línea
             En LiNUX podremos hacerlo simplemente              iniciar snort en ambas plataformas son          de comando para
             escribiendo snort.                                 prácticamente idénticas, alguna nueva en          ejecutar snort
                                                                Windows como –W “en mayusculas” (que
             En Windows:                                        muestra una lista de las interfaces de red
                       Abriremos una de nuestras famosas        disponibles) pero poco más, si todo fue bien
                     “ventanitas negras” (Ventana de            aparecerá algo así: (pantalla 14)


Página 48                                                                                         PC PASO A PASO Nº 19
Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad




                                                                                                                       Pantalla 17.
                                                                                                                 Ejecución de snort
                                                                                                                 en modo logging o
                                                                                                                 registro de paquetes


                                                                      Ahora, desde otro equipo hacemos un ping
                                                                      a la dirección IP donde está corriendo
                                                                      snort




                                                                                                                        Pantalla 18.
                                                                                                                      Ejemplo de ping
                                                                                                                      desde cualquier
  Pantalla 16.
                    Complicado, verdad?                                                                               equipo de la red
  Resultado y
                                                                                                                 hacia otro equipo de
estadísticas tras
pulsar CTRL.+C
                    Ciertamente lo complicado es saber interpretar                                                         la red
                    la captura del esnifer, no te preocupes por
                    ahora si no lo entiendes, de momento lo que       Si miramos en el directorio /var/snort_logs,
                    importa es que “salgan cosas”, luego veremos      veremos esto:
                    con más detalle alguna de estas salidas.

                    Para los que hayáis seguido el Taller de TCP/IP
                    que hicimos en los foros de HackXcrack no
                    tendrá ningún misterio saber interpretar la
                    salida del esnifer, los que no lo hayáis hecho
                    tendréis dudas... bueno, no importa... en
                    estos momentos la revista está siguiendo un
                    curso de TCP/IP, esto te ayudará y también
                    estos mismos artículos cuando llegue el
                    momento.
                                                                                                                     Pantalla 19. Vista y
                                                                                                                        contenido del
                    Práctica 3. Ejecutar snort como                                                                  directorio de logs
                    un capturador de logs                                                                            tras la detección de
                                                                                                                          paquetes
                    Bueno, esta la vamos a hacer desde LiNUX...
                    para que no me digan luego que “todo es           Verás que se crearon varias carpetas...
                    Windows”, lo único que tendremos que hacer        snort generará una por cada dirección IP que
                    es indicarle a snort donde debe guardar los       registre (172.28.0.50 la del equipo que hizo
                    registros y que ese directorio exista, claro...   el ping, etc...)

                                                                      Ahora abriremos esa...
                    snort –de –l /var/snort_logs

      PC PASO A PASO Nº 19                                                                                            Página 49
Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad




                                                                      acceso mediante el bug de unicode a
                                                                      nuestro servidor web, ya sabes... el bug de
                                                                      code-decode tan “pasado” y ampliamente
                                                                      comentado en esta revista y en los foros, pero
                                                                      es algo a lo que “ya estamos habituados” y
                                                                      sabemos como funciona... ya verás, ya... hay
                                                                      muchas otras vulnerabilidades que pueden ser
                                                                      descubiertas gracias a snort y no me refiero
                                                                      sólo a las de los servidores web.... ftp, telnet,
                                                                      rpc, netbios....

                                                                      Esta práctica no la detallaré... tendrás que
                                                                      tener Fé, confiar en lo que ponga y repetir lo
   Pantalla 20.
                                                                      mismo... es una introducción a lo que nos
    Contenido
                       Hay un archivo que corresponde a la petición   vendrá mas tarde:
específico de una de
  las carpetas de      echo (la solicitud del ping)
      registro                                                         Disponemos de un sistema snort corriendo en nuestra
                                                                       red interna 172.28.0.0/16 que vigila desde un equipo
                                                                       LiNUX RH8 de ip 172.28.0.200 y un servidor web
                                                                       con dirección IP 172.28.0.99, lo que pretendemos es
                                                                       registrar los pings a cualquier equipo de la red y los
                                                                       intentos de explotar el bug de unicode.


                                                                      Un dato importante... no es preciso que el
                                                                      webserver sea vulnerable... snort recogerá
                                                                      los intentos sea o no sea vulnerable al “acceso
                                                                      transversal al sistema de archivos”. Debemos
                                                                      tener el archivo snort.conf bien configurado
                                                                      y hay que aplicar alguna regla...

                                                                      Paso 1º) Crear un archivo de texto el cual Pantalla 22. Definir
                                                                      contiene las reglas de nuestro escenario: un archivo de reglas
                                                                                                                          personalizado




    Pantalla 20.
    Contenido
específico de una de
                       Práctica 4. snort como un NIDS
  las carpetas de      usando alertas y reglas
      registro
                       Bueno, me quedo sin espacio... o ya me he
                       pasado..., vamos a realizar una práctica
                       global que monitorice las peticiones ping
                       a cualquier equipo de la red, nos alerte
                       de ello y dispare alarmas ante un posible


    Página 50                                                                                              PC PASO A PASO Nº 19
Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad




                    Y lo guardaremos en algún lugar de nuestro
                    disco, elegí /var/snort_logs/ puede ser
                    otro siempre y cuando el archivo de
                    configuración apunte a ese directorio, el
                    nombre       de   ese     archivo     será
                    reglas.bug.codedecode, puede ser otro
                    también... y como antes debe corresponderse
                    con la información que demos en el paso
                    3º)                                                                                                       Pantalla 24.
                                                                                                                               Creación y
                                                                                                                           contenido del nuevo
                    Escribe todas esas reglas en una sola
                                                                                                                               archivo de
                    línea.                                        Este sí que lo vamos a comentar algo más                   configuración:
                                                                  porque “pertenece” al contenido de este                      snort.conf
                    A poco que seamos algo espabiladillos         artículo:
                    entenderemos las reglas... pero no te
                    preocupes si no las “cazas” ahora, esto es
                    parte de próximos artículos...
                                                                   Línea 1 indica la red en la que estamos
                    Paso 2º) Renombraremos el archivo de           (172.28.16.0.0/16)
                    configuración         situado        en
                    /etc/snort/snort.conf            como          Línea 2, la red externa... cualquiera (any)
                    /etc/snort/snort.conf.old (En Windows
                    está situado en C:snortetcsnort.conf)       Línea 3, el camino que apunta al archivo o archivos
                                                                   de reglas (este debe ser el mismo directorio en donde
                                                                   guardamos las reglas establecidas en el paso 1º)


                                                                   Línea 4 y línea 5, indican la dirección IP y puerto de
                                                                   nuestro servidor web, observa que se puso
                                                                   $HOME_NET como dirección IP. Es decir, snort
                                                                   monitorizará cualquier servidor web de la red 172.28.0.0
                                                                   /16


                                                                   Líneas 6, 7 y 8, incluyen las directivas del
                                                                   preprocesador, sólo hacemos referencia a frag2 y
                                                                   stream4, recuerda lo que se dijo al principio de ellos y
                                                                   para lo que servían.
   Pantalla 23.
Cambiar de nombre   Con esto conseguiremos no perder el archivo
  el archivo de     original                                       Línea 9, indica cual será el o los archivos de reglas
 configuración a                                                   a aplicar, cada archivo de reglas debe nombrarse con
  snort.conf.old    Paso 3º) Crear el nuevo archivo de             un include por archivo, en nuestro caso, sólo hay un
                    configuración en el directorio de ejecución    archivo de reglas.
                    del programa... para LiNUX el lugar será
                    /etc/snort y para Windows será
                    C:snortetc .                               Paso 4º) Ejecutaremos snort indicándole la
                                                                  forma de aplicar esas reglas...
                    El archivo a crear se llamará snort.conf y
                                                                  snort –de –l /var/snort_logs –c /etc/snort/snort.conf
                    tiene este contenido:


    PC PASO A PASO Nº 19                                                                                                  Página 51
Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad




                                                                                 Paso 6º) Situación de alertas y logs
   La opción –l le sigue un directorio dónde se guardarán
                                                                                 Veamos que ocurrió en el directorio
   los logs, como en la práctica número 3 pero a diferencia
                                                                                 /var/snort_logs donde está ejecutándose
   de ella, ahora sólo aplicará las reglas establecidas y por
                                                                                 el IDS..
   tanto sólo registrará aquello que tenga que ver con esas
   reglas, además cuando se descubra una alerta creará un
                                                                                 Lo primero que vemos es que se crearon una
   archivo de texto llamado alerts que guardará los registros
                                                                                 carpeta (172.28.0.50, que corresponde a
   de las mismas. (si lo pruebas en plataformas Windows,
                                                                                 la IP del equipo “atacante” ) y un archivo
   ese archivo se llamará alerts.ids
                                                                                 alert que guarda las alarmas.
   Otra diferencia es que omitimos el parámetro –v
   y no se mostrará nada por pantalla, luego te toca practicar
   en casa con algunas de las opciones que vimos... es
   mejor no indicar la opción verbose (-v) puesto que así
   no cargamos de trabajo extra a snort y a nuestra
   máquina...




                        Paso 5º) Accesos
                                                                                                                                     Pantalla 27.
                                                                                                                                    Situación del
                                                                                                                                     directorio de
                        Sólo nos queda probar a ver que pasa... así
                                                                                                                                   registros de logs
                        q u e va m o s a c o g e r o t r o e q u i p o y
                        “navegaremos” hacia el servidor web
                        intentando un acceso por unicode... luego
                        veremos que ocurrió:




                                                                                                                                      Pantalla 28.
                                                                                                                                   Cambiar de nombre
                                                                                                                                     el archivo de
                                                                                                                                    configuración a
                                                                                                                                     snort.conf.old


Pantalla 25. Petición                                                            Como verás aparecen las alertas del intento
web para explotar el    Desde otro equipo o desde el mismo hacemos               de explotación tal y como definimos en las
  bug de unicode
                        un ping para probar la regla de ICMP....                 reglas y también el/los pings realizados contra
 desde un equipo
cualquiera de la red                                                             el servidor web




                                                         Pantalla 25. Petición                                                         Pantalla 29

                                                          ICMP eco (ping)                                                            Contenido de la
                                                                                                                                     carpeta de IP's
                                                          desde un equipo
                                                                                                                                        logeadas
                                                         cualquiera de la red



    Página 52                                                                                                       PC PASO A PASO Nº 19
Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad




                       Los dos archivos que contiene esta carpeta
                       guardan información detallada acerca de cada
                       una de las acciones, ICMP_ECHO se
                       corresponde con el ping y TCP:3444-80
                       es la información detallada del intento
   Pantalla 30.        por unicode
  Contenido del
     paquete
                       Así que terminemos el artículo y veamos el
correspondiente a la
   petición ping
                       contenido de ambos:




                                                                                         Pantalla 31.
                                                                                        Contenido del
                                                                                           paquete
                                                                                      correspondiente al
                                                                                      intento de explotar
                                                                                      el bug de unicode
Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad




          Ya sé que ha sido “excesiva” la profusión de     Espero que todo se haya entendido
          pantallas, comentarios y otras “lindezas” pero   correctamente, nos queda un largo trecho y
          es mejor ahora que luego... y en estos casos:    la parte más complicada de snort, definir
          mejor pecar en exceso que quedarse con mil       reglas, contramedidas ante los ataques,
          dudas, en los próximos números no será “tan      informes, plug-ins de salida, etc.. todo ello
          minucioso” el análisis, puesto que ya            en su conjunto hará nuestra vida por la red
          tendremos cierta experiencia y además habrás     más segura y si después de todo ello
          tenido mucho más tiempo para practicar con       implementamos un firewall en condiciones,
          snort.                                           será bastante difícil que nos invadan las malas
                                                           compañías.

                                                           Un saludo.




          ¿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
Página 54empleo@editotrans.com y te responderemos concretando nuestra oferta. Nº 19
                                                                 PC PASO A PASO
SERVIDOR DE HXC
                                               MODO DE EMPLEO

- Hack x Crack      ha habilitado tres
servidores para que puedas realizar las                                                                 Explicamos esto porque la mayoría, seguro que piensa en
                                                                                                        un Servidor Web como en algo extraño que no saben ni
prácticas de hacking.                                                                                   donde está ni como se accede. Bueno, pues ya sabes dónde
                                                                                                        se encuentran la mayoría de IIS (en Inetpub) y cuál es
- Las IPs de los servidores de hacking las                                                              la página por defecto (Inetpubwwwrootdefault.htm). Y
encontrarás en EL FORO de la revista                                                                    ahora, piensa un poco… … ¿Cuál es uno de los objetivos de
( w w w . h a c k x c r a c k . c o m ) . Una vez en el foro entra                                      un hacker que quiere decirle al mundo que ha hackeado
en la zona COMUNICADOS DE HACK X CRACK (arriba del                                                      u n a We b ? P u e s e s t á c l a r o, e l o b j e t i vo e s c a m b i a r ( o s u s t i t u i r )
todo) y verás varios comunicados relacionados con los                                                   el archivo default.html por uno propio donde diga “hola,
servidores. No ponemos las IP aquí porque es bueno                                                      soy DIOS y he hackeado esta Web” (eso si es un lamer ;)
acostumbrarte a entrar en el foro y leer los comunicados.
Si hay alguna incidencia o cambio de IP o lo que sea, se                                                A partir de ese momento, cualquiera que acceda a ese
comunicará en EL FORO.                                                                                  s e r v i d o r, v e r á e l d e f a u l t . h t m m o d i f i c a d o p a r a v e r g ü e n z a d e l
                                                                                                        “site” hackeado. Esto es muy genérico pero os dará una
                                                                                                        idea de cómo funciona esto de hackear Webs ;)
- Actualmente tienen el BUG del Code /
D e c o d e . La forma de “explotar” este bug la explicamos                                             - Cuando accedas a nuestro servidor mediante el CODE /
extensamente en los números 2 y 3. Lo dejaremos así por                                                 DECODE BUG, crea un directorio con tu nombre (el que mas
un tiempo (bastante tiempo ;) Nuestra intención es ir                                                   te guste, no nos des tu DNI) en la unidad d: a ser
habilitando servidores a medida que os enseñemos distintos                                              posible y a partir de ahora utiliza ese directorio para hacer
tipos de Hack.                                                                                          t u s p r á c t i c a s . Ya s a b e s , s u b i r n o s p r o g r a m i t a s y p r a c t i c a r
                                                                                                        con ellos :) ... ... ¿cómo? ¿que no sabes crear directorios
- En los Servidores corre el Windows 2000 con el IIS
de Servidor Web. No hemos parcheado ningún bug, ni                                                      mediante el CODE/DECODE BUG... repasa los números 2 y
t a n s i q u i e ra e l R P C y p o r s u p u e s t o t a m p o c o h e m o s i n s t a l a d o        tres de Hack x Crack ;p
n i n g ú n S e r v i c e Pa c k . Pa ra q u i e n p i e n s e q u e e s o e s u n e r r o r
(lógico si tenemos en cuenta que el RPC provoca una caída                                               Puedes crearte tu directorio donde quieras, no es necesario
completa del sistema), solo decirte que AZIMUT ha                                                       que sea en d:mellamojuan. Tienes total libertad!!! Una
configurado un firewall desde cero que evita el bug del                                                 i d e a  e s    c r e a r l o , p o r   e j e m p l o , e n
RPC, (bloqueo de los puertos 135 (tcp/udp), 137 (udp),                                                  d:xxxsystem32default10019901mellamojuan (ya irás
138 (udp), 445 (tcp), 593 (tcp)). La intención de todo esto                                             aprendiendo que cuanto mas oculto mejor :)
es, precisamente, que puedas practicar tanto con el
CODE/DECODE como con cualquier otro “bug” que conozcas
(y hay cientos!!!). Poco a poco iremos cambiando la                                                     Es posiblemente la primera vez que tienes la oportunidad
c o n f i g u ra c i ó n e n f u n c i ó n d e l a e x p e r i e n c i a , l a i d e a e s t e n e r    de investigar en un servidor como este sin cometer un delito
los Servidores lo menos parcheados posibles                                                 pero        (nosotros te dejamos y por lo tanto nadie te perseguirá).
mantenerlos operativos las 24 horas del día. Por todo ello                                              Aprovecha la oportunidad!!! e investiga mientras dure esta
y debido a posibles cambios de configuración, no olvides                                                iniciativa (esperemos que muchos años).
visitar el foro (Zona Comunicados) antes de “penetrar” en
nuestros servidores.                                                                                    - En este momento tenemos mas de 600 carpetas de peña
                                                                                                        que, como tu, está practicando. Así que haznos caso y crea
- Cada Servidor             tiene dos unidades (discos duros duros):                                    t u p r o p i a c a r p e t a d o n d e t r a b a j a r.
* La unidad c:              --> Con 40GB y Raíz del Sistema
* La unidad d:              --> Con 40GB
* La unidad e:              --> CD-ROM

N o t a : R a í z d e l S e r v i d o r,   s i g n i f i c a q u e e l W i n d o w s A d va n c e d

                                                                                                              !
Server está instalado                      en esa unidad (la unidad c:) y
concretamente en el
Por lo tanto, la raíz
                                           directorio por defecto winnt
                                            del sistema está en c:winnt
                                                                                                                                   MUY IMPORTANTE...
- E l I I S , I n t e r n e t I n f o r m a t i o n S e r v e r, e s e l S e r v i d o r d e
páginas Web y tiene su raíz en c:inetpub (el directorio
por defecto)
                                                                                                              MUY IMPORTANTE!!!!!                                Por favor, no borres archivos
Nota: Para quien nunca ha tenido instalado el IIS, le será                                                   del Servidor si no sabes exactamente lo que estás haciendo ni
e x t ra ñ o t a n t o e l n o m b r e d e e s t a c a r p e t a ( c :  i n e t p u b ) c o m o
s u c o n t e n i d o . Pe r o b u e n o , u n d í a d e e s t o s o s e n s e ñ a r e m o s                 borres las carpetas de los demás usuarios. Si haces eso, lo único
a i n s t a l a r v u e s t r o p r o p i o S e r v i d o r We b ( I I S ) y d e t a l l a r e m o s
su funcionamiento.                                                                                           que consigues es que tengamos que reparar el sistema servidor
De momento, lo único que hay que saber es que cuando                                                         y, mientras tanto, ni tu ni nadie puede disfrutar de él :(
T Ú p o n g a s n u e s t ra I P ( l a I P d e u n o d e n u e s t r o s s e r v i d o r e s )
en tu navegador (el Internet explorer por ejemplo), lo que                                                   Es una tontería intentar “romper” el Servidor, lo hemos puesto
estás haciendo realmente es ir al directorio
c :  I n e t p u b  w w w r o o t  y l e e r u n a r c h i vo l l a m a d o d e fa u l t . h t m .        para que disfrute todo el mundo sin correr riesgos, para que todo
Nota: Como curiosidad, te diremos que APACHE es otro                                                         el mundo pueda crearse su carpeta y practicar nuestros ejercicios.
S e r v i d o r d e p á g i n a s We b ( s e g u r o q u e h a s o í d o h a b l a r d e
él). Si tuviésemos instalado el apache, cuando pusieses                                                      En el Servidor no hay ni Warez, ni Programas, ni claves, ni nada
n u e s t r a I P e n T U n a v e g a d o r, a c c e d e r í a s a u n d i r e c t o r i o                   de nada que “robar”, es un servidor limpio para TI, por lo tanto
raíz del Apache (donde se hubiese instalado) e intentarías
leer una página llamada index.html ... pero... ¿qué te                                                       cuídalo un poquito y montaremos muchos más :)
estoy contando?... si has seguido nuestra revista ya
dominas de sobras el APACHE ;)


  PC PASO A PASO Nº 19                                                                                                                                                                 Página 55
Curso de PHP
      Aprende a manejar SOCKETS con PHP



            - Aprenderemos a manejar SOCKETS                        - Qué es un SOCKET
            - Tocaremos algunos conceptos de TCP / IP               - Programaremos un Cliente en PHP
            - Programaremos un Servidor PHP



            Continuamos con el curso de PHP, en este             Derivados de los Multics y los sistemas
            número aprenderemos a manejar sockets.               anteriores, los sistemas primitivos de entrada
            La programación de socket da mucho juego,            y salida de UNIX siguen un paradigma que
            pero es necesario conocer conceptos básicos          algunas veces se denomina open-read-write-
            de TCP/IP. Con socket se puede programar             close.
            un servidor, un cliente telnet, un servidor de
            FTP, ... un sin fin de aplicaciones. Este capítulo            Antes de que un proceso de usuario
            es tal vez el más complejo ya que hace falta               pueda ejecutar operaciones de E/S,
            conocer TCP/IP y conocimientos de redes.                   llama a open para especificar el archivo
            Daremos varios ejemplos de cómo programar                  o dispositivo que va a usar y obtiene el
            un servidor y un cliente.                                  permiso.
                                                                         La llamada a open devuelve un
            Un poco de culturilla sobre el                             pequeño entero descriptor de archivo,
            origen de los sockets.                                     que el proceso utiliza cuando ejecuta
                                                                       las operaciones de E/S en el archivo o
            No desesperes si no entiendes muchos de los
                                                                       dispositivo abierto.
            conceptos que estás a punto de leer en esta
                                                                          Una vez que se ha abierto un objeto,
            introducción, ¿vale?, al final verás un cuadro
                                                                       el proceso de usuario hace una o más
            de resumen con lo verdaderamente
                                                                       llamadas a read o write para transferir
            importante.
                                                                       datos.

            Unix fue desarrollado a finales de los años                  Read transfiere datos dentro del
            sesenta y principios de los setenta, y se diseñó           proceso de usuario.
            originalmente como un sistema orientado al                  Write transfiere datos del proceso de
            proceso, en el que cada programa de                        usuario al archivo o dispositivo.
            aplicación se ejecuta como un proceso de                     Tanto read como write toman tres
            nivel de usuario. Un programa de aplicación                argumentos que especifican el descriptor
            interactúa con el sistema operativo haciendo               de archivo que se ha de usar, la dirección
            llamadas de sistema.                                       de un búfer y el número de octetos que
                                                                       se han de transferir.
            Desde el punto de vista del programador, las
                                                                         Luego de completar todas las
            llamadas de sistema se ven y comportan
                                                                       operaciones de transferencia, el proceso
            exactamente igual que las demás llamadas
                                                                       de usuario llama a close para informar
            de procedimiento. Toman argumentos y
                                                                       al sistema operativo que ha terminado
            devuelven uno o más resultados. Los
                                                                       de usar el objeto.
            argumentos pueden ser valores (por ejemplo,
            una operación de enteros) o punteros a
                                                                 Originalmente, los diseñadores de UNIX
            objetos en el programa de aplicación (como
                                                                 agruparon todas las operaciones de E/S en el
            un búfer que ha de ser llenado con
                                                                 paradigma open-read-write-close descrito
            caracteres).

Página 56                                                                                            PC PASO A PASO Nº 19
Programación PHP - Programación de sockets - Programación PHP - Programación de sockets




          anteriormente. EL esquema incluyó E/S para         aplicación utilice uno o más de ellos a la vez.
          los dispositivos orientados a caracteres (como     Como consecuencia, el programa de aplicación
          los teclados) y para dispositivos orientados a     no sólo puede proporcionar una dirección de
          bloques (como los discos y los archivos de         32 bits y esperar a que el sistema operativo
          datos).                                            la interprete de manera correcta, la aplicación
                                                             debe especificar explícitamente que el número
          Una de las primeras implantaciones del TCP/IP      de 32 bits representa una dirección IP.
          bajo Unix también utilizó el paradigma open-
          read-write-close con un nombre de archivo          La base para la E/S de la red en BSD de UNIX
          especial, /dev/tcp                                 se centra en una abstracción conocida como
                                                             socket. Imagina el socket como una
          El grupo que añadió los protocolos de red a        generalización del mecanismo de acceso a
          BSD de UNIX decidió que, como los protocolos       archivos de UNIX que proporciona un punto
          de la red eran más complejos que los               final para la comunicación.
          dispositivos convencionales de E/S, la
          interacción entre los procesos del usuario y       Al igual que con el acceso a archivos, los
          los protocolos de red debía ser más compleja       programas de aplicación requieren que el
          que las interacciones entre los procesos de        sistema operativo cree un socket cuando se
          usuario y las instalaciones convencionales de      necesita. El sistema devuelve un número
          E/S.                                               entero pequeño que utiliza el programa de
                                                             aplicación para hacer referencia al socket
          En particular, la interfaz de protocolo de debía   recientemente creado.
          permitir a los programadores crear un código
          de servidor que esperase las conexiones            La diferencia principal entre los descriptores
          pasivamente, así como también un código            de archivos y los descriptores de socket es el
          cliente que formara activamente las                sistema operativo enlaza un descriptor de
          conexiones.                                        archivo a un archivo o dispositivo específico
                                                             cuando la aplicación llama a open, pero puede
          Además, los programas de aplicación que            crear sockets sin enlazarlos a direcciones de
          mandaban datagramas podían especificar la          destino específicas.
          dirección de destino junto con cada datagrama
          en lugar de destinos enlazados en el momento       La aplicación puede elegir abastecer una
          en que llamaban a open.                            dirección de destino cada vez que utiliza el
                                                             socket (es decir, cuando se envían datagramas)
          Para manejar todos estos casos, los                o elegir enlazar la dirección de destino a un
          diseñadores eligieron abandonar el paradigma       socket y evadir la especificación de destino
          tradicional de UNIX open-read-write-close y        repetidamente (es decir, cuando se hace una
          añadir varias llamadas nuevas del sistema          conexión TCP).
          operativo, así como una nueva biblioteca de
          rutinas.
                                                                !              CUADRO                  RESUMEN
          Posteriormente surgió una mayor complejidad
          en la interfaz de protocolos de UNIX pues los         CUADRO DE RESUMEN: La manera de trabajar con socket es
          diseñadores intentaron construir un mecanismo         similar a los ficheros. Los socket nos permiten conectar con otras
          general para adaptar muchos protocolos. Por           máquinas. Es importante saber que todos los servidores TCP/IP
          ejemplo, la generalidad hace posible, para el         funcionan mediante socket, es decir, que si comprendes el
          sistema operativo, incluir software para otros        paradigma socket estarás comprendiendo el verdadero corazón
          conjuntos de protocolos así como también              de todas las aplicaciones de Internet TCP/IP (Telnet, FTP, email,
          TCP/IP y permitir que un programa de                  ...)


PC PASO A PASO Nº 19                                                                                                  Página 57
Programación PHP - Programación de sockets - Programación PHP - Programación de sockets




              Todo eso está muy bien, ¿pero
                                                                         saber, pesticida para los cultivos de arroz (no sería una buena
              que es realmente un socket?
                                                                         idea juntar pesticida con coca-cola, ¿verdad?).

              La mayoría de las aplicaciones que funcionan
                                                                         Para solucionar el enorme gasto de tiempo y dinero que supone
              en un entorno de red están formadas por dos
                                                                         limpiar la súper-tubería cada vez que cambian de líquido, deciden
              elementos: el cliente y el servidor. Para
                                                                         meter dentro de la súper-tubería unas 65000 mangueras. Y deciden
              poder enviar órdenes a un servidor que está
                                                                         que, a partir de ahora, por la manguera 1 (puerto 1) enviarán
              atendiendo nuestras peticiones se utilizan los
                                                                         gasolina, por la manguera 2 (puerto 2) coca-cola, por la manguera
              sockets.
                                                                         tres (puerto 3) acido acético y así hasta las 65000.

              Para definir qué es un socket, pensemos en
                                                                         Por otro lado, cada extremo de cada manguera se conecta a un
              ello como una pequeña tubería por la que se
                                                                         grifo (socket). Es decir, la manguera 1 (puerto 1) tiene un extremo
              pueden enviar datos.
                                                                         conectado a un grifo en Alemania (socket) y otro extremo conectado
                                                                         a un grifo (socket) en España.
              Como existen diferentes tipos de datos a
              enviar en función del servicio utilizado (Web,
                                                                         VAMOS A INTENTARLO!!!
              FTP, e-mail, Telnet…) existe una forma de
                                                                         La fábrica alemana (servidor) quiere enviar a la fábrica Española
              definir qué “tubería” queremos utilizar: se
                                                                         (cliente) un líquido (datos) y para ello abre el grifo (socket) de
              define mediante un número que se denomina
                                                                         la manguera 80 (puerto 80). El líquido (datos) pasa por la
              puerto. De esta forma se puede acceder a
                                                                         manguera 80 (puerto 80) y llega hasta el otro extremo, hasta el
              un servidor que mantenga activos diferentes
                                                                         grifo (socket) que hay en España.
              servicios y, por lo tanto, se acceda a través
              de diferentes puertos a un servicio concreto.
                                                                         Hemos dicho que cada manguera debía contener un producto,
                                                                         y en este caso los ejecutivos de la multinacional decidieron que
  !               El paralelismo                                         “normalmente” (ya sabes que los ejecutivos pueden cambiar de
                                                                         opinión) por la manguera 80 (puerto 80) circulará líquido (datos)
                                                                         del tipo “agua mentolada” (Web). Por lo tanto, a eso lo llaman
  EL PARALELISMO: Tuberías de líquidos.
                                                                         servicio de “agua mentolada” (servicio Web).

  Para quien todavía esté perdido entre palabras como cliente,
                                                                         La verdad es que se lo han montado muy bien, la fábrica alemana
  servidor, sockets, puertos y servicios, vamos a hacer un paralelismo
                                                                         (servidor) puede servir a la fábrica Española (cliente) hasta
  con la vida real.
                                                                         65.000 tipos de líquidos (65000 servicios, Servicios Web, Servicios
                                                                         FTP, Servicios…).
  Imaginemos que una de esas “súper-multinacionales” (tan de
  moda hoy en día) monta una fábrica en Alemania que fabrica
                                                                         No quiero extenderme con el paralelismo porque hay pocas
  (sirve, servidor) unos 65.000 tipos de líquidos y otra en España
                                                                         páginas en la revista, solo imagina que los ejecutivos se dan
  que consume (cliente) esos líquidos.
                                                                         cuenta que los líquidos (datos) pueden ir tanto de Alemania a
                                                                         España como de España a Alemania (un cliente se puede
  Como son muy “chulos” y no quieren depender de nadie, para
                                                                         transformar en servidor y un servidor en cliente). Además, los
  trasladar los líquidos de Alemania a España montan tubería
                                                                         paralelismos son simples aproximaciones ( a veces demasiado
  MUY MUY LARGA y MUY MUY GRUESA que va desde la fábrica
                                                                         simples), a medida que aprendas sobre un tema tendrás que
  de Alemania hasta la fábrica de España (pidiendo los permisos
                                                                         “adaptar” (y ampliar) este paralelismo.
  pertinentes a dichos países, claro ;)

                                                                         Hay dos tipos de estudiantes (y todos somos alumnos de la vida),
  Imagina que desde Alemania quieren enviar a España gasolina
                                                                         los que simplemente acumulan datos (enciclopedias andantes)
  y coca-cola. Tienen un problema: primero tendrán que enviar
                                                                         y los que transforman los datos en conocimiento (los que
  coca-cola, después limpiar la súper-tubería, enviar el gas-oil y
                                                                         entienden)… ya sabes a quien va dirigida esta revista ;)
  volverla a limpiar porque mañana pueden querer enviar, vete a



Página 58                                                                                                        PC PASO A PASO Nº 19
Programación PHP - Programación de sockets - Programación PHP - Programación de sockets




          PHP proporciona acceso a lo que se denomina      TCP (Transmission Control Protocol), la transmisión de los
          socket de Berkeley. Se trata, por lo tanto, de   paquetes está numerada y es ensamblada en el destino
          un conjunto de funciones (de nuevo una API)      siguiendo la numeración de los paquetes. Si un paquete
          que permite establecer una comunicación          falta se vuelve a solicitar. Es decir, TCP es un protocolo
          con otro sistema que puede recibir y enviar      seguro que no permite perdida de datos.
          información utilizando esta técnica.             Ejemplos de protocolos TCP: HTTP, FTP, EMAIL, TELNET,
                                                           ...
          Un socket puede funcionar como servidor o
          como cliente (espero que después del             UDP (User Datagram Protocol), este protocolo permite
          paralelismo “Tuberías de líquidos” entiendas     perder datos, si algún paquete se pierde no se vuelve a
          esta frase :)
                                                           solicitar, se asume la perdida, ¿qué servicios pueden utilizar
                                                           UDP?, pues por ejemplo los protocolos de video por Internet,
          Un socket de servidor es un servicio al que
                                                           de voz, música por Internet, donde no es crucial el 100%
          se le ha asignado un puerto por el cual
          escucha y responde. Por ejemplo, si abres        la calidad y donde se solicita información en tiempo real,
          varios navegadores Web y visitas páginas         lógicamente el UDP es más rápido que el TCP.
          diferentes, estarás abriendo varios socket
          diferentes y todo ellos tienen asignados el      PHP Socket
          mismo puerto (puerto 80). Esto sería como
          una manguera que en su extremo tiene varios      PHP soporta el manejo de sockets a bajo nivel. En PHP3
          grifos ;)                                        se introdujo manejar socket gracias a la función fosckopen()
                                                           entre otras funciones asociadas.
          Los servidores de emails (POP3, SMTP) y
          servidores Web son buenos ejemplos de
                                                           Las funciones socket en PHP están en fase experimental
          servidores sockets. El servidor HTTP (Web)
          escucha por el puerto 80 las solicitudes y       y aún pueden ser modificadas, pero lo cierto es que
          responde con información HTML y otros            funcionan muy bien y se puede crear aplicaciones con
          ficheros (por ejemplo imágenesimagenes).         estas funciones.

          Generalmente el socket servidor se encuentra     Creando socket en PHP
          continuamente funcionando, por lo general
          es un servicio de Windows o un demonio de        Programar socket en PHP es muy similar a cómo se
          Linux.
                                                           programa con funciones en C. Vamos a comenzar con un
                                                           simple ejemplo: un Servidor socket que escucha una
          Tipos de socket                                  conexión por el puerto 9000, acepta una cadena de texto
                                                           como entrada y retorna la misma cadena de texto pero
          Si estás siguiendo el curso de TCP/IP ya
                                                           borrando los espacios en blanco.
          sabrás que hay dos formas de enviar la
          información, por TCP y UDP, esto quiere decir
          que la información por Internet puede ser        <?php
          enviada por uno de estos dos protocolos. La      // Tiempo ilimitado de ejecución, para que esté funcionando eternamente.
          información es dividida en paquetes y luego
          ensamblada en el destino.                        set_time_limit (0);

          Si hay dos formas de enviar información,         // La IP y el puerto por donde van a escuchar, recuerda que una misma
          entonces PHP tiene que soportar la creación      // máquina puede tener varias IPs
          de sockets tanto TCP como UDP.                   $address = ‘127.0.0.1’;
                                                           $port = 9000;
          ¿Es importante saber esto de TCP y UDP?, si
          que lo es, ya que es necesario para saber        // Crea un socket TCP Stream
          como conectar con servidores y obtener           $sock = socket_create(AF_INET, SOCK_STREAM, 0);
          información .......                              // Se asocia el socket a la direccion IP y al puerto


PC PASO A PASO Nº 19                                                                                                Página 59
Programación PHP - Programación de sockets - Programación PHP - Programación de sockets




socket_bind($sock, $address, $port) or die(‘Error al asociar’);   3.   socket_listen($sock);
// Escucha por el socket
socket_listen($sock);                                             Escucha por el socket, es decir, va a esperar
                                                                  a que llegue información por el puerto 9000
/* Se comunica que acepte la conexión */                          de la IP 127.0.0.1
$client = socket_accept($sock);
                                                                  4.   $client = socket_accept($sock);
// Lee 1024 caracteres de la conexión
$input = socket_read($client, 1024);                              Al ser TCP, el cliente solicita una conexión.
                                                                  Esta línea hace que el Servidor acepte la
// Reemplaza los espacio en blanco                                conexión, de esta forma podrá capturar la
$output = ereg replace("[ tnr]","",$input).chr(0);             información procedente del cliente mediante
                                                                  el socket.
// Envía la cadena al cliente
socket_write($client, $output);                                   5.   $input = socket_read($client, 1024);

// Cierra la conexión
                                                                  Una vez que la conexión TCP ha sido aceptada
socket_close($client);
                                                                  se captura 1024 caracteres o hasta que se
                                                                  envíe un retorno de carro (pulsando la tecla
// Cierra el socket
                                                                  Return) enviados por el cliente.
socket_close($sock);
?>
                                                                  6.   $output = ereg replace("[ tnr]","",$input).chr(0);

Vamos a comentar el programa. Recuerda que el cometido
del programa es hacer de servidor, de recibir un texto y          La función ereg_replace ya se ha comentado
luego devolverlo sin espacios en blanco (y todo ello en           en anteriores capítulos, en este ejemplo elimina
TCP). Un Servidor Web funciona de forma muy parecida,             los espacios en blanco.
pero sirviendo páginas HTML.
                                                                  7.   socket_write($client, $output);
1.     $sock = socket_create(AF_INET, SOCK_STREAM, 0);
                                                                  Escribe el resultado en la conexión establecida,
Se crea un socket que hará de servidor, para cliente ya lo        al cliente le llegará el texto enviado pero sin
veremos después.
                                                                  espacios.
          AF_INET indica que el protocolo a aceptar será
        IPV4, usado tanto para TCP o UDP.
                                                                  8.   Socket_close($cliente) y socket_close($sock)
         SOCK_STREAM indica que será un socket full duplex,
        aceptando peticiones de tipo streams.
                                                                  Cierra la conexión y el socket, para liberar
         Resumiendo: Con esta línea indicamos que se cree
                                                                  recursos.
        un socket en TCP. Si fuera UDP habría sustituir
        SOCK_STREAM por SOCK_DGRAM.
                                                                  Creando          un     servidor          real
2.   socket_bind($sock, $address, $port) or die(‘Error al
asociar’);                                                        Ahora que ya conocemos los conceptos básicos
                                                                  para trabajar con socket, vamos a crear un
Una vez que ya está creado el socket es necesario asociarlo       verdadero servidor. El anterior ejemplo tenía
a una IP y aun puerto para que sepa por donde trabajar.           la limitación de que solo aceptaba una


  Página 60                                                                                            PC PASO A PASO Nº 19
Programación PHP - Programación de sockets - Programación PHP - Programación de sockets




conexión, es como si un Servidor Web solo aceptara una            // Set up a blocking call to socket_select()
visita, lógicamente eso no puede decirse que sea un servidor      $ready = socket_select($read,null,null,null);
de verdad.                                                        /* Si hay una nueva conexión lo añade al array de conexiones */
                                                                  if (in array($sock, $read)) {
                                                                  for ($i = 0; $i < $max_clients; $i++)
El siguiente ejemplo aceptará varias conexiones de varios
                                                                  {
clientes, ¡¡esto si que es un verdadero servidor!!.
                                                                  if ($client[$i]['sock'] == null) {
                                                                  $client[$i]['sock'] = socket_accept($sock);
Para conseguir el que programa nunca termine y siempre            break;
acepte nuevas conexiones podemos usar while(true) { /*            }
código */ }.                                                      elseif ($i == $max_clients - 1)
                                                                  print ("Demasiados clientes")
El siguiente ejemplo es similar al anterior pero con algunas      }
                                                                  if (--$ready <= 0)
nuevas funcionalidades:
                                                                  continue;
                                                                  } // Fin del array de clientes
          El programa no termina al aceptar una conexión.         // Si el cliente está intentando leer le asocia un handle y lee el contenido
          Crea un sistema fácil para finalizar el servidor.
                                                                  for ($i = 0; $i < $max_clients; $i++)
          Acepta simultáneamente varios clientes.
                                                                  {
                                                                  if (in array($client[$i]['sock'] , $read))
<?php
                                                                  {
// Tiempo de ejecución ilimitado
                                                                  $input = socket_read($client[$i]['sock'] , 1024);
set_time_limit (0);
                                                                  if ($input == null) {
                                                                  // Si la longitud es cero desconecta
// IP y puerto de escucha
                                                                  unset($client[$i]);
$address = ‘127.0.0.1’;
                                                                  }
$port = 9000;
                                                                  $n = trim($input);
$max_clients = 10;
                                                                  if ($input == 'exit') {
                                                                  // Si se recibe la palabra exit se desconecta
// Crea un array de clientes (para aceptar varias peticiones)
                                                                  socket_close($client[$i]['sock']);
$clients = Array();
                                                                  } elseif ($input) {
                                                                  // Elimina los espacios en blanco
// Crea un socket TCP
                                                                  $output = ereg replace("[ tnr]","",$input).chr(0);
$sock = socket_create(AF_INET, SOCK_STREAM, 0);
                                                                  socket_write($client[$i]['sock'],$output);
// Asocia el socket al puerto y dirección
                                                                  }
socket_bind($sock, $address, $port) or die(‘Error al asociar’);
                                                                  } else {
// Comienza a leer por el socket
                                                                  // Cierra los socket
socket_listen($sock);
                                                                  socket_close($client[$i]['sock']);
                                                                  unset($client[$i]);
// Ciclo infinito, para que no termine de aceptar peticiones
                                                                  }
while (true) {
                                                                  }
// Inicia el array para aceptar conexiones
                                                                  }
$read[0] = $sock;
                                                                  socket_close($sock);
for ($i = 0; $i < $max_clients; $i++)
                                                                  ?>
{
if ($client[$i]['sock'] != null)
                                                                  La funcionalidad del programa es la misma del primer
$read[$i + 1] = $client[$i]['sock'] ;                             ejemplo, con algunas mejoras – cuando el cliente envía la
}                                                                 palabra EXIT el servidor finaliza la conexión con ese usuario.


  PC PASO A PASO Nº 19                                                                                                        Página 61
Programación PHP - Programación de sockets - Programación PHP - Programación de sockets




                                                                                             $entrada .= "Connection: Closernrn";
El programa es muy similar al primero, excepto el bucle                                      $salida = '';
infinito y algunos bloques de código:                                                        echo "Enviando petici&oacute;n HTTP HEAD...";

1.       Inicia un socket para cliente.                                                      socket_write($socket, $entrada, strlen($entrada));
2.       Escucha a cada cliente y lo inicia en el array $client.                             echo "OK.n";
3.       Atiende a cada cliente, recibe y envía los datos.                                   echo "Leyendo respuesta:nn";
4.       Un handle para cada cliente.
                                                                                             while ($salida = socket_read($socket, 2048)) {

Ejemplo de cliente Socket                                                                    echo $salida;
                                                                                             }
Programar un cliente socket es mucho más sencillo que                                        echo "Cerrando socket...";
programar un servidor. El siguiente ejemplo se conecta a
                                                                                             socket_close($socket);
www.hackxcrack.com, envía una petición HEAD, imprime
la respuesta y sale.                                                                         echo "OK.nn";
                                                                                             ?>
<?php
error_reporting(E_ALL); // Imprime en pantalla los errores que ocurran                       Listado de funciones principales para
                                                                                             programar socket
echo "<h2>Conexi&oacute;n TCP/IP</h2>n";
                                                                                             Socket_Accep()
/* Obtener el puerto para el servicio WWW. */
                                                                                             Acepta una conexión. Esta función es experimental, aún
$puerto_servicio = getservbyname('www', 'tcp');
                                                                                             está en fase de desarrollo y puede variar en futuras
                                                                                             versiones de PHP.
/* Obtener la direccion IP del host de destino. */
$direccion = gethostbyname('www.hackxcrack.com');                                            <?php
                                                                                             $fd = socket_create(AF_INET, SOCK_STREAM, 6);
/* Crear un socket TCP/IP. */                                                                $PORT = 5000;
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);                                      socket_bind($fd, "0.0.0.0", $PORT);
if ($socket < 0) {                                                                           while(true)
echo "socket_create() fall&oacute;: motivo: " . socket_strerror($socket) . "n";             {
                                                                                             $remote_fd = socket_accept($fd);
}
                                                                                             remote_socket_client_handle($remote_fd);
else {
                                                                                             } ?>
echo "OK.n";
}                                                                                            socket_create ( int domain, int type, int protocol)

echo "Intentando una conexi&oacute;n con '$direccion' en el puerto '$puerto_servicio'...";   Crea un socket y retorna un identificador del socket.
$resultado = socket_connect($socket, $direccion, $puerto_servicio);
if ($resultado < 0) {                                                                        Domain toma los siguientes valores:
echo "socket_connect() fall&oacute;.nMotivo: ($resultado) " .
socket_strerror($resultado) . "n";
}
else {
echo "OK.n";
}
$entrada = "HEAD / HTTP/1.1rn";
$entrada .= "Host: www.hackxcrack.comrn";


    Página 62                                                                                                                           PC PASO A PASO Nº 19
Programación PHP - Programación de sockets - Programación PHP - Programación de sockets




                                                           En el próximo número:
                                                           Programar socket te puede resultar algo
                                                           complicado, la mejor manera de aprender es
                                                           experimentando, juega con las funciones
                                                           principales de sockets, observa los errores,
                                                           crea servidores TCP y luego adáptalos a UDP.
                                                           En el próximo número seguiremos con socket
                                                           y comenzaremos a tratar fechas en PHP.
          bool socket_bind ( resource socket, string
          address [, int port])                            David C.M

          Asocia un socket a un puerto y una dirección
          IP. La función es aún experimental por lo que       !           En la editorial...
          puede sufrir modificaciones.
                                                              En la editorial de la revista siguen llegando mails
          Socket toma el valor del puntero que se a           preguntando como se ejecuta el código PHP. Hemos
          creado con la función socket_create(). El           dedicado números enteros a explicarlo, desde cómo
          parámetro address es una dirección IP               montar el Servidor Apache hasta la implementación
          (ejemplo: 127.0.0.1). El parámetro port es          de PHP (pasando por todo tipo de configuraciones).
          solo usado cuando la conexión es de tipo            Revisa los números anteriores y si te quedan dudas
          AF_INET, y asigna el puerto al que se debe          pregunta en el foro de hackxcrack
          conectar la aplicación.                             (www.hackxcrack.com).

          Devuelve True si todo se llevó correctamente,
          FALSE en caso contrario.
                                                             PERSONALIZATUMOVIL
                                                               PERSONALIZATUTUMOVIL
                                                             PERSONALIZATUMOVIL
                                                             PERSONALIZATUMOVIL  MOVIL
                                                                                 MOVIL
                                                               PERSONALIZATUTUMOVIL
                                                                                 MOVIL
                                                                                 MOVIL
                                                               PERSONALIZATUTUMOVIL
                                                                                 MOVIL
                                                               PERSONALIZATUTUMOVIL
                                                             PERSONALIZATUMOVIL  MOVIL
                                                                                MOVIL
                                                                PERSONALIZATUTUMOVIL
                                                              PERSONALIZATUMOVIL
                                                                PERSONALIZA TUMOVIL
                                                              PERSONALIZATUMOVIL
                                                              PERSONALIZATUMOVIL
                                                                PERSONALIZA     MOVIL
                                                                PERSONALIZA TUMOVIL
                                                              PERSONALIZATUMOVIL
                                                                               MOVIL
                                                                               MOVIL
                                                                               MOVIL
                                                                               MOVIL
                                                                              MOVIL
                                                                              MOVIL
          bool socket_listen ( resource socket [,                PERSONALIZA
                                                                 PERSONALIZA
                                                                 PERSONALIZA  MOVIL
                                                                              MOVIL
                                                                             MOVIL
                                                                    PERSONALIZATUMOVIL
                                                                                     MOVIL
                                                                      PERSONALIZA TUMOVIL
                                                                                     MOVIL
                                                                    PERSONALIZATUMOVIL
                                                                      PERSONALIZA TUMOVIL
                                                                                     MOVIL
                                                                                     MOVIL
                                                                    PERSONALIZATU MOVIL
                                                                                     MOVIL
                                                                      PERSONALIZA TUMOVIL
                                                                                     MOVIL
                                                                    PERSONALIZATU MOVIL
                                                                     PERSONALIZA TUMOVIL
                                                                                    MOVIL
                                                                     PERSONALIZATU MOVIL
                                                                     PERSONALIZA TU MOVIL
                                                                     PERSONALIZA TU MOVIL
          int backlog])

          Después de que el socket haya sido creado
          con socket_create() y asociado a una IP/puerto
          con la función socket_bind(), se necesita que
          el socket esté escuchando esperando
          conexiones, para ello se utiliza la función
          socket_listen.

          string socket_read ( resource socket, int
          length [, int type])

          La función socket_read() lee desde un socket
          creado con socket_create() o socket_accept().
          El número máximo de bytes a leer es
          especificado por el parámetro length.

          Socket_read() retorna los datos como una
          cadena de texto, o texto si se ha producido
          un error.
          Es importante saber que socket_read() debe                      HAY MUCHOS MAS EN
          retornar una cadena de tamaño 0 para indicar                 http://pclog.buscalogos.com/

PC PASO A PASO Nº 19                                                                                      Página 63
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 Postal

Solo tienes que enviarnos un mail a preferente@hackxcrack.com              Envíanos un GIRO POSTAL por valor de 45 EUROS a:
indicando:                                                                 CALLE PERE MARTELL20, 2º 1ª.
- Nombre                                                                   CP 43001 TARRAGONA
- Apellidos                                                                ESPAÑA
- Dirección Completa                                                       IMPORTANTE: En el TEXTO DEL GIRO escribe un mail de contacto
- Población                                                                o un número de Teléfono.
- Provincia
- Cógigo Postal                                                        Y enviarnos un mail a preferente@hackxcrack.com indicando:
- Mail de Contacto y/o Teléfono Contacto                               - Nombre
Es imprescindible que nos facilites un mail o teléfono de contacto.    - Apellidos
- Tipo de Subscripción: CONTRAREEMBOLSO                                - Dirección Completa
- Número de Revista:                                                   - Población
Este será el número a partir del cual quieres subscribirte. Si deseas  - Provincia
(por ejemplo) subscribirte a partir del número 5 (incluido), debes poner
                                                                       - Cógigo Postal
un 5 y te enviaremos desde el 5 hasta el 15 (ambos incluidos)          - Mail de Contacto y/o Teléfono Contacto
                                                                       Es imprescindible que nos facilites un mail o teléfono de contacto.
APRECIACIONES:                                                         - Tipo de Subscripción: GIRO POSTAL
* Junto con el primer número recibirás el abono de 45 euros, precio - Número de Revista:
de la subscripción por 11 números (un año) y una carta donde se te Este será el número a partir del cual quieres subscribirte. Si deseas
indicará tu número de Cliente Preferente y justificante/factura de la (por ejemplo) subscribirte a partir del número 5 (incluido), debes poner
subscripción.                                                          un 5 y te enviaremos desde el 5 hasta el 15 (ambos incluidos)
* Puedes hacernos llegar estos datos POR MAIL,tal como te hemos
indicado; rellenando el formulario de nuestra WEB APRECIACIONES:
(www.hackxcrack.com) o enviándonos una carta a la siguiente dirección: * Junto con el primer número recibirás una carta donde se te indicará
CALLE PERE MARTELL Nº20, 2º-1ª                                         tu número de Cliente Preferente y justificante/factura de la subscripción.
CP 43001 TARRAGONA                                                     * Puedes hacernos llegar estos datos POR MAIL,tal como te hemos
ESPAÑA                                                                 indicado; o enviándonos una carta a la siguiente dirección:
* Cualquier consulta referente a las subscripciones puedes enviarla CALLE PERE MARTELL Nº20, 2º-1ª
por mail a preferente@hackxcrack.com                                   CP 43001 TARRAGONA
                                                                       ESPAÑA
                                                                       * Cualquier consulta referente a las subscripciones puedes enviarla
                                                                       por mail a preferente@hackxcrack.com
NÚMERO1:                                                             NÚMERO 2:
                                                                       -CODE/DECODE BUG: INTRODUCCIÓN.
  -CREA TU PRIMER TROYANO                                              -CODE/DECODE BUG: LOCALIZACIÓN DEL OBJETIVO.
   INDETECTABLE POR LOS ANTIVIRUS.                                     -CODE/DECODE BUG: LÍNEA DE COMANDOS.
  -FLASHFXP: SIN LÍMITE DE VELOCIDAD.                                  -CODE/DECODE BUG: SUBIENDO ARCHIVOS AL SERVIDOR REMOTO.
  -FTP SIN SECRETOS: PASVMODE.                                         -OCULTACIÓN DE IP: PRIMEROS PASOS.
  -PORT MODE/PASV MODE Y LOS FIREWALL: LA UTILIDAD DE LO APRENDIDO.    -LA FLECHA ÁCIDA: LA SS DIGITAL.
  -TCP-IP:INICIACIÓN (PARTE 1).                                         AZNAR AL FRENTE DE LA SS DEL SIGLO XXI.
  -EL MEJOR GRUPO DE SERVIDORES FTP DE HABLA HISPANA.
  -EDONKEY 2000 Y SPANISHARE.
  -LA FLECHA ÁCIDA.




NÚMERO 3:

 -PROXY: OCULTANDO NUESTRA IP.
          ASUMIENDO CONCEPTOS.
 -PROXY: OCULTANDO NUESTRA IP.
          ENCADENANDO PROXIES.                                        NÚMERO 7:
 -PROXY: OCULTANDO NUESTRA IP.                                        - PROTOCOLOS: POP3
          OCULTANDO TODOS NUESTROS PROGRAMAS TRAS LAS                 - PASA TUS PELICULAS A DIVX III (EL AUDIO)
         CADENAS DE PROXIES.                                          - PASA TUS PELICULAS A DIVX IV (MULTIPLEXADO)
 -EL SERVIDOR DE HACKXCRACK: CONFIGURACIÓN Y MODO DE EMPLEO.          - CURSO DE VISUAL BASIC: LA CALCULADORA
 -SALA DE PRACTICAS: EXPLICACIÓN.                                     - IPHXC: EL TERCER TROYANO DE HXC II
                                                                      - APACHE: UN SERVIDOR WEB EN NUESTRO PC
 -PRÁCTICA 1ª: SUBIENDO UN ARCHIVO A NUESTRO SERVIDOR.                - CCPROXY: IV TROYANO DE PC PASO A PASO
 -PRÁCTICA 2ª: MONTANDO UN DUMP CON EL SERV-U.                        - TRASTEANDO CON EL HARDWARE DE UNA LAN
 -PRÁCTICA 3ª: CODE/DECODE BUG. LÍNEA DE COMANDOS.
 -PREGUNTAS Y DUDAS.
 PC PASO A PASO Nº 18                                                                                           Página 65
NÚMERO 11:                                      NÚMERO 12:
- Curso de linux: programacion                  - Curso de linux: programacion C.
- Visual Basic: IIS bug exploit                 - Visual Basic: IIS bug exploit. Nuestro primer Scanner.
- Apache como proxy                             - APACHE: Configuralo de forma segura.
- Serie Raw: FTP                                - Serie Raw: FTP(II)
- Validacion XML: DTD                           - VALIDACION XML: DTD (II)
- Historia: Lady Augusta Ada Byron




NÚMERO 13:
- Curso de linux: programacion C(II).              NÚMERO 15
- Visual Basic:Nuestro primer proyecto.
- APACHE: Configuralo de forma segura.             - CURSO DE PHP (II)
- Serie Raw: HTTP.                                 - Xbox. Inst alar Linux
- CURSO XML: DOM.                                  - SERIE RAW (9): MSN
                                                            RAW
                                                   - CURSO VISUAL BASIC: UN CLIENTE,
                                                     UNA NECESIDAD(III).
                                                   - PROGRAMACION BAJO LINUX: LENGUAJE C(III)




NÚMERO 17:
- Programación bajo linux: El sistema IPC(II)
- Curso de TCP/IP
- XBOX (III): Cambia el disco duro de tu XBOX
- Hackea Windows en 40 segundos
- Curso de PHP: Cadenas de texto
Hxc19
Hxc19

Más contenido relacionado

PDF
Hxc15
PDF
Hxc16
PDF
Hxc14
PDF
Hxc21
PDF
Hxc18
PDF
Hxc12
PDF
Hxc20
PDF
Hxc2
Hxc15
Hxc16
Hxc14
Hxc21
Hxc18
Hxc12
Hxc20
Hxc2

Destacado (7)

PPT
15 ejercitos de robots y zombies de red
PDF
Hxc11
PDF
Hxc22
PPTX
Atacando iphone a través de wireless y javascript botnet
PPT
BotNet
PPT
Botnets
PPT
Botnet 3J James Jara
15 ejercitos de robots y zombies de red
Hxc11
Hxc22
Atacando iphone a través de wireless y javascript botnet
BotNet
Botnets
Botnet 3J James Jara
Publicidad

Similar a Hxc19 (20)

PDF
Hxc17
PDF
Hxc13
PDF
Hxc23
PDF
Hxc9
PDF
Hxc10
PDF
Hxc8
PDF
Haxcra8.pdf
PDF
Hxc7
PDF
Hxc5
PDF
Hd magazine nro2
PDF
Hxc4
PDF
Haxcra5.pdf
PDF
Begins 09
PDF
Hxc1
PDF
Hxc1
PDF
Hd magazine No 3
PDF
Begins 06
PDF
Begins 06
Hxc17
Hxc13
Hxc23
Hxc9
Hxc10
Hxc8
Haxcra8.pdf
Hxc7
Hxc5
Hd magazine nro2
Hxc4
Haxcra5.pdf
Begins 09
Hxc1
Hxc1
Hd magazine No 3
Begins 06
Begins 06
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

Último (20)

PDF
Tips de Seguridad para evitar clonar sus claves del portal bancario.pdf
PPTX
Presentación PASANTIAS AuditorioOO..pptx
PPTX
Power Point Nicolás Carrasco (disertación Roblox).pptx
PDF
Estrategia de Apoyo de Daylin Castaño (5).pdf
PPTX
Presentacion de Alba Curso Auditores Internos ISO 19011
PDF
Influencia-del-uso-de-redes-sociales.pdf
PPT
El-Gobierno-Electrónico-En-El-Estado-Bolivia
PDF
PRESENTACIÓN GENERAL MIPIG - MODELO INTEGRADO DE PLANEACIÓN
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
DOCX
Contenido Fundamentos de comunicaciones Fibra Optica (1).docx
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PPTX
Presentación de Redes de Datos modelo osi
PDF
clase auditoria informatica 2025.........
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
PPTX
la-historia-de-la-medicina Edna Silva.pptx
PDF
CyberOps Associate - Cisco Networking Academy
PDF
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
PPTX
Propuesta BKP servidores con Acronis1.pptx
PDF
MANUAL de recursos humanos para ODOO.pdf
Tips de Seguridad para evitar clonar sus claves del portal bancario.pdf
Presentación PASANTIAS AuditorioOO..pptx
Power Point Nicolás Carrasco (disertación Roblox).pptx
Estrategia de Apoyo de Daylin Castaño (5).pdf
Presentacion de Alba Curso Auditores Internos ISO 19011
Influencia-del-uso-de-redes-sociales.pdf
El-Gobierno-Electrónico-En-El-Estado-Bolivia
PRESENTACIÓN GENERAL MIPIG - MODELO INTEGRADO DE PLANEACIÓN
Zarate Quispe Alex aldayir aplicaciones de internet .docx
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
Contenido Fundamentos de comunicaciones Fibra Optica (1).docx
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
Presentación de Redes de Datos modelo osi
clase auditoria informatica 2025.........
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
la-historia-de-la-medicina Edna Silva.pptx
CyberOps Associate - Cisco Networking Academy
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
Propuesta BKP servidores con Acronis1.pptx
MANUAL de recursos humanos para ODOO.pdf

Hxc19

  • 1. HACK X CRACK: HACKEANDO LAS RESTRICCIONES DE SEGURIDAD DE WINDOWS P P A A S S O O P A S Oa P A a a a a a a aa a a a a a 3 SERVIDORES ON LINE PARA TUS PRACTICAS DE HACK HACKEANDO EL CORAZON DE WINDOWS JUEGA LAS DIRECTIVAS DE SEGURIDAD GRATIS Y TE PRESENTAMOS COLAS DE MENSAJES Qué son los Nº 19 -- P.V.P. 4,5 EUROS 00019 8 414090 202756 LOS MEJORES ARTÍCULOS GRATIS EN NUESTRA WEB P C PA S O A PA S O : A P R E N D E A P R O G R A M A R S O C K E T S ! ! !
  • 3. 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 J. Sentís C.I.F: B43675701 PERE MARTELL Nº 20, 2º - 1ª E-mail contacto 43001 TARRAGONA (ESPAÑA) director@hackxcrack.com Director Editorial Diseño gráfico: I. SENTIS J. M. Velasco E-mail contacto director@editotrans.com E-mail contacto: Título de la publicación Los Cuadernos de HACK X CRACK. grafico@hackxcrack.com Nombre Comercial de la publicacíón PC PASO A PASO Redactores Web: www.hackxcrack.com AZIMUT, ROTEADO, FASTIC, MORDEA, FAUSTO, Dirección: PERE MARTELL Nº 20, 2º - 1ª. ENTROPIC, MEIDOR, HASHIMUIRA, BACKBONE, 43001 TARRAGONA (ESPAÑA) ZORTEMIUS, AK22, DORKAN, KMORK, MAILA, TITINA, SIMPSIM... ... ... ... ... ¿Quieres insertar publicidad en PC PASO A Contacto redactores PASO? Tenemos la mejor relación precio-difusión redactores@hackxcrack.com del mercado editorial en España. Contacta con nosotros!!! Colaboradores Mas de 130 personas: de España, de Brasil, de Director de Marketing Argentina, de Francia, de Alemania, de Japón y Sr. Miguel Mellado algún Estadounidense. Tfno. directo: 652 495 607 Tfno. oficina: 877 023 356 E-mail: miguel@editotrans.com E-mail contacto colaboradores@hackxcrack.com Imprime I.G. PRINTONE S.A. Tel 91 808 50 15 DISTRIBUCIÓN: SGEL, Avda. Valdeparra 29 (Pol. Ind.) 28018 ALCOBENDAS (MADRID) Tel 91 657 69 00 FAX 91 657 69 28 WEB: www.sgel.es TELÉFONO DE ATENCIÓN AL CLIENTE: 977 22 45 80 Petición de Números atrasados y Suscripciones (Srta. Genoveva) HORARIO DE ATENCIÓN: DE 9:30 A 13:30 (LUNES A VIERNES) © Copyright Editotrans S.L. NUMERO 19 -- PRINTED IN SPAIN PERIOCIDAD MENSUAL Deposito legal: B.26805-2002 Código EAN: 8414090202756
  • 4. EDITORIAL No hay mal que por bien no venga... Hace poco publicamos un artículo que fue criticado de forma muy positiva por nuestros lectores: Hackear Windows en 40 segundos. La verdad, ese tipo de artículos pertenecen al tipo “hackear sin saber”. 4 EDIT ORIAL Pero los lectores mandan y por mucho que nosotros nos 5 PR OGRAMA CION BA JO LINUX: C OLA DE MENS A JES esforcemos en ENSEÑAR y vosotros en aprender, debemos reconocer que también hay que divertirse, así que este 1 2 XB O X (V): JUG AR ONLINE GRATIS mes podrás leer otro de estos artículos. Esta vez crackearemos el regedit.exe (programa que utiliza Windows 16 CRACK EANDO LAS R ES TRICCIONES DE SEGURIDAD DE WINDOWS WINDOWS para acceder al registro), pero aprenderemos mucho más 28 CURSO DE SEGURID AD EN REDES - IDS que con el publicado anteriormente. 56 CURSO DE PHP: MANE JO DE SOCKET S Por primera vez trabajaremos con un desensamblador y un editor hexadecimal, y lo haremos sin grandes esfuerzos (prometido). Este mes hemos impregnado varios artículos de TCP/IP, 5 4 C OLAB ORA C ON NOSO TR OS pero no hay un artículo completo dedicado al tema porque nuestro colaborador encargado del curso ha tenido que 55 SER VIDOR DE HXC . MODO DE EMPLE O ausentarse por causas mayores. Tranquilos, el mes que viene estará de nuevo con nosotros. 63 BA J ATE NUESTR OS L OGOS Y MEL ODIAS 6 4 SUSCRIPCIONES Y no hay mal que por bien no venga, prepárate porque llega un nuevo curso MUY INTERESANTE. Te 65 NUMER OS ATRAS ADOS presentamos el SNORT. Si no sabes lo que es, ya puedes empezar a leer la revista :) Y no me despido sin antes hacer un comentario que quizás te venga muy bien si estás pensando en comprar un monitor TFT. Hace unos días tuve que aguantar perplejo como un vendedor de hardware intentaba vender un monitor TFT de 20 pulgadas con una resolución de 1280*1024. Un TFT de 20 pulgadas, entre otras cosas debe tener una resolución de 1600*1200. No exijas menos… lastima que en esta revista no tratamos temas de hardware… ¿a quien se le ocurre fabricar un 20 pulgadas a 1280*1024? Como mínimo es una tomadura de pelo. Bueno, que me extiendo demasiado. Gracias de nuevo a todos los colaboradores, a AZIMUT que está poniendo un poco de orden en el CAOS y a los moderadores del foro que hacen todo lo posible por mantener un espacio donde reunirse y resolver dudas. GRACIAS UNA VEZ MÁS.
  • 5. Programacion en gnu linux colas de mensajes el_chaman. Luis U. Rodriguez Paniagua - Intercambio de Información entre programas: Ya hemos tratado los semáforos y la memoria compartida. - Este mes le toca el turno a las "Colas de Mensajes". 1. Presentación También es posible hacer "tipos" de mensajes distintos, de forma que cada tipo de mensaje Las colas de mensajes, junto con los contiene una información distinta y va semáforos y la memoria compartida serán identificado por un entero. Por ejemplo, los los recursos que ponen a nuestra disposición mensajes de tipo 1 pueden contener el saldo los sistemas UNiX para que los programas de una cuenta de banco y el número de dicha puedan intercambiar información entre sí. cuenta, los de tipo 2 pueden contener el nombre de una sucursal bancaria y su calle, 2. Colas de Mensajes. etc. Una cola será una estructura de datos Los procesos luego pueden retirar mensajes gestionada por el núcleo, donde van a poder de la cola selectivamente por su tipo. Si un escribir o leer varios procesos. Los mecanismos proceso sólo está interesado en saldos de de sincronismo para que no se produzca cuentas, extraería únicamente mensajes de colisión serán responsabilidad del núcleo. tipo 1, etc. Ni que decir tiene que si tenemos varios procesos que leen de una cola, el tipo Obsérvese que en el número pasado, al de mensaje nos puede servir para que un manejar memoria compartida, el propio determinado tipo de mensajes sea sólo programador tenía que gestionar la sincronización entre los procesos que accedían atendido por un proceso concreto y el resto a la memoria compartida. En este caso, esto ignorado. ya no es así: Será el sistema (núcleo del Tras resaltar esto último, una pequeña S.O.) el encargado de realizar esta tarea, aclaración: Es posible hacer que un proceso pudiéndonos concentrar más en tareas de que lea de la cola pueda especificar que desea comunicación entre procesos que de leer mensajes independientemente de su tipo. concurrencia. El manejo de colas de mensajes permite que 2.1. Solitud de una Cola de dos procesos distintos sean capaces de Mensajes enviarse mensajes (estructuras de datos que serán tratadas como un todo indivisible) y de La primera operación que debemos aprender esta forma pueden intercambiar información. es la necesaria para solicitar una cola de El mecanismo para conseguirlo es el de una mensajes. La manera de hacer esto es cola de mensajes. Los procesos introducen mediante la función: mensajes en la cola y se van almacenando en ella. Cuando un proceso extrae un mensaje #include <sys/types.h> de la cola, extrae el primer mensaje que se #include <sys/ipc.h> introdujo y dicho mensaje se borra de la cola. #include <sys/shm.h> A esta forma de comportarse una cola, y lo que la define, se le conoce como FIFO (First int msgget(key_t key, int shmflg); Input, First Output, Primero en entrar, Primero Retorna: -1 en caso de error, o el identificador en Salir). de la cola creada en otro caso. PC PASO A PASO Nº 19 Página 5
  • 6. Programación bajo LiNUX - Colas de mensajes - Programación bajo LiNUX - Colas de mensajes El primer parámetro, key de tipo Clave, Para crear una cola de mensajes podemos emplear un funciona tal y como se explicó en anteriores código como el siguiente: números, siendo su objetivo el de proporcionar int msqid; al sistema un identificador común para los key_t clave; recursos IPC que están siendo utilizados por ... un grupo de procesos que acceden clave = ftok ("archivo",'M'); conjuntamente a un recurso IPC. if (( msqid = msgget(clave, IPC_CREAT | 0600 )) == -1) { Una vez obtenida la clave, se crea la cola de fprintf(stderr, " ERROR al crear cola de mensajesn"); mensajes. Para ello está la función mostrada } msgget. Con dicha función creamos la cola y .... nos devuelve un identificador para la misma. Si la cola correspondiente a la Clave key ya 2.2. Control de las colas de mensajes. estuviera creada, simplemente nos daría el Una vez que hemos creado una cola de mensajes, podemos identificador de la misma (siempre y cuando realizar diversas operaciones de control sobre dicha cola los parámetros no indiquen lo contrario). con el fin de establecer distintos atributos de la misma u El segundo parámetro son unos flags. Aunque obtener diversa información estadística. Estas operaciones hay más posibilidades, lo imprescindible es: de control las realizará la función msgctl. La declaración de esta función es: 9 bits menos significativos, son permisos #include <sys/types.h> de lectura/escritura/ejecución para #include <sys/ipc.h> propietario/grupo/otros, al igual que los #include <sys/msg.h> ficheros. Para obtener una cola con todos los permisos para todo el mundo, debemos int msgctl(int msqid, int cmd, struct msqid_ds *buf); poner como parte de los flags el número 0777. Retorna 0 en caso de éxito y -1 en caso de error. Es importante el cero delante, para que el msqid es el identificador de cola sobre el que vamos a número se interprete en octal y queden los operar. bits en su sitio (En C, cualquier número que empiece por cero, se considera octal). El cmd es la operación de control que queremos realizar. Este parámetro puede tomar los siguientes valores: de ejecución no tiene sentido y se ignora. IPC_STAT Lee el estado de la estructura de control de IPC_CREAT. Junto con los bits anteriores, la cola y lo devuelve a través de la zona de memoria este bit indica si se debe crear la cola en apuntada por *buf. La estructura de esta zona de memoria caso de que no exista. es: /* Structure of record for one message inside the kernel. Si está puesto, la cola se creará si no lo The type `struct msg' is opaque. */ está ya y se devolverá el identificador. Si struct msqid_ds { no está puesto, se intentará obtener el struct ipc_perm msg_perm; /* structure describing operation permission */ identificador y se obtendrá un error si no __time_t msg_stime; /* time of last msgsnd command */ está ya creada. unsigned long int __unused1; __time_t msg_rtime; /* time of last msgrcv command */ En resumen, los flags deberían ser algo así unsigned long int __unused2; como 0777 | IPC_CREAT __time_t msg_ctime; /* time of last change */ unsigned long int __unused3; El identificador devuelto por msgget será unsigned long int __msg_cbytes; /* current number of bytes on queue */ msgqnum_t msg_qnum; /* number of messages currently on queue */ heredado por los procesos descendientes del msglen_t msg_qbytes; /* max number of bytes allowed on queue */ actual. __pid_t msg_lspid; /* pid of last msgsnd() */ Página 6 PC PASO A PASO Nº 19
  • 7. Programación bajo LiNUX - Colas de mensajes - Programación bajo LiNUX - Colas de mensajes __pid_t msg_lrpid; /* pid of last msgrcv() */ msgtyp sólo aparece en la llamada de lectura unsigned long int __unused4; y especifica el tipo de mensaje que queremos unsigned long int __unused5; }; leer. Puede tomar los siguientes valores: struct ipc_perm { key_t key; msgtyp = 0 Leer el primer mensaje que ushort uid; /* owner euid and egid */ haya en la cola. ushort gid; ushort cuid; /* creator euid and egid */ msgtyp > 0 Leer el primer mensaje de tipo ushort cgid; ushort mode; /* lower 9 bits of access modes */ msgtyp que haya en la cola. ushort seq; /* sequence number */ }; msgtyp < 0 Leer el primer mensaje cumpla que su tipo es menor o igual al valor absoluto IPC_SET Inicializa algunos de los campos de la estructura de msgtyp y a la vez sea el más pequeño de control de la cola. El valor de estos campos se toma de los que hay. de la estructura referenciada por *buf. msgflg es un mapa de bits que tiene distinto IPC_RMID Elimina el sistema de cola de mensajes significado dependiendo de que estemos asociado al identificador msqid. Si la cola está siendo utilizando la función msgsnd o msgrcv: usada por varios procesos, no se elimina hasta que todos los procesos liberen la cola. Para el caso de escritura en cola (msgsnd), si la cola está llena: 2.3. Operaciones con colas de mensajes IPC_NOWAIT: Si activamos este bit, la Para poder usar una cola de mensajes, las operaciones llamada de a msgsnd devolverá el control básicas que realizaremos serán escribir y leer mensajes. inmediatamente retornando -1. Para realizar estas operaciones disponemos respectivamente de las funciones msgsnd y msgrcv: IPC_NOWAIT: Si no activamos este bit, el proceso suspende su ejecución hasta #include <sys/types.h> que haya espacio libre disponible en la #include <sys/ipc.h> cola.. #include <sys/msg.h> Para el caso de lectura desde la cola int msgsnd(int msqid, struct msgbuf *msgp, size_t msgsz, int msgflg); (msgrcv), si la cola está vacía: ssize_t msgrcv(int msqid, struct msgbuf *msgp, size_t msgsz, long msgtyp, int msgflg); IPC_NOWAIT: Si activamos este bit, la llamada de a msgsnd devolverá el control En ambas funciones msqid se corresponde al identificador inmediatamente retornando -1. de la cola sobre la que vamos a operar. IPC_NOWAIT: Si no activamos este bit, msgp es un puntero que señala la zona de memoria donde el proceso suspende su ejecución hasta están o donde queremos recibir los datos que se enviarán que haya un mensaje del tipo disponible o leerán de la cola. La composición de esta zona de memoria en la cola. es definida por el usuario mediante una estructura de datos. La única restricción que se impone es que el primer En el caso de que todo funcione correctamente, campo sea de tipo long, siendo su funcionalidad la de msgsnd devuelve 0 y msgrcv el número de identificar el tipo de mensaje. bytes recibidos sin incluir los bytes del tipo de mensaje. msgsz será el tamaño en bytes del mensaje que queramos enviar o recibid. Ojo: En este tamaño no se incluyen los Veamos cuales serían las líneas de código bits que ocupa el campo long antes descrito (el tipo de necesarias para enviar y recibir un mensaje mensaje). de tipo 1 compuesto de 20 caracteres: PC PASO A PASO Nº 19 Página 7
  • 8. Programación bajo LiNUX - Colas de mensajes - Programación bajo LiNUX - Colas de mensajes int msqid; simple archivo binario que deberemos especificar por línea struct de comandos cuando arranquemos el gestor y sobre el { que escribirá y leerá directamente. long tipo; char cadena[20]; }mensaje; Para comunicarse con el gestor se utilizarán dos colas: Una llamada cliente-gestor será la empleada para que los /* Debemos de quitar el tamaño del tipo */ clientes envíen mensajes al gestor, y otra llamada gestor- int longitud = sizeof(mensaje) - sizeof(mensaje.tipo); clientes para que el gestor se comunique con los clientes. .... Este funcionamiento se muestra en el siguiente esquema: /* Envío del mensaje */ Archivo de definición de tipos y constantes (datos.h): mensaje.tipo=-1; strcpy(mensaje.cadena,2HOLA"); if(msgsnd(msqid, &mensaje, longitud, 0)==-1) /* { * FICHERO: datos.h /* error */ * } * DESCRIPCI~N: .... * Fichero de cabecera com~n para los clientes y DBM de la base de datos. /* Recepción del mensaje */ * if(msgrcv(msqid, &mensaje, longitud,1, 0)==-1) * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * */ { #ifndef _DATOS_H_ /* error */ #define _DATOS_H_ } /* Creamos un tipo de datos para almacenar los datos 2.4. Ejemplo de uso * de una persona. */ El presente ejemplo está basado en uno typedef struct similar sacado del libro "UNiX, programación { char nombre[61]; avanzada, Ed. Ra-Ma" de Fco. Manuel char direccion[121]; Márquez. La razón de ello, como pronto se char telefono[11]; verá, es que es una aplicación bastante }persona ; completa y a la vez sencilla, utilizando al máximo las capacidades del tema expuesto /* Creamos un tipo de datos para almacenar los datos hoy. * de un mensaje. */ typedef struct Este ejemplo está disponible de manera { gratuita para el público en la página de la long pid; editorial Ra-Ma. Me he permitido modificar int orden; union partes del código y añadir comentarios para { que dicho ejemplo sea coherente con los visto persona una_persona; en el presente curso, manteniendo en }datos; cualquier caso el interés didáctico que el autor }mensaje; original supo plasmar en él. #define LONGITUD (sizeof(mensaje) -sizeof(long)) El ejemplo pretende ilustrar la construcción de un DBM (Data Base Manager) de manera /* Comandos para el DBM */ que pueda gestionar los distintas tareas que #define LISTAR 1 le mandan hacer distintos usuarios (programas #define ANADIR 2 clientes) de una minimalista base de datos. #define FIN 3 #define ERROR 4 Dicho gestor se comunicará directamente con la base de datos. En nuestro caso será un #define FICHERO_CLAVE "datos.h" Página 8 PC PASO A PASO Nº 19
  • 9. Programación bajo LiNUX - Colas de mensajes - Programación bajo LiNUX - Colas de mensajes #define CLAVE_CLIENTE_GESTOR 'K' */ #define CLAVE_GESTOR_CLIENTE 'L' msgrcv(cola_cg, &un_mensaje, LONGITUD, 0, 0); #endif /* Una vez le~do un mensaje, tendremos que atender a lo que * nos manda hacer*/ Gestor (gestor.c): /* Listar la base de datos que estar~ almacenada en el fichero * que hemos pasado por l~nea de comandos */ #include <stdio.h> if(un_mensaje.orden == LISTAR) #include <sys/types.h> { #include <sys/ipc.h> /* Si el fichero de base de datos no se puede leer...*/ #include <sys/msg.h> if((base_de_datos=fopen(argv[1],"r"))==NULL) #include "datos.h" { /* Imprimimos en la salida est~ndar de error int main(int argc,char *argv[]) * que ha ocurrido esto { */ int cola_cg, cola_gc, funcionando=1; fprintf(stderr,"GESTOR listar: error al abrir el fichero de bases de datos"); mensaje un_mensaje; /* Informamos al cliente de lo que ha sucedido */ key_t clave; un_mensaje.orden=ERROR; FILE *base_de_datos; msgsnd(cola_gc, &un_mensaje, LONGITUD, 0); } /* Como este programa recibe datos desde la else * l~nea de comandos, tenemos que verificarlos { */ /* Realizamos un listado, enviando al cliente todos if(argc != 2) * los registros de la base de datos { */ fprintf(stderr,"Forma de uso: %s fichero.n",argv[0]); while(fread(&un_mensaje.datos.una_persona, sizeof(persona), 1, base_de_datos)==1) return -1; { } msgsnd(cola_gc, &un_mensaje, LONGITUD, 0); } fclose(base_de_datos); /* Creaci~n de las colas de mensajes (ver documentaci~n /*Preparamos un mensaje especial para envi~rselo * adjunta en el art~culo) * al cliente con el fin de indicarle que se ha */ terminado el listado. */ clave=ftok(FICHERO_CLAVE, CLAVE_CLIENTE_GESTOR); un_mensaje.orden=FIN; if((cola_cg=msgget(clave,IPC_CREAT|0666))==-1) msgsnd(cola_gc, &un_mensaje, LONGITUD, 0); { } fprintf(stderr,"Error al crear la cola CLIENTE-SERVIDOR"); } return -1; else } { clave=ftok(FICHERO_CLAVE, CLAVE_GESTOR_CLIENTE); if(un_mensaje.orden==ANADIR) if((cola_gc=msgget(clave,IPC_CREAT|0666))==-1) { { if( ( base_de_datos=fopen(argv[1],"a") )==NULL ){ fprintf(stderr,"GESTOR a~adir: error al abrir el fichero de bases de datosn"); fprintf(stderr,"Error al crear la cola SERVIDOR-CLIENTE"); return -1; un_mensaje.orden=ERROR; msgsnd(cola_gc, &un_mensaje, LONGITUD, 0); } } else { /* fwrite(&un_mensaje.datos.una_persona, sizeof(persona),1,base_de_datos); * Comienza el servicio del GESTOR. Nos limitamos a mirar si hay fclose(base_de_datos); * cosas que leer de la cola CLIENTE-SERVIDOR y si es as~ un_mensaje.orden=FIN; * actuaremos en consecuencia. msgsnd(cola_gc,&un_mensaje,LONGITUD,0); */ } while(funcionando) /* Este proceso dura indefinidamente */ } { else /* Obs~rvese que no activamos el bit el bit IPC_NOWAIT { * Esto quiere decir que si no hay nada que leer de la cola if(un_mensaje.orden==FIN) * esperamos a que lo haya. { PC PASO A PASO Nº 19 Página 9
  • 10. Programación bajo LiNUX - Colas de mensajes - Programación bajo LiNUX - Colas de mensajes /* Tenemos que apagar todo esto */ printf("tOrden: "); msgctl(cola_gc,IPC_RMID,NULL); scanf("%s",minibuf); msgctl(cola_cg,IPC_RMID,NULL); funcionando=0; opcion=minibuf[0]; printf("n Programa Gestor parado a petici~n del clienten"); } if(opcion=='l') else { { /* Esta orden producir~ una respuesta por parte /* ~una opci~n desconocida? */ * del servidor. Nos preparamos para recibir datos. un_mensaje.orden=ERROR; */ msgsnd(cola_gc,&un_mensaje, LONGITUD,0); recibir=SI; } un_mensaje.orden = LISTAR; } msgsnd(cola_cg,&un_mensaje, LONGITUD, 0); } } } else return 0; { } if(opcion=='a') { Cliente (cliente.c): recibir=SI; printf("tNombre: "); #include <stdio.h> scanf("%s",un_mensaje.datos.una_persona.nombre); #include <sys/types.h> printf("tDirecci~n: "); #include <sys/ipc.h> scanf("%s",un_mensaje.datos.una_persona.direccion); #include <sys/msg.h> printf("tTel~fono: "); #include "datos.h" scanf("%s",un_mensaje.datos.una_persona.telefono); un_mensaje.orden=ANADIR; int main(int argc, char *argv[]) msgsnd(cola_cg,&un_mensaje,LONGITUD,0); { } int cola_gc, cola_cg, pid; else char opcion, minibuf[2]; { mensaje un_mensaje; if(opcion=='f') key_t clave; { enum {NO, SI} recibir = NO; recibir=NO; un_mensaje.orden=FIN; msgsnd(cola_cg, &un_mensaje, LONGITUD, 0); /* Creaci~n de las colas de mensajes */ } clave = ftok(FICHERO_CLAVE, CLAVE_CLIENTE_GESTOR); else if((cola_cg=msgget(clave,0666))==-1) { { if(opcion=='s') fprintf(stderr,"CLIENTE %i: error creando cola_cg",getpid()); { return -1; return 0; } } clave = ftok(FICHERO_CLAVE, CLAVE_GESTOR_CLIENTE); else if((cola_gc=msgget(clave,0666))==-1) { { recibir = NO; fprintf(stderr,"CLIENTE %i: error creando cola_gc",getpid()); printf("Opci~n [%c] err~nean", opcion); return -1; } } } } un_mensaje.pid = pid = getpid(); } while(1) { /* * Si nos hemos preparado a recibir algo, tenemos que printf("Ordenes:n"); * mirar si en la cola hay algo para nuestro cliente printf("l - Listarn"); */ printf("a - A~adirn"); if(recibir==SI) printf("f - Finn"); { printf("s -Salirn"); do Página 10 PC PASO A PASO Nº 19
  • 11. Programación bajo LiNUX - Colas de mensajes - Programación bajo LiNUX - Colas de mensajes { { /* printf("n Mensaje de error recibido desde el servidorn"); * F~jense en que ahora s~lo queremos }else * leer los mensajes del tipo de nuestro { * cliente, por ello pasamomos como par~metro el PID if(un_mensaje.orden==FIN) */ { msgrcv(cola_gc, &un_mensaje, LONGITUD, pid, 0); printf("----n"); if(un_mensaje.orden==LISTAR) } { else /* Hay que imprimir esto */ { printf("n Registro: %s %s %s n", un_mensaje.datos.una_persona.nombre, printf("Se recibi~ un mensaje desconocidon"); un_mensaje.datos.una_persona.direccion, } un_mensaje.datos.una_persona.telefono); } } } else }while((un_mensaje.orden!=FIN) && (un_mensaje.orden!=ERROR)); { } if(un_mensaje.orden==ERROR) } }
  • 12. Xbox Life V Jugando Online Gratis Por Alfonso Menkel - ¿Quieres jugar GRATIS por Internet con la XBOX? - Descubre el XBCONNECT - Crea Partidas por Internet e Invita a tus Amigos. Saludos compañeros, aquí estamos un mes Mientras está bajando el programa, nos fijamos más. Este mes os voy a enseñar a jugar en el lado derecho de la Web y veremos los online GRATIS, pero quiero que quede claro juegos compatibles con este método. que no vamos a piratear el servicio XBOX LIVE, sino que vamos a usar un programa Como vemos en la lista, todos los juegos alternativo. No es tan bueno como el Live, tienen algo en común: todos tienen la pero está muy bien. posibilidad de jugar en red local. Pues gracias a eso y al Xbconnect podemos hacer eso Lo que necesitamos: m i s m o, p e r o a t rav é s d e I n t e r n e t . Consola Xbox -El mod chip es Ahora que ya sabemos cómo funciona el opcional, pero es necesario si queréis sistema, vamos a instalar el programa: jugar con copias de seguridad ;) PC con tarjeta de red o Router. La instalación es muy sencilla, damos a Next hasta que se acabe la instalación :) Conexión de banda ancha (ya sea ADSL o Cable). Arrancamos el programa y veremos la primera XBCONNECT ultima versión. pantalla. Un juego compatible con este método. Como ya he explicado en los números anteriores, hace falta conectividad de Xbox a PC, sin esto no será posible jugar online. Nos vamos a la Web oficial de Xbconnect ( h t t p : / / w w w. x b c o n n e c t . c o m ) y n o s descargamos la última versión, lo siento por los usuarios de linux, pero de momento no esta el programa para el SO del Pingüino. El programa también encontrarás en la Web de la revista (www.hackxcrack.com), en la sección Artículos liberados y Descargas ! Hay dos versiones del ... Pues nada, pinchamos en el OK. Hay dos versiones del programa, el Normal (gratis) y el PRO Acto seguido veremos la siguiente pantalla (de pago), la verdad es que no sé qué diferencia hay si pagas por donde se nos pregunta en perfecto Ingles si el pro, pero la versión normal va muy bien. d e s e a m o s c r e a r u n a n u e va c u e n t a . Página 12 PC PASO A PASO Nº 19
  • 13. Xbox Live - Jugando online grátis - Xbox Live - Jugando online grátis - Xbox Live nos pide que nos tomemos unos segundos para actualizar nuestro perfil… … llegando a la siguiente pantalla. Si no tenemos una cuenta creada anteriormente, pulsaremos el botón YES. Acto seguido nos saldrá un formulario que deberemos cumplimentar. Lo único que debemos hacer ahora es seleccionar los juegos que tenemos, aceptamos y llegaremos a la pantalla principal del programa. Una vez rellenamos los datos que nos pide pulsaremos el botón NEXT. Nos aparecerán un par de ventanitas de confirmación y finalmente llegaremos a la siguiente imagen. Ahora debemos conectar la consola al PC mediante el cable RJ45 ! Si la conexión... Si la conexión es directa de la consola al PC, EL CABLE RJ-45 debe ser cruzado. Si entre el PC y la Xbox hay un swich, Hub o Router, el cable Si hemos sido originales, no habrá ningún debe ser no cruzado. problema con el alta de usuario, pero si el Si no tienes ni idea de cables y esto te suena muy raro, no tengas vergüenza. Nick estuviese ocupado ya, deberemos elegir Te aseguramos que si vas a una tienda y pides un “Cable de Red RJ-45 otro hasta que lo acepte. no Cruzado” o un “Cable de Red RJ-45 Cruzado”, te entenderán perfectamente. Introducimos el Nick y Pass que acabamos No siempre fue así, hace algunos años (bastantes), si pedías “eso” te miraban mal :) de crear y pinchamos en Login. El programa PC PASO A PASO Nº 19 Página 13
  • 14. Xbox Live - Jugando online grátis - Xbox Live - Jugando online grátis - Xbox Live Con esto claro, debemos pinchar en el Menu Ahora pinchamos en OK. Options --> General Options. Este programa tiene opción de chat, para así organizar mejor las partidas. Si queremos podemos conectarnos al Chat, basta con pulsar el botón de la esquina inferior derecha (Connect Chat). Podemos, o bien jugar una partida creada, o bien crear una partida y esperar a que se junte la peña. Veamos las dos formas. JUGANDO UNA PARTIDA CREADA: En la parte superior vemos todas las partidas que hay en juego, seleccionamos una que nos guste, pinchamos dos veces encima de la partida que queremos jugar. Ahora en la consola ponemos el juego al que queramos jugar. En el juego debemos ir a INTERCONEXION o JUGAR EN RED y BUSCAR ! Los juegos ... PARTIDA. Los juegos vienen en varios formatos dependiendo de su Ahora en el PC pinchamos el botón FIND procedencia. El formato PAL es la europea, NTSC Japonesa y (puedes verlo en la imagen anterior) y, si Americana. todo está configurado bien, nos encontrará la tarjeta de red del PC, y la consola Xbox. Para poder jugar una partida online, debemos tener el mismo formato que el juego creado. Fijaos que arriba del todo, en el lado derecho, pone “My Xbox Status FOUND”, hasta que este estatus no esté en Found, no se podrá jugar online. ! Los problemas... Los problemas más frecuentes a la hora de encontrar la consola son: Que tengas un cortafuegos y esto no permita el buen funcionamiento. Para solucionar esto, configuramos el cortafuegos o lo desactivamos. Que el cable no este bien o no sea cruzado cuando debe serlo, o viceversa. El juego debe estar buscando partida, cuando el tipo que haya creado la partida la inicie, Que no tengáis la conexión de Internet compartida. vais a la consola y a jugar. Página 14 PC PASO A PASO Nº 19
  • 15. Xbox Live - Jugando online grátis - Xbox Live - Jugando online grátis - Xbox Live CREAR PARTIDAS: Espero veros jugando online y poder retaros a unas partidas, nos lo pasaremos muy bien. Pinchamos en HOST El mes que viene meteremos varios juegos en un mismo DVD con un menú personalizado por nosotros mismos. Hasta el mes que viene. Salu2. PD. Este mes quiero agradecerle a mi novia Cristina su gran labor a la hora de corregirme Seleccionamos el juego, la cantidad de los artículos, MUCHAS GRACIAS ERES LA jugadores que permitimos, la contraseña es MEJOR :) opcional, la descripción del formato (NTSC o PAL), la cantidad de jugadores que van a jugar en tu Xbox y el mensaje de bienvenida. Esperamos a que entre la gente a jugar y cuando nos guste, nos vamos a la consola e iniciamos la partida. Hay algunas opciones que no he explicado porque son muy sencillas y os enteraréis fácilmente de cómo son estas cosas. Hay otro programa que se llama Xlink que también es muy bueno y se configura de la misma forma. También podéis encontrar estos programas para otras consolas, como Game Cube y PS2. PC PASO A PASO Nº 19 Página 15
  • 16. Crackeando las restricciones de seguridad de Windows por Hexborg Estáis en el ordenador del trabajo. O en el de clase. O en un cyber. Os apetece hackear. Queréis instalar un programa que os gusta o que necesitáis. Os ponéis manos a la obra y entonces... ¡Horror! ¡Los programas no se instalan! ¡No podéis ejecutar el editor del registro! ¡No podéis lanzar el panel de control! ¡El menú de contexto no funciona! ¡Esto es un infierno! El administrador, para que no toquetees el sistema, ha deshabilitado la mayoría de opciones!!! ¿Y ahora qué hacemos? Pues leer este artículo ;) 0. ADVERTENCIA!!! El truco está en que es el propio programa el que comprueba si esos No empieces a hacer este ejercicio “a lo valores existen en el registro. Aquí loco”. Antes léelo completo y decide si está el punto débil: si hacemos que vas a hacerlo o no. Ni la editorial ni el el programa no compruebe nada, la autor de este artículo se hace responsable restricción será inútil :) del mal uso de las explicaciones expuestas Vamos a verlo con un ejemplo. Vamos a ni de los perjuicios que puedas causar hacer que el programa regedit (un en tu ordenador (o en el de terceros). componente de Windows que sirve precisamente para modificar el Registro Venga, resumiendo, que las pruebas en de Windows) no pueda ser ejecutado y casa y con gaseosa. A estas alturas ya de esa forma “nadie” pueda cambiar deberías tener un Sistema Operativo “de nuestro registro de Windows. Esto lo que pruebas” para hacer los ejercicios que hacen algunos administradores para que te proponemos :) no puedas “tocarles el Windows”. -- -> Y después “eludiremos” esta 1. ¿Qué son las restricciones protección <--- de seguridad? Abrid el regedit. Ya sabéis, no está en Windows permite controlar la ejecución el “menú de programas”, así que usad de algunos de sus programas y --> Botón Inicio --> Ejecutar (escribimos componentes colocando ciertos valores “regedit” y pulsamos aceptar). en el famoso “Registro de Windows”. Cuando ejecutamos un programa, este comprueba primero los valores del “Registro de Windows”. Si en el registro existe “tal valor”, el programa se negará a ejecutarse y, si existe “tal otro”, se ejecutará sin novedad. En esto consisten las restricciones de seguridad. Se trata de un sistema poco efectivo que resulta muy sencillo de saltar. Página 16 PC PASO A PASO Nº 19
  • 17. Regedit - consigue libertad de acción - Regedit - consigue libertad de acción Ahora buscad la clave HKEY_CURRENT_USERSOFTWARE En cuanto selecciones la opción Clave (pulsando con el MicrosoftWindowsCurrentVersi botón izquierdo del Mouse), verás una nueva Clave (con onPoliciesSystem. un nombre tipo “Clave nueva #1”). Pulsando sobre esta nueva Clave (con el botón derecho del Mouse) selecciona la opción Cambiar Nombre y dale el nombre System. Ojo!!! He dicho System, no system. ! Puede ser que... Puede ser que en tu Windows solo llegues hasta HKEY_CURRENT_USERSOFTWAREMicrosoftWindo wsCurrentVersionPolicies y no encuentres la clave System (porque simplemente no existe). Muy bien, pues ya tenemos nuestra Clave System :) Ningún problema, sitúa el Mouse sobre Policies, pulsa el botón derecho, aparecerán varias opciones, selecciona En esa clave, crearemos un nuevo valor Nuevo ---> Clave (como en la imagen) de tipo dword, que se llame DisableRegistryTools y le daremos valor 1. Venga, que no es complicado: Coloca el Mouse sobre la Clave System y pulsa el botón derecho. Selecciona (pulsa con el botón izquierdo del Mouse) la opción Nuevo Valor --> Valor DWORD PC PASO A PASO Nº 19 Página 17
  • 18. Regedit - consigue libertad de acción - Regedit - consigue libertad de acción En la ventana de la derecha podrás ver que se ha creado un nuevo valor llamado (por defecto) Nuevo valor #1 Cámbiale el nombre por DisableRegistryTools. Esto se consigue pulsando con el botón derecho del Mouse sobre Nuevo valor #1 y seleccionando la opción Cambiar Nombre. Acto seguido Pues venga, en la nueva pantalla escribes el nombre que queremos que aparecerá cambiaremos el 0 darle, ya sabes, por un 1, pulsaremos aceptar y DisableRegistryTools. listo!!! Esto es lo que nos quedará: ¿Ahora que? ¿Qué hemos hecho? Ya puedes cerrar el regedit. Con esto lo que hemos hecho es impedir que el usuario actual, o sea, nosotros, podamos ejecutar una herramienta de edición del registro. Usease, el regedit. Si le diéramos a DisableRegistryTools el valor 0 o lo borrásemos del registro, podríamos volver P o r d e f e c t o , a ejecutar el regedit sin problemas. DisableRegistryTools tiene el valor 0 (es decir, inactivo). Vamos Vamos a probarlo. Ejecutad el regedit a darle el valor 1 (es decir, como antes y fijaos qué mensaje más activado). En la ventana derecha, chulo nos sale diciendo que el pulsamos el botón derecho del administrador ha deshabilitado la M o u s e s o b r e modificación del registro. En esto consisten DisableRegistryTools y las restricciones de seguridad de Windows seleccionamos la opción Modificar basadas en el registro. Página 18 PC PASO A PASO Nº 19
  • 19. Regedit - consigue libertad de acción - Regedit - consigue libertad de acción es tan complicado como parece. Un programa, como ya debéis saber, no es más que una secuencia de instrucciones que se ejecutan en serie para llegar a realizar la tarea que se le ha encomendado. Cuando un programador escribe un Al regedit no le programa, lo hace en un lenguaje de alto caigo bien. Alguien podría pensar que la forma de nivel como C, PASCAL, BASIC o cualquier solucionar esto es muy simple: sólo hay otro de los muchos que existen. Estos que borrar las claves del registro que lenguajes se llaman “de alto nivel” porque nos están molestando y se acabó el están próximos a la forma de pensar de las personas. Es decir, tienen instrucciones problema. Pero, ¿qué pasa si estamos escritas en un lenguaje “similar” al inglés ante un Windows de la familia de NT, en que se pueden entender fácilmente al el que las claves del registro tienen leerlas. permisos, y no tenemos permiso para También existen los lenguajes de bajo modificarlas? Pues que habrá que pasar nivel, que son lenguajes cercanos al a palabras mayores ;) funcionamiento interno del ordenador. Están formados por instrucciones muy 2. ¿Qué hacemos ahora? básicas que resultan muy sencillas de ejecutar. Bueno, ya podemos volver a ejecutar el Uno de estos lenguajes es el que se llama regedit para borrar la clave que hemos “lenguaje máquina” o “código creado. Un momento... No podemos máquina”. Este lenguaje es el único que ejecutar el regedit porque la clave el microprocesador entiende directamente. no nos lo permite!!!, y no podemos Todos los demás deben ser traducidos a lenguaje máquina para poder ser Esto es código borrar la clave sin ejecutar el regedit. máquina. Libera tu ejecutados. ¡Houston, tenemos un problema! mente. Pero tranquilos, que no cunda el pánico. Vamos a solucionarlo. Antes que nada quiero advertiros de que el regedit con el que voy a trabajar es la versión de Windows XP. Si usáis otra versión, podéis encontrar diferencias, pero todo lo que digo aquí os sirve. Lo primero que hay que hacer en estos casos es tomar nota del mensaje que nos aparece al ejecutar el programa. Lo recordáis, ¿verdad? : “El administrador ha deshabilitado la modificación del Registro“. Ese mensaje es el que nos permitirá encontrar la instrucción que hay que modificar para conseguir nuestro objetivo, tranquilo, que ahora lo explicamos :) ¿Cómo vamos a hacer esto? Pues no PC PASO A PASO Nº 19 Página 19
  • 20. Regedit - consigue libertad de acción - Regedit - consigue libertad de acción Recapitulando, cuando un programador La gracia está en que existe una escribe un programa, lo escribe en un equivalencia entre las instrucciones del lenguaje de alto nivel. Luego lo traduce ensamblador y las del lenguaje máquina, a lenguaje máquina usando un programa es decir, se puede traducir directamente llamado compilador o ensamblador de lenguaje máquina a ensamblador y dependiendo de que el lenguaje sea de viceversa. alto o de bajo nivel y, tras un proceso Esta característica muy especial y no la que no me corresponde explicar aquí (ya tienen otros lenguajes, en los que es muy ha sido explicado en anteriores números fácil traducir del lenguaje que estáis de esta revista), acaba obteniendo un usando a lenguaje máquina, pero es muy ejecutable (por ejemplo el típico archivo difícil hacer el proceso inverso. loquesea.exe). De manera que lo que necesitamos es un De manera que un ejecutable no es ni programa que traduzca de lenguaje más ni menos que una serie de máquina a lenguaje ensamblador y nos instrucciones traducidas a lenguaje permita ver así el ejecutable. Este máquina. Si conocemos el lenguaje programa se llama desensamblador, y máquina y podemos leer y modificar estas nosotros utilizaremos el W32Dasm, que instrucciones, entonces seremos capaces es uno de los mejores desensambladores de entender lo que hace el programa y que existen. cambiarlo a nuestro gusto. Esto que parece muy sencillo en realidad 3. Manos a la obra puede ser terriblemente complicado. El problema es que el lenguaje máquina Antes que nada, pasaremos por está formado por números. Esos números www.hackxcrack.com, iremos a la sección se agrupan en varios grupos y cada grupo “Artículos Liberados y Descargas”, de números es una instrucción con sus entraremos en el número 19 y nos parámetros y todo. descargaremos el programa W32Dasm. Si miráis un programa en lenguaje Nada mas descargarlo ya puedes ejecutarlo -no necesita instalarse :)-. máquina, cosa que se puede hacer abriendo un ejecutable con un editor hexadecimal, lo único que veréis será un montón de números en hexadecimal. A ver quién es el guapo que entiende algo en ese galimatías que parece el código de matrix. Pues hay gente que es capaz de hacerlo, os lo aseguro, pero nosotros no lo vamos a necesitar (menos mal). La solución es usar otro lenguaje llamado “lenguaje ensamblador”. Este es otro lenguaje de bajo nivel que, a diferencia Ahora creamos una carpeta en C: del lenguaje máquina, está formado por llamada, por ejemplo, loveasm. palabras que se pueden entender. Buscamos en nuestro PC el archivo Página 20 PC PASO A PASO Nº 19
  • 21. Regedit - consigue libertad de acción - Regedit - consigue libertad de acción regedit.exe (normalmente estará en C:Windows) y lo copiamos (he dicho copiar, no mover) en C:loveasm. Vamos a modificar dicho archivo, por lo tanto modificaremos nuestra copia, la que hemos copiado en c:loveasm. Ahora nos vamos al W32Dasm, Menu Disassembler --> Open File to Dissasemble y seleccionamos c:loveasmregedit.exe ¿Qué es eso de cadenas y referencias a Desensamblado del regedit. Más adelante cadenas? Por cadenas me refiero a llegaremos a cadenas de caracteres, es decir, mensajes entenderlo casi todo. u otros textos que el programa necesita utilizar mientras se está ejecutando. Y las referencias a cadenas son instrucciones que hacen referencia a esas cadenas. Pongamos un ejemplo. Supongamos que un programador quiere proteger un Inmediatamente, el W32Dasm comenzará programa para que no funcione después a desensamblar el fichero. Cuando haya de cierto tiempo. Podría escribir algo como terminado, nos encontraremos ante una esto: (Lo voy a poner en pseudos-código pantalla que nos mostrará todas las para que todo el mundo lo entienda, sin interioridades del ejecutable. Como veis tener que conocer ningún lenguaje de no sólo hay instrucciones sino también programación): datos, recursos de Windows, referencias a librerías y varias cosas que el programa Si el tiempo ha expirado necesita para funcionar. Entonces Mostrar “Se acabó el asunto, colega” Como ya os he dicho antes, el mensaje Terminar el programa Sino que nos muestra el regedit cuando se Resto del programa niega a ejecutarse será crucial para Fin crackearlo. El W32Dasm nos permite ver las cadenas de un ejecutable o buscar Aquí aparece una cadena: “Se acabó el en el listado las referencias a dichas asunto, colega”. Y una referencia a la cadenas. cadena en la instrucción “mostrar”, porque PC PASO A PASO Nº 19 Página 21
  • 22. Regedit - consigue libertad de acción - Regedit - consigue libertad de acción esa instrucción utiliza la cadena para y veremos una ventana que nos muestra mostrarla en la pantalla. La cadena estará una lista de las cadenas que el regedit guardada en algún lugar de la memoria utiliza internamente. Si nos fijamos un (...o del ejecutable) y la instrucción poco, abajo del todo está la nuestra (si “mostrar” tomará como parámetro la no la veis, darle un poco para abajo), dirección de memoria en la que está la cadena. Ésa es la referencia. De esta manera, si en otro lugar del programa necesita utilizar la misma cadena, no es necesario que la guarde dos veces en la memoria, simplemente volverá a colocar la dirección de memoria en la que está y, de esta manera, habrá otra referencia a la misma cadena. De modo que, en nuestro caso, tenemos una cadena. Si buscamos las referencias a esa cadena, encontraremos todas las instrucciones que utilizan esa cadena para algo. ¿Y de qué nos va a servir eso? Si os fijáis en el pseudo-código que he puesto más Así que hacemos doble click sobre ella arriba, veréis que justo encima de la y aparecemos en una instrucción en medio instrucción que utiliza la cadena hay un del listado ensamblador del regedit. Si “si”. ¿Qué pasaría si quitásemos ese “si” hay varias referencias a la cadena, cada e hiciésemos que pasara directamente vez que hagamos doble click, al “resto del programa”? Pues que se apareceremos en la siguiente referencia. acabó la protección. Lo que estáis viendo ahora mismo es un trozo del desensamblado del programa 4. De la teoría a la práctica regedit. Como veis, está dividido en tres Así que vamos a llevar esto a la práctica. columnas. Cada línea es una instrucción, En el W32Dasm veremos un menú que tanto en lenguaje máquina como en pone Refs. Efectivamente, lo habéis ensamblador. La primera columna es la adivinado, ahí es donde están las opciones dirección de memoria en la que está la relacionadas con las referencias. instrucción, la segunda columna es el Elegimos Menu Refs --> String Data código de la instrucción en lenguaje References máquina y la tercera columna es la instrucción en ensamblador. También hay otras líneas con mensajes del W32Dasm que nos dicen cuales son las referencias y qué instrucciones están referenciadas desde otras. Esto lo usan las instrucciones de salto para saltar a otras partes del programa. Vamos a ver lo que significa todo esto. Página 22 PC PASO A PASO Nº 19
  • 23. Regedit - consigue libertad de acción - Regedit - consigue libertad de acción continuar. En caso contrario, seguirá por las instrucciones que hay detrás del salto, que muestran el mensaje y terminan. Así que, lo que tenemos aquí es un esquema igual al del pseudo-código. El “si” es el salto y el parámetro del salto es la dirección de memoria de la instrucción a saltar (como nuestra etiqueta continuar). Podéis ver que esa instrucción está después de la que hace referencia a la cadena. En este caso se trata de un salto condicional (salta SI es igual). Lo que hay que hacer es convertirlo en un salto incondicional, o sea, que siempre salte :) 5. El truco del almendruco Aquí vamos a meternos un poco con el Si os fijáis un poco más arriba de la código máquina, porque lo que vamos a referencia, hay una instrucción que hacer es modificar el código de la empieza con “je”. Esto es un salto. (je = instrucción de salto (ese que pone “74 jump if equal, saltar si es igual). Lo que 1A”) para convertirla en un salto estáis viendo ahora mismo es un esquema incondicional. similar al pseudo-código que he puesto antes, y tiene la siguiente estructura: El W32Dasm no nos permite modificar directamente las instrucciones en comprobar una condición test eax, eax ensamblador, lo cual tampoco nos je Continuar mostrar mensaje y salir interesa, porque ya os habréis fijado en continuar: que no todas las instrucciones tienen la Resto del programa misma longitud. Por ejemplo, la instrucción Las instrucciones clave son test, je y la de salto puñetera ocupa 2 bytes, pero la etiqueta. Lo primero que hay es código instrucción call que hay un poco más para comprobar la protección. Son las arriba ocupa 5 bytes. instrucciones que hay delante de test. Imaginaros lo que pasaría si nos Esas instrucciones dejan un valor en eax, equivocásemos y cambiásemos una que es un registro del procesador, algo instrucción que ocupa 2 bytes por otra así como una variable que contiene un que ocupa más. Sobrescribiríamos las dato. instrucciones que hay a continuación y Windows cantaría su canción favorita: “El eax valdrá 1 si la protección esta activada programa ha efectuado una operación no y 0 si no lo está. La instrucción “test permitida”. eax, eax” comprueba si eax es igual a Así que tenemos que cambiar el salto cero, y la instrucción je hace que, en condicional de 2 bytes por un salto caso de que eax valga cero, el programa incondicional que también ocupe 2 bytes. siga ejecutándose a partir de la etiqueta PC PASO A PASO Nº 19 Página 23
  • 24. Regedit - consigue libertad de acción - Regedit - consigue libertad de acción A parte de saltos condicionales e parte del código de jmp. incondicionales también existen saltos Bueno, pues a estas alturas seguro que largos y saltos cortos. Se diferencian en ya sabéis lo que hay que hacer. Hay que lo que ocupan. Aquí están sus códigos: cambiar el “74” por “EB”. Primero haced doble click sobre la Saltos cortos: instrucción de salto para seleccionarla (aparecerá una barra verde sobre ella). Saltos largos: Por supuesto, las XX del código máquina dependen de las direcciones de los saltos, pero eso no lo vamos a tocar, sólo hay Ahora si os fijáis en la barra de estado que conocer los números del principio. del W32Dasm (la de abajo del todo de la Hay muchos más saltos, pero de ventana) veréis que, entre otras cosas, momento estos son los únicos que vamos aparece el texto “@Offset 00007F12h a necesitar. También es interesante in File: regedit.exe”. Tomad nota de conocer una instrucción más. Os la voy este número porque es el offset en el a presentar: Se llama nop, su código es que está el salto dentro del ejecutable 90 y sirve para no hacer nada. (que no es lo mismo que la dirección de memoria). A primera vista no parece una instrucción muy útil, pero en realidad es una de las que más se utilizan a la hora de crackear. Por ejemplo, si os fijáis en el código largo de la instrucción jmp veréis que hay un 90 delante. ! Como ya os dije antes... Lo que pasa es que la instrucción jmp ocupa un byte menos que los demás Como ya os dije antes, SIEMPRE debéis trabajar sobre saltos largos y para ajustar la longitud una copia de los ficheros originales que vayáis a modificar. nosotros añadiremos una instrucción nop Nosotros ya estamos trabajando sobre una copia. No vamos a modificar el regedit.exe original. De esta manera, si no delante. Por eso lo he puesto entre tenéis permisos para modificar el regedit.exe podéis hacerlo paréntesis. Realmente el 90 no forma de todos modos. Página 24 PC PASO A PASO Nº 19
  • 25. Regedit - consigue libertad de acción - Regedit - consigue libertad de acción Abrid la copia del regedit con un editor hexadecimal. ¿Cómo? ¿Nunca has utilizado uno? Bueno, vale… Nosotros vamos a utilizar el UltraEdit-32 en su versión 10.10c (aunque podrías utilizar cualquier otro). Lo primero, como siempre, nos vamos a www.hackxcrack.com y descargamos el programa. Lo instalamos y ejecutamos. Os encontrareis frente a la ventana principal del programa :) Como es muy obediente, lo abrirá y tendremos lo siguiente :) Ahora, desde nuestro nuevo juguete (el UltraEdit-32) hay que ir al offset que decía el W32Dasm (00007F12h). ¿Qué como se hace eso? Bueno, vengaaaa. Ya tenemos el UltraEdit-32 ejecutado y esperándonos, bien. Lo que queremos hacer es EDITAR Ahora tenemos el regedit.exe a nuestros (modificar) el regedit, pues tenemos pies, podemos editar (modificar) que decirle al UltraEdit-32 que abra el directamente su código. Primero (como regedit. ya hemos dicho) tenemos que ir al offset Pues venga, Menu Archivo --> Abrir y le que decía el W32Dasm (00007F12h). conducimos al regedit.exe que tenemos Pues venga, Menu Buscar --> Ir a en C:lovease línea/pagina o la combinación de teclas Ctrl-G PC PASO A PASO Nº 19 Página 25
  • 26. Regedit - consigue libertad de acción - Regedit - consigue libertad de acción debemos escribir “0x00007F12h” (sin las comillas). Si alguien se pregunta el motivo de añadir “0x” el mismo recuadro ya lo aclara, estamos introduciendo un dato en HEX (más detalles consultar anteriores número de la revista o consultar en el foro www.hackxcrack.com). Venga, que acabamos, pulsamos el botón aceptar y nos encontraremos lo siguiente: ! Para los que... Para los que no utilicen el UltraEdit-32: Como ya hemos dicho, editores hexadecimales hay muchos. Para hacer lo mismo en el Hex Workshop, es con Lo primero es asegurarnos de que en esa Edit/Goto... o Ctrl-G y debéis seleccionar “Beginning of posición está el salto, hay que asegurarse file” y “Hex”. Usando el WinHex es con Position/Go to de que estén los códigos “74 1A”. Fíjate Offset... o Alt-G. Aseguráos de que esté seleccionado en la imagen, hemos “pintado” de azul “Beginning of file” y “Bytes”. los códigos. Si no estuviesen, es que te has equivocado en algo, revisa los pasos Y nos aparecerá esta escueta ventana: a seguir e inténtalo de nuevo. Una vez hemos encontrado el salto “74 1A”, deberemos… ALTO!!! LEE LA S I G U I E N T E N OTA A N T E S D E CONTINUAR!!! ! Para los que... LEGAL o ILEGAL: Ahora te diremos que para seguir el ejercicio “DEBERÍAS” hacer tal y cual cosa. Remarcamos lo de DEBERÍAS, además no te enseñaremos NINGUNA ventanita que indique que nosotros estamos haciendo el En el rectángulo blanco hay que escribir ejercicio… ¿por qué?... Pues porque es ILEGAL emplear el offset PRECEDIDO de “0x” (el número la ingeniería inversa para MODIFICAR programas de 0 y la letra x sin las comillas). Es decir, Página 26 PC PASO A PASO Nº 19
  • 27. Regedit - consigue libertad de acción - Regedit - consigue libertad de acción Si con la segunda tampoco funciona seguid terceros (en este caso el regedit.exe, un programa de probando hasta encontrar la buena. No MICRO$OFT). os preocupéis, no hay muchas. Por Por lo tanto, te lo advertimos, si sigues el ejercicio estás ejemplo, en Windows Millenium, un cometiendo un delito. Si estuviésemos tu y yo sentados en pajarito me dijo que la buena es la tu casa te diría que no pasa nada (no creo que en tu casa segunda ;) Bill Gates tenga una cámara espiándote), pero como estás leyendo una publicación legal debemos avisarte y remarcar este tipo de cosas. 7. Deja el sistema operativo como estaba Si ejecutáis el regedit.exe original de Ahora DEBERÍAS cambiar el 74 por “EB” Windows (situado normalmente en (como si estuvieses en Word :). No te enseñamos la pantalla porque es ILEGAL. C:Windows) veréis que aún sigue Y DEBERÍAS guardar el fichero, en el mostrando el mensaje “El Administrador UltraEdit-32, Menu Archivo --> Guardar. ha deshabilitado la modificación del Registro”; pero si ejecutases Se acabó!!! Ahora DEBERÍAS ejecutar el regedit.exe que has crackeado (el que regedit.exe que DEBERÍAS haber tienes en c:loveasm), funciona sea cual modificado y que lo tienes en c:loveasm. PODRÍAS comprobar que ahora SÍ sea el valor que tenga en el registro DEBERÍAS poder acceder al registro de DisableRegistryTools. Windows. Ahora ya podéis borrar DisableRegistryTools o poner su valor 6. Ultimando detalles a 0 (dejar vuestro sistema como estaba). Si no os funcionase, puede ser porque Con todo esto DEBERÍAMOS haber estáis usando otra versión del regedit conseguido un regedit.exe que y la referencia correcta no era esa (el PODRÍAMOS llevar a cualquier sitio (por salto correcto no era ese). Ningún ejemplo un “cyber-cafe”) y nos permitirá problema, borrad la copia del regedit y editar el registro de cualquier PC de la volved a copiar el original en c:loveasm. sala aunque el administrador haya Con el W32Dasm volved a buscar la deshabilitado esa opción ;) referencia. Esta vez, en lugar de una, haced doble click dos veces sobre la Ya sabes que el registro de Windows es cadena “El Administrador ha el “alma” de Windows, si puedes acceder deshabilitado la modificación del a él y modificarlo puedes hacer “casi Regist” en la ventana “W32Dasm List cualquier cosa”. of String Data Ítems” (recuerda que Espero que no os haya parecido muy difícil llegaste a esta ventana mediante el Menu y que lo hayáis entendido bien. Saludos Refs del W32Dasm). a todos. Haciendo esto iremos a la segunda posición y deberemos repetir el resto del proceso. En este caso la referencia del offset será distinta (recuerda apuntarla). PC PASO A PASO Nº 19 Página 27
  • 28. Curso de seguridad en redes - ids - Conoceremos SNORT: Un potente IDS, un potente snifer, un potente "caza-intrusos" - Sistemas IDS: HIDS, NIDS Y DIDS - Vamos a acercarnos a LA VERDADERA SEGURIDAD!!! Hola amig@s, otra vez por aquí ;) Algunos estaréis pensando... “Joer, qué misterio tendrá... si total se instala, se aplican En esta ocasión no vamos a probar las reglas, se ejecuta y a mirar...” bueno, vulnerabilidades, todo lo contrario, vamos ha pues si queremos entender... primero hay que intentar taparlas, protegernos y asegurar aprender... además ya conocéis la filosofía de nuestros PC’s. Y cuando digo nuestros PC’s esta publicación: “... no sólo nos gusta que digo TODOS, no sólo uno de ellos. funcione, nos gusta saber cómo funciona...” Este es el primero de una colección de artículos Si tienes un conocimiento medio de snort, que tratan de SEGURIDAD, lo pongo en este artículo te sabrá a poco, pero si no sabes mayúsculas porque eso es lo que vamos a lo que son cosas como el pre-procesador, implementar, seguridad, seguridad y Frag2, Stream4 ó Stream5, el sistema de seguridad. detección, plug-in para salida, etc... este artículo te abrirá los ojos y te ayudará a La idea esencial es aprender dos cosas básicas: entender “el alma” de los IDS y sobre todo ASEGURAR la red mediante un sofisticado Un Sistema de Detección de Intrusos mecanismo de alertas y detección de ataques (IDS - Intrusion Detection System) comunes, exploración de puertos, exploits, Un Cortafuegos (Firewall) y/o desbordamientos de memoria, etc. Proxy-Firewall Terminaremos creando un Sistema Central Empezaremos por los IDS. Cuando me decidí IDS, con soporte de Bases de datos, servicios a escribir sobre estos temas me surgió una Web para la generación de informes, alertas gran duda entre dos posibilidades: ¿Qué por mensajería, reglas personalizadas y más.... haces, Vic_Thor? ¿Pones cuatro links, das tres ejemplos y te ventilas el IDS en dos Las aplicaciones escogidas se ejecutan sin páginas? O.... ¿Explicas el cómo, por qué, problemas en plataformas LiNUX y Windows, dónde y de qué manera se implementa un quizás en lo que más difieren unas versiones IDS? de otras es en el momento de la instalación, de los “añadidos” y de alguna que otra cuestión Opté por la última, lo que quiere decir que menor o mayor dependiendo de cómo lo son “malas y buenas” noticias, “malas” porque veamos.... con gran esfuerzo y cariño hacia me tendréis que aguantar más de un mes ya vosotr@s estos artículos están pensados en que me decidí a explicar pormenorizadamente ambas plataformas, lo iréis descubriendo poco la arquitectura de snort, que será el IDS a a poco. implementar, y serán “buenas” porque tras esta serie de artículos seréis capaces de En artículos posteriores abordaremos firewalls manejar sin problemas, sin miedos y con total y proxys no... no se trata de ZoneAlarm... seguridad este tipo de aplicaciones. que va... es algo más profundo y “serio”, Página 28 PC PASO A PASO Nº 19
  • 29. Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad flexible y configurable, que analice no sólo Una de las mejores analogías para describir puertos e Ip’s, también contenidos y, si nos un IDS es la de un antivirus... estos examinan animamos, hasta nos terminamos montando los archivos de tu disco duro en busca de un Honeypot para despistar a nuestros códigos dañinos, establecen un sistema de “atacantes”, me estoy refiriendo a Firewalls protección de archivos, memoria y arranque, del tipo Next Generation o Firewall 1 de y protege a los archivos en tiempo de Checkpoint, a squid o ISA Server... ejecución. No me gustan las dedicatorias, pero en este Esto mismo es lo que hace un IDS, pero en caso se merecen... este artículo se lo dedico lugar de inspeccionar archivos, particiones y especialmente a mi hijo Oscar, que con sus bloques de memoria, analizan paquetes de siete años me ha tenido que aguantar datos, analizan el tráfico de la red en busca demasiados fines de semana “enfrascado” en de patrones predefinidos que hagan el ordenador mientras él jugaba o veía sus “sospechoso” un paquete de datos a nivel IP “pelis” o me “daba la lata” con eso de.... “Papa o MAC. y ahora qué hacemos.... deja ya de trabajar....” Al igual que sus “primos” los firewalls, pueden Mil besos, hijo por tu paciencia y tu cariño. ser Software, Hardware o una combinación de ambos, y pueden detectar accesos no Alarma, Alarma... Intrusos !!!! autorizados desde dentro o fuera de la red. Parece obvio y casi todos podríamos dar varias Aunque un IDS puede configurarse en el definiciones de lo que es una intrusión, yo mismo sistema donde corre un firewall, un me voy a quedar con dos: servidor, etc.. no es muy recomendable, lo más habitual es que el IDS sea un equipo Intrusión es el acto de entrar en un lugar independiente puesto que la carga de sin invitación o sin ser bienvenido, es como procesador puede ser muy alta si la red es colarse en una fiesta privada a la que no muy “parlanchina”. fuimos invitados. Un IDS puedes imaginarlo como un análisis En el mundo de las redes, una intrusión de sangre, por el simple hecho de hacerte un es simplemente el intento de comprometer chequeo no curarás una enfermedad, un IDS cualquiera de nuestros dispositivos de red, hará saltar las alertas, avisarte de que estas ya sean switches, routers, estaciones de bajo de hierro, que tienes un exceso de trabajo, servidores o cualquier otro medio colesterol o que los trasaminasas están por que brinda conectividad o se conecta a la red. las nubes, “curar” la enfermedad pueden escapársele al IDS, puede parar la ingesta Visto de ese modo, un IDS podría compararse de alimentos que aumenten el colesterol o con una alarma antirrobo, detecta las que dañen el organismo pero realmente no intrusiones o accesos no permitidos y hace cura la enfermedad... “sonar la sirena”. Para lograr estas proezas, utilizan diversas Lo cierto es que un IDS hace algo mas... técnicas, desde la “detección de firmas” como reconoce a los intrusos, los identifica e incluso lo hacen los antivirus, pasando por las huellas puede parar el ataque, de este modo, un IDS de ataques conocidos hasta las detecciones es como una alarma antirrobo con cámaras “anómalas” de tráfico inusual, actividad de seguridad, junto con un banco de datos “normal” o “anormal” muy parecido a como que reconoce al intruso y con un sistema de lo hacen los antivirus con el llamado análisis vigilancia que registra los accesos y envía “la heurístico. policía” a detener al ladrón. PC PASO A PASO Nº 19 Página 29
  • 30. Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad Algunos IDS pueden hasta llegar a desconectar el host atacado, incluso aunque ! Modo Promiscuo... fuese un router o la puerta de enlace, para mantener “el orden” y la seguridad en la red. Modo Promiscuo / Modo No Promiscuo: Si te estás preguntando cómo poner una Tarjeta de Red en modo Los IDS funcionan como el análisis forense Promiscuo, tranquilo, cuando lleguemos a la parte practica de la escena de un crimen, obtienen las huellas del artículo lo podrás hacer tu mismo :) dactilares, análisis de ADN, pautas de comportamiento, muestras de cabello, sangre, etc... de ese modo recomponen “el ataque” lo identifican, lo detienen o al menos lanzan En la figura 1 las alertas. observamos una red con 4IDS IDS hay más de uno... basados en host, uno para el Aunque es habitual hacer referencia al IDS S e r v i d o r We b como el Sistema Detector de Intrusos, corporativo y ciertamente puede ser más sofisticado que otros tres para una máquina perdida por nuestra red.. e q u i p o s disponemos de tres tipos de IDS, los HIDS, individuales de la NIDS y DIDS, los vemos a continuación: LAN. HIDS (HostIDS) esto es, un IDS NIDS vigilando un único host que observa (NetworkIDS) o IDS basados en únicamente a ese host, en este caso, red. Este tipo de la tarjeta de red corre en modo no s i s t e m a s Figura 1. IDS promiscuo, es decir, sólo recogerá, detectarán ataques a TODO el segmento basado en Host. analizará y detectará paquetes de datos HIDS de la red en el que corre el IDS, la que vayan dirigidos a ese host en tarjeta de red del NIDS debe corren concreto y los paquetes que salgan de en modo promiscuo, es decir, ese host... bueno algunos otros capturará TODO el tráfico que vaya también... destinado a cualquier equipo del segmento de red y no sólo al equipo Su mayor ventaja reside en un uso donde se ejecute el NIDS menor de la CPU y en la existencia de tarjetas de red que por hardware no La utilización de este sistema debe ser es posible ponerlas en el modo autorizado por el administrador y monitorizado, puesto que teóricamente promiscuo. puede resultar comprometida la red completa. Incluso pueden utilizarse más Otra ventaja es la de “acotar” las reglas de un NIDS para asegurar con mayor de procesamiento de los paquetes a efectividad todos los host. analizar, por ejemplo, si instalamos un HIDS en un servidor web, podemos En la figura 2, vemos un sistema IDS eliminar del conjunto de reglas ataques basado en dos NIDS el primero a otro tipo de servicios y servidores protegería el segmento compuesto por como DNS, FTP, etc. el Servidor Web y el Servidor Mail, mientras que el segundo protegería a Página 30 PC PASO A PASO Nº 19
  • 31. Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad TODO el segmento un IDS se convierte LAN en un analizador de los cambios en el DIDS comportamiento del (DistributedIDS) o firewall o de las ACL IDS Distribuidos. de y proveen a los Esto es un sistema mismos de un IDS basado en mecanismo de arquitectura auditoria y control. Cliente/Servidor, los NIDS actúan Te e s t a r á s como los sensores de preguntando ... un sistema de ¿Entonces si uso un alarmas y están IDS puedo pasar del distribuidos por la firewall? R:NO, el red, localizan Figura 3 firewall bloquea los accesos a puertos no IDS Distribuido ataques, los permitidos y generalmente cumple bien sus Figura 2. IDS centralizan y pueden almacenar o basado en red. cometidos, pero en muchos casos no están recuperar los datos de una Base de NIDS diseñados para analizar el contenido de los Datos centralizada. paquetes que circulan por los puertos En este modo, las tarjetas pueden autorizados. estar en modo promiscuo o no promiscuo, las reglas de cada una se El motivo por el que los firewalls (y sobre todo hacen “a medida” según las los personales, tipo Zone Alarm, Kerio, etc..) necesidades de cada segmento, host no analizan los paquetes es por el alto consumo o red completa, las alertas, las huellas, de recursos. El uso de ciclos de CPU es las firmas de ataques, los registros, extremadamente intenso y el rendimiento del etc., se extraen o vuelcan en un sistema equipo sería muy bajo, no digamos nada si central, este tipo de soluciones son se trata de un proxy-firewall, deberíamos habituales en arquitecturas del tipo disponer de un “maquinón” para soportar en VPN (Virtual Private Network, Redes la misma máquina un proxy, un firewall y un Privadas Virtuales) IDS corriendo a la vez. Un DIDS puede ser un sistema de Además, por los puertos permitidos puede NIDS, HIDS o una combinación de correr tráfico “enmascarado”, ya sabes, lo de ambos, son soluciones complejas con tunelizar las conexiones y hacer pasar algo alto grado de seguridad. por lo que no es. Imagina un servidor de IRC, Web, KaZaA o un servidor de mensajería En la figura 3, tenemos un Sistema instantánea, es posible configurar un IDS para Distribuido IDS, en la que los 3 NIDS detectar e informar de tráfico no “habitual” de red se comunican con el NIDS por esos protocolos y puertos. central dónde se almacenan las incidencias, logs, etc... Un IDS puede ser configurado para monitorizar una red, pasiva o activamente. En el modo El uso de un IDS con firewalls y/o routers con listas de acceso (ACL’s) implementadas pasivo se limitará a registrar los accesos y a que permiten o deniegan el tráfico eleva al guardar logs de los mismos, en el modo activo máximo la seguridad en la red, en estos casos puede reaccionar contra la intrusión. PC PASO A PASO Nº 19 Página 31
  • 32. Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad Se pueden monitorizar Servidores de Bases Podemos configurar snort en tres modos de datos (SQL, MySQL, ORACLE...) Servidores básicos: DNS, Servidores Mail, Servidores de administración remoto (VNC, TS, Citrix, Sniffer, como un “simple” PcAnywhere...) analizador de protocolos Packet logger, como un capturador Snort, El espía que me amó.... y “grabador” de paquetes NIDS, como un sistema de El creador de Snort fue Marty Roesch y en detección de intrusos en red un principio lo llamó “Lightweight Intrusión Detection System”, (Sistema ligero de Lógicamente, configurar snort como un NIDS detección de intrusos), sin embargo, snort es la forma más compleja y flexible de usarlo. es todo menos “ligero”. Snort se basa en firmas IDS y usa reglas para Snort es capaz de analizar en tiempo real el comprobar los paquetes que viajan por la red tráfico de paquetes en un equipo o en una y genera alertas enviándolas a una Base de red corporativa y además mantener un registro datos, un archivo de sucesos o mensajes de logs e identificar ataques concretos en SNMP. función de su “huella dactilar”. Originalmente fue concebido como un esnifer, Snort puede ejecutarse en multitud de Sistemas Operativos, es una distribución Martín Roesch lo escribió para LiNUX y para “Open Source” y bastante común entre los su propio uso, apenas si contaba con 1.600 administradores de sistemas. líneas de código distribuidas en dos ficheros., tras el éxito obtenido y las sucesivas revisiones Si lo deseamos snort puede ser un “simple” del producto, hoy en día se puede implementar esnifer, es decir, podemos configurar snort en varios sistemas operativos y su código sin reglas de procesamiento y análisis de asciende a más de 75.000 líneas., hasta tráfico. Aunque lo normal es que no sea así, dispone de plug-ins para bases de datos como una de las más poderosas características se MySQL o Postgres, para RPC, etc.. hasta plug- snort es la de utilizar registro de sucesos, y ins gráficos para una administración “mas métodos de alertas volcando sus resultados sencilla” . Igualmente existen plug-ins para en servidores Syslog ya sea en texto plano, protocolos específicos, como HTTP, 802.11 archivos XML o incluso enviar mensajes del (wireless) ARP, etc... tipo WinPopup a clientes Windows. Las reglas de snort incluyen diversos tipos Según las definiciones que hemos ido dando de servicios, P2P, Backdoors, troyanos y/o anteriormente, snort es una vacuna para los puertas traseras, Denegación de Servicios paquetes de datos que circulan por la red, es DoS y DDoS, ataques Web, e incluso algunos un sistema de Rayos X que inspecciona estos virus conocidos. paquetes, los captura (sniffer) los coloca en un contenedor o registro (packet logger) y/o los examina en busca de patrones, ataques ! Si eres un nuevo lector... y análisis forense (NIDS) Si eres un nuevo lector de PC PASO A PASO, seguro que Snort es un sistema NIDS, puede analizar te desespera leer cosas como MySQL, Postgres, RPC, tráfico IP en busca de “huellas” comunes de HTTP, 802.11, ARP, P2P, Backdoors, DDoS, DoS. No un ataque, analiza los protocolos dejes que te atemoricen!!! La mayoría han sido explicados individualmente, como ejemplo puede detectar ya en anteriores números, de todas maneras ya verás que ataques del tipo Buffer overflow, ataques CGI, podrás seguir este artículo sin necesidad de ellos :) SMB, RPC o un escaneo de puertos. Página 32 PC PASO A PASO Nº 19
  • 33. Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad Algunos links interesantes para empezar con snort: El otro componente crítico es la tarjeta de red, o mejor dicho... “las tarjetas de red....” http://sourceforge.net/mailarchive/forum.php?forum=snort- aconsejable dos una para la escucha users ---> Foros de uso de la aplicación. “pasiva” y otra para la conectividad básica del segmento de red.... aunque se puede http://sourceforge.net/mailarchive/forum.php?forum=snort- implementar en una sola tarjeta de red, no sigs ---> Foros dedicados exclusivamente al uso de las es lo ideal. reglas. Por supuesto la velocidad de la tarjeta de Y cómo no... http://www.snort.org/ ---> Para encontrar red deberá ser acorde con la velocidad documentación, descargas, plug-ins, etc... de la LAN, si instalamos un equipo snort con una tarjeta de red de 10 Mbs en una LAN con http://www.snort.org/cgi-bin/done.cgi y PC’s equipados con tarjetas de red a 100 Mbs, http://www.snort.org/cgi-bin/needed.cgi --> Índice de perderemos paquetes y tendremos resultados reglas. erróneos. http://www.snort.org/docs/ ---> Documentación. No olvides que snort es un programa de escucha PASIVO, sólo escucha y analiza... http://www.snort.org/dl/ ---> Descargas. una táctica para “ocultar” snort a ojos y miradas indiscretas es la de utilizar cableado Las reglas se organizan por números (los en el que los hilos de transmisión no están llamados SID o SIGS), por ejemplo el Sids conectados (snort es pasivo, sólo escucha) para los ataques a IIS del bug de unicode de ese modo si alguien en la red o fuera de y otros son 970, 974, 981, 982, 983, ella “busca” el IDS no lo encontrará ya que recuerdas esto de algo, ¿no? (números dos esa máquina no responderá al tener “capada” y tres de la revista). su posibilidad de transmitir. La última versión de snort disponible es la Por lo demás, snort no es muy quisquilloso, 2.1.1 aunque algunas herramientas y plug- aunque como en todas las aplicaciones de alto ins están orientadas a la versión 2.0.x con rendimiento, mejor cuanto más veloz sea el pocos cambios y revisar el changelog de la microprocesador, mejor 256 MB de RAM que página oficial para conocer las mejoras 128Mb... también dependerá de la plataforma implementadas por la versión 2.1.1 podremos elegida... a Windows le gusta mucho la RAM... usarlos. Requisitos Hardware y Software ! Para los curiosos para Snort Para los curiosos: ¿Qué es eso de utilizar cableado Hardware en que los hilos de transmisión no están conectados? ¿eso existe? :) Si configuramos Snort como NIDS, de todos los componentes Hard de una máquina, No es necesario disponer de un cable “capado para debemos pensar en disponer de un buen transmitir” para seguir este artículo, pero como sabemos que esta revista la compran “mentes MUY espacio en Disco para almacenar los logs,. curiosas”, te invitamos a investigar el tema. En el Disco duro se almacenarán los archivos Actualmente, para conectar los distintos elementos y registros de sucesos, de momento vamos de red se utilizan los típicos cables UTP5 y en sus a ir pensando en reservar unos 10 GigaBytes extremos clavijas (enchufes) tipo RJ-45 (parecidos por cada “sensor” que instalemos en la red. PC PASO A PASO Nº 19 Página 33
  • 34. Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad a los del teléfono pero más gruesos). Dentro del cable Si no tienes ganas de hacerlo tu mismo, siempre puedes UTP5 hay 8 hilos y cada uno tiene su misión, unos ir a una tienda de venta de componentes para PC y pedir hilos transmiten, otros reciben, etc. que te hagan un "Cable Ethernet UTP5 RJ45 no cruzado" PERO remarcándoles que NO CONECTEN a la clavija RJ45 los hilos 1 y 2. Te dirán que entonces el cable no funcionará correctamente, diles que ya lo sabes, que lo quieres así para que la tarjeta conectada sea incapaz de transmitir PERO si de recibir :) Ya está, no te damos más la lata. Software y Sistema Operativo Snort corre en la práctica totalidad de Sistemas Operativos modernos, desde los TIPICO CABLE UTP5 TERMINACIÓN RJ-45 basados en x86 como LiNUX, FreeBSD, Windows, etc.. hasta otros Sistemas basados Si eres de los que le encanta el PC-Bricolaje, tu en Sparc Solaris, PowerPC MacOS, RISC mismo puedes hacerte estos cables, consulta en el HP-UX... buscador www.google.com por "construir cable ethernet" y encontrarás páginas como Las Librerías libcap o WinPcap http://www.coloredhome.com/cable_cruzado/cable_ cruzado.htm, donde te explica paso a paso el tema. Opcionalmente y dependiendo de la A medida que investigues, verás que puedes construir configuración de snort puede ser necesario disponer de: cables ethernet "normales" (para conectar los PC al Hubs y Switch) y cables ethernet "cruzados" (para MySQL, Postgres, ORACLE o bases de conectar dos PCs sin necesidad de Hub o Switch, datos SQL directamente de -tarjeta de red- a -tarjeta de red-). Clientes SMB si usamos mensajería WinPopup Después del "paseo" por google, estarás en Servidor Web Apache u otros como condiciones de crear tu propio cable y crearlo "como IIS tu quieras". En nuestro caso concreto, buscamos PHP, Perl para determinados plug-ins construir un cable ethernet "normal" pero sin conectar y add-ons los hilos 1 y 2 (que son los que transmiten). De esta SSH o Terminal Services para acceso forma tendrás un cable "normal" pero "capado para remoto la transmisión" (solo podrá recibir datos). Módulos SSL para Apache o IIS Medios de red. Switches y Hubs La principal diferencia entre un hub y un switch estriba en cómo se reparten el cable los equipos conectados a los mismos. Frecuentemente se dice que las redes DETALLE DE UN CONECTOR RJ-45 conectadas con un HUB son redes Y LA NUMERACIÓN DE LOS HILOS compartidas (Todos los PC's comparten el Ancho de banda disponible) mientras que las Página 34 PC PASO A PASO Nº 19
  • 35. Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad redes conectadas mediante un switch son IDS y HUBS redes conmutadas (Cada Pc dispone de su propio ancho de banda para el sólito). Los HUB repiten la señal por cada puerto excepto por el que ha llegado, es decir, un En redes compartidas TODOS los equipos hub propaga TODO por TODAS las bocas o pueden escuchar el tráfico generado en ese puertos disponibles. segmento, por tanto un equipo con una tarjeta en modo promiscuo será capaz de escuchar, Un HUB trabaja en la capa 1 del modelo capturar y analizar "las conversaciones" de OSI, trabaja a nivel físico puesto que su único cualquier otro. cometido es amplificar, regenerar y repetir la señal. En redes conmutadas sólo podremos escuchar nuestras propias conversaciones y aquellas Si conectamos nuestro IDS a cualquier puerto que vallan dirigidas a todos los host (el llamado de un HUB y ponemos la tarjeta en modo broadcast). promiscuo seremos capaces de analizar TODO el tráfico de la red sin problemas. La desventaja de usar HUB está en que la velocidad de transmisión entre dos puntos de la red es inferior a si usamos un switch. TIPICO SWITCH DE 24 PUERTOS (24 “ENCHUFES” RJ45) IDS y SWITCHES Los switches se dice que dedican el ancho ! Cuando entres... de banda puesto que la comunicación entre dos host cualquiera de la red no la propaga por otros puertos que no sean Cuando entres en una oficina, en un centro oficial del estado o aquellos en el que están conectados ambos. en un hospital, a partir de ahora fíjate en los ordenadores, en los cables y seguro que acabarás encontrando (normalmente en Un switch trabaja en capa 2 del modelo el techo o en una pared) un "Rack de Switches". Estos RACKS conectan TODOS los ordenadores del centro y el aspecto es de OSI, a nivel de enlace de datos, toma unos cuantos switches apilados y un montón de cables ethernet decisiones en función de la dirección MAC conectados. de las tarjetas de red y relaciona esas MAC’s con los puertos físicos a los que están conectados en el switch. Por ejemplo, cuando un host conectado al puerto 1 se comunica con un host conectado al puerto 7, el switch conmuta en su interior el tráfico y lo hace salir o entrar únicamente por los puertos 1 y 7, el resto de ellos ni se enteran... Cuando un host quiere comunicarse con TODOS en un switch, propaga una señal broadcast dirigida a todos los host, en esos casos el Imagen "bastante extrema" ;) de lo que puedes llegar a ver en switch se comporta como un hub, pero sólo algunas oficinas. cuando el tráfico de red es broadcast. PC PASO A PASO Nº 19 Página 35
  • 36. Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad Si conectamos nuestro IDS a cualquier puerto Realmente el preprocesador, el sistema de un switch y ponemos la tarjeta en modo detector y la salida son plug-ins que se promiscuo sólo seremos capaces de analizar han añadido como parte del código de snort. el tráfico de la red que vaya dirigido a nuestro equipo y/o el tráfico broadcast del segmento de red. Es decir, si no se pone remedio a este asunto snort sólo podría ejecutarse como un HIDS, IDS basado en Host, independientemente de que la tarjeta esté en modo promiscuo o no. Figura 4. El módulo Esnifer Para estos casos y algunos otros también, los Arquitectura y componentes de Switchs disponen de los llamados puertos El esnifer captura los paquetes de datos que snort SPAN (Switch Port Analiser, Puerto analizador circulan por la red, el prepocesador determina de switch) si esos paquetes deben ser analizados y los pasa al sistema de detección que se Un puerto SPAN es capaz de escuchar todo encargará de comprobar si existen reglas el tráfico de los otros puertos, como un hub, específicas para ese tipo de paquetes y en su de forma que un IDS conectado al puerto caso las aplica.. Dependiendo de si se cumplen SPAN del switch nos permitirá utilizar snort o no dichas reglas se generan alertas, como un NIDS. mensajes, logs, etc.. ese trabajo queda destinado para el sistema de salida. Todavía se puede complicar más... VLAN’s , switches en stack, en cascada, Si hacemos otra analogía.... pensemos en redundantes...bueno, pensemos en un switch un cajero automático cuando nos disponemos con puertos SPAN, aunque lamentablemente a pagar el importe del parking... por la ranura no todos los switches tienen esa capacidad. introducimos las monedas o billetes (el Si ese es tu caso todavía quedan opciones, esnifer), el preprocesador dirige esas pero degradará enormemente la eficiencia de monedas o billetes por los conductos del cajero la red, mejor conformarte con instalar un hacia el sistema de detección que analiza snort en modo HIDS o prepara el bolsillo y cada moneda, billete, etc verificando que son cambia de switch (te saldrá muy caro). auténticos, que no hemos “metido otras cosas” y aplica las reglas de validación. Cuando Arquitectura de Snort termina de verificar el dinero emite una salida (el sistema de salida) que puede ser el Antes de empezar con snort es útil conocer cambio, una sirena de aviso, un mensaje de sus componentes básicos, ya hemos dicho que faltan x euros o quedarse con el ticket que puede ser un esnifer, un generador de del parking porque le estamos intentando logs o un NIDS, además le podemos añadir engañar :P un motón de plug-ins para personalizarlo , snort se compone de cuatro componentes El esnifer puede analizar tráfico IP, TCP, UDP, básicos: ICMP, protocolos de enrutamiento como RIP, OSPF, etc.. 1.- El esnifer 2.- El preprocesador Los esnifers se pueden usar “para lo bueno 3.- El sistema de detección y para lo malo”, depende de quien lo use. 4.- El sistema de salida (Alertas y logs) Podemos,. desde detectar problemas de Página 36 PC PASO A PASO Nº 19
  • 37. Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad comunicación (cuellos de botella, etc) hasta stream4 ó stream5, capaces de capturar contraseñas y datos sensibles... seguir 64000 conexiones simultáneas establecidas. Otra forma de usar las capacidades de sniffing portscan y portscan2, para detectar de snort es volcar o guardar el tráfico escaneos y detección de sistemas capturado en tráfico “logueado” para analizarlo operativos. más tarde. Quizás los “más difíciles” de entender ahora sean frag2 y stream, hablemos El preprocesador de ellos. El preprocesador recoge los paquetes que El preprocesador frag2 detecta, le pasa el esnifer y comprueba si dispone de reensambla e inspecciona paquetes fragmentados. plug-ins para analizar el tipo de paquete, por ejemplo HTTP, RPC, SMB, Escaneo de puertos, La fragmentación en el mundo de las redes y etc.. las comunicaciones es necesaria, los cables y medios por los que viajan nuestros datos Existen muchos plug-ins para el tienen un tamaño máximo determinado (MTU, preprocesador de snort, sería imposible Unidad máxima de Transmisión) y cuando un relatar todos y dar una explicación paquete es más grande que la MTU debe pormenorizada de cada uno de ellos, más fragmentarse, trocearse en “cachitos” más adelante veremos como usarlos. pequeños para que pueda ser enviado. Aunque en los próximos Volvemos con las analogías.... Supongamos artículos hablaremos que nuestra “tía de Badajoz” nos quiere enviar más a fondo del un chorizo ibérico... bueno y un salchichón y preprocesador y el lomo.... ahhgghhh qué hambre me está sistema de detección, es entrando importante ahora que conozcas algunos Bien, el caso es que la empresa de transporte términos del mismo. sólo acepta paquetes del tamaño de una caja de zapatos... entonces nuestra amada “Tía de Las directivas o reglas Badajoz” trocea los embutidos, los mete en Figura 5. diferentes cajas, las numera, les pone las del preprocesador se nombran de la forma: Funcionamiento del señas a cada una y las lleva al servicio de Preprocesador en un protocolo_decode donde protocolo puede transporte. ejemplo para RPC ser un protocolo, servicio o directiva a aplicar. Nadie nos garantiza que cuando recibamos Hay varios, pero los más interesantes son: tan estimados y suculentos manjares lo hagamos en el mismo orden que salió, es http_decode para examinar el flujo de datos en servidores web y/o probable que recibamos la “caja 6/8” antes protocolo http. que la “caja 1/6”, es más... puede ocurrir que la empresa de transporte delegue en otra ftp_decode, para servidores ftp. el envío y que la nueva empresa utilice un MTU más bajo y “trocee” las cajas en otras telnet_decode, protocolo y servicios más pequeñas... de telnet. Este ejemplo nos sirve para entender cómo rpc_decode, protocolo RPC. funciona frag2... los sistemas operativos, más frag2, fragmentación de paquetes. concretamente la pila TCP/IP del sistema operativo, inspecciona cada paquete, es más, PC PASO A PASO Nº 19 Página 37
  • 38. Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad algunos routers o dispositivos de conmutación configurarlo para decirle “Mira a esta IP durante puede enviar los fragmentos “inmediatamente” 1 hora” o “mira lo que hace está IP en los o esperar a recomponer todos... esto parece próximos 250 paquetes”.... normal, pero.... ¿Y si “La Tía de Badajoz” hace una “gracia” y nos envía el chorizo De hecho stream4/5 puede seguir ibérico en paquetes del tamaño de una caja simultáneamente más de una conexión, no de cerillas? sólo el puerto 80 como en el ejemplo anterior, puede seguir hasta prácticamente la totalidad Pues tendremos miles de trocitos, y ya sabes... de servicios y puertos disponibles, el único es más fácil “desordenar” que “reordenar”, inconveniente de ello es el trabajo excesivo, siempre pongo el ejemplo del puzzle, aun no duro y difícil que tendrá nuestro PC... para conozco a nadie que sea capaz de montar un esos casos precisaremos de un buen equipo, puzzle de 1.000 fichas en el mismo tiempo rápido y con suficientes recursos. que yo “mezclo” esas fichas... El sistema de detección Valeeee, ¿y esto por qué? Pues porque una táctica para “mantener” ocupados a los El sistema de detección toma los paquetes servidores, routers, etc.. consiste en del preprocesador y/o de los plug-ins instalados fragmentar EXCESIVAMENTE los paquetes, y los comprueba con las reglas establecidas primero tendrán que esperar a que los reciban para los mismos, dependiendo de las acciones todos, luego recomponer el mensaje y por a realizar los dejará pasar, generará alertas, ultimo ofrecer la respuesta adecuada, esto registros o incluso detendrá un eventual significa, más memoria, más tiempo y ataque. más trabajo La mayor parte del trabajo y optimización de Esta misma táctica se utiliza para intentar snort se realiza aquí... utiliza funciones y provocar un ataque por denegación de reglas agrupadas por categorías (Troyanos, servicios a un IDS, a un Firewall, etc... de desbordamiento de buffer, acceso a esto es de lo que se preocupa frag2, de aplicaciones, etc..) recomponer los paquetes ANTES de que sean El corazón del sistema de detección son enviados al sistema de detección, hablaremos las reglas, estas las impone el administrador de ello más profundamente a medida que y podemos dividirlas en dos partes: avancemos, incluso probaremos nuestros IDS y nuestros Firewalls con aplicaciones Reglas de cabeceras: Basadas en específicas... ¿qué te parecería si te enviasen la detección de paquetes por tipo (TCP, UDP, 12.000 correos diarios “a trozos”? pues eso ICMP....) o por dirección (Origen, destino, es lo que haremos, enviar miles de paquetes puerto) por segundo muy, muy, muy fragmentados... Reglas de Contenido: Son reglas que stream4 o stream5 (la última revisión de examinan el interior del paquete, es decir, el snort) se ocupa de realizar “un seguimiento contenido de los datos transportados por el a cada conexión”, es decir, de monitorizar las protocolo. conversaciones “punto a punto”, por ejemplo.... imagina que se detecta un ataque Reglas de Control: Controlan desde a nuestro Servidor WEB (generalmente puerto la dirección del tráfico en la red hasta las 80) por el archiconocido bug del code- contramedidas en tiempo real, pasando por decode... además de “avisarnos” puede la monitorización de sesiones, desbordamiento “seguir atento” a todas las acciones que de buffers, shellcodes, negación de servicios, vengan de la IP “atacante”, incluso podemos etc... Página 38 PC PASO A PASO Nº 19
  • 39. Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad Siguiendo el ejemplo del cajero Pérdida de paquetes, como ya se automático, las reglas de cabecera ha dicho por problemas en la determinarían si se trata de un billete, de conectividad o deficiencias en las una moneda o de fraude, mientras que las implementaciones de la pila TCP/IP del reglas de contenido, descubrirán si la moneda sistema operativo es de 1 euro, de 2 euros, etc... Falsas alarmas, pueden ser falsos El sistema de Salida. Registro y alertas. positivos o falsos negativos. Una vez que se inspeccionaron las reglas y Un falso positivo es una falsa alarma, se validó el paquete algo hay que hacer con un paquete o conjunto de paquetes que los resultados, de eso se encarga el sistema disparan una alerta cuando realmente de salida. son inofensivos. Las alertas pueden enviarse a un fichero Los falsos negativos son paquetes que de logs, a un equipo remoto mediante sockets comprometen la estabilidad de snort y o mensajes emergentes, traps SNMP e que no es capaz de detectar, pueden incluso se pueden almacenar en una Base ser debidos a errores de implementación de datos SQL en las reglas o a ataques contra el propio snort por vulnerabilidades descubiertas El sistema de salida también dispone de plug-ins que simplifican la presentación de Snort es una GRAN utilidad, no exenta de las alertas en formatos XML, HTML, interfaces ataques, pero muy, muy eficiente. No obstante Web y muchos otros. y como ya estamos acostumbrados a que nada es para siempre hay que estar al tanto de Al igual que los plug-ins del preprocesador actualizaciones y mejoras, las revisiones, los será imposible detallar o describir todos, cada updates, los parches de seguridad. día los desarrolladores de software crean nuevos plug-ins, mejoras y nuevas Y no siempre las actualizaciones se deben a visualizaciones, veremos unos cuantos... problemas de seguridad, pueden ser debidas algunos muy interesantes. a la aparición de nuevas reglas, a cambios de sintaxis... en definitiva a mejorar el programa, Limitaciones, Bugs y recuerda, la seguridad también consiste en mantenerse al día en la aparición de bugs y actualizaciones parches para solventar los mismos... Como todo software snort es vulnerable y no siempre actúa eficientemente, en algunas Instalando Snort ocasiones se debe a limitaciones en el hardware, como puede ser la velocidad de la Ya hemos comentado la versatilidad de snort, tarjeta de red, agujeros de seguridad que tanto por sus análisis como por la variedad permiten “saltarse” el IDS o simplemente la de Sistemas Operativos en los que puede generación de falsas alarmas, bien por una ejecutarse... mala elección de las reglas o por determinados paquetes generados en la red. En esta sección nos vamos a centrar en la instalación de snort para plataformas LiNUX Entre los fallos más comunes al usar snort Red Hat y para Win32, concretamente para están: Windows 2000/XP PC PASO A PASO Nº 19 Página 39
  • 40. Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad Para otras distribuciones de LiNUX será Instalando snort en Windows “parecido”, aunque aquí lo instalaremos 2000/XP mediante RPM. Esto significa que las distros de Red Hat, SuSe, Mandrake, Conectiva, etc Lo primero bajarse el IDS serán aptas para seguir estos pasos. http://www.snort.org/dl/binaries/win32/ una vez en nuestro PC se instala como la práctica Si usas Debian Gentoo, Slackware u otros totalidad de aplicaciones Windows.... deberás consultar las diferentes formas de instalación, mediante apt-get install/remove, Paso 1) Aceptar los Términos de Licencia, emerge o installpkg/removepkg/upgradepkg recuerda que snort es un producto GNU Paso 2) Seleccionar la configuración. Puedes pasarte por los foros de hackxcrack si tienes dudas o no sabes como hacerlo... seguro que lo dominas mejor que yo :P para los que me conocéis “soy un chico Windows” en su 90% de trabajo y creedme que me ha costado lo mío ponerme al día con LiNUX... mereció la pena de verdad. Si tienes dudas no lo dudes: http://www.hackxcrack.com/phpBB2/index. php Mejor aún, actualmente estamos desarrollando un proyecto, una LIVE CD, una distribución “especial” de LiNUX personalizada, orientada a Seguridad y en la que muchos de los foreros de hackxcrack estamos colaborando... esta distribución puede ser Pantalla 1. Aceptar tuya también, en ella ya figura snort como Quizás sea el único paso que merece la pena los términos de la IDS y otras muchas utilidades, paquetes de comentar, todas las implementaciones de licencia seguridad, una forma fácil y sencilla de seguir snort para sistemas Win32 incluyen el soporte estos artículos es participar en el Proyecto para Bases de Datos MySQL y ODBC, si de la Live... es libre, todos aportamos lo que deseamos mantener los registros y alertas de podemos, ¿podrás unirte? Te esperamos y te snort en otras Gestores de Bases de Datos necesitamos. como SQL Server u ORACLE seleccionaremos las opciones 2 ó 3 respectivamente, no será Volviendo al proceso de instalación.... nuestro caso, nosotros, cuando llegue la ocasión, usaremos MySQL tanto para También necesitaremos instalar libpcap y si plataformas LiNUX o Windows. debemos compilar el código fuente necesitaremos gcc, automake, autoconf, binutils, make... no te asustes... lo haremos Tal y como indica la pantalla, si deseamos “paso a paso” ;) usar SQL Server u ORACLE, se debe disponer tanto de los Gestores como de los clientes La instalación de snort en plataformas necesarios para ellos. Windows sigue las “directrices de siempre” Siguiente-Siguiente-Siguiente... y en este ¿Por qué MySQL? Muchas podrían ser las caso, en lugar de las librerías libpcap se respuestas, principalmente por: necesitará WinPcap. Página 40 PC PASO A PASO Nº 19
  • 41. Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad En números anteriores de la revista Paso 4) Directorio de Instalación. ya se enseñó a instalar y configurar MySQL Elegimos C:snort como carpeta o directorio MySQL es muy eficiente y además es en donde se instalará snort Libre No dependeremos de un Sistema Operativo en concreto Muchos plug-ins, scripts y programas de terceros se brindan con soporte MySQL Por tanto en la pantalla que sigue escogemos la primera opción la cual nos posibilitará almacenar logs en Bases de Datos MySQL u OBDC. Pantalla 4. Elegir el Paso 5) Finalizar la instalación directorio de instalación Pantalla 2. Paso 3) Seleccionar los componentes a Seleccionar el instalar. gestor de Base de Datos y funciones adicionales Verificamos todos los que aparecen si no lo están ya, snort, la documentación y Contrib (que contiene plug-ins y añadidos que Pantalla 5. Finalizar contribuyen al manejo de snort) la instalación Una vez finalizada la instalación debemos instalar las librerías pcap, en Windows, WinPcap Sólo algunas salvedades.... Las librerías Pcap (ya sean libpcap o WinPcap) operan en la capa 2 del modelo OSI (enlace a datos) y son necesarias para que snort capture el tráfico que circula por la red. En el caso particular de Windows, puedes descargar la última versión de WinPcap en Pantalla 3. Seleccionar los componentes de instalación en http://winpcap.polito.it/ Windows PC PASO A PASO Nº 19 Página 41
  • 42. Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad Actualmente está en desarrollo la versión 3.1 beta de WinPcap, no te recomiendo que instales la última, a mi me dio bastantes problemas, sobre todo si usamos snort directamente sobre equipos con MODEM analógico y protocolos ppp. Con la versión 2.3 funciona perfectamente, si no encuentras en la web oficial (http://winpcap.polito.it/) el link de descarga de WinPcap 2.3 puedes bajarlo directamente de nuestro Servidor Virtual. http://www.forohxc.com/ids/snort/winpcap /2.3/WinPcap_2_3.exe Pantalla 6. Aceptar ! Los programas... Aunque no lo dice, tras finalizar la instalación mejor reiniciar el equipo.... los términos de la licencia de WinPcap Los programas utilizados en el presente artículo también Instalando snort en LiNUX desde pueden ser descargados desde la Web de la revista PC RPM PASO A PASO: www.hackxcrack.com (en la sección “Artículos Liberados y Descargas”). Como antes, lo primero el lugar donde encontrarlo: http://www.snort.org/dl/binaries/LiNUX/ ! IMPORTANTE Entre todos ellos 1º) http://www.snort.org/dl/binaries/ IMPORTANTE: Antes de instalar las librerías comprueba que linux/snort-2.1.1-1.i386.rpm no tengas otras versiones de la misma instaladas en tu PC, muchos esnifers y productos de Windows utilizan WinPcap y 2º) http://www.snort.org/dl/binaries/ hasta es posible que ya dispongas de esta u otras versiones sin LiNUX/snort-mysql-2.1.1-1.i386.rpm conocerlo.... no creo que haga falta decirte a estas alturas como se desinstala un software en Windows no? Bueeeeeno, Inicio- Tras descargar snort (los dos enlaces Configuración-Panel de Control-Agregar o quitar programas.... anteriores) y alojarlo en el directorio elegido busca en la lista si aparece WinPcap y la desinstalas... después podremos instalarlo bien desde consola o instalas la que te acabas de descargar. bien desde X Window 1.- Desde consola: La instalación de WinPcaP no tiene ningún misterio, es totalmente automatizada y lo rpm –Uvh snort-mysql-2.1.1-1.i386.rpm único que debemos hacer es ir pulsando en si lo que deseamos es actualizar una versión ya existente, o bien, el botón de Next, Next, Next a medida que nos van apareciendo pantallas (y aceptar los rpm –i snort-mysql-2.1.1-1.i386.rpm para términos de la licencia cuando aparezca, como instalar snort por primera vez. Advierto en la pantalla que se muestra a continuación) que si ya dispones de una versión instalada Página 42 PC PASO A PASO Nº 19
  • 43. Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad y configurada con reglas personalizadas, etc.. autoconf, utilidad para configurar el código utilizar este método puede significar perderlo fuente “al vuelo” todo y empezar de cero. binutils, utilidades para binarios 2.- Desde XWindow make, utilidad para compilar código individual Usando escritorios gráficos como KDE, GNOME u otros, simplemente hacer doble Paso 1) Selección de paquetes de instalación clic en el archivo RPM descargado Desde el usuario root, seleccionar Instalar las librerías PCAP Configuración del sistema – Paquetes Al igual que las versiones Windows, debemos Y se abrirá el cuadro de diálogo Add or de tener las librerías pcap, aquí son libpcap Remove Packages y no WinPcap, para que snort funcione correctamente. Paso 2) Mover la barra de desplazamiento hasta la sección Development y verificar la Red Hat y otras distribuciones de LiNUX ya casilla de verificación Herramientas de las incluyen en la instalación, si no es tu caso desarrollo o si quieres actualizar la revisión de las librerías puedes seguir los pasos que vienen a continuación, en caso contrario tu snort ya está preparado. Las últimas revisiones de libpcap las puedes encontrar en http://www.tcpdump.org la última revisión en el momento de escribir este artículo es la 0.8.1 y la puedes descargar directamente de aquí: http://www.tcpdump.org/release/ libpcap-0.8.1.tar.gz Para instalar libpcap desde los archivos fuente basta con compilar el código, el único requisito es elegir de las utilidades de desarrollo (development tools) en la distribución que Pantalla 7. Añadir o Paso 3) Pinchar en Actualización uses. quitar paquetes y herramientas de El sistema operativo calculará las dependencias desarrollo En el ejemplo que sigue a continuación y paquetes necesarios. (Development) describe los pasos para instalar libpcap en Red Hat 8. Paso 4) Si se desea pinchar en Mostrar detalles para ver las opciones seleccionadas Necesitaremos: Paso 5) Pinchar en Continuar y el sistema gcc, El compilador de C procederá a la instalación Ahora que el sistema ya tiene los paquetes automake, utilidad para crear los makefiles necesarios para ya puedes usar configure, “al vuelo” make y make install para instalar la librerías, PC PASO A PASO Nº 19 Página 43
  • 44. Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad para ello descomprime el archivo libpcap- este paso sin errores, el software estará 0.8.1.tar.gz, abre una sesión de consola y instalado y disponible para su uso. sigue estos pasos: Otra forma es encontrar un RPM listo para instalarse en la distribución que usemos... 1º) Ejecutar el script ./configure puedes encontrarlas aquí: ./configure es un script que contiene la http://www.rpmfind.net/LiNUX/rpm2html/se información necesaria de la máquina en la arch.php?query=libpcap que está corriendo, las dependencias, variables y verifica el software. Y puedes seguir los mismos pasos indicados para instalar snort desde RPM para libpcap. Pantalla 8. Listado Bueno, también te puede dar por compilar y crear Pantalla 9. de archivos fuente los configure-make-make install desde el código Instalación desde También es el responsable de generar los de las librarías fuente de snort, eso lo dejo a tu elección... si eres una distribución makefiles necesarios y en caso que se libpcap para un usuario poco avezado en LiNUX como lo soy yo... RPM plataformas LiNUX produzcan errores nos avisará de ello. será una buena práctica personal y te ayudará a resolver otras muchas situaciones cuando se tenga 2º) Compilar el código fuente con make que compilar otros códigos fuente, en el próximo artículo esta acción será de uso obligado puesto make es un comando que existe en la práctica que no siempre los binarios se compilaron con todas las opciones disponibles ;) totalidad de distribuciones LiNUX, no es un script como configure, make usará el makefile Verificando la instalación de snort creado por configure y su función es compilar el código que será usado durante la instalación Plataformas Windows final, es como un archivo de inicialización y al igual que antes en muy importante que no No busques snort en se hayan producido errores durante el proceso. agregar o quitar 3º ) Instalar las librerías usando make programas... install no está allí... si has seguido make install, esto es el paso final del proceso. los pasos uno Pantalla 10. por uno lo Vista de la Lee la información del makefile creado, la tendrás en la carpeta de distribución que está siendo usada y los instalación en carpeta snort ficheros ejecutables u otros archivos creados en C:snort plataformas en la estructura de directorios. Tras finalizar Windows Página 44 PC PASO A PASO Nº 19
  • 45. Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad Esta no es la forma de probar snort, pero al También puedes actualizar las reglas en: menos estamos viendo las carpetas que se crearon durante el proceso de instalación y http://www.snort.org/dl/rules/ un programa unistall.exe para eliminarlo. También puedes usar whereis para encontrar los lugares donde está repartido snort bin están los binarios y programas para ejecutar snort doc, la documentación y ayudas log, se guardaran los registros de las intrusiones En fin, llegados a este punto, ya sea en LiNUX Pantalla 11. Contrib, encontrarás programas y archivos que o Windows, deberíamos tener “a punto” todo Ejemplo del contribuyen o mejoran el funcionamiento comando whereis lo necesario para empezar con nuestro IDS. para localizar los etc, hay algunos archivos para mantener alertas, reglas, binarios de snort en Aunque para este primer artículo no es preciso pero sobre todo un archivo muy, muy especial... LiNUX disponer de las aplicaciones que vienen a snort.conf que es el archivo de configuración del continuación, lo serán más adelante, así que, programa, algo así como el lugar donde snort acudirá vete instalando si los tienes aún las siguientes: para saber en el modo que ha de ejecutarse, las reglas que debe incluir, variables, directivas del pre-procesador... etc... Un Servidor Web, mejor Apache aunque uses Windows... aunque también rules, se guardan las reglas que se podrán aplicar. puede ser ISS El gestor de Bases de Datos, MySQL (imprescindible si instalamos snort con Plataformas LiNUX soporte MySQL) Intérprete de perl para Windows o En LiNUX los lugares en donde se instala LiNUX snort es diferente... Lenguaje PHP para la versión de tu sistema operativo. /usr/bin/snort están los binarios y programas para ejecutar snort Todos estos programas y aplicaciones ya han fueron usadas en artículos anteriores en la /usr/share/man/man8/snort.8.gz, la documentación revista, revisa los números donde se hablaba y ayudas de dsniff (en donde se usaba algún que otro script en perl) y en el artículo de creación /var/log/snort/, se guardaran los registros de las de foros phpBB2 (Apache+MySQL+PHP) intrusiones Si no dispones de los programas los /etc/snort, está el archivo de configuración y otros encontrarás en: /etc/snort/rules/ Las reglas http://httpd.apache.org/download.cgi ¿Y qué fue de Contrib? http://www.php.net/downloads.php http://www.mysql.com/downloads/in Pues en LiNUX no se instala a menos que dex.html descarguemos las contribuciones de terceros: http://www.perl.com/pub/a/language http://www.snort.org/dl/contrib/ /info/software.html PC PASO A PASO Nº 19 Página 45
  • 46. Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad El archivo de Configuración de No es el momento ahora de hablar snort: Snort.conf profundamente del mismo, pero es importante que modifiques o configures el archivo a las Si editamos el archivo snort.conf veremos características de tu red y preferencias... algo así: Snort usa variables para conocer la red, máquinas, etc... por omisión los valores son: Es imprescindible que ahora modifiques las Tabla . Principales variables con los valores correspondientes variables definidas al entorno que usas, para las prácticas que por snort vienen a continuación usaremos este escenario: Pantalla 12. Contenido del archivo de ! Donde está... Red interna: 172.28.0.0 /16 Red externa: cualquier dirección IP, red o subred configuración. Snort.conf Servidor web: 172.28.0.99 ¿Dónde está el archivo snort.conf? Venga, vale… En Windows hemos instalado el Al menos tienes que modificar las variables SNORT en c:snort ¿verdad?, pues el archivo snort.conf está en la HOME_NET, EXTERNAL_NET, carpeta c:snortetc HTTP_SERVERS. HTTP_PORTS y RULE_PATH, para ello busca dentro del ¿cómo podemos abrir y editar el archivo snort.conf? No, si picas archivo snort.conf las declaraciones de estas con el Mouse dos veces sobre el archivo NO SE ABRE, claro, puesto cuatro variables y dales los valores que que tiene extensión .conf y nuestro Windows “pasa” de él. Tienes necesiten, obviamente es posible que no que abrirlo con cualquier editor de texto plano, por ejemplo el Bloc manejes los mismos rangos de red/subred de Notas de nuestro Windows :) que los míos, adáptalos a tu configuración personal Y para los que crean que no es necesario explicar algo tan básico, bufff, tendrían que ver los correos electrónicos que nos llegan a la var HOME_NET 172.28.0.0/16 editorial ;) var EXTERNAL_NET any var HTTP_SERVERS 172.28.0.24 Es un archivo en texto plano que indica a var HTTP_PORTS 80 snort cómo debe actuar, las redes de que disponemos, las reglas, las variables “de var RULE_PATH ../rules (en Windows) entorno”, las directivas del pre-procesador , var RULE_PATH /etc/snort/rules (en LiNUX) las alertas... Página 46 PC PASO A PASO Nº 19
  • 47. Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad Vamos a probarlo, escribe snort –W en la Práctica 2. Ejecutar snort como un esnifer ventana de comandos y pulsa enter, pongo la captura de Windows. La forma más simple de ejecutar snort como un esnifer de paquetes usando algunas de las opciones mencionadas es: snort –dev (y pulsamos enter) ! IMPORTANTE IMPORTANTE: Pantalla 14. Mostrar En este caso hay 3, dos para WAN y 1 para los interfaces de red ethernet... este equipo es un portátil y dispone Antes hemos dicho que mediante la instrucción snort –W disponibles en de un MODEM interno que también puede ser podríamos visualizar las “tarjetas de red” que tenemos, en nuestro Windows con -W usado para monitorizar el tráfico con snort. caso han sido llamadas por Windows 1, 2 y 3 (pantalla 14). Seleccionar la tarjeta de red en ambas Ahora te acabamos de decir que ejecutes la orden snort –dev, plataformas se realiza con la opción –i sequida bien, en este caso “snifaremos” por defecto la tarjeta de red 1. del número de tarjeta de red deseada (Windows) o –i tarjeta de red (LiNUX, p.e. Pero en tu caso particular, puedes tener una o dos o tres o 200 –i eth0), tranquilo, ahora lo veremos en la “tarjetas de red” (cada uno tiene el equipo que puede comprar). practica 2. Imagina que en tu caso particular la tarjeta que está conectada a Internet es la 2 y queremos “snifar” precisamente esa. En tal caso, Tampoco puedo ahora extenderme mucho en en lugar de escribir snort –dev deberemos escribir snort –i 2 cada una de las opciones, ya sabes... –dev (y pulsar enter). problemas de espacio del artículo, por el momento veamos estas: -i 2 le dice al snort que “snife” la tarjeta de red número 2 -D, ejecuta snort como demonio o servicio -a, habilita la decodificación de protocolo ARP -e, similar a la anterior y podremos ver cosas como estas... -C decodifica los resultados en caracteres ASCII -v, muestra la decodificación detallada -d, volcado de los paquetes capturados -l, indica un directorio donde se guardarán los logs -p, inicializa snort en modo no promiscuo -N, no guarda logs -n, indica que tras n paquetes recibidos se tome una acción, por ejemplo terminar snort -y, muestra el año junto con la decodificación o logs -U, fecha/hora del análisis -c indica el directorio del archivo de configuración y sus reglas (snort.conf) Hay mas.... MUCHAS MAS... las iremos viendo Pantalla 15.Ejemplo a medida que avancemos, y no te equivoques cuando pulsemos CTRL.+c se detendrá de salida estándar de en el uso entre mayúsculas y minúsculas, no snort snort... y mostrará las estadísticas: es lo mismo –A que -a PC PASO A PASO Nº 19 Página 47
  • 48. Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad De hecho no hubiese sido preciso Comandos). Ya se ha explicado mil veces modificar nada, si lo dejamos como está -----------> Menu Inicio --> Todos los funcionarán igual de bien nuestras programas --> Accesorios --> Símbolo prácticas pero es mejor “delimitar” el del Sistema alcance de snort y empezar a manipular Nos situaremos en el directorio de el archivo... más adelante será necesario. instalación (C:snortbinsnort, si seguiste los pasos indicados Si te estás preguntando si se pueden indicar anteriormente). Ya sabes, escribiremos más de una red interna o externa, más de en la ventanita negra la orden cd un puerto para el web server, etc... la c:snortbin (y pulsaremos enter) respuesta es SI, sería así: Ejecutaremos el programa, ya sabes, escribiremos snort (y pulsaremos enter) var INTERNAL_NETS [172.28.0.0/16,192.168.10.0/24,10.0.0.0/8] var HTTP_PORTS 80:85 Estas líneas definen tres redes internas y le dicen a snort que el webserver escucha peticiones por los puertos, 80, 81, 82, 83, 84, ó 85.... ! Buff!!!... Buff!!!, no puedo, no tengo espacio para explicar lo que son las redes, subredes, máscaras de subred, CIDR…. En los foros de hackxcrack (www.hackxcrack.com) podremos ayudarte, además de varios links ya existentes podemos explicártelo un poquito más, ahora no es el momento, por otra parte la Revista acaba de iniciar un curso de TCP/IP que seguro responde a esas dudas, también el los foros hicimos un Taller de TCP/IP hace unos meses, pásate por allí si no sabes cual es el formato CIDR que debes aplicar a tu dirección de red… Práctica 1. Ejecutar snort y opciones de ejecución Lo primero que haremos es ejecutar snort “sin más”. Pantalla 13. Las opciones y sintaxis con las que se puede Opciones de línea En LiNUX podremos hacerlo simplemente iniciar snort en ambas plataformas son de comando para escribiendo snort. prácticamente idénticas, alguna nueva en ejecutar snort Windows como –W “en mayusculas” (que En Windows: muestra una lista de las interfaces de red Abriremos una de nuestras famosas disponibles) pero poco más, si todo fue bien “ventanitas negras” (Ventana de aparecerá algo así: (pantalla 14) Página 48 PC PASO A PASO Nº 19
  • 49. Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad Pantalla 17. Ejecución de snort en modo logging o registro de paquetes Ahora, desde otro equipo hacemos un ping a la dirección IP donde está corriendo snort Pantalla 18. Ejemplo de ping desde cualquier Pantalla 16. Complicado, verdad? equipo de la red Resultado y hacia otro equipo de estadísticas tras pulsar CTRL.+C Ciertamente lo complicado es saber interpretar la red la captura del esnifer, no te preocupes por ahora si no lo entiendes, de momento lo que Si miramos en el directorio /var/snort_logs, importa es que “salgan cosas”, luego veremos veremos esto: con más detalle alguna de estas salidas. Para los que hayáis seguido el Taller de TCP/IP que hicimos en los foros de HackXcrack no tendrá ningún misterio saber interpretar la salida del esnifer, los que no lo hayáis hecho tendréis dudas... bueno, no importa... en estos momentos la revista está siguiendo un curso de TCP/IP, esto te ayudará y también estos mismos artículos cuando llegue el momento. Pantalla 19. Vista y contenido del Práctica 3. Ejecutar snort como directorio de logs un capturador de logs tras la detección de paquetes Bueno, esta la vamos a hacer desde LiNUX... para que no me digan luego que “todo es Verás que se crearon varias carpetas... Windows”, lo único que tendremos que hacer snort generará una por cada dirección IP que es indicarle a snort donde debe guardar los registre (172.28.0.50 la del equipo que hizo registros y que ese directorio exista, claro... el ping, etc...) Ahora abriremos esa... snort –de –l /var/snort_logs PC PASO A PASO Nº 19 Página 49
  • 50. Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad acceso mediante el bug de unicode a nuestro servidor web, ya sabes... el bug de code-decode tan “pasado” y ampliamente comentado en esta revista y en los foros, pero es algo a lo que “ya estamos habituados” y sabemos como funciona... ya verás, ya... hay muchas otras vulnerabilidades que pueden ser descubiertas gracias a snort y no me refiero sólo a las de los servidores web.... ftp, telnet, rpc, netbios.... Esta práctica no la detallaré... tendrás que tener Fé, confiar en lo que ponga y repetir lo Pantalla 20. mismo... es una introducción a lo que nos Contenido Hay un archivo que corresponde a la petición vendrá mas tarde: específico de una de las carpetas de echo (la solicitud del ping) registro Disponemos de un sistema snort corriendo en nuestra red interna 172.28.0.0/16 que vigila desde un equipo LiNUX RH8 de ip 172.28.0.200 y un servidor web con dirección IP 172.28.0.99, lo que pretendemos es registrar los pings a cualquier equipo de la red y los intentos de explotar el bug de unicode. Un dato importante... no es preciso que el webserver sea vulnerable... snort recogerá los intentos sea o no sea vulnerable al “acceso transversal al sistema de archivos”. Debemos tener el archivo snort.conf bien configurado y hay que aplicar alguna regla... Paso 1º) Crear un archivo de texto el cual Pantalla 22. Definir contiene las reglas de nuestro escenario: un archivo de reglas personalizado Pantalla 20. Contenido específico de una de Práctica 4. snort como un NIDS las carpetas de usando alertas y reglas registro Bueno, me quedo sin espacio... o ya me he pasado..., vamos a realizar una práctica global que monitorice las peticiones ping a cualquier equipo de la red, nos alerte de ello y dispare alarmas ante un posible Página 50 PC PASO A PASO Nº 19
  • 51. Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad Y lo guardaremos en algún lugar de nuestro disco, elegí /var/snort_logs/ puede ser otro siempre y cuando el archivo de configuración apunte a ese directorio, el nombre de ese archivo será reglas.bug.codedecode, puede ser otro también... y como antes debe corresponderse con la información que demos en el paso 3º) Pantalla 24. Creación y contenido del nuevo Escribe todas esas reglas en una sola archivo de línea. Este sí que lo vamos a comentar algo más configuración: porque “pertenece” al contenido de este snort.conf A poco que seamos algo espabiladillos artículo: entenderemos las reglas... pero no te preocupes si no las “cazas” ahora, esto es parte de próximos artículos... Línea 1 indica la red en la que estamos Paso 2º) Renombraremos el archivo de (172.28.16.0.0/16) configuración situado en /etc/snort/snort.conf como Línea 2, la red externa... cualquiera (any) /etc/snort/snort.conf.old (En Windows está situado en C:snortetcsnort.conf) Línea 3, el camino que apunta al archivo o archivos de reglas (este debe ser el mismo directorio en donde guardamos las reglas establecidas en el paso 1º) Línea 4 y línea 5, indican la dirección IP y puerto de nuestro servidor web, observa que se puso $HOME_NET como dirección IP. Es decir, snort monitorizará cualquier servidor web de la red 172.28.0.0 /16 Líneas 6, 7 y 8, incluyen las directivas del preprocesador, sólo hacemos referencia a frag2 y stream4, recuerda lo que se dijo al principio de ellos y para lo que servían. Pantalla 23. Cambiar de nombre Con esto conseguiremos no perder el archivo el archivo de original Línea 9, indica cual será el o los archivos de reglas configuración a a aplicar, cada archivo de reglas debe nombrarse con snort.conf.old Paso 3º) Crear el nuevo archivo de un include por archivo, en nuestro caso, sólo hay un configuración en el directorio de ejecución archivo de reglas. del programa... para LiNUX el lugar será /etc/snort y para Windows será C:snortetc . Paso 4º) Ejecutaremos snort indicándole la forma de aplicar esas reglas... El archivo a crear se llamará snort.conf y snort –de –l /var/snort_logs –c /etc/snort/snort.conf tiene este contenido: PC PASO A PASO Nº 19 Página 51
  • 52. Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad Paso 6º) Situación de alertas y logs La opción –l le sigue un directorio dónde se guardarán Veamos que ocurrió en el directorio los logs, como en la práctica número 3 pero a diferencia /var/snort_logs donde está ejecutándose de ella, ahora sólo aplicará las reglas establecidas y por el IDS.. tanto sólo registrará aquello que tenga que ver con esas reglas, además cuando se descubra una alerta creará un Lo primero que vemos es que se crearon una archivo de texto llamado alerts que guardará los registros carpeta (172.28.0.50, que corresponde a de las mismas. (si lo pruebas en plataformas Windows, la IP del equipo “atacante” ) y un archivo ese archivo se llamará alerts.ids alert que guarda las alarmas. Otra diferencia es que omitimos el parámetro –v y no se mostrará nada por pantalla, luego te toca practicar en casa con algunas de las opciones que vimos... es mejor no indicar la opción verbose (-v) puesto que así no cargamos de trabajo extra a snort y a nuestra máquina... Paso 5º) Accesos Pantalla 27. Situación del directorio de Sólo nos queda probar a ver que pasa... así registros de logs q u e va m o s a c o g e r o t r o e q u i p o y “navegaremos” hacia el servidor web intentando un acceso por unicode... luego veremos que ocurrió: Pantalla 28. Cambiar de nombre el archivo de configuración a snort.conf.old Pantalla 25. Petición Como verás aparecen las alertas del intento web para explotar el Desde otro equipo o desde el mismo hacemos de explotación tal y como definimos en las bug de unicode un ping para probar la regla de ICMP.... reglas y también el/los pings realizados contra desde un equipo cualquiera de la red el servidor web Pantalla 25. Petición Pantalla 29 ICMP eco (ping) Contenido de la carpeta de IP's desde un equipo logeadas cualquiera de la red Página 52 PC PASO A PASO Nº 19
  • 53. Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad Los dos archivos que contiene esta carpeta guardan información detallada acerca de cada una de las acciones, ICMP_ECHO se corresponde con el ping y TCP:3444-80 es la información detallada del intento Pantalla 30. por unicode Contenido del paquete Así que terminemos el artículo y veamos el correspondiente a la petición ping contenido de ambos: Pantalla 31. Contenido del paquete correspondiente al intento de explotar el bug de unicode
  • 54. Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - IDS - Seguridad - ID- Seguridad Ya sé que ha sido “excesiva” la profusión de Espero que todo se haya entendido pantallas, comentarios y otras “lindezas” pero correctamente, nos queda un largo trecho y es mejor ahora que luego... y en estos casos: la parte más complicada de snort, definir mejor pecar en exceso que quedarse con mil reglas, contramedidas ante los ataques, dudas, en los próximos números no será “tan informes, plug-ins de salida, etc.. todo ello minucioso” el análisis, puesto que ya en su conjunto hará nuestra vida por la red tendremos cierta experiencia y además habrás más segura y si después de todo ello tenido mucho más tiempo para practicar con implementamos un firewall en condiciones, snort. será bastante difícil que nos invadan las malas compañías. Un saludo. ¿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 Página 54empleo@editotrans.com y te responderemos concretando nuestra oferta. Nº 19 PC PASO A PASO
  • 55. SERVIDOR DE HXC MODO DE EMPLEO - Hack x Crack ha habilitado tres servidores para que puedas realizar las Explicamos esto porque la mayoría, seguro que piensa en un Servidor Web como en algo extraño que no saben ni prácticas de hacking. donde está ni como se accede. Bueno, pues ya sabes dónde se encuentran la mayoría de IIS (en Inetpub) y cuál es - Las IPs de los servidores de hacking las la página por defecto (Inetpubwwwrootdefault.htm). Y encontrarás en EL FORO de la revista ahora, piensa un poco… … ¿Cuál es uno de los objetivos de ( w w w . h a c k x c r a c k . c o m ) . Una vez en el foro entra un hacker que quiere decirle al mundo que ha hackeado en la zona COMUNICADOS DE HACK X CRACK (arriba del u n a We b ? P u e s e s t á c l a r o, e l o b j e t i vo e s c a m b i a r ( o s u s t i t u i r ) todo) y verás varios comunicados relacionados con los el archivo default.html por uno propio donde diga “hola, servidores. No ponemos las IP aquí porque es bueno soy DIOS y he hackeado esta Web” (eso si es un lamer ;) acostumbrarte a entrar en el foro y leer los comunicados. Si hay alguna incidencia o cambio de IP o lo que sea, se A partir de ese momento, cualquiera que acceda a ese comunicará en EL FORO. s e r v i d o r, v e r á e l d e f a u l t . h t m m o d i f i c a d o p a r a v e r g ü e n z a d e l “site” hackeado. Esto es muy genérico pero os dará una idea de cómo funciona esto de hackear Webs ;) - Actualmente tienen el BUG del Code / D e c o d e . La forma de “explotar” este bug la explicamos - Cuando accedas a nuestro servidor mediante el CODE / extensamente en los números 2 y 3. Lo dejaremos así por DECODE BUG, crea un directorio con tu nombre (el que mas un tiempo (bastante tiempo ;) Nuestra intención es ir te guste, no nos des tu DNI) en la unidad d: a ser habilitando servidores a medida que os enseñemos distintos posible y a partir de ahora utiliza ese directorio para hacer tipos de Hack. t u s p r á c t i c a s . Ya s a b e s , s u b i r n o s p r o g r a m i t a s y p r a c t i c a r con ellos :) ... ... ¿cómo? ¿que no sabes crear directorios - En los Servidores corre el Windows 2000 con el IIS de Servidor Web. No hemos parcheado ningún bug, ni mediante el CODE/DECODE BUG... repasa los números 2 y t a n s i q u i e ra e l R P C y p o r s u p u e s t o t a m p o c o h e m o s i n s t a l a d o tres de Hack x Crack ;p n i n g ú n S e r v i c e Pa c k . Pa ra q u i e n p i e n s e q u e e s o e s u n e r r o r (lógico si tenemos en cuenta que el RPC provoca una caída Puedes crearte tu directorio donde quieras, no es necesario completa del sistema), solo decirte que AZIMUT ha que sea en d:mellamojuan. Tienes total libertad!!! Una configurado un firewall desde cero que evita el bug del i d e a e s c r e a r l o , p o r e j e m p l o , e n RPC, (bloqueo de los puertos 135 (tcp/udp), 137 (udp), d:xxxsystem32default10019901mellamojuan (ya irás 138 (udp), 445 (tcp), 593 (tcp)). La intención de todo esto aprendiendo que cuanto mas oculto mejor :) es, precisamente, que puedas practicar tanto con el CODE/DECODE como con cualquier otro “bug” que conozcas (y hay cientos!!!). Poco a poco iremos cambiando la Es posiblemente la primera vez que tienes la oportunidad c o n f i g u ra c i ó n e n f u n c i ó n d e l a e x p e r i e n c i a , l a i d e a e s t e n e r de investigar en un servidor como este sin cometer un delito los Servidores lo menos parcheados posibles pero (nosotros te dejamos y por lo tanto nadie te perseguirá). mantenerlos operativos las 24 horas del día. Por todo ello Aprovecha la oportunidad!!! e investiga mientras dure esta y debido a posibles cambios de configuración, no olvides iniciativa (esperemos que muchos años). visitar el foro (Zona Comunicados) antes de “penetrar” en nuestros servidores. - En este momento tenemos mas de 600 carpetas de peña que, como tu, está practicando. Así que haznos caso y crea - Cada Servidor tiene dos unidades (discos duros duros): t u p r o p i a c a r p e t a d o n d e t r a b a j a r. * La unidad c: --> Con 40GB y Raíz del Sistema * La unidad d: --> Con 40GB * La unidad e: --> CD-ROM N o t a : R a í z d e l S e r v i d o r, s i g n i f i c a q u e e l W i n d o w s A d va n c e d ! Server está instalado en esa unidad (la unidad c:) y concretamente en el Por lo tanto, la raíz directorio por defecto winnt del sistema está en c:winnt MUY IMPORTANTE... - E l I I S , I n t e r n e t I n f o r m a t i o n S e r v e r, e s e l S e r v i d o r d e páginas Web y tiene su raíz en c:inetpub (el directorio por defecto) MUY IMPORTANTE!!!!! Por favor, no borres archivos Nota: Para quien nunca ha tenido instalado el IIS, le será del Servidor si no sabes exactamente lo que estás haciendo ni e x t ra ñ o t a n t o e l n o m b r e d e e s t a c a r p e t a ( c : i n e t p u b ) c o m o s u c o n t e n i d o . Pe r o b u e n o , u n d í a d e e s t o s o s e n s e ñ a r e m o s borres las carpetas de los demás usuarios. Si haces eso, lo único a i n s t a l a r v u e s t r o p r o p i o S e r v i d o r We b ( I I S ) y d e t a l l a r e m o s su funcionamiento. que consigues es que tengamos que reparar el sistema servidor De momento, lo único que hay que saber es que cuando y, mientras tanto, ni tu ni nadie puede disfrutar de él :( T Ú p o n g a s n u e s t ra I P ( l a I P d e u n o d e n u e s t r o s s e r v i d o r e s ) en tu navegador (el Internet explorer por ejemplo), lo que Es una tontería intentar “romper” el Servidor, lo hemos puesto estás haciendo realmente es ir al directorio c : I n e t p u b w w w r o o t y l e e r u n a r c h i vo l l a m a d o d e fa u l t . h t m . para que disfrute todo el mundo sin correr riesgos, para que todo Nota: Como curiosidad, te diremos que APACHE es otro el mundo pueda crearse su carpeta y practicar nuestros ejercicios. S e r v i d o r d e p á g i n a s We b ( s e g u r o q u e h a s o í d o h a b l a r d e él). Si tuviésemos instalado el apache, cuando pusieses En el Servidor no hay ni Warez, ni Programas, ni claves, ni nada n u e s t r a I P e n T U n a v e g a d o r, a c c e d e r í a s a u n d i r e c t o r i o de nada que “robar”, es un servidor limpio para TI, por lo tanto raíz del Apache (donde se hubiese instalado) e intentarías leer una página llamada index.html ... pero... ¿qué te cuídalo un poquito y montaremos muchos más :) estoy contando?... si has seguido nuestra revista ya dominas de sobras el APACHE ;) PC PASO A PASO Nº 19 Página 55
  • 56. Curso de PHP Aprende a manejar SOCKETS con PHP - Aprenderemos a manejar SOCKETS - Qué es un SOCKET - Tocaremos algunos conceptos de TCP / IP - Programaremos un Cliente en PHP - Programaremos un Servidor PHP Continuamos con el curso de PHP, en este Derivados de los Multics y los sistemas número aprenderemos a manejar sockets. anteriores, los sistemas primitivos de entrada La programación de socket da mucho juego, y salida de UNIX siguen un paradigma que pero es necesario conocer conceptos básicos algunas veces se denomina open-read-write- de TCP/IP. Con socket se puede programar close. un servidor, un cliente telnet, un servidor de FTP, ... un sin fin de aplicaciones. Este capítulo Antes de que un proceso de usuario es tal vez el más complejo ya que hace falta pueda ejecutar operaciones de E/S, conocer TCP/IP y conocimientos de redes. llama a open para especificar el archivo Daremos varios ejemplos de cómo programar o dispositivo que va a usar y obtiene el un servidor y un cliente. permiso. La llamada a open devuelve un Un poco de culturilla sobre el pequeño entero descriptor de archivo, origen de los sockets. que el proceso utiliza cuando ejecuta las operaciones de E/S en el archivo o No desesperes si no entiendes muchos de los dispositivo abierto. conceptos que estás a punto de leer en esta Una vez que se ha abierto un objeto, introducción, ¿vale?, al final verás un cuadro el proceso de usuario hace una o más de resumen con lo verdaderamente llamadas a read o write para transferir importante. datos. Unix fue desarrollado a finales de los años Read transfiere datos dentro del sesenta y principios de los setenta, y se diseñó proceso de usuario. originalmente como un sistema orientado al Write transfiere datos del proceso de proceso, en el que cada programa de usuario al archivo o dispositivo. aplicación se ejecuta como un proceso de Tanto read como write toman tres nivel de usuario. Un programa de aplicación argumentos que especifican el descriptor interactúa con el sistema operativo haciendo de archivo que se ha de usar, la dirección llamadas de sistema. de un búfer y el número de octetos que se han de transferir. Desde el punto de vista del programador, las Luego de completar todas las llamadas de sistema se ven y comportan operaciones de transferencia, el proceso exactamente igual que las demás llamadas de usuario llama a close para informar de procedimiento. Toman argumentos y al sistema operativo que ha terminado devuelven uno o más resultados. Los de usar el objeto. argumentos pueden ser valores (por ejemplo, una operación de enteros) o punteros a Originalmente, los diseñadores de UNIX objetos en el programa de aplicación (como agruparon todas las operaciones de E/S en el un búfer que ha de ser llenado con paradigma open-read-write-close descrito caracteres). Página 56 PC PASO A PASO Nº 19
  • 57. Programación PHP - Programación de sockets - Programación PHP - Programación de sockets anteriormente. EL esquema incluyó E/S para aplicación utilice uno o más de ellos a la vez. los dispositivos orientados a caracteres (como Como consecuencia, el programa de aplicación los teclados) y para dispositivos orientados a no sólo puede proporcionar una dirección de bloques (como los discos y los archivos de 32 bits y esperar a que el sistema operativo datos). la interprete de manera correcta, la aplicación debe especificar explícitamente que el número Una de las primeras implantaciones del TCP/IP de 32 bits representa una dirección IP. bajo Unix también utilizó el paradigma open- read-write-close con un nombre de archivo La base para la E/S de la red en BSD de UNIX especial, /dev/tcp se centra en una abstracción conocida como socket. Imagina el socket como una El grupo que añadió los protocolos de red a generalización del mecanismo de acceso a BSD de UNIX decidió que, como los protocolos archivos de UNIX que proporciona un punto de la red eran más complejos que los final para la comunicación. dispositivos convencionales de E/S, la interacción entre los procesos del usuario y Al igual que con el acceso a archivos, los los protocolos de red debía ser más compleja programas de aplicación requieren que el que las interacciones entre los procesos de sistema operativo cree un socket cuando se usuario y las instalaciones convencionales de necesita. El sistema devuelve un número E/S. entero pequeño que utiliza el programa de aplicación para hacer referencia al socket En particular, la interfaz de protocolo de debía recientemente creado. permitir a los programadores crear un código de servidor que esperase las conexiones La diferencia principal entre los descriptores pasivamente, así como también un código de archivos y los descriptores de socket es el cliente que formara activamente las sistema operativo enlaza un descriptor de conexiones. archivo a un archivo o dispositivo específico cuando la aplicación llama a open, pero puede Además, los programas de aplicación que crear sockets sin enlazarlos a direcciones de mandaban datagramas podían especificar la destino específicas. dirección de destino junto con cada datagrama en lugar de destinos enlazados en el momento La aplicación puede elegir abastecer una en que llamaban a open. dirección de destino cada vez que utiliza el socket (es decir, cuando se envían datagramas) Para manejar todos estos casos, los o elegir enlazar la dirección de destino a un diseñadores eligieron abandonar el paradigma socket y evadir la especificación de destino tradicional de UNIX open-read-write-close y repetidamente (es decir, cuando se hace una añadir varias llamadas nuevas del sistema conexión TCP). operativo, así como una nueva biblioteca de rutinas. ! CUADRO RESUMEN Posteriormente surgió una mayor complejidad en la interfaz de protocolos de UNIX pues los CUADRO DE RESUMEN: La manera de trabajar con socket es diseñadores intentaron construir un mecanismo similar a los ficheros. Los socket nos permiten conectar con otras general para adaptar muchos protocolos. Por máquinas. Es importante saber que todos los servidores TCP/IP ejemplo, la generalidad hace posible, para el funcionan mediante socket, es decir, que si comprendes el sistema operativo, incluir software para otros paradigma socket estarás comprendiendo el verdadero corazón conjuntos de protocolos así como también de todas las aplicaciones de Internet TCP/IP (Telnet, FTP, email, TCP/IP y permitir que un programa de ...) PC PASO A PASO Nº 19 Página 57
  • 58. Programación PHP - Programación de sockets - Programación PHP - Programación de sockets Todo eso está muy bien, ¿pero saber, pesticida para los cultivos de arroz (no sería una buena que es realmente un socket? idea juntar pesticida con coca-cola, ¿verdad?). La mayoría de las aplicaciones que funcionan Para solucionar el enorme gasto de tiempo y dinero que supone en un entorno de red están formadas por dos limpiar la súper-tubería cada vez que cambian de líquido, deciden elementos: el cliente y el servidor. Para meter dentro de la súper-tubería unas 65000 mangueras. Y deciden poder enviar órdenes a un servidor que está que, a partir de ahora, por la manguera 1 (puerto 1) enviarán atendiendo nuestras peticiones se utilizan los gasolina, por la manguera 2 (puerto 2) coca-cola, por la manguera sockets. tres (puerto 3) acido acético y así hasta las 65000. Para definir qué es un socket, pensemos en Por otro lado, cada extremo de cada manguera se conecta a un ello como una pequeña tubería por la que se grifo (socket). Es decir, la manguera 1 (puerto 1) tiene un extremo pueden enviar datos. conectado a un grifo en Alemania (socket) y otro extremo conectado a un grifo (socket) en España. Como existen diferentes tipos de datos a enviar en función del servicio utilizado (Web, VAMOS A INTENTARLO!!! FTP, e-mail, Telnet…) existe una forma de La fábrica alemana (servidor) quiere enviar a la fábrica Española definir qué “tubería” queremos utilizar: se (cliente) un líquido (datos) y para ello abre el grifo (socket) de define mediante un número que se denomina la manguera 80 (puerto 80). El líquido (datos) pasa por la puerto. De esta forma se puede acceder a manguera 80 (puerto 80) y llega hasta el otro extremo, hasta el un servidor que mantenga activos diferentes grifo (socket) que hay en España. servicios y, por lo tanto, se acceda a través de diferentes puertos a un servicio concreto. Hemos dicho que cada manguera debía contener un producto, y en este caso los ejecutivos de la multinacional decidieron que ! El paralelismo “normalmente” (ya sabes que los ejecutivos pueden cambiar de opinión) por la manguera 80 (puerto 80) circulará líquido (datos) del tipo “agua mentolada” (Web). Por lo tanto, a eso lo llaman EL PARALELISMO: Tuberías de líquidos. servicio de “agua mentolada” (servicio Web). Para quien todavía esté perdido entre palabras como cliente, La verdad es que se lo han montado muy bien, la fábrica alemana servidor, sockets, puertos y servicios, vamos a hacer un paralelismo (servidor) puede servir a la fábrica Española (cliente) hasta con la vida real. 65.000 tipos de líquidos (65000 servicios, Servicios Web, Servicios FTP, Servicios…). Imaginemos que una de esas “súper-multinacionales” (tan de moda hoy en día) monta una fábrica en Alemania que fabrica No quiero extenderme con el paralelismo porque hay pocas (sirve, servidor) unos 65.000 tipos de líquidos y otra en España páginas en la revista, solo imagina que los ejecutivos se dan que consume (cliente) esos líquidos. cuenta que los líquidos (datos) pueden ir tanto de Alemania a España como de España a Alemania (un cliente se puede Como son muy “chulos” y no quieren depender de nadie, para transformar en servidor y un servidor en cliente). Además, los trasladar los líquidos de Alemania a España montan tubería paralelismos son simples aproximaciones ( a veces demasiado MUY MUY LARGA y MUY MUY GRUESA que va desde la fábrica simples), a medida que aprendas sobre un tema tendrás que de Alemania hasta la fábrica de España (pidiendo los permisos “adaptar” (y ampliar) este paralelismo. pertinentes a dichos países, claro ;) Hay dos tipos de estudiantes (y todos somos alumnos de la vida), Imagina que desde Alemania quieren enviar a España gasolina los que simplemente acumulan datos (enciclopedias andantes) y coca-cola. Tienen un problema: primero tendrán que enviar y los que transforman los datos en conocimiento (los que coca-cola, después limpiar la súper-tubería, enviar el gas-oil y entienden)… ya sabes a quien va dirigida esta revista ;) volverla a limpiar porque mañana pueden querer enviar, vete a Página 58 PC PASO A PASO Nº 19
  • 59. Programación PHP - Programación de sockets - Programación PHP - Programación de sockets PHP proporciona acceso a lo que se denomina TCP (Transmission Control Protocol), la transmisión de los socket de Berkeley. Se trata, por lo tanto, de paquetes está numerada y es ensamblada en el destino un conjunto de funciones (de nuevo una API) siguiendo la numeración de los paquetes. Si un paquete que permite establecer una comunicación falta se vuelve a solicitar. Es decir, TCP es un protocolo con otro sistema que puede recibir y enviar seguro que no permite perdida de datos. información utilizando esta técnica. Ejemplos de protocolos TCP: HTTP, FTP, EMAIL, TELNET, ... Un socket puede funcionar como servidor o como cliente (espero que después del UDP (User Datagram Protocol), este protocolo permite paralelismo “Tuberías de líquidos” entiendas perder datos, si algún paquete se pierde no se vuelve a esta frase :) solicitar, se asume la perdida, ¿qué servicios pueden utilizar UDP?, pues por ejemplo los protocolos de video por Internet, Un socket de servidor es un servicio al que de voz, música por Internet, donde no es crucial el 100% se le ha asignado un puerto por el cual escucha y responde. Por ejemplo, si abres la calidad y donde se solicita información en tiempo real, varios navegadores Web y visitas páginas lógicamente el UDP es más rápido que el TCP. diferentes, estarás abriendo varios socket diferentes y todo ellos tienen asignados el PHP Socket mismo puerto (puerto 80). Esto sería como una manguera que en su extremo tiene varios PHP soporta el manejo de sockets a bajo nivel. En PHP3 grifos ;) se introdujo manejar socket gracias a la función fosckopen() entre otras funciones asociadas. Los servidores de emails (POP3, SMTP) y servidores Web son buenos ejemplos de Las funciones socket en PHP están en fase experimental servidores sockets. El servidor HTTP (Web) escucha por el puerto 80 las solicitudes y y aún pueden ser modificadas, pero lo cierto es que responde con información HTML y otros funcionan muy bien y se puede crear aplicaciones con ficheros (por ejemplo imágenesimagenes). estas funciones. Generalmente el socket servidor se encuentra Creando socket en PHP continuamente funcionando, por lo general es un servicio de Windows o un demonio de Programar socket en PHP es muy similar a cómo se Linux. programa con funciones en C. Vamos a comenzar con un simple ejemplo: un Servidor socket que escucha una Tipos de socket conexión por el puerto 9000, acepta una cadena de texto como entrada y retorna la misma cadena de texto pero Si estás siguiendo el curso de TCP/IP ya borrando los espacios en blanco. sabrás que hay dos formas de enviar la información, por TCP y UDP, esto quiere decir que la información por Internet puede ser <?php enviada por uno de estos dos protocolos. La // Tiempo ilimitado de ejecución, para que esté funcionando eternamente. información es dividida en paquetes y luego ensamblada en el destino. set_time_limit (0); Si hay dos formas de enviar información, // La IP y el puerto por donde van a escuchar, recuerda que una misma entonces PHP tiene que soportar la creación // máquina puede tener varias IPs de sockets tanto TCP como UDP. $address = ‘127.0.0.1’; $port = 9000; ¿Es importante saber esto de TCP y UDP?, si que lo es, ya que es necesario para saber // Crea un socket TCP Stream como conectar con servidores y obtener $sock = socket_create(AF_INET, SOCK_STREAM, 0); información ....... // Se asocia el socket a la direccion IP y al puerto PC PASO A PASO Nº 19 Página 59
  • 60. Programación PHP - Programación de sockets - Programación PHP - Programación de sockets socket_bind($sock, $address, $port) or die(‘Error al asociar’); 3. socket_listen($sock); // Escucha por el socket socket_listen($sock); Escucha por el socket, es decir, va a esperar a que llegue información por el puerto 9000 /* Se comunica que acepte la conexión */ de la IP 127.0.0.1 $client = socket_accept($sock); 4. $client = socket_accept($sock); // Lee 1024 caracteres de la conexión $input = socket_read($client, 1024); Al ser TCP, el cliente solicita una conexión. Esta línea hace que el Servidor acepte la // Reemplaza los espacio en blanco conexión, de esta forma podrá capturar la $output = ereg replace("[ tnr]","",$input).chr(0); información procedente del cliente mediante el socket. // Envía la cadena al cliente socket_write($client, $output); 5. $input = socket_read($client, 1024); // Cierra la conexión Una vez que la conexión TCP ha sido aceptada socket_close($client); se captura 1024 caracteres o hasta que se envíe un retorno de carro (pulsando la tecla // Cierra el socket Return) enviados por el cliente. socket_close($sock); ?> 6. $output = ereg replace("[ tnr]","",$input).chr(0); Vamos a comentar el programa. Recuerda que el cometido del programa es hacer de servidor, de recibir un texto y La función ereg_replace ya se ha comentado luego devolverlo sin espacios en blanco (y todo ello en en anteriores capítulos, en este ejemplo elimina TCP). Un Servidor Web funciona de forma muy parecida, los espacios en blanco. pero sirviendo páginas HTML. 7. socket_write($client, $output); 1. $sock = socket_create(AF_INET, SOCK_STREAM, 0); Escribe el resultado en la conexión establecida, Se crea un socket que hará de servidor, para cliente ya lo al cliente le llegará el texto enviado pero sin veremos después. espacios. AF_INET indica que el protocolo a aceptar será IPV4, usado tanto para TCP o UDP. 8. Socket_close($cliente) y socket_close($sock) SOCK_STREAM indica que será un socket full duplex, aceptando peticiones de tipo streams. Cierra la conexión y el socket, para liberar Resumiendo: Con esta línea indicamos que se cree recursos. un socket en TCP. Si fuera UDP habría sustituir SOCK_STREAM por SOCK_DGRAM. Creando un servidor real 2. socket_bind($sock, $address, $port) or die(‘Error al asociar’); Ahora que ya conocemos los conceptos básicos para trabajar con socket, vamos a crear un Una vez que ya está creado el socket es necesario asociarlo verdadero servidor. El anterior ejemplo tenía a una IP y aun puerto para que sepa por donde trabajar. la limitación de que solo aceptaba una Página 60 PC PASO A PASO Nº 19
  • 61. Programación PHP - Programación de sockets - Programación PHP - Programación de sockets conexión, es como si un Servidor Web solo aceptara una // Set up a blocking call to socket_select() visita, lógicamente eso no puede decirse que sea un servidor $ready = socket_select($read,null,null,null); de verdad. /* Si hay una nueva conexión lo añade al array de conexiones */ if (in array($sock, $read)) { for ($i = 0; $i < $max_clients; $i++) El siguiente ejemplo aceptará varias conexiones de varios { clientes, ¡¡esto si que es un verdadero servidor!!. if ($client[$i]['sock'] == null) { $client[$i]['sock'] = socket_accept($sock); Para conseguir el que programa nunca termine y siempre break; acepte nuevas conexiones podemos usar while(true) { /* } código */ }. elseif ($i == $max_clients - 1) print ("Demasiados clientes") El siguiente ejemplo es similar al anterior pero con algunas } if (--$ready <= 0) nuevas funcionalidades: continue; } // Fin del array de clientes El programa no termina al aceptar una conexión. // Si el cliente está intentando leer le asocia un handle y lee el contenido Crea un sistema fácil para finalizar el servidor. for ($i = 0; $i < $max_clients; $i++) Acepta simultáneamente varios clientes. { if (in array($client[$i]['sock'] , $read)) <?php { // Tiempo de ejecución ilimitado $input = socket_read($client[$i]['sock'] , 1024); set_time_limit (0); if ($input == null) { // Si la longitud es cero desconecta // IP y puerto de escucha unset($client[$i]); $address = ‘127.0.0.1’; } $port = 9000; $n = trim($input); $max_clients = 10; if ($input == 'exit') { // Si se recibe la palabra exit se desconecta // Crea un array de clientes (para aceptar varias peticiones) socket_close($client[$i]['sock']); $clients = Array(); } elseif ($input) { // Elimina los espacios en blanco // Crea un socket TCP $output = ereg replace("[ tnr]","",$input).chr(0); $sock = socket_create(AF_INET, SOCK_STREAM, 0); socket_write($client[$i]['sock'],$output); // Asocia el socket al puerto y dirección } socket_bind($sock, $address, $port) or die(‘Error al asociar’); } else { // Comienza a leer por el socket // Cierra los socket socket_listen($sock); socket_close($client[$i]['sock']); unset($client[$i]); // Ciclo infinito, para que no termine de aceptar peticiones } while (true) { } // Inicia el array para aceptar conexiones } $read[0] = $sock; socket_close($sock); for ($i = 0; $i < $max_clients; $i++) ?> { if ($client[$i]['sock'] != null) La funcionalidad del programa es la misma del primer $read[$i + 1] = $client[$i]['sock'] ; ejemplo, con algunas mejoras – cuando el cliente envía la } palabra EXIT el servidor finaliza la conexión con ese usuario. PC PASO A PASO Nº 19 Página 61
  • 62. Programación PHP - Programación de sockets - Programación PHP - Programación de sockets $entrada .= "Connection: Closernrn"; El programa es muy similar al primero, excepto el bucle $salida = ''; infinito y algunos bloques de código: echo "Enviando petici&oacute;n HTTP HEAD..."; 1. Inicia un socket para cliente. socket_write($socket, $entrada, strlen($entrada)); 2. Escucha a cada cliente y lo inicia en el array $client. echo "OK.n"; 3. Atiende a cada cliente, recibe y envía los datos. echo "Leyendo respuesta:nn"; 4. Un handle para cada cliente. while ($salida = socket_read($socket, 2048)) { Ejemplo de cliente Socket echo $salida; } Programar un cliente socket es mucho más sencillo que echo "Cerrando socket..."; programar un servidor. El siguiente ejemplo se conecta a socket_close($socket); www.hackxcrack.com, envía una petición HEAD, imprime la respuesta y sale. echo "OK.nn"; ?> <?php error_reporting(E_ALL); // Imprime en pantalla los errores que ocurran Listado de funciones principales para programar socket echo "<h2>Conexi&oacute;n TCP/IP</h2>n"; Socket_Accep() /* Obtener el puerto para el servicio WWW. */ Acepta una conexión. Esta función es experimental, aún $puerto_servicio = getservbyname('www', 'tcp'); está en fase de desarrollo y puede variar en futuras versiones de PHP. /* Obtener la direccion IP del host de destino. */ $direccion = gethostbyname('www.hackxcrack.com'); <?php $fd = socket_create(AF_INET, SOCK_STREAM, 6); /* Crear un socket TCP/IP. */ $PORT = 5000; $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_bind($fd, "0.0.0.0", $PORT); if ($socket < 0) { while(true) echo "socket_create() fall&oacute;: motivo: " . socket_strerror($socket) . "n"; { $remote_fd = socket_accept($fd); } remote_socket_client_handle($remote_fd); else { } ?> echo "OK.n"; } socket_create ( int domain, int type, int protocol) echo "Intentando una conexi&oacute;n con '$direccion' en el puerto '$puerto_servicio'..."; Crea un socket y retorna un identificador del socket. $resultado = socket_connect($socket, $direccion, $puerto_servicio); if ($resultado < 0) { Domain toma los siguientes valores: echo "socket_connect() fall&oacute;.nMotivo: ($resultado) " . socket_strerror($resultado) . "n"; } else { echo "OK.n"; } $entrada = "HEAD / HTTP/1.1rn"; $entrada .= "Host: www.hackxcrack.comrn"; Página 62 PC PASO A PASO Nº 19
  • 63. Programación PHP - Programación de sockets - Programación PHP - Programación de sockets En el próximo número: Programar socket te puede resultar algo complicado, la mejor manera de aprender es experimentando, juega con las funciones principales de sockets, observa los errores, crea servidores TCP y luego adáptalos a UDP. En el próximo número seguiremos con socket y comenzaremos a tratar fechas en PHP. bool socket_bind ( resource socket, string address [, int port]) David C.M Asocia un socket a un puerto y una dirección IP. La función es aún experimental por lo que ! En la editorial... puede sufrir modificaciones. En la editorial de la revista siguen llegando mails Socket toma el valor del puntero que se a preguntando como se ejecuta el código PHP. Hemos creado con la función socket_create(). El dedicado números enteros a explicarlo, desde cómo parámetro address es una dirección IP montar el Servidor Apache hasta la implementación (ejemplo: 127.0.0.1). El parámetro port es de PHP (pasando por todo tipo de configuraciones). solo usado cuando la conexión es de tipo Revisa los números anteriores y si te quedan dudas AF_INET, y asigna el puerto al que se debe pregunta en el foro de hackxcrack conectar la aplicación. (www.hackxcrack.com). Devuelve True si todo se llevó correctamente, FALSE en caso contrario. PERSONALIZATUMOVIL PERSONALIZATUTUMOVIL PERSONALIZATUMOVIL PERSONALIZATUMOVIL MOVIL MOVIL PERSONALIZATUTUMOVIL MOVIL MOVIL PERSONALIZATUTUMOVIL MOVIL PERSONALIZATUTUMOVIL PERSONALIZATUMOVIL MOVIL MOVIL PERSONALIZATUTUMOVIL PERSONALIZATUMOVIL PERSONALIZA TUMOVIL PERSONALIZATUMOVIL PERSONALIZATUMOVIL PERSONALIZA MOVIL PERSONALIZA TUMOVIL PERSONALIZATUMOVIL MOVIL MOVIL MOVIL MOVIL MOVIL MOVIL bool socket_listen ( resource socket [, PERSONALIZA PERSONALIZA PERSONALIZA MOVIL MOVIL MOVIL PERSONALIZATUMOVIL MOVIL PERSONALIZA TUMOVIL MOVIL PERSONALIZATUMOVIL PERSONALIZA TUMOVIL MOVIL MOVIL PERSONALIZATU MOVIL MOVIL PERSONALIZA TUMOVIL MOVIL PERSONALIZATU MOVIL PERSONALIZA TUMOVIL MOVIL PERSONALIZATU MOVIL PERSONALIZA TU MOVIL PERSONALIZA TU MOVIL int backlog]) Después de que el socket haya sido creado con socket_create() y asociado a una IP/puerto con la función socket_bind(), se necesita que el socket esté escuchando esperando conexiones, para ello se utiliza la función socket_listen. string socket_read ( resource socket, int length [, int type]) La función socket_read() lee desde un socket creado con socket_create() o socket_accept(). El número máximo de bytes a leer es especificado por el parámetro length. Socket_read() retorna los datos como una cadena de texto, o texto si se ha producido un error. Es importante saber que socket_read() debe HAY MUCHOS MAS EN retornar una cadena de tamaño 0 para indicar http://pclog.buscalogos.com/ PC PASO A PASO Nº 19 Página 63
  • 64. 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 Postal Solo tienes que enviarnos un mail a preferente@hackxcrack.com Envíanos un GIRO POSTAL por valor de 45 EUROS a: indicando: CALLE PERE MARTELL20, 2º 1ª. - Nombre CP 43001 TARRAGONA - Apellidos ESPAÑA - Dirección Completa IMPORTANTE: En el TEXTO DEL GIRO escribe un mail de contacto - Población o un número de Teléfono. - Provincia - Cógigo Postal Y enviarnos un mail a preferente@hackxcrack.com indicando: - Mail de Contacto y/o Teléfono Contacto - Nombre Es imprescindible que nos facilites un mail o teléfono de contacto. - Apellidos - Tipo de Subscripción: CONTRAREEMBOLSO - Dirección Completa - Número de Revista: - Población Este será el número a partir del cual quieres subscribirte. Si deseas - Provincia (por ejemplo) subscribirte a partir del número 5 (incluido), debes poner - Cógigo Postal un 5 y te enviaremos desde el 5 hasta el 15 (ambos incluidos) - Mail de Contacto y/o Teléfono Contacto Es imprescindible que nos facilites un mail o teléfono de contacto. APRECIACIONES: - Tipo de Subscripción: GIRO POSTAL * Junto con el primer número recibirás el abono de 45 euros, precio - Número de Revista: de la subscripción por 11 números (un año) y una carta donde se te Este será el número a partir del cual quieres subscribirte. Si deseas indicará tu número de Cliente Preferente y justificante/factura de la (por ejemplo) subscribirte a partir del número 5 (incluido), debes poner subscripción. un 5 y te enviaremos desde el 5 hasta el 15 (ambos incluidos) * Puedes hacernos llegar estos datos POR MAIL,tal como te hemos indicado; rellenando el formulario de nuestra WEB APRECIACIONES: (www.hackxcrack.com) o enviándonos una carta a la siguiente dirección: * Junto con el primer número recibirás una carta donde se te indicará CALLE PERE MARTELL Nº20, 2º-1ª tu número de Cliente Preferente y justificante/factura de la subscripción. CP 43001 TARRAGONA * Puedes hacernos llegar estos datos POR MAIL,tal como te hemos ESPAÑA indicado; o enviándonos una carta a la siguiente dirección: * Cualquier consulta referente a las subscripciones puedes enviarla CALLE PERE MARTELL Nº20, 2º-1ª por mail a preferente@hackxcrack.com CP 43001 TARRAGONA ESPAÑA * Cualquier consulta referente a las subscripciones puedes enviarla por mail a preferente@hackxcrack.com
  • 65. NÚMERO1: NÚMERO 2: -CODE/DECODE BUG: INTRODUCCIÓN. -CREA TU PRIMER TROYANO -CODE/DECODE BUG: LOCALIZACIÓN DEL OBJETIVO. INDETECTABLE POR LOS ANTIVIRUS. -CODE/DECODE BUG: LÍNEA DE COMANDOS. -FLASHFXP: SIN LÍMITE DE VELOCIDAD. -CODE/DECODE BUG: SUBIENDO ARCHIVOS AL SERVIDOR REMOTO. -FTP SIN SECRETOS: PASVMODE. -OCULTACIÓN DE IP: PRIMEROS PASOS. -PORT MODE/PASV MODE Y LOS FIREWALL: LA UTILIDAD DE LO APRENDIDO. -LA FLECHA ÁCIDA: LA SS DIGITAL. -TCP-IP:INICIACIÓN (PARTE 1). AZNAR AL FRENTE DE LA SS DEL SIGLO XXI. -EL MEJOR GRUPO DE SERVIDORES FTP DE HABLA HISPANA. -EDONKEY 2000 Y SPANISHARE. -LA FLECHA ÁCIDA. NÚMERO 3: -PROXY: OCULTANDO NUESTRA IP. ASUMIENDO CONCEPTOS. -PROXY: OCULTANDO NUESTRA IP. ENCADENANDO PROXIES. NÚMERO 7: -PROXY: OCULTANDO NUESTRA IP. - PROTOCOLOS: POP3 OCULTANDO TODOS NUESTROS PROGRAMAS TRAS LAS - PASA TUS PELICULAS A DIVX III (EL AUDIO) CADENAS DE PROXIES. - PASA TUS PELICULAS A DIVX IV (MULTIPLEXADO) -EL SERVIDOR DE HACKXCRACK: CONFIGURACIÓN Y MODO DE EMPLEO. - CURSO DE VISUAL BASIC: LA CALCULADORA -SALA DE PRACTICAS: EXPLICACIÓN. - IPHXC: EL TERCER TROYANO DE HXC II - APACHE: UN SERVIDOR WEB EN NUESTRO PC -PRÁCTICA 1ª: SUBIENDO UN ARCHIVO A NUESTRO SERVIDOR. - CCPROXY: IV TROYANO DE PC PASO A PASO -PRÁCTICA 2ª: MONTANDO UN DUMP CON EL SERV-U. - TRASTEANDO CON EL HARDWARE DE UNA LAN -PRÁCTICA 3ª: CODE/DECODE BUG. LÍNEA DE COMANDOS. -PREGUNTAS Y DUDAS. PC PASO A PASO Nº 18 Página 65
  • 66. NÚMERO 11: NÚMERO 12: - Curso de linux: programacion - Curso de linux: programacion C. - Visual Basic: IIS bug exploit - Visual Basic: IIS bug exploit. Nuestro primer Scanner. - Apache como proxy - APACHE: Configuralo de forma segura. - Serie Raw: FTP - Serie Raw: FTP(II) - Validacion XML: DTD - VALIDACION XML: DTD (II) - Historia: Lady Augusta Ada Byron NÚMERO 13: - Curso de linux: programacion C(II). NÚMERO 15 - Visual Basic:Nuestro primer proyecto. - APACHE: Configuralo de forma segura. - CURSO DE PHP (II) - Serie Raw: HTTP. - Xbox. Inst alar Linux - CURSO XML: DOM. - SERIE RAW (9): MSN RAW - CURSO VISUAL BASIC: UN CLIENTE, UNA NECESIDAD(III). - PROGRAMACION BAJO LINUX: LENGUAJE C(III) NÚMERO 17: - Programación bajo linux: El sistema IPC(II) - Curso de TCP/IP - XBOX (III): Cambia el disco duro de tu XBOX - Hackea Windows en 40 segundos - Curso de PHP: Cadenas de texto