A menudo, durante el compromiso de la prueba de penetración , el analista de seguridad se enfrenta al problema de identificar vectores de ataque de escalada de privilegios en las máquinas Linux probadas. Uno de los vectores de ataque viables es usar exploit de Linux conocido públicamente para obtener rootprivilegios en la máquina probada. Por supuesto, para hacer eso, el analista necesita identificar el exploit correcto de PoC, asegurarse de que su objetivo se ve afectado por la vulnerabilidad asociada y, finalmente, modificar el exploit para adaptarlo a su objetivo. La herramienta linux-exploit-suggester.sh está diseñada para ayudar con estas actividades.
Descripción general
La herramienta está destinada a ayudar al analista de seguridad en su prueba de oportunidades de escalada de privilegios en la máquina Linux, proporciona las siguientes características: modo “Remoto” (–kernel o – interruptores de ununame) En este modo, el analista simplemente proporciona la versión kernel (switch) osalida de comando (switch) y recibe la lista de explotaciones candidatas para una versión de kernel determinada. Al usar este modo, también se pueden verificar los exploits candidatos del espacio de usuario (coninterruptor) si tiene acceso a la lista de paquetes instalados (salida decomandos) del sistema examinado. Modo “directo” (ejecución predeterminada)


--kerneluname -a--uname
--pkglist-filedpkg -l/rpm -qa


La idea básica detrás de este modo es la misma que anteriormente, pero adicionalmente en un esfuerzo por producir una lista más relevante de exploits candidatos, la herramienta también realiza series de comprobaciones adicionales (como: kernel build settings aka CONFIG_ *, entradas sysctl y otros controles personalizados) para descartar exploits que seguramente no serán aplicables debido a la personalización del sistema operativo. Entonces, por ejemplo, para ‘af_packet’ explotar qué requisitos se ven así:

Reqs: pkg=linux-kernel,ver>=3.2,ver<=4.10.6,CONFIG_USER_NS=y,sysctl:kernel.unprivileged_userns_clone==1

el script (además de verificar la versión del kernel) verificará si el kernel objetivo fue creado CONFIG_USER_NSy si la entrada sysctl kernel.unprivileged_userns_cloneestá habilitada. Opcionalmente, esas comprobaciones adicionales pueden saltarse al ejecutarse con el cambio de --skip-more-checks línea de comando .
Por defecto, la herramienta también comprueba los exploits de espacio de usuario aplicables cuando la distribución es una de Debian, Ubuntu, RHEL/CentOS/Fedora. Para omitir las comprobaciones de exploits de espacio de usuario, se puede ejecutar con el --kernelspace-onlycambio. Modo “CVE list” (–clarist-file switch)

En este modo, el analista ya posee una lista parcial / completa de CVE que afecta su kernel objetivo y quiere verificar si hay exploits conocidos públicamente en contra de estos CVE. Por supuesto, la efectividad de este modo depende en gran medida de la completitud de la lista CVE proporcionada. Dicha lista generalmente se construye mediante el estudio manual y el examen del registro de cambios de la distribución para la versión del núcleo dada. Alternativamente, para las distribuciones más populares , Ksplice Inspector de Oracle podría usarse para acelerar este proceso. Por ejemplo, el siguiente oneliner funcionó bastante bien para mí:

$ (uname -s; uname -m; uname -r; uname -v) | curl -s https://api-ksplice.oracle.com/api/1/update-list/ -L -H "Accept: text/text" --data-binary @- | grep CVE | tr ' ' '\n' | grep -o -E 'CVE-[0-9]+-[0-9]+' | sort -r -n | uniq

ADVERTENCIA. De forma predeterminada, además de comparar identificaciones CVE, este modo también realiza comprobaciones adicionales para descartar explotaciones que no serán aplicables debido a la personalización del sistema operativo (configuración de compilación del kernel, también conocida como CONFIG_ *, entradas de sysctl y otras configuraciones personalizadas). Por lo tanto, para obtener los mejores resultados, uno debe ejecutarlo directamente en la máquina probada o, alternativamente, usar el --skip-more-checksinterruptor de línea de comando si no es posible o no se está ejecutando en el objetivo. Modo “Comprobar seguridad” (–controlar interruptor) ADVERTENCIA. Este modo está en beta actualmente. Este modo está destinado a ser una continuación moderna de checksec.sh ‘s funcionalidad de switch. En este modo

--kernel
linux-exploit-suggester.shenumera el sistema de destino para varias características de seguridad kernel / hardware (KASLR, SMEP, etc.) y configuraciones. Comprueba si hay un mecanismo de protección disponible (integrado en el núcleo): [ Available ]y (si corresponde) comprueba si se puede deshabilitar / habilitar sin volver a compilar el kernel (por sysctlentrada u otros medios): [ Enabled/Disabled ]o muestra [ N/A]si no es posible deshabilitar / habilitar /No soportado.

Consejos, limitaciones, advertencias

  • Recuerde que este script solo sirve para ayudar al analista en sus actividades de auditoría. ¡No hará todo el trabajo para él!
  • Ese es el trabajo del analista para determinar si el objetivo dado no está parcheado contra la lista generada de explotaciones candidatas (el guión no mira el nivel de parche de la distribución, así que obviamente no lo hará por usted)
  • Además de la inspección manual, el inspector Ksplice de Oracle podría ser útil para determinar el anterior
  • El exploit seleccionado casi seguramente necesitará una personalización que se adapte a su objetivo (como mínimo: corrija los identificadores commit_creds / prepare_kernel_cred) para que se requiera conocimiento sobre las técnicas de explotación del kernel.

Uso Ejecución
predeterminada en la máquina de destino (la versión del kernel, las versiones de paquetes y las comprobaciones adicionales como se describe en el párrafo “Descripción general” se realizan para proporcionar la lista de posibles exploits:

$ ./linux-exploit-suggester.sh

Como anteriormente, solo se analizan los exploits del espacio de usuario:

$ ./linux-exploit-suggester.sh --userspace-only

Verifique si los exploits para la lista dada de ID de CVE están disponibles:

$ ./linux-exploit-suggester.sh --cvelist-file <cve-listing-file> --skip-more-checks

Genere una lista de CVE para el kernel objetivo y verifique si existen explotaciones (también realiza comprobaciones adicionales ):

$ (uname -s; uname -m; uname -r; uname -v) | curl -s https://api-ksplice.oracle.com/api/1/update-list/ -L -H "Accept: text/text" --data-binary @- | grep CVE | tr ' ' '\n' | grep -o -E 'CVE-[0-9]+-[0-9]+' | sort -r -n | uniq > <cve-listing-file>
$ ./linux-exploit-suggester.sh --cvelist-file <cve-listing-file>

Enumere los mecanismos de seguridad de kernel / hardware disponibles para la máquina de destino:

$ ./linux-exploit-suggester.sh --checksec

Ejecutar con la -kopción es útil si uno quiere examinar rápidamente qué exploits podrían ser potencialmente aplicables para la versión de kernel dada (este también es el modo de compatibilidad con Linux_Exploit_Suggester):

$ ./linux-exploit-suggester.sh -k 3.1

Con --unameuna proporciona un poco más de información ( uname -asalida de la máquina de destino) linux-exploit-suggester.shy recibe una lista ligeramente específica de exploits posibles (por ejemplo, también x86|x86_64se tiene en cuenta el arco de destino al generar la lista de exploits):

$ ./linux-exploit-suggester.sh --uname "Linux taris 3.16.0-30-generic #40~14.04.1-Ubuntu SMP Thu Jan 15 17:43:14 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux"

Opcionalmente --pkglist-file <file>podría proporcionarse -k--unametambién para verificar exploits de espacio de usuario:

(remote machine) $ dpkg -l > dpkgOutput.txt
$ ./linux-exploit-suggester.sh --uname "Linux taris 3.16.0-30-generic #40~14.04.1-Ubuntu SMP Thu Jan 15 17:43:14 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux" --pkglist-file dpkgOutput.txt

En términos de la lista generada de exploits es idéntica a la ejecución (directamente en la máquina remota dada):

(remote machine) $ ./linux-exploit-suggester.sh --skip-more-checks

En ocasiones, se desea examinar solo la lista de paquetes (en este caso, solo se realiza una comprobación para los exploits del espacio de usuario):

(remote machine) $ dpkg -l > dpkgOutput.txt
$ ./linux-exploit-suggester.sh --pkglist-file dpkgOutput.txt

Como anteriormente, pero no se realiza el control de versiones del paquete (es útil para una comprobación preliminar rápida si está instalado algún paquete para el cual el exploit de espacio de usuario está disponible):

$ ./linux-exploit-suggester.sh --pkglist-file dpkgOutput.txt --skip-pkg-versions

El número de versión del kernel se toma del sistema operativo actual, las fuentes de posibles exploits se descargan al directorio actual (solo se examinan los exploits del kernel):

$ ./linux-exploit-suggester.sh --fetch-sources --kernelspace-only

El número de versión del kernel se toma de la línea de comandos, se detallan todos los detalles (como: requisitos de la versión del núcleo, comentarios y URL que apuntan al anuncio / detalles técnicos sobre el exploit) sobre los exploits coincidentes:

$ ./linux-exploit-suggester.sh -k 4.1 --full

El número de versión del kernel se toma del sistema operativo actual, los binarios para los exploits aplicables se descargan (si están disponibles) al directorio actual, se omiten los controles adicionales:

$ ./linux-exploit-suggester.sh --fetch-binaries --skip-more-checks

Sin embargo, --fetch-binariestenga en cuenta que no se recomienda, ya que descarga binarios de fuentes generalmente no confiables y, de todos modos, estos binarios no se compilaron para su objetivo. Se debe utilizar como una especie de opción de último recurso cuando se está quedando sin tiempo durante su compromiso de prueba de lápiz y no hay un compilador disponible en su objetivo en cuestión.

Misc

  • La herramienta se inspiró en el script Linux_Exploit_Suggester y contiene todos los exploits que están presentes allí (para kernels 2.6+) más todos los exploits de kernel de Linux más recientes.
  • Está disponible en distribución BlackArch
  • No somos responsables de cómo se usa la herramienta y dónde se usa
Fuente: Kitploit.com

Compartir