最先我先编译程序一个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的子过程。
QUOTE:
root@laptop:/usr/local/openssh2/sbin# strace -o aa -ff -p 13619
随后大家登陆ssh,取得成功登陆以后,大家看一下当前目录,转化成了strace的輸出
QUOTE:
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
QUOTE:
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就十分非常容易发觉她们了。
【编辑推荐】