服务扫描

66次阅读

共计 2470 个字符,预计需要花费 7 分钟才能阅读完成。

通过上一篇得到正在开放的端口,是不能绝对的认定哪个端口对应的就是某个服务软件或者协议的端口,这不是绝对的。

下面扫描一些对应端口所开放的服务。

  • Banner 信息
    通过 banner 信息可以获得包括软件开发商,软件名称,服务类型,版本号等信息,有可能通过已知的漏洞和弱点直接渗透到目标主机,当然所有的信息都可能不是真实的,所有有必要结合一些另类的服务识别方法,比如,特征识别和响应字段,而不同的响应可用于识别底层的操作系统。除此外,若想获得对方的 banner 信息,就必须通过直接连接的方法。
  • 简单网络管理协议
    SNMP 大概是所有网络管理员配置起来最容易出错的一项服务了。
  • 识别防火墙并绕过

Python Socket 获取 Banner 信息

最简单的就是通过 nv 来简单查看一下。
Scapy 最主要的作用是向网络里注入数据包,但是它 缺乏对应用层的支持 ,比如很难去发送一个 http 包,ssh 包,它主要针对于三四层网络中包的注入,劫持,嗅探。 此时便需要通过 Scoket 与目标进行 tcp 连接 ,以进行更多的应用层的信息传输。
进入 Python,导入 Scoket 模块:
构建一个最简单的 Socket 连接

>>> import socket
#这是一个建立 socket 的标准指令方式
#创建一个 socket 对象,并构建一个 banner 实例,用以建立一个 tcp 连接,SOCK_STREAM 代表 tcp 连接
>>> banner = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#连接目标端口
>>>banner.connect(("192.168.0.101", 21))
#指定接收数据的大小
>>>banner.recv(4096)
#关闭连接
>>>banner.close()

Python 脚本实现 Banner 信息获取


#!/usr/bin/python
#-*-coding:utf-8-*-
 
import socket
import select
import sys
 
if len(sys.argv)!=4:
    print"Usage __ /banner_get.py [Target -IP]j [Fisrst Port] [Last Port]"
    print"Example __ /banner_get.py 1.0.1.0 1 100"
    print"Example will get banner 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:
    banget = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #表示建立 tcp 连接
    banget.connect((ip.port))
    ready = select.select([banget],[],[],1)# 若超时时间为 1
    if ready[0]:# 如果 ready= 0 表示没有被挂起的
      print"TCP Port"+str(port)+"."+banget.recv(4096)
      banget.close() #记得关闭连接,否则对双方来将都是一种伤害
  except:
    pass

NMAP 获得 Banner 信息

NMAP 获得 banner 信息主要是使用了一个 banner 脚本(nmap 自带的)

nmap -sT 192.168.0.113 -p 100-500 --script=banner.nse
 
Starting Nmap 7.01 (https://nmap.org) at 2016-06-01 11:18 CST
Nmap scan report for 192.168.0.113
Host is up (0.00080s latency).
Not shown: 398 filtered ports
PORT    STATE SERVICE
135/tcp open  msrpc
139/tcp open  netbios-ssn

NMAP 脚本的存放目录

cd /usr/share/nmap/scripts

AMAP

Kali 里面除了一个 NMAP 以外还有一个 AMAP,AMAP 的主要作用便是用来识别端口后所运行的服务

参数: amap -B ip port

其中 nmap 的 - B 参数便是用来发现 banner 信息的。

NMAP 特征识别

nmap 192.168.0.113 -p100-500 -sV
 
Starting Nmap 7.01 (https://nmap.org) at 2016-06-01 11:34 CST
Nmap scan report for 192.168.0.113
Host is up (0.00075s latency).
Not shown: 398 filtered ports
PORT    STATE SERVICE      VERSION
135/tcp open  msrpc        Microsoft Windows RPC
139/tcp open  netbios-ssn  Microsoft Windows 98 netbios-ssn
445/tcp open  microsoft-ds Microsoft Windows 10 microsoft-ds
MAC Address: 5C:F9:DD:6A:02:61 (Dell)
Service Info: OSs: Windows, Windows 98, Windows 10; CPE: cpe:/o:microsoft:windows, cpe:/o:microsoft:windows_98, cpe:/o:microsoft:windows_10
 
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 15.08 seconds

NMAP -sV 参数不再只是简单的探测扫描目标端口,而是会发送一系列复杂的探测包,根据响应特征获得 signature,获得的信息可信度大幅提高

正文完
 0