首页
社区
课程
招聘
[原创]纯字母shellcode揭秘
发表于: 2010-5-17 10:40 19242

[原创]纯字母shellcode揭秘

2010-5-17 10:40
19242
for (int i = 0;i < codeLen; i++)
	{
		low_al = ((byte *)decodescEnd)[i] & 0x0f;
		hi_ah = (((byte *)decodescEnd)[i] & 0xf0) >> 4;
		if (low_al > 0x8)
		{
			newscBuff[decodeLen+2*i + 1] = 0x40 + low_al;
		}
		else
		{
			newscBuff[decodeLen+2*i + 1] = 0x60 + low_al;
		}
		if (hi_ah > 0x8)
		{
			newscBuff[decodeLen+2*i] = 0x60 + hi_ah;
		} 
		else
		{
			newscBuff[decodeLen+2*i] = 0x40 + hi_ah;
		}
	}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (14)
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
应该是个音乐文件吧。。。。
2010-5-17 11:22
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
3
似乎是老外写过一个这样的引擎,灰常强大~~普通的shellcode经过编码都可以变成纯字母数字的,这个过程不难,关键是解码部分写成纯字母的需要很强的功力~~
2010-5-17 11:25
0
雪    币: 24
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
http://skypher.com/wiki/index.php/Hacking/Shellcode/Alphanumeric/ALPHA2

应用还算满广的,国内还有一个国人的优化版本,找了找不知道放哪了
2010-5-17 11:29
0
雪    币: 3171
活跃值: (76)
能力值: (RANK:250 )
在线值:
发帖
回帖
粉丝
5
嗯的确是这样的,不过现在的杀软 杀shellcode的少了,而且实际编写shellcode的时候也可以调用一些脚本语言本身的函数来实现编码。
2010-5-17 11:54
0
雪    币: 245
活跃值: (93)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
6
这样主要是为了避开\0截断吧.........
2010-5-17 12:56
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
7
如果只是避开\0的话,完全不用这么麻烦~~
主要是某些情况下对shellcode确实有特殊要求,比如文件路径超长引起的溢出,在构造shellcode时就必须考虑shellcode中的字符是不是符合文件路径中允许的那些字符,这时候就需要纯字母数字的shellcode了~~
还有些情况更复杂,防\0截断已经是最最简单的了。。。
2010-5-17 13:11
0
雪    币: 284
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
这个有意思,学习了
2010-5-17 15:01
0
雪    币: 1491
活跃值: (985)
能力值: (RANK:860 )
在线值:
发帖
回帖
粉丝
9
黑防 在07年的一份杂志上面有介绍 纯字母数字的shellcode是如何实现的
应用方面当然是过杀软或者规避特殊字符
2010-5-17 17:04
0
雪    币: 124
活跃值: (43)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
en  学习了 不错的一篇文章
2010-5-17 17:11
0
雪    币: 3171
活跃值: (76)
能力值: (RANK:250 )
在线值:
发帖
回帖
粉丝
11
刚刚翻了翻,终于找到那篇文章了,还好,我理解的和那篇文章中的方法本质上是相同的,那篇文章中的编码方式就是“base16”。。。。
这种方式在JavaScript中编码shellcode很有用~
2010-5-17 23:40
0
雪    币: 722
活跃值: (123)
能力值: ( LV12,RANK:300 )
在线值:
发帖
回帖
粉丝
12
一般就是用alpha2,这样加密后的shellcode内容(前面是解密代码,后面是加密数据)就只包含纯字母数字,至于原因,7楼已经说了,就是有一些漏洞如ActiveX插件的函数输入文件名超长引起的缓冲区溢出,有时需要作为输入参数内容一部分的shellcode中的字符符合文件名路径的要求,如07年时的Realplayer漏洞,是其插件的Import函数的缓冲区溢出,shellcode是作为输入的文件名路径的一部分加入其中,并利用覆盖SEH地址进行触发,在这种情况下就必须采用alpha2加密。
2010-5-18 01:05
0
雪    币: 242
活跃值: (14)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
只不过就是baseN的转换而已,看标题还以为是什么UFO

只可惜,过于追求“NB”,导致了此类SHELLCODE某项指标太突出了,比较容易检测。
2010-5-18 03:32
0
雪    币: 722
活跃值: (123)
能力值: ( LV12,RANK:300 )
在线值:
发帖
回帖
粉丝
14
http://bbs.pediy.com/showthread.php?t=113227
07年Realplayer漏洞的那个纯字符shellcode的调试,我详细搞了一遍,那个shellcode连解码引擎都是纯字母数字的,希望对进一步理解这方面的编写技巧有帮助。
2010-5-18 07:00
0
雪    币: 213
活跃值: (147)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
这方法在js的加密里用的很多
2010-5-18 10:39
0
游客
登录 | 注册 方可回帖
返回
//