“Programando técnicas de anti-reversing en Linux” – Libro gratuito

Programming Linux Anti-Reversing Techniques es un libro gratuito de Jacob Baines que muestra al lector cómo programar y analizar las técnicas más conocidas de anti-reversing en Linux. El libro muestra cómo un reverser analiza un binario con herramientas como IDA, Radare2, GDB, readelf y más. El código es presentado al lector listo para que pueda compilarlo y analizarlo por sí mismo.

Descargalo desde aquí.

Tabla de contenidos

Preface
Why Read This Book?
        Topics Not Covered
        Prerequisites
        Code and Command Output
    Chapter 1: Introductions
Introducing “Trouble”
        Using CMake
        The Code
        Compiling
        Executing
        Accessing the Shell
    Chapter 2: Compiler Options
-g
Recovering the Bind Shell Password with Hexdump
            Recovering the Bind Shell Password with GDB
            The Debugging Information in IDA
            Removing the Debugging Information
            Case Study: XOR DDOS
-s
SYMTAB vs. DYNSYM
Finding the Bind Shell Password Using .symtab
Case Study: The FILE Symbol
Examing Trouble After -s
-fvisibility
Looking at FUNC symbols
            Hiding FUNC symbols
        -O
   Corrected Block Tiny Encryption Algorithm (XXTEA)
            -Os
            -O3
            -funroll-loops
-static
Resolving Functions at Runtime
            ltrace
            LD_PRELOAD
            Using musl
    Chapter 3: File Format Hacks
The Strip Utility
        Removing the Section Headers Table
        Little Endian or Big Endian?
        The Sections Are a Lie
            Flipping the Executable Bit
            Lying with .init
            Hiding the Entry Point
        Mixing the Symbols
    Chapter 4: Fighting Off String Analysis
Code Reorganization
        Stack Strings
        XOR Stack String
        Function Encryption
            Computing the Function’s Size Using a Linker Script
            Decryption Logic
            Encryption Logic
        Creating a Cryptor
            Implementing the Cryptor
            Analyzing the Cryptor
  Chapter 5: Obstructing Code Flow Analysis
Indirect Function Calls
        Signals
        Early Return
        Jump Over an Invalid Byte
        Jump! Jump!
        Always Follow the Conditional
        Overlapping Instructions
Chapter 6: Evading the Debugger
Trace Me
        Trapping the Debugger
        Becoming Attached
        madvise
        prctl
        Detection Before main()
        Computing Function Checksums
Conclusion: All That We Fall For
    Notes

Fuente: HackPlayers

Ejemplos de código vulnerable para entrenar la cabeza

Copia de datos

Una de las vulnerabilidades más sencillas de ver a simple vista está relacionada con la copia de datos a búferes con funciones como strcpy, sin control del tamaño de la copia.

vulnerabilidad strcpy IMAP

Arriba vemos parte del código vulnerable del servidor IMAP de la Universidad de Washington, el cual fue corregido en 1998. Vemos que nunca se comprueba el tamaño de los datos en mechanism antes de hacer la copia a tmp, lo cual puede llevar al desbordamiento del búfer. El error se resuelve fácilmente con una comprobación de strlen(mechanism) antes de la copia, o con el uso de funciones de copia de n bytes, como strncpy.

Como podrás imaginar, es muy difícil que hoy en día se encuentre este tipo de vulnerabilidades en aplicaciones de código abierto y, de existir, son rápidamente corregidas.

Continue reading

Abriendo una conexión a #LDAP desde #PHP

Utilizamos el recurso ldap_connect para abrir una conexión a un servidor LDAP.

resource ldap_connect ([ string $hostname = NULL [, int $port = 389 ]] )

Estableciendo una conexión con un servidor LDAP en un determinado hostname and port.

Parámetros

hostname

Si se está usando OpenLDAP 2.x.x se puede especificar una URL en lugar del host. Para usar LDAP con SSL, se debe compilar OpenLDAP 2.x.x con soporte para SSL, configurar PHP con SSL y colocar este parámetro como ldaps://hostname/.

port

El puerto al cual debe conectarse. No se usa cuando se está usando URLs.

Continue reading

Ataques a #IoT (#Internet de las Cosas)

En el mes de octubre ocurrió un hecho importante: los ciberdelincuentes aprovecharon las vulnerabilidades de los dispositivos de la Internet de las Cosas (IoT) y los convirtieron en un malvado ejército fraudulento. Una serie de ataques distribuidos de denegación de servicio (DDoS) afectó los sitios web conectados a Dyn, una empresa de gestión del rendimiento de Internet basada en la nube; entre esos sitios estaban los de Amazon, Twitter, Reddit, Spotify y PayPal y posiblemente se trate de un punto decisivo en la historia de los ataques.

Ahora, con la llegada de la Navidad y la volatilidad cada vez mayor de los mercados mundiales, que nunca dependieron tanto de las transacciones online, todo el mundo está desesperado por impedir que estos ataques se repitan.

Continue reading

Libros gratuitos de #MachineLearning y #DataScience

Datascience se encarga del análisis de información usando técnicas y teorías en muchos campos como las matemáticas, la estadística, reconocimiento de patrones, visualización, etc, con el objetivo final de obtener datos.

Machine Learning es un término asociado a la Inteligencia Artificial que trata sobre el estudio de sistemas que pueden aprender a partir del análisis de los datos que reciben.

En estos enlaces encontrarás libros gratuitos que tratan sobre estas dos interesantes materias:

Fuente: Cyberhades

Debuggeando a #Python desde la consola

El módulo pdb es un debugger interactivo para programas escritos en Python. Soporta breakpoints, stepping individuales, inspección de los stackslisting del código fuente y evaluación del código de Python en el contexto de todas las tramas.

Se invoca al debugger importando el módulo pdb. Para correr un programa bajo el control del debugger, ver el siguiente ejemplo:

>>> import pdb
>>> import mymodule
>>> pdb.run('mymodule.test()')
> <string>(0)?()
(Pdb) continue
> <string>(1)?()
(Pdb) continue
NameError: 'spam'
> <string>(1)?()
(Pdb)

También, puede ser llamado desde la consola, para controlar el flujo de otros scritps.

python -m pdb myscript.py

Continue reading

10 herramientas on-line para investigaciones

En ocasiones, si sos entusiasta de la seguridad informática o te da curiosidad entender algunos incidentes, te tocará llevar acabo tus investigaciones desde lugares en los cuales quizá no tengas acceso a tu laboratorio o simplemente prefieras utilizar herramientas que están disponibles en la nube. Si este es el caso, este artículo compila las principales y sus diferentes propósitos.

#1 Network Tools

Este tipo de herramienta se utiliza mucho para obtener información sobre determinada dirección de dominio o IP, desde quién la registro, quién es su dueño, el país donde se encuentra y hasta información del servicio de Hosting, que puede ser muy útil, por ejemplo, para solicitar la baja de un C&C o un sitio de phishing.

Otros portales similares también pueden indicar cuáles son los dominios que están almacenados en la misma dirección IP. Esta valiosa información podría ser útil a la hora de detectar, por ejemplo, desde qué dominio se ha podido comprometer un servidor web.

Continue reading

Diferencias entre codificación y cifrado

Cuando la semántica y la sintaxis importan en seguridad

Primero vale la pena mencionar que la criptografía hace parte de un campo mucho más amplio que es la criptología, la cual comprende otros campos como el criptoanálisis y la esteganografía. Particularmente la criptografía se enfoca en estudiar los métodos para lograr que un mensaje no pueda ser leído por un tercero sin autorización, es decir, garantizar la confidencialidad de la información.

CIFRAR UN MENSAJE TIENE QUE VER CON OCULTAR SU INFORMACIÓN BASÁNDOSE EN LA SINTAXIS; LA CODIFICACIÓN SE BASA EN ALTERAR LA SEMÁNTICA

Para ocultar el significado del mensaje se puede adoptar una de dos opciones: usar algoritmos de cifrado o codificar el mensaje. El cifrado, entonces, se basa en aplicar un algoritmo que suele utilizar una clave para transformar la estructura y composición de la información que se pretende proteger, de tal manera que si es interceptada por un tercero no la pueda entender.

Continue reading

¿Sabés sobre #criptografía?

La criptografía es una de las bases fundamentales de la seguridad de la información. Se utiliza para cifrar o codificar mensajes para evitar que su contenido pueda ser leído, modificado u ocultado por un tercero no autorizado. De esta manera, ayuda a que la información cumpla los tres requisitos fundamentales para mantenerse segura: confidencialidad, integridad y disponibilidad.

Esta metodología atraviesa gran parte de nuestras actividades cotidianas. Piensa cuando envías un e-mail, por ejemplo; si el gestor de correos que usas no utilizara técnicas de cifrado, la información que envíes podría ser interceptada y leída por un desconocido. Pensemos en otro ejemplo, en una comunicación más simple aún, como el envío de un mensaje vía WhatsApp. Esta app, como algunas otras, también utiliza cifrado; de hecho, en 2016 terminaron de implementar el cifrado de “punto a punto”, lo que significa que solo el emisor y el receptor serán los que puedan leer la comunicación. “Ni cibercriminales. Ni hackers. Ni regímenes opresivos. Ni siquiera nosotros”, aseguraron los dueños de WhatsApp cuando aplicaron esta tecnología a su software.

Continue reading