借助前人的知识:
- FirmAE固件模拟及IOT漏洞复现分析入门 | CN-SEC 中文网
- FirmAE安装指北-CSDN博客
- FirmAE 工具安装(解决克隆失败 网络问题解决)_firmae安装出错-CSDN博客
- 命令注入漏洞CVE-2022-26258复现(学习记录)-智能设备-看雪-安全社区|安全招聘|kanxue.com
0.安装的失败历程(可跳过)
a.在Ubuntu 23.04中安装FirmAE(失败)
肝死我了!本来用用Ubuntu 23.04,解决了一大堆报错!
但是发现根本无法把D-Link DIR-820L(D-Link的一款企业级无线路由器)跑起来!
brinmon@brinmon-virtual-machine:~/桌面$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 23.04
Release: 23.04
Codename: lunar
一直卡在这里:
brinmon@brinmon-virtual-machine:~/IOT/Tools/FirmAE$ sudo ./run.sh -r D-link ~/Pwn_CVE/CVE-2022-26258/DIR820LA1_FW105B03.bin
[sudo] brinmon 的密码:
[*] /home/brinmon/Pwn_CVE/CVE-2022-26258/DIR820LA1_FW105B03.bin emulation start!!!
[*] extract done!!!
[*] get architecture done!!!
mke2fs 1.47.0 (5-Feb-2023)
e2fsck 1.47.0 (5-Feb-2023)
[*] infer network start!!!
还出了一个bug无法进行联网,我只能说我不理解,菜鸟一枚QAQ
b.在Ubuntu 18.04中安装FirmAE(失败)
看教程他们用的都是Ubuntu 18.04,那我也去试试
china@ubuntu:~/IOT_Tool/FirmAE$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.6 LTS
Release: 18.04
Codename: bionic
第一次尝试以失败告终,肝到我凌晨4点!QAQ
发现有很多报错一一解决后依旧卡住和Ubuntu 23.04一样
- E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。 - 凌晨5点随波逐流 - 博客园 (cnblogs.com)
- psycopg2 - psycopg: Python.h: No such file or directory - Stack Overflow
解决方案:发现是python环境没有安装完整QAQ:
china@ubuntu:~/IOT_Tool/FirmAE$ python
Python 2.7.17 (default, Mar 8 2023, 18:40:28)
[GCC 7.5.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
china@ubuntu:~/IOT_Tool/FirmAE$ python3
Python 3.6.9 (default, Mar 10 2023, 16:46:00)
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
china@ubuntu:~/IOT_Tool/FirmAE$ pip -V
pip 21.3.1 from /usr/local/lib/python3.6/dist-packages/pip (python 3.6)
1.Ubuntu 18.04安装的成功历程
软件要求:
- Ubuntu 18.04
- Windows主机存在魔法代理,教程请移步:
a.开始配置环境linux环境
Linux前置环境
- 换源Ubuntu 18.04:
china@ubuntu:~$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
china@ubuntu:~$ sudo gedit /etc/apt/sources.list
- 安装python:
china@ubuntu:~/IOT_Tool/FirmAE$ python
Python 2.7.17 (default, Mar 8 2023, 18:40:28)
[GCC 7.5.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
china@ubuntu:~/IOT_Tool/FirmAE$ python3
Python 3.6.9 (default, Mar 10 2023, 16:46:00)
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
china@ubuntu:~/IOT_Tool/FirmAE$ pip -V
pip 21.3.1 from /usr/local/lib/python3.6/dist-packages/pip (python 3.6)
- 安装git,更换为魔法代理,请移步教程:
china@ubuntu:~/IOT_Tool$ sudo apt-get install git
china@ubuntu:~/IOT_Tool$ git config --global https.proxy https://192.168.43.238:7890
china@ubuntu:~/IOT_Tool$ git config --global http.proxy http://192.168.43.238:7890
开始正式安装FirmAE
开启代理后速度嗖嗖的快!
china@ubuntu:~/IOT_Tool$ git clone --recursive https://github.com/pr0v3rbs/FirmAE
正克隆到 'FirmAE'...
remote: Enumerating objects: 443, done.
remote: Counting objects: 100% (207/207), done.
remote: Compressing objects: 100% (76/76), done.
remote: Total 443 (delta 152), reused 145 (delta 131), pack-reused 236
接收对象中: 100% (443/443), 1.50 MiB | 3.81 MiB/s, 完成.
处理 delta 中: 100% (233/233), 完成.
子模组 'analyses/routersploit'(https://github.com/threat9/routersploit)已对路径 'analyses/routersploit' 注册
正克隆到 '/home/china/IOT_Tool/FirmAE/analyses/routersploit'...
remote: Enumerating objects: 8706, done.
remote: Counting objects: 100% (158/158), done.
remote: Compressing objects: 100% (93/93), done.
remote: Total 8706 (delta 87), reused 115 (delta 65), pack-reused 8548
接收对象中: 100% (8706/8706), 1.85 MiB | 2.99 MiB/s, 完成.
处理 delta 中: 100% (6275/6275), 完成.
子模组路径 'analyses/routersploit':检出 '4eefc7e709000a4a111aa997ba2253776fffd0c9'
由于之前配置失败的缘故痛定思痛,既然教程都是2022年的,那么我直接用git切换到过去的版本再来配置这个项目:Commits · pr0v3rbs/FirmAE (github.com)
发现这次提交是他们写教程时最新的提交!直接用git切换一下!
china@ubuntu:~/IOT_Tool$ cd ./FirmAE/
china@ubuntu:~/IOT_Tool/FirmAE$ git checkout 28f7eb4db39359d36009654c8368375c5d3bd401
注意:正在检出 '28f7eb4db39359d36009654c8368375c5d3bd401'。
您正处于分离头指针状态。您可以查看、做试验性的修改及提交,并且您可以通过另外
的检出分支操作丢弃在这个状态下所做的任何提交。
如果您想要通过创建分支来保留在此状态下所做的提交,您可以通过在检出命令添加
参数 -b 来实现(现在或稍后)。例如:
git checkout -b <新分支名>
HEAD 目前位于 28f7eb4 Fix #47
下载完成之后开始运行安装脚本:
download.sh脚本主要是下载一写github上的一些文件,脚本下载的不好可以手动下载后放到/home/china/IOT_Tool/FirmAE/binaries
目录下就好了!
china@ubuntu:~/IOT_Tool/FirmAE$ ./download.sh
Downloading binaries...
Downloading kernel 2.6 (MIPS)...
--2024-05-25 13:33:38-- https://github.com/pr0v3rbs/FirmAE_kernel-v2.6/releases/download/v1.0/vmlinux.mipsel.2
正在解析主机 github.com (github.com)... 20.205.243.166
正在连接 github.com (github.com)|20.205.243.166|:443... 已连接。
运行完上面的后就可以运行install.sh脚本了!,之前配置失败是因为没有配置好python环境这次提前配置了,所以就没啥问题了!
china@ubuntu:~/IOT_Tool/FirmAE$ ./install.sh
[sudo] china 的密码:
命中:1 http://mirrors.aliyun.com/ubuntu bionic InRelease
命中:2 http://mirrors.aliyun.com/ubuntu bionic-security InRelease
...
成功!到这里也就成功了!
注:我是用的Ubuntu基本啥也没装,这个框架会有概率扰乱原有环境!
这个框架还会给你安装openjdk和谷歌浏览器!
b.开始尝试运行一个固件
- 先安装一个binwalk,最好使用FrmAE框架自带的binwalk版本工具进行安装
china@ubuntu:~/IOT_Tool/FirmAE$ cd ./binwalk-2.3.3/
china@ubuntu:~/IOT_Tool/FirmAE/binwalk-2.3.3$ sudo python3 setup.py install
- 下载实验用的目标固件:D-Link路由器固件
#解压出固件是.bin,然后进入~/IOT_Tool/FirmAE/目录开始运行了
china@ubuntu:~/IOT_Tool/FirmAE$ ./init.sh
+ sudo service postgresql restart
+ echo 'Waiting for DB to start...'
Waiting for DB to start...
+ sleep 5
china@ubuntu:~/IOT_Tool/FirmAE$ sudo ./run.sh -r D-link ~/CVE/CVE-2022-26258/DIR820LA1_FW105B03.bin
[*] /home/china/CVE/CVE-2022-26258/DIR820LA1_FW105B03.bin emulation start!!!
[*] extract done!!!
[*] get architecture done!!!
mke2fs 1.44.1 (24-Mar-2018)
e2fsck 1.44.1 (24-Mar-2018)
[*] infer network start!!!
[IID] 1
[MODE] run
[+] Network reachable on 192.168.0.1!
[+] Web service on 192.168.0.1
Creating TAP device tap1_0...
Set 'tap1_0' persistent and owned by uid 0
Bringing up TAP device...
Starting emulation of firmware... 192.168.0.1 true true 63.309391429 65.425134506
- 然后就可以开始快乐的模拟了,终于成功了!
再去看看结果:
2.Ubuntu 23.04安装的成功历程
软件要求:
- Ubuntu 23.04
- Windows主机存在魔法代理,教程请移步:
- Ubuntu也存在魔法代理,教程请移步:
a.开始配置Linux的前置环境
这是一个我经常用的环境,用来打Pwn
- 配置Clash魔法在Ubuntu上
- 配置Git代理,使用主机上了Clash代理,加速下载
brinmon@brinmon-virtual-machine:~/IOT/Tools$ git config --global https.proxy https://192.168.43.238:7890
brinmon@brinmon-virtual-machine:~/IOT/Tools$ git config --global http.proxy http://192.168.43.238:7890
开始正式安装FirmAE
下载项目:
brinmon@brinmon-virtual-machine:~/IOT/Tools$ git clone --recursive https://github.com/pr0v3rbs/FirmAE
正克隆到 'FirmAE'...
remote: Enumerating objects: 443, done.
remote: Counting objects: 100% (207/207), done.
remote: Compressing objects: 100% (76/76), done.
remote: Total 443 (delta 152), reused 145 (delta 131), pack-reused 236
接收对象中: 100% (443/443), 1.50 MiB | 694.00 KiB/s, 完成.
处理 delta 中: 100% (233/233), 完成.
子模组 'analyses/routersploit'(https://github.com/threat9/routersploit)未对路径 'analyses/routersploit' 注册
正克隆到 '/home/brinmon/IOT/Tools/FirmAE/analyses/routersploit'...
remote: Enumerating objects: 8706, done.
remote: Counting objects: 100% (158/158), done.
remote: Compressing objects: 100% (93/93), done.
remote: Total 8706 (delta 87), reused 117 (delta 65), pack-reused 8548
接收对象中: 100% (8706/8706), 1.85 MiB | 559.00 KiB/s, 完成.
处理 delta 中: 100% (6275/6275), 完成.
子模组路径 'analyses/routersploit':检出 '4eefc7e709000a4a111aa997ba2253776fffd0c9'
和之前一样的步骤download.sh :
brinmon@brinmon-virtual-machine:~/IOT/Tools$ cd ./FirmAE/
brinmon@brinmon-virtual-machine:~/IOT/Tools/FirmAE$ ./download.sh
和之前一样的步骤install.sh :
brinmon@brinmon-virtual-machine:~/IOT/Tools/FirmAE$ ./install.sh
成功安装!!!
他居然还会自动安装谷歌浏览器!
b.开始运行一个固件
- 先安装一个binwalk,最好使用FrmAE框架自带的binwalk版本工具进行安装
cd ./binwalk-2.3.4/
sudo python3 setup.py install
- 下载实验用的目标固件:D-Link路由器固件
这里运行了好久才出来的我还以为出问题了QAQ
brinmon@brinmon-virtual-machine:~/IOT/Tools/FirmAE$ sudo ./run.sh -r D-link ~/Pwn_CVE/CVE-2022-26258/DIR820LA1_FW105B03.bin
[sudo] brinmon 的密码:
[*] /home/brinmon/Pwn_CVE/CVE-2022-26258/DIR820LA1_FW105B03.bin emulation start!!!
[*] extract done!!!
[*] get architecture done!!!
mke2fs 1.47.0 (5-Feb-2023)
e2fsck 1.47.0 (5-Feb-2023)
[*] infer network start!!!
[IID] 1
[MODE] run
[+] Network reachable on 192.168.0.1!
[+] Web service on 192.168.0.1
Creating TAP device tap1_0...
Set 'tap1_0' persistent and owned by uid 0
Bringing up TAP device...
Starting emulation of firmware... 192.168.0.1 true true 59.115957501 70.018481312
成功进入路由:
还有一个问题,无法联网,运行这个固件到一半突然没网了,虚拟机的世界可真悬:
3.解决安装问题的最终大法就是查看报错日志QAQ
a.如何查看DFirmAE框架的报错日志:
china@ubuntu:~/IOT_Tool/FirmAE$ cat ./scratch/1/makeNetwork.log
qemu-system-mips: terminating on signal 2 from pid 74021 (timeout)
[*] test emulator
[*] Waiting web service... from 192.168.0.1
qemu-system-mips: terminating on signal 15 from pid 78791 (/bin/bash)
b.如何查看如何查看qemu报错日志:
如何查看qemu日志:固件登录 - inferNetwork ·问题 #23 ·菲尔玛台/菲尔玛台 — Firmware login - inferNetwork · Issue #23 · firmadyne/firmadyne (github.com)
我也不会自行百度:查看virsh管理qemu虚拟机日志信息和libvirtd日志信息_qemu-ga.log文件是什么-CSDN博客
在使用virsh管理qemu的虚拟机时候,也是有日志的输出的.
具体的log在目录`/var/log/livirt/qemu/` 下面,具体的log文件名与虚拟机名字关联.