Présentation et contournement des mitigations du noyau Windows 8.1

Magazine
Marque
MISC
Numéro
80
Mois de parution
juillet 2015
Domaines


Résumé

De nos jours, de nombreuses attaques informatiques se font via l’exploitation de failles applicatives. Des logiciels couramment utilisés tels que les navigateurs web [37] [38] ou les lecteurs de PDF [39] constituent des cibles importantes et permettent la compromission à distance d'une cible. Cependant, d’autres produits sont aussi très intéressants, notamment les systèmes d’exploitation. Les exploits noyau peuvent permettre une élévation de privilèges [41] ou une exécution de code à distance [42]. Ils peuvent également permettre de s’échapper d’une sandbox [44] [13]. En l'occurrence, nous nous intéressons à l’exploitation de vulnérabilités affectant le noyau ou les pilotes des systèmes Windows récents [53]. Plus particulièrement, ce sont les mécanismes de mitigation de l’exploitation qui nous intéressent. Nous nous plaçons donc dans la peau de l’attaquant pour voir quelles sont ces protections et comment les contourner. Le but est de permettre au lecteur d’avoir une vue d’ensemble des protections du noyau pour ensuite être capable d’approfondir ce sujet de manière sérieuse grâce aux nombreuxliens fournis. Il est donc fortement conseillé d’explorer cette section « références ».


1. KASLR

Pour exploiter une vulnérabilité, l’attaquant aura besoin de connaître, au moins partiellement, les adresses de certaines données en mémoire. Pour éviter qu’un attaquant puisse prédire ces adresses, le mécanisme ASLR (Address Space Layout Randomization) existe non seulement en espace utilisateur, mais également en espace noyau (on parle alors de KASLR). Ainsi, à chaque démarrage, le système chargera les modules à une adresse différente. Ce sera aussi le cas de zones mémoire telles que les différents pools, les piles, etc. Heureusement pour nous, il existe de nombreuses fuites d’information dont on peut tirer profit que ce soit par l’utilisation de bugs (ex : possibilité de lire une variable non initialisée), de problèmes de design (ex : fonctionnalité permettant d’obtenir l’adresse d’une structure), de problèmes d’implémentation (ex : zone mémoire fixée) ou d’un canal auxiliaire [45].

1.1  Techniques de...

Cet article est réservé aux abonnés. Il vous reste 97% à découvrir.
à partir de 21,65€ HT/mois/lecteur pour un accès 5 lecteurs à toute la plateforme
J'en profite
Références

[1] https://labs.mwrinfosecurity.com/blog/2014/08/15/windows-8-kernel-memory-protections-bypass/

[2] http://media.blackhat.com/bh-us-12/Briefings/M_Miller/BH_US_12_Miller_Exploit_Mitigation_Slides.pdf

[3] http://www.alex-ionescu.com/?p=82

[4] https://drive.google.com/file/d/0B3P18M-shbwrNWZTa181ZWRCclk/edit

[5] http://dl.packetstormsecurity.net/papers/bypass/NES-BypassWin7KernelAslr.pdf

[6] http://j00ru.vexillium.org/blog/04_12_11/Windows_Kernel_Address_Protection.pdf

[7] http://vexillium.org/dl.php?/Windows_Kernel-mode_GS_Cookies_subverted.pdf

[8] http://recon.cx/2013/slides/Recon2013-Alex%20Ionescu-I%20got%2099%20problems%20but%20a%20kernel%20pointer%20ain%27t%20one.pdf

[9] http://blog.ptsecurity.com/2012/09/bypassing-intel-smep-on-windows-8-x64.html

[10] http://j00ru.vexillium.org/?p=783

[11] http://blog.ptsecurity.com/2012/09/intel-smep-overview-and-partial-bypass.html

[12] « What makes it page ? The Windows 7 (x64) virtual memory manager », Enrico Martignetti

[13] http://www.siberas.de/papers/Pwn2Own_2014_AFD.sys_privilege_escalation.pdf

[14] https://msdn.microsoft.com/en-us/library/bb625957.aspx

[15] https://github.com/JeremyFetiveau/Exploits/blob/master/MS14-040.cpp

[16] https://github.com/JeremyFetiveau/Exploits/blob/master/Bypass_SMEP_DEP/mitigation%20bypass/Computations.cpp

[17] https://github.com/JeremyFetiveau/Exploits/tree/master/Bypass_SMEP_DEP

[18] http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-vol-2b-manual.pdf

[19] http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-system-programming-manual-325384.pdf

[20] http://hitcon.org/2012/download/0720A5_360.MJ0011_Reversing%20Windows8-Interesting%20Features%20of%20Kernel%20Security.pdf

[21] http://j00ru.vexillium.org/dump/zn2013_slides.pdf

[22] http://www.alex-ionescu.com/?p=69

[23] http://j00ru.vexillium.org/?p=762

[24] http://blogs.technet.com/b/srd/archive/2013/11/06/software-defense-safe-unlinking-and-reference-count-hardening.aspx

[25] http://j00ru.vexillium.org/dump/zn_slides.pdf

[26] https://twitter.com/aionescu/status/580004703565524993

[27] http://www.nosuchcon.org/talks/2013/D3_02_Nikita_Exploiting_Hardcore_Pool_Corruptions_in_Microsoft_Windows_Kernel.pdf

[28] https://www.youtube.com/watch?v=0AxBYjQvjAM

[29] http://www.internetsociety.org/sites/default/files/Practical%20Timing%20Side%20Channel%20Attacks%20Against%20Kernel%20Space%20ASLR.pdf

[30] http://labs.bromium.com/2014/10/27/tsx-improves-timing-attacks-against-kaslr/

[31] http://fr.slideshare.net/PeterHlavaty/back-to-the-core

[32] « Windows Internals : 6th Edition », M. Russinovich, D. Solomon, A. Ionescu

[33] http://www.codemachine.com/article_protopte.html

[34] https://media.blackhat.com/bh-dc-11/Mandt/BlackHat_DC_2011_Mandt_kernelpool-wp.pdf

[35] http://illmatics.com/Windows%208%20Heap%20Internals.pdf

[36] http://doar-e.github.io/blog/2014/03/11/first-dip-into-the-kernel-pool-ms10-058/

[37] http://blog.exodusintel.com/2013/11/26/browser-weakest-byte/

[38] https://labs.mwrinfosecurity.com/blog/2013/04/19/mwr-labs-pwn2own-2013-write-up---webkit-exploit/

[39] http://blog.binamuse.com/2013/05/readerbmprle.html

[41] http://www.jodeit.org/research/Exploiting_CVE-2014-4113_on_Windows_8.1.pdf

[42] https://technet.microsoft.com/library/security/MS15-010

[44] https://labs.mwrinfosecurity.com/blog/2013/09/06/mwr-labs-pwn2own-2013-write-up---kernel-exploit/

[45] http://forums.grsecurity.net/viewtopic.php?f=7&t=3367

[46] http://j00ru.vexillium.org/?p=290

[47] https://media.blackhat.com/bh-us-11/Mandt/BH_US_11_Mandt_win32k_WP.pdf

[48] http://volatility-labs.blogspot.fr/2012/09/movp-33-analyzing-user-handles-and.html

[49] https://docs.google.com/document/d/1gJDlk-9xkh6_8M_awrczWCaUuyr0Zd2TKjNBCiPO_G4/view

[50] http://vexillium.org/dl.php?/Windows_Kernel-mode_GS_Cookies_subverted.pdf

[51] https://labs.mwrinfosecurity.com/blog/2014/06/20/isolated-heap-friends---object-allocation-hardening-in-web-browsers/

[52] http://magazine.hitb.org/issues/HITB-Ezine-Issue-003.pdf

[53] http://2012.ruxconbreakpoint.com/assets/Uploads/bpx/alex-breakpoint2012.pdf

[54] https://infocon.org/Hack%20In%20The%20Box/Hack-in-the-Box%202014%20-%20Amsterdam/praatjes/D1T2-Bypassing-Endpoint-Security-for-Fun-and-Profit.pdf

[55] http://confidence.org.pl/en/agenda/lecture/when-something-overflowing/

[56] http://www.alex-ionescu.com/infiltrate2015.pdf

[57] https://github.com/clymb3r/KdExploitMe/blob/master/ExploitDemos/PoolOverflow.cpp

[58] http://blogs.360.cn/360safe/2015/01/26/windows10_font_security_mitigations/

[59] https://github.com/JeremyFetiveau/Exploits

[60] https://media.blackhat.com/bh-us-12/Briefings/Cerrudo/BH_US_12_Cerrudo_Windows_Kernel_WP.pdf

[61] http://www.zerodayinitiative.com/advisories/ZDI-15-189/

[62] https://twitter.com/NTarakanov/status/598370525132423168



Articles qui pourraient vous intéresser...

Supervision des architectures à microservices avec Prometheus

Magazine
Marque
Linux Pratique
Numéro
121
Mois de parution
septembre 2020
Domaines
Résumé

Lorsqu’on supervise des services statiques, tel qu’un serveur apache ou un serveur de base de données, on se concentre sur le bon fonctionnement de ces derniers (réponse aux requêtes, état : démarré ou non...) et donc un outil de supervision est nécessaire pour évaluer le statut du service en question. Un outil comme Nagios est destiné à ce type de supervision. Mais si nos services sont susceptibles de disparaître à tout moment et sont remplacés par de nouvelles instances, comment pourra-t-on les superviser ? S’ils ne sont pas déployés sur leurs hôtes d’origine, comment peut-on les localiser dans ce cas ? Et si ces services sont sous forme de conteneurs, comment alors superviser les processus à l’intérieur de ces conteneurs ? Et enfin, si ces services sont déployés dans un orchestrateur à l’instar de Kubernetes, et donc sous forme de pod, comment superviser l’ensemble de ces pods repartis sur différents nœuds ? Dans cet article, nous répondons à toutes ces questions avec des cas pratiques. Mais voici déjà un indice concernant la réponse : Prometheus.

Premiers pas et prérequis

Magazine
Marque
Linux Pratique
HS n°
Numéro
48
Mois de parution
septembre 2020
Domaines
Résumé

Dans ce premier chapitre, nous allons aborder de nombreux sujets, allant du respect des conditions d’utilisation de « Red Hat Enterprise Linux » (RHEL), de l’installation du système, de sa connexion au réseau « Red Hat » jusqu’à la description de notre cas d’étude. Une fois ces prérequis évoqués et ces étapes préliminaires étudiées, nous passerons au vif du sujet en installant Ansible, que nous utiliserons dans le prochain chapitre afin de commencer à mettre en place notre serveur.

Tendance actuelle : la conteneurisation d'applications

Magazine
Marque
GNU/Linux Magazine
HS n°
Numéro
110
Mois de parution
septembre 2020
Domaines
Résumé

Actuellement, il est fréquent de voir des applications proposées sous la forme d'un conteneur. Chaque mise en conteneur – ou conteneurisation – d'une application est particulière et j'ai justement dû récemment me plier à l'exercice : je partage avec vous mon expérience dans cet article.

Utilisez Terraform pour vos projets Docker

Magazine
Marque
GNU/Linux Magazine
Numéro
240
Mois de parution
septembre 2020
Domaines
Résumé

Terraform est un outil populaire pour déployer de l’infrastructure en particulier à destination des Clouds publics. Cependant, il possède de nombreux providers pour dialoguer avec différents hyperviseurs, bases de données ou solutions d’infrastructures en Software Defined. Voyons dans cet article son utilisation avec Docker.

Effectuer des sauvegardes avec rdiff-backup

Magazine
Marque
Linux Pratique
Numéro
121
Mois de parution
septembre 2020
Domaines
Résumé

Tous les jours, nous créons et manipulons des données. Certaines plus importantes que d’autres. Une chose que nous partageons tous c’est bien la peur de les perdre. Peut-être avez-vous déjà perdu des données suite à une panne de votre disque de stockage, l’attaque d’un virus ou le vol de votre ordinateur. Les personnes ayant déjà connu cette situation comprennent les tracas que cela peut causer. Vous allez découvrir dans ce tutoriel comment limiter le risque d’y faire face. La solution se trouve en un mot : « sauvegarde ». L’outil que nous allons vous présenter ici a été conçu pour vous aider à réaliser cette tâche de manière efficace et efficiente.