在渗透过程中,当我们成功攻陷一台服务器作为下一步内网渗透的跳板后,通常需要进行主机存活探测和端口扫描,以此来收集内网资产信息。
小王需要使用Nmap对内网的主机进行主机存活探测,确认内网服务器的存活情况。
在本任务中,小王需要利用Nmap发送ICMP协议请求包,从而进行内网主机存活探测。
Nmap是用来探测计算机网络上的主机和服务的安全扫描器。为了绘制网络拓扑图,Nmap发送特制的数据包到目标主机,然后对返回数据包进行分析,从而判断目标主机的存活情况。Nmap是一个用于枚举和测试网络的强大工具,可以对内网进行主机探测、端口扫描和版本扫描等动作。
Nmap可以使用-sP选项进行主机发现。当使用Nmap -sP参数时,Nmap仅执行ping扫描(主机发现),并输出对扫描产生响应的主机。Nmap不会进行更深层次的测试(如端口扫描或者操作系统探测)。Nmap可以很方便地得出网络上有多少机器正在运行或者监视服务器是否正常运行。
在默认情况下,-sP选项会发送一个ICMP回声请求和一个TCP报文到80端口,如图2-1所示。
图2-1 一个ICMP回声请求和一个TCP报文
如果是非特权用户执行扫描,就发送一个SYN报文(用connect()系统调用)到目标主机的80端口。当特权用户扫描局域网上的目标主机时,除非使用了--send-ip选项,否则就会发送ARP请求(-PR)。当防守严密的防火墙位于运行Nmap的源主机和目标网络之间时,推荐读者使用其他高级选项。否则,当防火墙捕获并丢弃探测包或者响应包时,一些主机就不能被探测到。
打开《渗透测试技术》Linux靶机(1),获取靶机的IP地址,IP地址可用于验证Nmap是否成功探测,如图2-2所示。
图2-2 验证Nmap是否成功探测
打开Linux攻击机终端,输入以下命令:
nmap -sP 10.20.125.52
Nmap扫描结果如图2-3所示,“Host is up”表示扫描的IP处于存活状态。
图2-3 Nmap扫描结果
除了可以扫描单个IP,Nmap也可以扫描整个内网网段,使用以下命令就可以扫描10.20.125.52的C段地址。
nmap -sP 10.20.125.52/24
Nmap扫描结果如图2-4所示。
图2-4 Nmap扫描结果
使用Nmap扫描内网存活IP时,可以使用-sP参数,-sP参数支持网段扫描。Nmap对目标主机发起ping扫描,可以根据响应判断主机是否存活。
Nmap还支持使用-PS进行主机发现,该选项发送一个设置了SYN标志位的空TCP报文。默认目的端口为80(可以通过改变nmap.h文件中的DEFAULT-TCP-PROBE-PORT值进行配置),不同的端口也可以作为选项指定,甚至可以指定一个以逗号分隔的端口列表(如-PS22,23,25, 80,113,1050,35000),在这种情况下,每个端口会被并发扫描。
发送一个SYN标志位数据包意味着对方正试图建立一个TCP连接。如果目标端口是关闭的,就会返回一个RST(复位)数据包。如果目标端口是开放的,目标端口就会进行TCP三步握手的第二步,回应一个SYN/ACK TCP报文。然后,运行Nmap的机器会关闭这个正在建立的连接,发送一个RST而非ACK报文,否则,一个完全的连接将会建立。TCP SYN请求与回复如图2-5所示。
图2-5 TCP SYN请求与回复
需要注意的是,当使用-PS参数进行主机探测时,Nmap会默认进行端口扫描,这时需要使用-sn参数禁用端口扫描,-sn参数在活跃主机发现扫描中起到重要的作用。在对目标进行扫描时,通常会默认扫描端口的开放情况、开放端口对应的服务类型,以及其他一些信息。但这些信息的扫描结果对主机发现并没有什么作用,反而会降低扫描的速度。因此,我们需要通过以下命令屏蔽掉对这些信息的默认扫描:
nmap -sn -PS 10.20.125.52
同样地,Nmap可以发送SYN标志位的空TCP报文进行主机探测,还可以使用-PA参数发送ACK标志位的TCP报文。
-PA选项使用和SYN探测相同的默认端口(80),也可以用相同的格式指定目标端口列表。为了使数据尽可能通过防火墙,需要提供SYN和ACK两种ping探测。
Linux Netfilter/iptables 防火墙软件提供--syn选项来实现这种无状态的方法。当这种无状态防火墙规则存在时,发送到关闭目标端口的SYN ping探测(-PS)很可能被封锁。
由于ACK报文通常会被识别成伪造的ACK报文而被丢弃,因此解决这个问题的方法是通过指定-PS和-PA来既发送SYN又发送ACK。
△1.在下列Nmap参数中,不能用于主机存活探测的是( )。
A.-sP
B.-sn
C.-PS
D.-sV
△2.下列关于Nmap的描述错误的是( )。
A.Nmap可以探测主机存活
B.Nmap可以探测主机端口开放
C.Nmap可以探测服务器系统版本
D.Nmap可以扫描网站敏感目录
△△1.请简述Nmap使用-sP参数进行主机存活探测的原理。
△△2.除-sP和-PS外,请举例可用于主机探测的Nmap参数。