Mac OS X et les injections de codes

Magazine
Marque
MISC
Numéro
47
Mois de parution
janvier 2010
Domaines


Résumé

L'injection de codes dans un autre processus n'est pas une technique novatrice en soi. Elle est aussi bien utilisée par des applications dites de sécurité que par des programmes malveillants. Ces derniers en sont particulièrement friands lorsqu'il s'agit de détourner des protections logicielles telles que les pare-feu applicatifs. Les techniques d'injection pour le système d'exploitation Windows sont amplement documentées sur Internet, néanmoins il n'en est pas de même pour le système d'Apple. Ainsi, pour combler le manque de documentation sur le sujet, cet article décrit certaines méthodes d'injections de codes au sein des processus Mac OS X Snow Leopard en mode 64 bits.


1. Introduction

Mac OS X possède un noyau hybride nommé XNU. Il est principalement composé de trois briques : Mach, BSD et I/O Kit. La couche Mach est fondée sur un Mach 3 (OSFMK73). Elle est responsable d'un certain nombre d'opérations bas niveau telles que l'ordonnancement préemptif, la communication inter-processus (IPC) ou encore la gestion de la mémoire virtuelle. Au dessus se place l'élément BSD qui est fondé sur FreeBSD. Ce dernier fournit un ensemble d'unités : le système de fichiers, la pile réseau, le modèle de sécurité Unix, les appels systèmes, la gestion des signaux et l'API POSIX. De plus, pour des raisons de performances accrues, il occupe le même espace d'adressage que la couche Mach. À ces deux parties s'ajoute l'I/O Kit, un environnement pour les pilotes matériels.

 

01

 

Figure 1 : Architecture du noyau XNU (très simplifiée)

Il est important de noter que les couches Mach et BSD possèdent des modèles de sécurité...

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


Articles qui pourraient vous intéresser...

Avec le Spanning Tree Protocol, suis-je en sécurité dans mon réseau ?

Magazine
Marque
MISC
HS n°
Numéro
22
Mois de parution
octobre 2020
Domaines
Résumé

Dans le cadre des hors-séries sur les retours aux fondamentaux, cet article aura comme sujet le protocole STP (Spanning Tree Protocol). Inventé en 1985 par Radia Perlman, il permet principalement d’assurer une liaison réseau redondante et sans boucle. Ce protocole étant primordial au sein d’un réseau de moyenne à grande envergure, s’il n’est pas correctement configuré, cela pourra alors permettre à des attaquants de compromettre le réseau.

Système extensible et hautement disponible avec Erlang/OTP

Magazine
Marque
GNU/Linux Magazine
Numéro
241
Mois de parution
octobre 2020
Domaines
Résumé

Erlang est un langage de programmation fonctionnel et distribué, créé à la fin des années 80 pour régler de nombreux problèmes issus du monde des télécoms, et plus généralement de l’industrie. Outre le fait qu’il soit l’une des seules implémentations réussies du modèle acteur disponible sur le marché, son autre grande particularité est d’être livré avec une suite d’outils, de modèles et de principes conçus pour offrir un environnement cohérent. Ce framework, nommé OTP, fait partie intégrante de la vie des développeurs utilisant Erlang au jour le jour...

Return oriented programming 101

Magazine
Marque
MISC
HS n°
Numéro
22
Mois de parution
octobre 2020
Domaines
Résumé

Le Returned Oriented Programming (ou ROP) est une technique permettant d'exploiter des programmes disposant de la protection NX (No eXecute) ou DEP (Data Execution Prevention). L'objectif de cet article est de vous présenter les bases du ROP, ainsi que l’exploitation pas-à-pas d’un programme d’entraînement via l'utilisation de la bibliothèque python pwntools [1]. Dans un souci de simplicité, la démonstration sera réalisée sur un programme s'exécutant sur un système Linux 64 bits. Bien entendu, cette démonstration reste applicable sur d'autres architectures (ARM, MIPS, etc.).

Simulation d’un ordinateur mécanique en scriptant sous FreeCAD

Magazine
Marque
Hackable
Numéro
35
Mois de parution
octobre 2020
Domaines
Résumé

L’évolution du traitement du signal est une histoire fascinante largement déroulée par David Mindell dans ses divers ouvrages [1] et citations [2]. Partant de l’ordinateur mécanique avec ses rouages, poulies, bielles et crémaillères, le passage à l’électrique au début du 20ème siècle, puis à l’électronique intégrée avec l’avènement du transistor et des circuits intégrés (VLSI) nous ont fait oublier les stades initiaux qui ont amené à notre statut actuel d’ordinateurs infiniment puissants, précis et compacts. Alors que cette histoire semble s’accompagner du passage de l’analogique au numérique – de la manipulation de grandeurs continues en grandeurs discrètes avec son gain en stabilité et reproductibilité – il n’en est en fait rien : un boulier fournit déjà les bases du calcul discrétisé mécanique, tandis que [3] introduit les concepts du calcul mécanique avec les traitements numériques avant de passer aux traitements analogiques.

Use-After-Free dans le noyau Linux

Magazine
Marque
MISC
HS n°
Numéro
22
Mois de parution
octobre 2020
Domaines
Résumé

Pièce logicielle qui a accompagné les deux dernières décennies, le noyau Linux est un système relativement complet qui dispose d’un allocateur de mémoire dynamique. Comme tous les logiciels classiques, le noyau est ainsi régulièrement sujet à des vulnérabilités de type Use-After-Free via cet allocateur.