Metasploit是The Metasploit Framework的简称,也可以叫做MSF! MSF高度模块化即框架由多个module组成,是全球最受欢迎的工具。
Metasploit Framework(MSF)远远不仅仅是一个漏洞的集合。这是您可以建立和利用您的自定义需求的基础架构。这使您可以专注于您独特的环境,而不必重新发明轮子。
官网地址:Metasploit | Penetration Testing Software, Pen Testing Security | Metasploit
项目地址:GitHub - rapid7/metasploit-framework: Metasploit Framework
》》》MSF模块框架介绍《《《
1.1:模块介绍
模块名称 | 模块作用 |
Auxiliary | 负责执行信息收集、扫描、嗅探、指纹识别、口令猜测和Dos攻击等功能的辅助模块 |
Exploits | 利用系统漏洞进行攻击的动作,此模块对应每一个具体漏洞的攻击方法(主动、被动) |
Payloads | 成功exploit之后,真正在目标系统执行的代码或指令。 |
Post | 后期渗透模块。在取得目标系统远程控制权后,进行一系列的后渗透攻击动作,如获取敏感信息、跳板攻击等操作 |
Encoders | 对payload进行加密,躲避AntiVirus检查的模块 |
Nops | 提高payload稳定性及维持大小。在渗透攻击构造恶意数据缓冲区时,常常要在真正要执行的Shellcode之前添加一段空指令区, 这样当触发渗透攻击后跳转执行ShellCode时,有一个较大的安全着陆区,从而避免受到内存 地址随机化、返回地址计算偏差等原因造成的ShellCode执行失败,提高渗透攻击的可靠性。 |
注意:MSF默认存放模块目录如下...目录下的6个子文件夹对上面6个模块一一对应....1.2:MSF接口
接口命令 | 接口介绍 |
Msfconsole | 命令行控制台用户界面 |
Armitage | 基于Msf的可视化高级后渗透工具 |
Web View | MSF网页界面,存在MAC OS中... |
1.3:MSF更新
apt update //更新软件源列表
apt install metasploit-framework
1.4:MSFDB管理
》》》基础操作《《《
msfdb init # start and initialize the database postgresql
msfdb reinit # delete and reinitialize the database
msfdb delete # delete database and stop using it
msfdb start # start the database
msfdb stop # stop the database
msfdb status # check service status
msfdb run # start the database and run msfconsole
》》》扩展操作《《《
操作命令 | 命令解释 |
db_status |
|
db_rebuild_cache |
|
db_disconnect |
|
db_connect |
|
db_nmap |
|
creds |
|
vulns |
|
loot |
|
db_export/db_import |
|
1.5:MSF基础操作
控制台命令支持TAB补全,支持外部命令的执行(系统命令)
操作命令 | 命令解释 |
help或? |
|
connect |
|
show |
|
search |
|
info |
|
use |
|
set/setg |
|
unset/unsetg |
|
save |
|
check |
|
back |
|
run或exploit |
|
sessions |
|
load/unload |
|
loadpath |
|
route |
|
二:永恒之蓝漏洞
见发布文章的第一篇
三:Meterpreter
Meterpreter通常作为漏洞溢出后的攻击载荷所使用,攻击载荷在触发漏洞后能够返回给我们一个控制通道。
Meterpreter是Metasploit框架的一个扩展模块,可以调用Metasploit的一些功能,对目标系统进行更深入的渗透,这些功能包括反追踪、纯内存工作模式、密码哈希值获取、特权提升、跳板攻击等。
》》》常规命令《《《
- shell 建立一个被控主机的CMD终端
3.1:核心命令
background – 将当前会话移动到背景
exit、quit – 终止 meterpreter 会话
help – 帮助菜单
migrate – 移动到一个指定的 PID 的活动进程
run – 执行以后它选定的 meterpreter 脚本
use – 加载 meterpreter 的扩展
load– 加载其他辅助组件
3.2:文件命令
cat -读取并输出到标准输出文件的内容
cd -更改目录对受害人
del -删除文件对受害人
download-从受害者系统文件下载
edit-用 vim编辑文件
getlwd -打印本地目录
getwd -打印工作目录
lcd -更改本地目录
lpwd -打印本地目录
ls -列出在当前目录中的文件列表
mkdir -在受害者系统上的创建目录
pwd -输出工作目录
rm -删除文件
rmdir -受害者系统上删除目录
upload-从攻击者的系统往受害者系统上传文件
3.3:网络命令
ipconfig -显示网络接口的关键信息,包括 IP 地址、 等。
portfwd -端口转发
portfwd add‐l 33333 ‐r 192.168.5.101 ‐p 3389 #将远程主机的3389端口转发到本地的3333端口
route -查看或修改受害者路由表
#在全局给指定的session增删路由
route add 192.168.11.0 255.255.255.0 1 #在session1中添加到达192.168.11.0网段的路由
route add 192.168.12.0 255.255.255.0 1 #在session1中添加到达192.168.12.0网段的路由
route add 0.0.0.0 0.0.0.0 1 #在session1中添加到达0.0.0.0/24网段的路由
route del 192.168.12.0 255.255.255.0 2 #在session2中删除到达192.168.12.0网段的路由
route print #打印路由信息
#也可以在进入session下添加路由
run autoroute -s 192.168.11.0/24 #添加到达192.168.11.0网段的路由
run autoroute -s 192.168.12.0/24 #添加到达192.168.12.0网段的路由
run autoroute -s 0.0.0.0/0 #添加到达0.0.0.0/0的路由
run autoroute -p #打印路由信息
3.4:系统命令
clearev -清除了受害者的计算机上的事件日志
drop_token -被盗的令牌
execute-执行命令
getpid -获取当前进程 ID (PID)
getprivs -尽可能获取尽可能多的特权
getuid -获取作为运行服务器的用户
kill -终止指定 PID 的进程
ps -列出正在运行的进程
reboot-重新启动受害人的计算机
reg -与受害人的注册表进行交互
rev2self -在受害者机器上调用 RevertToSelf()
shell -在受害者计算机上打开一个shell
shutdown-关闭了受害者的计算机
steal_token -试图窃取指定的 (PID) 进程的令牌
sysinfo -获取有关受害者计算机操作系统和名称等的详细信息
3.5:用户界面命令
keyscan_dump -键盘记录软件的内容转储
keyscan_start -启动键盘记录软件
keyscan_stop -停止键盘记录软件
screenshot-抓去 meterpreter 桌面的屏幕截图
set_desktop -更改 meterpreter 桌面
webcam_list – 列举摄像头
webcam_snap – 抓取摄像头影像图片
webcam_stream – 抓取摄像头影像流
3.6:其他常用命令
hashdump – 抓取HASH密码(SAM文件中的值)
getsystem – 获得系统管理员权限
四:MSFVenom
msfvenom取代了之前版本的msfpayload和msfencode,常用于生成木马并在目标机器上执行,使其在本地机器kali的MSF中上线....
》》》常用参数《《《
-l, --list <type> 列出指定模块的所有可用资源. 模块类型包括: payloads, encoders, nops,......all
-p, --payload < payload> 指定需要使用的payload(攻击荷载)。也可以使用自定义payload,几乎是支持全平台的
-f, --format < format> 指定输出格式
-e, --encoder <encoder> 指定需要使用的encoder(编码器),指定需要使用的编码,如果既没用-e选项也没用-b选项,则输出raw payload
-a, --arch < architecture> 指定payload的目标架构,例如x86 还是 x64 还是 x86_64
-o, --out < path> 指定创建好的payload的存放位置
-b, --bad-chars < list> 设定规避字符集,指定需要过滤的坏字符。例如:不使用 '\x0f'、'\x00'
-n, --nopsled < length> 为payload预先指定一个NOP滑动长度
-s, --space < length> 设定有效攻击荷载的最大长度,就是文件大小
-i, --iterations < count> 指定payload的编码次数
-c, --add-code < path> 指定一个附加的win32 shellcode文件
-x, --template < path> 指定一个自定义的可执行文件作为模板,并将payload嵌入其中
-k, --keep 保护模板程序的动作,注入的payload作为一个新的进程运行
-v, --var-name < value> 指定一个自定义的变量,以确定输出格式
-t, --timeout <second> 从stdin读取有效负载时等待的秒数(默认为30,0表示禁用)
-h,--help 查看帮助选项
--platform < platform> 指定payload的目标平台