关于什么是服务扫描不多介绍,通俗来看:
我已经扫描到目标机器某个端口开放,接下来我需要知道开放这个端口的是什么应用
情景:
我的Kali机器IP地址:192.168.22.130
我要扫描的Metasploitable机器IP地址:192.168.22.129
1.先介绍一个小工具:不强大,但是可以考虑使用
nc命令:
我要扫描目标机器的22端口:
发现跑着SSH应用,并且还可以看到操作系统
2.利用Python的Socket模块:
#!/usr/bin/python import socket import select import sys if len(sys.argv) != 4: print "./ban_grab.py [Target IP] [First Port] [Last Port]" print "Example: ./ban_grab.py 10.0.0.5 1 100" print "Example will grab banners for TCP ports 1 through 100 on 10.0.0.5" sys.exit() ip = sys.argv[1] start = int(sys.argv[2]) end = int(sys.argv[3]) for port in range(start, end): try: bangrab = socket.socket(socket.AF_INET, socket.SOCK_STREAM) bangrab.connect((ip, port)) ready = select.select([bangrab], [], [], 1) if ready[0]: print "TCP Poet " + str(port) + " - " + bangrab.recv(4096) bangrab.close() except: pass
使用脚本:
如果脚本是从windows移过来的:
vi xxx.py
:set fileformat=unix
:wq
chmod u+x xxx.py
./xxx.py
使用:
效果不错!
其他工具:
dmitry:-p 是端口扫描参数,-b是Banner信息扫描参数
当然,强大的Nmap工具不可或缺:
-sT:必须基于完整的TCP三次握手
--script:使用内置脚本
当然,想知道具体有哪些?至少有几百个,可以到这个目录看看
有一个工具是专门为服务扫描而开发的:Amap:
-B参数:扫描Banner
指定端口范围:
Banner信息抓取就到这里
这种方式其实并不总能获取到正确的信息,并且获取信息不完整
这时候就需要根据一些特征来识别服务:
再次用到强大的Nmap工具:
-sV参数:“指纹特性”匹配方式来识别
效果相比前面的Banner信息获取方式,好太多!
实际中,十分推荐这种方式,例如上边没有发现的53端口,这里识别了
80端口其他工具只是识别出HTTP,这里甚至知道是Apache的web容器
-sV参数还能解决一个问题:有时候HTTP服务在高位端口(如:8888)
这时候基本无法识别这是一个HTTP服务,而-sV参数依旧可以发现,这就是强大之处
上边提到的Amap工具其实也可以实现:不过不如Nmap详细
虽说能够实现,不过还是推荐Nmap