svc · unix #362
kqueue
Alloue une nouvelle file d'événements noyau et retourne un descripteur de fichier la référençant.
Prototype
int kqueue(void);Retour: int — kqueue descriptor, -1 with errno on failure
Historique des versions
Absent de toute version XNU publiée.
Stub utilisateur
arm64
mov x16, #362
svc #0x80
b.cs __cerror
retx86_64
mov eax, 0x200016A ; SYSCALL_CLASS_UNIX | 362
syscall
jb __cerror
retExemples
C — watch a file for writes
int kq = kqueue();
struct kevent change;
EV_SET(&change, fd, EVFILT_VNODE, EV_ADD | EV_CLEAR, NOTE_WRITE, 0, NULL);
kevent(kq, &change, 1, NULL, 0, NULL);Notes
kqueue est la réponse macOS / BSD à epoll. Le fd retourné est enregistré via kevent / kevent64 / kevent_qos pour s'abonner aux événements fichiers, signaux, timers, processus, mach ports et utilisateur. libdispatch et les runloops Foundation reposent dessus.
Détection
La création en elle-même est anodine. Surveiller les processus qui enregistrent EVFILT_PROC NOTE_FORK/NOTE_EXIT sur des PIDs non liés (espionnage de processus) ou EVFILT_FS (surveillance utilisée par les stalkerwares).
Utilisation par les malwares
Utilisé par les implants longue durée pour réagir aux changements du système de fichiers (persistance par drop-and-relaunch) sans polling actif. NoiseStorm et CrateDepression utilisent tous deux kqueue+EVFILT_VNODE pour leur persistance.
API associées
MITRE ATT&CK
Dernière vérification: 2026-05-25