Ir al contenido principal

Entradas

Desbordamiento de enteros (Integer Overflow)

Ya os he hablado en este blog de posibles problemas potenciales que se pueden dar en los programas y que son susceptibles de ser explotados para hacer que dichos programas se comporten de forma diferente a la que deberían. Uno de estos problemas es el del desbordamiento de la pila . Sin embargo, hay otros posibles errores de programación que, aunque menos obvios, son igual de peligrosos. Uno de ellos es el desbordamiento de enteros o integer overflow. Para entender cómo funciona os presento un ejemplo muy sencillo pero didáctico.

Criptografía en Python con PyCrypto

A la hora de cifrar información con Python, tenemos algunas opciones, pero una de las más fiables es la librería criptográfica PyCrypto , que soporta funciones para cifrado por bloques, cifrado por flujo y cálculo de hash. Además incorpora sus propios generadores de números aleatorios. Seguidamente os presento algunas de sus características y también como se usa.

¿Cómo afecta la nueva ley de seguridad privada a la seguridad informática?

El día 5 de Abril de 2014 se publicó en BOE el texto de la nueva Ley 5/2014, de 4 de abril, de Seguridad Privada . A falta de un reglamento que la desarrolle, vamos a analizar algunos puntos que afectan directamente a la Seguridad Informática y a las empresas que prestan dichos servicios.

Servicios online para análisis de Malware

El análisis de un nuevo malware es siempre una tarea que requiere muchos recursos, tanto en tiempo como en conocimiento, lo que al final se traduce en dinero. Además, los buenos analistas de malware son un bien escaso. Las Empresas desarrolladoras de antivirus hacen una inversión muy considerable cuando se enfrenta a nuevos espécimenes de virus, por lo que se está investigando bastante en el campo del análisis automático de programas maliciosos. Está lejos el día en que un programa pueda igualar a un buen profesional, y además, personalmente, me parece una pena dejarle a una máquina el placer de resolver un desafío tan gratificante como es comprender el funcionamiento de un malware a pesar de los obstáculos que pone el programador que lo ha ideado. En cualquier caso, hay mucho malware nuevo cada día, y algunos son simplemente evoluciones de otros, así que vale la pena centrarse en los verdaderamente interesantes y usar analizadores automáticos para los demás. Existen diferentes altern...

Desarrollo de controladores de dispositivo (device drivers) en Linux

Continúo la serie de artículos sobre programación del kernel Linux con un artículo sobre el desarrollo de controladores de dispositivos o device drivers. El controlador de ejemplo que voy a mostraros se carga en memoria como un módulo del kernel, así que conviene leer los anteriores posts sobre programación de módulos del kernel Linux y cómo usar /proc desde un módulo del kernel Linux . Para compilar el módulo me he basado en el entorno para desarrollo para kernel Linux que publiqué en un anterior artículo. Voy a comenzar presentando un ejemplo sencillo que seguidamente pasaré a analizar.

Usar /proc desde un módulo del kernel Linux

Ya he dedicado un artículo a cómo programar un módulo para el kernel . Hoy vamos a dar una vuelta más de tuerca y vamos a ver cómo usar /proc desde un módulo del kernel Linux. Esto nos permitirá tener un medio de comunicación desde nuestros módulos del kernel con el exterior.

Desarrollo de módulos para el kernel Linux

Una de las primeras cosas que tiene que saber un hacker del kernel es cómo crear un módulo para el kernel Linux. Para continuar leyendo este artículo es conveniente haber leído antes el anterior Entorno para desarrollo del kernel Linux . Linux es un kernel del tipo monolítico, lo cual quiere decir, grosso modo, que todo el kernel es un gran archivo ejecutable que se carga y toma el control al iniciar el ordenador. El problema de este tipo de kernels es que al compilarlo hay que añadir todos los controladores para el hardware que queremos soportar. Esto es un problema si queremos hacer un kernel genérico que soporte una gran variedad de dispositivos, ya que su tamaño será considerable, e incluso inviable. Linux soluciona este problema a través de los módulos, por lo que podemos decir que Linux es un kernel modular que carga en memoria aquellos módulos que necesita en cada momento. Las distribuciones genéricas, como por ejemplo, Ubuntu, compilan un núcleo muy pequeño con lo mínimo para...