====== Persistencia ====== ===== Con_Metasploit_en_Windows ===== Lo primero será estar dentro de una máquina windows con un meterpreter y siendo usuario administrador: {{pasted_image_20230801122738.png|}} Una vez hecho esto, usaremos el siguiente módulo, poniendo la sesión en segundo plano y luego volviendo a cargarla: use exploit/windows/local/persistence_service {{pasted_image_20230801122857.png|}} Ahora, por otra parte, nos ponemos a la escucha con metasploit para recibir una nueva conexión en caso de reiniciar la máquina: {{pasted_image_20230801123340.png|}} Apagamos la máquina víctima: {{pasted_image_20230801123445.png|}} Pero en la otra ventana de metasploit habremos recibido la conexión una vez que la máquina víctima se haya reiniciado: {{pasted_image_20230801123520.png|}} ===== Con_RDP ===== Una vez dentro, tenemos que ser el usuario administrador y mirarnos al proceso de explorer.exe: {{pasted_image_20230801124356.png|}} {{pasted_image_20230801124529.png|}} Una vez migrado, tenemos que crear un usuario para el protocolo RDP y activarlo: run getgui -e -u pinguino -p hack_123 {{pasted_image_20230801124656.png|}} Una vez hecho esto, ya podremos entrar dentro del protocolo RDP usando estas credenciales con la herramienta xfreerdp: xfreerdp /u:pinguino /p:hack_123 /v:10.2.27.219 {{pasted_image_20230801124859.png|}} ===== SSH_con_clave_publica ===== Podemos pasarle el id_rsa de mi máquina de atacante a la máquina remota si le pasamos el id_rsa dentro de su directorio .ssh. Por lo que primero en mi máquina atacante creamos el id_rsa: {{pasted_image_20230731213220.png|}} Le cambiamos el nombre a authorized_keys: {{pasted_image_20230731213251.png|}} Y dentro de la máquina víctima eliminamos la clave pública que ya tenía: {{pasted_image_20230731213346.png|}} A continuación nos compartimos este fichero de authorized_keys con la máquina víctima: {{pasted_image_20230731213422.png|}} Y si iniciamos sesión, ya no debería de pedirnos la contraseña: {{pasted_image_20230731213453.png|}} ===== Persistencia usando la clave privada id_rsa de la máquina víctima ===== También podemos capturar el id_rsa para entrar dentro de la máquina víctima sin proporcionar credenciales: {{pasted_image_20230801110146.png|}} Tenemos la clave privada de la máquina víctima, donde tendremos que darle los permisos: {{pasted_image_20230801110236.png|}} Y ahora si la usamos para iniciar sesión, no debería pedirnos credenciales: {{pasted_image_20230801110311.png|}} ===== Persistencia ssh como root ===== Para realizar pivoting o conseguir una mejor persistencia puede ser muy útil obtener un acceso como root vía ssh una vez hayamos escalado privilegios, por tanto primero debemos ser usuario root: {{pasted_image_20230830084514.png|}} Y abrimos el fichero de configuración de ssh, donde debemos ver que el acceso por ssh como root esté habilitado: sudo nano /etc/ssh/sshd_config {{pasted_image_20230830084706.png|}} Ahora desde la máquina atacante, dentro del directorio de /root/.ssh debemos crear una clave pública que enviaremos a la máquina víctima: {{pasted_image_20230830084904.png|}} {{pasted_image_20230830084945.png|}} Este ''id_rsa.pub'' lo llamaremos ''authorized_keys'': {{pasted_image_20230830085020.png|}} Y nos compartimos el ''authorized_keys'' con la máquina víctima: {{pasted_image_20230830085113.png|}} {{pasted_image_20230830085258.png|}} Y ahora si entramos vía ssh como root a la máquina víctima, ya hemos conseguido persistencia como root: {{pasted_image_20230830085344.png|}} ===== Tareas_Crontab ===== Comprobamos los procesos del sistema con el siguiente comando: ps -ead Y vemos que el crontab se está ejecutando: {{pasted_image_20230801104244.png|}} Pero perdemos la conexión al poco tiempo: {{pasted_image_20230801105214.png|}} Por lo que si entramos otra vez y rápidamente creamos en crontab una tarea para que se cree un servidor http que aloje los archivos del directorio de la máquina víctima con python: echo "* * * * * cd /home/student/ && python -m SimpleHTTPServer" > cron # Esto en caso de usar python 2. {{pasted_image_20230801104952.png|}} Una vez fuera, si lanzamos un ''nmap'' vemos el puerto 8000 abierto: {{pasted_image_20230801105339.png|}} Y podemos obtener una flag: {{pasted_image_20230801105408.png|}}