Kali学习笔记12:服务扫描

关于什么是服务扫描不多介绍,通俗来看:

我已经扫描到目标机器某个端口开放,接下来我需要知道开放这个端口的是什么应用

 

情景:

我的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

 

posted @ 2018-09-16 17:06  4ra1n  阅读(720)  评论(1编辑  收藏  举报