欢迎访问Sunbet,Sunbet是欧博Allbet的官方网站!

首页Sunbet_新闻事件正文

实测一款IoT路由的安全性怎样?从web到硬件,我们进行了周全的破绽发掘和剖析(下)

b9e08c31ae1faa592019-08-2639Web安全

上一篇文章,我们讲了IoT路由的装备在理论上的平安性和可以的平安破绽,本文,我们就来实测一下。 NAND闪存转储 在阅历了最初的波折以后,我们把NAND闪存的焊接都给拆了,并把它和DATAMAN读卡器相连。几分钟后,我们胜利地举行了一次Flash转储。为了准确起见,我们转储了两次,效果都是雷同的。 如今我们已胜利举行了NAND转储,这意味着我们可以最先提取固件并最先剖析文件的构造了。 起首,我们下载了转储东西,它异常棒,是任何NAND转储的首选东西。 我们在网上搜刮了一些关于NAND 闪存芯片组MT29F1G08ABADA的信息。只管该芯片的申明书上写的是1G的存储空间,但现实上,读卡器的NAND转储量为138.4 MB。 然后我们查了芯片组的idcode。老实说,这花了不少时候搜刮,PTP的Dave (@tautology0) 上有许多关于这方面的申明。 如今让我们看看Binwalk会给我们带来什么输出效果: Binwalk是用于搜刮给定二进制镜像文件以猎取嵌入的文件和代码的东西。 详细来说,它被设想用于辨认嵌入固件镜像内的文件和代码。 可以看出,该文件中有许多风趣的部份。让我们先来看看UBI部份,我们将运用DD从dump.bin文件中提取该部份内容。 提取很顺遂!让我们看看它是不是真的云云: 果真是!那我们继承吧! 统统出人意料的顺遂! 如今已胜利地提取了固件,看起来我们也同时具有了root文件体系和Ewon应用程序文件体系。 我们将起首引见Root文件体系,因为我们以为这将使你能更好地相识Ewon体系是怎样构建的。 老实说,“init.d”中只需一个文件是有意义的,这个文件的作用就是启动Ewon效劳。“init.d”中没有其他用户,没有ssh的私钥,没有暗码哈希。 如今,让我们进入Ewon SquashFS。 SquashFS文件构造看起来像是特地针对Ewon环境的,并安装在/opt/ewon/上。 我们提取的大多数文件夹都是空的,但bin/和patch/文件夹有许多有价值的信息。patch/ folder以下所示: patch/folder中的这些文件仅用于从上次运转的固件、一些较新的二进制文件和一些较新的库中举行更新。 一样,该文件夹的大部份都很无聊,但它确切表明它们经常在装备的更新中增加linux-arm二进制文件和库。 在Andrew (@cybergibbons) 提醒以后,我们如今老是扫描文件夹构造来寻觅任何可实行剧本(bash剧本): 这两个文件,虽然都运用了基础的bash剧本,但现实上只供应了构建信息,如今还没有任何协助我们的东西。 进入bin/folder尝尝: 如今,我们有一个二进制文件,一些设置剧本和一些bash剧本。别的,另有看起来像Java二进制文件和jar文件的文件。我想我们先从设置文件最先,然后再议论Ewon二进制文件。 设置文件异常简朴,正如你所看到的,显著是针对一组差别的运转环境,At91sam9g (AT91SAM9G35是400 MHz的ARM926嵌入式MPU,支撑高带宽通讯和先进的用户界面),QEMU(可以用于调试目标)和RaspberryPi(一样用于调试和构建目标)。 设置异常相似,大多数值完整雷同,只需称号和操纵体系相干的内容发作了变化。 以下是all_config.conf文件的一个示例: 第二行写的是 “一切产物的合营部份”,并列出了Flexy和Cozy Ewon产物,这是不是意味着它们是同一种产物? 虽然有许多相似的地方,但也有一些庞大的差别。比方,指在经由历程互联网供应轻松的长途接见。 另外,就是端口443(HTTPS)。为何Cozy的浏览器运用https,而Flexy却没有呢? 我们试图运转Java二进制文件,不过它却出错了,我们愿望从该文件中,可以确切给我们供应更多有效的信息: 运用JD-Gui (JD-GUI是一个用于Java编程言语源代码“.class”文件反编译软件,你可以运用JD-GUI中文版浏览和重修源代码的马上接见要领和字段,以代码高度体式格局来显现反编译过来的代码),我们对它试图接见的JAR文件举行了反编译: 稍后,我们可以会深入研究该JAR文件,然则如今让我们先来看看Ewon二进制文件。 对Ewon二进制文件举行逆向剖析 正如你从之前的截图中看到的那样,我们在NAND 内存转储中并没有看到太多有价值信息。我们愿望web界面运用预先构建的东西(如apache2、lighthttpd或nginx)举行设置,并使用vsftpd或相似的东西对FTP举行设置。 逆向二进制文件时,可以直接处置惩罚字符串。 我在二进制文件“暗码,通报和私有”中,对字符串做了一些基础的grep操纵 将二进制文件运用IDA Pro(反汇编东西)剖析,可以马上举行反汇编。IDA Pro(并不圆满,但却异常有用。 我们想要观察的第一件事就是对设置文件中的存储值(VPN密钥、暗码)举行加密,经由一段时候的搜刮,我们发明了这个函数cfgcrypt_DecryptCfgStr。 下面是该函数的IDA规划图: 以下是更细致的图: 在Dave的协助下,我们可以盘算出标头“#_1_”运用了什么加密要领。 另外,在现实的Ewon comcfg.txt文件中有一个“CryptMode:1”设置,对我们的剖析异常有协助。

实测一款IoT路由的安全性怎样?从web到硬件,我们进行了周全的破绽发掘和剖析(下)  Web安全 第1张

在此期间,我们没有看到任何此标头的其他变化情势,然则我们以为这就是在Ewon二进制文件中屡次涌现雷同密钥和IV硬编码的缘由。 假如CryptMode设置为> 2,则该函数将举行毛病输出并将该值设置为0。 我们置信,假如它设置为“#_0_”,就将运用“blowfish”而且我们运用了Key和IV,但在这类情况下,它被设置为“#_1_”。 那末“#_1_”做什么的呢? 有一个名为“cfgcrypt_CheckCryptmode”的函数,它担任搜检加密字符串的标头并依据标头值集返回一个值,记着,它老是被视为“#_1_”。 但是,这个函数在应用程序中从未被挪用。奇怪的是,“cfgcrypt_DecryptCfgStr”函数中有相似的代码库。 这看起来像是完整的代码重用,因为基础上一切的加密息争密函数都归结为“ctr_encrypt”函数。 另有就是“ctr_decrypt”函数:
会聚黑客的伶俐 | KCon 2019在京隆重落幕 KCon 黑客大会,汇聚黑客的智慧。 知道创宇出品,追求干货有趣的黑客大会。 KCon 2019 ——无 界 时间:8 月 23 – 25 日 地点:北京·昆泰嘉瑞文化中心   8月24日,由知道创宇主办的第八届KCon黑客大会(简称KCon 2019)在北京昆泰嘉瑞文化中心正式拉开大幕。KCon 2019以「无界」为主题,旨在与大家一同开启关于“∞”的探索,钻研技术宇宙中的无穷奥秘。   在首日两场专业的闭门培训结束后,伴随着热情洋溢的摇滚乐演出,KCon 2019演讲日干货技术分享
详细缘由我们就不讲了,但“ctr_encrypt”代码中包括一个XOR函数。 对固件举行逆向剖析 本文一最先,我们就遇到了固件题目,你可以从Ewon网站轻松下载该固件。 但仔细观察一下,就会发明加密在起作用: 很显著,因为版本号、宣告日期等都是以明文情势存在,所以它们得落款都是按着递次来的。 如今想一想我们剖析过的Ewon二进制文件,可以从中寻觅援用固件文件名的任何东西。 第一组效果是对SDcard的援用: 因而,假如固件出如今SD卡上,它会尝试更新。老实说,这是相称规范的,然则,从用户文档中,你只需将“ewonfwr.edf”文件上传到FTP(假如你有身份验证)。然后,Ewon将依据须要处置惩罚固件。 我们花了很长时候寻觅一些可以满足我们对固件文件感兴趣的东西,直到有时发明一个名为“loem_UncryptFile”的函数,它看起来像是在打开一个文件并挪用解密功用。 本质上来说,正在发作的事变历程以下:Ewon二进制检测固件文件是不是上传到ftp效劳器或SD卡上,加载清单(搜检固件版本、日期等),然后解密固件文件和数据。 固件加密是基于Blowfish,而且对二进制文件的密钥举行了硬编码。 如今,找到固件文件。 检察数据后,我们决议加密部份从0x0140h最先,一向继承到文件的末端。我们在这些位置剪切文件,并尝试运用二进制文件中的给定密钥举行解密。 我们可以对数据举行恰当的解密,但好像它只解密了一半。这就奇怪了,按说只须要领准确,应当悉数解密才是。 检察二进制文件,好像供应的IV是二进制文件在晋级之前建立固件的备份,那末我们须要的这个IV到底在那里? 为此,我们请教了Dave,Dave示意假如它不在二进制文件中,那就可以在固件中,这显著很罕见。 让我们返回固件并检察对应的标头,此时要寻觅可以运用的8位数据流。删除加密的渣滓后,这就是我们剩下的,唯一显著的8位数据流是底部凸起显现的,背面是一些空字节,然后是固件加密数据。 然后将其反应到python剧本中,看看会发作什么: 如今,才算完整解密! 让我们来看看文件体系,特别是“update.sh”文件: “update.sh”文件只是来自于NAND闪存转储的Ewon / opt文件夹。所以,没有新的东西可以发掘! 假如有的话,让我们看看位于二进制文件中的历程。

实测一款IoT路由的安全性怎样?从web到硬件,我们进行了周全的破绽发掘和剖析(下)  Web安全 第2张

我们发明了潜伏的敕令实行! 为此,我们变动了update.sh,从新编译了固件,并从新上传了固件的更高版本号。 令人恼火的是,这也没有见效。看起来这是一个CRC文件,因为我们在Ewon日记中获得一个“rift – invalid checksum”毛病: 让我们返回二进制文件搜检一下: 可以看出,有一个CRC16x2校验(CRC是一种罕见的校验,而CRC16呢,重要是因为校验效果是16个位)。如今,我们还不能100%肯定它是不是在固件中的加密blob上,照样在squashfs blob预加密上。SquashFS是一套基于Linux内核运用的紧缩只读文件体系。该文件体系可以紧缩体系内的文档,inode以及目次,文件最大支撑2^64字节。 以下是两个固件版本之间的比较,显著,为了削减差别,我们将每一个文件中雷同的位设置为雷同的。 赤色部份代表标头中的差别的地方,再仔细看,我们可以看到两个文件之间的赤色地区有一些相似的地方。

实测一款IoT路由的安全性怎样?从web到硬件,我们进行了周全的破绽发掘和剖析(下)  Web安全 第3张

让我们在固件文件的加密博客上运转一些CRC校验和,看看是不是可以在标头中看到任何相干信息!
Ver 13_2s1 = 8.433 mb (Latest)
CRC16 (encrypted blob) = AF3C
CRC32 (encrypted blob) = F388096F
Ver 13_0s0 = 12,589 mb (Not Latest)
CRC16 (encrypted blob) = A65D
CRC32 (encrypted blob) = 259BC946
输出的信息以下所示: 这是加密blob的CRC32值,在标头文件中的0x00B0处,让我们尝试修正一下: 效果发明,修正不胜利。末了,又得返回Ewon二进制文件。在搜刮二进制文件时,我们遇到了一个函数,它对标头部份做了一个扼要引见。 “riftp_EDFHeaderPtr”是固件文件的开首,所以我们把它设为“0”。在第144行,假如它不即是v10(CRC16×2的盘算效果),就会和rfiftp_EDFHeaderPtr + 168的值举行比较。 在固件中的0xA8处,存在CRC值。太好了!我们还会从二进制文件中的其他信息位中绘制了一些其他位: 不过,令我们疑心的一件事是CRC盘算历程。我们晓得它是从二进制代码盘算加密blob上的CRC16x2,但盘算历程倒是以下历程: 因而,Dave和我们决议重写CRC16x2函数,看看我们能获得什么:

实测一款IoT路由的安全性怎样?从web到硬件,我们进行了周全的破绽发掘和剖析(下)  Web安全 第4张

虽然我们获得了差别的效果,但我们置信我们在朝着准确的方向举行。 应用重写的函数,我们还对固件文件举行了暴力破解,以检察是不是有任何部份与标头中存储的值婚配: 经由测试,没有婚配的部份。 我们尝试了大批差别的CRC16校验,差别的poly对象以及xor位,但没有任何效果。这意味着,我们没法婚配0xA8处的值。 假如你想继承,发起你浏览该链接。 破绽表露时候表 2019-01-29:初次与Ewon联络,并向他们报告了相干破绽; 2019-02-04: Ewon确认了破绽; 2019-05-28:来自Ewon的复兴,供应了测试固件; 2019-06-04:对Ewon的破绽举行公然; 2019-06-18: 更新后的FW 13.3s0最先宣告; 减缓步伐和发起 1.不要将你的Ewon Flexy或任何ICS装备,接入大众互联网; 2.变动默许凭证; 3.运用恰当的接见掌握,将你的IT和OT收集举行切割; 4.将免费的Talk2M平安衔接云与你的Ewon装备合营运用,HMS Networks公司宣告推出Talk2M® Easy Setup,这是免费VPN客户端eCatcher中的一个新的设置导游。Talk2M Easy Setup仅需USB驱动或SD卡即可以让Ewon® Cosy在线完成Talk2M平安长途云端衔接。 在Talk2M Easy Setup中,新的导游可指导用户完成最一般的Internet衔接设置。设置完成后,可以将天生的设置文件保存在当地PC、USB闪存盘或SD卡上。末了,将存储介质插进去到对应的Ewon产物中,以后路由器就可以衔接到Talk2M Secure Cloud了。 5.更新你的Ewon Flexy固件并使其保持最新版本; 6.假如你没法更新ICS(比方,装备太旧),请斟酌缭绕它构建分外的平安掌握。 本文翻译自:https://www.pentestpartners.com/security-blog/ewon-flexy-iot-router-a-deep-dive/

网友评论