看雪论坛
发新帖

[翻译]逆向分析Trendnet TS-402

yibeizifd 2017-3-13 14:14 1209

Trendnet TS-S402是一个网络存储机柜,销售给个人用于个人数据存储。像每个物联网(IoT)设备一样,它由制造商编程或配置的软件上运行,然后发送到终端用户,即固件。此特定设备的固件版本2.00.10及以下版本具有严重的漏洞,允许远程root访问。因此,这个目标为逆向工程提供了一个很好的练习,同时不幸地提供了一个在物联网中太常见的漏洞的例子:后门通用设计。在这篇文章中,我们将介绍Binwalk并提供必要的背景信息,在消费级设备上使用TS-S402作为实际示例的大量固件,并且提供视频信息。

Trendnet TS-S402网络存储机柜

 

0x01  Trendnet TS-S402

       在逆向任何设备之前,重要的是要真正了解其功能,组件和任何其他信息,可能有助于分析其固件。产品的网页突出显示以下功能:

 

·      InternetFTP)和本地网络访问您的数据

·      微处理器:Marvell 88F5182

·      IDE控制器:ITE IT8211F

·      实时操作系统:嵌入式Linux(内核版本2.4.25

·      文件协议:Microsoft网络(CIFS / SMBInternetHTTP 1.1FTPFTPSSSL FTP

 

为什么这些事实很重要?并不是所有的都将是有用的,但有些可能会提供一个全面的想法,一旦你打算开始分析固件文件。在许多情况下,特别是对于消费级设备,可逆的固件是相当简单的,常见的开源工具将为您提供重要的支持。但如果你转向工业固件,意识到设备是很重要的,因为你会面临未听到的操作系统,库和未知文件格式。在这种情况下,我们可以期望看到基于Linux的操作系统(OS)托管HTTPFTP服务器,以及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”,这意味着它找到的文件是没有任何特定结构或格式的二进制数据。所以我们需要使用一个更强大的工具:binwalkBinwalk是非常有用的逆向工程工具包,可以从未知的二进制文件分析和提取文件。但是请注意,它也可能返回相当多的误报。识别他们的唯一方法是经验和反复试验。如果还没有完成,使用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/




上传的附件:
本主题帖已收到 0 次赞赏,累计¥0.00
最新回复 (1)
1
xdxdxdxd 2017-3-14 08:41
2
感谢分享~
返回



©2000-2017 看雪学院 | Based on Xiuno BBS | 知道创宇带宽支持 | 微信公众号:ikanxue
Time: 0.012, SQL: 10 / 京ICP备10040895号-17