NoSuchCon

Jour 1

Mateusz ‘j00ru’ Jurczyk – Abusing the Windows Kernel : How to Crash an Operating System with Two Instructions

NoSuchCon a démarré violemment avec la présentation par j00ru de ses recherches sur le kernel windows. Il s’est d’abord penché sur les fonctions de gestion de la mémoire (nt!memcpy, nt!memmove…) mettant l’accent sur le fait que les copies s’effectuent dans l’ordre inverse des données.

Cela lui permet de rendre exploitable des overflows en utilisant une race condition. Ou encore de bypasser les GS stack cookies en utilisant le gestionnaire d’exception pour ne copier que la fin de son buffer (vu que copiés en premier).

Pour les habitués du kernel, autant aller lire son blog http://j00ru.vexillium.org/ et ses slides http://www.nosuchcon.org/talks/D1_01_j00ru_Abusing_the_Windows_Kernel.pdf

Alex Ionescu – Ninjas and Harry Potter “Spell”unking in Apple SMC Land

Après j00ru, la seconde star : Ionescu, Co-auteur du Windows Internals, a présenté ses recherches sur le System Management Controller (SMC) d’Apple.

Ce chipset sous architecture Renesas s’occupe par exemple de réguler le ventilateur, de détecter la luminosité ou encore la mise en veille par fermeture de l’ordinateur.

Ionescu présentait le résultat du reverse de ce SMC.

Via le SMCProtocol il est possible de lire et d’écrire dans la mémoire du chipset pour par exemple changer des clés en rapport à la gestion de la batterie, de la température et, présenté en démo, modifier la vitesse du ventilateur.

Détail amusant ayant donné le titre de sa conf, une clé écrite en dur permettrait de donner un accès en lecture à d’autres zones mémoires. Cette clé : SpecialisRevelio est tout droit tiré d’Harry Potter.
Quand au Ninja, il provient d’un nom de timer “Ninja Action Timer” permettant de déclencher une action à un instant donné.

Ce talk sur Apple, par un Mr Windows nous a appris beaucoup de chose sur ce chipset SMC non documenté. http://www.nosuchcon.org/talks/D1_02_Alex_Ninjas_and_Harry_Potter.pdf

Travis Goodspeed – Nifty Tricks and Sage Advice for Shellcode on Embedded Systems

Travis Goodspeed a commencé son talk par un troll sur les APTs avec la présentation d http://aptfriendfinder.com/ un site proposant un merveilleux outils pour rencontrer son APT.

C’est donc le sourire au lèvre qu’il nous a plongé dans l’exploitation de systèmes embarqués.

Détaillant d’abord les différents systèmes qu’il a testé (8051,MSP430), il a alors énoncé la difficulté de réaliser un exploit sur ces environnements. Non pas à cause des mitigations type ASLR et NX mais bien parce qu’il n’existe aucun moyen de débuguer ces systèmes pour trouver une quelconque adresse et que l’organisation de ces architectures suffit à elle seule à protéger l’exécution de code en RAM.

Il en est donc arrivé à développer une technique de ROP en blind.

Pour trouver les gadgets, il cherche d’abord tous les ret en passant par le bootloader situé en ROM qu’il connait. Une fois tous les ret trouvés, il bruteforce son ROP en essayant toutes les possibilités d’enchaînement de gadgets.

Travis Goodspeed est toujours aussi impressionnant dans sa maîtrise des environnements bas niveau. http://www.nosuchcon.org/talks/D1_03_goodspeed_Nifty_Tricks_and_Sage%20Advice_for_Shellcode_on_Embedded_Systems.pdf

Nicolas Grégoire – Dumb fuzzing XSLT engines in a smart way

Nicolas Grégoires, le pwneur d’XML est venu nous présenter comment fuzzer avec de petits moyens tout en ayant de très bons résultats.

Après avoir présenté l’XSLT et le scope des applications l’utilisant, il a expliqué comment il avait trouvé ces dernières années, toutes ces CVE.

Tout d’abord il a cherché à identifier les moteurs XSLT utilisés par les différentes applications comme Adobe Reader, Firefox ou Oracle. Ensuite afin de faciliter son fuzzing, il a cherché si ces moteurs proposaient un CLI wrapper. Il a ainsi pu se défaire de la lenteur des applications graphiques et ce concentrer uniquement sur l’XSLT.

Pour la génération des test cases, il a utilisé Radamsa sur un grand nombre de samples récupérés sur internet. Il a alors démarré son fuzz via un script python regroupant la génération, le lancement des CLIs et l’envoie des crashs par email, tout ça sur quelques VMs gratuites d’Amazon AWS et Microsoft Azure et une seule VM plus puissante (Amazon AWS “c1.medium”) ne lui ayant coûté qu’une centaine d’euros pour 2 mois 24/7.

Afin de remonter également des bugs sans crash, il a utilisé Dr.Memory http://www.drmemory.org/ pour Windows, Valgrind http://valgrind.org/ pour linux et ASan http://www.chromium.org/developers/testing/addresssanitizer pour les moteurs open source.

Inutile de dire que la qualité/quantité des résultats obtenus a laissé tout le monde rêveur. http://www.nosuchcon.org/talks/D1_04_Nicolas_Gregoire_XSLT_Fuzzing.pdf

Saumil Shah – Deadly Pixels – Innovative (and pretty) exploit delivery

Ayant déjà vu (et résumé) ce talk à HITB Malaysia, je rappellerais juste ici l’originalité des exploits de Saumil.

En bref, il embarque dans un GIF valide, du javascript lui permettant d’extraire son exploit d’un PNG avec des techniques de stegano.

http://www.nosuchcon.org/talks/D1_05_Saumil_Deadly_Pixels.pdf

Jour 2

John Butterworth, Corey Kallenberg, Xeno Kovah – TPM & BIOS Security TBA

Ces 3 chercheurs du MITRE ont présenté leurs recherches sur les manières d’infecter le BIOS malgré le TPM (Trusted Platform Module). Ce module permet de générer et stocker des clés ou encore démarrer le système en fonction d’une signature stockée dans le PCR (Platform Configuration Register).

Cette signature calculée par le SRTM (Static Root of Trust Measurement) dépend de plusieurs parties du BIOS, le MBR et autres calculs propre à l’état du système.

Après avoir expliqué différentes méthodes pour récupérer le firmware du BIOS, ils ont présenté une technique permettant de bypasser ce SRTM.

Une fois le PCR hash connu, ils ont simplement empêché le SRTM de se produire tout en envoyant le PCR valide au TPM.

Encore plus fort, en connaissant les PCR des updates suivants, leur malware nommé “flea” résiste aux mises à jour.

Lors d’une demande d’update, flea va s’injecter dans le firmware en ram avant que le bios ne soit flashé avec.

Un talk très bien mené pour la complexité de ces mécanismes. http://www.nosuchcon.org/talks/D2_01_Butterworth_BIOS_Chronomancy.pdf

Stephen A. Ridley – Who’d have thought they’d meet in the middle ? ‘ARM Exploitation’ meets “Hardware Exploitation”. Sharable memoirs from a very surprising last year

Stephen A. Ridley a donné le même talk qu’à Insomni’hack cette année. Arm exploitation bukkakeheap, pievot… Un showman présentant avec humour ces travaux. http://www.nosuchcon.org/talks/D2_02_Ridley_ARM_Exploitation_And_Hardware_Hacking.pdf

Zhenhua (Eric) Liu – Advanced Heap Manipulation in Windows 8

Le début d’après midi a été une fois encore très enrichissant avec la présentation du heap sous windows 8 par ce senior security researcher @ Fortinet.

Bien que le fonctionnement du heap soit toujours un sujet complexe, Eric a su expliquer ses découvertes de manière totalement décontractée et claire.

Après avoir rappelé l’intérêt des exploits kernel notamment dans le bypass de sandbox, il a présenté les nouvelles protections présentes dans le kernel windows 8.

L’exploitation est donc maintenant possible par la compromission des données propres à l’application. Savoir manipuler le heap afin d’ordonner les données est donc une solution à toutes les mitigations.

Il nous a alors fait une démonstration de heap Feng Shui afin donc d’allouer un objet particulier juste derrière un buffer vulnerable tout en évitant de provoquer la LFH.

Un des meilleurs talks des 3 jours. http://www.nosuchcon.org/talks/D2_03_Eric_heap_mannipulation.pdf

Fin d’après midi

Les conférences suivantes ont en revanche eu moins de succès.

Tout d’abord Fabien Duchene a présenté son outil de reverse d’application web. Un concept basé sur de l’heuristique et des idées originales.

S’en est suivi un talk sur la cryptographie dans les puces électroniques antidémarrages des voitures modernes. Sans surprise, elle est très faible !

Puis un interminable talk sur de l’analyse automatisée de crashdump via data tainting et trace slicing afin de déterminer rapidement l’exploitabilité d’une vulnérabilité.

Enfin, un talk original sur SAP TMS présentait les dangers liés à la mauvaise configuration/utilisation de ces progiciels.

Moitié de Jour 3

Après la private party à la Rotonde, inutile de préciser que la matinée fut plutôt difficile. Petite parenthèse pour remercier les organisateurs de cette soirée qui fut l’occasion de rencontrer tous un lot de stars autour d’un buffet600 digne de ce nom.

Aaron LeMasters – Crashdmp-ster Diving the Windows 8 Crash Dump Stack

Aaron présentait ici une découverte originale sur la gestion des crashs sous windows 8 notamment avec l’introduction des crash dump filters.

Cela lui permettait après provocation de BSOD, d’obtenir un arbitrary file access depuis le kernel.

N’étant pas à proprement parler une vulnérabilité, on peut s’attendre à retrouver cette technique dans des rootkits…

Il a terminé son talk en présentant le write-up de l’épreuve du Boston CTF qui utilisait cette technique. http://www.nosuchcon.org/talks/D3_01_Aaron_Crashdmpster_Diving_Win8.pdf

Yusunov Timur, Alexey Osipov – XML Out-Of-Band Exploitation

Ces 2 ingénieurs de Positive Technologies ont présenté leurs derniers travaux sur l’exploitation.

Après des rappels sur le fonctionnement des entités XML et des XXE ils ont montré comment bypasser certaines règles de ModSecurity et mis au point des techniques de XXE error-based ou encore utilisant des requêtes DNS pour leaker des informations.

http://www.nosuchcon.org/talks/D3_03_Alex&Timur_XML_Out_Of_Band.pdf

Pedro Vilaca – Revisiting Mac OS X Kernel Rootkits

Ce talk sur le kernel de Mac OS X fut très long pour les personnes (comme moi) n’ayant jamais mis le nez dans le kernel de Mac OS X… En tout cas vous pouvez toujours lire les slides http://www.nosuchcon.org/talks/D3_04_Pedro_Revisiting_MacOSX_Kernel_Rootkits.pdf et les travaux http://reverse.put.as/ d’osxreverser.

Donato Ferrante & Luigi Auriemma – Exploiting Game Engines For Fun And Profit

Un talk très attendu tournant donc autour des jeux vidéos, mais surtout présenté par les fameux Luigi Auriemma et Donato Ferrante !

Ils ont alors expliqué pourquoi ils avaient choisi de cibler les jeux vidéos. C’est un vecteur encore inexploité pouvant pourtant toucher des millions de personnes.

Pour augmenter encore le scope de leurs cibles, ils ont choisi de s’attaquer plus particulièrement aux moteurs des jeux. En effet, de nombreux jeux partagent le même moteur. Cela réduit donc considérablement le spectre de recherche tout en augmentant les victimes potentielles.

Ils ont donc commencé par attaquer les moteurs en fragmentant les paquets au niveau réseau. Les impacts sur les moteurs de reconstruction de paquets ont semble-t-il porté ses fruits.

Leur deuxième cible a été le moteur de compression/décompression. Les méthodes de compression stockent souvent les valeurs sur 7 bits, le dernier bit étant utilisé afin de prévenir si un autre octet est nécessaire pour récupérer toutes les données.

En utilisant une simple technique de bit flipping sur le premier (pour le signe) et le dernier bit, ils ont ainsi pu remonter un certain nombre de bugs.

Le protocole du jeu utilisé pour communiquer peut également contenir des erreurs. Le hic est que pour un même moteur, les données échangées ne sont pas les mêmes. Des mécanismes d’obfuscation entrent en jeu augmentant un peu la difficulté d’exploitation. Leur solution a été de réaliser des tables de correspondances.

Dernier vecteur : les Maps, Mods et autre customisations sont souvent dans des formats binaires complexes et présentent donc également des vulnérabilités. Il est même possible de lancer via steam et un navigateur, des jeux avec des lignes de commandes particulières (utilisés pour du debug par exemple) contenant des failles.

Inutile de dire que l’exploitation de game engine a de l’avenir. http://www.revuln.com/files/ReVuln_Game_Engines_0days_tale.pdf

Sergey Bratus – “Any Input Is a Program” : Weird Machines in ABI and Architecture Metadata

Sergey a remplacé Mohamed Saher pour nous présenter les travaux de ses étudiants Julian Bangert et Rebecca ‘.bx’ Shapiro.

Ils ont mis au point une technique d’exécution via le MMU et tous les mécanismes de gestion des page fault n’utilisant qu’une seule instruction est étant turing-complet ! Comme il le dit, “think of it as a fairy tale” c’est vraiment magique et ça marche. http://www.nosuchcon.org/talks/D3_06_Sergey_Any_Input_is_a_program.pdf

Adrien Chevalier, Robinson Delauguerre – Arsenic Framework, Killing RATs with an Incident Response Framework

Cette dernière conférence était consacrée à la présentation d’un framework de détection des remote access tools.

Les 3 axes sur lesquels se basent Arsenic sont l’analyse réseau, le forensique des hôtes suspects et le reverse engineering. Tout ceci de manière automatique.

Ce framework écrit en ruby contient une API pour l’écriture de modules et sortira dans les mois qui viennent.

Un projet à suivre et à essayer !

The End

Ce fut une semaine chargée tant pour le foie que pour les connaissances. Le 0% bullshit annoncé par Andrea Barisani dans la première Keynote a été atteint. NoSuchCon est réellement le type de conférence qui rassemble les meilleurs chercheurs dans une ambiance détendue, loin des commerciaux et des profits :p.

Merci encore aux organisateurs !!!