64

记一次安全应急响应中遇到的利用SSH日志触发的后门分析

 5 years ago
source link: http://www.freebuf.com/articles/system/185942.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

前言

前段时间,在一次安全应急响应案例中遇到一个利用ssh 日志作为触发点的后门,觉得有意思,写下来,分享一下,欢迎各位大佬的拍砖与讨论。

案例分析

据客户反映,其最近发现ssh的登录日志中有很多失败的登录尝试,形如:

ruMV3qf.jpg!web

如上图,这些失败的登录用户名都很奇怪,都是以LEGO开头的后面加上一串随机字符。感觉有点奇怪,要是SSH 暴力猜解攻击的话,不应该用这样的用户名啊。而且隔断时间就会有同样的失败登录尝试,每次就一次,这也不像是暴力猜解啊,有点费解。

在客户授权登录的情况下,去服务器看了下:

从干净的系统上提取了ps、lsof等工具,先后排查了是否有pam 库后门、pam配置文件后门、sshd后门,rsyslog 配置文件后门,均无果,后又检查定时任务也没有问题;

利用ps 、top等工具查看进程信息也没有异常,还真是有点意思。

再检查下动态库有木有被劫持了吧,一查果然有问题:

jEvaQrR.jpg!web

先去掉这个环境变量试下,发现了异常进程:

6R7zi2m.jpg!web

后又跟客户确认,没有用到这个LD_PRELOAD环境变量,基本可以确认是攻击者增加的用于隐藏进程的动态库。

利用lsof 查一下进程有木有关联相关文件:

NrARNfB.jpg!web

进一步确认177a就是perl:

Zjmaii2.jpg!web

再去查下/tmp/177f 这个文件:

M7veMrz.jpg!web

怎么这么面熟,这不就是/var/log/secure的内容吗?

对比下两个文件的inode id,发现是一致的,原来/tmp/177f 指向的就是/var/log/secure文件:

qiyaEf7.jpg!web

再去看下proc下117518这个可疑进程的fd信息,发现标准输入被重定向到/tmp/177f 也就是/var/log/secure这个文件:

ziuMV3I.jpg!web

至此基本弄清了可疑进程执行如下命令:

perl -e'while(1){sleep(1);while(<>){system pack("H*",$1)if/LEGO(\w+)/}}' < /var/log/secure

这里的LEGO是个匹配字符串,$1指的是LEGO后面匹配到的字符,也即(\w+)匹配到的字符,大致意思就是从/var/log/secure 读取每一行的内容,然后匹配到LEGO后面的字符串,然后执行pack 函数返回的结果。

看来,/var/log/secure/log中 形如LEGO6964******** 的登录账户名都是payload(后又提取/var/log/secure/log/ 中形如LEGO*的登录名,unpack之后,发现是个反弹shell,因隐私问题,这里就不发表了)。

这里可以确定,这是个后门了,利用ssh 登录日志作为后门触发点,攻击者每一次使用特定的账户名登录就会触发后门获取反弹shell。后面接着排查发现,这次入侵是因为redis未授权 端口开放导致的(redis 是以root运行的,也是没谁了。。)

总结

攻击者有点粗心了,可能是忘记删除/var/log/secure 中的登录痕迹了,要不然会更晚才能发现异常,排查也许会绕些弯子。

笔者这次分享在大佬们眼中可能略显简单,不过对我来说,确学到了不少东西,也希望更多的人分享自己的响应经历,希望大佬们分享更牛逼的响应经历

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK