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-ngrep"A" ,甚至还有 echo"find" 这样的命令,十分反常。不仅如此,这些命令变化大量且迅速,每个进程短暂运行数秒即消失,新命令进程也在不断生成。

至此,这次异常状况的形态已初露端倪,100%占用 CPU 的进程可以断定是核心工作进程,其他变化多端的闪现进程则充当保护肉盾,用来保护真正的工作进程不被杀死删除。棘手的,便是这些周而复始,阴魂不散的保护进程了。

当然,经验丰富的我方安全战斗人员,一线作战经验丰富,如果排查出问题所在,解决方案也当即应运而生。

shell 提示新邮件,查看一下,或许是个不错的切入点哦!

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

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

脚本意图明显,功能简单明了:

  1. 使用 ifconfig 命令启动所有网卡
  2. 复制 /lib/libudev.so/lib/libudev.so.6
  3. 启动 /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 清理恶意程序的更多相关文章

  1. rootkit——一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,一般都和木马、后门等其他恶意程序结合使用

    Rootkit是指其主要功能为隐藏其他程式进程的软件,可能是一个或一个以上的软件组合:广义而言,Rootkit也可视为一项技术.   目录 1 rootkit是什么 2 rootkit的功能 root ...

  2. Rootkit Hunter恶意程序查杀

    恶意程序,恶意代码检测 下载:https://pkgs.org/search/rkhunter 安装:rpm -ivh rkunter* Installed: #需要先安装  lsof.x86_64 ...

  3. Android手机安全软件的恶意程序检测靠谱吗--LBE安全大师、腾讯手机管家、360手机卫士恶意软件检测方法研究

    转载请注明出处,谢谢. Android系统开放,各大论坛活跃,应用程序分发渠道广泛,这也就为恶意软件的传播提供了良好的环境.好在手机上安装了安全软件,是否能有效的检测出恶意软件呢?下边针对LBE安全大 ...

  4. 利用ML&AI判定未知恶意程序——里面提到ssl恶意加密流检测使用N个payload CNN + 字节分布包长等特征综合判定

    利用ML&AI判定未知恶意程序 导语:0x01.前言 在上一篇ML&AI如何在云态势感知产品中落地中介绍了,为什么我们要预测未知恶意程序,传统的安全产品已经无法满足现有的安全态势.那么 ...

  5. 恶意程序入侵 dbuspm-session 发现了新的方法制这种恶意程序

    直接从一台没服务器上把这两文件scp到当前的服务器上并替换这两个程序就ok了!!!!这种方法测试成功!!!! 出现了一个比效麻烦的事,服务器的负载正常,内存也正常,但就是很卡. 通过查找到线索:htt ...

  6. [转载]中情局数千份机密文档泄露:各种0day工具、恶意程序应有尽有

    转载:http://www.freebuf.com/news/128802.html 维基解密最近再度获取到了数千份文件——据说这些文件是来自CIA(中央情报局),文件细数了CIA所用的网络入侵工具及 ...

  7. 【新人赛】阿里云恶意程序检测 -- 实践记录10.13 - Google Colab连接 / 数据简单查看 / 模型训练

    1. 比赛介绍 比赛地址:阿里云恶意程序检测新人赛 这个比赛和已结束的第三届阿里云安全算法挑战赛赛题类似,是一个开放的长期赛. 2. 前期准备 因为训练数据量比较大,本地CPU跑不起来,所以决定用Go ...

  8. 苹果挖矿恶意程序处理(OSX/CoinMiner.X)

    背景 近期通过流量告警发现多起外连矿池的告警,均外连至43.249.204.231 威胁情报信息如下: 系统表象 1.通过ps -ef|grep osascript发现在/library/Launch ...

  9. 制作一个windows垃圾清理小程序

    制作一个windows垃圾清理小程序: 把下列代码保存为.bat文件(如垃圾清理.bat) 双击它就能很快地清理垃圾文件,大约一分钟不到. 就是下面的文字(这行不用复制)=============== ...

随机推荐

  1. fish shell 自动补全子命令

    之前在 「创建 fish shell 自动补全文件」 中介绍了如何创建 fish 的补全文件,实现对命令的友好补全提示.通过形如 complete -c <command> -a [&qu ...

  2. Where is the Marble UVA - 10474

     Raju and Meena love to play with Marbles. They have got a lot of marbles with numbers written on th ...

  3. Jenkins 项目类型及配置项

    0. 简介 1. Freestyle project 1)General 2)源码管理 3)构建触发器 4)构建环境 5)构建 6)构建后操作 2. Maven 项目 1)所有配置项 2)Build ...

  4. OOP-面向对象(一)

    一图描述面向对象 类 - 相关参考 定义一个类 # 在定义类名的时候推荐使用大陀峰 class Car: pass # 推荐这么定义 class Car(): pass class Car(objec ...

  5. 技术面试问题汇总第001篇:猎豹移动反病毒工程师part1

    我在2014年7月1日参加了猎豹移动(原金山网络)反病毒工程师的电话面试,但是很遗憾,由于我当时准备不足,加上自身水平不够,面试官向我提出的很多技术问题我都没能答出来(这里面既有基础类的问题,也有比较 ...

  6. DVWA之Brute Force

    DVWA简介 DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用,旨在为安全专业人员测试自己的专业技能和工具提供合法 ...

  7. POJ2195费用流+BFS建图

    题意:       给你一个n*m的地图,上面有w个人,和w个房子,每个人都要进房子,每个房子只能进一个人,问所有人都进房子的路径总和最少是多少? 思路:       比较简单的最大流,直接建立两排, ...

  8. UVA11520填充正方形

    题意:      给你一个n*n的矩阵,让你往里面添加大写字母,矩阵有的字母已经给填好了,然后要求是每个格子都不能与他相邻的格子的大写字母相同,如果有多个答案,输出从上到下,从左到右所连接的成的那个n ...

  9. WPScan工具的使用(WordPress扫描工具)

    WPScan是Kali Linux默认自带的一款漏洞扫描工具,它采用Ruby编写,能够扫描WordPress网站中的多种安全漏洞,其中包括WordPress本身的漏洞.插件漏洞和主题漏洞.最新版本WP ...

  10. POJ1679判断最小生成树的唯一性

    题意:      判断最小树是否唯一. 思路:      我用了两种方法,主要就是好久没敲了,找个水题练练手,第一种就是先一遍最小生成树,然后枚举最小生成树上的每一条边,然后取消这条边,在跑一遍最小生 ...