T1036-伪装(二)

admin 2025年4月9日00:17:54评论3 views字数 4991阅读16分38秒阅读模式
Atomic Red Team™是一个映射到MITRE ATT&CK®框架的测试库。安全团队可以使用Atomic Red Team快速、可移植和可重复地测试他们的环境。

本文章为Atomic Red Team系列文章,本篇文章内容为T1036-伪装(二)。本文的目的旨在帮助安全团队开展安全测试,发现安全问题,切勿将本文中提到的技术用作攻击行为,请切实遵守国家法律法规。

重要声明 本文档中的信息和工具仅用于授权的安全测试和研究目的。未经授权使用这些工具进行攻击或数据提取是非法的,并可能导致严重的法律后果。使用本文档中的任何内容时,请确保您遵守所有适用的法律法规,并获得适当的授权。

01

T1036.004-伪装:伪装任务或服务

来自ATT&CK的描述

攻击者可能会试图操纵任务或服务的名称,使其看起来合法或无害。任务计划程序或systemd执行的任务/服务通常会被赋予一个名称和(或)描述。(引用:TechNet的schtasks相关文档;systemd服务单元相关文档 )Windows服务会有一个服务名以及一个显示名。存在许多良性任务和服务,它们有着常见的关联名称。攻击者可能会给任务或服务起与合法任务或服务相似甚至相同的名字。

任务或服务还包含其他字段,如描述,攻击者可能会试图让这些字段看起来合法。(引用:帕洛阿尔托关于2016年11月Shamoon事件的报告;Dr.Web对Fysbis的分析 )

原子测试

  • 原子测试#1-使用schtasks创建与W32Time相似命名的服务
  • 原子测试#2-使用sc创建与W32Time相似命名的服务
  • 原子测试#3-在Linux中使用prctl重命名/proc/pid/comm
  • 原子测试#4-使用绑定挂载隐藏恶意进程

原子测试#1-使用schtasks创建与W32Time相似命名的服务

模仿名为“Operation Wocao”的威胁行为者,使用schtasks创建与W32Time相似命名的服务(win32times)。

  • 支持的平台
    Windows
  • 自动生成的GUID
    f9f2fe59-96f7-4a7d-ba9f-a9783200d4c9
  • 攻击命令
    使用command_prompt运行!需要提升权限(例如root或管理员权限)
schtasks /create /ru system /sc daily /tr "cmd /c powershell.exe -ep bypass -file c:T1036.004_NonExistingScript.ps1" /tn win32times /fschtasks /query /tn win32times
  • 清理命令
schtasks /tn win32times /delete /f

原子测试#2-使用sc创建与W32Time相似命名的服务

模仿名为“Operation Wocao”的威胁行为者,使用sc创建与W32Time相似命名的服务(win32times)。

  • 支持的平台
    Windows
  • 自动生成的GUID
    b721c6ef-472c-4263-a0d9-37f1f4ecff66
  • 攻击命令
    使用command_prompt运行!需要提升权限(例如root或管理员权限)
sc create win32times binPath= "cmd /c start c:T1036.004_NonExistingScript.ps1"sc qc win32times
  • 清理命令
sc delete win32times

原子测试#3-在Linux中使用prctl重命名/proc/pid/comm

运行一个C程序,该程序调用prctl(PR_SET_NAME)将/proc/pid/comm的值修改为“totally_legit”。这会在简单的“ps”命令列出的进程名中显示出来。

  • 支持的平台
    Linux
  • 自动生成的GUID
    f0e3aaea-5cd9-4db6-a077-631dd19b27a8
  • 输入参数
名称
描述
类型
默认值
exe_path
输出二进制文件路径
路径
/tmp/T1036_004_prctl_rename
  • 攻击命令
    使用sh运行!
#{exe_path} & psTMP=`ps | grep totally_legit`if [ -z "${TMP}" ] ; then echo "renamed process NOT FOUND in process list" && exit 1; fiexit 0
  • 清理命令
rm -f #{exe_path}
  • 依赖项
    使用sh运行!
  • 描述
    系统上必须存在#{exe_path}。
  • 检查先决条件命令
stat #{exe_path}
  • 获取先决条件命令
cc -o #{exe_path} PathToAtomicsFolder/T1036.004/src/prctl_rename.c

原子测试#4-使用绑定挂载隐藏恶意进程

创建一个恶意进程,并通过绑定挂载到良性进程的/proc文件系统来隐藏它。

  • 支持的平台
    Linux
  • 自动生成的GUID
    ad4b73c2-d6e2-4d8b-9868-4c6f55906e01
  • 攻击命令
    使用sh运行!需要提升权限(例如root或管理员权限)
eval '(while true; do :; done) &'echo $! > /tmp/evil_pid.txtrandom_kernel_pid=$(ps -ef | grep "[.*]" | awk '{print $2}' | shuf -n 1)sudo mount -B /proc/$random_kernel_pid /proc/$(cat /tmp/evil_pid.txt)

这段代码是一段恶意脚本,它的主要目的是通过挂载 /proc 文件系统下的内核进程信息到一个无限循环的用户进程上,来伪装该用户进程,以达到隐藏或干扰系统监控的目的。下面来详细分析代码的各个部分:

1. 创建无限循环的后台进程

eval '(while true; do :; done) &'
  • while true; do :; done
    这是一个无限循环,: 是一个空命令,它不执行任何操作,只是返回成功状态。这个循环会一直执行,直到被手动终止。实际使用时可将该段代码修改为shellcode或其他想要执行的代码
  • &
    将这个无限循环的命令放到后台执行,这样脚本可以继续执行后续的命令,而不需要等待这个循环结束。
  • eval
    eval 命令会将其后面的字符串作为 shell 命令进行执行。

2. 保存后台进程的 PID

echo $! > /tmp/evil_pid.txt
  • $!
    在 shell 中,$! 代表上一个在后台执行的进程的进程 ID(PID)。
  • echo $! > /tmp/evil_pid.txt
    将上一步创建的无限循环后台进程的 PID 写入到 /tmp/evil_pid.txt 文件中。

3. 随机选择一个内核进程的 PID

random_kernel_pid=$(ps -ef | grep "[.*]" | awk '{print $2}' | shuf -n 1)
  • ps -ef
    列出系统中所有进程的详细信息,包括进程的用户、PID、父进程 ID、启动时间等。
  • grep "[.*]"
    过滤出那些进程名被方括号 [] 包裹的进程。在 Linux 系统中,方括号包裹的进程名通常表示内核线程。
  • awk '{print $2}'
    从 grep 过滤后的结果中提取出第二列,也就是进程的 PID。
  • shuf -n 1
    从提取出的所有内核线程的 PID 中随机选择一个。
  • random_kernel_pid=$(...)
    将随机选择的内核线程的 PID 赋值给变量 random_kernel_pid

4. 挂载内核进程信息到用户进程

sudo mount -B /proc/$random_kernel_pid /proc/$(cat /tmp/evil_pid.txt)
  • sudo
    以超级用户权限执行后续的命令,因为挂载操作通常需要 root 权限。
  • mount -B
    -B 是 --bind 的缩写,mount --bind 命令用于将一个文件或目录挂载到另一个位置,实际上是创建一个指向源文件或目录的硬链接。
  • /proc/$random_kernel_pid
    源挂载点,即随机选择的内核线程的 /proc 目录信息。
  • /proc/$(cat /tmp/evil_pid.txt)
    目标挂载点,即之前创建的无限循环用户进程的 /proc 目录。

通过这一步操作,用户进程的 /proc 目录信息会被替换为内核线程的 /proc 目录信息,这样在系统监控工具(如 pstop 等)中查看该用户进程时,就会显示出内核线程的信息,从而达到伪装和隐藏用户进程的目的。

  • 清理命令
kill $(cat /tmp/evil_pid.txt) || echo "Failed to kill PID $evil_pid"rm /tmp/evil_pid.txt

02

T1036.005-伪装:匹配合法名称或位置

来自ATT&CK的描述

攻击者在命名或放置恶意文件及资源时,可能会选择与合法文件或资源的名称、位置完全相同,或者进行近似模仿。他们这样做是为了逃避防御机制的检测和监控。常见手段包括将可执行文件放置在普遍受信任的目录中(例如System32目录),或者赋予其合法且受信任程序的名称(例如svchost.exe )。在容器化环境中,攻击者也可能会在命名空间内创建资源,使其命名规则与容器Pod或集群的命名规范相匹配。此外,所赋予的文件或容器镜像名称可能会与合法程序或镜像极为相似,也可能看似无害。

攻击者还可能会使用他们试图模仿的文件的相同图标。

原子测试

  • 原子测试#1-从伪装成当前父目录的目录执行进程
  • 原子测试#2-伪装成内置系统可执行文件

原子测试#1-从伪装成当前父目录的目录执行进程

从伪装成当前父目录(使用...而非正常的.. )的目录中创建并执行一个进程。

  • 支持的平台
    macOS、Linux
  • 自动生成的GUID
    812c3ab8-94b0-4698-a9bf-9420af23ce24
  • 输入参数
名称
描述
类型
默认值
test_message
要输出到屏幕的测试消息
字符串
Hello from the Atomic Red Team test T1036.005#1
  • 攻击命令
    使用sh运行!
mkdir $HOME/...cp $(which sh) $HOME/...$HOME/.../sh -c "echo #{test_message}"
  • 清理命令
rm -f $HOME/.../shrmdir $HOME/.../

原子测试#2-伪装成内置系统可执行文件

启动一个试图伪装成合法可执行文件的程序。

  • 支持的平台
    Windows
  • 自动生成的GUID
    35eb8d16-9820-4423-a2a1-90c4f5edd9ca
  • 输入参数
名称
描述
类型
默认值
executable_filepath
生成的可执行文件放置和执行的文件路径。文件名应是内置系统工具的名称。
字符串
$Env:windirTempsvchost.exe
  • 攻击命令
    使用powershell运行! 需要注意的是,此测试需要管理员权限或具备#{executable_filepath}目录的写入权限。
$executablePath = "/path/to/TestDemo.exe"Add-Type -TypeDefinition @'public class Test {    public static void Main(string[] args) {        //实际使用时将以下代码替换为shellcode         System.Console.WriteLine("tweet, tweet");        //以下代码仅为了方便演示         System.Console.WriteLine("Press any key to exit...");        System.Console.ReadKey();    }}//执行以下命令后会在$executablePath路径下生成TestDemo.exe文件 '@ -OutputAssembly $executablePathStart-Process -FilePath $executablePath
  • 清理命令
Remove-Item -Path "#{executable_filepath}" -ErrorAction Ignore

原文始发于微信公众号(网空安全手札):T1036-伪装(二)

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

发表评论

匿名网友 填写信息