基于网络特征的新型授权机制设想
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;
详细信息如下:
[[email protected] ~]# 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等),防火墙配置,并根据操作系统的特征指纹去推测出可能的操作系统信息。
详细信息如下:
[[email protected] ~]# 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 产品级约束
待讨论