I'm currently traducing the posts in english, my english is not very good, so if you find errors feel free to contact me.
  • Forcer le boot en 64-bit sous Snow Leopard

    Snow Leopard est sorti, Apple se targue d’avoir un système pleinement 64-bit (enfin..) et pourtant, seulement quelques machines peuvent booter avec un kernel 64-bit, les machines ‘pro’.
    Pour les personnes ayant une machine 64-bit et un EFI 64, il peut être frustrant de ne pas profiter d’un Kernel 64-bit, ce qui est mon cas.
    Il est néamoins possible d’outrepasser cette limite, ça relève un peu de la bidouille donc ne vous lancez pas tête baissée dedans, d’autant que pour l’utilisateur lambda il n’y a que peu d’intérêt.

    Comment Apple a fait pour prévenir d’un boot en 64 ?
    Il y a juste une valeur hard-codée dans le fichier boot.efi qui empêche le boot en 64 selon le modèle de votre machine.
    Il va donc falloir modifier ce fichier pour permettre le boot en 64-bit, notez que je ne fais pas de SAV en cas de problème.
    Read more…


  • Exécuter un programme userland à partir du mode kernel

    Il existe sur Mac OS X une API nommée KUNC (Kernel-User Notification Center).
    Cette API est utilisée par le kernel (typiquement un kext) quand celui-ci veut afficher des notifications aux utilisateurs ou lancer des commandes userland.
    Il existe donc une fonction : KUNCExecute()
    Voici le prototype prit de xnu-xxxx.xx.x/osfmk/UserNotification/KUNCUserNotifications.h (disponible ici) :

    1
    2
    3
    4
    5
    6
    7
    8
    
    #define kOpenApplicationPath    0
    #define kOpenPreferencePanel    1
    #define kOpenApplication        2
     
    #define kOpenAppAsRoot          0
    #define kOpenAppAsConsoleUser   1
     
    kern_ret_t KUNCExecute(char *executionPath, int openAsUser, int pathExecutionType);

    La fonction est toute simple, voici un bref détail des 3 paramètres :
    - executionPath : Le chemin vers le programme à exécuter.
    - openAsUser : Flag prenant soit la valeur kOpenAppAsConsoleUser qui exécutera le programme avec les droits de l’user loggé, soit kOpenAppAsRoot qui lancera le programme avec les droits root.
    - pathExecutionType : Flag qui spécifie le type d’application à exécuter qui peut être un des 3 définis plus haut, kOpenApplicationPath : le chemin absolu vers un exécutable, kOpenPreferencePanel : le nom d’une Preference Pane dans /System/Library/PreferencePanes, kOpenApplication : Le nom d’une application dans /Applications.

    Par exemple si on voulait lancer une backdoor située dans /tmp on procéderais de la façon suivante :

    1
    
    KUNCExecute("/tmp/backdoor", kOpenAppAsRoot, kOpenApplicationPath);

  • Mac OS X : Structure du noyau

    On entend souvent beaucoup de chose sur Mac OS X et son noyau, qu’il est écrit en C++, que c’est un microkernel.. blabla…
    Qu’en est-il réellement ?
    Le noyau de Mac OS X n’est pas un microkernel, c’est un noyau hybride nommé XNU, qui est un acronyme récusrsif pour XNU’s Not Unix.
    XNU est sous licence APSL, et est donc téléchargeable sur le site opensource.apple.com.

    Read more…