巧用 iLocker 清理恶意程序
iLocker 作为 iGuard 网页防篡改系统的文件驱动过滤模块所衍生出来的独立应用,是一个文件防护工具,可以在文件系统驱动层检查文件操作,根据规则对文件操作进行放行或拦截,可以灵活细致地对文件访问进行控制。
分享一则 iLocker 在实际运用中的案例,帮助大家拓展 iLocker 的运用思路——
起因
和许多突发事件一样,本次案例也发生在状况高发期——半夜。
工程师小张反馈服务器有不明程序在运行,判断不出程序的运行意图不说,它甚至还吃掉了100%的 CPU。小张尝试 kill 掉这个不明进程,却每次都会有新的进程杀出来,名字不尽相同,都是无规则的一串字母,好不烦人。
根据小张所述,并没有什么头绪,只有在程序里找线索了。
首先要厘清服务器(Linux)上的进程状态。 top 命令一看,确实有个符合上述特征的奇怪进程在吃 CPU。
尝试重现小张所说情况: kill-9 可以杀掉,再 top 一看,又出来一个进程,名字变了,但换汤不换药。

观察
依照常规,用 ps-ef|grep 检测发现,如下图,7769,分明是同一个进程 ID。 top 所显示的进程名和 ps 得到的结果并不一样。这一项问题姑且不论,检查后还发现, ps 命令没有被替换,程序还没有感染整个系统。可以用 lsof 进一步查看此进程,发现程序文件在 /usr/bin/ 下。

可以尝试再 kill 一次进程。
虽然如意料之中,得到和最初一样的结果,但再运行一次 ps 命令,我们有了新发现:不止7769一个进程,还暴露出一长串异常进程。

总结一下这次的问题:在同一时间点上,多个不该运行的命令在运行,比如 route-n , grep"A" ,甚至还有 echo"find" 这样的命令,十分反常。不仅如此,这些命令变化大量且迅速,每个进程短暂运行数秒即消失,新命令进程也在不断生成。
至此,这次异常状况的形态已初露端倪,100%占用 CPU 的进程可以断定是核心工作进程,其他变化多端的闪现进程则充当保护肉盾,用来保护真正的工作进程不被杀死删除。棘手的,便是这些周而复始,阴魂不散的保护进程了。
当然,经验丰富的我方安全战斗人员,一线作战经验丰富,如果排查出问题所在,解决方案也当即应运而生。
shell 提示新邮件,查看一下,或许是个不错的切入点哦!

不要错过任何一个线索——

草蛇灰线,掩藏得再好,蛛丝马迹还是被找到了!

脚本意图明显,功能简单明了:
- 使用
ifconfig命令启动所有网卡 - 复制
/lib/libudev.so到/lib/libudev.so.6 - 启动
/lib/libudev.so.6
可以看出
crontab发出了提醒邮件,是因为系统没有ifconfig命令,脚本报错了。- 脚本启动的是
/lib/libudev.so.6,看起来这个文件比较关键。
先尝试删除 /lib/libudev.so.6 ,rm 命令执行成功。但是再次 ls 的时候,它又出现了。猜测是那些奇怪的进程在维护这个 /lib/libudev.so.6 不被清理。
思路变得简单了:
- 怎么知道它都把文件复制到哪里去了呢?
- 怎么找到并杀死那些不停闪现的进程呢?
- 怎么阻止它复制自己呢?
手段
iLocker 大显身手的时候到了。
iLocker 可以保护文件或目录不被篡改,不但能阻止文件创建,还能发现恶意程序操作了哪些文件。无需多言,iLocker 配置起来。
配置前,有如下几点考虑:
- 恶意程序的可执行文件,在 /usr/bin 下面,需要把 /usr/bin 保护起来;
- 定时脚本里的恶意程序路径在 /lib/libudev.so ,所以也把 /lib 也保护起来;
- /tmp 目录也比较特别,也需要特别关注一下;
- 我自己要删除 /lib/libudev.so ,所以先要把自己放开;
- 发现系统的 /lib 目录实际上是个软链接 /usr/lib ,故而实际保护
/usr/lib 目录。
简单解释下 iLocker 的规则:
#uid=0,exe_path=*,cmdline=*,operation=MKDIR,file_path=/tmp/test/pass/*,action=pass
#uid=*,exe_path=*,cmdline=*,operation=*,file_path=/tmp/test/*,action=deny
一条规则包含以下信息,根据这些信息 iLocker 可以捕获任意一个文件操作,并对其进行拦截或记录:
- 用户
uid,进程所属的用户 ID; - 可执行文件的路径
exe_path; - 进程的命令行参数
cmdline,常用来区分同一个程序的不同进程,比如 java ,python ,shell 等; - 具体的文件操作
operation(如 CREATE ,OPEN , MKDIR 等); - 被操作的文件路径
file_path; - iLocker 的响应动作
action(pass ,deny ,log)等。
根据观察现象过程中搜集到的信息,在 iLocker 中写入如下配置——
exe_path=/usr/bin/rm,file_path=/usr/lib/*,action=pass
file_path=/usr/bin/*,action=deny
file_path=/usr/lib/*,action=deny
file_path=/tmp/*,action=deny
启动 iLocker ,并打开 iLocker 日志管理器,发现瞬时增加很多新日志,浏览下来,几乎都是恶意程序在写文件。如下:
2019-03-15 5:42:12,CREATE,0,14840,/usr/bin/irjsypzavm,/usr/bin/szklfovzwg,,deny
2019-03-15 15:42:12,CREATE,0,14840,/usr/bin/irjsypzavm,/tmp/szklfovzwg,,deny
2019-03-15 5:42:17,CREATE,0,14848,/usr/bin/irjsypzavm,/usr/lib/libudev.so,,deny
2019-03-15 5:42:18,CREATE,0,14848,/usr/bin/irjsypzavm,/usr/lib/libudev.so,,deny
例如其中第3条日志:
用户 ID=0 ,进程 ID=14848 ,
进程文件为 /usr/bin/irjsypzavm ,
想 CREATE 文件 /usr/lib/libudev.so ,被拦截了。
之前的假设得到了证实——程序在不停地复制自己。
同时,我们也找到了恶意程序自我复制的路径: /usr/bin 或 /tmp/ 下,文件名随机,复制到 /usr/lib/libudev.so 是固定的文件名。
解决
一波操作之后,终于可以痛下杀手,斩草除根了:
- 再次 kill 掉100% CPU 的进程
- rm /lib/libudev.so
- 清理留下的恶意文件,清理crontab
如上所述,这些程序每次完成自我复制,就相应拉起一些新的进程,自己退出。
这次,且不用劳神一个一个找出这些进程:iLocker 运行,进程不再复制成功,自己退出。没复制成功,也就意味着不再拉起新的进程。
iLocker 出马,恶意进程原地自闭了!本局,安全团队借助 iLocker 轻松实现全垒打!
案例总结
该案例下,服务器只开了一个 ssh 服务和一个只提供静态页面的 web 服务,系统是最新的,还打了补丁,看起来无懈可击……
但是!
一个没有“但是”做ending的案例是不完美的!
……
返回去查看系统登录日志,发现了大量失败的登录记录,回想起最初工程师小张提供的登录信息,root 、弱密码…没错,弱密码被暴力猜解了!
安全是个整体
哪里都要注意
弱密码要慎用!
(陈国 | 天存信息)
巧用 iLocker 清理恶意程序的更多相关文章
- rootkit——一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,一般都和木马、后门等其他恶意程序结合使用
Rootkit是指其主要功能为隐藏其他程式进程的软件,可能是一个或一个以上的软件组合:广义而言,Rootkit也可视为一项技术. 目录 1 rootkit是什么 2 rootkit的功能 root ...
- Rootkit Hunter恶意程序查杀
恶意程序,恶意代码检测 下载:https://pkgs.org/search/rkhunter 安装:rpm -ivh rkunter* Installed: #需要先安装 lsof.x86_64 ...
- Android手机安全软件的恶意程序检测靠谱吗--LBE安全大师、腾讯手机管家、360手机卫士恶意软件检测方法研究
转载请注明出处,谢谢. Android系统开放,各大论坛活跃,应用程序分发渠道广泛,这也就为恶意软件的传播提供了良好的环境.好在手机上安装了安全软件,是否能有效的检测出恶意软件呢?下边针对LBE安全大 ...
- 利用ML&AI判定未知恶意程序——里面提到ssl恶意加密流检测使用N个payload CNN + 字节分布包长等特征综合判定
利用ML&AI判定未知恶意程序 导语:0x01.前言 在上一篇ML&AI如何在云态势感知产品中落地中介绍了,为什么我们要预测未知恶意程序,传统的安全产品已经无法满足现有的安全态势.那么 ...
- 恶意程序入侵 dbuspm-session 发现了新的方法制这种恶意程序
直接从一台没服务器上把这两文件scp到当前的服务器上并替换这两个程序就ok了!!!!这种方法测试成功!!!! 出现了一个比效麻烦的事,服务器的负载正常,内存也正常,但就是很卡. 通过查找到线索:htt ...
- [转载]中情局数千份机密文档泄露:各种0day工具、恶意程序应有尽有
转载:http://www.freebuf.com/news/128802.html 维基解密最近再度获取到了数千份文件——据说这些文件是来自CIA(中央情报局),文件细数了CIA所用的网络入侵工具及 ...
- 【新人赛】阿里云恶意程序检测 -- 实践记录10.13 - Google Colab连接 / 数据简单查看 / 模型训练
1. 比赛介绍 比赛地址:阿里云恶意程序检测新人赛 这个比赛和已结束的第三届阿里云安全算法挑战赛赛题类似,是一个开放的长期赛. 2. 前期准备 因为训练数据量比较大,本地CPU跑不起来,所以决定用Go ...
- 苹果挖矿恶意程序处理(OSX/CoinMiner.X)
背景 近期通过流量告警发现多起外连矿池的告警,均外连至43.249.204.231 威胁情报信息如下: 系统表象 1.通过ps -ef|grep osascript发现在/library/Launch ...
- 制作一个windows垃圾清理小程序
制作一个windows垃圾清理小程序: 把下列代码保存为.bat文件(如垃圾清理.bat) 双击它就能很快地清理垃圾文件,大约一分钟不到. 就是下面的文字(这行不用复制)=============== ...
随机推荐
- Mybatis3源码笔记(二)SqlSession
1. 核心层次 2. SqlSession 先从顶层的SqlSession接口开始说起.SqlSession是MyBatis提供的面向用户的API,表示和数据库的会话对象,用于完成对数据库的一系列CR ...
- 007-Java中方法的使用(基础篇)
目录 一.方法的基本概述 一.方法的概述 二.方法的语法机制 三.方法的调用 一.方法的基本概述 一.方法的概述 方法其实就是一段可以完成某个特定功能的并且可以被重复利用的代码片段,方法的出现,让 ...
- 同事写了一个疯狂的类构造器,我要疯了,Builder 模式都不会么?!
疯狂的类构造器 最近栈长在做 Code Review 时,发现一段创建对象的方法: Task task = new Task(112, "紧急任务", "处理一下这个任务 ...
- windows黑窗口命令笔记
windows有个黑窗口,吃惊吧!意外吧!! 哈哈,我是真的有些吃惊的!! nslookup ipconfig /all ipconfig /flushdns windows 声音修复 windows ...
- 【Idea】实用的快捷键清单
1.Ctrl + Shift +i:快速查看某个类/方法 2.Ctrl +:(Ace Jump插件启动) 3.alt+F1:快速查看某个类/方法 所在的包 4.Ctrl +w :选中某个单词 5.Ct ...
- hdu2276 矩阵构造
题意: 给了n个灯泡的状态,他们绕成一个环,0是灭,1是亮,每一秒灯泡的状态都会改变,规则是如果当前这个灯泡的左边的灯泡当前是状态1,那么下一秒当前的这个灯泡状态就改变0变1,1变0,最后问 ...
- UVA11722(见面概率)
题意: 有一个车站,两个人想要在这个车站见面,第一个人会在t1到t2之间的任意一个时刻到(时间上任意一点概率一样),并且停留w时间,第二个人是s2到s2的时间段到,停留也是w,问两个人的见 ...
- Nacos使用 MySQL 8.0 提示Public Key Retrieval is not allowed
原因如下(参考官网给出的连接选项): 如果用户使用了 sha256_password 认证,密码在传输过程中必须使用 TLS 协议保护,但是如果 RSA 公钥不可用,可以使用服务器提供的公钥:可以在连 ...
- Asp.NetCore Web开发之ADO.Net
Asp.NetCore可以说是.Net平台开发网站的一大利器,最近的一大段时间,就要跟大家分享,如何使用这一利器开发网站项目. 要学习网站开发,首先要学习如何使用ADO.Net进行数据库数据的增删改 ...
- 【Azure 环境】在Azure虚拟机(经典) 的资源中,使用SDK导出VM列表的办法
Azure, 在2008年10月的Microsoft专业开发人员大会(PDC)上宣布,当时使用内部项目代号"Project Red Dog",并于2010年2月正式发布为Wind ...