扫描对外公开的服务器信息,是 nmap 的主要用途之一。为了识别服务器上运行的是哪种服务,nmap 把主流服务的特征信息存储在 nmap-services-probes 和 nmap-os-db 这两个文件中。其中前者包含应用程序的特征信息,后者放置操作系统的特征信息。不同操作系统上,这两个文件的位置不一样,可以通过 locate 或其他相似的全盘搜索工具找出它们具体的位置。
接下来让我们解读下这两个文件,看看 nmap 是如何利用这些信息来识别服务的。
服务识别
当我们指定 -sV 选项运行 nmap 时,它会根据 nmap-services-probes 文件里面存储的是服务类型特征数据去判断具体扫描到的是哪种服务。
nmap-services-probes 看上去比较乱。事实上,如果这部分数据可以组织成 xml 或 yaml 这种树型结构的格式,看上去会明显清晰得多。
贴个片段看下:
Probe TCP GetRequest q|GET / HTTP/1.0\r\n\r\n|
rarity 1
ports 1,70,79,80-85,88,113,139,143,280,497,505,514,515,540,554,591,620,631,783,888,898,900,901,1026,1080,1042,1214,1220,1234,1314,1344,1503,1610,1611,1830,1900,2001,2002,2030,2064,2160,2306,2396,2525,2715,2869,3000,3002,3052,3128,3280,3372,3531,3689,3872,4000,4444,4567,4660,4711,5000,5427,5060,5222,5269,5280,5432,5800-5803,5900,5985,6103,6346,6544,6600,6699,6969,7