您的位置:网站首页 > net源码 > 正文

如何使用runscripthelperexe绕过应用的白名单机制

类别:net源码 日期:2018-2-13 12:42:22 人气: 来源:

  在学习Specterops的PowerShell课程时,我在System32-runhelper.exe中发现了一个微软签名的PowerShell宿主进程。微软在Windows10 RS3中引入了这个程序,它的作用是从一个特定目录中读取并执行PowerShell代码。但是它执行PowerShell代码的方式也有相应的副作用,而我们就可以把它当作一种绕过受限语言模式(Constrained LanguageMode)的方法来使用了(例如绕过通用的应用程序白名单机制)。

  因此,该程序应该只能于运行%ProgramData%\Microsoft\Diagnosis\s目录中的脚本。默认配置下,标准用户是没有这个目录的写入权限的。而在理想情况下,我想要使用非用户的身份来绕过这种机制。因此,当runhelper.exe开始运行时,如果我有办法能够控制%ProgramData%中的内容,我就可以让该程序运行其他目录下的脚本了。但是现在,我们得先分析一下ProcessSuceCheck,看看它会执行什么:

  从代码的字面意思来看,ProcessSuceCheck方法所做的就是读取脚本内容并执行它。根据微软所制定的安全规则,对于运行了AppLocker或Device Guard(Windows Defeder)的系统来说,这个程序很可能被列于白名单之中,而这个进程所执行的任意PowerShell代码都可以在完整语言模式下运行。

  站在者的角度,我们需要控制%ProgramData%的内容并让其指向一个我们所能控制的目录。其实我们有很多方法来实现这一点,我第一反应想到的是在Win32_ProcessStartup类中设置变量属性,然后调用Win32_ProcessCreate。除此之外,WMI也提供了相关的远程调用,而且有一些WMI主机应用是不会被应用白名单策略屏蔽的。

  为了控制传递给runhelper.exe的变量,我们可以通过下面给出的命令来执行我们的Payload:

  为了证明我们同样能够在不使用PowerShell的情况下实现白名单绕过,下面给出一个使用Wbemtest.exe实现绕过的演示

  如果使用Device Guard的话,你可以通过向现存策略中整合下列规则来屏蔽代码【】:

  本文所介绍的技术可以利用已签名的应用程序来执行任何类型的代码,而这也给现有的应用程序白名单机制带来了不小的安全挑战。除此之外,这种技术也是者非常喜欢使用的,因为他们可以利用系统中受信任的应用来运行自己的恶意代码,因此微软是时候好好考虑怎么更新他们的应用白名单机制了。

  

0
0
0
0
0
0
0
0
下一篇:没有资料

相关阅读

网友评论 ()条 查看

姓名: 验证码: 看不清楚,换一个

推荐文章更多

热门图文更多

最新文章更多

关于联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助

CopyRight 2002-2012 技术支持 源码吧 FXT All Rights Reserved

赞助合作: