Kali提供了几个不同的工具,对识别远程主机上的开放端口、操作系统和安装的服务很有用。这些功能大部分都可以用nmap完成。尽管我们将集中讨论使用nmap的例子,但基本原则也适用于其他工具。
端口扫描是连接到TCP和UDP端口的过程,以确定在目标设备上运行什么服务和应用程序。在TCP/IP中,任何计算机上的TCP和UDP都有65535个端口。一些端口已知与特定服务有关(例如,TCP 20和21是文件传输协议(FTP)服务的常用端口)。
前1024个是众所周知的端口,大多数定义的服务都在这个范围内的端口上运行;被接受的服务和端口由IANA维护(http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml)。
尽管对特定的服务有公认的端口,如网页服务默认为80端口,但服务也可以被定向到任何端口。当服务容易受到攻击时,这个办法经常被用来隐藏特定的服务。然而,如果攻击者完成了端口扫描没有发现预期的服务,或发现它使用了一个不寻常的端口,他们将进一步侦察。
nmap通用端口映射工具依赖于主动堆栈指纹识别。nmap将特定的数据包发送到目标系统,并通过对这些数据包的响应来识别操作系统。nmap要正常工作,至少需要有一个监听端口打开,而且操作系统必须是已知指纹的,指纹的副本存储在本地数据库中。
使用nmap进行端口发现是非常嘈杂的,它会被网络安全设备发现并记录下来。要记住的一些要点如下:
•注重隐蔽性的攻击者和渗透测试者只会测试遵循杀伤链的必要端口,以达到他们的特定目标。如果他们要利用网络服务器中的漏洞发起Web攻击,将搜索可访问端口80/443或端口8080/8443的目标。
•大多数端口扫描器都有默认的扫描端口列表,以确保你知道该列表中的内容和被省略的内容,同时考虑TCP和UDP端口。
•要完成成功的扫描,需要对TCP/IP和相关协议、网络以及特定工具如何工作有深刻的了解。例如,SCTP是网络上越来越常见的协议,但它很少在企业网络中被测试。
•端口扫描即使做得很慢也会影响网络。一些旧的网络设备和特定供应商的设备在接收或传输端口扫描时将被锁定,从而将扫描变成拒绝服务攻击。
•用于扫描端口的工具,特别是nmap,正在进行功能方面的扩展。它们也可以用来检测漏洞和利用简单的安全漏洞。