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

栏目: 服务器 · 发布时间: 7年前

内容简介:*本文原创作者:ForrestX386,本文属FreeBuf原创奖励计划,未经许可禁止转载在我最近的一些安全应急响应经历中,遇到了入侵者利用一些小的有意思tricks——将自己的ssh登录痕迹隐匿于w和last命令中,这对于一些经验不足或者没有相关意识的运维管理人员来说,可能不会发现这些已经发生的非法登录行为,亦或者既使觉察出有点异常,但却不理解为啥能将ssh登录痕迹隐匿于w和last命令(这种隐匿不涉及修改相关日志文件)。本文将会为大家介绍和阐述这种隐匿登录痕迹的手法以及如何确切的发现他们的痕迹。

*本文原创作者:ForrestX386,本文属FreeBuf原创奖励计划,未经许可禁止转载

0×00 前言

在我最近的一些安全应急响应经历中,遇到了入侵者利用一些小的有意思tricks——将自己的ssh登录痕迹隐匿于w和last命令中,这对于一些经验不足或者没有相关意识的运维管理人员来说,可能不会发现这些已经发生的非法登录行为,亦或者既使觉察出有点异常,但却不理解为啥能将ssh登录痕迹隐匿于w和last命令(这种隐匿不涉及修改相关日志文件)。 

本文将会为大家介绍和阐述这种隐匿登录痕迹的手法以及如何确切的发现他们的痕迹。

0×01 正文

1、现象及原理解释

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

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

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

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

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

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

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

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

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

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

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

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

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 试一下,就是简单执行以下就退出了

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

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

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

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

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

-i 表示是交互式shell

2、如何发现隐匿的ssh登录行为

如果是隐匿的ssh正在进行,可以通过lsof 或者 netstat 或者ps 命令发现

1)通过lsof发觉异常ssh登录

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

两条已建立的连接,一条是通过pts/0正常登录的(前文已交代),一条就是隐匿于w和last的ssh登录

2)通过ps命令发现异常ssh登录

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

这里有个notty的 sshd 进程,说明就是通过上文所述的trick隐匿于w和last命令的ssh登录行为

如果是历史ssh 隐匿登录行为,如何找出历史登录行为呢

通过分析/var/log/secure 日志(有的系统是/var/log/auth.log)

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

从 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

*本文原创作者:ForrestX386,本文属FreeBuf原创奖励计划,未经许可禁止转载


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

About Face 3

About Face 3

Alan Cooper、Robert Reimann、David Cronin / John Wiley & Sons / 2007-5-15 / GBP 28.99

* The return of the authoritative bestseller includes all new content relevant to the popularization of how About Face maintains its relevance to new Web technologies such as AJAX and mobile platforms......一起来看看 《About Face 3》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具