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默认打开是图形模式,就是反汇编流程视图,可以用来分析程序函数的具体运行情况。
2021-06-15
IDA的初始使用说明和界面简介
IDA能帮助我们分析恶意软件、分析系统漏洞、验证编译器的性能,其支持在Mac系统、Windows系统、Linux系统中使用,是一款非常优秀的反编译软件。
2021-03-16
最新文章
class文件反编译工具有哪些?class文件反编译之后准确吗?
在当今这个信息技术高速发展的时代,Java语言因其跨平台的特性而广泛应用于各种商业和开源项目中。随之而来的,是对Java字节码(即class文件)的反编译需求日益增长,以便于开发者理解、分析甚至重构已编译的Java程序。
2024-03-19
dll反编译工具哪个好?dll文件用什么软件打开?
在软件开发和安全分析领域,动态链接库(DLL)文件的分析是一个常见而重要的任务。DLL文件因其独特的特性和广泛的应用,成为了逆向工程师和安全研究员的关注焦点。本文将深入探讨“dll反编译工具哪个好,dll文件用什么软件打开”的问题,并详细分析在使用IDA进行DLL文件分析时需要注意的事项,旨在为读者提供一个全面的指南,帮助他们更有效地进行DLL文件的逆向分析。
2024-03-15
exe文件反编译工具有哪些?exe文件反编译成源代码
在当今的软件开发和安全分析领域,逆向工程扮演着极其重要的角色。它不仅可以帮助开发者理解现有软件的内部结构和功能,还能使安全分析师发现潜在的安全漏洞。逆向工程的一个核心步骤就是对可执行文件(如exe文件)进行反编译,以恢复其源代码。本文将详细探讨“exe文件反编译工具有哪些,exe文件反编译成源代码”的问题,并深入分析IDA在程序分析中的作用,旨在为读者提供一份全面而深入的指南。
2024-03-15
IDA静态分析怎么做?IDA静态分析需要多久?
在软件逆向工程与安全分析行业,IDA 因其强大的功能,已成为业内不可或缺的工具之一。尤其是在静态分析方面,IDA提供了一系列高效功能和技术,激励安全分析师和反向工程师全面了解目标软件的内部结构和逻辑。本文将详细讨论ida静态分析怎么做,ida静态分析需要多久,帮助其更有效的运用IDA开展静态分析,掌握静态分析与动态变化实践应用的差别和联系。
2024-03-15
IDA怎么修改字符串内容?IDA修改后怎么保存?
在软件开发和逆向工程领域,IDA Pro是一种极其强悍的工具,广泛用于程序剖析、调试和修改。它不仅支持多种处理器架构,还提供了大量的作用,以适应高档讲解的必须。本文将围绕ida怎么修改字符串内容,ida修改后怎么保存这一主题,详细描述怎样在IDA中更改字符串内容,及其修改后的存放方式。此外,我们还将探讨IDA转变的应用场景,帮助读者更深入地了解IDA的实际应用价值。
2024-03-08
IDA查找字符串快捷键 IDA怎么搜索关键字?
在众多逆向工程和代码分析工具中,IDA(Interactive DisAssembler)无疑是最受欢迎和最强大的之一。它提供了一系列的功能,使得分析复杂的软件成为可能,而对于许多安全研究员和逆向工程师来说,掌握IDA的使用技巧是基本技能之一。特别是在查找特定字符串和搜索关键字方面,IDA提供了快捷有效的方法。本文将深入探讨ida查找字符串快捷键,ida怎么搜索关键字,以及IDA支持的系统范围,旨在帮助用户更加高效地利用IDA进行逆向工程任务。
2024-03-08

通过微信咨询我们

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

读者也喜欢这些内容: