26 de agosto de 2009

De la importancia de Ofuscar

Este Software no arranca ni a la de 3.
Respuesta: Espera un momento que levante el capó y vemos el código.

A raíz de alguna de las entradas que Eduardo Abril publicó sobre ofuscación de exploits javascript y php recordé que una vez me bajé un interesante juego de cartas (bastante adictivo, añado) el cual exigía 10 eurazos por poder disputar las partidas completas, sino se te cortaban a la mitad de forma “casi” aleatoria.

Ni corto ni perezoso y dado que la interfaz me era familiar indagué, volví a indagar y descubrí que era un Visual Basic 6.0, la cosa me sonaba mucho así que me dije este código se puede de-compilar de un plumazo, y ahí está:

Visual Basic decompiler es una sencillísima herramienta de las muchas que hay para decompilar código, este caso en Visual Basic. Da igual que trabajeis con C#, C++, Java o php, salvo que el código esté protegido será posible sacarlo. Esto es especialmente problemático en Software distribuido como cliente pesado y si no es bien atajado surgen cracks como setas, solo hay que tener paciencia repasar el código… en este caso encontré que la casilla de introducción de clave del producto era un textbox donde se apilaba su valor y se invocaba a otra librería bien conocida:

….

loc_0096942B: call msvbvm60.dll.__vbaFreeVar

loc_0096942D: lea edx, var_24

loc_00969430: push 00430D74h ; "clave"

loc_00969435: push edx

loc_00969436: call 00925A50h

Las librerías también pueden ser de-compiladas, por lo que ya fue coser y cantar. Este pequeño ejemplo debe hacernos valorar si es necesario revisar el ciclo de vida de nuestros proyectos para implementar estos requisitos de seguridad, liberar un producto sin ofuscar puede ser una piedra lanzada contra nuestro propio tejado.

Un sector que tiene gran experiencia en este tema es el de los videojuegos, donde muchas empresas se han decantado por obligarte a “autenticarte” contra sus servidores cada vez que inicias el juego (aunque no juegues por Internet), es el caso de Half Life 2 o el futuro Command & Conquer 4.

Salu2

19 de agosto de 2009

Screen Data Leakage

Ufff, un poco espesa la entrada del NIST, ¿verdad? Vamos a cambiar de aires que estamos en verano :). En el día de hoy os traigo un par de aplicaciones que protegerán vuestros datos, bueno no es así exactamente. Protegerán los datos que mostréis en pantalla en un momento dado, ¿cómo?

Chameleon

Este producto diseñado por Oculis Labs protege contra el temido y paranoico (a ves no tanto) shoulder surfing haciendo que mientras nosotros vemos los datos con claridad, una persona que se sitúe un poco detrás vea cosas raras, no entiendo como acaba de hacerlo pero es una combinación de un dispositivo hardware (usb) y software que produce el extraño efecto. También protege contra el ataque Tempest, de ahí que esté pensada para el ejército o altos ejecutivos, curioso, ¿no?

Si te fijas en detalle da la sensación de que podemos generar patrones facilmente...

PrivateEye

Estamos en la oficina, nos suena el teléfono y desatendemos la pantalla. Nos levantamos por un café, agua o a preguntar que tal las vacaciones a un compañero y no bloqueamos la pantalla, total, si es 1 minuto. Inverosímil, ¿verdad? Pues como a nadie le gusta que fisguen en sus cosas cuando pierde la atención de la pantalla o minimizar rápido cuando alguien viene (al fin y al cabo es nuestra intimidad, incluso en el puesto de trabajo) ha surgido Private Eye, esta aplicación sólo se vale de tu webcam para detectar en qué momento pierdes la atención de la pantalla y difuminar esta dejándola perfectamente ilegible.

Sin duda parece un artículo de yoquierounodeesos.

Y es que en la Seguridad los ataques más tradicionales a la par que sencillos son los que muchas veces más descuidamos / olvidamos.

Salu2!

14 de agosto de 2009

NIST: Security Controls for Information Systems

“…Through the process of risk management, leaders must consider risk to US interests from adversaries using cyberspace to their advantage and from our own efforts to employ the global nature of cyberspace to achieve objectives in military, intelligence, and business operations… “

“…For operational plans development, the combination of threats, vulnerabilities, and impacts must be evaluated in order to identify important trends and decide where effort should be applied to eliminate or reduce threat capabilities; eliminate or reduce vulnerabilities; and assess, coordinate, and deconflict all cyberspace operations…”

“…Leaders at all levels are accountable for ensuring readiness and security to the same degree as in any other domain…"

-- THE NATIONAL STRATEGY FOR CYBERSPACE OPERATIONS

OFFICE OF THE CHAIRMAN, JOINT CHIEFS OF STAFF, U.S. DEPARTMENT OF DEFENSE

De esta guisa están los americanos en lo que a seguridad en los sistemas de la información respecta. Hace unos días el NIST publicó un interesante documento (NIST Special Publication 800-53) que describe a grandes rasgos los principales controles de seguridad que empresas de todos los sectores (banca, salud, defensa, etc.) deberían implementar en sus sistemas de información si quieren eliminar o mitigar las múltiples amenazas que su uso generan. La publicación de este paper me llama particularmente la atención ya que apenas hace 3 meses Obama anunciaba a bombo y platillo la comisión de un cuerpo militar especializado para el ciberespacio liderado por el "cyberzar" (si bien el NIST lleva muchos años publicando documentos de Seguridad, este en concreto parece enfocado para los Estados Unidos).

El paper habla y habla sobre controles de seguridad, sus clases (técnicos, operacionales, de gestión, mixtos), a que familia se pueden asociar (a mi me ha dado la impresión de que eran subfamilias de los 11 grandes dominios de la ISO 17799 - ISO 27000), habla de la calidad de los controles, su ciclo de vida, su gestión e indicadores así como las tareas de día a día a las que hay que dar especial relevancia para que el “proceso de la seguridad” no se nos quede atrás:

- Evaluación de lo que los controles nos aportan (o nos dejan de aportar).

- Requisitos de seguridad cambiantes.

- Nuevas amenazas, vulnerabilidades y vectores de ataque.

- Nuevas tecnologías.

Todo ello con un único objetivo, gestionar el riesgo. Para ello proponen un proceso muy familiar:

Que incluye un punto bastante interesante, “la autorización de los sistemas de información”, esto significaría que no permitiríamos entrar en producción sistemas que carecen de controles de seguridad o que representan un nivel de riesgo no aceptable. Si, esto es tan lógico que no se cumple en casi ninguna organización, por eso me llama la atención.

En resumen un documento al que merece la pena echar un vistazo, si eliminamos los Anexos son apenas 60 folios y de los anexos los más interesantes son:

- Anexo F: Catálogo de Controles de Seguridad (amplísimo)

- Anexo I: Controles en Sistemas Industriales (controles de seguridad para sistemas SCADA, recomendable también)

Lecturas para la playita :)

11 de agosto de 2009

Visual Basic 2008: Security Features


La vuelta de las vacas este año ha sido un poco más dura de lo habitual, es de esas veces donde desconectas del mundo de la Seguridad al 99% y olvidas casi casi a lo que te dedicas haciendo que el dia de vuelta te apetezca realizar Ctrl + Alt + Sup mental. Mientras que el año pasado aproveché para realizar “experimentos” de diversa índole en esta ocasión he tenido otras tareas. Por razones familiares tuve que crear una pequeña aplicación Cliente – Servidor para una clínica.

Haciendo flash—back recordé la agilidad con la que allá por el 2000 me desenvolvía en Visual Basic 5.0 y me dije, ¿Cuánto habrá podido cambiar? Y me decidí a bajarme el Visual Studio Express Edition, concretamente el Visual Basic (que ya va por la versión 9.0). Lo cierto es que no me llevé muchas sorpresas, en su esencia sigue siendo tremendamente cómodo, intuitivo y ágil. Eso sí, hay muchas novedades y utilidades para aplicar Seguridad desde los albores de un proyecto:

Permisos de aplicación: UAC

Dentro del explorador de soluciones en las propiedades del proyecto podemos cambiar los privilegios que requiera la aplicación así como las posibles llamadas al UAC. Como es obvio debemos tratar de trabajar con los menores de los permisos, así evitaremos por ejemplo que ante un “crash” de nuestra aplicación tiremos el sistema.


Código XML con el que definimos la seguridad UAC de la aplicación

Seguridad ClickONCE

Las aplicaciones que desarrollamos en VB se apoyan en la infraestructura .NET Framework y estarán sujetas a restricciones de código. Dentro de las propiedades del proyecto también podremos habilitar o deshabilitar restricciones según los permisos que requiera nuestro código, esto puede incluir transferencia de ficheros, cuadros de diálogo, permisos de impresión, generación de sockets, etc. etc.

Configurando permisos ClickONCE

Firma de Código: Generación de certificados

Es cierto, podremos garantizar a nuestros clientes que el software distribuido es nuestro a través de la firma digital. Para ello disponemos de una utilidad de generación de certificados que en cierta forma me recuerda al PGP y que a buen seguro aumentará la confianza a nuestros clientes:

Acceso a BBDD

También me ha llamado la atención la gestión de BBDD que hay disponible, si bien a priori podemos tirar “solo” de Microsoft Access y SQL Server (en el Wizard de Agregar Conexión), próximamente disponemos de opciones de autenticación de usuario al realizar las consultas, restringido eso sí a usuarios de SQL Server o de Windows (supongo que se podrán utilizar usuarios de Dominio, pero no lo he probado). También podremos crear y cifrar BBDD basadas en SQL Compact Server así como incluir o no en los argumentos de nuestras cadenas de conexión y consultas SQL el usuario y password con el que nos conectamos (no recomendable ya que viajará en claro).

Agregamos la cadena de conexión a nuestra BBDD

Creamos nuestra BBDD con el cifrado que permita la plataforma host.

Login Form

Todavía recuerdo esos viejos días en que independientemente del texto que introdujeras en el TextBox debías mostrar asteriscos para que ataques por shoulder surfing no fuesen un problema (algo que todavía no está limado del todo en plataformas como el Iphone [^^!]), en la última versión de VB tenemos los formularios predefinidos más comunes disponibles a un par de clicks (Proyecto à Agregar), entre ellos el Login Form, una gozada :D (que por supuesto he usado).

Formulario por defecto para hacer "Login"

Y tras haber trasteado con esta plataforma y tener casi terminada mi aplicación no he utilizado ni visto mucho más, aunque a buen seguro habrá muchas más opciones, solo hace falta explorar un poquito. La esencia de Visual Basic no ha variado un ápice en estos 9 años, sin embargo el abanico de facilidades no ha dejado de crecer (incluso para nosotros).

Salu2 y,,, ¡cuidado con la vuelta!