关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

紧急应对:记住模式小偷多的地雷病毒。

发布时间:2021-05-11 17:19:42

  这篇文章一次表象是“无文件”、“无过程”,是系统中几乎看不到的高度矿井病毒处理事例(包括处置过程),然后反向分析其原理,感兴趣的朋友,我们一起抽丝剥茧,拨云看一天。

  通过这篇文章,您可以获得:

  几种Linux应急处理小知识

  无法查看文件、网络和进程?背后的原理解释!


  0x01非严重事件概述

  2021年1月的晴天,虚拟化管理软件在虚拟机列表界面发现,一台机器具有色彩鲜艳、顶部网格标记的CPU利用率指示,这显然是虚拟机中最漂亮的牛仔。这件事肯定有蹊跷。

1.png

  0x02事件性能

  2.1 CPU使用量内部和外部不一致

  服务器是虚拟化执行系统,通过它可以在虚拟化管理软件中查看每个虚拟机的各种资源统计数据。异常服务器显示在虚拟化管理软件中CPU利用率指示器的正上方。

  但是,在服务器上使用top等命令时,CPU利用率非常低,无法完全达到100%。

2.png

  2.2系统中没有发现奇怪的配置

  从系统上存在的计划任务、服务、启动项目来看,没有发现错误的情况,没有列出系统公共目录中的文件,也没有找到可疑的文件,甚至怀疑虚拟化管理软件是否存在错误。第一次检查后得出的结论:

  0x03百小麦必须有一个地方

  经过一次检查,发现事情没那么简单,一次操作后没有任何收获,怎么办!

  文件、进程都无法查看异常。很有可能被藏起来了。首先,请确认系统命令的修改时间(可以故意修改),并大致查看是否可以更换。

  好家伙,这件事变得有趣了。CPU占用很多,从过程开始吧。如果看不到top命令,请更换并安装htop。

3.png

  职号专家,第一次看到这么高规格的矿用病毒,据我所知,从天而降的手掌法(苏丹)可以达到通用性强的隐藏效果。就是LD_PRELOAD。

  LD_PRELOAD是Linux系统上的环境变量,允许您定义在程序运行前加载的动态链接库。此功能主要用于有选择地从其他动态链接库加载相同的函数。使用此环境变量可以在主程序和动态链接库之间加载其他动态链接库,并复盖常规库。

  一方面,我们可以将自己或更好的函数(不需要别人的源代码)用作这个功能,另一方面,我们可以将程序注入到别人的程序中,以达到特定的目的。(重点)

  这个机制可以理解为Windows系统的DLL绑架。

  请检查/etc/ld.so.preload。

  好家伙,就上busybox吧。

  BusyBox是将n个以上最常用的Linux命令和工具集成在一起的软件。BusyBox包含ls、cat、echo等简单工具,以及grep、find、mount、telnet等更大更复杂的工具。有人称BusyBox为Linux工具的瑞士军队Dao。简而言之,BusyBox是一个大工具箱,它集成了压缩Linux的许多工具和命令。

  使用Busybox再次查看/etc/ld.so.preload,您会发现文件存在,并且可以通过内容查看恶意库文件的路径。这样就可以判断这个动态链接库过滤了系统函数,隐藏了不想显示的信息。


  可能有朋友要问,判断是否使用这个机制只有这个方法吗?当然不是。可以使用ldd命令查看动态链接库的依赖关系。一般系统的输出如下:

  But,引入运行时链接机制后,当前实例场景如下:

  由于动态链接库有其他方法,CPU利用率如何?当然有。可以看作是vmstat。

  其中,与CPU使用情况相关的列字段表示以下含义:

  名称说明

  美国用户进程运行时间(以百分比为单位)

  Sy系统进程运行时间(系统时间) (百分比)

  Id空闲时间(包括I/O等待时间),中央处理器的空闲时间(百分比)

  Wa等待输入/输出时间(百分比)

  可见,病毒无论过滤多少,都有可能被遗漏。

  回到正题,用busybox的top再看看CPU使用率,拿下最高的牛仔就可以了。好的,真相大白后,可以整理,结束过程可以一口气删除文件。必须使用busybox的命令代替系统命令。(阿尔伯特爱因斯坦,北方执行系统)。

  但是鹅,事情还是没那么简单。删除文件告诉我没有权限,真不符合我的根身份。

  请看文档属性。嗯~尝一下熟悉的味道,删除文档属性,然后继续删除就可以了。

  反过来看,病毒会修改/etc/resolv.conf,在系统上配置DNS服务器,使域名不可访问。

  公钥为/root/。如果写入ssh/authorized_keys,则必须在清理时恢复到原始状态。

  

      0x04原理分析

  回想起来,为什么看不到文件?为什么看不到网络、进程的异常?在这里一起分析一下原理。

  要进行分析,请反向将动态链接库libcurl.so.2.17.0扔给IDA看一下。由于此链接库可以对主要函数进行Hook和过滤,因此使用ls、top、netstat等命令无法检测到异常。

  举个栗子,ls源代码会调用readdir函数来实现文件枚举功能。那么,修改此函数是否可以控制ls运行结果?

  是的,智能你可能已经认为恶意库文件中存在对readdir函数的过滤动作。判断是否为当前列出的病毒相关文件,不跳过或保留,从而达到了隐藏文件的目的。约翰肯尼迪,与病毒相关的文件。

  同样,恶意库文件还会过滤open、fopen、kill等函数。例如,kill函数的逻辑如下:

  这样,加载库后,您将无法使用自己的kill命令操作与病毒相关的进程,或使用ls等命令查找与病毒相关的文件。

  这波是雪景。文件和过程实际上并没有消失,只是想瞒天过海。


  本文介绍了应急处理小想法、Linux系统的隐藏手段和背后原理。

  个人认为,实际应急过程中没有绝对的操作正式,要根据现场实际环境,结合自己掌握的各种技巧。本文描述的只是再列举一种方法,当然还有其他可以使用的方法。这里有时间自己挖坑,整理不常见的调查方法,同时还要给感兴趣的朋友留下种子介绍。毕竟学习是多么的快乐。



/template/Home/Qiggg/PC/Static