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...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première
[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
[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
[17] https://github.com/JeremyFetiveau/Exploits/tree/master/Bypass_SMEP_DEP
[21] http://j00ru.vexillium.org/dump/zn2013_slides.pdf
[22] http://www.alex-ionescu.com/?p=69
[23] http://j00ru.vexillium.org/?p=762
[25] http://j00ru.vexillium.org/dump/zn_slides.pdf
[26] https://twitter.com/aionescu/status/580004703565524993
[28] https://www.youtube.com/watch?v=0AxBYjQvjAM
[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
[52] http://magazine.hitb.org/issues/HITB-Ezine-Issue-003.pdf
[53] http://2012.ruxconbreakpoint.com/assets/Uploads/bpx/alex-breakpoint2012.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