如何对嵌入式设备进行漏洞利用_第1页
如何对嵌入式设备进行漏洞利用_第2页
如何对嵌入式设备进行漏洞利用_第3页
如何对嵌入式设备进行漏洞利用_第4页
如何对嵌入式设备进行漏洞利用_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第第页如何对嵌入式设备进行漏洞利用过去的几个月我一直在周游以指导人们如何对(嵌入式)设备进行漏洞利用,单单幻灯片已经不足以承载足够的信息,所以我将所有的都写下来以便与知识的消化。接下来的内容是第一部分,介绍了一些嵌入式设备端的软件。

我决定首先介绍软件因为很多漏洞都发生在软件端,从二进制可执行程序到驱动程序。第二部分会介绍(硬件)层,教授JTAG是如何工作的,如何利用修改硬件绕过密码保护或提取可入侵目标设备的机密信息。

目录

1使用Binwalk提取固件

2学习目标设备的(汇编)

3GPL

4漏洞利用

5DV(RF)v0.3socket_bof解决方案

6引用参考

1使用Binwalk提取固件

当你能够得到你有的嵌入式设备的二进制固件的时候,或许你想看看里面有什么。幸运的是有个开源的工具Binwalk,可分析目标的二进制文件中的Mag(ic)by(te)s,看这里。

为了更加直观的表现,这里使用Binwalk提取DVRFv0.3

通过binwalk-efilename提取二进制文件的内容:

我们有一个简单的栈溢出漏洞了,目的是执行dat_shell函数。但我们分析ELF文件的时候可以看到如下:

Entrypointaddress:0x00400630

因为Payload中不能有NULL字符,于是得依靠部分覆盖来执行,因为是小端格式,我们可以覆盖最低的3个字节,最高位置NULL,在大端机不适用。

为了演示模拟环境的功能,我会编写payload并展示怎么找到模拟环境中加载库的地址。

gdb远程调试附加进程

可以看到CP置为了A8gA,可以算出偏移量为204,即$RA在208字节上,在这边我们只会覆盖4字节中的3字节。

再次尝试,使$RA寄存器为0x42424242

我们想要跳过修改$gp的指令,它会导致程序崩溃,我以我们跳转到0x0040095c

我们也可以打断点来确认是否跳转到了函数正确的偏移地址

所以构建ROP链的时候你所要做的就是替换libc的地址(可以通过cat/proc/[pid]/maps获得).你需要的是libc的基址。如果构造的ROP链在QEMU中可以正常运行那么99%可以在真实设备上运行。

5DVRFv0.3socket_bof解决方案

当设计DVRF项目的实验的时候,我想纳入我所见过的大部分的常见漏洞类型。最常见的是栈溢出漏洞,如果不熟悉汇编的话会有点挑战。

下面的漏洞利用代码花了大概8个小时,因为自己人在学MIPS汇编,这段代码是在QEMU上完成编写的。

因为栈上可执行,且库文件没有地址偏移,所以我们可以对ROP链进行硬编码,但是ROP的本质是将$SP的值想想一个可以调用的寄存器。我认为硬编码栈地址不够可靠,我更加喜欢使用偏移量来代替,下面是socket_bof的内存映射,

地址0x2ab3e000是libc可执行块的基址,当测试实际设备的时候,在QEMU上编写的exploit代码中,这是唯一需要更改的地方。

整个ROP链都是使用Radare2的/R功能来完成的,比如,我想要查找mmovet9,a1来作为ROP的最后一小部分,我们可以按照如下方式来寻找:

Note:一开始我是准备自己编写shellcode的,不过了解到了一个项目Bowcaster已经给出了。所以这边展示流程,我根据下面的C语言代码来进行模块化.

如果我们查看BowcasterReverse_TCP的shellcode,会发现上面的C代码和Bowcaster的Shellocde是一致的

首先设置Socket(syscallValue4183)

连接socket(syscallvalue4170)

调用dup2(syscallvalue4063)

执行sh(syscallvalue4011)

我们可以通过radare2反汇编C语言程序来验证syscall。

我们可以看到C中调用socket()函数就是syscall4183,其他的系统调用号也可以这样来进行查看。

注意shellcode在QEMU的用户模式下不是100%成功的,表现在于你会看到一个TCP的反向连接,但是不会弹出shell而是一段错误信息。而这段Shellocde在实际设备上能够正常运行。

更加简单的方式去分析运行中的是使用qira(QEMUInteractiveRuntimeAnalyse),下面的图片展示了Qira是如何在不需要断点的情况下分析二进制文件

qira_shellcode.jpg

基于web的Qira输出显示了所有的指令和系统调用

所以为了编写漏洞利用代码而重新造轮子是没有必要的,而设计自己的shellcode和shellcode的(编码器)则是进行漏洞

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论