搜索
查看: 1033|回复: 0

backdoor-factory

[复制链接]

1839

主题

2255

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11913
发表于 2017-3-19 20:09:27 | 显示全部楼层 |阅读模式
介绍:

后门工厂,可以向一个正常的程序植入恶意代码并且能保证原正常程序功能完整性,以至于当免杀时用户根本不能够察觉这是一个木马!

使用范围:

适用于windows PE X32/X64 和Linux ELF X32/X64(OSX)

(注:PE(Portable Executable)是win32平台下可执行文件遵守的数据格式。常见的可执行文件(例如:"*.exe"文件和“*.dll”文件)都是典型的PE文件。一个可执行文件不光包含了二进制的机器代码,还会自带许多其他信息,如字符串、菜单、图标、位图、字体等。PE文件格式规定了所有的这些信息在可执行文件中如何组织。在程序被执行时,操作系统会按照PE文件格式的约定的地方准确地定位各种类型的资源,并分别装入内存的不同区域。如果没有这种通用的文件格式约定,试想可执行文件装入内存将会变成一件多么困难的事情!PE文件格式把可执行文件分成若干个数据节(section),不同的资源被存放在不同的字节中)

它的实质:

向二进制文件中增加或删除代码内容

(注:将bdf植入后门的方法叫做Patch:通过替换EXE,DLL,注册表等方法修复系统漏洞或问题的方法)

它的原理:

1:对于附加方式植入:

是直接在源程序的末尾添加section,然后更改PE的执行指向,这会改变文件的大小,而且是整段shellcode在一起,虽然成功率高但是免杀效果较差。

2:代码洞注入:

代码洞,即二进制文件中超过两个字节的连续X00区域(代码片段间的区域),根据统计判断代码洞是编译器在进行编译时造成的,不同编译器造成的代码洞的大小不一样,如图:

正确的改变这里的内容不会影响源程序的运行。

而此注入就是将shellcode写入这里面,因为是覆盖,不会改变文件大小(很明显,代码洞数必须大于等于shellcode,不过shellcode一般都很小)

可能一个代码洞就能放下shellcode,不过为了免杀效果可以将shellcode分开放在多个代码洞里。

注意:

这样可能会破坏正常程序功能,生成后需要检查。

某些受保护的二进制程序无法patch

        对于代码洞不足的程序,也可以使用stager方式注入,他是分片注入或是先注入一个小程序再下载完整的木马。

参数:
  1. root@kali:~# backdoor-factory
  2. __________                __       .___                  
  3. \______   \_____    ____ |  | __ __| _/____   ___________
  4. |    |  _/\__  \ _/ ___\|  |/ // __ |/  _ \ /  _ \_  __ \
  5. |    |   \ / __ \\  \___|    </ /_/ (  <_> |  <_> )  | \/
  6. |______  /(____  /\___  >__|_ \____ |\____/ \____/|__|  
  7.         \/      \/     \/     \/    \/                  
  8. ___________              __                              
  9. \_   _____/____    _____/  |_  ___________ ___.__.      
  10. |    __) \__  \ _/ ___\   __\/  _ \_  __ <   |  |      
  11. |     \   / __ \\  \___|  | (  <_> )  | \/\___  |      
  12. \___  /  (____  /\___  >__|  \____/|__|   / ____|      
  13.      \/        \/     \/                   \/            

  14.          Author:    Joshua Pitts
  15.          Email:     the.midnite.runr[-at ]gmail<d o-t>com
  16.          Twitter:   @midnite_runr
  17.          IRC:       freenode.net #BDFactory
  18.         
  19.          Version:   3.3.1
  20.         
  21. Usage: backdoor.py [options]

  22. Options:
  23.   -h, --help            显示帮助信息
  24.   -f FILE, --file=FILE  接要插入后门的正常程序
  25.   -s SHELL, --shell=SHELL
  26.                         要插入的shellcode,接show显示可用的
  27.   -H HOST, --hostip=HOST
  28.                         在反弹shell中使用,设为攻击者主机地址
  29.   -P PORT, --port=PORT  在绑定shell中使用,设为绑定的端口;在反弹shell中使用,设为攻击者监听的端口
  30.   -J, --cave_jumping    此选项可使用多个cave
  31.   -a, --add_new_section
  32.                         直接在程序后面添加section,更容易成功但是免杀效果较差
  33.   -U SUPPLIED_SHELLCODE, --user_shellcode=SUPPLIED_SHELLCODE
  34.                         接用户自定义的shellcode(确保平台类型相符)
  35.   -c, --cave            检查有哪些cave,可接-l参数
  36.   -l SHELL_LEN, --shell_length=SHELL_LEN
  37.                         与-c参数配合,过滤最小的cave大小
  38.   -o OUTPUT, --output-file=OUTPUT
  39.                         接输出文件
  40.   -n NSECTION, --section=NSECTION
  41.                         自定义section名字,要小于7个字符
  42.   -D, --delete_original
  43.                         删除源程序文件
  44.   -S, --support_check   检查正常程序是否支持植入后门
  45.   -M, --cave-miner      高级使用方式,去更智能的植入shellcode
  46.   -q, --no_banner       Kills the banner.
  47.   -v, --verbose         显示更详细的输出信息
  48.   -T IMAGE_TYPE, --image-type=IMAGE_TYPE
  49.                         架构类型:x86,x64,all(默认)
  50.   -Z, --zero_cert       去覆盖移除PE文件的数字签名
  51.   -X, --xp_mode         默认不支持XP系统,可加此选项来支持
  52.   -L, --patch_dll       默认给DLLs打补丁(植入后门),此选项可以禁用
  53.   -R, --runas_admin     环境检查:PE的二进制中含有'requestedExecutionLevel level="highestAvailable"'.这个字符串时,说明软件必须以管理员权限运行。
  54.                           如果没检测到这个但是requestedExecutionLevel又确实存在它将去尝试植入highestAvailable。
  55.   -O DISK_OFFSET, --disk_offset=DISK_OFFSET
  56.                         Starting point on disk offset, in bytes. Some authors
  57.                         want to obfuscate their on disk offset to avoid
  58.                         reverse engineering, if you find one of those files
  59.                         use this flag, after you find the offset.
  60.   -F FAT_PRIORITY, --fat_priority=FAT_PRIORITY
  61.                         对于MACH-O格式. If fat file, focus on which arch to
  62.                         patch. Default is x64. To force x86 use -F x86, to
  63.                         force both archs use -F ALL.
  64.   -B BEACON, --beacon=BEACON
  65.                         For payloads that have the ability to beacon out, set
  66.                         the time in secs
  67.   -m PATCH_METHOD, --patch-method=PATCH_METHOD
  68.                         植入方式:'manual','automatic'和 onionduke
  69.   -b SUPPLIED_BINARY, --user_malware=SUPPLIED_BINARY
  70.                         For onionduke. Provide your desired binary.

  71.   -A, --idt_in_cave     EXPERIMENTAL By default a new Import Directory Table
  72.                         is created in a new section, by calling this flag it
  73.                         will be put in a code cave.  This can cause bianry
  74.                         failure is some cases. Test on target binaries first.
  75.   -C, --code_sign       For those with codesigning certs wishing to sign PE
  76.                         binaries only. Name your signing key and private key
  77.                         signingcert.cer and signingPrivateKey.pem repectively
  78.                         in the certs directory it's up to you to obtain
  79.                         signing certs.
  80. -d DIR, --directory=DIR
  81.                         This is the location of the files that you want to
  82.                         backdoor. You can make a directory of file backdooring
  83.                         faster by forcing the attaching of a codecave to the
  84.                         exe by using the -a setting.
  85.   -w, --change_access   This flag changes the section that houses the codecave
  86.                         to RWE. 默认激活,否则可能会失败。
  87.   -i, --injector        This command turns the backdoor factory in a hunt and
  88.                         shellcode inject type of mechanism. Edit the target
  89.                         settings in the injector module.
复制代码
实例演示:

1:检查是否可注入:

显示可注入,为win32程序

2:显示有哪些payload可用

可以发现,他写着对于WinIntelPE32s有以下可用的shellcode。

(注:IAT—import address table:指针指向WinAP地址,被称为thunks(形实转换程序),地址预定义)

3:使用附加方式生成vnc0.exe,单一代码洞生成vnc1.exe,多代码洞生成vnc2.exe做下对比

注意:因为实验环境是XP,所以需要加-X参数,否则运行出错。

这里显示了最小需要的cave要418,所以自动过滤了一些cave,然后需要在下面列出的cave中选择一个。

这里可以看出分片了,所以最小只需要41个长度,然后显示了总的长度

这时会选择多个cave,选了后可以看到原来的还剩的空间就已经变小了。。。

4:在线免杀测试:

其实复制出来后本地已经免杀了。

以上是查杀率,圈出China比较常见的几款,其实这东西看运气,没准下次生成就躲过去了,然后圈出来还有个目的就是,一般都是渗透特定用户或者是对于基数大的用户,所以可以本地安装杀软来做测试(不知道在线检测的方式,反正本地可能特征码安全,但行为会被发现)。

5:本地测试:

本机测试3个都免杀,但是在XP里面vnc1.vnc2执行出错,接着在win10里面程序正常,但是运行时被自带defender拦截了。。。

6:结束:

可见,需要针对特定系统,特定安全软件来生成shell,而且生成后要检查它能否正常执行,在运行时是否免杀,及是否能取得shell。





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?Join BUC

x
过段时间可能会取消签到功能了
您需要登录后才可以回帖 登录 | Join BUC

本版积分规则

Powered by Discuz!

© 2012-2015 Baiker Union of China.

快速回复 返回顶部 返回列表