建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块

小夜杯

发帖: 2粉丝: 1

级别 : 新手上路

Rank: 1

发消息 + 关注

发表于2018-8-2 11:48:12 11693 1 楼主 显示全部楼层
[主机安全] 隐藏型恶意挖矿程序的分析

一、前言:

随着比特币的火热,黑客入侵主机的目的从做DDOS肉鸡开始向虚拟币挖矿转移,以往的挖矿进程行为都比较粗犷,会大量占用系统资源,不会进行自身隐藏,谋求短期利益;近期我们发现挖矿木马开始倾向于可持续发展,长期潜伏、只在无人的时候偷偷开启挖矿动作,通常不容易被发现,今天我们根据一起主机被入侵的安全应急响应事件,针对隐藏性恶意挖矿程序进行分析。

 



二、入侵分析:

1、接到客户应急响应以后开始分析。根据客户描述,白天不太明显,但一到晚上CPU就飙高。排查定时任务,发现/etc/cron.hourly/0anacron脚本中增加了如下代码,即每小时执行一次check_time,进行一次检查。

image.png

Check_time脚本首先会修改环境变量,然后判断系统时间,如果在白天06:0022:00之间,则会kill掉相关进程,删除相关文件,不执行挖矿动作,达到潜伏的目的; 

image.png

如果到了晚上22:00至早上06:00这个时间段,则执行sysmon恶意程序。

image.png

该脚本在主节点和其他计算节点上有所区别,主节点上主要是添加一条IPtables规则,规则的IP指向一个荷兰的在线挖矿服务网站。

image.png

         这两条规则,是将所有访问跳转机44344端口的请求,都转发到172.16.100.34:444,并且伪装源地址,相当于做了一次端口映射。这样所有计算节点通过访问跳转机的44344端口,可以连接到172.16.100.34这个荷兰在线挖矿网站。

image.png

         总体效果是,如果是白天6:00~22:00之间,则计算节点自行清理挖矿脚本、隐藏挖矿动作,跳转机删除iptables规则进行潜伏;到了晚上22:00~6:00,则计算节点启动挖矿脚本,跳转机添加iptables规则进行端口映射,所有结算节点通过跳转机访问到在线挖矿网站,开启批量挖矿。

image.png

2、开通华为云企业主机安全服务后,可以通过agent进程监控日志,查看进程的调用链和执行命令。在被入侵的agent后台监控日志可以看到,Sysmon脚本将源文件liboa.c解压后,会执行/tmp/s脚本。/usr/lib/liboa.c就是恶意挖矿程序的源文件。执行命令如下。

image.png

s脚本会首先是收集系统信息,然后重启crond服务。

image.png

修改文件变更时间,以便于隐藏。

image.png

最后删除掉之前存在的相关进程并重启matlab2脚本。

image.png

3matlab2脚本首先自删除脚本文件,然后通过把library1.so写进/etc/ld.so.preload,进行设置预加载动态库,library1.so作用主要是隐藏主进程(详见下一节分析);接着启动挖矿主进程/bin/htral开始挖矿,并删除主进程对应的映象文件,最后启动matlab3脚本。

image.png

Matlab3脚本主要做一些清理工作,并调用/var/tmp/.lock/geolog。该文件主要用来检测是否存在长期的非SSH登录执行的任务。如果检测到有监控动作,则会删除相关文件并kill掉相关进程,已达到潜伏的目的。

4matlab3脚本会做一些清理工作,并调用/var/tmp/.lock/geolog文件检测是否有长期的非SSH登录执行的任务。

image.png

 

image.png

如果检测到有监控动作,则会删除相关文件和kill相关进程。

image.png

以上是入侵分析的整个过程。

 



三、样本分析:

该样本隐藏htral主进程主要是使用了动态链接库预加载机制。该机制是linux操作系统提供给用户运行自定义动态链接库的一种方式,它们的优先级比较高,高于 LD_LIBRARY_PATH环境变量所定义的链接库,因此如果重写一个同名库函数放在预加载的链接库中,就能运行重写的库函数,而不运行系统的库函数。

使用动态链接库预加载技术有三种利用方式,本文中挖矿程序是通过修改/etc/ld.so.preload配置文件,将恶意动态链接库library1.so添加到进去,重写了readdir64库函数,从而达到隐藏主进程的目的。

image.png

         逆向分析Library1.so,发现该函数会拦截readdir64系统库函数,如果找到/proc下名为htral的进程,跳过、过滤掉。Topps等命令都是基于readdir64函数便利/proc目录,所以该函数被篡改后,这些命令无法显示htral进程。

image.png

Get_process_name获取进程名

image.png

 

常量process_to_filter就是htral

image.png



 

四、结束语

         现在越来越多的被入侵的主机,沦为黑客挖矿的肉鸡,并且隐藏进程长期潜伏,不容易被发现。开通华为云企业主机安全服务,可以很好的防范这种隐藏型的挖矿木马,有多种有效措施检测挖矿木马,并且我们有强大的专业团队7*24小时进行安全应急响应。

希望本篇文章可以对安全人员有所帮助,更好的了解动态库预加载技术隐藏进程和文件的机制。



挖矿木马

举报
分享

分享文章到朋友圈

分享文章到微博

建赟

发帖: 302粉丝: 17

级别 : 外部版主

Rank: 7Rank: 7Rank: 7

发消息 + 关注

发表于2018-8-2 15:39:11 沙发 显示全部楼层

顶一个

点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册