Como faço para diferenciar entre, xterm e firefox, se ambos chamam syscall = socketcall (recvmsg)

0

---- type = PROCTITLE msg = auditoria (domingo 03 Setembro de 2017 ^ E.370: 2020074): proctitle = / usr / bin / xterm -fg branco -bg black type = SOCKETCALL msg = audit (domingo, 03 de setembro de 2017 ^ E.370: 2020074) : nargs = 3 a0 = 0x3 a1 = 0xbf9a8274 a2 = 0 x 0 tipo = SYSCALL msg = auditoria (domingo 03 Setembro de 2017 ^ E.370: 2020074): arch = i386 syscall = socketcall (recvmsg) sucesso = sem saída = EAGAIN (Recurso temporariamente indisponível) a0 = recvmsg a1 = 0xbf9a81f4 a2 = 0x0 a3 = 0 x 0 itens = 0 ppid = 16776 pid = 16777 auid = unset uid = raiz gid = raiz euid = raiz suid = raiz fsuid = raiz egid = raiz sgid = raiz fsgid = raiz tty = (nenhum) ses = não definido comm = xterm exe = / usr / bin / xterm chave = jackass

---- type = PROCTITLE msg = auditoria (domingo, 03 de setembro de 2017 ^ E.638: 2020105): proctitle = / usr / local / firefox / tipo de firefox = SOCKETCALL msg = auditoria (domingo 03 setembro 2017 ^ E.638: 2020105): nargs = 3 a0 = 0x4 a1 = 0xbfaf8854 a2 = 0x0 type = SYSCALL msg = auditoria (domingo, 03 de setembro de 2017 ^ E.638: 2020105): arco = i386 syscall = socketcall (recvmsg) sucesso = não exit = EAGAIN (Recurso temporariamente indisponível) a0 = recvmsg a1 = 0xbfaf87d4 a2 = 0x0 a3 = 0xb771f000 itens = 0 ppid = 22804 pid = 22815 auid = não configurado uid = geek gid = geek euid = totó suid = geek fsuid = geek egid = geek sgid = geek fsgid = geek tty = (nenhum) ses = não definido comm = firefox exe = / usr / local / firefox / firefox chave = jackass

Estou usando:

auditctl -a exit,always -F arch=i686 -S socketcall -k jackass

Achei isso útil, mas não parece funcionar no exemplo acima. SUSE Audit Docs Exemplo -F a0 = 1

pode filtrar, mas como as duas chamadas usam recvmsg , isso não é útil. Eu preciso de alguma maneira para diferenciar usando a1 a2 a3 . Os documentos do SUSE dizem:

-F a1=10 filter narrows the matches down to socket system calls carrying the IPv6 protocol family domain parameter (PF_INET6).

No entanto, nestas chamadas a1 = 0xb5d12130, que é ilegível mumbo-jumbo. Parece ser um ponteiro para uma matriz de parâmetros para a chamada correspondente. Chamadas de sistema multiplexadas em x86

int socketcall(int call, unsigned long *args);

args points to a block containing the actual arguments, which are passed
       through to the appropriate call.
    
por linuxGuy 03.09.2017 / 11:08

1 resposta

0

Leia recvfrom (2) página do manual.

Essa chamada de sistema tem um descritor de arquivo , e em diferentes processos que fd provavelmente seria diferente (e se referir a alguns inode diferente).

Leia também Programação Avançada em Linux (para download gratuito).

Você também pode usar /proc/ (consulte proc (5) ). Provavelmente ls -l /proc/$(pidof firefox)/fd/ e ls -l /proc/$(pidof xterm)/fd/ informam coisas diferentes para esses descritores de arquivos.

    
por 03.09.2017 / 12:10