介绍: 后门工厂,可以向一个正常的程序植入恶意代码并且能保证原正常程序功能完整性,以至于当免杀时用户根本不能够察觉这是一个木马! 使用范围: 适用于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方式注入,他是分片注入或是先注入一个小程序再下载完整的木马。 参数:- root@kali:~# backdoor-factory
- __________ __ .___
- \______ \_____ ____ | | __ __| _/____ ___________
- | | _/\__ \ _/ ___\| |/ // __ |/ _ \ / _ \_ __ \
- | | \ / __ \\ \___| </ /_/ ( <_> | <_> ) | \/
- |______ /(____ /\___ >__|_ \____ |\____/ \____/|__|
- \/ \/ \/ \/ \/
- ___________ __
- \_ _____/____ _____/ |_ ___________ ___.__.
- | __) \__ \ _/ ___\ __\/ _ \_ __ < | |
- | \ / __ \\ \___| | ( <_> ) | \/\___ |
- \___ / (____ /\___ >__| \____/|__| / ____|
- \/ \/ \/ \/
-
- Author: Joshua Pitts
- Email: the.midnite.runr[-at ]gmail<d o-t>com
- Twitter: @midnite_runr
- IRC: freenode.net #BDFactory
-
- Version: 3.3.1
-
- Usage: backdoor.py [options]
-
- Options:
- -h, --help 显示帮助信息
- -f FILE, --file=FILE 接要插入后门的正常程序
- -s SHELL, --shell=SHELL
- 要插入的shellcode,接show显示可用的
- -H HOST, --hostip=HOST
- 在反弹shell中使用,设为攻击者主机地址
- -P PORT, --port=PORT 在绑定shell中使用,设为绑定的端口;在反弹shell中使用,设为攻击者监听的端口
- -J, --cave_jumping 此选项可使用多个cave
- -a, --add_new_section
- 直接在程序后面添加section,更容易成功但是免杀效果较差
- -U SUPPLIED_SHELLCODE, --user_shellcode=SUPPLIED_SHELLCODE
- 接用户自定义的shellcode(确保平台类型相符)
- -c, --cave 检查有哪些cave,可接-l参数
- -l SHELL_LEN, --shell_length=SHELL_LEN
- 与-c参数配合,过滤最小的cave大小
- -o OUTPUT, --output-file=OUTPUT
- 接输出文件
- -n NSECTION, --section=NSECTION
- 自定义section名字,要小于7个字符
- -D, --delete_original
- 删除源程序文件
- -S, --support_check 检查正常程序是否支持植入后门
- -M, --cave-miner 高级使用方式,去更智能的植入shellcode
- -q, --no_banner Kills the banner.
- -v, --verbose 显示更详细的输出信息
- -T IMAGE_TYPE, --image-type=IMAGE_TYPE
- 架构类型:x86,x64,all(默认)
- -Z, --zero_cert 去覆盖移除PE文件的数字签名
- -X, --xp_mode 默认不支持XP系统,可加此选项来支持
- -L, --patch_dll 默认给DLLs打补丁(植入后门),此选项可以禁用
- -R, --runas_admin 环境检查:PE的二进制中含有'requestedExecutionLevel level="highestAvailable"'.这个字符串时,说明软件必须以管理员权限运行。
- 如果没检测到这个但是requestedExecutionLevel又确实存在它将去尝试植入highestAvailable。
- -O DISK_OFFSET, --disk_offset=DISK_OFFSET
- Starting point on disk offset, in bytes. Some authors
- want to obfuscate their on disk offset to avoid
- reverse engineering, if you find one of those files
- use this flag, after you find the offset.
- -F FAT_PRIORITY, --fat_priority=FAT_PRIORITY
- 对于MACH-O格式. If fat file, focus on which arch to
- patch. Default is x64. To force x86 use -F x86, to
- force both archs use -F ALL.
- -B BEACON, --beacon=BEACON
- For payloads that have the ability to beacon out, set
- the time in secs
- -m PATCH_METHOD, --patch-method=PATCH_METHOD
- 植入方式:'manual','automatic'和 onionduke
- -b SUPPLIED_BINARY, --user_malware=SUPPLIED_BINARY
- For onionduke. Provide your desired binary.
-
- -A, --idt_in_cave EXPERIMENTAL By default a new Import Directory Table
- is created in a new section, by calling this flag it
- will be put in a code cave. This can cause bianry
- failure is some cases. Test on target binaries first.
- -C, --code_sign For those with codesigning certs wishing to sign PE
- binaries only. Name your signing key and private key
- signingcert.cer and signingPrivateKey.pem repectively
- in the certs directory it's up to you to obtain
- signing certs.
- -d DIR, --directory=DIR
- This is the location of the files that you want to
- backdoor. You can make a directory of file backdooring
- faster by forcing the attaching of a codecave to the
- exe by using the -a setting.
- -w, --change_access This flag changes the section that houses the codecave
- to RWE. 默认激活,否则可能会失败。
- -i, --injector This command turns the backdoor factory in a hunt and
- shellcode inject type of mechanism. Edit the target
- 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。
|