Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
linux-4.1.15_CVE-2017-1000371 — Árbol de código fuente del kernel de Linux 4.1.15 con modificaciones relacionadas con CVE-2017-1000371, una vulnerabilidad de escalada local de privilegios. Proporciona una base para analizar y comprender la falla. | Kitploit
Herramientas/GitHubGitHub/trinadh465/linux-4.1.15_cve-2017-1000371
Análisis de VulnerabilidadesExplotaciónPapers e InvestigaciónAprendizaje y EducaciónExplotación de Binarios
GitHubtrinadh465/linux-4.1.15_cve-2017-1000371

linux-4.1.15_CVE-2017-1000371

Árbol de código fuente del kernel de Linux 4.1.15 con modificaciones relacionadas con CVE-2017-1000371, una vulnerabilidad de escalada local de privilegios. Proporciona una base para analizar y comprender la falla.

Ver Repositorio
2hace 3 añosAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Lanzamiento del kernel Linux 4.x http://kernel.org/

Estas son las notas de lanzamiento para la versión 4 de Linux. Léelas atentamente, ya que explican de qué se trata todo esto, cómo instalar el kernel y qué hacer si algo sale mal.

¿QUÉ ES LINUX?

Linux es un clon del sistema operativo Unix, escrito desde cero por Linus Torvalds con la ayuda de un equipo disperso de hackers a través de la red. Su objetivo es cumplir con POSIX y la Especificación Única de UNIX.

Tiene todas las características que esperarías en un Unix moderno y completo, incluyendo multitarea real, memoria virtual, bibliotecas compartidas, carga bajo demanda, ejecutables compartidos con copia en escritura, gestión de memoria adecuada y redes multistack incluyendo IPv4 e IPv6.

Se distribuye bajo la Licencia Pública General de GNU; consulte el archivo COPYING adjunto para más detalles.

¿EN QUÉ HARDWARE FUNCIONA?

Aunque originalmente desarrollado primero para PC basados en x86 de 32 bits (386 o superior), hoy Linux también se ejecuta en (al menos) las arquitecturas Compaq Alpha AXP, Sun SPARC y UltraSPARC, Motorola 68000, PowerPC, PowerPC64, ARM, Hitachi SuperH, Cell, IBM S/390, MIPS, HP PA-RISC, Intel IA-64, DEC VAX, AMD x86-64, AXIS CRIS, Xtensa, Tilera TILE, AVR32 y Renesas M32R.

Linux es fácilmente portable a la mayoría de las arquitecturas de propósito general de 32 o 64 bits siempre que tengan una unidad de gestión de memoria paginada (PMMU) y un puerto del compilador GNU C (gcc) (parte de la Colección de Compiladores GNU, GCC). Linux también se ha portado a varias arquitecturas sin PMMU, aunque la funcionalidad es obviamente algo limitada. Linux también se ha portado a sí mismo. Ahora puedes ejecutar el kernel como una aplicación de espacio de usuario; esto se llama UserMode Linux (UML).

DOCUMENTACIÓN:

  • Hay mucha documentación disponible tanto en forma electrónica en Internet como en libros, tanto específica de Linux como relacionada con preguntas generales de UNIX. Recomendaría revisar los subdirectorios de documentación en cualquier sitio FTP de Linux para los libros del LDP (Proyecto de Documentación de Linux). Este README no pretende ser documentación del sistema: hay fuentes mucho mejores disponibles.

  • Hay varios archivos README en el subdirectorio Documentation/: normalmente contienen notas de instalación específicas del kernel para algunos controladores, por ejemplo. Consulte Documentation/00-INDEX para obtener una lista de lo que contiene cada archivo. Por favor, lea el archivo Changes, ya que contiene información sobre los problemas que pueden resultar al actualizar su kernel.

  • El subdirectorio Documentation/DocBook/ contiene varias guías para desarrolladores y usuarios del kernel. Estas guías se pueden renderizar en varios formatos: PostScript (.ps), PDF, HTML y páginas man, entre otros. Después de la instalación, "make psdocs", "make pdfdocs", "make htmldocs" o "make mandocs" renderizarán la documentación en el formato solicitado.

  • INSTALACIÓN del código fuente del kernel:

    • Si instalas las fuentes completas, coloca el tarball del kernel en un directorio donde tengas permisos (por ejemplo, tu directorio personal) y descomprímelo:

      xz -cd linux-4.X.tar.xz | tar xvf -

      Reemplaza "X" con el número de versión del kernel más reciente.

      NO uses el área /usr/src/linux! Esta área tiene un conjunto (generalmente incompleto) de encabezados del kernel que son utilizados por los archivos de encabezado de las bibliotecas. Deben coincidir con la biblioteca y no deben desordenarse con lo que sea el kernel del día.

    • También puedes actualizar entre versiones 4.x mediante parches. Los parches se distribuyen en formato xz. Para instalar mediante parches, obtén todos los archivos de parche más nuevos, ingresa al directorio de nivel superior del código fuente del kernel (linux-4.X) y ejecuta:

      xz -cd ../patch-4.x.xz | patch -p1

      Reemplaza "x" por todas las versiones mayores que la versión "X" de tu árbol de fuentes actual, en orden, y debería estar bien. Es posible que desees eliminar los archivos de respaldo (some-file-name~ o some-file-name.orig), y asegurarte de que no haya parches fallidos (some-file-name# o some-file-name.rej). Si los hay, o tú o yo hemos cometido un error.

      A diferencia de los parches para los kernels 4.x, los parches para los kernels 4.x.y (también conocidos como kernels -stable) no son incrementales sino que se aplican directamente al kernel base 4.x. Por ejemplo, si tu kernel base es 4.0 y deseas aplicar el parche 4.0.3, no debes aplicar primero los parches 4.0.1 y 4.0.2. De manera similar, si estás ejecutando la versión del kernel 4.0.2 y deseas saltar a 4.0.3, primero debes revertir el parche 4.0.2 (es decir, patch -R) antes de aplicar el parche 4.0.3. Puedes leer más sobre esto en Documentation/applying-patches.txt

      Alternativamente, el script patch-kernel se puede utilizar para automatizar este proceso. Determina la versión actual del kernel y aplica cualquier parche encontrado.

      linux/scripts/patch-kernel linux

      El primer argumento en el comando anterior es la ubicación del código fuente del kernel. Los parches se aplican desde el directorio actual, pero se puede especificar un directorio alternativo como segundo argumento.

    • Asegúrate de que no haya archivos .o obsoletos y dependencias por ahí:

      cd linux make mrproper

      Ahora deberías tener las fuentes correctamente instaladas.

    REQUISITOS DE SOFTWARE

    Compilar y ejecutar los kernels 4.x requiere versiones actualizadas de varios paquetes de software. Consulta Documentation/Changes para conocer los números de versión mínimos requeridos y cómo obtener actualizaciones de estos paquetes. Ten cuidado, ya que el uso de versiones excesivamente antiguas de estos paquetes puede causar errores indirectos muy difíciles de rastrear, así que no asumas que puedes simplemente actualizar los paquetes cuando surjan problemas obvios durante la compilación o la operación.

    DIRECTORIO de construcción para el kernel:

    Al compilar el kernel, todos los archivos de salida se almacenarán por defecto junto con el código fuente del kernel. Usar la opción "make O=output/dir" te permite especificar un lugar alternativo para los archivos de salida (incluyendo .config). Ejemplo:

    root@kitploit:~
     kernel source code: /usr/src/linux-4.X
     build directory:    /home/name/build/kernel
    

    Para configurar y compilar el kernel, usa:

    root@kitploit:~
     cd /usr/src/linux-4.X
     make O=/home/name/build/kernel menuconfig
     make O=/home/name/build/kernel
     sudo make O=/home/name/build/kernel modules_install install
    

    Ten en cuenta: Si se utiliza la opción 'O=output/dir', entonces debe usarse para todas las invocaciones de make.

    CONFIGURACIÓN del kernel:

    No te saltes este paso incluso si solo estás actualizando una versión menor. Se agregan nuevas opciones de configuración en cada lanzamiento, y aparecerán problemas extraños si los archivos de configuración no se configuran como se espera. Si deseas llevar tu configuración existente a una nueva versión con un trabajo mínimo, usa "make oldconfig", que solo te preguntará las respuestas a las nuevas preguntas.

    • Los comandos de configuración alternativos son:

      "make config" Interfaz de texto plano.

      "make menuconfig" Menús de color basados en texto, listas de radio y diálogos.

      "make nconfig" Menús de color basados en texto mejorados.

      "make xconfig" Herramienta de configuración basada en X windows (Qt).

      "make gconfig" Herramienta de configuración basada en X windows (Gtk).

      "make oldconfig" Por defecto todas las preguntas basadas en el contenido de tu archivo ./.config existente y preguntando sobre nuevos símbolos de configuración.

      "make silentoldconfig" Como el anterior, pero evita saturar la pantalla con preguntas ya respondidas. Además actualiza las dependencias.

      "make olddefconfig" Como el anterior, pero establece los nuevos símbolos a sus valores predeterminados sin preguntar.

      "make defconfig" Crea un archivo ./.config usando los valores de símbolo predeterminados de arch/$ARCH/defconfig o arch/$ARCH/configs/${PLATFORM}_defconfig, dependiendo de la arquitectura.

      "make ${PLATFORM}_defconfig" Crea un archivo ./.config usando los valores de símbolo predeterminados de arch/$ARCH/configs/${PLATFORM}_defconfig. Usa "make help" para obtener una lista de todas las plataformas disponibles de tu arquitectura.

      "make allyesconfig" Crea un archivo ./.config estableciendo los valores de los símbolos a 'y' tanto como sea posible.

      "make allmodconfig" Crea un archivo ./.config estableciendo los valores de los símbolos a 'm' tanto como sea posible.

      "make allnoconfig" Crea un archivo ./.config estableciendo los valores de los símbolos a 'n' tanto como sea posible.

      "make randconfig" Crea un archivo ./.config estableciendo los valores de los símbolos a valores aleatorios.

      "make localmodconfig" Crea una configuración basada en la configuración actual y los módulos cargados (lsmod). Deshabilita cualquier opción de módulo que no sea necesaria para los módulos cargados.

      root@kitploit:~
                          Para crear un localmodconfig para otra máquina,
                          guarda el lsmod de esa máquina en un archivo
                          y pásalo como parámetro LSMOD.
      
                  target$ lsmod > /tmp/mylsmod
                  target$ scp /tmp/mylsmod host:/tmp
      
                  host$ make LSMOD=/tmp/mylsmod localmodconfig
      
                          Lo anterior también funciona al compilar de forma cruzada.
      

      "make localyesconfig" Similar a localmodconfig, excepto que convertirá todas las opciones de módulos en opciones integradas (=y).

      Puedes encontrar más información sobre el uso de las herramientas de configuración del kernel de Linux en Documentation/kbuild/kconfig.txt.

    • NOTAS sobre "make config":

      • Tener controladores innecesarios hará que el kernel sea más grande y, en algunas circunstancias, puede provocar problemas: la detección de una tarjeta controladora inexistente puede confundir a tus otros controladores

      • Compilar el kernel con "Tipo de procesador" configurado en un valor superior a 386 dará como resultado un kernel que NO funciona en un 386. El kernel lo detectará al inicio y se rendirá.

      • Un kernel con emulación matemática compilada seguirá usando el coprocesador si está presente: la emulación matemática simplemente nunca se usará en ese caso. El kernel será ligeramente más grande, pero funcionará en diferentes máquinas independientemente de si tienen un coprocesador matemático o no.

      • Los detalles de configuración de "kernel hacking" generalmente resultan en un kernel más grande o más lento (o ambos), e incluso pueden hacer que el kernel sea menos estable al configurar algunas rutinas para intentar activamente romper código malo y encontrar problemas del kernel (kmalloc()). Por lo tanto, probablemente deberías responder 'n' a las preguntas sobre características de "desarrollo", "experimental" o "depuración".

    COMPILACIÓN del kernel:

    • Asegúrate de tener al menos gcc 3.2 disponible. Para más información, consulta Documentation/Changes.

      Ten en cuenta que aún puedes ejecutar programas de usuario a.out con este kernel.

    • Ejecuta "make" para crear una imagen de kernel comprimida. También es posible ejecutar "make install" si tienes lilo instalado para adecuarlo a los makefiles del kernel, pero quizás quieras verificar primero tu configuración particular de lilo.

      Para realizar la instalación real, debes ser root, pero ninguna de las compilaciones normales debería requerirlo. No tomes el nombre de root en vano.

    • Si configuraste alguna de las partes del kernel como `módulos', también tendrás que ejecutar "make modules_install".

    • Salida detallada de compilación/construcción del kernel:

      Normalmente, el sistema de construcción del kernel se ejecuta en un modo bastante silencioso (pero no totalmente silencioso). Sin embargo, a veces tú u otros desarrolladores del kernel necesitan ver los comandos de compilación, enlace u otros exactamente como se ejecutan. Para esto, usa el modo de construcción "verbose". Esto se hace insertando "V=1" en el comando "make". Por ejemplo:

      make V=1 all

      Para que el sistema de construcción también indique la razón de la reconstrucción de cada objetivo, usa "V=2". El valor predeterminado es "V=0".

    • Mantén un kernel de respaldo a mano por si algo sale mal. Esto es especialmente cierto para las versiones de desarrollo, ya que cada nueva versión contiene código nuevo que no ha sido depurado. Asegúrate también de mantener una copia de seguridad de los módulos correspondientes a ese kernel. Si estás instalando un nuevo kernel con el mismo número de versión que tu kernel actual, haz una copia de seguridad de tu directorio de módulos antes de ejecutar "make modules_install".

      Alternativamente, antes de compilar, usa la opción de configuración del kernel "LOCALVERSION" para agregar un sufijo único a la versión regular del kernel. LOCALVERSION se puede configurar en el menú "Configuración general".

    • Para arrancar tu nuevo kernel, necesitarás copiar la imagen del kernel (por ejemplo, .../linux/arch/i386/boot/bzImage después de la compilación) al lugar donde se encuentra tu kernel arrancable habitual.

    • Ya no se admite arrancar un kernel directamente desde un disquete sin la ayuda de un gestor de arranque como LILO.

      Si arrancas Linux desde el disco duro, es probable que uses LILO, que usa la imagen del kernel especificada en el archivo /etc/lilo.conf. El archivo de imagen del kernel suele ser /vmlinuz, /boot/vmlinuz, /bzImage o /boot/bzImage. Para usar el nuevo kernel, guarda una copia de la imagen anterior y copia la nueva imagen sobre la anterior. ¡¡Entonces, DEBES VOLVER A EJECUTAR LILO para actualizar el mapa de carga!! Si no lo haces, no podrás arrancar la nueva imagen del kernel.

      Reinstalar LILO generalmente es cuestión de ejecutar /sbin/lilo. Es posible que desees editar /etc/lilo.conf para especificar una entrada para tu imagen de kernel anterior (por ejemplo, /vmlinux.old) en caso de que la nueva no funcione. Consulta la documentación de LILO para más información.

      Después de reinstalar LILO, todo debería estar listo. Apaga el sistema, reinicia, ¡y disfruta!

      Si alguna vez necesitas cambiar el dispositivo raíz predeterminado, el modo de video, el tamaño del ramdisk, etc. en la imagen del kernel, usa el programa 'rdev' (o alternativamente las opciones de arranque de LILO cuando corresponda). No es necesario recompilar el kernel para cambiar estos parámetros.

    • Reinicia con el nuevo kernel y disfruta.

    SI ALGO SALE MAL:

    • Si tienes problemas que parecen deberse a errores del kernel, por favor revisa el archivo MAINTAINERS para ver si hay una persona en particular asociada con la parte del kernel que te está dando problemas. Si no hay nadie listado allí, entonces la segunda mejor opción es enviarlos por correo a mí ([email protected]), y posiblemente a cualquier otra lista de correo relevante o al grupo de noticias.

    • En todos los informes de errores, por favor indica de qué kernel estás hablando, cómo duplicar el problema y cuál es tu configuración (usa tu sentido común). Si el problema es nuevo, dímelo, y si el problema es antiguo, por favor intenta decirme cuándo lo notaste por primera vez.

    • Si el error produce un mensaje como

      unable to handle kernel paging request at address C0000010 Oops: 0002 EIP: 0010:XXXXXXXX eax: xxxxxxxx ebx: xxxxxxxx ecx: xxxxxxxx edx: xxxxxxxx esi: xxxxxxxx edi: xxxxxxxx ebp: xxxxxxxx ds: xxxx es: xxxx fs: xxxx gs: xxxx Pid: xx, process nr: xx xx xx xx xx xx xx xx xx xx xx

      o información similar de depuración del kernel en tu pantalla o en tu registro del sistema, por favor duplícala exactamente. El volcado puede parecerte incomprensible, pero contiene información que puede ayudar a depurar el problema. El texto anterior al volcado también es importante: indica algo sobre por qué el kernel volcó código (en el ejemplo anterior, se debe a un puntero de kernel incorrecto). Más información sobre cómo interpretar el volcado está en Documentation/oops-tracing.txt

    • Si compilaste el kernel con CONFIG_KALLSYMS, puedes enviar el volcado tal cual; de lo contrario, tendrás que usar el programa "ksymoops" para interpretar el volcado (pero compilar con CONFIG_KALLSYMS suele ser preferible). Esta utilidad se puede descargar de ftp://ftp..kernel.org/pub/linux/utils/kernel/ksymoops/ . Alternativamente, puedes hacer la búsqueda del volcado manualmente:

    • En volcados de depuración como el anterior, ayuda enormemente si puedes buscar qué significa el valor EIP. El valor hexadecimal como tal no me ayuda a mí ni a nadie más mucho: dependerá de tu configuración particular del kernel. Lo que debes hacer es tomar el valor hexadecimal de la línea EIP (ignora el "0010:"), y buscarlo en la lista de nombres del kernel para ver qué función del kernel contiene la dirección problemática.

      Para encontrar el nombre de la función del kernel, necesitarás encontrar el binario del sistema asociado con el kernel que mostró el síntoma. Este es el archivo 'linux/vmlinux'. Para extraer la lista de nombres y compararla con el EIP del fallo del kernel, haz:

      nm vmlinux | sort | less

      Esto te dará una lista de direcciones del kernel ordenadas de forma ascendente, a partir de la cual es sencillo encontrar la función que contiene la dirección problemática. Ten en cuenta que la dirección proporcionada por los mensajes de depuración del kernel no coincidirá necesariamente exactamente con las direcciones de las funciones (de hecho, es muy improbable), por lo que no puedes simplemente hacer 'grep' en la lista: la lista te dará, sin embargo, el punto de inicio de cada función del kernel, por lo que al buscar la función que tiene una dirección de inicio menor que la que estás buscando pero que es seguida por una función con una dirección mayor, encontrarás la que deseas. De hecho, puede ser una buena idea incluir un poco de "contexto" en tu informe de problema, dando algunas líneas alrededor de la interesante.

      Si por alguna razón no puedes hacer lo anterior (tienes una imagen de kernel precompilada o similar), contarme todo lo posible sobre tu configuración ayudará. Por favor, lee el documento REPORTING-BUGS para más detalles.

    • Alternativamente, puedes usar gdb en un kernel en ejecución. (solo lectura; es decir, no puedes cambiar valores ni establecer puntos de interrupción). Para hacer esto, primero compila el kernel con -g; edita arch/i386/Makefile apropiadamente, luego ejecuta "make clean". También necesitarás habilitar CONFIG_PROC_FS (a través de "make config").

      Después de reiniciar con el nuevo kernel, ejecuta "gdb vmlinux /proc/kcore". Ahora puedes usar todos los comandos habituales de gdb. El comando para buscar el punto donde falló tu sistema es "l *0xXXXXXXXX". (Reemplaza las XXX con el valor EIP).

      Usar gdb en un kernel que no se está ejecutando actualmente falla porque gdb (incorrectamente) ignora el desplazamiento inicial para el cual el kernel está compilado.

    Descargar herramienta