Documentos de Académico
Documentos de Profesional
Documentos de Cultura
En este caso debemos acceder al sistema destino y obtener las banderas. Para ello
empezaremos utilizando el comando
openvpn y el archivo de configuración OpenVPN con el fin de establecer una conexión
VPN y poder acceder a los
laboratorios donde están las máquinas virtuales y vulnerables.
· 10.8.123.194 | whoami
· 10.8.123.194 `whoami`
· 10.8.123.194 $(whoami)
De esta manera logramos obtener acceso al sistema destino siendo el usuario www-
data.
Ahora ejecutaremos los siguientes comandos para convertir nuestra reverse Shell más
interactiva y estable.
Ahora buscaremos vectores de escalada de privilegios en el sistema de archivos del
sistema destino.
Podemos verificar que si hay dos usuarios locales en el sistema destino que tienen
sus directorios home, pero no podemos acceder a ellos.
Ahora enumeraremos los archivos y directorios cuyos grupos primario sean el usuario
local athena o ubuntu. Ademas, estos archivos y directorios
deben tener el permiso habilitado de lectura para el usuario www-data.
De esta manera logramos realizar una escalada privilegio horizontal llegando a ser
el usuario athena.
Ahora buscaremos vectores de escalada de privilegio en el sistema de archivos del
usuario athena.
Podemos observar que el usuario athena puede cargar un modulo de kernel llamado
venom.ko mediante el comando insmod y con el privilegio del
usuario root mediante el comando sudo y sin proveer credenciales. Ademas, si
enumeramos informacion del modulo de kernel venom.ko, nos
daremos cuenta de que el autor es monad y viene a ser un LKM rootkit.
Ahora buscaremos informacin sobre el LKM rootkit y su autor, en en el motor de
busqueda de Google.
Podemos observar que logramos enconrar el repositorio Github del usuario monad
donde uno de los repositorio llamado Diamorphine, se trata de
un LKM rootkit para kernel de ciertas versiones en sistemas basados en Linux.
Ademas, este LKM rootkit se compila como un modulo de kernel
que va estar invisble, es decir, si intentamos enumerar todos los modulos cargados
en el sistema Linux, no aparecera. Esto lo podemos
comprobar en la siguiente imagen, pero si lo queremos hacer visible, podemos enviar
una señal numero 63 a cualquier pid de cualquier proceso.
Una de las funcionalidades de este LKM rootkit viene a ser una forma de generar
persistencia ya que qnos permite ser el usuario root enviando
una señal numero 64 a cualquier proceso.
Podemos observar que si envamos una seña numero 64 al proceso con PID igual a 0, se
nos cierra automaticamente la sesion de nuestra reverse
shell .
Ahora debido a que los modulos de kernel vienen a ser archivos binario compilados,
utilizaremos Ghidra para observar el codigo fuente escrito en
lenguaje de programacion C, y poder observar la modificacion que se ha hecho en la
funcionalidad de ser el usuario root.
Ademas, si observamos el codigo fuente original del script en C que le corresponde
a este rootkit en el respositorio Github, podremos observar
que la funcionalidad de ser el usuario root esta especificada en la funcion
give_root.
Podemos observar que si la variable iVar3 es igual a 0x39, que viene a ser 57 en
base decimal, se ejecutara la funcion give_root. Por lo tanto, la
señal numero 52 deberiamos enviar para ser el usuario root.
Podemos observar que nuestro uid es igual a 0 por lo que ya somos el usuario root
mediante el uso de este LKM rootkit que viene a ser una formar
interesante de generar persistencia por el hecho de que el modulo kernel se vuelve
invisible cuando se carga al kernel del sistema operativo.
Ahora buscaremos las dos banderas en el sistema de archivos del usuario root.