IoT
文章平均质量分 83
物联网相关
Elwood Ying
这个作者很懒,什么都没留下…
展开
-
反向tcp shell编写
本次实验我们来尝试学习编写反向tcp连接的shellcode。先用c语言实现,实现的步骤很简单源码在re.c中这里存在很多系统调用,我们依次看下来。分别是socket,connect,dup2,execve。这里需要注意的地方就是socket的返回值会被connect和dup2调用。程序建立socket以后会连接远程主机,远程主机的信息我们都放在了serv_addr结构体中。连接成功之后会返回套接字文件描述符,可以使得用户与套接字接口进行通信。因为我们写的反向tcp的程序希望实现交互功能,所以原创 2021-05-27 13:58:40 · 768 阅读 · 0 评论 -
MIPS下shellcode编写二
在shellcode中我们常会看到execve系统调用,它常用来运行/bin/sh之类的应用程序。我们来execve的原型execve()用来执行参数filename字符串所代表的文件路径,第二个参数是利用指针数组来传递给执行文件,并且需要以空指针(NULL)结束,最后一个参数则为传递给执行文件的新环境变量数组。这里为了方便,直接将后面两个参数置0简单的看看c程序里execve的使用代码在exe.c编译运行可以看到execve函数执行了/bin/sh生成了一个shell用汇编来写同原创 2021-05-27 13:51:42 · 583 阅读 · 1 评论 -
MIPS下shellcode编写
这次实验我们来学习mips下shellcode的编写。我们知道linux下实现系统调用时利用了x86体系结构下的软件中断,也就是调用int 0x80这条指令,这是在x86下编写shellcode的办法。前面的知识中我们学习到mips中没有这个中断,我们用以代替的是使用syscall指令进行系统调用。Syscall的调用方法为:在调用之前,0x80这条指令,这是在x86下编写shellcode的办法。前面的知识中我们学习到mips中没有这个中断,我们用以代替的是使用syscall指令进行系统调用。Sysc原创 2021-05-27 13:47:33 · 631 阅读 · 0 评论 -
华为HG532远程命令执行漏洞
根据check point的报告(https://research.checkpoint.com/good-zero-day-skiddie/)该远程命令执行漏洞的漏洞点位于 UPnP 服务中。先看看报告的关键信息分析upnp描述信息后,发现该设备支持名为DeviceUpgrade的一种服务类型设备可以通过这种服务更新固件,具体过程是向“/ctrlt/DeviceUpgrade_1”这个地址提交请求,请求中包含NewStatusURL及NewDownloadURL两个元素。远程管理员可以通过该漏洞在原创 2021-05-27 10:00:51 · 819 阅读 · 0 评论 -
tplinksr20远程命令执行漏洞
注:如果qemu如下启动不成功,可以换种方式:sudo tunctl -t tap0 -u whoami # 为了与 QEMU 虚拟机通信,添加一个虚拟网卡sudo ifconfig tap0 10.10.10.1/24 # 为添加的虚拟网卡配置 IP 地址qemu-system-arm -M vexpress-a9 -kernel vmlinuz-3.2.0-4-vexpress -initrd initrd.img-3.2.0-4-vexpress -drive if=sd,file=debia原创 2021-05-27 09:56:57 · 451 阅读 · 0 评论 -
解密固件实践及firmwalker脚本利用
1.固件固件:Firmware. 就是写入EROM(可擦写只读存储器)或者EEPROM(电可擦写可编程只读存储器)中的程序。固件是只设备内部保存的设备“驱动程序”,通过固件,操作系统才能按照标准的设备驱动实现特定机器的运行运作,比如光驱,刻录机等都有内部固件。固件是担任着一个系统最基础最底层工作的软件。而在硬件设备中,固件就是硬件设备的灵魂,因为一些硬件设备除了固件以外没有其他软件组成,因此固件也就决定这硬件设备的功能以及性能。2.固件升级的一种方案随着物联网安全安全越来越重视,作为万物互联的核心原创 2021-05-27 09:51:22 · 1902 阅读 · 1 评论 -
分析固件解密流程
本次实验中我们首先在官网上根据体积、日期等判断固件特点,结合binwalk确定要分析的对象,之后将一步步通过IDA的动态调试学习固件解密的流程。之前的实验中我们学习了通过过渡版本的固件的解密程序来解密新版本固件,本次实验我们再次进行另一款路由器固件的测试,也是使用相同的办法,不同的是,本实验的重点,在于分析解密程序的执行流程,掌握使用ida进行远程动态调试的方法。根据版本号,我们知道1.20是最新的,根据体积,我们判断1.10或者1.12可能是过渡版本。经过测试1.10是过渡版本。接下来我们以这两个版原创 2021-05-26 18:02:41 · 1848 阅读 · 1 评论 -
dir-859远程命令执行漏洞
将本次给出的文件同样的办法解压,提取后得到bin文件,将其放入firmayne根目录输入下图的命令提取文件系统,-b后面指定的内容可以随意,-nk后面是bin文件的名称然后获取架构信息并保存在数据库中,注意上图的tag为4,大家在操作时要注意自己机器上上条命令的结果制作镜像文件生成文件系统自动生成配置,仿真网卡信息运行固件打开浏览器(可能需要稍等一会儿)至此说明环境模拟成功。接下来切换到win上,使用ghidra进行分析注意ghidra需要的是jdk11,下载后默认安装即可原创 2021-05-26 17:59:27 · 655 阅读 · 0 评论 -
Dir-645任意文件读取漏洞
本次实验分析及复现的漏洞来自于2017年Hack2Win 黑客竞赛,举办方在公网上提供 D-Link 850L 路由器作为攻击目标,竞赛持续了两个月,最终确定了3个漏洞:Remote Command Execution via WAN and LANRemote Unauthenticated Information Disclosure via WAN and LANUnauthorized Remote Code Execution as root via LAN第三个漏洞受限于环境无法复现,本原创 2021-05-26 17:56:22 · 554 阅读 · 0 评论 -
DIR-645组合拳漏洞
本次实验分析及复现的漏洞来自于2017年Hack2Win 黑客竞赛,举办方在公网上提供 D-Link 850L 路由器作为攻击目标,竞赛持续了两个月,最终确定了3个漏洞:Remote Command Execution via WAN and LANRemote Unauthenticated Information Disclosure via WAN and LANUnauthorized Remote Code Execution as root via LAN第三个漏洞受限于环境无法复现,本原创 2021-05-26 17:54:28 · 601 阅读 · 4 评论 -
DIR-645远程命令执行漏洞
首先我们分析网上公开的exp确定漏洞相关组件及payload,之后通过IDA分析研究漏洞是如何触发的,最后在attifyos中进行模拟,验证漏洞。本次实验的漏洞是某品牌路由器service.cgi远程命令执行漏洞。Packet storm有exp:https://packetstormsecurity.com/files/145859/dlinkroutersservice-exec.txt看看exp中的关键信息大概知道需要访问service.cgi,post请求,payload中有event=c原创 2021-05-26 17:52:18 · 987 阅读 · 0 评论 -
TEW-654TR注入漏洞
访问路由器后台登录的web界面抓包如下可以看到html登录页面会将我们提交的用户名密码等提交给my_cgi.cgi接下来我们从官网下载该路由器的固件下过来是一个zip文件将其解压,然后使用Binwalk对bin文件提取进入提取后的文件夹可以看到成功提取出了文件系统搜索前面找到的cgi文件的位置然后载入ida先进行静态分析根据burp中看到的request关键字,在strings window进行搜索双击第一项然后x查看交叉引用点击ok进入了main函数看到在其之前会调原创 2021-05-25 09:52:58 · 198 阅读 · 1 评论 -
MIPS基础
我们首先学习一些基础的理论知识,然后编写几个demo配合IDA的调试进行mips的传参特点、叶子函数等。Mips相关知识非常多,接下来要学习的知识都是与我们之后分析路由器相关安全研究联系紧密的知识点。在路由器中,经常使用的mips架构为mips32.mips32结构是一种基于固定长度的定期编码指令集,采用load/store数据模型。寄存器:我们知道mips属于RISC,而RISC一个显著特点就是大量使用寄存器。因为寄存器的存取可以在一个时钟周期内完成,同时简化了寻址方式。所以mips32的指令中除原创 2021-05-25 09:45:48 · 5616 阅读 · 0 评论 -
MIPS架构下缓冲区溢出实战(GDB版)
文件下载地址:https://github.com/praetorian-code/DVRF下载来后解压缩,发现有两个文件我们可以使用binwalk来检查下.bin固件从结果中我们可以看到这是squashfd文件系统,还可以知道字节序为小端格式可以使用下图命令提取固件这时在路径下将会新增一个文件夹,里面包含了我们解压出来的文件进入这个文件夹可以看到有有一个名为squash-root的文件夹,里面就是该固件的文件系统接下来我们来挑战一个项目,stack_bof_01,可通过栈溢出漏洞进原创 2021-05-25 09:41:52 · 513 阅读 · 0 评论 -
MIPS架构下缓冲区溢出实战(IDA版)
我们先分析源代码大概掌握程序流程,之后通过IDA调试找到具体偏移,最后配合MIPSROP插件组合有用的指令进行利用。学习了《mips基础》实验后,我们来进行缓冲区溢出实战吧。源码在vuln_system.c里通读后,可以知道逻辑很简单,就是从文件paswd中读取密码,如果密码为adminpwd则调用system执行系统命令ls –l,否则提示报错后退出编译注意到源程序里main中的buf大小为256字节,我们这里直接写600个A到passwd,看能否溢出,能否劫持pc尝试执行,报错了配原创 2021-05-25 09:38:34 · 511 阅读 · 1 评论 -
路由器后门制作
本次实验我们首先通过fmk对固件文件系统提取,之后根据文件系统特点,编写一个后面程序,之后将其添加到文件系统化中,并在路由器文件系统初始化脚本中启动该后门程序。最后通过qemu手动模拟路由器启动过程来验证后门程序是否植入成功。本次实验来学习使用firmware-mod-kit在固件中添加后门在固件中添加后门与在linux,windows添加后门的目的是一样的,都是为了保持权限,窃取敏感信息等等,不过在固件中添加后门的思路不太一样。基本上的思路是这样的:从原固件中提取文件系统,对其内容进行修改,然后将其原创 2021-05-25 09:30:23 · 1604 阅读 · 3 评论 -
Dlink路由器后门分析
在本次实验中,我们首先提取得到文件系统,然后根据网上公开的漏洞公告,使用IDA分析,明确了漏洞的利用机理后,学习在互联网上通过搜索引擎找到合适的设备进行验证。本次从官网下载得到一个压缩文件解压后得到一个bix文件,binwalk分析看到有squashfs文件系统,直接导出由网上发布的漏洞公告可知,该固件存在一个认为设置的后门漏洞,攻击者通过修改user-agent值为xmlset********字符串即可绕过路由器web认证机制取得后台管理权限。根据描述,应该与web服务有关在bin原创 2021-05-25 09:27:40 · 588 阅读 · 0 评论 -
dir605环境修复实验
本次实验中我们首先尝试使用qemu模拟运行路由器程序,会发现报错,此时将学习一种通用的解决思路,通过IDA分析报错的地方,然后根据实际情况写个c程序,通过劫持函数调用来修复相关问题。使用qemu等工具模拟自然很方便,但是由于路由器相关硬件模块的缺失有时候可能会导致应用程序启动失败的情况。如本次实验将分析的dir-605l中的boa程序。本次实验着重介绍遇到此类问题时的一种通用解决思路,通过ida分析函数执行流程,并尝试劫持函数调用来修复相关问题,使得qemu能进行正常的模拟。接下来进入实验。给了一个压原创 2021-05-25 09:24:29 · 562 阅读 · 0 评论 -
Dir-300敏感信息泄露漏洞
固件代码审计将固件压缩包解压使用binwalk提取这时当前路径下生产一个新的文件夹进入squshf文件系统先对总体情况做个审计,使用firmwalk.sh因为审计的结果很长,我们将其保存到1.txt因为telnet经常会出现安全风险,我们可以匹配telnet关机字去看看第一个telnetd.sh在该文件中找到了用户名、密码;密码保存在image_sign文件中去看看这样我们就得到了telnet的账户和密码。接下来我们研究web层面的漏洞已知dlink dir-300原创 2021-05-22 09:39:26 · 514 阅读 · 2 评论 -
MIPS环境填坑指南
0x00前言:今年来IoT安全火热,之前发了一篇《QEMU搭建树莓派环境》,算是给研究ARM平台下的漏洞分析、漏洞挖掘以及熟悉ARM指令等打下了基础。ARM在移动平台,或者说物联网领域独领风骚,不过在路由器领域基本还是以MIPS为主,本文的目的就是搭建在软件层面分析路由器安全(MIPS架构下)的环境。本文所述工具、搭建方法在2020年2月24日可以完全复现,在ubuntu16.04下展...原创 2020-05-01 09:05:39 · 1342 阅读 · 0 评论 -
路由器固件调试方案
0x01前言本文主要介绍在研究路由器固件安全时常用的两种调试方法,分别是IDA远程调试和gdb远程调试。这里需要注意,由于路由器基本都是mips架构,所以下文是以mips为例展开的,不过如果碰到了arm的,也是同理的。0x02IDA Pro远程调试使用qemu-system模式运行的脚本如下:这里涉及的两个文件分别是内核文件和磁盘镜像文件这里注意,我们这里涉及到的...原创 2020-03-17 10:33:54 · 1984 阅读 · 1 评论 -
routersploit简单实例
https://github.com/reverse-shell/routersploitRouterSploit。它包含了27个品牌的上百种漏洞利用模块,涉及的路由器、摄像头等设备有几百种。渗透的时候,用户首先根据目标设备的品牌选择对应的扫描模块,用以发现漏洞。一旦漏洞识别,就可以根据提示使用对应的漏洞利用模块,即可进行渗透攻击。同时,该工具还提供授权认证爆破模块,用以破解设备常...原创 2020-02-27 15:26:38 · 6154 阅读 · 3 评论 -
dlink一个后门的分析
解压后得到一个bix文件,binwalk分析看到有squashfs文件系统,直接导出根据公告根据描述,应该与web服务有关在bin下找到一个webs程序ida分析根据提示,直接在stirng window搜索关键字交叉引用来到了alpha_auth_check0xB8($S0)使用strstr来看字符中是否有 graphic/...原创 2020-02-20 21:40:05 · 597 阅读 · 0 评论 -
chroot在mips模拟时可能会出现的一些问题
这里,hello是小端程序Q1:chroot: failed to run command ‘./qemu-mipsel’: No such file or directory目录下存在qemu-mipsel,但是使用时还是会报错A1:改用qemu-mipsel-static注:使用前要安装:apt-get install qemu binfmt-support qemu...原创 2020-02-13 16:15:55 · 2096 阅读 · 0 评论 -
binwalk提取时报错’sasquatch‘相关
在使用binwalk提取时报错WARNING: Extractor.execute failed to run external extractor 'sasquatch -p 1 -le -d '%%squashfs-root%%' '%e'': [Errno 2] No such file or directoryWARNING: Extractor.execute fail...原创 2020-02-10 10:32:34 · 4831 阅读 · 2 评论 -
Binwalkt提取固件及qemu模拟
Binwalk在ctf的杂项题目常用,在日常的安全研究中常用于固件的逆向、提取等。我们都知道binwalk可以对指定文件进行扫描,然后打印出可能在其中的一些特定类型的文件,比如打ctf的隐写类题目时有时候binwalk一下就搞定了。但是binwalk是怎么实现的呢。Binwalk会扫描整个文件寻找文件signature,比如找到了0x89 0x50 0x4E 0x47 0x0D ...原创 2020-02-07 21:31:54 · 2396 阅读 · 0 评论 -
ARM exploit编写四
我们先了解内存布局有关知识。每次我们启动一个程序,都会为该程序保留一个内存区域。然后这个区域被分成多个区域。然后这些区域被分成更多的区域(segment),但是我们将坚持总体概述。所以,我们感兴趣的部分是:程序镜像,堆,栈。在下图中,我们可以看到这些部分在进程内存中是如何布局的一般表示。用于指定存储区域的地址只是为了举例,因为它们会因环境而异,尤其是在使用ASLR时。程序镜像区域基本上保存...原创 2020-02-03 14:53:53 · 233 阅读 · 0 评论 -
ARM exploit编写三
上一个实验中我们已经介绍了reverse shell(反向shell)的原理,再回顾一下在reverse shell的场景下,内网的机器会主动连接到外网的几次上,比如作为攻击者,我们会在系统上开放一个监听端口,等待来自目标主机的弹回的连接。同样,还是先看看C语言是怎么实现的。完整代码在reverse.c中第一步是确定必要的系统函数,其参数和系统调用号。 看看给出的C代码,我们可以看到我们...原创 2020-02-03 14:50:46 · 254 阅读 · 0 评论 -
ARM exploit编写二
学习如何编写实现bind shell和reverse shell的shellcode。首先我们要理解一些技术细节。先来看看什么是bind shell以及它是如何工作的。通过bind shell你可以在目标机器上打开一个通信端口或者监听器。监听器会等待到来的连接,你连上去后,监听器会接收连接然后给你弹回一个shell.(其实就是我们所说的正向连接)在看看Revese shell,通过reve...原创 2020-02-03 14:48:40 · 311 阅读 · 0 评论 -
ARM exploit编写一
我们先ssh连接上之前已经使用qemu搭建好的arm环境。本系列实验用到的工具包括:gdb-调试器gef-gdb插件gcc-gnu编译器套件as-汇编器ld-链接器strace-跟踪系统调用objdump-检查反汇编中的空字节objcopy-从ELF二进制文件中提取初始shellcode在开始写shellcode之前,需要知道一些基础的准则,比如:shellcode应该紧...原创 2020-02-03 14:45:56 · 454 阅读 · 0 评论 -
ARM汇编学习六
我们知道函数利用堆栈来保存局部变量,保存寄存器状态等。为了让所有事物有序运行,函数使用栈帧,即堆栈中的一片本地化内存区域,专用于特定的函数。栈帧是在函数的prologue中创建的。将帧指针(FP)设置到堆栈帧的底部,然后为栈帧分配的堆栈缓存会被开辟。栈帧(从它的底部开始)通常包含返回地址(之前的LR)、之前的帧指针、需要保存的任何寄存器、函数参数(如果函数允许大于4)、局部变量等。虽然堆栈帧的实际...原创 2020-02-03 13:09:00 · 572 阅读 · 0 评论 -
ARM汇编学习五
接下来我们看看b.bx.blxb分支指令 简单地跳向一个函数bl分支连接指令 将(PC+4)保存到LR中并跳转到函数BX(分支切换指令)和BLX(分支连接切换指令)a) 和B/BL+交换指令集相同( ARM <-> Thumb )b) 需要用寄存器作为第一操作数:BX/BLX+具体的寄存器BX/BLX用来从ARM指令集切换到Thumb指令集我们看一个实例.text...原创 2020-02-03 13:05:33 · 458 阅读 · 0 评论 -
ARM汇编学习四
接下来学习条件指令。当特定条件满足时,借助条件指令, 通过跳转(分支)或执行某些特定指令来控制程序的流动方向。相关条件被描述为CPSR寄存器中的特定位的状态,这些位根据指令计算后的结果实时改变。比如,如果我们比较两个数并且他们相等,就将零标志位置位 (Z=1) ,因为在系统底层发生了a-b=0。在这个例子里两个数是相等的,但如果第一个数字比第二个大,会得出大于结论。而相反的情况下得出小于结论。当...原创 2020-02-03 13:01:37 · 1770 阅读 · 0 评论 -
ARM汇编学习三
有时,一次性加载(或存储)多个值更有效率。因此,我们需要使用LDM(载入多个值)和STM(存储多个值)。这些指令基于起始地址的不同,有不同的形式。下面是我们将在本节中将会使用的代码。我们将一步一步地完成每一个指令.代码在test5.s中.dataarray_buff:.word 0x00000000 /* array_buff[0] /.word 0x0000000...原创 2020-02-03 12:58:17 · 810 阅读 · 0 评论 -
ARM汇编学习二
我们来学习内存指令:加载和存储ARM使用载入-存储模型来访问内存,意味着只有加载/存储(LDR和STR)指令才可以访问内存。在X86中,大多数指令允许直接操作内存中的数据,而在ARM中,在操作数据之前,必须把数据从内存移动到寄存器中。这意味着在ARM下,若要 增加特定内存地址里的32位的数值,将需要用到三种类型的指令(载入、增加和存储):首先将特定地址里的数值加载到寄存器中,然后在寄存器中增加它...原创 2020-02-03 12:54:10 · 1229 阅读 · 0 评论 -
ARM汇编学习一
关于ARM架构ARM架构,过去称作高级精简指令集机器(英语:Advanced RISC Machine,更早称作Acorn精简指令集机器,Acorn RISC Machine),是一个精简指令集(RISC)处理器架构家族,其广泛地使用在许多嵌入式系统设计。由于节能的特点,其在其他领域上也有很多作为。ARM处理器非常适用于移动通信领域,匹配其主要设计目标为低成本、高性能、低耗电的特性。另一方面,...原创 2020-01-30 12:21:52 · 2332 阅读 · 0 评论