《IOT废物学习之路》(5)--修复固件运行环境
《IOT废物学习之路》(5)–修复固件运行环境
虽然可以利用firmadyne模拟运行固件,但是并不是所有的固件都能模拟运行成功,有的固件需要依赖于硬件,qemu无法完全模拟。所以需要修复固件的运行环境,从而模拟固件运行。
固件下载地址
https://support.dlink.com/resource/products/dir-605l/REVA/
利用firmadyne模拟运行一下试试
1sudo docker run --network host --privileged -it --rm -e USER=root -v $(pwd):$(pwd) asdqwe876/iot_analyze
启动容器并挂载当前盘符。
将固件复制到firmadyne。
1cp /home/zhuyuan/IOT/05/dir605L_FW_113.bin ./
设置id
1project_id=1
解压固件
1python3 ./sources/extractor/extractor.py -b Netgear -sql 127.0.0.1 -np -nk "firmwa ...
《IOT废物学习之路》(4)--解密路由器固件
《IOT废物学习之路》(4)–解密路由器固件
固件下载地址:
https://support.dlink.com/resource/products/dir-605l/REVA/
研究路由器固件D-link-882。其中zip就是各版本的固件。
解压出来的固件版本从旧到新依次为:FW100B07 --> FW101B02 --> FW104B02 --> FW110B02 --> FW111B01 --> FW120B06 –> FW130B10,FW104B02 有点特别,而且通过名字也猜测到它是未加密的中间版本。
目前最新版是FW130B10,试一试用binwalk能否解析该固件。
发现binwalk失败。再试试更早版本的FW101B02,发现可以直接提取。
固件的版本是经过未加密到加密,所以肯定会有一个中间版本。
利用binwalk测试出中间版本FW104B02。可以从固件系统中找一找是否存在解密程序。可以在bin目录或者是usr/bin目录下寻找类似decrypt字眼的程序。
binwalk解析FW104B02固件
1234do ...
《IOT废物学习之路》(3)--动态分析IOT固件
《IOT废物学习之路》(3)–动态分析IOT固件
动态分析固件之前,需要先把固件运行起来。没有路由器、摄像头之类的物联网硬件的话,就需要用到虚拟执行。虚拟执行就相当于一个虚拟机可以运行各种物联网OS。
虚拟执行固件
工具介绍
firmadyne
是一个IOT固件模拟程序
用于全自动模拟固件
本文使用的是iot的docker
1、首先使用如下指令快速启用firmadyne控制台
1sudo docker run --network host --privileged -it --rm -e USER=root asdqwe876/iot_analyze
命令解释
命令的含义是在一个交互式的Docker容器中运行名为 asdqwe876/iot_analyze 的镜像,并将容器内的 USER 环境变量设置为 root。容器在退出后将被立即删除。这个命令通常用于启动临时容器,用于特定的任务或交互式会话,而不需要长期保留容器。
2、接下来准备一个固件,使用一个DWP固件作为demo
1234cd /root/firmadynewget -N --continue \http ...
《IOT废物学习之路》(2)--提取IOT固件与静态分析IOT固件
《IOT废物学习之路》(2)–提取IOT固件与静态分析IOT固件
1、提取固件
工具介绍
binwalk
提取固件系统的参数是-e,可以加上-t -vv参数查看详细的提取过程。
1binwalk -t -vv -e RT-N300_3.0.0.4_378_9317-g2f672ff.trx
通过输出信息,可以得知该固件系统没有加密压缩,且系统为Squashfs。
提取出来的文件夹系统为_RT-N300_3.0.0.4_378_9317-g2f672ff.trx.extracted。
其中的squashfs-root就是需要的固件文件系统。
binwalk原理
binwalk通过自带的强大的magic特征集,扫描固件中文件系统初始地址的特征码,若匹配成功,则将该段数据dump下来,这个magic特征集已公开。
1https://github.com/ReFirmLabs/binwalk/blob/62e9caa164305a18d7d1f037ab27d14ac933d3cf/src/binwalk/magic/filesystems
本次固件的例子,系统是squashfs文件 ...
《IOT废物学习之路》(1)--MIPS交叉编译环境搭建以及32位指令集
《IOT废物学习之路》(1)–MIPS交叉编译环境搭建以及32位指令集
先介绍一下指令集
一、指令集
指令集大体上可以分为两大类:
CISC(complex instruction set computer)(复杂指令计算机)
RISC(reduced instruction set computer)(精简指令计算机)
(1)CISC复杂指令架构
特点是拥有丰富而复杂的指令集。CISC架构的设计思想是**通过一条指令执行多个低级操作,以实现高级编程语言中的复杂操作。**所以,CISC处理器的复杂性和内部控制逻辑可能会导致较低的时钟速度和较高的功耗。像我们经常接触到的x86、x86-64等指令集都是CISC架构的具体表现。
(2)RISC复杂指令架构
特点是简单且精简的指令集。RISC架构的设计思想是将处理器的指令集保持简单和精简,以提高指令执行速度和效率。所以,RISC处理器的指令集包含较少、更加基本的指令、这些指令执行的操作通常是单一的,且需要相同的数量的时钟周期来执行。像ARM、MIPS等用于嵌入式等指令集都是RISC架构的具体表现。
二、CISC和RISC的区别
1、指 ...
py逆向工具使用
py逆向工具使用
一、前言
py逆向,找个题目举例子说明一下[NISACTF 2022]ezpython。
二、题目
工具: 1.pyinstxtractor.py 下载地址:https://sourceforge.net/projects/pyinstallerextractor/ 2.HEX编辑器,我这里使用winHEX 下载地址:https://www.jb51.net/softs/16546.html#download 3. uncompyle 库 可在命令框中输入:pip install uncompyle6 进行安装
需要用到这两个工具
把给出的exe文件放到跟pyinstxtractor.py的同一目录下,然后
1python pyinstxtractor.py 附件.exe
会生成一个和附件名相同的文件夹
进入到文件夹找到这两个文件
struct.pyc这个文件一般都是的这个名字,src.pyc这个文件跟附件相关,名字有时不一样。
然后把这两个文件放到010Editor(编辑器都行)中
把struct.pyc的第一行添加到src.pyc中,因为struct保存着 ...
花指令总结
花指令总结
1、花指令介绍
花指令的目的是干扰ida和od等软件对程序的静态分析。使这些软件无法正常的反汇编出原始代码。
2、常见的两类反汇编算法
反编译器的工作原理一般是线性扫描反汇编算法或行进递归反汇编算法。
线性扫描反汇编算法:
逐行反汇编,缺点是在于冯诺依曼体系结构下,无法区分数据与代码,从而导致将代码段嵌入的数据误解释为指令的操作码。以致最后得到错误的反汇编结果。
行进递归反汇编算法:
按照代码可能的执行顺序进行反汇编程序。行递归算法通过程序的控制流来确定反汇编的下一条指令,遇到非控制转移指令时顺序徐进行反汇编,而遇到控制转移指令时则是从转移地址出开始反汇编。缺点在于准确确定间接转移目的地址难度较大。
3、花指令实现
12345678910111213141516171819//源码#include<stdio.h>#include<windows.h>int main(int argc, char* argv[]){ int a = MessageBoxA(NULL, "Hello", "main", ...