目录
攻击机:linux kali
靶机:win7、win10和metasploittable2
kali内通过DNS或IP地址收集目标信息
1、Whois
用来查询域名注册信息数据库的工具,一般的域名注册信息会包含域名所有者、服务商、注册日期等等,这些信息在做渗透攻击之前是很有价值的
注:进行whois查询时不能带有www、ftp等前缀,机构在注册域名时通常会注册一个上层域名,其子域名由自身的域名服务器管理,在whois数据库查询失败
2、Nslookup(查询指定域名对应的ip地址)
nslookup命令:nslookup -type=参数 domain
参数 | 作用 |
---|---|
A | 对ip地址解析 |
AAAA | 地址记录 |
AFSDB | 文件系统数据库服务器记录 |
ATMA | ATM地址记录 |
CNAME | 别名记录 |
ISDN | 域名对应的ISDN号码 |
MB | 存放指定邮箱的服务器 |
MG | 邮件组记录 |
MINFO | 邮件组和邮箱的信息记录 |
MR | 改名的邮箱记录 |
MX | 查找邮件转发服务器 |
NS | 名字服务器记录 |
PTR | 反向记录 |
RP | 负责人记录 |
RT | 路由穿透记录 |
SRV | TCP服务器信息记录 |
TXT | 域名对应的文本信息 |
X25 | 域名对应的X.25地址记录 |
实例:
┌──(root💀kali)-[~/桌面]
└─# nslookup -type=A baidu.com
Server: 192.168.200.2
Address: 192.168.200.2#53
Non-authoritative answer:
Name: baidu.com Address: 220.181.38.148
Name: baidu.com Address: 220.181.38.251
┌──(root💀kali)-[~/桌面]
└─# nslookup -type=MX baidu.com
Server: 192.168.200.2
Address: 192.168.200.2#53
Non-authoritative answer:
baidu.com mail exchanger = 15 mx.n.shifen.com.
baidu.com mail exchanger = 20 mx1.baidu.com.
baidu.com mail exchanger = 20 jpmx.baidu.com.
baidu.com mail exchanger = 20 mx50.baidu.com.
baidu.com mail exchanger = 20 usmx01.baidu.com.
baidu.com mail exchanger = 10 mx.maillb.baidu.com.
3、host
(有时候我们会搜索到主机名而不是ip地址,出现这种情况可以用host工具)
4、ICMP Ping
Ping(全称Packet Internet Grope,英特网包探索器)。用于测试网络连接的程序,由于在网络管理和维护工作中使用频率非常高,几乎所有操作系统都集成了这个工具,Ping程序会发送一个ICMP echo请求消息给目的主机,并报告应答情况
通过ping探测主机是否活跃
MSF内主机探测与端口扫描
一、主机探测
MSF关于主机发现模块
-
arp_sweep
-
ipv6_multicast_ping
-
ipv6_neighbor
-
upd_probe
-
upd_sweep
-
... ...
(1)想使用metasploit框架,需要启用metasploit所依赖的postgresql数据库
在kali Linux上启动postgresql命令【systemctl start postgresql】,然后启动msfconsole
(2)上述的主机探测模块位于auxiliary/scanner/discovery中
模块 | 作用 |
---|---|
auxiliary/scanner/discovery/arp_sweep | ARP扫描本地网络探测 |
auxiliary/scanner/discovery/ipv6_multicast_ping | IPv6本地Ping探测 |
auxiliary/scanner/discovery/ipv6_neighbor | IPv6本地邻居探测 |
auxiliary/scanner/discovery/ipv6_neighbor_router_advertisement | 使用路由器公告IPv6本地邻居探测 |
auxiliary/scanner/discovery/empty_udp | 基于UDP的空探测器 |
auxiliary/scanner/discovery/udp_probe | 基于UDP的服务探测器 |
auxiliary/scanner/discovery/udp_sweep | 发送UDP数据包探测指定主机是否活跃,并发现UDP服务 |
arp_sweep模块主机探测
ARP 协议是根据目标主机的 IP 地址获取对应的 MAC 地址。如果目标主机存在,将返回 MAC 地址。在TCP/IP网络环境中,一台主机在发送数据帧前需要使用ARP将目标IP地址转换成MAC地址,而这个转换过程是需要通过发送ARP请求来完成。利用这一点,用户可以基于 ARP 协议对目标主机进行扫描,来判断目标主机是否启用。
(1)使用auxiliary/scanner/discovery/arp_sweep模块,show options查看需要设置的参数,yes为必选
(2)必须设置rhosts,选择性设置threads(线程)
(3)exploit后,可以看见扫出了3个靶机ip[注:192.168.200.1和192.168.200.2为虚拟网卡]
Nmap主机探测
与主机发现相关的nmap参数
参数 | 作用 |
---|---|
-sP | 使用ping探测主机 |
-sn | Ping Scan只进行主机发现,不进行端口扫描 |
-P0/Pn | 默认视为指定的主机已开启,跳过主机发现阶段 |
-PS | 使用TCP ACK的方式来发现 |
-PA | 使用TCP SYN的方式来发现 |
-PU | 使用UDP Ping的方式来发现 |
-PY | 使用SCTP的方式来发现 |
-PE/-PP/-PM | 使用ICMP echo/timestamp/netmask扫描 |
-PR | 使用ARP Ping的方式扫描 |
-R/-n | 总是进行DNS解析/不进行DNS解析 |
二、端口扫描
MSF关于端口探测的模块
-
/portscan/ack
-
/portscan/ftpbounce
-
/portscan/syn
-
/portscan/tcp
-
/portscan/xmas
-
... ...
上述的端口扫描模块位于auxiliary/scanner/portscan中
模块 | 作用 |
---|---|
auxiliary/scanner/portscan/ack | ack方式探测防火墙未屏蔽的端口 |
auxiliary/scanner/portscan/ftpbounce | 通过FTP bounce攻击原理对TCP服务枚举 |
auxiliary/scanner/portscan/syn | 使用TCP SYN方式探测开放的端口 |
auxiliary/scanner/portscan/tcp | 通过一次完整的TCP判断端口开放 |
auxiliary/scanner/portscan/xmas | 更为隐秘的扫描方式,发送FIN、URG等 |
使用syn端口扫描
(1)使用auxiliary/scanner/portscan/syn模块,show options查看需要配置的参数
(2)设置rhosts和threads
(3)exploit
使用Nmap端口探测
与端口扫描相关的参数
参数 | 作用 |
---|---|
-sS | 使用TCP SYN的方式对目标主机进行扫描 |
-sT | 适用于找出TCP和UDP端口,需要完成三次握手 |
-sA | 使用TCP ACK的方式对目标主机进行扫描 |
-sU | 寻找目标主机打开的UDP端口,不需要发送任何的SYN包 |
-F | 扫描TOP100端口 |
-r | 不进行端口随机打乱扫描 |
当不输入此参数时,Nmap会将需要扫描的端口进行打乱,这样的扫描更不易被WAF检测到 |
整理了自己常用Nmap扫描参数
参数 | 作用 |
---|---|
nmap -T4 -A -v ip | 快速扫描,-A将会综合扫描和深入服务枚举,-v显示余 |
nmap -O ip | OS操作系统类型探测 |
nmap -sS -Pn/P0 ip | -sS执行一次隐秘的TCP扫描,-Pn不执行ping命令,视默认主机为存活 |
nmap -sS -sV ip | TCP扫描的同时探测版本 |
高级TCP空闲扫描
在了解TCP空闲扫描时,首先多嘴一下一般端口的探测原理。去判断端口是否开放,其中一种方法(三次握手协议)是先向该端口发送一个 SYN包,如果进行扫描的目标端口是开放的,则它会返回一个 SYN/ACK 包,反之,关闭的,则返回 RST(异常终止)包,一般通过这种方法判断扫描的目标端口是否开放,并进行枚举
进行TCP空闲扫描前,我们需要在网络上定位一台使用递增IP帧(每个IP数据包都有一个分段身份识别号【IP ID】。大多数操作系统只是简单的把该识别号递增,所以它的IP帧是可以被预测的,利用这个特点计算出它下一个IP帧的标识)机制的空闲主机(空闲主机可以理解为在一定时间内不会发送任何数据包被我们利用的傀儡机)
举个例子:假设已知一台主机 a ,它属于空闲主机,在一定时间内不会发送任何数据包。我们向这台主机a略过SYN包,直接发送一个 SYN/ACK 包。由于主机a没有对我们发送过 SYN 包,但是却接收到SYN/ACK 包之后,它无法理解,根据三次握手协议,会返回给我们一个 RST (异常终止)包,包里会附有 IP ID。已知主机a的IP地址后,我们伪装成主机 a 对目标进行端口探测,如果主机a实际的IP帧与预测的IP帧发生断档,则可以推测该目标端口可能是开放的
使用Metasploit框架内的scanner/ip/ipidseq模块扫描出满足TCP空闲扫描的主机a
一、启动Kali自带的MSF
命令:【msfconsole】
二、使用扫描空闲主机的模块【use auxiliary/scanner/ip/ipidseq】,并且【show options】查看需要进行配置的内容
三、进行配置,在Required下,yes代表必须设置,no代表可以不更改,设置RHOSTS的一个扫描范围,同时设置THREADS的线程数,50或者100
四、exploit
五、扫描完成之后发现一个空闲主机192.168.200.145(由于198.168.200.134是我们的攻击目标,所以不算扫描出两个) ,使用msf内的nmap中的-sI获取192.168.200.145对目标进行扫描
命令:【nmap -PN -sI 傀儡机IP 目标IP】
nmap -PN -sI 192.168.200.145 192.168.200.134
使用空闲扫描,即可不利用自身ip进行扫描获取目标开放端口