Trendnet TS-S402是一个网络存储机柜,销售给个人用于个人数据存储。像每个物联网( IoT)设备一样,它由制造商编程或配置的软件上运行,然后发送到终端用户,即固件。此特定设备的固件版本 2.00.10及以下版本具有严重的漏洞,允许远程 root访问。因此,这个目标为逆向工程提供了一个很好的练习,同时不幸地提供了一个在物联网中太常见的漏洞的例子:后门通用设计。在这篇文章中,我们将介绍 Binwalk并提供必要的背景信息,在消费级设备上使用 TS-S402作为实际示例的大量固件,并且提供视频信息。
Trendnet TS-S402 网络存储机柜
0x01 Trendnet TS-S402
在逆向任何设备之前,重要的是要真正了解其功能,组件和任何其他信息,可能有助于分析其固件。产品的网页突出显示以下功能:
· 从 Internet ( FTP )和本地网络访问您的数据
· 微处理器: Marvell 88F5182
· IDE 控制器: ITE IT8211F
· 实时操作系统:嵌入式 Linux (内核版本 2.4.25 )
· 文件协议: Microsoft 网络( CIFS / SMB ) Internet ( HTTP 1.1 ) FTP , FTPS ( SSL FTP )
为什么这些事实很重要?并不是所有的都将是有用的,但有些可能会提供一个全面的想法,一旦你打算开始分析固件文件。在许多情况下,特别是对于消费级设备,可逆的固件是相当简单的,常见的开源工具将为您提供重要的支持。但如果你转向工业固件,意识到设备是很重要的,因为你会面临未听到的操作系统,库和未知文件格式。在这种情况下,我们可以期望看到基于 Linux 的操作系统( OS )托管 HTTP 和 FTP 服务器,以及 Samba 兼容性。制造商甚至慷慨地提供底层的微处理器,这对于对二进制中的漏洞进行更深入的分析是有帮助的。
0x02 逆向固件
我们正在查找的漏洞仅存在于固件版本 2.00.10 及以下版本中,您可以从公司的存储库下载。解压缩存档,您将获得以下文件:
· TS-S402_FW_2_00_10.bin
· readme.txt
· release_TS-S402.txt
· REMOTE_PACKAGE_2_20.bin
阅读发行说明和 README 文件 总 是一个好放大。 这样做可以节省你的时间和头痛的问题试图搞清楚的东西。 如果你正在 进 行 bug 搜索, 发 行 说 明可以列出 这 个版本中包含的更改和修 补 程序,提供潜在的提示修 补 旧版本的漏洞。
两个“ .bin ”文件包含设备的程序和操作系统。在这种情况下,基于文件名, TS-S402_FW_2_00_10.bin 是主要的固件文件,因此,这篇文章的重点。 第一步总是检查是否可以使用 file 命令确定文件类型。 如果我们幸运,它是一个已知的文件类型和一些存在的应用程序来提取相关的文件 / 信息。
root@ReSyst:/targets/trendnet/ts-s402# file TS-S402_FW_2_00_10.bin
TS-S402_FW_2_00_10.bin: data 但是我们不是那么幸运。file 命令返回“data ”,这意味着它找到的文件是没有任何特定结构或格式的二进制数据。所以我们需要使用一个更强大的工具:binwalk 。Binwalk 是非常有用的逆向工程工具包,可以从未知的二进制文件分析和提取文件。但是请注意,它也可能返回相当多的误报。识别他们的唯一方法是经验和反复试验。如果还没有完成,使用apt 使用sudo apt-get install binwalk 安装binwalk 并运行以下命令:
binwalk -x lzma TS-S402_FW_2_00_10.bin
上面的命令要求binwalk 检出TS-S402_FW_2_00_10.bin 文件,并尝试找到有趣的文件或结构里面。我们使用“-x lzma ”参数来排除关于LZMA 压缩数据的任何发现:在这种情况下,这些是不正确的。 您将获得以下结果:
DECIMAL HEXADECIMAL DESCRIPTION
-------------------------------------------------------------------------
32 0x20 gzip compressed data, from Unix, last modified: 2009-04-21 04:22:15 换句话说,似乎有一个32 字节的报头后跟一个GZip 压缩文件。此时,我们要将此gzip 文件从二进制文件中进行进一步调查。您可以使用dd 命令这样做,但binwalk 提供了-e 选项为您提取文件
binwalk -ex lzma TS-S402_FW_2_00_10.bin 文件将被输出到文件名为 _TS-S402_FW_2_00_10.bin.extracted 的目录中,您将在其中找到一个名为 20 的文件,该文件是较大固件中文件的偏移量。再次使用文件命令,我们现在得到一个更有趣的结果:
root@ReSyst:/targets/trendnet/ts-s402/_TS-S402_FW_2_00_10.bin.extracted# file 20
20: POSIX tar archive (GNU) 这一次,文件命令清楚地识别了 TAR 存档,这意味着我们可以使用以下命令直接解压文件:
tar -zxf 20 这个存档包含更多的文件: uImage 和文件系统:
· uImage
· rootfs.armeb.squashfs
uImage 是固件的引导加载程序,您将经常在大多数基于Linux 的固件中找到此文件或类似内容。现在,我们对rootfs.armeb.squashfs 中包含的文件系统感兴趣,它的名字暗示是一个SquashFS 。要访问它包含的文件,我们通常可以使用unsquashfs 工具,但在这种情况下这样做不会工作:
root@ReSyst:targets/trendnet/ts-s402/firmware# unsquashfs rootfs.armeb.squashfs
Reading a different endian SQUASHFS filesystem on rootfs.armeb.squashfs
Parallel unsquashfs: Using 1 processor
lzma uncompress failed with error code 0
read_block: failed to read block @0x1737f8
read_directory_table: failed to read block
FATAL ERROR:failed to read directory table 根据文件系统的创建方式和所使用的开发软件,它可能与 unsquashfs 期望的结构化文件系统的方式不兼容。作为解决方法,我们将使用 Sasquatch ,当从非标准 Squash 文件系统提取文件时,它更灵活。克隆项目并按照 README.md 文件中的说明构建代码,或者可以下载 Ubuntu 及其变体的预编译二进制文件。 现在让我们再次尝试打开文件,但是这次使用 Sasquatch ,通过键入 ./sasquatch rootfs.armeb.squashfs 一段时间后, Sasquatch 将提取 squashfs-root 目录中的所有文件,此时您可以最终访问目标设备上托管的文件。
drwxrwx--- 1 root vboxsf 4096 Apr 20 2009 .
drwxrwx--- 1 root vboxsf 0 Jan 21 11:34 ..
drwxrwx--- 1 root vboxsf 0 Apr 20 2009 bin
drwxrwx--- 1 root vboxsf 0 Apr 20 2009 config
drwxrwx--- 1 root vboxsf 0 Apr 20 2009 dev
drwxrwx--- 1 root vboxsf 4096 Apr 20 2009 etc
drwxrwx--- 1 root vboxsf 0 Apr 20 2009 home
drwxrwx--- 1 root vboxsf 0 Apr 20 2009 include
drwxrwx--- 1 root vboxsf 4096 Apr 20 2009 lib
drwxrwx--- 1 root vboxsf 0 Apr 20 2009 mnt
drwxrwx--- 1 root vboxsf 0 Apr 20 2009 newroot
drwxrwx--- 1 root vboxsf 0 Apr 20 2009 opt
drwxrwx--- 1 root vboxsf 0 Apr 20 2009 proc
drwxrwx--- 1 root vboxsf 0 Apr 20 2009 root
drwxrwx--- 1 root vboxsf 0 Apr 20 2009 sbin
drwxrwx--- 1 root vboxsf 0 Apr 20 2009 tmp
drwxrwx--- 1 root vboxsf 0 Apr 20 2009 usr
drwxrwx--- 1 root vboxsf 0 Apr 20 2009 var 0x03 发现后门
在文件系统中隐藏了一个相当明显的后门。继续探索文件和配置,看看是否可以找到它。
大多数商业设备可通过 Web 界面远程访问。因此, Web 服务器及其内容是寻找潜在漏洞的良好起点。在 TS-S402 上, Web 应用程序位于 / home / httpd 目录中。此目录的内容的部分列表包括如下:
drwxrwx--- 1 root vboxsf 4096 Apr 20 2009 .
drwxrwx--- 1 root vboxsf 0 Apr 20 2009 ..
-rwxrwx--- 1 root vboxsf 1462 Apr 20 2009 arrow-down-title.gif
-rwxrwx--- 1 root vboxsf 1499 Apr 20 2009 arrow-down-title-on.gif
-rwxrwx--- 1 root vboxsf 1452 Apr 20 2009 arrow-up-title.gif
-rwxrwx--- 1 root vboxsf 1441 Apr 20 2009 arrow-up-title-on.gif
-rwxrwx--- 1 root vboxsf 784 Apr 20 2009 backdoor.shtml
-rwxrwx--- 1 root vboxsf 489 Apr 20 2009 BTdata.shtml
drwxrwx--- 1 root vboxsf 0 Apr 20 2009 cgi-bin
-rwxrwx--- 1 root vboxsf 12831 Apr 20 2009 CheckFunc.js 如你所见,其中一个网页名为“ backdoor.html ” ; 相当明显的迹象表明某事是错误的。如果你看看网页代码,你会注意到,它似乎启用 telnetd 守护进程,从而允许 Telnet 连接到设备。除非特别配置在网络防火墙中被阻止,否则该网页应该是网络上的任何人都可以访问的,如果面对 Web ,任何人都可以访问。 现在缺少的是用于访问设备的凭据 让我们来看看 / etc / shadow ,看看我们是否可以找出 root 帐户的默认密码:
root::10933:0:99999:7:::
bin:*:10933:0:99999:7:::
daemon:*:10933:0:99999:7:::
adm:*:10933:0:99999:7:::
lp:*:10933:0:99999:7:::
sync:*:10933:0:99999:7:::
shutdown:*:10933:0:99999:7:::
halt:*:10933:0:99999:7:::
uucp:*:10933:0:99999:7:::
operator:*:10933:0:99999:7:::
nobody:*:10933:0:99999:7:::
default::10933:0:99999:7::: 嗯,没有为 root 帐户设置任何密码。换句话说,任何可以访问设备上的 backdoor.html 页面的人都可以启用远程 Telnet 连接,然后以 root 用户身份登录。 虽然我没有测试它,因为我没有这个设备。此漏洞以前已确认并报告。
0x04 总结
这篇文章提供了一个逆向消费级 IT 设备的固件以定位允许远程访问设备的漏洞的示例。这样的漏洞似乎微不足道,如果一个僵尸网络,如未来僵尸网络,并使用成千上万的这些脆弱的设备 - 很少更新 - 到整个网络的 DDoS 网站。因此,需要理解技术和技能需要淹没这些设备,以保卫他们。
视频地址: https://www.youtube.com/watch?v=M2b8hrgqmvs
原文作者: Bio
翻译者: yibeizifd
原文地址: http://thecyberrecce.net/2017/02/12/reversing-the-trendnet-ts-402/
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
上传的附件: