{"id":6725,"date":"2020-05-06T10:37:40","date_gmt":"2020-05-06T10:37:40","guid":{"rendered":"https:\/\/www.erroussafi.com\/?p=6725"},"modified":"2020-05-06T10:37:40","modified_gmt":"2020-05-06T10:37:40","slug":"technique-audit-le-dll-highjacking","status":"publish","type":"post","link":"https:\/\/www.erroussafi.com\/index.php\/2020\/05\/06\/technique-audit-le-dll-highjacking\/","title":{"rendered":"[Technique Audit] &#8211; Le DLL Highjacking"},"content":{"rendered":"<p>Dans cet article, nous allons introduire une technique de manipulation sur windows qui se base sur une id\u00e9e tr\u00e8s simple : le DLL highjacking. Nous allons ensuite introduire un outil pour auditer les binaires Windows qui sont vuln\u00e9rables \u00e0 cette typologie d&#8217;attaque apr\u00e8s avoir introduit une d\u00e9finition des librairies DLL et de la technique du DLL Highjacking pour une exploitation du binaire.<\/p>\n<h2>D\u00e9finition des DLL :<\/h2>\n<p>Une Dynamic Link Library (en fran\u00e7ais, biblioth\u00e8que de liens dynamiques) est une biblioth\u00e8que logicielle dont les fonctions sont charg\u00e9es en m\u00e9moire par un programme, au besoin, lors de son ex\u00e9cution, par opposition aux biblioth\u00e8ques logicielles statiques ou partag\u00e9es dont les fonctions sont charg\u00e9es en m\u00e9moire avant le d\u00e9but de l&#8217;ex\u00e9cution du programme.<\/p>\n<p>.dll est une extension de nom de fichier utilis\u00e9e par des fichiers contenant une Dynamic Link Library.<\/p>\n<p>Ces biblioth\u00e8ques logicielles ont \u00e9t\u00e9 invent\u00e9es dans Multics en 1964 et existent dans Windows depuis 1985. Elles constituent une des fondations des syst\u00e8mes d&#8217;exploitation Windows et sont utilis\u00e9es pour les interfaces de programmation, les pilotes, les widgets et les polices de caract\u00e8res.<\/p>\n<h2>Le d\u00e9tournement de DLL, ou DLL Highjacking<\/h2>\n<p>Windows a un chemin de recherche pour les DLL dans son architecture sous-jacente, il s&#8217;agir de variables d&#8217;environnement PATH. Si vous pouvez d\u00e9terminer quelles DLL un ex\u00e9cutable demande sans chemin absolu (d\u00e9clenchant ce processus de recherche), vous pouvez ensuite placer votre DLL hostile quelque part plus haut dans le chemin de recherche afin qu&#8217;elle soit trouv\u00e9e avant la version r\u00e9elle, et Windows sera heureux envoyez votre code d&#8217;attaque \u00e0 l&#8217;application.<\/p>\n<p>Imaginons donc que le chemin de recherche des DLL de Windows ressemble \u00e0 ceci:<\/p>\n<ol>\n<li>r\u00e9pertoire de travail actuel de l&#8217;ex\u00e9cutable, priorit\u00e9 la plus \u00e9lev\u00e9e, premi\u00e8re v\u00e9rification<\/li>\n<li><em>Windows<\/em><\/li>\n<li><em>Windows\\system32<\/em><\/li>\n<li><em>Windows\\syswow64<\/em> &lt;- priorit\u00e9 la plus basse, derni\u00e8re v\u00e9rification<\/li>\n<\/ol>\n<p>et un executable &#8220;Foo.exe&#8221; qui fait appel \u00e0 &#8220;bar.dll&#8221;, qui se trouve dans le sous-r\u00e9pertoire syswow64 (4). Cela vous donne la possibilit\u00e9 de placer votre version malveillante en 1), 2) ou 3) et elle sera charg\u00e9e dans l&#8217;ex\u00e9cutable.<\/p>\n<p>utiliser le chemin absolu n&#8217;est pas d\u00e9nu\u00e9 de danger non plus, \u00e0 noter que l&#8217;attaque consiste \u00e0 modifier le comportement d&#8217;un DLL &#8220;populaire&#8221; pour avoir le plus de change d&#8217;\u00eatre ex\u00e9cut\u00e9e par les diff\u00e9rents programmes de Windows.<\/p>\n<p>Microsoft Windows prot\u00e8ge les chemins d&#8217;acc\u00e8s syst\u00e8me comme System32 \u00e0 l&#8217;aide du m\u00e9canisme de protection des fichiers Windows, mais la meilleure fa\u00e7on de prot\u00e9ger l&#8217;ex\u00e9cutable contre le d\u00e9tournement de DLL dans les solutions d&#8217;entreprise est:<\/p>\n<ol>\n<li>Utiliser un chemin absolu au lieu d&#8217;un chemin relatif<\/li>\n<li>Si vous avez la possibilit\u00e9 d&#8217;utiliser les proc\u00e9dures de verifications, signez vos fichiers DLL et v\u00e9rifiez le signe dans votre application avant de charger la DLL en m\u00e9moire. sinon v\u00e9rifiez le hachage du fichier DLL avec le hachage DLL d&#8217;origine.<\/li>\n<\/ol>\n<p>Et bien s\u00fbr, cela n&#8217;est pas vraiment limit\u00e9 \u00e0 Windows non plus. Tout syst\u00e8me d&#8217;exploitation qui permet la liaison dynamique de biblioth\u00e8ques externes est th\u00e9oriquement vuln\u00e9rable \u00e0 cela.<\/p>\n<h2>Outil d&#8217;exploitation : ROBBER<\/h2>\n<p>ROBBER utilise un m\u00e9canisme simple pour d\u00e9terminer les DLL susceptibles d&#8217;\u00eatre d\u00e9tourn\u00e9es :<\/p>\n<p>1) Analyser la table d&#8217;importation d&#8217;un binaire et trouver les DLL li\u00e9es \u00e0 l&#8217;ex\u00e9cutable.<br \/>\n2) Recherchez les fichiers DLL plac\u00e9s \u00e0 l&#8217;int\u00e9rieur de l&#8217;ex\u00e9cutable qui correspondent \u00e0 la DLL li\u00e9e<br \/>\n3) Si une DLL est trouv\u00e9e, scannez la table d&#8217;exportation du th\u00e8me<br \/>\n4) Comparer la table d&#8217;importation de l&#8217;ex\u00e9cutable avec la table d&#8217;exportation de la DLL et si une correspondance a \u00e9t\u00e9 trouv\u00e9e, l&#8217;ex\u00e9cutable et les fonctions communes correspondantes sont marqu\u00e9s comme candidats au d\u00e9tournement de DLL.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"attachment-herald-lay-single wp-post-image alignnone\" src=\"https:\/\/mluxyp5meva2.i.optimole.com\/pEnuIl0-pO3pWPTL\/w:640\/h:448\/q:auto\/dpr:1.3\/rt:fill\/g:ce\/https:\/\/pentesttools.net\/wp-content\/uploads\/2018\/11\/Robber_1_Robber.png\" alt=\"Capture ROBBER\" width=\"640\" height=\"448\" data-opt-src=\"https:\/\/mluxyp5meva2.i.optimole.com\/pEnuIl0-pO3pWPTL\/w:640\/h:448\/q:auto\/rt:fill\/g:ce\/https:\/\/pentesttools.net\/wp-content\/uploads\/2018\/11\/Robber_1_Robber.png\" data-attachment-id=\"5168\" data-permalink=\"https:\/\/pentesttools.net\/robber-robber-is-open-source-tool-for-finding-executables-prone-to-dll-hijacking\/robber_1_robber-png\/\" data-orig-file=\"https:\/\/mluxyp5meva2.i.optimole.com\/pEnuIl0-pO3pWPTL\/w:auto\/h:auto\/q:auto\/https:\/\/pentesttools.net\/wp-content\/uploads\/2018\/11\/Robber_1_Robber.png\" data-orig-size=\"640,448\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Robber_1_Robber.png\" data-image-description=\"\" data-medium-file=\"https:\/\/mluxyp5meva2.i.optimole.com\/pEnuIl0-pO3pWPTL\/w:300\/h:210\/q:auto\/https:\/\/pentesttools.net\/wp-content\/uploads\/2018\/11\/Robber_1_Robber.png\" data-large-file=\"https:\/\/mluxyp5meva2.i.optimole.com\/pEnuIl0-pO3pWPTL\/w:auto\/h:auto\/q:auto\/https:\/\/pentesttools.net\/wp-content\/uploads\/2018\/11\/Robber_1_Robber.png\" data-opt-lazy-loaded=\"true\" data-opt-otimized-width=\"640\" data-opt-optimized-height=\"448\" \/><\/p>\n<h3>Fonctionnalit\u00e9s de ROBBER :<\/h3>\n<ul>\n<li>Possibilit\u00e9 de s\u00e9lectionner le type de scan (applications sign\u00e9es \/ non sign\u00e9es)<\/li>\n<li>D\u00e9terminer le signataire ex\u00e9cutable<\/li>\n<li>D\u00e9terminer quelle DLL r\u00e9f\u00e9renc\u00e9e est candidate au d\u00e9tournement<\/li>\n<li>D\u00e9terminer les noms de m\u00e9thode export\u00e9s des DLL candidates (tr\u00e8s utile pour l&#8217;injection du code malveillant)<\/li>\n<li>Configurer des r\u00e8gles pour d\u00e9terminer quels d\u00e9tournements sont les meilleurs ou les meilleurs choix \u00e0 utiliser et afficher le th\u00e8me dans diff\u00e9rentes couleurs<\/li>\n<li>Possibilit\u00e9 de v\u00e9rifier l&#8217;autorisation d&#8217;\u00e9criture du r\u00e9pertoire ex\u00e9cutable qui est un bon candidat pour le piratage.<\/li>\n<\/ul>\n<h3>T\u00e9l\u00e9chargement\u00a0 :<\/h3>\n<p>Robber dans sa derni\u00e8re version est trouvable sur le github suivant : <a href=\"https:\/\/github.com\/MojtabaTajik\/Robbe\">https:\/\/github.com\/MojtabaTajik\/Robbe<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dans cet article, nous allons introduire une technique de manipulation sur windows qui se base sur une id\u00e9e tr\u00e8s simple : le DLL highjacking. Nous allons ensuite introduire un outil pour auditer les binaires Windows qui sont vuln\u00e9rables \u00e0 cette typologie d&#8217;attaque apr\u00e8s avoir introduit une d\u00e9finition des librairies DLL et de la technique du [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":6729,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[3,9],"tags":[],"class_list":["post-6725","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cyber-securite","category-technique"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/www.erroussafi.com\/wp-content\/uploads\/2020\/05\/step21.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/posts\/6725","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/comments?post=6725"}],"version-history":[{"count":0,"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/posts\/6725\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/media\/6729"}],"wp:attachment":[{"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/media?parent=6725"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/categories?post=6725"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.erroussafi.com\/index.php\/wp-json\/wp\/v2\/tags?post=6725"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}