Linux进程伪装(一):伪装内核线程

admin 2024年10月28日19:38:31评论30 views字数 1469阅读4分53秒阅读模式

攻击者经常对于恶意进程进行一些伪装操作,混淆防守人员的视线,为扩大战果尽可能地争取时间。笔者对于进程伪装的理解是:攻击者基于安全人员的技术习惯、安全工具的检测逻辑,结合被入侵主机的实际情况,通过修改进程相关属性,使其初步被识别为合法、无害,从而规避检测,拖延时间。

在进程伪装的相关手段中,进程名是出现频率最高的目标。而挑选强迷惑性的进程名,是成功的基石。本文笔者和各位讨论一种伪装为内核线程的场景,希望对于各位有所帮助!

一、举个例子

应急响应过程中需要查看进程列表的时候,最常用的命令应该是ps命令。当使用ps命令查看进程列表的时候,通常最上方会出现一批以中括号包含的进程名(如下图红框所示),这些基本上是内核线程,由内核创建,执行系统任务,例如内存管理、I/O处理等等。
Linux进程伪装(一):伪装内核线程
在应急响应场景之下,部分应急处置人员在看到此种进程,会下意识地认为这是系统进程,出问题的概率不大,进而将其排查的优先级放置最低。部分攻击者利用此种心理习惯,将恶意进程名伪装为内核线程,达到进程伪装的目的。
举个例子,编译如下代码,并将编译文件命名为[kfake],并将路径添加至环境变量(否则运行该文件必须要加路径,效果大打折扣),然后运行。
#include <unistd.h>int main() { pause(); return 0;}
Linux进程伪装(一):伪装内核线程

二、一个取巧的检测方式

通过上述方式伪造了一个名为[kfake]的内核线程,对于这种伪装成内核线程的恶意进程应当如何检测?有一个取巧的检测方式,只需一条命令:
ps auxc | grep "["
Linux进程伪装(一):伪装内核线程
参数c的作用是展示真实的进程名,为何在此场景下,添加c参数即可发现伪装的内核线程呢?请听笔者细细道来。
Linux进程伪装(一):伪装内核线程
中括号包裹是ps命令的行为。COMMAND列默认是从/proc/pid/cmdline中读取结果,但是内核线程的cmdline文件为空,所以将从/proc/pid/stat中获取进程名,并通过中括号标记。当添加c参数的时候,COMMAND列的值将直接从/proc/pid/stat中获取,此时内核线程也就无需使用中括号包裹,但是伪装的内核线程名仍旧包含中括号,使用上文提到的命令即可检测。
Linux进程伪装(一):伪装内核线程

三、osquery规则

还可以依据内核线程与用户进程存在的其他差异进行检测区分。例如:

  1. PPID=2,部分系统PPID=1;可使用ps xf或者pstree命令查看进程层级关系;
  2. /proc/pid/exe指向为空;可使用readlink查看exe是否返回为空;
  3. /proc/pid/cmdline、/proc/pid/maps为空;
笔者将上述的一些检测方式,总结为如下的osquery检测规则:
select pid,parent as ppid,(select username from users where uid=euid)running_user,name,path as exe_path,cmdline,datetime(start_time,'unixepoch','localtime')start_localtime from processes where name like '[%]' and ppid!=2 and exe_path!='' and cmdline!='';localtime from processes where name like '[%]' and ppid!=2 and exe_path!='' and cmdline!='';
Linux进程伪装(一):伪装内核线程
如果本文对你有帮助,欢迎点赞点关注
每周至少一篇原创文章,专注应急响应、威胁狩猎

原文始发于微信公众号(风奕安全):Linux进程伪装(一):伪装内核线程

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月28日19:38:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Linux进程伪装(一):伪装内核线程https://cn-sec.com/archives/3325121.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息