svc · unix #202
__sysctl
Point d'entrée brut de l'arbre sysctl BSD : lit ou écrit une variable d'état du noyau identifiée par un chemin d'OID entiers.
Prototype
int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen);Retour: int
Arguments
| Name | Type | Dir | Description |
|---|---|---|---|
| name | int | - | |
| namelen | u_int | - | |
| old | void | - | |
| oldlenp | size_t | - | |
| new | void | - | |
| newlen | size_t | - |
Historique des versions
| XNU tag | macOS | # |
|---|---|---|
| xnu-1456.1.26 | macOS 10.6 Snow Leopard | 202 |
| xnu-1699.24.8 | macOS 10.7 Lion | 202 |
| xnu-2050.18.24 | macOS 10.8 Mountain Lion | 202 |
| xnu-2422.115.4 | macOS 10.9 Mavericks | 202 |
| xnu-1486.2.11 | — | 202 |
| xnu-1504.15.3 | — | 202 |
| xnu-1504.3.12 | — | 202 |
| xnu-1504.7.4 | — | 202 |
| xnu-1504.9.17 | — | 202 |
| xnu-1504.9.26 | — | 202 |
| xnu-1504.9.37 | — | 202 |
| xnu-1699.22.73 | — | 202 |
| xnu-1699.22.81 | — | 202 |
| xnu-1699.24.23 | — | 202 |
| xnu-1699.26.8 | — | 202 |
| xnu-1699.32.7 | — | 202 |
| xnu-2050.22.13 | — | 202 |
| xnu-2050.24.15 | — | 202 |
| xnu-2050.48.11 | — | 202 |
| xnu-2050.7.9 | — | 202 |
| xnu-2050.9.2 | — | 202 |
| xnu-2422.1.72 | — | 202 |
| xnu-2422.100.13 | — | 202 |
| xnu-2422.110.17 | — | 202 |
| xnu-2422.90.20 | — | 202 |
Exemples
C — read kern.osrelease
int mib[2] = { CTL_KERN, KERN_OSRELEASE };
char buf[64];
size_t len = sizeof(buf);
sysctl(mib, 2, buf, &len, NULL, 0);Notes
Sert de support aux wrappers libc sysctl(3), sysctlbyname(3) et sysctlnametomib(3). La commande sysctl(8), les requêtes hw.* / kern.* et la plupart des collectes d'informations système faites par ps, top, vm_stat ou ioreg convergent vers ce seul appel. Certaines MIB (notamment kern.proc) appliquent un filtrage par entitlement sur les binaires hardened.
Détection
Endpoint Security ne remonte pas __sysctl directement, mais l'événement NOTIFY_PROC_CHECK couvre les sysctls d'énumération de processus. La sonde DTrace syscall::__sysctl:entry décode le tableau d'OID et constitue la voie standard pour auditer les lectures de kern.proc.