IDA Pro > IDA Pro教程 > 技术问题 > 对 D-Link 后门进行逆向工程

对 D-Link 后门进行逆向工程

发布时间:2022-10-09 17: 01: 45

D-Link是常用于各种网络环境中的硬件品牌,今天我们对它进行后门逆向分析。

一时兴起,我为Dir-100 Reva下载了固件v1.13。Binwalk迅速找到并提取了Squashfs文件系统,很快我将固件的Web服务器(/bin/web)加载到IDA中:

/bin/webs中的字符串

基于上述字符串列表,/bin/web二进制是THTTPD的修改版本,为路由器提供管理界面。它似乎已通过Alphanetworks(D-Link的衍生)进行了修改。他们甚至足够深思,可以用字符串的“alpha”来准备许多自定义功能名称:

Alphanetworks的自定义功能

 

alpha_auth_check函数听起来很有趣!

 

此功能是从几个不同的位置调用的,最著名的是来自alpha_httpd_parse_request:

对alpha_auth_check的函数调用

 

我们可以看到alpha_auth_check传递了一个参数(无论存储在寄存器$s2中的什么);如果alpha_auth_check返回-1(0xFFFFFFFF),代码跳转到alpha_httpd_parse_request,否则继续处理请求。

 

之前对寄存器$s2的使用进行了进一步检查,alpha_auth_check表明它是一个指向数据结构的指针,其中包含指向接收到的HTTP请求的各个部分的char*指针,例如HTTP标头和请求的URL:

$s2是指向数据结构的指针

 

我们现在可以为alpha_auth_check并开始枚举数据结构的元素:

 

结构http_request_t

 {

 字符未知[0xB8];

 字符*url;//在数据结构的偏移量0xB8

 };

int alpha_auth_check(struct http_request_t*request);

 

alpha_auth_check本身是一个相当简单的函数。它针对http_request_t结构中的一些指针执行一些strstr和strcmp,然后调用check_login,这实际上是进行身份验证检查。如果调用任何strstr's/strcmp's或check_login成功,则返回1;否则,它将浏览器重定向到登录页面并返回-1:

alpha_auth_check代码片段

 

那些strstr看起来很有趣。他们获取请求的URL(在http_request_t数据结构的偏移量0xB8处,如前所述)并检查它是否包含字符串“graphic/”或“public/”。这些是设备web目录下的子目录,如果请求的URL包含这些字符串之一,则无需身份验证即可允许请求。

 

然而,它是最终的strcmp,它被证明更有说服力:

alpha_auth_check中一个有趣的字符串比较

 

之间执行strcmp http_request_t结构内偏移0xD0处的字符串指针和字符串“xmlset_roodkcableoj28840ybtide”如果字符串匹配,check_login函数调用并且alpha_auth_check返回1(身份验证OK)。

 

在谷歌上快速搜索“xmlset_roodkcableoj28840ybtide”字符串,几年前只找到一篇俄罗斯论坛的帖子,其中指出这是/bin/webs二进制文件中的一条“有趣的线”。我不得不同意。

 

那么,这个神秘的字符串与之相比是什么呢?如果我们回顾调用树,我们会看到http_request_t结构指针由几个函数传递:

事实证明,http_request_t结构中偏移量0xD0处的指针由httpd_parse_request函数填充:

检查用户代理HTTP标头

使用指向User-Agent标头字符串的指针填充http_request_t+0xD0

 

这段代码实际上是:

 

 if(strstr(header,"User-Agent:")!=NULL)

 {

 http_request_t->0xD0=header+strlen("User-Agent:")+strspn(header,"\t");

 }

 

知道http_request_t中的偏移量0xD0包含指向User-Agent标头的指针,我们现在可以重新构造alpha_auth_check函数:

 

  #define AUTH_OK 1

 #define AUTH_FAIL-1

 int alpha_auth_check(struct http_request_t*request)

 {

 if(strstr(request->url,"graphic/")||

 strstr(request->url,"public/")||

 strcmp(request->user_agent,"xmlset_roodkcableoj28840ybtide")==0)

 {

 return AUTH_OK;

 }

 else

 {

 //These arguments are probably user/pass or session info

 if(check_login(request->0xC,request->0xE0)!=0)

 {

 return AUTH_OK;

 }

 }

 return AUTH_FAIL;

 }

 

换句话说,如果浏览器的用户代理字符串为“xmlset_roodkcableoj28840ybtide”(无引号),则无需任何身份验证即可访问web界面并查看/更改设备设置(显示了DI-524UP,因为我没有DIR-100,而DI-524BUP使用相同的固件):

访问DI-524UP的管理页面

 

根据HTML页面的源代码和一些Shodan搜索结果,可以合理得出以下D-Link设备可能受到影响:

●DIR-100

●DI-624S

●DI-524UP

●DI-604S

●DI-604UP

●DI-604+

●TM-G5240

 

此外,几个Planex路由器似乎也使用相同的固件:

●BRL-04UR

●BRL-04CW

 

原文地址:https://lcx.cc/post/3950/

展开阅读全文

标签:IDA

读者也访问过这里:
邀请您进入交流群 点击扫码
400-8765-888 kefu@makeding.com

专业销售为您服务

欢迎添加好友,了解更多IDA优惠信息,领逆向工程学习资料礼包1份!
热门文章
exe反编译工具哪个好?反编译能力强的工具盘点
随着软件技术的发展,exe(可执行文件)已经成为了电脑、手机等多个平台上的主要软件运行格式,而对于exe文件的反编译也成为了逆向工程中不可缺少的一个步骤。本文将介绍一些常用的exe反编译工具,并评价其优缺点,帮助读者选择合适的工具。
2023-04-12
idapro怎么改为中文
IDA Pro是一款功能强大的反汇编和反编译工具,广泛应用于逆向工程和软件开发领域。在使用IDA Pro时,如果我们不习惯英文界面,可以将其改为中文界面。本文将介绍IDA Pro怎么改为中文界面。IDA Pro界面改成中文主要有两种方法,下面是详细介绍。
2023-04-19
c++反编译工具有哪些
反编译C++代码的工具一般是针对可执行文件和库文件的反汇编和逆向分析工具。本文将给大家介绍c++反编译工具有哪些的内容。市面说的c++反编译工具有很多,下面介绍几款使用认识较多的软件。
2023-04-23
ida如何转伪代码 ida伪代码怎么看
IDA Pro是一款常用的反汇编和反编译工具,可以帮助我们分析二进制文件的实现细节和执行过程,以便更好地理解程序的执行过程和逻辑。在进行逆向工程的过程中,我们经常需要将反汇编结果转换为伪代码,以便更好地进行分析和修改。本文将介绍如何使用IDA Pro转换为伪代码,并简单讲解ida伪代码怎么看。
2023-04-14
ida怎么查找字符串 ida字符串窗口快捷键
在数字化时代,逆向工程作为解密软件和分析程序的关键技术,正日益受到广泛关注。在逆向分析的过程中,IDA(Interactive DisAssembler)是一款备受推崇的工具,它为逆向工程师们提供了强大的功能和灵活的操作。本文将带您深入探讨如何在IDA中查找字符串,优化字符串窗口的使用,并探讨IDA如何将变量转换成字符串,帮助您更加熟练地驾驭这一工具,为逆向分析的世界增添一抹精彩。
2023-09-27
最新文章
ida伪代码是什么语言 如何看懂ida伪c代码
在软件逆向工程里,IDA 这款工具特别有名。它可以帮我们把机器码变成更容易理解的代码。很多人觉得直接看汇编代码太难,于是 IDA 提供了伪代码功能,能把这些机器码“翻译”成像 C 语言那样的代码,方便我们理解。所以,今天我们就来聊聊“ida伪代码是什么语言 如何看懂ida伪c代码”这个问题,希望能让你对IDA伪代码有更清晰的认识。
2024-10-18
ida怎么查看伪代码 ida伪代码能直接修改吗
IDA被广泛应用于反汇编和分析程序代码。不仅支持多种文件格式的分析,还可以生成伪代码。对于许多使用IDA的用户而言,了解“ida怎么查看伪代码 ida伪代码能直接修改吗”是一个重要内容。本文将着重介绍,帮助您掌握IDA在伪代码查看和修改方面的功能。
2024-09-30
怎么用IDA反编译研究软件的逻辑漏洞 如何用IDA反编译研究软件的加壳技术
IDA是一款被广泛使用的反汇编工具。它不仅帮助深入理解编译后的程序,还有安全研究强大的手段,本文将为您介绍“怎么用IDA反编译研究软件的逻辑漏洞 如何用IDA反编译研究软件的加壳技术”,并探讨如何在IDA中查找和分析字符串数据。
2024-09-20
ida如何修改指令返回立即数 ida具备哪些指令修复功能
IDA是一款功能强大的反汇编工具,通过IDA,可以深入理解程序的底层指令进行各种操作,本文将为您介绍“ida如何修改指令返回立即数 ida具备哪些指令修复功能”的相关话题,帮助用户更好地掌握IDA的功能。
2024-09-20
idapro怎么添加常量 idapro常量的属性窗口怎么打开
IDA Pro(Interactive DisAssembler Professional)是一个功能强大的工具,广泛应用于各种逆向工程任务。要高效使用 IDA Pro 进行逆向分析,我们应该了解如何在 IDA Pro 中添加常量,以及如何管理这些常量的属性。本文将为您介绍“idapro怎么添加常量 idapro常量的属性窗口怎么打开”,并提供常量的一些实用指南。
2024-09-11
idapro怎么输出伪代码 idapro怎么导出所有的伪代码
在信息安全和逆向工程领域,IDA Pro作为一种强悍的反汇编和调试工具,广泛用于二进制程序的分析和破解。IDA Pro的核心功能之一是导出伪代码,这对认知分析程序思路至关重要。本文将探讨“idapro怎么输出伪代码 idapro怎么导出所有的伪代码“
2024-09-04

通过微信咨询我们

欢迎添加好友,了解更多IDA优惠信息,领取逆向工程学习资料礼包1份!

读者也喜欢这些内容: