0x01 先来简单试想下这么几种情况
-
假设目前自己手里只有目标的一个Aspx的 webshell [ 非常低的正常web服务权限 ] ,在尝试把常规的exe,dll,ps1,bat,vbs payload丢到目标机器上去执行准备弹个shell回来慢慢搞时,刚上去就被对方AV秒了 [静态秒]
-
由于诸多原因,直接在webshell里操作的话,确实不大方便,想尝试免杀弹回一个功能更强的beacon [ 实战中可能会用的相对更多 ] 或者meterpreter来用,以此作为中继跳板继续对目标内网进行渗透
-
相比传统的直接传可执行文件弹shell的方式,借助aspx来执行shellcode稍微更隐蔽一些,且暂时免杀效果相对较好
-
自己不熟练免杀,又不想因此而耽误自己的渗透进度,等等诸如此类的情况...
0x02 借script嵌入c# shellocde 实现简单免杀反弹beacon
了解完容易遇到的一些基本问题之后,接着,就来看看具体该如何去实现,首先,启动CobatStrike随便创建一个http的监听器,再利用该监听去生成一段C#类型的shellocde,如下
而后,拿着上面生成好的shellocde直接对如下Readme.aspx文件 [ 其实还是个webshell,只是功能特殊 ] 代码中的shellocde进行替换,此处务必要注意下格式,不然后续可能会造成执行出错导致shell无法反弹,记住,只需替换shellcode部分即可,公众号编辑器的代码格式比较乱,为方便大家看,已事先推到自己github上了,具体的大家可以直接去那里看 https://github.com/klionsec/BypassAV-AllThings/
最后,再把Readme.aspx文件想办法传到指定的目标站点目录下,回到本地用浏览器访问Readme.aspx 所在url,即可成功触发shellocde执行,留心的朋友可能也都看到了,在访问该url以后,浏览器会一直处于阻塞状态
不出意外的情况下,此时,我们的 beacon shell应该已被正常弹回 [ 只是上线的速度感觉上可能会比平时稍慢,看到目标机器上线能执行命令正常回显以后,此时浏览器其实就可以关掉了,并不影响shell的后续执行 [ 也不是说完全不影响,要保持有连续的请求响应数据才行,猜测可能是http长连接的原因吧 ] ,因为已经驻留在内存里了 [ 更确切的说应该是驻留在当前站点的应用程序池进程的那个连接里了 ] ,只要目标机器不重启web程序池,服务或系统,shell应该都不会断],只不过,回来的这个shell权限确实比较低,正常的普通"web服务"权限,很显然,既然如此在当前shell中涉及到一些系统特权的操作肯定是做不了了,但即使是这样,也并不妨碍我们执行大量的无害命令来搜集当前机器信息并以此继续对目标内网进行渗透
既然权限比较低,此处我们不妨再尝试下提权,图方便,就直接用ms14-058来快速简单演示下提权效果 [ 注意,此处仅仅只是为了演示实际效果,告诉大家可以这么干,但实战中不到非常特殊恶劣的情况下,不建议一上去不管三七二十一就试着提权,尤其对windows而言 ] ,提权对于任何一个负责任的AV来讲,都是极度敏感的操作,本来可能是不杀的,但很有可能因为自己这样冒失的操作,而导致目标AV报警拦截传到云端,甚至造成现有权限丢失,个人建议,在能满足自己后续渗透的条件下,实在不建议一上去就想着提权,条条大路通罗马,想必大家也都听过,还有一种更明智的战术叫 "迂回",先把对方尽可能摸清了,再针对性的搞,往往会跟毙命,因为是本地的测试环境,此处的目标server上几乎没打过任何补丁,也没有装什么av
此处的提权exp我已经通过cna脚本事先加载到CobaltStrike中了,所以,这里才可以直接到beacon shell下去用,当exp执行成功后,就会弹回一个新的system权限的beacon shell,如下,当然,如果你想更隐蔽点,也可以把它直接弹到其它的团队服务器上
此时,再去执行一些特权操作就没什么问题了,比如,抓抓hash...
指定系统进程截屏,等等...这一切都是在非常理想的环境下的效果,而我们在实战中遇到的困难,远非这么简单,任何一个特权操作,都很可能会直接触发对方各类防护报警,而我们也很可能会因此而暴露,当然啦,更具体的事情,也不是一篇短短的文章就能说明白的
以下是实际的截图效果,至此,关于常规的利用aspx 免杀执行shellcode来反弹beacon就说完了,下面就去看看如何弹meterpreter
0x03 借script嵌入c# shellocde实现简单免杀反弹meterpreter
首先,依然是先准备好 c# 的 shellcode
而后,继续将Readme.aspx代码中的shellcode部分进行替换即可
最后,依然是将Readme.aspx这个文件传到指定的目标站点目录下,再回到本地用浏览器访问 Readme.aspx 所在url 即可触发shellocde在目标机器上执行,需要特别注意下的是,此时的浏览器同样会跟上面一样,访问之后一直处于阻塞状态,但不同的是,此处的这个连接不能断,不然meterpreter马上会掉,至于后续的提权利用就不多说了,因为实战中想直接用msf内置的exp进行提权几乎是不大现实的,可能性也几乎没有,不能说全部,起码绝大部分AV对于msf的各类exp模块,都会直接拦截报警,因为在真实环境中,我们是很少有机会能顺畅用上msf的,此处也只是顺带说明可以这么干,但不一定非要这么干,相信有经验的弟兄,应该都能理解我说的意思,此处payload协议,建议就用常规的tcp或者http
0x04 实际免杀测试效果,如下 [ 此处暂以最新的pc版的 Avast 为例进行测试 ]
此处我已事先将avast的病毒库更新到最新,并将查杀模式全部开启
如下是静态扫描结果,未见任何异常,也无任何报警提示,更没被杀
最后,访问执行Readme.aspx beacon被正常弹回,且能正常执行一些没涉及到系统特权操作的无害指令[ 实际上自己直接进行了提权操作,并没拦截,也可能是因为avast "比较烂" 的原因吧 ],如下, avast并没能很好的识别出内存中的shellocode
可能你会以为我很可能是装了个假的avast,其实,开始我也是这么想的,然后就用msfvenom还特意多加了几次编码生成了个payload去测试,很显然,它一直都在正常工作,如下
附几张实际免杀效果的动图,正常上线
特权操作 [提权]
特权及敏感操作 [抓hash 及 常规键盘记录],可以看到几乎全程无感
一点小结
虽然回来的shell权限确实比较低,但差不多应该也已经能支撑我们进行一些些常规的内网渗透动作 [ 不敢保证还能免杀几分钟 ],至于免杀的更多具体细节原理,就只能留给更专业的朋友去分析了,因为自己更在意的可能还是它在实际渗透中的利用价值,自己推测大概是因为shellcode被包裹web服务进程中从而变得难以被辨认吧,实际也测过Nod32和卡巴,nod32免杀虽然过了,但内置的ids却没有过掉,所以beacon一直也没能出来,卡巴就有些狠了,几乎是在执行瞬间被秒掉,反弹就先不要想了,至于国内的360以及其它的那些乱七八糟的AV就不提了,几乎是随便弹的[无人之境的状态],至于一些更专业的厂商,比如,趋势,火眼...就留给大家自己去实际测了,当然啦,基于此类脚本实现的免杀方式还有非常非常多,远非于此,大家可以根据实际需求,灵活适应变通扩展,尽量让你的利用方式变得难以被捕捉,即使老东西一样能用出新花样,免杀也许只是我们平时渗透中的一个非常小的环节而已,来日方长,后续我会再慢慢跟大家提及更多的内容,篇幅原因,今天就先简单到这儿吧,希望能对您稍微有用,也期待您的反馈交流
第一次正儿八经的用公众号自带编辑器写文章,希望大家能喜欢
更多大批高质量精品实用干货技术分享及本文完整 pdf 获取,欢迎微信扫码加入密圈
亦可关注个人公众号,同时也欢迎朋友们的无私转发与分享,感谢
本文始发于微信公众号(红队防线):免杀执行shellcode [Aspx]
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论