Кейлоггер DTrace

Я пытался посмотреть, смогу ли я заставить sshkeysnoop.d Брендана Грегга работать на Mac OS X, но у меня возникли проблемы. Можно ли заставить это работать? Если да, то как?

Ошибка, которую я получаю:

dtrace: failed to compile script ./sshkeysnoop.d: line 40: probe description syscall::exec:return does not match any probes

Можно ли вести какой-либо другой тип регистрации ключей в Mac OS X с помощью DTrace?


person ericg    schedule 09.09.2011    source источник


Ответы (3)


Пара вещей, которые вы можете сделать, чтобы адаптировать такие сценарии. Во-первых, вы можете спросить dtrace, какие точки зондирования у него есть:

$ sudo dtrace -l -f 'syscall::exec*'
   ID   PROVIDER            MODULE                          FUNCTION NAME
18442    syscall                                              execve entry
18443    syscall                                              execve return

Во-вторых, вы можете отслеживать все системные вызовы одного процесса, чтобы увидеть, что происходит.

$ sudo dtruss ssh somewhere 2>dtrussout
Password: (type something here)

Если вы посмотрите через dtrussout, вы увидите

read_nocancel(0x5, "a\0", 0x1)       = 1 0
read_nocancel(0x5, "s\0", 0x1)       = 1 0
read_nocancel(0x5, "d\0", 0x1)       = 1 0
read_nocancel(0x5, "f\0", 0x1)       = 1 0
read_nocancel(0x5, "\n\0", 0x1)      = 1 0

С этими знаниями довольно легко адаптировать сценарий.

$ diff sshkeysnoop.d{.orig,}
40c40
< syscall::exec:return, syscall::exece:return
---
> syscall::execve:return
51c51
< syscall::open:entry, syscall::open64:entry
---
> syscall::open:entry
58c58
< syscall::open:return, syscall::open64:return
---
> syscall::open:return
68c68
< syscall::read:entry
---
> syscall::read_nocancel:entry
75c75
< syscall::read:return
---
> syscall::read_nocancel:return
person Scott Lamb    schedule 17.09.2011

В OS X нет зонда syscall::exec DTrace. Однако у него есть syscall::execve. Точно так же у него нет syscall::open64, который также используется в этом скрипте. Однако даже с заменой exec на execve и удалением open64 скрипт работает некорректно.

person Lily Ballard    schedule 09.09.2011

Также убедитесь, что вы загружаете все опции

kldload dtraceall

и не только

kldload dtrace

Или системные вызовы не будут загружены.

person egorulz    schedule 11.04.2014