11.07.2015 Views

Advanced Mac OS X Rootkits [PDF - Black Hat

Advanced Mac OS X Rootkits [PDF - Black Hat

Advanced Mac OS X Rootkits [PDF - Black Hat

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

4 DINO A. DAI ZOVI DDZ@THETA44.ORG4. Kernel RPC Subsystem InjectionA number of <strong>Mac</strong>h RPC servers exist within the kernel. The <strong>Mac</strong>hIPC abstractions allow RPC servers to run in the kernel or user-mode<strong>Mac</strong>h tasks, often only requiring a recompile with different options toMiG. In <strong>Mac</strong> <strong>OS</strong> X Leopard, the <strong>Mac</strong>h clock, clock priv, host priv,host security, ledger, lock set, mach host, mach port, mach vm, processor,processor set, security, task, thread act, and vm map subsystemsare all implemented as kernel servers. <strong>Mac</strong> <strong>OS</strong> X adds a fewnew in-kernel <strong>Mac</strong>h servers for the IOKit and UserNotification systems.Running these servers in the kernel improves performance as thedelivery of <strong>Mac</strong>h IPC messages requires less mode switches betweenuser and kernel mode.In the xnu kernel, IPC messages received by the kernel are routed toin-kernel RPC servers through the mig_buckets hash table. This datastructure and the functions that operate on it are defined in the xnukernel source file osfmk/kern/ ipc_kobject.c. Each routine in the MiGsubsystem is inserted in the hash table by storing its routine identifier,function pointer, and maximum message size. Incoming messageshave their msgh_id header field set to the routine identifier and the kernelfunction ipc_kobject_server uses this field to find the RPC serverroutine to handle the request.While the mig_buckets hash table is statically initialized by the kernel,a rootkit can easily dynamically inject new subsystems into it,as described in [5] and shown in Figure 1. The injected or existingsubsystems can also be removed as shown in Figure 2.Just as easily as new subsystems are added or removed, existingsubsystems can be modified. The subsystems in this hash table performmany of the critical functions of the <strong>Mac</strong>h kernel, including task,thread, and memory management. A kernel-based rootkit could overwritethe routine pointers in this table in order to intercept messagesto these servers. The request messages and their replies could be modifiedin transit in order to modify the behavior of the in- kernel <strong>Mac</strong>hRPC server. In this respect, this technique is similar to how moretraditional rootkits intercept system calls by patching the system calltable on Unix-like operating systems or the System Service Table onWindows-based operating systems.5. <strong>Mac</strong>hiavelliHistorical <strong>Mac</strong>h-based operating systems often included the NetMessageServer [2]. The NetMessage Server transparently extended <strong>Mac</strong>hIPC across the network to other hosts. Each node ran a NetName

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!