在渗透过程中,当我们成功攻陷一台服务器作为下一步内网渗透的跳板后,通常需要进行主机存活探测和端口扫描,以此来收集内网资产信息。主机存活探测通常使用ICMP协议发送“回显请求”报文,等待“回显应答”报文。如果主机存活,那么会返回“回显应答”报文;如果主机未存活,那么不会返回“回显应答”报文。
1. 使用Nmap进行主机存活探测
Nmap可以使用-sP进行主机发现,此时会执行ping扫描,并输出产生响应的主机,不会进行更深层次的测试。Nmap可以很方便地得出网络上有多少主机正在运行或者监视服务器正在运行。在默认情况下,-sP会发送一个ICMP回声请求和一个TCP报文到80端口。
扫描单个IP:nmap -sP 10.20.125.51
扫描整个内网网段:nmap -sP 10.20.125.1/24(10.20.125.1~10.20.125.254)
注意:nmap -sS 10.20.125.0/24 的扫描结果很全,存活主机和开放的端口都会显示出来。
拓展
Nmap还支持使用-PS进行主机发现,该选项发送一个设置了SYN标志位的空TCP报文。默认目的端口为80,不同的端口也可以作为选项指定,甚至可以指定一个以逗号分隔的端口列表(如-PS 22,23,25, 80),在这种情况下,每个端口会被并发扫描。发送一个SYN标志位数据包意味着对方正试图建立一个TCP连接。如果目标端口是关闭的,就会返回一个RST(复位)数据包。如果目标端口是开放的,目标端口就会进行TCP三步握手的第二步,回应一个SYN/ACK TCP报文。然后,运行Nmap的机器会关闭这个正在建立的连接,发送一个RST而非ACK报文,否则,一个完全的连接将会建立。
需要注意的是,当使用-PS参数进行主机探测时,Nmap会默认进行端口扫描,但这些信息的扫描结果对主机发现并没有什么作用,反而会降低扫描的速度,因此这时需要使用-sn参数禁用端口扫描,nmap -sn -PS 10.20.125.51
同样地,Nmap可以发送SYN标志位的空TCP报文进行主机探测,还可以使用-PA参数发送ACK标志位的TCP报文。由于ACK报文通常会被识别成伪造的ACK报文而被丢弃,因此解决这个问题的方法是通过指定-PS和-PA来既发送SYN又发送ACK,即nmap -sn -PA -PS 10.20.125.51
2.使用MSF进行主机存活探测
Metasploit是一款开源的渗透测试框架平台,该工具有七大模块,分别是辅助模块(Auxiliary)、攻击模块(Exploit)、攻击载荷模块(Payload)、后渗透模块(Post)、编码模块(Encoder)、用于规避防御的模块(Evasion),以及用于生成无害、良性的“无操作”指令的模块(nop)。其中,辅助模块是用于辅助操作的模块,例如网络扫描、枚举、漏洞扫描、登录暴力破解、模糊测试、蜘蛛爬虫(遍历)、数据提取等,可使用该模块进行主机存活探测。使用步骤如下:
(1)msfconsole
(2)use auxiliary/scanner/discovery/arp_sweep
(3)options查看模块需要设置的选项
(4)set rhosts 10.20.125.53(10.20.125.53/24)
(5)run
如果想要查看某个模块的基本信息、功能等,可以使用如下命令(以arp_sweep为例):
info auxiliary/scanner/discovery/arp_sweep