天天看點

用strace找ssh後門

首先我先編譯一個ssh後門,這個ssh後門會在/tmp/xxxxxx記錄所有的登入密碼

啟動他

QUOTE:

root@laptop:/usr/local/openssh2/sbin# ps aux | grep sshd

root     13619  0.0  0.3   7432  1752 ?        Ss   23:44   0:00 ./sshd -p 1234

root     13707  0.0  0.2   4292  1328 pts/3    R+   23:58   0:00 grep sshd

下面我們用strace跟蹤一下pid位13619的ssh程序,其中-ff參數很重要,可以跟蹤fork的子程序。

root@laptop:/usr/local/openssh2/sbin# strace -o aa -ff -p 13619

然後我們登入ssh,成功登入之後,我們看看目前目錄,生成了strace的輸出

root@laptop:/usr/local/openssh2/sbin# ls

aa        aa.13636  aa.13638  aa.13640  aa.13642  aa.13644  aa.13646  aa.13648  aa.13650  aa.13652  aa.13654  aa.13656  sshd

aa.13635  aa.13637  aa.13639  aa.13641  aa.13643  aa.13645  aa.13647  aa.13649  aa.13651  aa.13653  aa.13655  aa.13657

我們grep一下open系統調用,然後過濾掉錯誤資訊和/dev/null資訊,以及denied資訊,并且找WR的,就是讀寫模式打開的,因為要把記錄的密碼寫入檔案,肯定要是以寫方式打開的檔案,大緻的看看,很容易找到異常檔案/tmp/xxxxxx

root@laptop:/usr/local/openssh2/sbin# grep open aa* | grep -v -e No -e null -e denied| grep WR

aa.13635:open("/tmp/xxxxxx", O_WRONLY|O_APPEND|O_CREAT|O_LARGEFILE, 0666) = 3

aa.13635:open("/dev/ptmx", O_RDWR)               = 3

aa.13635:open("/dev/pts/5", O_RDWR|O_NOCTTY)     = 6

aa.13635:open("/var/run/utmp", O_RDWR)           = 7

aa.13635:open("/var/log/wtmp", O_WRONLY)         = 7

aa.13635:open("/var/log/lastlog", O_RDWR|O_CREAT|O_LARGEFILE, 02000) = 7

aa.13635:open("/var/run/utmp", O_RDWR)           = 6

aa.13635:open("/var/log/wtmp", O_WRONLY)         = 6

aa.13638:open("/dev/pts/5", O_RDWR|O_LARGEFILE)  = 7

aa.13638:open("/dev/tty", O_WRONLY|O_LARGEFILE)  = 8

aa.13638:open("/dev/tty", O_RDWR|O_NONBLOCK|O_LARGEFILE) = 3

aa.13640:open("/dev/tty", O_RDWR|O_NONBLOCK|O_LARGEFILE) = 3

aa.13657:open("/dev/tty", O_RDWR)                = 3

通過上面的方法,我們可以大緻的診斷一下我們的sshd是否被放了後門,但是因為sshd後門多種多樣,上面我說到的sshd後門是比較優秀的一種,他可

以設定是否記錄密碼,如果設定不記錄密碼,那麼我們用strace估計是發現不到他的,但是還是有一些ssh後門還要用特殊的配置檔案,讀取特殊的密碼文

件,這種我們用strace就十分容易發現他們了。

繼續閱讀