安全运维之如何找到隐匿于last和w命令中的ssh登录痕迹

在我近来的一些安然应急相应经历中,碰到了入侵者使用一些小的故意思tricks——将自己的ssh登录痕迹隐匿于w和last敕令中,这对付一些履历不够或者没有相关意识的运维治理职员来说,可能不会发明这些已经发生的不法登录行径,亦或者既使觉察出有点非常,但却不理解为啥能将ssh登录痕迹隐匿于w和last敕令(这种隐匿不涉及改动相关日志文件)。

本文将会为大年夜家先容和阐述这种隐匿登录痕迹的伎俩以及若何确切的发明他们的痕迹。

0×01 正文

1、征象及道理说明

首先有一个正常的登录(bastion 登录至code-audit),从pts/0登录 ( 14:31分正常登录)。

在code-audit 上输入 w 敕令显示。

在code-audit 上输入 last 敕令显示。

然后我使用一个小trick 将我的ssh登录痕迹隐匿于w 和last 敕令中,且看下图。

在code-audit 上输入 w 敕令显示。

在code-audit 上输入 last 敕令显示。

这时刻,我们就会有以下疑问(黑人问号)。

1)为什么w和last都没有记录呢?

这是由于w 敕令显示信息滥觞于utmp,last 滥觞于wtmp,并不是所有法度榜样登录的时刻都邑调用utmp 和wtmp 日志记录接口,只有交互式会话,才会调用utmp 和 wtmp的日志记录接口,比如 经由过程tty 或者pts或者图形界面登录的都邑调用utmp 和wtmp 日志记录接口,然后我们在应用w 和last 敕令的时刻就会发明登录信息

2)ssh -lroot 192.168.12.51 /usr/bin/bash 为什么不属于交互式会话

ssh -lroot 192.168.12.51 /usr/bin/bash 着实就相称于登录之后直接调用bash这个名,此时系统没有为其分配tty,不算一个完备交互式会话,只不过bash 吸收输入,然后有输出,让我们误以为是交互式会话,着实不然,你可以将/usr/bin/bash 调换成/usr/bin/ls 试一下,便是简单履行以下就退出了

还有一种看起来更像是交互式会话的,但实际却不是的一种登录技术,这种要领也会将登录行径隐匿于w 和 last 敕令

-T 表示不分配伪终端 (正常的会话,在分配伪终端之后才会调用utmp和wtmp的日志接口)

/usr/bin/bash -i表示在登录之后 调用bash敕令

-i 表示是交互式shell

2、若何发明隐匿的ssh登录行径

假如是隐匿的ssh正在进行,可以经由过程lsof 或者 netstat 或者ps 敕令发明

1)经由过程lsof发觉非常ssh登录

两条已建立的连接,一条是经由过程pts/0正常登录的(前文已交卸),一条便是隐匿于w和last的ssh登录

2)经由过程ps敕令发明非常ssh登录

这里有个notty的 sshd 进程,阐明便是经由过程上文所述的trick隐匿于w和last敕令的ssh登录行径

假如是历史ssh 隐匿登录行径,若何找出历史登录行径呢

经由过程阐发/var/log/secure 日志(有的系统是/var/log/auth.log)

从 Accepted publickey for root from 192.168.12.54 一行可以得出ssh的登录光阴

从Disconnected from 192.168.12.54 port 43000 一行可以得出ssh的退出光阴

假如从secure中的阐发结果和 last 对不上,那么这些对不上的登录行径有可能便是经由过程本文所先容的隐匿要领登录的

0×02. 总结

​ 着实像scp 、sftp 等也涉及到ssh登录,但却不会在w 和last中留下日志的法度榜样,也都是由于他们不输入交互式会话。盼望本文能给大年夜家带来赞助

​ 本文涉及紧张参考资料如下

​ https://news.ycombinator.com/item?id=1937139

​ https://unix.stackexchange.com/questions/20070/user-logged-in-by-sftp-does-not-show-up-in-w

赞(0) 打赏
分享到: 更多 (0)
免责申明:本站所有资料均来自于网络,版权归原创者所有!本站不提供任何保证,不保证真实性,并不承担任何法律责任

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

阿里云优惠网 更专业 更优惠

阿里云优惠券阿里云大礼包