lunes, 17 de diciembre de 2007

No estamos solos

Alien [blackhat4all@gmail.com]

Hace unas semana atrás me llegó un email a mi correo que en un principio no puedo negar que me hizo sentir un poco bien, pero más tarde me hizo reflexionar y darme cuenta de la gran ayuda que se puede brindar por parte de instituciones que tienen posibilidades para “colgar” web en dominio .cu y sin embargo…

BlackHat no es una institución, ni pretende serlo, pero si desea salir de esa “lista negra” de sitios que dificultan el acceso a la información.

La muela

Los que han tenido la posibilidad de estar inscritos en BlackHat desde sus inicios, o los que han ido poco a poco descargando desde nuestro FTP las ediciones anteriores, recordarán como a lo largo del tiempo que tenemos de existencia, hemos ido sufriendo modificaciones. Estas han sido bien pensadas, y tienen como objetivo acercarse a un diseño agradable teniendo en cuenta el público mayoritario al que es destinado el boletín. También el diseño se ha movido en función del contenido a mostrar, de forma que este se vea con cierta organización, o mejor dicho, distribuirlo de una forma apropiada.

Pero resulta ser que en ese email del que les comentaba antes, el autor me explicaba que le costaba trabajo leer BlackHat y se le dificultaba saber cuales eran las imágenes que colocábamos en el html, la causa era simple: es invidente.

Confieso que me asombró saber esto, porque aunque ya desde hace un tiempo tenía conocimiento de que en algunos jovenclub se habían graduado con el título de operador de micro algunas personas con estas características, jamás pensé que BlackHat estuviese llegando a las manos de alguno.

Mi primer instinto fue llamar a la persona, porque si algo ha tenido o trata de tener BlackHat y sus integrantes, es el eterno espíritu de superación, de ser cada día mejor y por lo tanto más accesible.

Al grano

Hablando con él, supe de buena tinta que las personas que tienen dificultades para ver y sienten interés por la informática o algo relacionado con la rama, como no pueden ver lo que en el monitor está reflejado, utilizan unos programas llamados lectores de pantalla.

Estos softwares lo que hacen es ir leyendo todo lo que aparece en la computadora y tratan de dar una descripción lo más detallada posible. Para estos programas no existe diferencia entre .html , .doc, .jpg, .psd, etc. Siempre que sea algo que contenga letras o haga referencia a un elemento dentro de nuestro ordenador, el programa intentará leerlo o decir al menos la ubicación en la que se encuentra. De esta forma es como Alexis podía acceder a la información que en BlackHat se publica pero…

Durante mucho tiempo, en nuestro boletín han estado saliendo algunos “truquitos” que quizás no son muy apreciables para alguien normal, pero de seguro aquellos que son más detallistas, habrán visto cosas como “0c010”, “Art1cul0s” y otras palabras en las que se han reemplazado las vocales “o” e “i” por ceros y unos respectivamente, buscado acercarse un poco al lenguaje binario, pero nunca pensamos que con esto nos alejábamos de una parte de nuestros lectores, ya que una persona vidente puede ver, interpretar y luego simplemente asumirlo como algo curioso, pero quien no puede apreciar el contenido y forma de las cosas, y para poder interpretar requiere de un lector de pantalla, tendrá una sensación muy distinta, pues este software, por muy bien implementado que esté, continuará leyendo ceros y unos.
Mientras conversábamos, aparte de darme cuenta que esta persona realmente tiene un interés por la informática que va más allá del promedio, conocí que el problema no paraba ahí, pues en muchos casos las imágenes son necesarias y por la nomenclatura con que empezamos a denominarlas a partir de la edición 14, Alexis jamás sabia qué era lo que intentábamos reflejar.

Pongamos por ejemplo la misma edición 14. En la presentación, la parte de arriba tiene un sombrero a la izquierda y de fondo una especie de graffiti que hace un contraste entre el verde y el negro. Al pasar el ratón por encima de el sombrero, aparece un vínculo hacia la portada, hasta ahora bien, pero… ¿ya trataron de leerlo?

Cuando se lee, es algo muy similar a estar leyendo desde la barra de estado de los navegadores:
Vinculo hacia: file:///H:/BlackHat/Publicadas/BlackHat%2014/_files/0x000000.html

Como se puede apreciar, esto es casi lo mismo que si nos cantaran en ruso nuestra canción favorita, con la diferencia de que un lector de pantalla brinda más información.

Mientras trataba de imaginarme cómo podía ser posible que alguien invidente me estuviera hablando de lenguajes de programación, de programas de audio y demás software, Alexis me comentaba que no era BlackHat la única página que tenía estos problemas, incluso otras estaban “en candela”.

Los minutos duran más del lado de afuera del baño.

Con esta adaptación de las leyes de Murphy quiero decir que cada cual ve las cosas según la posición en que se encuentre.

La mayoría de las personas no tiene graves problemas en la vista que le impidan observar el mundo que les rodea, por lo que quizás nadie piense en otros, a la hora de hacer un diseño web, o de administrar un sitio, se hacen adaptaciones en aras de lograr solo un diseño “bonito” y no funcional y accesible.

El hecho de que alguien sea incapaz de visualizar el mundo como el resto no es motivo para sentir lástima, pero si de consideración. Hay que darse cuenta que el no poder ver, escuchar o hablar es una desventaja inmensa, y en lugar de guiar los pasos, debido a que vivimos en un mundo muy diverso y por lo general colmado de personas individualistas, hay que enseñar a andar en el. Una forma en que se podría ayudar por parte de los diseñadores en este caso de multimedia o software informáticos, es hacer que el contenido sea accesible y con la mayor cantidad de información útil posible.

¿Qué tiene que ver la informática con todo esto?

Después de varios minutos de conversación y de sorpresas por mi parte, Alexis me hizo entender las cosas de una forma muy clara.

Poder ver es un recurso pocas veces valorado en toda su magnitud por quienes tienen esta posibilidad.
Desde pequeños aprendemos a observar cosas que no están a nuestro alcance. La vista es entre los cinco sentidos, el que más alcance tiene, posibilitándonos aprender cosas que no están “a la mano“. Los videntes aprendemos leyendo un libro, viendo una foto, observando actitudes de otros, mirando una película, etc. Los no videntes solo tienen a su disposición la ayuda de los que estando a su alrededor puedan ofrecer, disponen únicamente de la interpretación que otros puedan hacer de la vida y la forma en que se la hagan llegar.

Diariamente se editan en el mundo miles de libros, de ellos un por ciento casi nulo es en braile. En los inicios del cine los filmes eran silentes, las exposiciones de cuadro o pinturas no tienen en braile una descripción, en fin, es vivir casi fuera de la actualidad.

Por suerte llegó la informática y con esta los software como los lectores de pantalla. Para muchos esto es un programa más, para quien no puede ver, es el único medio disponible para estar al día, la oportunidad de imaginarse el contenido de una foto o multimedia. La informática da la posibilidad a los no videntes de igualarse y estar actualizado como alguien que tiene un desarrollo normal de sus pupilas.

No cercenemos esa posibilidad con diseños que no benefician su desarrollo.

Continuar leyendo

Series Compilación

Orestes Leal [orestesleal13022@cha.jovenclub.cu]

Tabla de Contenidos

1. Prefacio a la guía para principiantes.

1.1. Introducción a esta guía.

2. Obteniendo Apache2

2.1. Descomprimiendo el tarball.

3. Compilando las Fuentes de Apache2

3.1. Finalizando la instalación.

4. Inicializando y probando nuestro servidor.

4.1. Probando con un cliente TELNET

A. Buscar más.

A.1. Autoría del presente documento.
_________________________________________________________

Capítulo 1. Prefacio a la guía para principiantes.

Bienvenido a la guía para principiantes sobre la compilación de Apache2 sobre sistemas operativos tipo Unix, siéntase cómodo de continuar si el tiempo se lo permite, con la lectura de la introducción de este documento.
_________________________________________________________

1.1. Introducción a esta guía.

Les puedo asegurar que más simple que esta guía no la hay, es por eso que complicaciones en conceptos han sido evadidas para disminuir la complejidad de comprensión del tema, un efecto colateral necesario ya que el objetivo de esta serie es tener un servidor web corriendo en nuestro sistema Unix preferido lo más pronto posible (si el CPU lo permite! ). Si lo que busca es información que trate el tema con más profundidad entonces vaya directamente a la etiqueta "Buscar más".
_________________________________________________________

Capítulo 2. Obteniendo Apache2

Puede obtener apache desde el sitio oficial:

http://httpd.apache.org

Seguidamente localice la sección de descargas y bájese a su disco duro el fichero de extensión .bz2 que indica que es el código fuente para sistemas Unix.

Para este documento se ha utilizado la versión 2.2.4, que no es la más reciente pero nos será igualmente útil para ilustrarles el proceso.
_________________________________________________________

2.1. Descomprimiendo el tarball.

tar xjvf httpd-2.2.4.tar.bz2

Cambie httpd-version.tar.bz2 por la versión que haya descargado.

cd httpd-2.2.4
_________________________________________________________

Capítulo 3. Compilando las Fuentes de Apache2

Configurando las fuentes:

Solo voy a mencionar que configurar el árbol de las fuentes es útil para que el script pueda detectar si el entorno sobre el que se va a compilar Apache2 cumple todos los requerimientos para poder compilarse sin problemas.

En la raíz del directorio de las fuentes, ejecutamos el siguiente comando:

./configure --prefix=/opt/httpd --enable-mods-shared=all
--enable-cgi --enable-cgid --enable-static-htpasswd
--enable-status --enable--info --enable-so --enable-rewrite
--enable-mime-magic

Y ahora para comenzar el proceso de compilación escribimos: "make" (sin comillas).
_________________________________________________________

3.1. Finalizando la instalación.

En el momento en que el proceso de compilación ha culminado procedemos a ejecutar el proceso de instalación con el comando "make install"
_________________________________________________________

Capítulo 4. Inicializando y probando nuestro servidor.

Iniciando el servidor apache2:

Para iniciar el servidor y basado en nuestra configuración podemos inicializarlo de la siguiente manera:

/opt/httpd/bin/apachectl start

Con esto ya debería estar funcionado el servidor en el puerto http por defecto, el 80.
_________________________________________________________

4.1. Probando con un cliente TELNET

Me voy a ahorrar explicaciones sobre tal y más cual navegador y lo vamos a probar con un cliente telnet que todos deberíamos tener en nuestro sistema.

Para esto ejecutamos el siguiente comando en la línea de ejecución de nuestro shell preferido:

"telnet 127.0.0.1 80"

Con lo que si todo ha ido bien debemos ver un mensaje muy parecido si no igual a este:

Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
_________________________________________________________

Appendix A. Buscar más.

Aunque se ha demostrado la instalación típica mas sencilla posible las variantes pueden ser mucho más complicadas, por lo que se recomienda la lectura de la documentación de Apache2 y de libros especializados sobre el tema como el famoso libro "The Apache2 Bible".
_________________________________________________________

Este documento est´ amparado bajo la licencia pública GNU v2 con todo lo que esto implica.

Continuar leyendo

Cracker

Alien [blackhat4all@gmail.com]

Esta palabra, aunque pienso que es bastante conocida por todos, no ha tenido un espacio lo suficientemente amplio en BlackHat, y las pocas veces que se hace referencia al grupo de personas que enmarca, es cuando se habla de los Hacker, términos que dicho sea de paso son totalmente opuestos.

La palabra Cracker proviene del Ingles Crack y se le asocian varios significados, la mayoría relacionados con la informática, en cuyo caso se liga con la persona que se dedica a crackear, o sea, construir programas que sirvan para burlar la seguridad de algo: Números de serie, Keygen entre otros.

La palabra está formada, como muchas del idioma a que pertenece, por una contracción de los vocablos Criminal y Hacker y su inserción en el mundo estuvo dada para marcar una diferencia entre los tipos de Hackers.

Este artículo lo he escrito luego de entrar a varios foros de discusión y ver a muchos mofándose de ser Cracker para luego de preguntarles que significa dar una explicación completamente distinta: la de Hacker.

A pesar de que se trata por medio de varios métodos hacer una definitiva y marcada diferencia, aún quedan ciertas lagunas debido a la similitud de las palabras y el origen tan ligado que tuvieron ambos conceptos.

Diferencias:
Un hacker, aunque se tome a mal debido a las entradas ilegales a los sistemas, es una persona que sigue y se rige por determinadas reglas o normas, tiene ciertos códigos de conducta que siguen al pie de la letra durante toda su “carrera”. Un Hacker entra en un sistema no para hacer alarde de eso, ni con objetivos destructivos, sino para aprender, ya que ve en cada nueva tecnología un nuevo reto.

A diferencia de esto, los Cracker entran a los sistemas para alardear, son la especie de piratas que no respetan leyes ni códigos de conducta, se guían solamente por su instinto de destruir.

Un Hacker entra en un sistema desprotegido y luego de asegurar su estancia, lo más probable es que notifique a la víctima de su vulnerabilidad para que el defecto sea corregido. Si es un Cracker, lo más posible es que haga la misma notificación, pero a toda su lista de contactos, dando como resultado un ataque masivo a una máquina o software desprotegido.

¿De donde salen?
Por desgracia vivimos en un mundo en que los fabricantes de software tratan de vender sus productos en precios elevados que muchos no pueden llegar a pagar. De aquí que los que tienen amplios conocimientos sobre programación, vean como método más eficaz pasar horas, días y quizás hasta semanas “metiéndole mano” al software en busca de vulnerabilidades que den por resultado beneficios personales.

Y hasta aquí el problema es minúsculo, ya que los únicos que saldrían afectados son las grandes compañías a las que no pienso que les moleste perder algunos millones de dólares por este motivo. La cosa se empieza a complicar cuando una de estas personas decide que, como dice la canción “no basta”, y comienza a hacer sus “jueguitos” con las computadoras vecinas, las que casi siempre suelen ser de una amistad que poco le sabe a la computación.

Tool
Para lograr sus objetivos, los Crackers utilizan varios software, pueden ir desde simples aplicaciones hasta otros más profesionales, diseñados o no para este fin, pero de seguro existen dos que son imprescindibles:
• Ensamblador
• Desensamblador
El ensamblador es el software que nos permite transformar un archivo de texto con determinadas instrucciones en su interior a lenguaje máquina (ceros y unos), ya que es la forma en que realmente nuestro ordenar “entenderá” lo que queremos decirle.

El segundo sirve para obtener, de un archivo compilado, una especie de código fuente que nos dirá, con algunas impresiciones su forma de trabajo.
Como es lógico, una vez compilado el ejecutable, por muy buen desensamblador que se tenga jamás se podrá obtener información valiosa del código original como:

Nombre de variables. Estas son creadas en tiempo de diseño, y una vez que se decide crear la aplicación final, el compilador jamás entenderá cosas como “Temporal”, “Nombre_Usuario”, “Elemento_1”, por lo que esos nombre quedan sustituidos por otros a fin de ser entendidos luego por cualquier sistema.

Comentarios: Los comentarios son notas que el programador añade al código fuente en aras de entender más tarde cuál es el funcionamiento de una parte determinada, o que valor guarda una variable. Fuera de esto, es texto basura, así que el compilador ni se toma el trabajo de procesarlo, por lo que más tarde no será recordado.

Otra cosa que caracteriza a los Crackers, es su afán de lucro. Contrario a los Hackers, que tienen una ideología distinta con respecto a compartir información, los Crackers comparten, pero esperan algo a cambio. Se pueden definir más bien como mercenarios al servicio del mejor postor.

Continuar leyendo

Estudio, mente y paciencia

Alien [blackhat4all@gmail.com]

Mucho se ha hablado sobre los Hacker en varias ediciones de BlackHat, pero hasta el momento, que yo recuerde, jamás se han dado a conocer cómo Hackear un servidor o una máquina teniendo acceso directo a ella. En este artículo abordaré sobre cómo es posible buscar y encontrar defectos de seguridad en los programas que nos permitan poder realizar con ellos tareas para las que no fueron concebidos, o simplemente tratar de burlar la seguridad de los mismos.

Muchos podrán leerse este artículo sin lograr entender la mitad de las cosas que se dicen, otros querrán probar de inmediato todas las variantes, pero algo les aseguro y es que no se mostrarán los pasos en concreto para realizar estas tareas, ya que cuando alguien se decide a acometer un Hacking, debe basarse primeramente en algunas variantes que haya escuchado o que haya visto funcionar, en caso que aún estén vigentes esas técnicas, tendrá el éxito casi asegurado, pero si por casualidad los textos que ha leído están algo “pasados de moda”, entonces tendrá que recurrir a su imaginación e ingenio, ya Hackear no se aprende de ningún manual.

Antes que se aventuren a continuar, les diré que esta labor puede ser tarea de semanas, meses, años e incluso no llegar jamás a controlar un programa. Hackear depende de muchas cosas, pero sobre todo, de la inventiva y capacidad del que lo intenta. Se debe conocer sobre programación, o al menos tener una noción de qué es cada cosa, puesto que es muy difícil poder entrar en un sistema sin saber o tener una idea de cuales son los pasos que realiza un programa en cada momento.

En otras ocasiones hemos hablado en BlackHat sobre las cosas que se deben saber y tener para enfrascarse en una tarea de este tipo, así que no pienso repetir nuevamente los programas o elementos fundamentales que se deben dominar. Me limitaré a hablarles no sobre un invento mío, sino sobre una teoría ya probada y que establece 4 pasos para buscar debilidades en un sistema operativo.

Conocimiento de la estructura de control del sistema

Para encontrar agujeros de seguridad (bug) e identificar debilidades de diseño en sistemas operativos es primeramente imprescindible entender la estructura de control del sistema.
No basta con saber el nombre del sistema operativo, o el idioma en que está, se debe conocer más.
Todos los sistemas operativos actuales tratan de competir por ver quien ofrece más seguridad a sus clientes, pero si algo tienen en común, es que la seguridad se brinda mediante un nombre de usuario y contraseña, los cuales deben ser suministrados en algún momento por quienes usan la computadora, y esos datos deben ser guardados en alguna parte y con algún tipo de encriptación para darle más protección.

Es necesario conocer cuales son los objetos que el sistema protege con más empeño, pues es en esas locaciones donde sabe que tiene la mayor vulnerabilidad. Igualmente se debe saber cual o cuales son las aplicaciones que se encargan de proteger estos archivos, ya que si se logra desactivarlas, se pudiera buscar la forma de entrar al archivo y obtener su contenido.

Una vez que se logra conocer estas cosas, se puede crear un gráfico que permita ver la jerarquía que existe en la máquina e identificar luego los puntos vulnerables. Para esto puede servir tanto bibliografía que exista en Internet como manuales de usuarios y texto que en ocasiones anteriores han ayudado a burlar la seguridad del sistema y que por la importancia que tuvieron en su momento no han perdido actualidad y sirven aún hoy a modo de guía.

Inventario de desperfectos

Esto no es más que hacer un recorrido histórico por el sistema. Sus inicios, desarrollo, faces por las que ha pasado, puntos que más ataques han recibido y demás. Se debe tener bien presente todas las revisiones que se han hecho del sistema, así como estar actualizados en cuanto a los parches, ya que esto nos evita un doble trabajo tratando de entrar por una vía que ya ha sido revisada por terceros.

A menudo sucede que cuando se programan grande tareas, a mitad del trabajo se decide crear o cambiar de tipo una variable, ya sea para facilitar las cosas o por necesidad o simplemente por un cambio de planes. Esto perfectamente puede traer como consecuencia que en el código escrito antes de ese punto, y por consiguiente la variable afectada u otras que realizan operaciones vinculadas a esta se vean afectadas, trayendo consigo un error.

Esto no es difícil que ocurra, de hecho en BlackHat #28, en la sección de noticias, hablábamos de cómo los programadores de Microsoft Exel habían cometido un error que traía consigo una respuesta errónea.

Confirmar hipótesis

Todo lo anteriormente dicho puede ser llevado a cabo sin tener que estar necesariamente de frente a un ordenador. Pero desde este punto, ya será imprescindible tenerlo como almohada.

Esta es la fase casi final, en la que, después de haber hecho una especie de resumen, comenzamos a explota todos las debilidades que pudimos haber encontrado. Esta es la fase donde nuestros dones de programador deben ganar el papel protagónico, puesto que trataremos de entrar a zonas a las que no se ha penetrado, por lo que difícilmente exista un software capaz de realizar esta tarea por nosotros.

Generalizar.

La última fase es tratar de llevar las debilidades que hemos encontrado a su mayor exponente. Se supone que en este paso ya se han encontrado bugs, al menos uno y es la hora de hacerse preguntas:
¿Funcionará solo en este sistema?
¿Qué pasa si…?
¿Y si no …?

Esta es la fase donde se extrapola todo lo que hemos descubierto a otros sistemas, lo que nos abre las puertas para penetrar en otros programas que estén basados en el mismo tipo de seguridad.

Espero que este artículo les sea útil y logren no penetrar en un sistema operativo, sino aprender a darle seguridad a sus programas, evitando así convertirse en víctima de Crackers.

Continuar leyendo

Escalada de privilegios

BitXor [bitxor_nx@yahoo.com]

Luego de haber terminado el código que presento en esta misma edición sobre cómo hacer que un programa corra con privilegios de SYSTEM pensé ¿por qué no aprovechar la oportunidad para introducir el tema de la escalada de privilegios desde la óptica del usuario no programador? ¿Qué tan útil podría resultar conocer este tema?, para responder esta pregunta permíteme hacerte otra ¿Cuántas veces te haz sentado en una PC con tantas restricciones que apenas te dejan usar el mouse? Pues esta es la santa solución a tus problemas.

Durante las próximas semanas tratare de ir publicando varios artículos sobre distintas técnicas de escalada de privilegios. Al primero de estos artículos le corresponde la escalada de privilegios con el comando AT.

[Escalando con AT]

Antes de comenzar permítanme aclararles algunos detalles sobre lo que estaremos haciendo en los próximos minutos. Como ya habrás tenido oportunidad de conocer, Windows como cualquier sistema operativo divide a sus usuarios en grupos, cada uno de los cuales tiene permisos individuales. De tal forma para ser administrador se debe pertenecer al grupo Administradores, o para ser usuario avanzado se debe pertenecer al grupo Usuarios Avanzados. Para ver todos los grupos disponibles en tu sistema abre una consola y a continuacion teclea

net localgroup

Bien, ahora solo necesitas saber que en Windows existe una cuenta un tanto "especial" y su especialidad la justifican varias individualidades que no poseen ninguna de las otra cuenta. Primeramente la cuenta SYSTEM no pertenece a ninguno de los grupos de usuarios de tu equipo, además, como su nombre indica, está reservada solo para uso exclusivo de Windows.

Lo que seguidamente intentaremos hacer será explotar un bug presente en WindowsXP que nos dará pleno acceso a la cuenta SYSTEM. Debes saber que todo lo que aquí expongo debe realizarse desde una cuenta con privilegios administrativos, quizás funcione con cuentas con menos privilegios, pero eso te encargas de probarlo tú.

Para los que aun no conocen: ¿qué es el AT y para qué sirve? AT es una aplicación que debe ser llamada desde la línea de comandos del sistema y nos proporciona un medio para programar la ejecución de comandos o aplicaciones en una PC.
Para ver la ayuda interna del programa solo abre una consola y teclea

AT /help

una vez en la pantalla de ayuda podremos detallar todos los parámetros relacionados, no te preocupes si no entiendes mucho, de todos los parámetros el único que necesitaremos es "/interactive", este nos permitirá que la aplicación cuya ejecución fue programada interactúe con el escritorio del usuario actual. Veamos un ejemplo de la sintaxis de este comando.

at 16:11 /interactive notepad.exe

Tecleando esta línea en el sistema le estaré diciendo que cree una nueva tarea cuya ejecución será a las 4:11pm y consistirá en ejecutar el bloc de notas. Aquí hay un detalle importante que debes tener en cuenta, el tiempo que le especificas debe estar en hora militar, de modo que si quieres que se ejecute a las cuatro de la tarde deberás decirle AT 16:00 ... de lo contrario el programa entenderá que debe hacer la tarea a las cuatro de la mañana.

Pues bien, con los nuevos conocimientos adquiridos realizaremos un pequeño experimento. Abre el símbolo del sistema y chequea la hora que tengas en el reloj al lado de la tray bar justo en la esquina inferior derecha. Ahora le indicaremos al comando AT que realice una tarea un minuto adelantada a la hora actual, de modo que si son las 3:20pm teclearemos en la consola

at 15:21 /interactive notepad.exe

la respuesta debe ser la siguiente:

Se ha agregado un nuevo trabajo con identificador = n

Listo, ya sabemos utilizar el comando AT, aunque aun no tenemos ni idea de como nos puede servir para realizar una escalada de privilegios. Si esperas un minuto o menos podrás ver como se ejecuta el bloc de notas por si solo luego de haber sido llamado por AT. Hasta este punto todo resulta de lo más normal y por tanto aburrido, pero es ahora cuando la situación comienza a tornarse interesante.

Solo por curiosidad presiona CTRL+ALT+DEL para abrir el administrador de tareas y en la lista de procesos busca el Notepad que se acaba de ejecutar. ¿Qué tiene de curioso ese proceso? pues nada más y nada menos que se está ejecutando bajo el usuario SYSTEM, mmm.... Cosa realmente extraña esta, considerando que todo lo que abre un usuario se ejecuta bajo su nombre y privilegios. Pues resulta ser que las solicitudes de ejecución del programa AT son respondidas por uno de los procesos SVCHOST.EXE y esta última aplicación se carga 5 veces en sistema, dos como Servicio de Red, una como Servicio Local y otras dos como SYSTEM (si tienes una sexta corriendo con tu nombre de usuario es un virus), pues todo parece indicar que uno de los SVCHOST cargados como SYSTEM es el encargado de responder las tareas de AT, y teniendo en cuenta que el proceso padre tiene privilegios SYSTEM resulta que todos sus procesos descendientes también. Punto menos para el equipo Microsoft, punto más para nosotros.

Muy bien, ahora que podemos ejecutar cualquier cosa como SYSTEM vamos a correr un programa más interesante que el inofensivo bloc de notas, ¿qué les parece una consola del sistema con altos privilegios?
Manos a la obra, el mismo procedimiento, chequea el reloj (3:42pm en mi caso) ahora escribimos en el símbolo del sistema

at 15:43 /interactive cmd.exe

Esperamos unos segundos y nos aparecerá una nueva consola, verificamos en el administrador de tareas y veremos que el proceso también está corriendo como SYSTEM. Perfecto ya casi somos dioses. Ahora haremos todo como debe ser, arreglemos Windows. Comenzaremos por cerrar el proceso explorer.exe que actualmente está corriendo con nuestro usuario. Para esto escribe en la consola system:

taskkill /im explorer.exe /f

No olvides el parametro /f para hacer un cierre forzado, de lo contrario te preguntará si quieres apagar el PC. Muy bien, se nos desaparecieron los iconos del escritorio y la barra de tareas. Ahora vamos a volver a ejecutar el explorer, esta vez con privilegio de dios. Solo escribe en la consola system:

explorer.exe

mmm.... que cosa más extraña, toda mi configuración ha cambiado, mi fondo de escritorio, mis iconos en el portapapeles, abro el botón inicio y ... !que sorpresa! hasta mi nombre ha cambiado, ya no me llamo BitXor ahora me llamo SYSTEM.

Como ya tendrás oportunidad de notar, SYSTEM es un cuenta especial. Esta no está diseñada para que la use un usuario, solo existe para ser usada por el sistema. ¿Qué puedo hacer ahora? Pues según Microsoft la cuenta SYSTEM tiene virtualmente privilegios ilimitados, así que si quieres hacer algún cambio súper crítico en el registro o acceder a los System Volumen Information este es el momento.

Continuar leyendo

Regedit a Fondo (Parte III)

Alien [blackhat4all@gmail.com]

Según los conocimientos que hemos obtenido con los dos artículos anteriores, creo que ya es hora de sacarle un poco de provecho al registro.

Ante todo, lo primero que debemos tener presente es que el registro puede ser modificable no solo por Windows o los programas que se instalan, sino por programas creados por nosotros mismos e incluso de forma manual, ya sea con un .reg o editando el registro desde adentro.

No pienso explicar como hacerlo con un programa creado por nosotros porque la sintaxis depende del lenguaje y lo que para algunos puede ser openkey, para otros pudiera llamarse keyopen, y escribir sobre eso sería dirigirme solo a una minoría.

Sin embargo, editar el registro de forma manual es algo tan sencillo como cambiarle el nombre a una carpeta. Digamos por ejemplo que estamos en HKEY_CURRENT_USER\Console y queremos que cuando se abra la consola de Windows (MS-DOS), nos aparezca por defecto a pantalla completa, basta para esto tomar el valor FullScreen con el clic derecho y seleccionar la opción modificar, luego donde dice 0 colocaremos un 1. De esa forma se le dice al registro que en la sesión que está controlada por el usuario actual, cada vez que se abra una ventana de MS-DOS lo haga a pantalla completa.

Antes de proseguir pienso que es necesario aclarar, por si alguien no ha leído las dos ediciones pasadas, que cualquier modificación que se haga en el registro debe ser hecha con plena conciencia, es decir, no estar probando a modificar valores al azar, ya que esto puede traer graves consecuencias al equipo.

Otra forma de modificar el registro puede ser con los .reg.
Los .reg son para el registro, como los .bat para el Windows, archivos completamente editables que ejecutan órdenes dadas por el creador, con ellos se puede insertar una o varias claves al registro. Estos son creados para automatizar cierta tarea.

Digamos como ejemplo que tenemos en nuestro ordenador cierta configuración y por determinadas razones estamos acostumbrados a trabajar así. Si llegamos a otra máquina y queremos tener el mismo desenvolvimiento, lo más lógico es que, mientras estemos trabajando, queramos poner todo lo más parecido a nuestro entorno de trabajo habitual. Una opción pudiera ser empezar a cambiar la configuración del equipo paso a paso, pero más rápido y fácil, es crear un .reg que tenga implementado una serie de opciones que se puedan desarrollar en un corto espacio de tiempo y nos ayuden en nuestro objetivo.

Para esto debemos crear un archivo de texto con extensión .reg y escribir dentro del mismo:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Console]
"FullScreen"=dword:00000001

Con esto le estamos diciendo que en la clave de nivel superior HKEY_CURRENT_USER y dentro de esta en la subclave Console, queremos crear o modificar el valor FullScreen para que contenga un dword: 00000001. En caso que la clave exista y tenga ese valor ya aplicado, no notaremos diferencia alguna, pero si tiene un 0, podremos apreciar como al hacer doble click sobre este archivo, el valor se cambia a 1.

Esta es la forma más sencilla de automatizar una tarea llevada a cabo en el registro.
Casi sin darnos cuenta hemos caído en lo que es exportar e importar claves. Lo que hemos hecho en este caso es importarlas, es decir, hemos introducido un dato al registro. Pero en el caso que lo que queramos sea exportar, es decir, crear un archivo de registro de forma automática, debemos pararnos sobre la subclave que deseamos exportar y luego de esto ir al menú inicio y seleccionar la opción exportar, de ahí en adelante no creo que lleve mucha explicación.

Hasta aquí hemos visto como crear/modificar valores del registro y luego de haber practicado un poco con estas cositas, pasemos a la parte importante.

A muchas personas les resulta interesante saber que programas o archivos tiene una PC, algunos por curiosidad, otros simplemente para alardear que saben sobre nuestros sistemas, pero a veces se ignora que la mayor base de datos que almacena información sobre nuestros ordenadores es el registro. Es cierto que no podemos saber si existe una foto de nombre Mia.jpg o un archivo de texto que rebase los 2 Mb, pero quizás podamos tener información de más importancia como pudiera ser conocer el nombre de usuario actual o sus datos de conexión, la versión de Windows, el service pack que utiliza, los programas que tiene instalados, algunos que haya desinstalado, en fin, un sin número de cosas que, en dependencia del uso que se les quiera dar, resultan más importantes que otras cosas. Para todas estas opciones y más, basta con exportar el registro completo y en menos de 20 segundos tendremos en una memoria toda la información de la computadora, la cual podemos analizar más tarde detenidamente.

Pero no es solo en misión espía que el registro nos es útil, sino también para optimizar nuestro ordenador.
Desde siempre Windows ha escondido cosas en el registro, ya sea por temor a darle todas las herramientas al usuario, o por olvido de los programadores ;)

El caso es que desde el registro se puede modificar (para bien) los valores de las claves. Ejemplo de esto se pudieran poner miles, basta con tomar cualquier documento que contenga más de 30 trucos de Windows y entre uno de ellos aparecerá alguno que tenga que ver con el registro.

Continuar leyendo