基于网络特征的新型授权机制设想

来源:互联网 发布:淘宝电商 编辑:程序博客网 时间:2024/06/06 00:30

1 背景介绍


目前,多数的license注册机采用基于锚点信息生成特定注册文件的授权机制,锚点信息一般为硬件信息,比如网卡mac地址,硬盘/主板/BIOS序列号,CPUID等,要保证授权机制的可行性与可靠性,必须保证锚点信息是稳定、可靠且唯一的。

在当前复杂多变的部署环境中,该注册机制面临诸多现实问题。例如,硬件设备的合理变更——CPU/磁盘/网卡的扩容或更换,虚拟环境下硬件参数的配置与迁移。

动态调整的场景越来越多,传统的锚点信息既不能保证稳定性又不能保证唯一性;同时随着技术的发展,局域网内的mac地址也可以自行配置,因此就具有了伪造的可能,本机的mac信息不再可靠。

除此之外,在不同的虚拟环境中,获取硬件信息(如存储序列号)的方式不稳定、不统一、不支持,也是常常要面对的一个难题。

难获取

不支持,接口复杂不统一

不稳定

硬件,虚拟环境变更

不可靠

mac地址可配置

不唯一

虚拟环境镜像

既然在某些复杂环境中,主机不再能够提供稳定可靠的锚点信息,那么我们把范围扩大,扩展至多主机(集群),扩展至局部网络,是否可以通过提取网络中的特征信息,来构建新型的授权机制呢?

要实现基于网络指纹的授权机制,需要思考两个问题:首先,我们能在网络中获取哪些信息?其次,基于这些信息,我们能做哪些事?前者是一切的基础,是大前提,我们获取和掌握的信息越多、越全面,就越有主动权去思考和实现授权的策略。

2 信息采集


2.1 采集说明


对信息采集过程,有以下几点说明:

a)        采集内容:采集注册服务器所在网络中所有可用的、有价值的特征信息,包括网络节点的ip,端口,服务类型,操作系统,mac信息等等;

b)       采集方式:必须完全依据tcp/ip网络的特性,通过非交互的、不被觉察的方式进行;

c)        采集范围:主要探测子网/虚拟子网的特征信息,当然也可以扩展至外层网络,对外层网络中的中枢节点,重要的服务节点进行采集;


2.2 本地缓存表


本机缓存的arp表,包含了最近一定时间内(比如15分钟)有数据交互的主机的ip和mac信息。

实例如下表:

Address

HWtype

HWaddress

Iface

20.0.9.109

ether

c8:c8:c8:c8:00:30

enp4s0

20.0.9.54

ether

34:97:f6:82:36:9a

enp4s0

200.200.200.6

ether

70:e1:4c:68:1b:73

enp3s0

20.0.9.1

ether

1c:6f:65:e5:03:35

enp4s0

20.0.9.92

ether

00:1f:d0:c6:d2:33

enp4s0

200.200.200.64

ether

00:e0:4e:03:94:ad

enp3s0

200.200.200.100

ether

70:f3:95:03:21:99

enp3s0

20.0.9.40

ether

00:1f:d0:67:b9:72

enp4s0

20.0.9.204

ether

50:e5:49:b8:22:20

enp4s0


2.3 探测某网段中所有存在的主机 ip及 mac 信息


网段中处于同一子网的可以探测到mac地址信息,不在同一子网的只能探测到ip信息,对于获取的mac地址,会根据地址分配规则去推测出厂家信息,如是VMware,还是Cisco;

详细信息如下:

[root@hadoop-slave3 ~]# nmap -sP 200.200.200.*

 

Starting Nmap 6.40 ( http://nmap.org ) at 2017-08-17 10:25 CST

Nmap scan report for 200.200.200.3

Host is up (0.00080s latency).

MAC Address: B4:14:89:25:79:60 (Cisco Systems)

Nmap scan report for 200.200.200.4

Host is up (0.0018s latency).

MAC Address: EC:3E:F7:73:E4:62 (Unknown)

Nmap scan report for 200.200.200.6

Host is up (0.00016s latency).

MAC Address: 70:E1:4C:68:1B:73 (Unknown)

Nmap scan report for 200.200.200.7

Host is up (0.00013s latency).

MAC Address: 00:24:1D:9D:8C:D4 (Giga-byte Technology Co.)

Nmap scan report for 200.200.200.10

Host is up (0.00036s latency).

MAC Address: 00:0C:29:E0:56:D3 (VMware)

Nmap scan report for 200.200.200.12

Host is up (0.00010s latency).

MAC Address: 0C:82:68:E7:D8:EF (Tp-link Technologies Co.)

Nmap scan report for 200.200.200.18

Host is up (0.000094s latency).

MAC Address: 00:1F:D0:C8:AD:21 (Giga-byte Technology Co.)

Nmap scan report for 200.200.200.24

Host is up (0.00025s latency).

MAC Address: 6C:F0:49:8D:95:29 (Giga-byte Technology Co.)

Nmap scan report for 200.200.200.25

Host is up (0.00029s latency).

MAC Address: 00:26:AB:69:40:5B (Seiko Epson)

Nmap scan report for 200.200.200.42

Host is up (0.00042s latency).

MAC Address: E4:1F:13:2B:50:99 (IBM)

Nmap scan report for 200.200.200.43

Host is up (0.00013s latency).

MAC Address: 00:1A:4D:7E:A5:3B (Giga-byte Technology Co.)

Nmap scan report for 200.200.200.50

Host is up (0.00017s latency).

MAC Address: 60:EB:69:5C:F3:C6 (Quanta computer)

Nmap scan report for 200.200.200.51

Host is up (0.00015s latency).

MAC Address: 00:1A:4D:83:D8:C7 (Giga-byte Technology Co.)

Nmap scan report for 200.200.200.52

Host is up (0.00013s latency).

MAC Address: 00:15:17:D5:98:2C (Intel Corporate)

Nmap scan report for 200.200.200.53

.

.

.

Nmap scan report for 200.200.200.253

Host is up (0.00015s latency).

MAC Address: 00:50:56:97:60:79 (VMware)

Nmap scan report for 200.200.200.44

Host is up.

Nmap done: 256 IP addresses (105 hosts up) scanned in 18.20 seconds

You have new mail in /var/spool/mail/root

2.4 探测网络内某节点信息


主机信息探测,是基于网络扫描来实现的,可以探测出主机的服务端口,服务类型(数据库/Web Server等),防火墙配置,并根据操作系统的特征指纹去推测出可能的操作系统信息。

详细信息如下:

[root@hadoop-slave3 ~]# nmap -sS -PO -A -v 20.0.9.15

 

Starting Nmap 6.40 ( http://nmap.org ) at 2017-08-17 10:10 CST

NSE: Loaded 110 scripts for scanning.

NSE: Script Pre-scanning.

Initiating ARP Ping Scan at 10:10

Scanning 20.0.9.15 [1 port]

Completed ARP Ping Scan at 10:10, 0.01s elapsed (1 total hosts)

Initiating Parallel DNS resolution of 1 host. at 10:10

Completed Parallel DNS resolution of 1 host. at 10:10, 0.04s elapsed

Initiating SYN Stealth Scan at 10:10

Scanning 20.0.9.15 [1000 ports]

Discovered open port 139/tcp on 20.0.9.15

Discovered open port 135/tcp on 20.0.9.15

Discovered open port 445/tcp on 20.0.9.15

Discovered open port 6000/tcp on 20.0.9.15

Discovered open port 10000/tcp on 20.0.9.15

Discovered open port 10001/tcp on 20.0.9.15

Discovered open port 10002/tcp on 20.0.9.15

Discovered open port 10004/tcp on 20.0.9.15

Discovered open port 5432/tcp on 20.0.9.15

Discovered open port 16001/tcp on 20.0.9.15

Completed SYN Stealth Scan at 10:10, 0.07s elapsed (1000 total ports)

Initiating Service scan at 10:10

Scanning 10 services on 20.0.9.15

Completed Service scan at 10:11, 48.58s elapsed (10 services on 1 host)

Initiating OS detection (try #1) against 20.0.9.15

adjust_timeouts2: packet supposedly had rtt of -100038 microseconds.  Ignoring time.

adjust_timeouts2: packet supposedly had rtt of -100038 microseconds.  Ignoring time.

adjust_timeouts2: packet supposedly had rtt of -100001 microseconds.  Ignoring time.

adjust_timeouts2: packet supposedly had rtt of -100001 microseconds.  Ignoring time.

adjust_timeouts2: packet supposedly had rtt of -124969 microseconds.  Ignoring time.

adjust_timeouts2: packet supposedly had rtt of -124969 microseconds.  Ignoring time.

NSE: Script scanning 20.0.9.15.

Initiating NSE at 10:11

Completed NSE at 10:11, 30.00s elapsed

Nmap scan report for 20.0.9.15

Host is up (0.00064s latency).

Not shown: 990 closed ports

PORT      STATE SERVICE        VERSION

135/tcp   open  msrpc          Microsoft Windows RPC

139/tcp   open  netbios-ssn

445/tcp   open  netbios-ssn

5432/tcp  open  postgresql     PostgreSQL DB

6000/tcp  open  X11            NetSarang XManager

10000/tcp open  msrpc          Microsoft Windows RPC

| ndmp-version: 

|_  ERROR: Failed to get host information from server

10001/tcp open  msrpc          Microsoft Windows RPC

10002/tcp open  msrpc          Microsoft Windows RPC

10004/tcp open  msrpc          Microsoft Windows RPC

16001/tcp open  bandwidth-test MikroTik bandwidth-test server

MAC Address: 68:F7:28:1B:E7:F0 (Unknown)

Device type: general purpose

Running: Microsoft Windows 2008|7

OS CPE: cpe:/o:microsoft:windows_server_2008::sp2 cpe:/o:microsoft:windows_7::- cpe:/o:microsoft:windows_7::sp1 cpe:/o:microsoft:windows_8

OS details: Microsoft Windows Server 2008 SP2, Microsoft Windows 7 SP0 - SP1, Windows Server 2008 SP1, or Windows 8

Uptime guess: 0.054 days (since Thu Aug 17 08:53:22 2017)

Network Distance: 1 hop

TCP Sequence Prediction: Difficulty=260 (Good luck!)

IP ID Sequence Generation: Busy server or unknown class

Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

 

Host script results:

| nbstat: 

|   NetBIOS name: PC-20141221QFZN, NetBIOS user: <unknown>, NetBIOS MAC: 68:f7:28:1b:e7:f0 (unknown)

|   Names

|     PC-20141221QFZN<00>  Flags: <unique><active>

|     WORKGROUP<00>        Flags: <group><active>

|_    PC-20141221QFZN<20>  Flags: <unique><active>

| smb-os-discovery: 

|   OS: Windows 7 Ultimate 7601 Service Pack 1 (Windows 7 Ultimate 6.1)

|   OS CPE: cpe:/o:microsoft:windows_7::sp1

|   Computer name: PC-20141221QFZN

|   NetBIOS computer name: PC-20141221QFZN

|   Workgroup: WORKGROUP

|_  System time: 2017-08-17T10:17:28+08:00

| smb-security-mode: 

|   Account that was used for smb scripts: <blank>

|   User-level authentication

|   SMB Security: Challenge/response passwords supported

|_  Message signing disabled (dangerous, but default)

|_smbv2-enabled: Server supports SMBv2 protocol

 

TRACEROUTE

HOP RTT     ADDRESS

1   0.63 ms 20.0.9.15

 

NSE: Script Post-scanning.

Read data files from: /usr/bin/../share/nmap

OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .

Nmap done: 1 IP address (1 host up) scanned in 82.09 seconds

           Raw packets sent: 1023 (46.610KB) | Rcvd: 1184 (58.262KB)




3 网络指纹


3.1 概念


信息指纹的灵感来源于人类的指纹,人类的指纹由遗传与环境共同作用决定,能对个体身份进行唯一标识。

信息指纹就是提取“信息”的特征值,形成一个特征矩阵,然后根据特征矩阵调用特定的算法,例如MD5,将其转化为一组代码,这组代码就称为标识这个信息的指纹。

网络指纹,就是以网络信息为特征库,生成能唯一标识一组网络的字节码指纹,构建指纹的过程可分为特征抽取和指纹计算两步。

 

 

 

 

3.2 特征表


特征抽取是至关重要的一步,是构建网络指纹信息的基础,特征的结构和策略会直接影响网络指纹的有效性。

在对特征抽取过程进行设计之前,需要明白一点,那就是特征的本质是过滤器!


网络特征码的提取,也是同样的道理。

特征表的结构大致如下:

特征表结构

网络信息

网络

网关ip

网关mac

ip

活跃数目

列表

mac

数目

列表

厂商信息

统计特征

系统信息

统计特征

 

 

节点信息

主机

类型

数目

交换机

类型

数目

业务信息

web server

类型

数目

DB

类型

数目

dns server

类型

数目

dhcp server

类型

数目

其他

 

 

 

 

4 注册与授权流程


基于网络信息实现安全、可靠的授权,既需要保证网络的唯一性,又需要保证注册服务器的唯一性,前者保证当前网络与注册时的基准网络一致,后者保证当前网络中有且只有一台注册服务器在运行。


4.1 网络唯一性


网络唯一性的保障流程:



4.2 注册服务的唯一性


ARP(地址解析协议),是根据IP地址获取物理地址的一个TCP/IP协议,主机在发送信息之前,将包含目标IP地址的ARP请求广播到同一子网内的所有主机,并接收返回消息,以此确定目标的物理地址。

地址解析协议是建立在网络中各个主机相互信任的基础上的,网络上的主机可以自主发送ARP应答消息,因此,可以通过发送特定IP的ARP请求,来确认子网内是否存在另外的注册服务器。



如上图所示,合法安装的注册服务器会定期向网络中广播arp请求,其中ip信息为特殊值,暂且称为magic ip。与此同时,非法的注册服务器会探测所有广播的arp信息,如果发现存在请求ip为magic ip 的arp包时,则发送arp应答请求。当合法的注册服务器接收到arp应答请求时,说明注册服务器不唯一。


5 算法与策略

待续


6 产品级约束

待讨论

原创粉丝点击