首页
社区
课程
招聘
[旧帖] [翻译]一篇关于如何编写ARM系统下只含有字母数字的shellcode的文章 0.00雪花
2011-8-19 14:32 3752

[旧帖] [翻译]一篇关于如何编写ARM系统下只含有字母数字的shellcode的文章 0.00雪花

2011-8-19 14:32
3752
原文发表在
http://www.phrack.org/issues.html?issue=66&id=12#article
2009年正式发布

这篇文章主要讲了在ARM体系结构下如何编写只含有字母数字的shellcode。
虽然用arm汇编编写shellcode很难,但是通过一些现成可用的指令,自修改代码技术和代码缓存清空的技术,基本上所有程序都可以修改为只含字母数字的代码。作者最终得出arm下只含字母数字的shellcode是turing完备的结论。

第一次翻译,好累,翻译不好的地方请大家原谅,欢迎修正~

只含字母数字的ARM体系ShellCode           -------------------rodent翻译

目录
0 - 介绍
1 - ARM体系结构
  1.0 - ARM处理器
  1.1 - 协处理器
  1.2 - 寻址模式
  1.3 - 条件执行
  1.4 - 指令示例
  1.5 - Thumb指令集

2 - 只含字母数字的Shellcode
  2.0 - 字母数字bit特征
  2.1 - 寻址模式
  2.2 - 条件执行
  2.3 - 指令列表
  2.4 - 从一个寄存器里得到已知值
  2.5 - 写入寄存器R0-R2
  2.6 - 自修改代码
  2.7 - 指令缓存
  2.8 - 进入Thumb模式
  2.9 - 进入ARM模式

3 - 结论
4 - 致谢
5 - 参考文献
A - Shellcode 附录
  A.0 - 可写内存
  A.1 - ShellCode样例
  A.2 - 最后生成的字节

--[ 0.- 介绍
随着移动设备的迅猛发展,ARM处理器世界上最为广泛流传的处理器核心之一。ARM处理器在电源使用和处理能力之间有很好的权衡,使得它成为移动和嵌入式设备非常优秀的候选方案。大部分移动电话和个人掌上电脑(PDA)都使用ARM处理器。但是也只是最近,这些设备才发展到强大到能允许用户连接到internet上各种不同的服务,以我们通常的桌面电脑上熟知的方式来分享信息。

不幸的是,这引入了很多安全风险。

像PC系统一样,ARM本地应用程序很容易受到诸如缓冲区溢出和其他对输入验证不恰当漏洞的发掘利用等的攻击。一直以来,因为只有功能全面的桌面电脑系统才能连接到internet上,使用通用普适的方法传播信息,因而大部分的攻击都专注于主流的桌面电脑处理器上,也就是x86处理器。

鉴于基于ARM的设备的连接性的增长和对这些设备的潜在的不正当使用(比如,让一个被侵入的手机呼叫一个商业电话号码),将来对这些设备的攻击将远比现在普遍。

Shellcode必须通过一个或多个过滤系统才能到达易受攻击的缓冲区是入侵编写者所遇到的典型障碍。一个过滤方法通常会对输入作简单的检查,比如严格检查输入是否和一个预定义好的特殊的模式匹配。打个比方,一个通常使用的正则表达式是[a-zA-Z0-9](或许还会加上空格" ")。入侵监测系统也通常会增加更多的检查来发现特殊模式的操作码序列,以达到侦测攻击的目的。

出于普及知识的目的,我们在这篇文章里讲述如何编写ARM系统上只含有字母数字的shellcode。这很重要,因为字母数字串可以通过更多的有效性检查,而且通常比非字母数字的shellcode更能在数据变换(比如从一种编码方式变换成另外一种)后保持原状。在使用定长4字节指令的精简指令集系统上编写只含有字母数字的shellcode可不是轻而易举的。

当我们讨论字节中的bit时,我们会使用如下的表示:在我们的讨论中大端bit是bit 7,小端比特是bit 0。一条指令的第一个字节是从bit 31到bit 24,最后一个字节是从bit 7到bit 0.

[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

上传的附件:
收藏
点赞5
打赏
分享
最新回复 (13)
雪    币: 343
活跃值: (40)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
yarpee 1 2011-8-19 14:50
2
0
收藏先,等遇到ARM了再来学习下。
雪    币: 4581
活跃值: (942)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
b23526 2011-8-19 15:04
3
0
不错不错,收了
雪    币: 1015
活跃值: (235)
能力值: ( LV12,RANK:440 )
在线值:
发帖
回帖
粉丝
loongzyd 10 2011-8-19 15:40
4
0
楼主辛苦了,提升为"优秀"帖鼓励,希望以后能多多发表更多优秀的作品,邀请码过几天统一发放,请稍等
雪    币: 81
活跃值: (56)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
rodent 2011-8-19 17:49
5
0
thx~!
雪    币: 25
活跃值: (84)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
tihty 2 2011-8-20 02:12
6
0
很想学些arm,可是还没入门,求学习材料
雪    币: 174
活跃值: (26)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
龙组 1 2011-8-20 08:32
7
0
arm啊,我不懂,真可惜.
雪    币: 860
活跃值: (329)
能力值: ( LV9,RANK:165 )
在线值:
发帖
回帖
粉丝
futosky 3 2011-8-20 08:51
8
0
刚买了一个ARM11开发板
雪    币: 81
活跃值: (56)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
rodent 2011-8-20 09:14
9
0
如果对IA32已经有不错的了解了,我个人觉得直接看看arm参考手册就可以
www.scss.tcd.ie/~waldroj/3d1/arm_arm.pdf
不过这个是英文的
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wasfer 2011-8-20 10:15
10
0
弱弱的问一句ARM是什么??
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
riym 2011-8-21 10:56
11
0
ARM是最新的.只是看不懂啊
雪    币: 220
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
广海混沌 2011-8-23 10:28
12
0
嗯 得看一看
雪    币: 110
活跃值: (60)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
feixhan 2011-8-23 13:18
13
0
拿走了,谢谢楼主。
雪    币: 165
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
JansZhang 2011-8-27 10:02
14
0
不错吧,算是ARM缓冲区溢出扫盲了
游客
登录 | 注册 方可回帖
返回