OpenWrt 是一个广受接待的开源固件款式,许多厂家,如小米、摩托罗拉、TP-ILNK等免费视频,都基于 OpenWrt 斥地我方的固件。对于一些特定的应用场景,咱们也可能需要自行构建 OpenWrt 固件。淌若八成仿真OpenWrt固件,那么将会擢升相干的过错挖掘的着力与资时候域,大大增强对固件的掌控才略,为安全经营提供便利。
咫尺,常用的仿真用具如 FirmAE 并不维持径直仿真 OpenWrt 固件。同期,聘任传统的 QEMU 启动并进行集聚桥接的方法,举例我个东说念主斥地的 Sevnup,也无法径直仿真 OpenWrt。这是因为 OpenWrt 的启动过程具有特定的运行化特质,无法在系统启动后完成一些垂死的运行化操作。详备的启动历程不错参考 OpenWrt系统启动历程分析。
如下图所示,OpenWrt 固件需要在认真插足shell之前进行许多的运行化使命。在 QEMU 启动后,由于权限或者文献缺失等问题这些运行化使命将无法平方运行,妨碍了后续的仿真使命。后头咱们进行推行详备讲明。
咱们不错作念一个详备的推行,淌若使用通例QEMU方法模拟motorola cx2l也就是NepCTF的题目固件,望望会若何。领先解压固件:接下来,使用Sevnup进行通例仿真(贯注接下来都是qemu系统层面的模拟),得手插足shell:咱们不错看到对于httpd有好多运行化的剧本尚未运行:强行启动lighttpd作事,会讲明莫得ubus:那么需要进行相干的运行化,然则手动启动弯曲好多成立信息。这个时间咱们空猜测了刚才的OpenWrt启动历程,尝试按照其启动历程进交运行化。第一步实施/etc/preinit发现缺失许多文献:那么咱们再尝试第二步/sbin/init,亦然近似问题:由于前边两要领都不可平方实施,后头也就无法一说念运行化,也就无法平方仿真,这就是常QEMU无法仿的确具体时局。
在部分情况下会讲明条目运行化文献是PID为1的情况下才可运行。此处也不错举一个TL-XTR10280的例子,领先使用Sevnup插足系统层面模拟:尝试运交运行化方法,发现除了弯曲相干文献信息,还条目PID为1才能init:
此时也许有东说念主会冷漠疑问,既然是lighttpd,是否不错像复现Vigor的Nday一样,径直用lighttpd -f 去启动呢?谜底是不错,然则作事并不可平方进行:无法进行截图演示,登录后将会径直又复返首页。以上讲明,鉴于 OpenWrt 的特有性,通例的方法咫尺无法杀青对其固件的径直仿真。
在加入 Nepnep 团队一周年之际,我有幸参与出题,想象了两说念题目,一说念对于 VxWorks,另一说念对于 OpenWrt。
VxWorks 的题目部分基于咫尺的经营后果,待相干 CVE 公布后也许会再详备探讨。
此次对于 OpenWrt 的题目颇具新意,至少对我而言,在过往的比赛中并未遭逢近似的仿真类题目。在本题中,我将 flag 加密后散播到固件的各个部分,选手需要得手仿真整个固件后才能在根目次下发现 flag,不然只可多重罗列组合后破解加密,题目难度因此滚动为一项轮廓挑战。
那么若何杀青预期的解答呢?这等于本篇的主题。以下是简化的要领:
解压固件并索要文献系统。
下载 OpenWrt 官方内核及镜像。Malta 下载贯穿
青萆橾在线视频解压官方镜像赢得文献系统,将筹画固件的文献系统使用 rsync -av 更新散失至官方镜像的文献系统。
将更新后的文献系统打包为镜像文献,并期骗 QEMU 启动该镜像。不错有计划在运行化剧本中诞生 root 密码以便径直登录 shell 稽查 flag。
这种方法离别于传统的QEMU启动并使用集聚桥接,径直期骗 OpenWrt 官方镜像进交运行化,并散失关节的成立信息,使固件八成平方启动,侧目了传统 QEMU 仿真中遭逢的铁心。
不外,为杀青王人备的仿真,还需成立集聚接口。OpenWrt 的集聚接口成立不同于通例的 ifconfig 成立面貌,而是通过修改 /etc/config/network 成立文献杀青。如下示例是诞生土产货主机 IP 为 10.10.10.1,OpenWrt 仿真 IP 为 10.10.10.2:
在启动 QEMU 时,宿主机器需成立以下网卡诞生:
如斯一来,宿主机和仿真环境便可连通。
在最脱手的时间咱们征询了通例方法的铁心,当今咱们使用新方法望望仿的确信息输出进行对比(右边是新方法的得手输出,左边是失败输出):
仿真效果如下:
插足 shell:
赛博大厨:
底下是我我方使用的自动化剧本,经受第一个大喊行参数算作固件解压后的文献系统旅途,ext_backup 目次是官方 OpenWrt 的文献系统,ext 目次算作副本并更新为筹画文献系统实质,打包成 img 文献以供仿真使用:
浅易来说就是自动化成立了网卡,然后更新官方镜像何况打包,临了用QEMU启动。
对于自编译的 OpenWrt 固件,相似不错聘任上述方法仿真。举例,下图为一个 Netgear R6260 的 OpenWrt 固件,经按要领成立打包后得手启动:
八成平方走访:
咫尺这个方法只是维持mipsel和armv7,对于其他固件的官方openwrt淌若想要推行也不错径直不才载贯穿赢得其他架构的官方镜像进行推行。也许我以为这是一个迥殊念念的发现,八成为仿真固件带来一些新的念念路。
本文探讨了在 QEMU 环境中仿真 OpenWrt 固件的灵验方法,尤其是针对二次斥地固件的需求。传统的仿真方法因 OpenWrt 的特定运行化条目而无法收效,而咱们冷漠的新方法通过使用官方镜像并散失必要的文献系统,得手处治了这一问题。
这种方法简化了固件的仿真过程,使得在测试和过错挖掘时八成更高效地运行和调试自界说固件或者相干长厂商的二次斥地固件,为相干的安全经营者提供了实用的处治决策。也接待师父们与我疏导,一说念斥地维持OpenWrt二次斥地固件仿的确自动化用具,让这个使命不再“头疼”。
[培训]内核驱动高档班免费视频,冲击BAT一流互联网大厂使命,每周日13:00-18:00直播讲课
上传的附件: nepWRT_attachment.7z (7.95MB,6次下载)