免杀执行任意shellcode + Bypass Applocker [ 一 ]

admin 2021年7月25日22:27:30评论228 views字数 4102阅读13分40秒阅读模式


免杀执行任意shellcode + Bypass Applocker [ 一 ]


0x01 本节重点快速预览

  • 先来简单了解下csc和InstallUtil是个什么东西 ?

  • 初步测试InstallUtil 能否完美bypass applocker

  • 尝试借助InstallUtil 免杀抓取目标系统管理员的明文密码或hash

  • 尝试借助InstallUtil 免杀弹回目标系统的原生cmd shell

  • 尝试借助InstallUtil 免杀执行任意shellcode

  • 关于实际利用中的一些相关注意事项

 

0x02 关于cscInstallUtil所在的默认系统路径位置,32和64的位路径会稍有不同 [ 注: 此后的所有操作将全部在装有最新版的360卫士(已优化到最好状态) + 杀毒(已把病毒库更新到最新,并开启了所有查杀引擎)套装的机器上进行]

C:WindowsMicrosoft.NETFrameworkv2.0.50727

C:WindowsMicrosoft.NETFramework64v2.0.50727

C:WindowsMicrosoft.NETFrameworkv4.0.30319

C:WindowsMicrosoft.NETFramework64v4.0.30319

 

0x03 简单了解csc和InstallUtil到底是个什么东西 ?

  • csc 简单来讲,其实就是个c# 的命令行编译工具,专门用来编译*.cs文件用的

  • installutil 微软官方给的解释是这样的,它允许您通过执行指定程序集中的安装程序组件来安装和卸载服务器资源,此工具通常和System.Configuration.Install命名空间中的类一起使用,暂且就简单把它理解成windows内置的一种命令行安装工具就行


0x04 首先,简单测试下InstallUtil能否完美bypass applocker[ 此处暂以bypass applocker执行powershell代码为例]

    既然是要用到applocker,那肯定要先把它用起来才行,过程很简单,首先,启动"Application Identity "服务,win + r 运行键入 secpol.msc 找到"本地安全策略" -> "应用程序控制策略" -> "applocker"-> "可执行策略" -> 右键点击 "创建默认规则",如下

免杀执行任意shellcode + Bypass Applocker [ 一 ]

免杀执行任意shellcode + Bypass Applocker [ 一 ]

免杀执行任意shellcode + Bypass Applocker [ 一 ]


    如下可知,默认的可执行规则,只允许其它用户执行"windows"和" Program Files"目录下的可执行文件,只有系统内建的"administrators"管理组中的用户才可以执行系统中的所有可执行文件

免杀执行任意shellcode + Bypass Applocker [ 一 ]


    接着,就自己来创建一条简单的执行规则,目的很明确,就想通过applocker禁止当前系统中的所有用户去执行powershell

免杀执行任意shellcode + Bypass Applocker [ 一 ]


    Ok,规则创建完以后,再来顺手简单测下,看它到底有没有生效,很明显,此时不管你是用管理用户还是普通用户,都已无正常执行powershell,也就说明刚刚上面的执行策略已经生效了

免杀执行任意shellcode + Bypass Applocker [ 一 ]

免杀执行任意shellcode + Bypass Applocker [ 一 ]


最后,就该来看下installutil实际的applocker bypass效果如何了,先用csc去编译InstallUtil-PowerShell.cs[其实,它实现的功能就相当于一个c#版的powershell]文件,注意,编译时务必要引用这个dll,而后再去用installutil安装执行psshell.exe即可,默认情况下installutil执行期间会记录日志文件到当前路径下,可以加上相应的选项,让它不要记录,如下

免杀执行任意shellcode + Bypass Applocker [ 一 ]


实际效果很明显,几乎算是完美的bypass applocker执行powershell了,不过需要注意的是,此处执行命令或者ps代码都会在一个子进程下,所以,在实战中,如果你是直接用弹回来的那个cmd shell这样去执行,很可能会接不到子进程的数据,所以,最好能找个机会直接登到对方的桌面里去搞[注意,这仅仅只是其中的一种方式,并不是唯一,虽然这么说但不一定就非得这么干才行],至于没有命令提示符的问题,自行去InstallUtil-PowerShell.cs文件中找到对应的代码段,随便在前面加个提示符就行,最后还需要说明的是,此操作是全程在360套装[卫士+杀毒]包裹下进行的,且过程中暂无任何反应

免杀执行任意shellcode + Bypass Applocker [ 一 ]


InstllUtil进程貌似只会在你执行命令期间才会出现

免杀执行任意shellcode + Bypass Applocker [ 一 ]


0x04 尝试借助InstallUtil免杀抓取目标系统管理员用户的明文密码或hash

    上面说完执行powershell,接着再来尝试抓hash,过程也比较简单,先在vs cmd下用sn工具随便生成一个snk秘钥文件[它主要是用来标识唯一程序集的,其实,用不用,问题都不大,怕冲突而已],这里的katz.cs其实就是一个事先加工好的c#版的mimikatz,具体操作如下

# sn -k c:installutil.snk

免杀执行任意shellcode + Bypass Applocker [ 一 ]


如下,当我们尝试抓取当前系统的明文密码时,360也没有任何提示或者报警

mimikatz # privilege::debug

mimikatz # sekurlsa::logonpasswords

免杀执行任意shellcode + Bypass Applocker [ 一 ]


0x05 尝试借助InstallUtil免杀弹回目标系统的原生cmd shell

同样,既是反弹shell,那肯定视线得有个回连的ip和端口[通常都是自己的vps],到SharpCat.cs[暂且可以把它理解成c#版的nc]文件中,把回连的ip和端口改成自己vps的,有时当其它的高级shellcode免杀自己实在搞不定,先用这种办法,临时性的把目标系统的cmd shell先弹到自己的vps上慢慢搞也是可以的

免杀执行任意shellcode + Bypass Applocker [ 一 ]


同样,先用csc编译SharpCat.cs,而后再用installutil安装执行

免杀执行任意shellcode + Bypass Applocker [ 一 ]


    如下,目标系统的cmd shell即被正常弹回,此期间,360套装仍无任何提示或者报毒,这里的中文乱码是正常的,暂时不用管它,并不影响正常的命令执行

# nc -lvvp 110

免杀执行任意shellcode + Bypass Applocker [ 一 ]


0x06 最后,这也可能是我们在实战中用的相对比较多的,尝试借助InstallUtil 免杀执行任意shellcode

    首先,我们就来看看如何利用installutil免杀弹回目标系统的beacon [其实,单单对于360来讲,有时不用installutil,大部分情况下也都是能直接能免杀弹回beacon的],ok废话不多说,咱们直接看具体操作,先用CobaltStrike生成64位的c# shellcode,具体如下

免杀执行任意shellcode + Bypass Applocker [ 一 ]

免杀执行任意shellcode + Bypass Applocker [ 一 ]


之后,再到InstallUtil-Shellcode.cs文件中去替换长度和shellcode

免杀执行任意shellcode + Bypass Applocker [ 一 ]


    依然是用csc编译InstallUtil-Shellcode.cs,编译时稍微注意下,平台选择64位,而后再继续用64位的installutil去安装执行即可

免杀执行任意shellcode + Bypass Applocker [ 一 ]


    随后,便会发现我们的beacon已被正常弹回,同样,在此期间,360套装仍然无任何反应,不妨顺手再试着做些敏感操作,比如,截屏,抓hash,键盘记录,getsystem...键盘记录和getsystem这种可能会被拦掉,但绝大部分功能都是可以正常使用的

免杀执行任意shellcode + Bypass Applocker [ 一 ]

免杀执行任意shellcode + Bypass Applocker [ 一 ]


    其次,就是如何免杀弹回目标系统的meterpreter,过程其实也都是类似的,先用msfvenom生成64位的 c# shellcode,如下

免杀执行任意shellcode + Bypass Applocker [ 一 ]

免杀执行任意shellcode + Bypass Applocker [ 一 ]


继续把 InstallUtil-Shellcode.cs文件中的shellcode和长度进行替换,如下

免杀执行任意shellcode + Bypass Applocker [ 一 ]


    用64位的csc去编译InstallUtil-Shellcode.cs,而后再用64位的installutil去安装执行

免杀执行任意shellcode + Bypass Applocker [ 一 ]


    如上图所示,正如我们预期的那样meterpreter被正常弹回,且此执行期间360全程无任何反应,接下来的事情,就是该按你自己的实际需求做一些后渗透的工作了,不过,像getsystem类似的操作,360还是会报毒的,好在即使它报毒了,但我们当前的shell依然不会掉

免杀执行任意shellcode + Bypass Applocker [ 一 ]


    可能你会觉得我的360没工作,其实,它一直都在正常工作,我们不妨直接用CobaltStrike随便生成个exe丢到系统中试下,如下,瞬间就杀了

免杀执行任意shellcode + Bypass Applocker [ 一 ]


    再来简单看下这种执行方式在nod32下的表现,很明显,只在编译期间就瞬间被秒了,至于其它的像 卡巴,趋势之类的就更不用说了...如果就直接这样用,存活的可能几乎为0

免杀执行任意shellcode + Bypass Applocker [ 一 ]


    关于文章中所用到的cs文件代码,现已推到自己的github上,觉得还不错的话,别忘了点 ☆ ,非常感谢 ^_^

https://github.com/klionsec/BypassAV-AllThings


一点小结

为了避免执行过程中出些兼容性问题,不管是自己的工具还是payload最好都按照和目标系统对应的位数及版本去编译,由于此处演示的目标系统是2008r2 64位的,所以,你看到的操作也几乎都是在64位下进行的,另外,需要特别说明的是,虽然,现在这些方式暂时还是免杀的,但保不齐,过几分钟,几个小时或者明天它很可能不再免杀了,这也都是再正常不过的事情,所以,大家大可不必太拘泥于某些死技巧,c# 还不错的弟兄,不妨尝试着按照上面的方式去自行免杀一些自己的常用工具,其实单就installutil来讲,能衍生出的用法还非常多,篇幅原因,此处就不细说了,以后等测好会继续更新上来,再次重申,本文旨在简单demo,传递基本思路,并不能从根源上去解决你实际渗透过程中遇到的所有免杀问题,废话就不多说了,欢迎弟兄们来密圈一起深入交流讨论 ^_^



注:  写文不易,公众号之外的转载请务必通过此公众号事先与作者本人联系并严格声明文章出处,非常感谢 !



另:  本公众号的所有文章仅作攻防研究学习之用,严禁私自用所学技术去从事一切未经合法授权的入侵攻击破坏活动,因此所产生的一切不良后果与本文作者及该公众号无关 



    更多更优质的精品原创实用技术干货分享,和众多资深apt及红队玩家一起深度无缝交流,欢迎微信扫码加入小密圈,另外,关于本文完整pdf原件现也已分享到自己密圈中,我们会在那里一直等你

免杀执行任意shellcode + Bypass Applocker [ 一 ]


    更多优质公开技术分享,欢迎关注个人公众号 "红队攻防揭秘",另,同时欢迎大家的无私 转发 , 打赏 , 点赞 与 留言, 非常感谢

免杀执行任意shellcode + Bypass Applocker [ 一 ]


本文始发于微信公众号(红队防线):免杀执行任意shellcode + Bypass Applocker [ 一 ]

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年7月25日22:27:30
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   免杀执行任意shellcode + Bypass Applocker [ 一 ]http://cn-sec.com/archives/346516.html

发表评论

匿名网友 填写信息