lunes, 31 de diciembre de 2007

Reflection

CHenry [chenry@hha.sld.cu]

Continuando el articulo anterior otra de las características de reflection es la posibilidad de generar código en tiempo de ejecución algo realmente interesante ya que no solo nos permite obtener los metadatos de un ensamblado si no que también podemos ejecutar alguna secuencia de código antes durante o después de la llamada a algún método de un tipo en especifico de ese ensamblado pero ya basta de bla bla bla e aquí un ejemplo que habla por si solo.

Ejemplo Como generar código dinámicamente en tiempo de ejecución
Using system;
Using System.reflection;
Using system.reflection.Emit;

Namespace
{
  Class CodeGenerator
  {
     Type t;
     AppDomain currentDomaine;
     AssemblyName assemblyName;
     ModuleBuilder moduleBuilder;
     TypeBuilder typeBuilder;
     MethodBuilder methodBuilder;
     ILGenerator msilG;

     Public static void Main()
     {
        CodeGenerator codeGen = new CodeGenerator();
        Type t 0 codeGen.T;
        If(t!=null)
        {
           Object o = Activator.CreateInstance(t);
           MethodInfo helloW = t.GetMethod(“HelloW”);
           If(helloW!=null)
           {
//ejecuto el método helloW
              helloW.Invoke(o,null);
           }
           Else
           {
              Console.WriteLine(“No se recibió el methodInfo”);
           }
        }
        Else
        {
           Console.WriteLine(“No se puede acceder al type”);
        }
     }
     Public CodeGenerator()
     {
//obtiene el dominio de la aplicación actual esto es necesario
//cuando se construye código
        currentDomain = AppDomain.CurrentDomain;
//crea un nuevo ensamblado para nuestros métodos
        assembleName = new AssemblyName();
        assembleName. Name= “Hash”;
        assemBuilder = currentDomain.DefineDynamicAssembly(assemName,AssemblyBuilderAccess.Run);
//crea un nuevo modulo en este ensamblado
        moduleBuild =assemBuilder.defineDynamicModule(“HackModule”);
//crea un Nuevo tipo en el modulo
        typeBuilder = moduleBuilder.DefineType(“HackClass”,TypeAttributes.Public);

//ahora podemos agregar el método HelloW a la clase recién creada //
        MethodBuilder = typeBuilder.DefineMethod(“HelloW”,MethodAttributes.Public,null,null);
/*Ahora pod3mos generar algo de lenguaje intermedio de Microsoft que simplemente escriba una línea de texto en la consola.*/
        msilG.= methodBuilder.GetILGenerator();
        msilG.EmitWriteLine(“Hello From me”);
        msilG.Emit(OpCodes.Ret);
//crea un tipo
        t= typeBuilder.CreateType();
     }
     Public Type T
     {      
        Get
        {
           Return thist
        }
     }
  }
}

Continuar leyendo

Mantenimiento simple

Alien [blackhat4all@gmail.com]

Luego de pasar por el mejor foro de discusión (no me canso de decirlo), encontré un mensaje de alguien que pedía ayuda, ya que al parecer la máquina no le estaba rindiendo lo mismo que hace un tiempo atrás.

No es menos cierto que escobita nueva barre bien; y no hay nada mejor que tener una máquina recién sacada de la caja: rápida, linda, nueva y sabrá dios cuantas otras características pueda tener. Sin embargo, a medida que le vamos dando uso y empezamos a instalarle programas y sobrecargar el disco duro con información, la computadora se va volviendo lenta, tanto en procesar la información que le suministremos como en operaciones que para nosotros resultan sencillas.

Para solucionar este problema existen en la red, a disposición de todos, varios software dedicados por completo a tratar de optimizar el rendimiento del ordenador en aras de dejarlo lo más rápido posible. Uno que está muy de moda en estos tiempos es el TuneUp, el cual tiene una gran cantidad y variedad de subaplicaciones todas listas para optimizar el rendimiento de la computadora.

Pero como dice el texto de este artículo, lo que trataré de explicar aquí es como darle un mantenimiento SIMPLE a nuestro ordenador, sin necesidad de instalar programas adicionales a los que por defecto trae Windows.

Scandisk:

Cuando la computadora es nueva y me refiero a nueva por completo, suele tener también un disco duro nuevo, el cual desde la primera vez que tratemos de acceder a el, nos va a demostrar en velocidad todo el esfuerzo que se hizo por parte de ingenieros y demás para lograr que un pedazo de hierro sea capaz de almacenar información.

A medida que va pasando el tiempo, aunque los HDD no tienen una “pastica especial” que se gaste, si van perdiendo facultades y por otra parte está la acción de nosotros sobre el dispositivo. Si a esto le sumamos un reiniciado incorrecto, o un bajón de voltaje, o simplemente problemas de hardware, es lógico que el disco duro valla sufriendo los efectos de estas cosas, lo que redundará en posteriores problemas en su estructura física.

Cuando esto sucede puede, de la forma más normal del mundo, que al tratar de acceder a un archivo o lugar de la computadora, esta deje de responder o incluso hasta apagarse, haciendo que los problemas sean cada vez mayores.

En estos casos, una herramienta que nos proporciona el sistema operativo para tratar de, en lo posible, solucionar estas cosas es el Scandisk, que como su nombre lo indica, escanea el disco duro en busca de errores físicos que puedan estar provocando un mal funcionamiento de la unidad.

Esta herramienta puede estar configurada para buscar o para buscar y corregir. En caso que estemos casi seguros que nuestra unidad funciona correctamente bastará con que, para estar 100% seguros, hagamos un escanea rápido; pero si los errores son evidentes, entonces tendremos que invertir más tiempo en el análisis para ahorrarnos más dinero en una compra.

Nota: Para acceder al Scandisk haga clic derecho sobre la unidad que quiera inspeccionar, diríjase a la opción propiedades que sale al final y en la ventana que se abrirá haga clic primeramente en la pestaña herramientas y luego en el botón scandisk.

Desfragmentar:

Esto, junto con una limpieza del registro, son quizás las aplicaciones que más ganacias nos reportan en cuanto a velocidad.

Un disco duro nuevo o casi vacio no tarda en acceder a la información, pero cuando se empiezan a hacer modificaciones en el, los datos se guarda no de la mejor forma, sino como mejor pueden.
Ejemplo:
Un disco duro vacio se vería de esta forma.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Imaginemos que cada uno de esos cuadritos son clúster, ahora, cuando se graba en el disco un archivo (A), este suele ponerse en el primer espacio vacio que encuentra y si es lo bastante grande ocuparía más de un clúster, quedando de esta forma:

A

A

A

A

A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

El segundo archivo (B) se colocaría a continuación:

A

A

A

A

A

B

B

B

B

 

 

 

 

 

 

 

 

 

 

 

Un tercer archivo (C) de un tamaño más grande que los anteriores casi llenaría el disco.

A

A

A

A

A

B

B

B

B

C

C

C

C

C

C

C

C

 

 

 

Ahora, antes de tratar de introducir en la unidad el archivo D que ocupa 5 clúster, por problemas de espacio nos veremos en la necesidad de eliminar uno de los anteriores. Si eliminamos A, el archivo tratará de reemplazar su lugar, si eliminamos C entonces iría al final, pero si lo que hacemos es eliminar el archivo B, entonces D ocuparía parte de lo que le corresponde a B y como no cabe por completo, el resto de su información la colocaría al final

A

A

A

A

A

D

D

D

D

C

C

C

C

C

C

C

C

D

D

 

Como ven el archivo D está dividido, o sea, fragmentado. Esto trae como consecuencia que, por muy rápido que sea el procesador que usemos y con este todos los componentes del sistema, el tiempo invertido para leer y procesar la información del archivo D será mayor que con el archivo A, ya que después de llegar al final de la primera parte de D, se tendría que localizar en el disco duro la otra parte.

Este es un ejemplo sencillo donde se utilizó un disco duro de 20 clúster, hay un solo archivo fragmentado y en dos únicas partes. Ejemplos peores vivimos cada día sin saberlo, basta tener un disco de 80 Gigas, con cientos de archivos fragmentados y cada uno en más de 10 pedazos.

El desfragmentador de discos lo que hace es organizar la información de forma tal que existan la menor cantidad de archivos fragmentados en la unidad, acelerando con esto el acceso a los datos.

Nota: El Desfragmentador esta en la misma ubicación que el Scandisk

El Registro

Hace unas ediciones atrás hablaba sobre el registro, sin embargo me limité a hablar sobre su contribución al aumento del rendimiento del sistema.

Al registro van a parar todas nuestras barbaridades y esto incluye no solo las instalación y desinstalación de programas, sino también cosas que a veces pasamos por alto como puede ser añadir más fuentes (tipos de letra) a la computadora.
Muchos miden el rendimiento de la máquina mirando la cantidad de veces que pasa la barrita de “Cargando Windows” antes de mostrar el cuadro de diálogos de contraseña y aunque los dos anteriores (Scandisk y Desfragmentador) juegan un papel importante también en esta fase, el registro no se puede dejar de mencionar.

Es desde ahí de donde el sistema obtiene los datos que mostrará en la siguiente ventana, así que mantenerlo optimizado y lo más pequeño posible sería una buena opción. Antes de cargar la pantalla de contraseñas, Windows necesita saber que tipos de letra están disponibles, pero no es obtener sus nombres solamente, sino ver si están disponibles e interpretar cada tipo para luego escoger cual es la correcta. Desde el registro se obtiene la lista de usuarios que se mostrarán y si se hará de la forma clásica o no. En el Regedit se almacenan los programas que serán cargados acto seguido de la identificación correcta de un usuario, los controladores de audio para reproducir la musiquita, el tamaño de pantalla (1024, 800x600, 640x480 (alguien utiliza esta última aún??)).

En fin, que desde que la máquina está encendida, hasta que los fanes del micro dejan de girar, el registro está ejerciendo influencia, así que bien valdría la pena tratar de que este contenga la información con la que realmente se va a trabajar y tratar de eliminar de esta aplicación los enlaces que ya no estén disponibles, así como datos que dejan algunas aplicaciones al desinstalarse.

Megas libres

Algo que agiliza en mucho la velocidad del sistema es dejar al menos un 30% libre en la unidad primaria. Cuando Windows se encuentra en apuros y la memoria RAM es escasa, parte de el disco duro es tomado para suplir la función de esta y mientras más espacio se tenga disponible para esta función, más rápido podremos mover el ratón y ver que no se demora segundos en responder.

Última opción

Como última opción en esta misión de dar un mantenimiento simple, dejaría el formateo de la unidad, cosa que contrario a lo que muchos pudieran pensar es algo con lo que debemos lidiar al menos una vez al año (en dependencia claro está de las características de cada sistema).

Me he topado con personas que piensan que formatear la unidad donde se almacena el sistema es cosa de locos, que eso se hace solo cuando la máquina está rota o tiene un virus que no es posible desinfectar. En realidad esta forma de pensar es errónea, puesto que formatear la unidad primaria es algo que todos deberíamos aprender a hacer y hacer de hecho.

Cuando se formatea el disco duro, además de tomarse un respiro, vuelve a su estado original y es como tenerlo casi nuevo. Cualquier daño lógico es eliminado de inmediato y se recupera cualquier error que sea posible recuperar de su estructura física. Formatear es mucho mejor que pasar Scandisk y desfragmentar, es mejor que reparar mil veces el registro, es, casi casi, comprarse un disco duro nuevo.

Continuar leyendo

Microprocesador

DR3X [lanleyva@infomed.sld.cu]

El microprocesador, o simplemente el micro, es el cerebro del ordenador. Es un chip, un tipo de componente electrónico en cuyo interior existen miles (o millones) de elementos llamados transistores, cuya combinación permite realizar el trabajo que tenga encomendado el chip.

Los micros, como los llamaremos en adelante, suelen tener forma de cuadrado o rectángulo negro, y van o bien sobre un elemento llamado zócalo (socket en inglés) o soldados en la placa o, en el caso del Pentium II, metidos dentro de una especie de cartucho que se conecta a la placa base (aunque el chip en sí está soldado en el interior de dicho cartucho).

A veces al micro se le denomina "la CPU" (Central Process Unit, Unidad Central de Proceso), aunque este término tiene cierta ambigüedad, pues también puede referirse a toda la caja que contiene la placa base, el micro, las tarjetas y el resto de la circuitería principal del ordenador.

La velocidad de un micro se mide en megahercios (MHz), aunque esto es sólo una medida de la fuerza bruta del micro; un micro simple y anticuado a 500 MHz puede ser mucho más lento que uno más complejo y moderno (con más transistores, mejor organizado...) que vaya a "sólo" 400 MHz. Es lo mismo que ocurre con los motores de coche: un motor americano de los años 60 puede tener 5.000 cm3, pero no tiene nada que hacer contra un multiválvula actual de "sólo" 2.000 cm3.

Debido a la extrema dificultad de fabricar componentes electrónicos que funcionen a las inmensas velocidades de MHz habituales hoy en día, todos los micros modernos tienen 2 velocidades:

Velocidad interna: la velocidad a la que funciona el micro internamente (200, 333, 450... MHz).
Velocidad externa o de bus: o también "FSB"; la velocidad con la que se comunican el micro y la placa base, para poder abaratar el precio de ésta. Típicamente, 33, 60, 66, 100 ó 133 MHz.

La cifra por la que se multiplica la velocidad externa o de la placa para dar la interna o del micro es el multiplicador; por ejemplo, un Pentium III a 450 MHz utiliza una velocidad de bus de 100 MHz y un multiplicador 4,5x.

Partes principales del microprocesador

Encapsulado: es lo que rodea a la oblea de silicio en sí, para darle consistencia, impedir su deterioro como por ejemplo por oxidación con el aire y permitir el enlace con los conectores externos que lo acoplarán a su zócalo o a la placa base directamente.

Memoria caché: una memoria ultrarrápida que almacena ciertos bloques de datos que posiblemente serán utilizados en las siguientes operaciones sin tener que acudir a la memoria RAM, aumentando as í la velocidad y diminuyendo la el número de veces que la PC debe acceder a la RAM. Se la que se conoce como caché de primer nivel, L1 (level 1) ó caché interna, es decir, la que está más cerca del micro, tanto que está encapsulada junto a él, todos los micros tipo Intel desde el 486 tienen esta memoria.

Coprocesador matemático: es la FPU (Floating Point Unit - Unidad de coma Flotante) parte del micro especializada en esa clase de cálculos matemáticos; también puede estar en el exterior del micro, en otro chip.

Unidad lógica aritmética (ALU): es el último componente de la CPU que entra en juego. La ALU es la parte inteligente del chip, y realiza las funciones de suma, resta, multiplicación o división. También sabe cómo leer comandos, tales como OR, AND o NOT. Los mensajes de la unidad de control le dicen a la ALU qué debe hacer .
Unidad de control: es una de las partes más importantes del procesador, ya que regula el proceso entero de cada operación que realiza. Basándose en las instrucciones de la unidad de decodificación, crea señales que controlan a la ALU y los Registros. La unidad de control dice qué hacer con los datos y en qué lugar guardarlos. Una vez que finaliza, se prepara para recibir nuevas instrucciones.

Prefetch Unit: esta unidad decide cuándo pedir los datos desde la memoria principal o de la caché de instrucciones, basándose en los comandos o las tareas que se estén ejecutando. Las instrucciones llegan a esta unidad para asegurarse de que son correctas y pueden enviarse a la unidad de decodificación.
Unidad de decodificación: se encarga, justamente, de decodificar o traducir los complejos códigos electrónicos en algo fácil de entender para la Unidad Aritmética Lógica (ALU) y los Registros .
Registros: son pequeñas memorias en donde se almacenan los resultados de las operaciones realizadas por la ALU por un corto período de tiempo.

Velocidad del Reloj

En la CPU, todas las partes internas trabajan sincronizadas, gracias a un reloj interno que actúa como metrónomo. Con cada ciclo de reloj, el micro puede ejecutar una instrucción del software.
La velocidad de reloj es la cantidad de ciclos por segundo generados, cuanto más alto sea ese valor, más veloz será la PC típicamente, un micro cualquiera trabaja a una velocidad de unos 500 MHz y más, lo cual significa 500 millones de ciclos por segundo.

Debido a la extrema dificultad de fabricar componentes electrónicos que funcionen a las inmensas velocidades de MHz habituales hoy en día, todos los micros modernos tienen 2 velocidades:
Velocidad interna: la velocidad a la que funciona el micro internamente 200, 333, 450, 500, 750, 1000, etc. etc. MHz.
Velocidad externa o de bus: o también FSB, la velocidad con la que se comunican el micro y la placa base, típicamente, 33, 60, 66, 100, 133, 200, 233, etc. etc. MHz.

Los MHz y el índice iCOMP

Debe tenerse en cuenta que un ordenador con un micro a 600 MHz no será nunca el doble de rápido que uno con un micro a 300 Mhz, pues hay que tener muy en cuenta otros factores como la velocidad de la placa o la influencia de los demás componentes.

Esto no se tiene apenas en cuenta en el índice iCOMP, una tabla o gráfico de valores del supuesto rendimiento de los micros marca Intel. Es muy utilizado por Intel en sus folletos publicitarios, aunque no es en absoluto representativo del rendimiento final de un ordenador con alguno de esos micros.

En realidad, las diferencias están muy exageradas, a base de realizar pruebas que casi sólo dependen del micro (y no de la placa base, la tarjeta de vídeo, el disco duro...), por lo que siempre parece que el rendimiento del ordenador crecerá linealmente con el número de MHz, cosa que no ocurre prácticamente jamás. Un ordenador con Pentium MMX a 233 MHz es sólo un 3 ó 4% mejor que uno a 200 MHz, y no el 16,5% de su diferencia de MHz ni el 11,5% de sus índices iCOMP. Parecerá increíble, pero es así.

Vamos, que si le quieren vender un ordenador con el argumento de que tiene x MHz más, o un índice iCOMP inmenso, muéstrese muy escéptico. Mejor un ordenador con todos sus componentes regulares (mucha memoria, buena tarjeta de vídeo...) que un trasto a muchísimos MHz.

Breve (?) historia de los microprocesadores

El primer "PC" o Personal Computer fue inventado por IBM en 1.981 (a decir verdad, ya existían ordenadores personales antes, pero el modelo de IBM tuvo gran éxito, entre otras cosas porque era fácil de copiar). En su interior había un micro denominado 8088, de una empresa no muy conocida (en serio!!) llamada Intel.
Las prestaciones de dicho chip resultan risibles hoy en día: un chip de 8 bits trabajando a 4,77 MHz (sí, 4 coma 77), aunque bastante razonables para una época en la que el chip de moda era el Z80 de Zilog, el motor de aquellos entrañables Spectrum que hicieron furor en aquellos tiempos, gracias sobre todo a juegos increíbles, con más gracia y arte que muchos actuales para Pentium MMX.

El 8088 era una versión de prestaciones reducidas del 8086, que marcó la coletilla "86" para los siguientes chips Intel: el 80186 (que se usó principalmente para controlar periféricos), el 80286 (de cifras aterradoras, 16 bits y hasta 20 MHz) y por fin, en 1.987, el primer micro de 32 bits, el 80386 o simplemente 386.
Al ser de 32 bits (ya comentaremos qué significa esto de los bits) permitía idear software más moderno, con funcionalidades como multitarea real, es decir, disponer de más de un programa trabajando a la vez. A partir de entonces todos los chips compatibles Intel han sido de 32 bits, incluso el flamante Pentium II.
Ocupémonos ahora de eso de compatibles Intel. El mundo PC no es todo el mundo de la informática personal; existen por ejemplo los Atari o los Apple, que desde el principio confiaron en otra empresa llamada Motorola. Sin embargo, el software de esos ordenadores no es compatible con el tipo de instrucciones de la familia 80x86 de Intel; esos micros, pese a ser en ocasiones mejores que los Intel, sencillamente no entienden las órdenes utilizadas en los micros Intel, por lo que se dice que no son compatibles Intel.

Aunque sí existen chips compatibles Intel de otras empresas, entre las que destacan AMD y Cyrix. Estas empresas comenzaron copiando flagrantemente a Intel, hasta hacerle a veces mucho daño (con productos como el 386 de AMD, que llegaba a 40 MHz frente a 33 MHz del de Intel, o bien en el mercado 486).

Posteriormente perdieron el carro de Intel, especialmente el publicitario, y hoy en día resurgen con ideas nuevas, buenas y propias, no adoptadas como antes.

Volviendo a la historia, un día llegó el 486, que era un 386 con un coprocesador matemático incorporado y una memoria caché integrada, lo que le hacía más rápido; desde entonces todos los chips tienen ambos en su interior.

Luego vino el Pentium, un nombre inventado para evitar que surgieran 586s marca AMD o Cyrix, ya que no era posible patentar un número pero sí un nombre, lo que aprovecharon para sacar fuertes campañas de publicidad del "Intel Inside" (Intel dentro), hasta llegar a los técnicos informáticos de colores que anunciaban los Pentium MMX y los Pentium II.

Sobre ellos (los MMX y II, no los tipos ridículos de colores) y otros modelos recientes, hablaremos más adelante.

Continuar leyendo

Recopilación

Alien [blackhat4all@gmail.com]

El tema de los virus ha sido arduamente tratado ya en varias publicaciones, más no por esto deja de ser un contenido fascinante para quien se interese en el tema, interesante para los que tratan de estar al tanto de todo lo puede afectar positivamente o no sobre su ordenador y preocupante para el usuario inexperto que trata de proteger su computadora.

Un poco de Historia:

Los primeros programas destinados a dañar la computadora (sin calificarlos aún de virus), datan de 1960, cuando Douglas McIlory, Victor Vysottsky y Robert T. Morris crearon un juego para despejar la mente de alguno de los programadores de los laboratorios Bell de AT&T. La idea del juego era que dos programadores escribieran un códigos tal que, puestos ambos en la misma máquina, un programa obligara al otro a realizar una instrucción inválida. Cuando el juego terminaba, ambos programas se quitaban de la memoria, pues de lo contrario podrían afectar considerablemente a otros programas que corrieran posteriormente en la misma computadora.

Visto desde ese punto de vista, lo programas que eran creados, más que para hacer daños, servían para perfeccionar las técnicas de programación de sus creadores, haciendo que con el tiempo se especializaran más en estas.

El primer programa maligno fue creado en 1972 por Robert Thomas Morris y lo que hacía básicamente era mostrar periódicamente en pantalla un cartel que decía: "I'm a creeper... catch me if you can!" ("soy una enredadera... ¡agárrenme si pueden!"), contra el cual fue creado el primer antivirus de la historia, llamado Reaper (segadora).

En los inicios los virus eran bastante sencillos, ya que no se contaba con muchas de los adelantos de los que disponemos hoy en día, pero con el tiempo, a medida que iban cambiando los medios de almacenamiento, creándose nuevos servicios como el correo electrónico o apareciendo nuevos parches para los “bug” o agujeros de seguridad presentes en los sistemas, los programadores de virus se vieron obligados a, para mantener sus EXEs online, ir modificando sus campos de acción, hasta llegar a hoy en que, en la gran mayoría, no es el correo ni los disquetes el principal medio de propagación, sino las memorias flash, debido a su lo vulnerable que son para ser manipuladas y lograr con ella ejecutar de forma automática determinado programa que dentro de ella se encuentre.

Tipos de Virus:

Los virus, como ya habíamos dicho, tienen un campo de acción bastante grande, tanto como la inventiva e ingenio del programador. En la actualidad existen varios tipos de virus, y cada uno se especializa en algo determinada, como determinado es el fin que alcanza en caso de lograr ejecutar todo su código. En ocasiones podemos ver, tras la salida de un virus, algún que otro programa que logra eliminarlo, pero este programa lo más probable es que haya sido creado para eliminar solamente ese virus en especial y no otro, por mucho que se parezca en su modo de actuar.

Para eliminar varios virus es necesario un antivirus, que no es más que ese mismo programa, pero preparado para localizar que virus es el que nos ataca y, si está en su base de datos, eliminarlo del sistema. Pero para esto, los programadores de antivirus deben poder primeramente reconocer todos los virus, no solo por sus pequeñas peculiaridades, sino formando agrupaciones de ellos que actúen de la misma manera.

Para ello se han definido los siguientes grupos:

VIRUS RESIDENTES::
Son los que se esconden en la memoria RAM. Desde allí controlan todos los archivos que se abran, creen, copien, renombren... en fin, todo lo que se haga sobre un archivo binario. Generalmente atacan cuando se cumple una condición determinada; hasta entonces son "inofensivos".

VIRUS DE ACCIÓN DIRECTA::
A diferencia de los anteriores, estos no están en memoria, ya que su objetivo es la reproducción y actuar inmediatamente después de que sean ejecutados. Tienen como ventaja (o desventaja para el que los hace) que se pueden desinfectar los ejecutables contagiados.

VIRUS DE SOBREESCRITURA::
Como su nombre indica, sobrescriben los archivos que infectan, dejándolos permanentemente inservibles y haciendo que la única opción para los antivirus sea eliminarlos, perdiéndose toda la información que éstos contenían.

VIRUS BOOT::
Este tipo de virus no infecta ficheros, se graban en el sector de arranque de las unidades. Su única vía de propagación es encender la máquina con un disco infectado, de lo contrario es imposible contagiarse. Quizás años atrás, por los viejos sistemas utilizados, siendo a veces casi obligatorio insertar un medio de almacenamiento en alguna unidad, estos programas tenían cierto éxito, pero ahora, con el avance tecnológico, es casi inútil crearlos.

VIRUS MACRO::
Este tipo de virus se crea utilizando las macros que nos ofrecen algunos programas, dentro de los cuales se encuentran las aplicaciones principales de Microsoft Office. Aunque la mayoría de los programas que utilizan macros advierten cuando un documento incluye alguna, para los creadores de este tipo de virus no es nada difícil esquivar estas protecciones, utilizando cada día nuevas técnicas.

VIRUS DE ENLACE O DE DIRECCIÓN::
Este tipo de virus en específico se encarga de modificar las direcciones donde se encuentran los ficheros, haciendo que éstas lo referencien a él. Así, cuando un usuario ejecuta un archivo, realmente está cargando al virus, y éste pasa a su fase de continuar infectando otros archivos de la misma manera, o inicia un proceso de peores consecuencias.

VIRUS ENCRIPTADOS::
Estos virus se autoencriptan, sobre todo para evitar que programas antivirus los puedan detectar. A la hora de infectar tienen que desencriptarse, y luego que terminan su acción se vuelven a "esconder". Esta tarea es un poco pesada, si lo vemos desde el punto de vista del algoritmo de programación, pero así se asegura que el virus sea más "fuerte".

VIRUS POLIMÓRFICOS::
Estos son más "poderosos" que los anteriores. En cada nueva copia de ellos se encriptan, o cambian parte de su código, su nombre, o cualquier otro factor identificable por los antivirus. De esa forma pueden mantenerse mucho más tiempo activos.

VIRUS MULTIPARTES::
Estos son los mejores... perdón, los peores. Son programados para utilizar varias técnicas unidas, no hacen distinción entre ficheros, macros, programas, discos, en fin, lo que sea. Programar uno de estos es realmente difícil, pera tras terminarlo, es casi seguro que permanecerá activo y sin solución por mucho tiempo.

VIRUS DE FICHEROS::
Son los más comunes. Este tipo de virus es conocido por la mayoría de los antivirus y su acción es sencilla. Utilizando código de ensamblador, sobrescribe los primeros bytes del archivo que quiera infectar y luego muestra un mensaje, alerta, o cualquier cosa que el creador haya definido. Es, además, el primer tipo de virus que programa alguien que quiera empezar a desarrollarse en esta tarea. Puede ser desarrollado con cualquier lenguaje y en poco tiempo, relativamente.

VIRUS DE COMPAÑÍA::
Se les llama así porque necesitan para su desarrollo de un archivo que previamente ya está en el sistema. Hacer un virus de este tipo generalmente se debe a que su tamaño es demasiado grande, o porque se desea que su acción tenga efecto en un tipo de sistema específico, así que no hay ninguna necesidad de cargar con archivos que ya están instalados. Por lo general son virus de ficheros.

VIRUS FAT::
Este tipo en especial es muy peligroso, ya que controlan la FAT y pueden denegar el acceso a ciertas partes del disco duro. Aclaro que no es lo mismo que esconder funciones del sistema operativo; eso es poco en comparación con el daño que pueden ocasionar los virus FAT.

GUSANOS::
Los gusanos en especial no necesitan infectar otros archivos. Su misión en sólo propagarse por las redes hasta saturarlas o hacer la misma operación dentro de la memoria del ordenador, hasta colapsarla.

TROYANOS::
Un troyano puede ser extremadamente peligroso. Su objetivo es instalar otros programas o enviar por correo electrónico información confidencial o potencialmente peligrosa sin el consentimiento de los usuarios. Por lo general no causan daños a la computadora, siendo su misión solamente la de espía.

BOMBAS LÓGICAS::
Las bombas lógicas son un tipo especial de programa maligno que permanece en la computadora hasta tanto se cumpla una condición definida por su programador. Generalmente suelen ser devastadores cuando liberan el potencial de su código.

VIRUS HOAX::
Estos programas no se consideran unos virus como tal, ya que no resultan peligrosos para los usuarios; sin embargo, sí pueden sembrar el pánico en aquellos que no conozcan mucho sobre computadoras. Pero no hay que asustarse, estos programas sólo muestran un cartel en la pantalla advirtiéndote, o en muchos casos amenazándote.

Después de conocer los grupos en que se dividen los virus, sería bueno aclarar que, aunque un Troyano solo es para monitorear, controlar, espiar la máquina o robar alguna información, parte de su código pudiera contener una instrucción del tipo FileCopy, cuya misión sería copiarse el mismo hacia otra locación de la unidad, comportándose por un momento como un gusano que se propaga dentro de la misma máquina o pudiera, luego de cumplir su objetivo, ejecutar cada un tiempo un ShowMessage con cierto mensaje preocupante, simulando ser un Hoax, pero por esto no deja de ser un Troyano, ya que su misión principal, y el objetivo por el cual se encuentra incubando en el ordenador, es para sustraer de el algún archivo.

De los virus informáticos se ha hablado bastante ya en casi todos los medios relacionados con la computación, y me refiero a correos, páginas web, boletines, revistas, proyectos, en fin, todo lo que pueda llevarse a formato digital, y ha salido más de una ves, de seguro contiene un escrito sobre virus; así que no pienso retomar yo las palabras de otro, y tras buscar algunos sinónimos bonitos con el Word crear un artículo similar y hacerlo aparecer bajo mi nombre.

De seguro todos conocen lo que es un antivirus, para que sirve este, y en la mayoría de los casos hasta como instalarlos, pero lo que seguramente no saben es que pueden hacer por ustedes mismos para evitar, o en caso que esto ya no se pueda lograr, detener una infección.

Conócela

El primer paso que creo obligatorio es conocer el sistema que tenemos, o tratamos de tener bajo control. En estos últimos años ha habido un auge en cuanto a la cantidad de computadoras que poseen las personas en sus casas, y aunque se ha hecho lo posible por aumentar en nivel de cultura informática de las personas, este aún no ha llegado a todos de la misma manera, y lo mismo podemos encontrarnos con alguien que conoce de su computadora hasta el tiempo exacto que demora en encender, hasta otros, menos preocupados, que ignoran, después de años de trabajo, la marca de su monitor, siendo estos el mayor foco de concentración de los software destinados a tratar de invadir nuestro sistema.
Para saber si podemos estar siendo víctimas de un virus, debemos haber hecho antes un análisis del sistema, saber reconocer que opciones no están disponibles que antes lo estaban, ver si es algo normal que nuestra disquetera se encienda cada un tiempo, tener el control en cada momento que estamos delante del ordenador, pero para eso deberíamos haberlo conocido antes de, y eso no lo da ningún software, eso se aprende con el día a día, y las “horas nalgas”.

No Hide

En la actualidad, por la facilidad con que pueden ser manipuladas por los programadores, por el auge que tienen y por la gran distancia que pueden recorrer, la mayoría de los programas malignos se trasmiten a través de las memorias flash. Para esto se crea dentro de estas un archivo que, al ser leído por el ordenador, interpreta lo que dentro de él se encuentre sin hacer distinciones entre la carga de el solitario de Windows o un Troyano.

Los virus, por mucho que se quieran esconder, por muy bien que estén programados, no dejarán de ser archivos, y si son archivos deben poder verse en el explorador de Windows. Para esto simplemente se debe habilitar mostrar todos los archivos en la opción Opciones de Carpeta de la barra de herramientas del explorador y allí mismo, casi al final, deberíamos desmarcar la pestaña que oculta los archivos protegidos del sistema operativo, haciendo lo mismo con la opción que nos impide ver las extensiones de los archivos. Con estas dos cosas dejaremos al descubierto a muchos virus que se ocultan utilizando estos métodos para no ser visibles o pasar desapercibidos ante el usuario.

Al principio quizás resulte un poco molesto tener que lidiar con ciertos archivos que antes simplemente para nosotros no existían, pero si es para aumentar la seguridad de nuestro sistema, creo que vale la pena.

Los procesos

Otra cosa que no puede hacer un virus es no ejecutarse, de lo contrario no cumpliría su objetivo. Creo por esto imprescindible es tener un buen programa que nos de más información sobre cada proceso que se encuentra ejecutándose en nuestra computadora; algo más efectivo que el clásico Ctrl+Alt+Del de Windows. De esa forma, no solo sabremos el nombre de la aplicación, sino que obtendríamos datos que nos servirían luego para descontaminar nuestra computadora.

¿Quién y por qué?

En la actualidad (y pienso que siempre haya sido así), los creadores de virus tienden a ser personas jóvenes, con cierto dominio de algún lenguaje de programación, analizadores a fondo del funcionamiento del sistema para el que crea sus aplicaciones, aunque esto puede no ser siempre así.

En realidad, aunque con el tiempo lo anteriormente dicho se ha convertido en una norma o estándar, no podemos dar completa seguridad que siempre sea así. No existe un patrón o norma que defina de forma exacta la personalidad de alguien que crea una aplicación, lo mismo puede ser un quinceañeros que sabe un poco más de computación que el resto de su aula y se leyó un libro sobre como hacer virus, que pudiera ser un adulto de la tercera edad y que desde hace tiempo intenta hacer una aplicación por la cual pueda dejar su nombre anclado en el futuro, lo que si no podemos negar es que en cualquier caso, generar un código maligno requiere de algo más que libros y tiempo, requiere de esfuerzo y una gran imaginación.

Como mismo no se puede concentrar a los viruker dentro de un grupo determinado, no se puede saber con exactitud las causas que lo llevaron a la compilación del programa. Pudiera ser por encargo, por complacer a una novia, por causarle daño a alguien, por… El caso es que casi siempre hay un poco de ego tras todo esto, los creadores de virus encuentran cierta satisfacción al ver sus “creaciones” propagándose por la red.

Esto ha traído como consecuencia que los virus no sean hoy en día tan dañinos como años atrás, lo que no quiere decir que no sean peligrosos, pero si en menor cuantía. La mayoría de los programadores de virus lo que busca es satisfacción personal, no causar daño y de muy poco sirve a un viruker insertar su código en un sistema que destruya antes de poder propagarlo hacia otro.

Continuar leyendo

La conciencia de un Hacker

The Mentor

Hoy agarraron a otro, esta en el diario. "Adolescente arrestado por escándalo informático", "Hacker arrestado luego de estafa a un Banco"…

- Malditos muchachos. Son todos iguales.

Pero ustedes, en su psicología tres piezas y su tecno-cerebro onda 1950, ¿alguna vez miraron por detrás de los ojos de un Hacker? ¿Se preguntaron alguna vez que lo hizo así, que fuerzas lo formaron, que pudo haberlo moldeado?. Soy un Hacker, entra en mi mundo... El mío es un mundo que comienza en la escuela...
Soy mas inteligente que la mayoría de los otros chicos, la basura que nos enseñan me aburre.

- Maldito infra dotado. Son todos iguales.

Estoy en la Secundaria. He escuchado a los profesores explicar por quincuagésima vez como reducir una fracción. Lo entiendo. "No, Srta. Pérez, no puse los cálculos en la hoja. Los hice mentalmente..."

- Maldito chiquillo. Probablemente se copio. Son todos iguales.

Hoy descubrí algo. Encontré una computadora. Esperen un segundo, esto es interesante. Hace lo que quiero que haga. Si comete un error, es porque yo hice algo. No porque yo no le guste, o porque se sienta amenazada por mí, o piense que no soy inteligente, o porque no le guste enseñar y no debiera estar aquí...

- Maldito mocoso. Todo lo que hace es jugar jueguitos. Son todos iguales.

Y entonces sucedió... se abrió una puerta hacia otro mundo...fluyendo a través de la línea telefónica como heroína en las venas de un adicto, mando un latido electrónico, veo un refugio de las incompetencias cotidianas...encontré una tabla. "Es esto. aquí es donde pertenezco". Conozco a todos aquí... aún si no los vi nunca, o no les hablé nunca, o no vuelva a oír de ellos nunca más... Conozco a todos Uds...

- Maldito criatura. Otra vez jodiendo con el teléfono. Son todos iguales...

Apuesta lo que quieras a que somos todos iguales... en la escuela nos dieron papilla para bebés cuando teníamos hambre de carnes. Hemos sido dominados por los sádicos, o ignorados por los apáticos. Los pocos que tenían algo para enseñarnos encontraron en nosotros alumnos despiertos, pero esos fueron tan pocos como las gotas de agua en el desierto.

Este es nuestro mundo ahora, el mundo del electrón y el switch, la belleza del baudio. Hacemos uso de un servicio ya existente sin pagar por lo que podría ser absurdamente barato si no estuviera manejado por crápulas codiciosos, y nos llaman criminales. Exploramos, y nos llaman criminales, buscamos el conocimiento y nos llaman criminales. Existimos sin colores de piel, sin nacionalidades, sin separaciones religiosas, y nos llaman criminales. Ustedes construyeron bombas atómicas, financiaron guerras, asesinaron, engañaron y nos mintieron para hacernos creer que era por nuestro bien, y aún somos nosotros los criminales.
Si, soy un criminal. Mi crimen es la curiosidad. Mi crimen es juzgar a la gente por lo que dice y piensa, no por su apariencia. Mi crimen es ser más inteligente que ustedes, algo que no me vas a perdonar nunca.
Soy un Hacker, y este es mi manifiesto. Puedes pararme a mí, pero no vas a poder pararnos a todos, porque al final...

Todos somos iguales

Continuar leyendo

2008

Alien [blackhat4all@gmail.com]

Empezamos un 19 de febrero de este año que recién culmina y contra todo pronóstico, con nuestras buenas y nuestras malas, hemos tratado de mantenernos en la red con una sola interrupción en todo ese tiempo y publicando un boletín semanal.

Hemos pasado por momentos malos, momentos buenos, nos hemos visto en situaciones verdaderamente difíciles, hemos escuchado promesas de ayuda que jamás han sido cumplidas, hemos visto el fracaso de otros tocarnos de cerca y hemos tratado de levantar la cabeza y continuar adelante. Pero lo más importante, es que aún estamos aquí.

Tratando de llevar la información de nuestros colaboradores, tratando de hacer que tú, tu mismo, que estás sentado en esa silla cómoda te pares y te pongas a escribir esos fragmentos de código que jamás lograste hacer. Buscando a esas personas que, con los conocimientos más que suficientes para crear cosas buenas y útiles, están en sus casas perdiendo el tiempo en lugar de ponerse a compartir.

Llega BlackHat al final de este 2007 con más de 1000 lectores, cuando en realidad empezó con 7 y jamás estuvo concebido como un proyecto para más de 100 personas. Más de 350 textos publicados por un puñado menor de 40 miembros, y casi el 100% de los artículos y códigos creados por los mismos autores. Indudablemente estos datos confirman la obra que hemos estado realizando durante este tiempo.

¿Y ahora que?

Buena pregunta esa. Durante estos meses, desde el punto de vista interno y de presentación del contenido BlackHat ha estado atravesando un proceso complejo que se pretende nos lleve a otro nivel dentro de la aceptación de las personas. No pretendemos ser una institución, todo lo contrario, cada vez más alejados de términos complejos y más cerca de como nos llama Ariel: “formalmente informales”.

Nos gusta esta onda intermedia entre un Foro y un Periódico, nos gusta este lenguaje natural de decir las cosas, nos gusta saber que no pertenecemos a un sindicato, grupo o asociación determinada, nos gusta saber que lo que hacemos lo hacemos de corazón.

Mirando el contenido que presentamos sabemos que se avecinan cambios, cambios que no cesaran aunque estemos a solo un paso de la perfección. Continuará la aparición de nuevas secciones y la dejación de otras. Continuaremos poniendo esas fuentes verdes sobre fondo negro que a muchos eternamente les recordará los monitores antiguos. Continuaremos con una imagen en el top que de una idea de barrio, de pueblo, de ciudad, de todos. Sin importar los cambios o avances en la tecnología, continuaremos tratando de ser compatibles con todos los navegadores, de ser fáciles de leer por Alexis y como el, otros amigos invidentes. Continuaremos como hasta ahora, ocupándonos de todos los lectores que nos escriben ya sea para preguntar, para sugerir, para colaborar, para compartir.

Por problemas difíciles de explicar no se ha podido actualizar más nuestra web, pero si Mahoma no va a la montaña… Si, como lo oyen, las secciones que estaban en la web y no hemos podido actualizar serán añadidas a nuestra columna vertebral, nuestro soporte principal, nuestro boletín.

¿Avances?

Es difícil poder decir con certeza que es lo que se avecina, pues somos un grupo bastante grande ya de personas cuyo único enlace es un sombrero negro. Vivimos al día, alimentándonos de los artículos de Zeydi, de h0aX, de Ariel, de Reynier de otros muchos que hacen posible que la comunidad se fortalezca y se continúe demostrando que la informática también es cultura.

Cosas por hacer nos quedan muchas y esperamos que poco a poco este 2008 nos de tiempo, a tiempo, para hacerlas todas.

Gracias a todos los que han sido fieles lectores de BlackHat, gracias a los colaboradores, a los que han jugado y aún juegan un papel en este, su proyecto para todos…

Continuar leyendo

lunes, 24 de diciembre de 2007

Reflection en .NET Framework

CHenry [chenry@hha.sld.cu]

Una gran importancia reporta la característica de .Net en su capacidad para descubrir información de “tipo” en tiempo de ejecución. De forma segura se puede usar el espacio de nombres “reflection” para poder ver en tiempo de ejecución la información de “tipo” que contienen los ensamblados, de esta forma se pueden enlazar con objetos o incluso una herramienta sumamente potente la cual es la posibilidad para generar código en tiempo de ejecución. Esta tecnología es una extensión de la tecnología COM la cual podría ser abordada en otro articulo(Es sumamente interesante su arquitectura e incluso los disímiles usos que nos puede brindar).

En ocasiones se nos plantean determinadas situaciones en que nos urge utilizar un objeto sin llegar a comprender realmente lo que realiza este objeto. El namespace reflection(a partir de ahora nos referiremos a el como Reflexión) nos permite obtener determinada información de un objeto y con esta poder conocer sus propiedades, métodos, constructores, eventos y variables. De forma directa podemos usar la clase System.Type (por su importancia en el uso de la reflexión veremos un barniz de la clase Type) para examinar el ensamblado y de esta forma poder usar métodos como GetMethods () y GetProperties () que devuelven información del ensamblado en cuestión. Esta información es sumamente interesante ya que permite desde llamar el método MethodsInfo (), el cual nos devuelve una lista de parámetros, hasta ejecutar (llamar) a métodos en el ensamblado a través del método Invoke ().

SYSTEM.TYPE
Esta clase abstracta actúa como un portal para la API de reflexión lo que permite el acceso a los metadatos, esta clase representa un tipo del “Sistema completo de tipos”(CTS). Este sistema nos permite examinar objetos de todos los lenguajes de la familia .NET. De esta forma todos los objetos usan el mismo entorno en tiempo de ejecución y sistema de tipos facilitando esto la obtención de información del objeto y del tipo.

Nota: Una de las características más interesantes del Type es su capacidad para crear objetos dinámicamente y usarlos en tiempo de ejecución.

Obtener la información de tipo.
Ahora veremos tres formas de obtener la información de tipo de un objeto:
1. Usando un nombre de tipo.
2. Usando un nombre de proceso.
3. Especificando un nombre de ensamblado.
Todas estas variante por detrás de esta capa de abstracción realizan las mismas tareas es decisión del programador el uso de una o de otra en dependencia de su aplicación, aquí les van.

Recuperación de tipos por el nombre

Con solo especificar el nombre del tipo se puede consultar casi todos los aspectos del objeto. Se puede extraer información de la detallada como si es una clase, el tipo de su sistema base y otras propiedades (Ver MSDN).
Como ejemplo de este métodos creamos una sencilla aplicación C# consola que nos permita ver algunas propiedades de la clase System.String.

Código #1 como listar información mediante el nombre

using System;
using System.Reflection;

class ExtractNameType
{
  public static void Main()
  {
     Type t = Type.GetType("System.String");
     Console.WriteLine("Name: {0}",t.Name);
     Console.WriteLine("Underlying System Type: {0}",t.UnderlyingSystemType);
     Console.WriteLine("Is Class: {0}",t.IsClass);
  }
}

Al correr esta aplicación nos muestra que System.String es el tipo de sistema base, y que este objeto es una clase.
Ahora se preguntara para Ost… nos sirve esto bueno al parecer no es mucho ? pero bien pongamos un ejemplo imagine que esta creando una aplicación que necesita generar instrucciones “insert” para introducir información en SQL Server. Escribir una gran cantidad de información requiere gran cantidad de tiempo, pero si se usa Reflexión y la clase Type se pudiera examinar el tipo subyacente de cada fragmento de información que quiera insertar en SQL Server y poder describir esos tipos a un tipo de datos SQL Server valido, lo que simplificaría mucho el proceso de generar mediante programación las instrucciones “insert”.

Recuperación de tipos mediante instancias

En este caso en vez de usar el nombre de tipo se usa una instancia de este para conseguir la información.

Código # 2 Por instancia

using System;
using System.Reflection;

class ExtractNameType
{
  public static void Main()
  {
     String obj = "Carlos Henry";
     Type t = obj.GetType();
     Console.WriteLine("Name: {0}",t.Name);
     Console.WriteLine("Underlying System Type: {0}",t.UnderlyingSystemType);
     Console.WriteLine("Is Class: {0}",t.IsClass);
  }
}

En esta aplicación se crea una instancia de de la clase String con el nombre obj a la cual posteriormente se le llama al método Gettype() , la información obtenida por esta vía el la misma que la que se obtuvo en Código #1.

Recuperación de tipos en un ensamblado

Y ahora la variante mas interesante, esta se encarga incluso de recuperar información de un objeto ya ensamblado ya este dentro de un ejecutable (.exe) o una biblioteca de vínculos dinámicos (.dll), en el código siguiente les mostraremos como obtener información acerca de nuestra propia aplicación.

Código # 3 Recuperar información de nuestra aplicación.

using System;
using System.Reflection;
using System.Diagnostics;

class AssemblyType
{
  public static void Main(string [] args)
  {
     Process p = new Process.GetCurrentProcess();
     string name= p.ProcessName + ".exe";
     Console.WriteLine("Looking: {0}",name);
     Assembly a = new Assembly.LoadFrom(name);
     Type [] types = a.GetTypes();
     foreach(Type t in types)
     {
        Console.WriteLine("Type: {0}\n",t.FullName);
        Console.WriteLine("/t Base Class: {0}",t.BaseType.FullName);
     }
  }
}

En el código anterior se muestran algunos elementos nuevos, el tipo Process se usa para echarle una ojeada a los procesos que se están ejecutando. En esta aplicación lo utilizamos para obtener el nombre de nuestra aplicación y luego agregamos .exe al final del nombre para que se pueda examinar el ensamblado. Esto lo hacemos para que este aplicación funcione independiente del nombre que le pongamos al escribirla. Al correr esta aplicación no se nos brinda mucha información ya que la misma solo tiene una le rogamos que juegue un poco con este código probando cosas como otros métodos en la clase Type así como el tipo Process que se les presento en este código también.

Hasta aquí un pequeño background de este tema por falta de tiempo no puedo ponerles un ejemplo mas detallado pero prometo escribir algo de código en un próximo articulo y quizás algo de cómo Generar código dinámicamente mediante Reflexion.

Nota: Las aplicaciones que por su estructuración y funcionalidad tengan que programarse de forma tal que deban ser upgradeadas en tiempo de ejecución, ejemplo aplicaciones a las que se le pueden agregar Plugins pueden implementar este sistema usando Reflexion.

Continuar leyendo

Más sobre virus

Asran [Asran@isppr.rimed.cu]

Bien amigos como todos sabemos no es muy difícil infectarse con algún código maligno y esa serie de creaciones no beneficiosas que circulan en medios de almacenamiento extraíble como la Memorias, los discos y todo aparato que se conecte por USB. No es menos importante el riesgo que corremos con una conexión real a la red aunque sea LAN pero el tema que quiero introducirles hoy es el de cierto virus que anda por ahí muy molesto que todo los conocen como Autorun.exe

Sin más rodeos ...

Tú mismo puedes contener la infección con este circulante que es el Autorun.exe. Bueno tomando como punto de partida los artículos publicados por el camarada Alien sobre el editor de registros de Windows [Regedit.exe] asumo que no sea necesaria una introducción al tema.

Primero tenemos que estudiar al enemigo

Bueno, sabemos como se llama y trabaja de la siguiente forma.
En la fase de infección se copia al disco mediante un mecanismo basado en ficheros .ini que cuando toman el nombre especial de autorun el sistema los levanta una vez que se hace una llamada al volumen que lo contiene. De esta forma realiza su ejecución y una vez cargado en memoria se autocopia para el volumen que almacena el arranque de Windows. Luego procede a la infección de los demás volúmenes. [Volumen: división no menor de 32 Mb de un medio de almacenamiento que se identifica con una letra]

Aquí te muestro una forma de poner el parche antes del hueco (bueno en eso de poner huecos no hay quien le gane a Microsoft de no ser así yo no hubiese escrito esto y tu no estuvieras leyendo)
El caso es que existe una clave que nos permite deshabilitar la opción de autorun de las unidades o volúmenes

Situándonos en la clave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer encontraremos esto

Nombre Tipo Dato
_____________________________________________________________
NoDriveTypeAutorun REG_DWord 0x00000005

Pero tiende a ponerse bueno, a continuación se listan los posibles valores admisibles y el efecto que pueden causar en el sistema

Nombre Tipo Dato
____________________________________________________________
NoDriveTypeAutorun REG_DWord 0x00000000091 --------> Deshabilita el autorun para unidades de red

NoDriveTypeAutorun REG_DWord 0x00000000095 --------> Deshabilita el autorun para unidades de red y medios extraibles

NoDriveTypeAutorun REG_DWord 0x000000000B5 --------> Deshabilita el autorun para unidades de red, medios extraíbles y CD.

Bueno tomando como base lo expuesto por Alien en sus artículos sobre el editor de registros de Windows [Regedit.exe].
Y con conocimientos básicos de programación encontraremos que no es cosa difícil vacunarnos contra el Autorun.exe y demás programas que se ejecutan sin autorización.
El usuario puede protegerse de forma manual o automatizar el proceso (seria lo ideal) mediante una aplicación. Bueno lo de la automatización de esta tarea puede plantearse como un problema para programadores level 3 de la comunidad. Lo que en realidad se necesita es que quien lo haga, lo comparta para mejorarlo o para que los demás aprendan

Continuar leyendo

La tarjeta de red

Lic. Zeidy López Collazo [ilinur@infomed.sld.cu]

La tarjeta de red es un dispositivo de interfáz que se encarga de establecer todas las señales de sincronización y control, así como los niveles de las mismas para la transmisión de información entre computadoras a través de cables. Se conecta a una computadora y permite junto con el sistema operativo el flujo de información a través de la red.

Los tipos más comunes son ISA o PCI, dependiendo de la arquitectura de la tarjeta madre (motherboard) de la computadora.

Reseña histórica de las redes.
1969: Surge la primera red experimental ARPANET (Advanced Research Proyects Agency) que en sus inicios conectaba la universidad de California en Santa Bárbara y en los Ángeles, la de UTA, en Salt Lake City y al Universidad de Stanford.
1969: Es creada por Ken Thompson la primera versión del UNIX, sistema operativo que ha jugado un papel importante en la comunicación entre computadoras.
1973: El ARPANET desborda la fronteras de los EE.UU al establecer conexiones internacionales con la “University College of London” de Inglaterra y el “Royal Radar Establishment en Noruega.
Década del 70: Es desarrollado los protocolos TCP/IP por Vinton G. Cerf, Robert E. Kahn, y un grupo de sus estudiantes.
1982: Los protocolos TCP/IP son adoptados como estándar para todas las computadoras conectadas a ARPANET, lo que hizo posible el surgimiento de una red universal de computadoras que existe en la actualidad bajo el nombre de Internet.
Década del 80: Dicha red fue creciendo y desarrollándose debido a que con el paso del tiempo cientos y miles de escuelas, universidades, centros de investigación y agencias del gobierno fueron conectando sus computadoras a la red.

Redes de área amplia: esta parte examina los mecanismos internos y la tecnología que se han desarrollado para admitir voz, datos y comunicaciones multimedia en redes que cubren grandes distancias. Se examinan las tecnologías tradicionales de conmutaci6n de paquetes y conmutación de circuitos, así como la más reciente de ATM. Un capitulo independiente se dedica a los temas de control de congestión.

Redes de área local: esta parte explora las tecnologías y arquitecturas que se han desarrollado para interconexión de redes en distancias mas cortas. Se analizan los medios de transmisión, las topologías y protocolos de control de acceso a un medio, que son los ingredientes clave del diseño LAN, y se estudian sistemas específicos LAN normalizados.

Protocolos de red: esta parte explora tanto los principios arquitectónicos como los mecanismos requeridos para el intercambio de datos entre computadores, estaciones de trabajo, servidores y otros sistemas de procesamiento de datos. Gran parte del material de esta sección se refiere a un conjunto de protocolos TCP/IP.

¿Qué es INTERNET?

Internet no es una única red de ordenadores, sino que es un conjunto de 25000 redes interconectadas que se comunican entre ellas con un mismo protocolo o lenguaje, denominado TCP/IP.

Servicios de Internet:

Conexión Interactiva (Chat).
Grupos de Discusión.
Telnet.
World Wide Web.
Correo electrónico (E-mail).
Transferencia de archivos (FTP).

Ventajas del trabajo en red.

Compartir recursos tales como discos duros, módems, lectores de CD-ROM, impresoras, etc.
Compartir aplicaciones e informaciones que pueden instalarse en una computadora y utilizarse por las restantes en la red.
Trabajar de forma colectiva al poder elaborar documentos, tablas, etc., de forma conjunta.

Vinculación con el Módem

Módem: Modulador-Demodulador, dispositivo hardware que transforma las señales digitales del ordenador en señal telefónica analógica y viceversa.

El módem está muy vinculado con el ordenador y con la tarjeta de red, ya que permite la conexión de uno a varios ordenadores a través de una línea telefónica.
Mediante él podemos acceder a Internet, páginas Web, Chat, entre otras muchas.

Continuar leyendo

Microsoft Student

Alien [backhat4all@gmail.com]

Para algunos que ya la conocen representa un producto más de la casa de Bill. Para otros, que quizás ni han oído de ella pudiera ser un programa más. Para mí, es un gran paso de avance que supera por mucho a la legendaria Encarta.

Tengo el placer de tener amistades que de buen corazón depositaron en mis manos desde hace algunas semanas un DVD que entre otras cosas contenía un programa denominado Microsoft Student. Como todo buen apasionado de la informática no tardé en instalar dicho software en mi PC, no para buscar, no para aprender, sino para ver que nueva locura se le había ocurrido a Bill Gates.

Después de copiar los 2.42 Gb de datos hacia mi ordenador, me acomodé para disfrutar de los “Next, Next” que sin cesar aparecían en mi pantalla. (Aproveché para encender un cigarro mientras se reiniciaba).

Pensé encontrarme con el clásico logotipo de Encarta en algún lugar del menú inicio, pero mi sorpresa fue ver que en su lugar estaba un icono con forma de mochila escolar.

¿Qué es?

Pantalla de presentación de Microsoft Student.

Student, de Microsoft, es un software diseñado para ayudar –y de que manera- a los estudiantes a realizar sus trabajos escolares. Es lo más parecido a “Mi primera Encarta” (También de Microsoft), pero enfocados a grados más altos, quizás no llega a los universitarios, pero si reemplaza las imágenes un tanto infantiles de Mi primera Encarta por representaciones visuales mucho más serias.

Dentro de Student viene incluida la nueva versión de Mi primera Encarta, la cual no ha cambiado en casi nada, mantiene el mismo diseño y contenido que en las pasadas ediciones. También está la Encarta del 2008, la cual, con sus pro y sus contra es básicamente la misma; una actualización por aquí, un cambio de palabras por allá, dos o tres cifras que se añaden y quizás alguna fuente corregida, pero fuera de eso, sigue siendo Encarta 2007, la cual por cierto cedió su presentación a Studen, conservando ella solamente la barra de búsqueda.

Student, en cambio, aunque no brinda a los usuarios los cerca de 45.000 artículos que aparecen en Encarta, si da la posibilidad a los estudiantes de aprender a realizar sus trabajos de forma individual y sobre todo, de forma correcta. Y pregunto, Si tenemos Wikipedia, Google y el WoS, ¿Es tan importante reemplazar Encarta 2007 por la del 2008? (dejemos eso para otro día…)

Microsoft Student nos trae una calculadora que realmente hace casi todo lo que queramos y para no dejarnos con la duda sobre si una función pasa o no por un punto determinado, es capaz de graficar la misma, ofreciéndonos varias herramientas sencillas con las que podemos obtener información de la gráfica.

Dejando a un lado ya las cosas visuales y pasando más a lo que se refiere a consumo de recursos, no me acabo de explicar cómo una aplicación que contiene más información y un mayor gráfico que su predecesora, es capaz de abarcar casi el mismo tamaño y consumir menos de nuestro sistema.

Otro punto a favor de Student es que no contiene (o son muy pocos) los vínculos hacia Internet. Desde hace un tiempo Encarta ha venido presentando muchas referencias, lo que hace que el contenido, aunque tenga muchas direcciones en las cuales profundizar sobre el tema, se muestre escaso de información para quien no tiene acceso a la red.

Student por el contrario, presenta un contenido que por lo general no necesita de mayores búsquedas en la red. Es una enciclopedia más autónoma que se basta a sí misma para hacer llegar la información y de una forma excelente.

Continuar leyendo

Delito Informático

Alien [blackhat4all@gmail.com]

Este título me viene dando vueltas en la cabeza desde hace varios días, y es que resulta ser que mientras me documentaba para escribir uno de los pasados textos, encontré por casualidad en la red cubana un pasaje que me llamó la atención.

Primero lo primero

El delito informático, aunque no es nada nuevo, tampoco es algo que se viene escuchando desde los tiempos de la colonia. Fue después, mucho después de la aparición de las computadoras y su uso para cometer fraude o engaño en cualquiera de sus variantes, que se empezó a utilizar este término como algo normal. En los inicios solo existía la palabra delito, la cual es catalogada por wikipedia como:

“…una conducta típica (tipificada por la ley), antijurídica (contraria a Derecho) y culpable. Supone una conducta infraccional del Derecho penal, es decir, una acción u omisión tipificada y penada por la ley.”

Esta misma palabra es referida por el diccionario de la real academia como: “Culpa, quebrantamiento de la ley. || 2. Acción o cosa reprobable. || 3. Der. Acción u omisión voluntaria o imprudente penada por la ley.”, bla, bla, bla.

En fin, que no hay que ir muy lejos ni saber mucho para conocer que el delito no es más que todo aquello que ha sido estipulado como tal y por lo tanto conlleva a una pena, castigo o sanción.

Con el paso del tiempo al término delito se le han ido añadiendo algunos adjetivos y uno de ellos es la palabra informáticos.

Informática, informático, da igual, actualmente casi todo lo que se deriva de esta palabra está relacionado con un ordenador. Y es que la informática juega un papel tan importante en la vida actual que es aplicable no solo al derecho, sino a muchas otras esferas.

En Cuba este término no se maneja mucho, al menos por la población. Se puede escuchar de un robo, de una riña, de un escándalo, pero muy pocas veces (no me gusta ser absoluto) se escuchará de alguien que ha logrado irrumpir la seguridad de un servidor, o echar abajo un mainframe, aunque se sabe, por el boca a boca, que esto ha sucedido.

Por esta razón, desde hace algún tiempo, se vienen implementando una seria de normas, leyes, métodos o como se les quiera llamar, para detener o al menos minimizar estas acciones. Al frente de este movimiento no se encuentran personas recién graduadas de escuelas informáticas, o personal autorizado en sus centros de trabajo para pasar un curso “intensivo” de “6 meses” y sentarse luego frente a un servidor a monitorear la red, sino personal calificado, probados y de basta experiencia en temas relacionados con la informática y el aspecto jurídico.

Se han ido dictando leyes poco a poco que regulan el comportamiento en la red, pero cuidado, porque no es lo mismo…

 

Un metro de encaje negro...

Por todos es sabido que la informática tiene un campo inmenso, su área de acción abarca casi todas las ramas del saber, haciendo posible que los delitos cometidos sean diversos, lo que convierte en casi imposible la tarea de catalogarlos todos de forma justa.

Antes de escribir esto, como es lógico, investigué, navegué, y bajé de la red nacional varias páginas que hablaban sobre el tema. Ciertos documentos por mi leídos enfocan los delitos informáticos de forma casi perfecta (desde mi punto de vista), sin embargo bastante inexactos, otros, tratando de ser lo más específicos posibles, toman como delito informático todo lo que se hace desde una computadora o en lo que se utiliza tal instrumento para lograr el fin propuesto por el malhechor.

Mis conocimientos de derecho son los mismos que los de cosmonauta, así que no tengo las más mínima idea de los pasos que se llevan a cabo para catalogar a un hecho como delito o no, pero si pienso que hay que hacer una marcada diferencia entre utilizar un ordenador para conectarse a un servidor y robar información del mismo, y graficar en una computadora los pasos que dará una banda de asaltantes para penetrar un banco.

En ambos casos se utiliza una PC, sin embargo en el primero se hace un uso casi total del mismo a todo lo largo de la infracción, y en el segundo, el medio sirve como herramienta opcional para acometer el acto. Por lo tanto EN MI OPINIÓN, no es lo mismo.

Tomando como base el concepto de delito, podrían enmarcar como delito informático todo lo que la ley tiene estipulado ya como delito y que a la vez se puede hacer de forma virtual. De esa forma, robar, falsificar, timar y otras cosas por el estilo en las que se use un ordenador podrían quedar plasmadas como delito informático, quedando fuera otras como el homicidio. (Aunque la yugular de la víctima haya sido atravesada por una memoria RAM).

¿Sería Ilegal el acceso sin autorización a un servidor?

Si de mi dependiera, NO!
Un servidor es una computadora conectada a la red y cuya misión es precisamente dejar que otras personas accedan a el, pudiendo ser para subir/bajar archivos, leer información, brindar servicio de correo, de chat, conferencia…

Tomando esto como base, siempre y cuando en los pasos previos no se haya incurrido en un delito, no es para nada ilegal que alguien sin autorización penetre al sistema, puesto que una de las tareas que realiza, o debe realizar un administrador de sistemas, es asegurar el servidor que administra.

Un ejemplo que para mí visualiza lo anterior lo pongo a continuación:
En una casa se suela dar fiestas todos los días y a toda hora, pero para entrar a dicha fiesta es necesario tener una reservación. Un persona compra uno de estos ticket con días de antelación y en el establecimiento destinado para eso, horas antes de su turno, decide que ya no quiere acudir, por lo que hace un traspaso de su entrada a otra persona (no tiene que ser obligatoriamente un conocido). Una vez que el nuevo poseedor de la entrada está dentro de la fiesta, quien vendió las reservaciones se da cuenta que ninguna de las entradas fue suministrada a esta persona e intenta sacarlo de la actividad.

¿Quién tiene la culpa?
¿El que vendió la entrada porque ya no la requiere y cede la posibilidad a otro de disfrutar de la actividad?
¿El que no pudo adquirirla desde un inicio y por suerte para él ve la posibilidad de entrar gracias a el favor del anterior?

En estos casos la solución es una pregunta: si ya se ha reservado un espacio para alguien, si ya el bufete ha sido guardado para alguien, si se ha separado una silla para alguien. ¿es tan importante el nombre de quien en ella se siente?

Visto desde el punto de vista informático, quien cumple la función de portero es el administrados, que es en definitiva quien tiene potestad para decidir quien, como, por donde y cuando entra cada persona. Alguien que tenga bajo su poder un ordenador es libre de conectarse de la forma que quiera, si decide que antes de acceder quiere ejecutar el bloc de notas y al hacerlo adquiere privilegios administrativos dada una mala configuración del server, ¿es su culpa acaso?.Un bug, hueco, agujero o defecto en la seguridad del sistema, no es responsabilidad del usuario, sino de quien dejó esa “puerta” abierta.

En este sentido el sistema penal de Colombia no considera el hacking como delito, puesto que lo único que se hace por parte del usuario es buscar vías mejores para acceder sin perjudicar o causar daños. La acción se transforma en delito, si una vez dentro del sistema, el usuario toma la información que tiene delante para modificar, cambiar, eliminar, robar …

Conclusiones

Si han llegado hasta aquí, entonces me gustaría decirles que esto que acaban de leer no son para nada las leyes cubanas. Como dije en un inicio, Cuba se encuentra en estos momentos creando sus mecanismos para enfrentar de forma correcta estas acciones y saber juzgar con justicia que es un delito informático y que no lo es.

Continuar leyendo

Escalada de privilegios (sethc)

BitXor [bitxor_nx@yahoo.com]

Tal como les prometía en la pasada edición, hoy les llega otro artículo sobre escaladas de privilegios en Windows. La semana pasada estuvimos hablando sobre escaladas al usuario SYSTEM en la versión XP del SO de Microsoft, que si era muy útil para ser explotada por un programador al implementarla a sus creaciones, no resultaba tan funcional para el usuario carente de todo privilegio. Lamentablemente para lograr una escalada con el programa AT de Windows se requiere de ciertos privilegios previos, al menos los suficientes para que el comando no nos retorne un desagradable mensaje de "Acceso denegado".

Afortunadamente la práctica a la que hoy haremos referencia nos librará de estos problemas, y si se logran seguir las instrucciones al pie de la letra al final del día nos habremos hecho de una ostentosa cuenta con privilegios administrativos.

[Reconociendo el problema]

¿Cuántas veces has estado distraído con un juego a pantalla completa y has presionado la tecla SHIFT repetidamente? Aquellos a los que les ha sucedido alguna vez recordarán la irritante sensación que experimentaron en ese momento hacia la molesta ventanita StickyKeys que se activa en Windows XP cuando un usuario presiona SHIFT cinco veces. Hoy (y probablemente por primera vez desde que instalaste XP) vamos a sacarle provecho a esa molesta aplicación que viene por defecto instalada en nuestro sistema.

Para aquellos despistados que aun no tengan una idea bien clara de lo que se está hablando vamos a proceder con un experimento de laboratorio. Para llevar a cabo esta tarea no se requieren conocimientos de C o ensamblador, tan solo presiona la tecla SHIFT repetidamente cinco veces. ¿No pasa nada?, si ya se, es posible, me pasó a mi justo escribiendo este artículo ¿y ahora qué diablos le sucede al Shift de mi teclado? No, el Shift está bien el problema es otro ¿has abierto algún juego a pantalla completa desde que iniciaste sesión? Algunos juegos para evitar el contratiempo que mencionaba justo al inicio deshabilitan la ayuda de accesibilidad de Windows temporalmente y luego olvidan rehabilitarla. Para solucionar el problema cierra la sesión actual y vuelve a entrar normalmente. Irresponsables programadores de RockStar, me sucedió a mí con Grand Theft Auto-Vice City. Solucionados los problemas proseguimos a disfrutar de nuestra aplicación de configuración de accesibilidad. Ahora si, cinco veces Shift y luego de un pitido curioso obtenemos una ventana modal con nombre StickyKeys. Un vistazo general nos llevará al administrador de tareas y desde allí no nos será difícil descubrir el nombre del proceso responsable de la ventana, se trata de "sethc.exe". Hasta ahora nada fuera de lo común, considerando que el proceso se está ejecutando con los permisos del usuario actual.

Próximo experimentos: cierra sesión nuevamente (!¿otra vez?!) y justo frente al diálogo de inserción de contraseña presiona Shift repetidamente. Mmm... cosa curiosa, a pesar de no estar logeado en el sistema Windows me ha permitido ejecutar el proceso sethc. A menos que quieras ponerte a configurar el StickyKeys desde afuera del sistema vuelve a logearte con tu usuario. Parece que hemos encontrado algo interesante en nuestro sistema a lo que le podremos sacar partido. A continuación la parte interesante (ya era hora!). Los más despiertos se estarán preguntando ¿Cómo es posible que Windows nos haya permitido ejecutar un proceso fuera del espacio de cualquier usuario?, ¿Con qué permisos se ha ejecutado el proceso sethc.exe?

[Haciéndole culto al StickyKeys]

Hora de sacarle partido a las vulnerabilidades de Windows. ¿Qué les parece si para empezar sustituimos sethc.exe por algo más interesante, cmd.exe, por ejemplo? Entre los lectores a priori puedo distinguir dos grupos bien definidos, los endemoniadamente suertudos y los tristemente desafortunados. La principal diferencia está en que los primeros no tendrán que pasar mucho trabajo para lograr explotar este bug, los segundos sin embargo necesitarán trabajar un poco más para conseguir su objetivo, de cualquier forma el resultado podría ser dos veces más gratificante, el placer es directamente proporcional al dolor requerido para obtenerlo. Olvidaba decirte que estoy asumiendo que estás probando tu suerte sentado en la PC que quieres acceder, no en tu casa frente a BlackHat. De cualquier modo se supone que estás realizando el trabajo con una cuenta con pocos privilegios. Dirígete con el explorador a la carpeta System32 del sistema y una vez allí intenta crear un nuevo documento de texto. Un mensaje de acceso denegado significa toda la diferencia entre uno y otro grupo.

Si no has tenido permiso de escritura en System32 deberás leer la próxima sección de este artículo, suponiendo que tengas permiso de escritura en la susodicha carpeta lo que haremos será sustituir el archivo sethc.exe por una copia de cmd.exe. Tendrá que hacer el cambio lo más rápido posible, ya que si Windows encuentra que le falta un archivo registrado en System32 lo recreará. Particularmente yo prefiero proceder en este paso con un fichero batch. Primeramente abre el nuevo documento de texto que acabamos de crear y en él escribe:

copy %SystemRoot%\System32\sethc.exe %SystemRoot%\System32\sethc_copy.exe
del %SystemRoot%\System32\sethc.exe
copy %SystemRoot%\System32\cmd.exe %SystemRoot%\System32\sethc.exe

Guarda los cambios, renombra el archivo como batchexploit.bat y ejecútalo. Solo para comprobar que todo marcha bien presiona Shift cinco veces y deberá mostrarse una consola del sistema en lugar del StickyKeys. El terreno está preparado, cierra sesión, ojo con esto, he dicho CERRAR sesión, NO bloquear el equipo con Win+L. Desde la pantalla de login presiona la tecla mágica repetidamente y aparecerá nuestra privilegiada consola.

¿Qué podemos hacer en este punto?
Para empezar agreguemos un nuevo usuario. Teclea el siguiente comando:

net user servant pass123 /add

Con esto estaremos creando un nuevo usuario llamado "servant" con password "pass123". Solo nos falta agregarlo al grupo de administradores

net localgroup Administradores servant /add

Te cuidado a la hora de agregar el usuario al grupo Administradores, sucede que si el SO está en inglés el grupo no se llamará Administradores sino Administrators. Para finalizar cierra la consola y entra al sistema con la cuenta que acabas de crear. Ya eres dueño de esa PC. Quizás hubieras preferido simplemente agregar tu viejo usuario al grupo de administradores en vez de crearte uno nuevo. De cualquier forma yo te aconsejo que al terminar de hacer lo que quieras dejes todo como mismo estaba. Para eliminar un usuario desde la consola usa

net user servant /del

Y para solo eliminarlo del grupo de administradores:

net localgroup Administradores servant /del

[Para los desafortunados]

Aquellos tristes mortales a los que System32 no les dio permiso de escritura no deben preocuparse. Existe más de un medio por el cual podría hacerse el cambio de archivos. Particularmente yo cuando me veo en este tipo de apuros siempre recurro a mi querido Knoppix Live CD. Para los que no estén al tanto, Knoppix es un sistema Linux que viene en live CD y nos permite levantar todo el sistema desde la torre de CD, dando acceso incluso al sistema de directorios. Solo insertas el CD, reinicias la máquina y haces un boot por la torre de disco. Una vez tengas Knoppix corriendo desde el escritorio das click derecho al disco duro donde tengas instalado Windows y deshabilitas la opción Read Only. Luego solo navegas hasta la carpeta en cuestión y haces el cambio. No necesitas un script shell para hacerlo, solo borra o renombra sethc.exe, hazle una copia a cmd.exe y renómbrala como sethc.exe. Los que no estén familiarizados con sistemas Linux no se alarmen, ¿es que acaso no han oído hablar de Winternal? Winternal es un live CD de reparación que nos permite levantar Windows desde un CD. Bien puedes hacer los cambios por allí. Hasta aquí solo he mencionado dos soluciones, pero no te limites... existen mil formas más, no olvides nuestro querido CIA Commander, por si no dispones de torre de CD. Incluso podrías simplemente hacerle llegar un archivo batch a un administrador del equipo para que lo ejecute por ti. Si eres programador, mucho más fácil. Crea un pequeño programa que haga el cambio y déjalo en una carpeta visible por todos con un título interesante. En fin, solo usa tu imaginación.
No te voy a mentir, hay máquinas donde se te puede poner el juego difícil. Unas pocas medidas de seguridad podrían ponerte en más aprietos... restricción de acceso al setup, unidades externas de disco deshabilitadas, etc. pero si eres bueno podrás hacer el cambio de archivos.

Continuar leyendo

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