Entramos en la fase inicial para el control y mantenimiento de un equipo y/o sistema. Como ya hemos explicado en partes anteriores ,debemos llevar un orden mas o menos lógico de las búsquedas que realizaremos, apuntando cada resultado en nuestro mapa (el formato válido es que a uno le guste, papel, aplicación, mental…. Aunque esto último no lo recomiendo ), la infraestructura al que pertenece en el caso de tratarse de una red y ¡OJO! tengamos permiso para ello, así evitaremos perder tiempo y optimizaremos el rendimiento.
Encontrando todos los ejecutables SUID:
En los sistemas Unix/Linux es la abreviatura para «Set User ID», son los permisos de acceso que puedan dar a los archivos y directorios en el sistema operativo. Su uso principal es dar permiso de ejecución a un usuario de binarios con permisos elevados temporalmente para tareas especificas,(como configurar los permisos de ejecución remota de un backdoor, incluir a un usuario en el grupo sudoers….),por ejemplo. Bien para encontrar la ruta de instalación de dichos ejecutables usaremos el siguiente comando; find / -perm -4000 -type f 2>/dev/null
Muy bien Fernando, me das una lista pero no se que privilegios tiene cada archivo, es aquí donde encontramos la explicación al comando -perm 4000. Lo que hemos pedido es que nos imprima en pantalla los archivos que pueden ser ejecutados con permisos iguales a su creador,( que no siempre es el administrador, pero puede ser otro usuario con privilegios mas elevados al nuestro dentro de la organización)y nos permita elevar privilegios.
**** También debemos tener presente que los privilegios adquiridos se mantendrán mientras se ejecute el archivo, una vez cerrado este volveremos a tener los que teníamos ****
Uso del comando cat:
El comando cat junto el archivo que queremos visualizar también resulta de lo mas útil, puede, aunque no sea lo normal, puede que exista una mala configuración de permisos y tengamos acceso. A veces uno se sorprende.
Encontrando archivos world-writable:
Vamos a proceder a la búsqueda de archivos y directorios cuyos privilegios solo sean de escritura, os podéis imaginar lo que se puede hacer con un archivo de solo escritura en nuestras manos (menos borrarlo de todo…)
Encontrar archivos con UID o GID mal jerarquizados:
Ahora bien, como es habitual en este maravilloso mundo que es el hacking, cada respuesta es una sorpresa, y la sorpresa en este caso es la aparición de un archivo sobre el cual no tenemos permiso. COMO?? si he ejecutado SUDO, soy el fu**** Máster y no tengo permiso? A ver si superas esto.
En este punto pararemos un momento para explicar un par de datos interesantes. El primero, y ta como muestra la captura de pantalla inferior, es que haremos uso de una herramienta para cambiar de grupo los ficheros elegidos, pero sin embargo no otorgaremos valor de ejecución, lo que conlleva el mensaje de error que veremos en la siguiente captura. Esto no nos debe preocupar, puesto que la función de listar los archivos si lo realiza, que a la postre, es lo que nos interesa en estos momentos.
funcionamiento de la herramienta
Ejecutamos la herramienta haciendo caso omiso al error, mismo resultado,por que?
vamos a dirigirnos al directorio, accedemos sin problemas y no existe actividad, vacío, busquemos entonces que es y para que sirve el directorio, y lo mas importante, ¿por que no tenemos control sobre dicho archivo?.
Primero la explicación para expertos: «GVfs (abreviatura de GNOME Virtual file system ) es el sistema de archivos virtual del espacio de usuario de GNOME diseñado para trabajar con la abstracción de E / S de GIO , una biblioteca disponible en GLib desde la versión 2.15.1. Instala varios módulos que son utilizados automáticamente por aplicaciones que utilizan las API de libgio. También hay soporte FUSE que permite que las aplicaciones que no usan GIO accedan a los sistemas de archivos GVfs.»
Como se que todos lo habéis comprendido con la primera explicación. Ahora toca la explicación para elementos unicelulares como yo. A groso modo, es un archivo GNOME que actúa de capa virtual para manejar el flujo de información de las distintas aplicaciones, entre las mas importantes para nosotros, los archivos y aplicaciones remotas FTP, SMB , webAD….. de hay que tengan a bien los desarrolladores en quitar permisos.
Encontrar enlaces rotos:
Este comando comienza en el directorio superior (/) y enumera todos los enlaces (-type l ) que el intérprete de perl determina como enlaces rotos (-nle ‘-e || print’). Puede canalizar aún más la salida a través de xargs y usar rm -f {} si desea eliminar dichos enlaces simbólicos.
Chequear acceso a sudo:
Forma rápida para saber si los usuarios actuales en el equipo tiene acceso a ejecución sudo.
Chequear binarios con acceso sudo:
Chequeamos el binario seleccionado para comprobar si podemos obtener una shell con permisos elevados, en las capturas inferiores vemos que no obtenemos resultados.
Chequear los permisos para los archivos del directorio root:
Con el siguiente comando, comprobamos si tenemos acceso a los archivos del directorio /root/
Chequear acceso a los archivos ssh:
Chequear estos archivos es de suma importancia, ya que obtenemos la clave privada del equipo, el tipo de encriptado que utiliza para gestión de claves y los hosts conocidos.
Chequear archivos .log de los servidores:
Mediante este comando podemos ver rápidamente que tipo de servidor tiene el hosts instalado, y si sus archivos .log son editables.En este caso, invocando sudo podemos, sin ello el acceso esta capado.
Búsqueda de usuario y contraseña del servidor Apache2:
A veces la configuración del servidor que se ejecuta en la maquina vulnerada, requiere de usuario y contraseña para poder acceder a la dirección. He configurado el servidor(APACHE2) para que nos solicite dicha información.
Debemos recabar un poco de información de como se crean las credenciales en dicho servidor. La información la podemos obtener desde la misma pagina de Apache, la cual explica los pasos y donde se encuentra las credenciales de acceso, tal como vemos en la captura inferior. En el caso de Apache el archivo .htaccess debe encontrarse en el directorio del servidor.
Ya tenemos las credenciales, ahora solo queda saber que tipo de que tipo de hash se trata.Para ello podemos visitar nuevamente la páginas de Apache o hacer uso de alguna herramienta en nuestra maquina atacante. Ya tenemos las credenciales necesarias para poder realizar un ataque passthehash.
Dumpear las claves predefinidas :
Siento ser cansino con el tema, pero debemos chequear y recolectar el máximo de información posible, y las conexiones inalámbricas no se deben olvidar. Podemos obtener información de las claves predefinidas (si es que el equipo se encuentra configurado para ello),con el comando que encontramos en la imagen inferior.
vemos que efectivamente no existen claves en el directorio
Búsqueda por palabra clave en los archivos de configuración:
Como viene siendo la tónica habitual en esta serie de artículos, una de las maneras mas rápidas de encontrar una palabra clave en un directorio, es con el el comando grep en conjunción de *.tipo de archivo tras el directorio deseado.
PGP key:
Pretty Good Privacy (PGP) es un programa creado por Phil Zimmermann que nos ayuda a proteger nuestra privacidad, para que todas las comunicaciones estén a buen seguro; al mismo tiempo, garantiza la autenticidad de los mensajes electrónicos que enviamos. Para comprobar si el equipo tiene instalada esta herramienta, ejecutamos el siguiente comando.
Claves SSH:
Otra útil manera de hacernos con la clave privada ssh.
Obteniendo cuentas dde servidores Local, NIS o LDAP:
Los servicios de LDAP Lightweight Directory Access Protocol (Protocolo Ligero de Acceso a Directorios) pueden utilizar el repositorio de dos formas diferentes. LA PRIMERA como una fuente del servicio de nombres y el servicio de autenticación. LA SEGUNDA como la fuente de datos de nombres.Trata la identidad de clientes, los métodos de autenticación, los módulos pam_ldap y pam_unix_*, y la gestión de cuentas cuando el repositorio LDAP se utiliza como un servicio de nombres y un servicio de autenticación. Este servicio esta muy asociado al AD Active Directory que gestiona el inicio de sesión de usuarios dentro de una red.
NIS está basado en ONC RCP, y consta de un servidor, una biblioteca de la parte cliente, y varias herramientas de administración.
Podemos ver, como el listado no arroja ninguna cuenta de los servicios buscados, lo que nos hace pensar que el equipo vulnerado es una terminal simple de trabajo dentro de una red.
aunque no corresponda al punto a tratar, siempre es bueno recordar lo habado anteriormente.
Obteniendo información Samba:
Para este punto vamos a ponernos en el siguiente supuesto, obtenemos la shell pero la cosa esta cogida con pinzas, arriesgarnos a usar un nuevo escaneo podría suponer delatar nuestra presencia. Es en estos momentos, donde se hace mas que necesario el uso de herramientas nativas para recolectar información. Para samba usaremos pdbedit. esta herramienta maneja las cuentas ubicadas en la base de datos SAM.
Solicitaremos que nos liste todos los usuarios y posteriormente que nos muestre el password de samba, lógicamente sera devuelto en formato samba.
Vale ya tenemos información, pero no sabemos que versión corre en el sistema, pues pdbedit es tu herramienta.
vemos que es mas silencioso y mas preciso que usando nmap.
Ticket kerberos:
Mediante la introducción de este comando podríamos obtener información de los tikets kerberos.
búsqueda de archivos con extensión .txt:
Como ultima búsqueda en este artículo realizaremos desde el directorio raíz con extensión .txt y que contenga la palabra «password» en el nombre. Eh…. ¡¡Este directorio me suena!! y por mas que parezca un deja-vi en el cual «The Matrix» nos ha detectado, volvemos a encontrarnos con el mismo directorio que nos fue devuelto durante la recolección de datos GID y UID.
no os suena de nada?
Hasta aquí la recolección de información en local sobre claves y accesos privilegiados.En el siguiente artículo trataremos de recolectar información de servicios y archivos de configuración. Espero que disfrutéis leyéndolo tanto como yo escribiéndolo, y que lo expuesto aquí lo probéis siempre contra vuestras máquinas virtuales en un entorno controlado.
Un saludo y Happy Hack!!
https://es.wikipedia.org/wiki/Setuid
https://www.ibiblio.org/pub/Linux/docs/LuCaS/Manuales-LuCAS/doc-unixsec/unixsec-html/node56.html
https://www.alcancelibre.org/staticpages/index.php/permisos-sistema-de-archivos
https://www.elgrupoinformatico.com/tutoriales/que-ldap-t74212.html
https://es.wikipedia.org/wiki/Network_Information_Service
https://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-es-4/s1-samba-programs.html
https://help.ubuntu.com/community/Kerberos?_ga=2.99604126.1094012082.1644575763-468251040.1643650510