C / C++ / C#

CVE-2015-1701: Elevar privilegios en Windows [Exploit]

Uno de los exploits analizados en la Operación RussianDoll (APT) se aprovechaba de la vulnerabilidad CVE-2015-1701 para escalar o elevar privilegios en Windows Vista / 7 y poder ejecutar código en modo kernel. A grandes rasgos consigue una devolución de llamada (callback) en modo usuario obteniendo las estructuras del EPROCESS del proceso System y del proceso actual, para luego copiar datos desde el token del proceso System al actual. Al finalizar, el payload continúa la ejecución en modo de usuario con los privilegios del proceso del sistema. Microsoft ya parcheó esta vulnerabilidad (MS15-0517) aunque el investigador ruso ‘hfiref0x‘ (habitual de kernelmode.info) publicó en GitHub el código fuente y compilado (créditos a R136a1). Descargar (Compilado) Taihou64.exe (6 KB) Taihou32.exe (5,5 KB) […]

, , , , , ,

FileTrack, monitor de cambios en archivos y carpetas (Linux) [C Source]

Debido a la gran importancia de llevar un registro de todos los cambios en archivos y carpetas de nuestro sistema o servidor hemos desarrollado FileTrack, una herramienta para Linux que permite monitorizar una carpeta, incluyendo subcarpetas, para detectar cambios en archivos o directorios. En esta primera versión 1.0, puede detectar los siguientes cambios: Creación de un archivo o carpeta. Modificación de un archivo. Eliminación de un archivo o carpeta. Cambio de nombre de un archivo o carpeta. Cambio de la ubicación de un archivo o carpeta. Apertura o acceso a un archivo o carpeta. Esta programado en el lenguaje de programación C y usa un servicio del Kernel de Linux llamado inotify para detectar los cambios en el sistema de […]

, , , , , , , , , , ,

Convertir una cadena de ascii a hexadecimal [C]

Ascii

¿Qué es ASCII? ASCII (American Standard Code for Information Interchange), es un código de caracteres basado en el alfabeto latino. Fue creado en 1963 por el Comité Estadounidense de Estándares (Instituto Estadounidense de Estándares Nacionales, ANSI) como una evolución de los conjuntos de códigos utilizados entonces en telegrafía. Más tarde, en 1967, se incluyeron las minúsculas, y se redefinieron algunos códigos de control para formar el código conocido como US-ASCII. El código ASCII utiliza 7 bits para representar los caracteres, aunque inicialmente empleaba un bit adicional (bit de paridad) que se usaba para detectar errores en la transmisión. A menudo se llama incorrectamente ASCII a otros códigos de caracteres de 8 bits, como el estándar ISO-8859-1 que es una extensión […]

, , , ,

Compilar programas en 64 bits [C]

Code C

Diferencias entre procesadores de x86 y x64 Los procesadores de 32 bits (x86) puede manejar un máximo de 4 gigabytes (2 ^ 32 = 4.294.967.296 bytes -> 4 gigabytes) de memoria RAM, mientras que un procesador con arquitectura de 64 bits (x64) puede tener hasta un máximo de 16 exabytes (2 ^ 64 = 18.446.744.073.709.551.616 -> 16 exabytes, 16 mil millones de gigabytes) de memoria RAM. Esto implica un incremento de las direcciones de memoria. Un sistema con un procesador de 64 bits es capaz de mover el doble de información por ciclo de reloj (un hertz) que un sistema con un procesador de 32 bits. Este desplazamiento no significa que sea más rápido sino que mueve más datos en […]

, , , , , ,