关于什么是服务扫描不多介绍,通俗来看:
我已经扫描到目标机器某个端口开放,接下来我需要知道开放这个端口的是什么应用
情景:
我的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
如对本文有疑问, 点击进行留言回复!!
linux下文本编辑器vim的使用方法(复制、粘贴、替换、行号、撤销、多文件操作)
网友评论