基于ntlm认证的主机信息识别获取方法
技术领域
1.本公开涉及信息采集技术领域,尤其涉及一种基于ntlm认证的主机信息识别获取方法、装置和电子设备。
背景技术:2.在企业中,需要对内网主机资产进行统计,其中需要明确该主机的主机名、系统版本、mac地址、dns域名等信息。以方便进行资产管理或者根据系统版本进行补丁管理,现有的主机信息收集方案一般分为如下三种:
3.通常是人工登陆主机进行该主机的信息收集;
4.所有主机使用脚本统一收集信息;
5.部署hids,安装agent进行主机信息收集;
6.这三种方案均需要登陆到员工主机或者服务器上进行操作,或留下脚本及agent文件。因此,存在如下问题:
7.人工信息收集效率低下,无法进行批量收集;
8.使用脚本或agent的方式需要保存文件在主机上,破坏原主机生态;
9.成本高、效率低。
技术实现要素:10.为了解决上述问题,本技术提出一种基于ntlm认证的主机信息识别获取方法、装置和电子设备。
11.本技术一方面,提出一种基于ntlm认证的主机信息识别获取方法,包括如下步骤:
12.在客户端和服务器之间建立连接;
13.通过所述客户端向所述服务器发起ntlm质询请求;
14.所述服务器接收所述ntlm质询请求,并向所述客户端返回ntlm质询响应;
15.所述客户端接收并解析所述ntlm质询响应,获取所述服务器的主机信息。
16.作为本技术的一可选实施方案,可选地,所述在客户端和服务器之间建立连接,包括:
17.确定目标端口;
18.通过所述客户端向所述目标端口所在的目标服务器发起tcp连接请求;
19.所述目标服务器接收所述tcp连接请求并进行确认,与所述客户端建立tcp通信信道。
20.作为本技术的一可选实施方案,可选地,所述通过所述客户端向所述服务器发起ntlm质询请求,包括:
21.获取目标端口的端口号;
22.根据所述端口号,选择待发送的ntlm协商数据包;
23.所述客户端发送所述ntlm协商数据包至所述服务器,请求获取所述服务器的ntlm
质询响应。
24.作为本技术的一可选实施方案,可选地,所述ntlm协商数据包的构造方法为:
25.预设ntlm协商数据包格式;
26.根据所述ntlm协商数据包格式,构建并保存所述ntlm协商数据包至所述客户端上;
27.其中,ntlm协商数据包格式,包括:签名、消息类型、协商标志、域名字段、工作站字段、版本和负载。
28.作为本技术的一可选实施方案,可选地,所述服务器接收所述ntlm质询请求,并向所述客户端返回ntlm质询响应,包括:
29.所述服务器接收所述ntlm质询请求,并获取所述ntlm质询请求中的所述ntlm协商数据包;
30.所述服务器根据所述ntlm协商数据包,获取所述ntlm协商数据包中的协商标志;
31.所述服务器跟据所述协商标志,向所述客户端返回包含自身主机信息的响应报文;
32.其中,所述响应报文结构,包括:签名、消息类型、目标名字段、协商标志、服务端挑战、保留字段、目标信息字段、版本和负载。
33.作为本技术的一可选实施方案,可选地,所述客户端接收并解析所述ntlm质询响应,获取所述服务器的主机信息,包括:
34.所述客户端接收所述服务器返回的包含自身主机信息的响应报文;
35.根据所述响应报文,得到包含所述服务器主机信息的目标信息结构;
36.对所述目标信息结构进行解析,获取所述服务器主机信息。
37.作为本技术的一可选实施方案,可选地,所述目标信息结构的获取方式为:
38.根据所述响应报文的结构,获取目标数据;
39.根据所述目标数据,计算目标信息字段的相对偏移,得到目标信息缓冲区偏移;
40.根据所述目标信息缓冲区偏移和结构中的目标信息长度,获取目标信息缓冲区结构,以此得到所述目标信息结构。
41.本技术另一方面,提出一种实施上述所述的基于ntlm认证的主机信息识别获取方法的装置,包括:
42.通信建立模块,用于在客户端和服务器之间建立连接;
43.ntlm质询请求模块,用于通过所述客户端向所述服务器发起ntlm质询请求;
44.ntlm质询响应模块,用于所述服务器接收所述ntlm质询请求,并向所述客户端返回ntlm质询响应;
45.解析模块,用于所述客户端接收并解析所述ntlm质询响应,获取所述服务器的主机信息。
46.本技术另一方面,还提出一种电子设备,包括:
47.处理器;
48.用于存储处理器可执行指令的存储器;
49.其中,所述处理器被配置为执行所述可执行指令时实现上述所述的基于ntlm认证的主机信息识别获取方法。
50.本发明的技术效果:
51.本技术通过在客户端和服务器之间建立连接;通过所述客户端向所述服务器发起ntlm质询请求;所述服务器接收所述ntlm质询请求,并向所述客户端返回ntlm质询响应;所述客户端接收并解析所述ntlm质询响应,获取所述服务器的主机信息。利用ntlm认证协议认证第二阶段数据包会携带主机名信息的特性,实现内网主机名信息收集功能。通过主机端口提供的不同服务,由客户端向服务发送ntlm认证请求数据报文,客户端读取服务器返回的ntlm质询响应报文,利用服务端发送的ntlm质询响应解析目标机器名信息。可以批量、高效的实现主机信息收集;通过网络层进行信息收集,无需登陆该主机;无需采用hids等高成本的设备,仅用一个软件即可实现主机信息收集。
52.根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
53.包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
54.图1示出为本发明认证主体之间的关系示意图;
55.图2示出为本发明基于ntlm认证的主机信息识别获取方法的实施流程示意图;
56.图3示出为本发明ntlm协商数据包的结构示意图;
57.图4示出为本发明报文结构示意图;
58.图5示出为本发明目标信息结构的示意图;
59.图6示出为本发明目标信息缓冲区的结构示意图。
具体实施方式
60.以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
61.在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
62.另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
63.实施例1
64.本技术主要利用了ntlm认证协议认证第二阶段数据包会携带主机名信息的特性实现内网主机名信息收集功能。通过主机端口提供的不同服务,由客户端向服务发送ntlm认证请求数据报文,客户端读取服务器返回的ntlm质询响应报文,利用服务端发送的ntlm质询响应解析目标机器名信息。
65.如图1所示,为本方法几个主体之间的关系示意图。涉及如下主体:服务器,客户端,服务。客户端即认证发起方,也就是本发明实现的信息收集工具;服务即发起认证的对象,服务器是服务的载体,也是所需要进行信息收集的目标。下面将具体描述该方法的应
用。
66.如图2所示,本技术一方面,提出一种基于ntlm认证的主机信息识别获取方法,包括如下步骤:
67.s1、在客户端和服务器之间建立连接;
68.客户端需要获取主机端口的主机信息,因此需要首先确定发起请求的端口信息(也是目标服务器位置)。向服务器指定端口(比如135、445、389、3389、1433等)发起tcp连接请求,通过tcp建立可靠的通信信道,确定开放的端口。
69.作为本技术的一可选实施方案,可选地,所述在客户端和服务器之间建立连接,包括:
70.确定目标端口;
71.通过所述客户端向所述目标端口所在的目标服务器发起tcp连接请求;
72.所述目标服务器接收所述tcp连接请求并进行确认,与所述客户端建立tcp通信信道。
73.首先确定需要发起ntlm质询请求的端口,此端口为目标端口,该目标端口所在的服务器为目标服务器。比如图1中的服务1所在端口的服务器1。
74.确定目标端口后,所述客户端向所述目标端口所在的目标服务器发起tcp连接请求,基于tcp协议,在所述客户端和目标服务器之间建立tcp通信信道,确定开放的端口,tcp通信信道用于请求数据以及数据的响应。
75.s2、通过所述客户端向所述服务器发起ntlm质询请求;
76.tcp连接成功后,客户端根据目标端口的端口号,向所述服务器发起ntlm质询请求。
77.作为本技术的一可选实施方案,可选地,所述通过所述客户端向所述服务器发起ntlm质询请求,包括:
78.获取目标端口的端口号;
79.根据所述端口号,选择待发送的ntlm协商数据包;
80.所述客户端发送所述ntlm协商数据包至所述服务器,请求获取所述服务器的ntlm质询响应。
81.ntlm质询请求中包含ntlm协商数据包,该ntlm协商数据包根据端口号选择类型即可。具体根据端口号选择发送的数据包类型,如80端口对应http数据包、445对应smb数据包。
82.所述客户端,将对应匹配的ntlm协商数据包,通过tcp通信信道发送至所述服务器,进行ntlm认证请求,请求获取所述服务器的ntlm质询响应。
83.ntlm认证请求,实际上是利用ntlm认证协议认证在第二阶段(响应)时,其数据包会携带主机名信息的特性实现内网收集功能。因此,服务器接收认证,响应后即可返回包含主机名信息的报文信息。
84.如图3所示,作为本技术的一可选实施方案,可选地,所述ntlm协商数据包的构造方法为:
85.预设ntlm协商数据包格式;
86.根据所述ntlm协商数据包格式,构建并保存所述ntlm协商数据包至所述客户端
上;
87.其中,ntlm协商数据包格式,包括:签名、消息类型、协商标志、域名字段、工作站字段、版本和负载。
88.ntlm协商数据包的结构如图3所示,ntlm协商数据包格式,包括:签名、消息类型、协商标志、域名字段、工作站字段、版本和负载。其中签名字段为8字节,填入字符“ntlm ssp”;消息类型为4字节,该字段为0x00000001;协商标志字段占用4字节,固定为0xe2088297域名字段和工作站字段为8字节,都设置为0x00000000,版本字段为8字节,设置为0x0f0000004a61000a,负载字段为0字节。以上为ntlm协商数据包构造。
89.ntlm协商数据包的结构具体由用户根据ntlm结构进行构建。
90.发送ntlm请求时,本方案采用直接发送二进制数据,可以采用根据官方文档构造ntlm请求进行替代,手动构造ntlm请求包较为复杂,且最终效果一致,因此本方案采用较为直接的发送二进制数据的方案进行实现。
91.s3、所述服务器接收所述ntlm质询请求,并向所述客户端返回ntlm质询响应;
92.目标端口所在的所述服务器(目标服务器)接收到所述ntlm质询请求,将根据所述ntlm质询请求中的ntlm协商数据包的结构格式,返回对应的ntlm质询响应数据。服务端会返回ntlm质询响应,并跟据协商标志向客户端返回包含自身信息的响应报文。
93.作为本技术的一可选实施方案,可选地,所述服务器接收所述ntlm质询请求,并向所述客户端返回ntlm质询响应,包括:
94.所述服务器接收所述ntlm质询请求,并获取所述ntlm质询请求中的所述ntlm协商数据包;
95.所述服务器根据所述ntlm协商数据包,获取所述ntlm协商数据包中的协商标志;
96.所述服务器跟据所述协商标志,向所述客户端返回包含自身主机信息的响应报文;
97.其中,所述响应报文的报文结构,包括:签名、消息类型、目标名字段、协商标志、服务端挑战、保留字段、目标信息字段、版本和负载。
98.如图4所示,报文结构,包括:签名、消息类型、目标名字段、协商标志、服务端挑战、保留字段、目标信息字段、版本和负载。其中目标信息字段和负载字段包含了需要解析的数据,跟据包结构可以知道签名字段为8字节,消息类型为4字节,目标名字段为8字节,协商标志字段为4字节,服务端挑战字段为8字节,保留字段为8字节,目标信息字段为8字节。
99.数据包发送完毕之后,服务端会返回ntlm质询响应,并跟据协商标志向客户端返回包含自身信息的响应报文。
100.s4、所述客户端接收并解析所述ntlm质询响应,获取所述服务器的主机信息。
101.所述客户端接收所述服务器返回的所述ntlm质询响应(包含目标服务器自身主机信息的响应报文),即可根据响应报文的报文结构。因为目标信息字段和负载字段包含了需要解析的数据,进过解析即可得到目标信息结构。
102.如图5所示,作为本技术的一可选实施方案,可选地,所述客户端接收并解析所述ntlm质询响应,获取所述服务器的主机信息,包括:
103.所述客户端接收所述服务器返回的包含自身主机信息的响应报文;
104.根据所述响应报文,得到包含所述服务器主机信息的目标信息结构;
105.对所述目标信息结构进行解析,获取所述服务器主机信息。
106.解析方式可以采用ssp解析或者其他方式。
107.根据响应报文的数据包结构,可以知道签名字段为8字节,消息类型为4字节,目标名字段为8字节,协商标志字段为4字节,服务端挑战字段为8字节,保留字段为8字节,目标信息字段为8字节,通过以上数据可以计算目标信息字段相对偏移为40字节,通过该偏移可以获取目标信息数据。如图5所示,目标信息结构包含目标信息长度和目标信息缓冲区偏移,跟据偏移和长度可以获取目标信息缓冲区结构。
108.如图6所示,作为本技术的一可选实施方案,可选地,所述目标信息结构的获取方式为:
109.根据所述响应报文的结构,获取目标数据;
110.根据所述目标数据,计算目标信息字段的相对偏移,得到目标信息缓冲区偏移;
111.根据所述目标信息缓冲区偏移和结构中的目标信息长度,获取目标信息缓冲区结构,以此得到所述目标信息结构。
112.目标数据,即需要解析的数据。对目标信息结构进行解析,得到该目标数据。
113.如图6所示,目标信息缓冲区由一个列表组成,组成列表的元素包括标识、长度和值(字段长度)。
114.其中标识占用2字节,标识数据类型;长度占用2字节,标识值字段的长度;当标识字段为0时表示列表最后一个元素,当标识字段为0x0001表示计算机名,标识字段为0x0002表示域名,通过循环遍历目标信息缓冲区,首先读取4字节获取信息标识如果是0则退出循环,如果不为0读取4字节长度n,再读取n字节,如果标识是0x0001或者0x0002则对读取的值进行unicode解码即可获取计算机名和域名。
115.通过用户对目标端口的选择,进过上述方案,可以通过此方案,可以对主机上所有基于ntlm进行认证的服务进行ssp的解析,完成基于ntlm ssp解析的主机信息收集。
116.因此,本技术通过采用基于ntlmssp解析的主机信息识别,实现了以下效果:
117.可以批量、高效的实现主机信息收集;
118.通过网络层进行信息收集,无需登陆该主机;
119.无需采用hids等高成本的设备,仅用一个软件即可实现主机信息收集。
120.需要说明的是,尽管以作为示例介绍了如上ssp解析方式,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据实际应用场景灵活设定解析方式,只要可以按照上述技术方法实现本技术的技术功能即可。
121.实施例2
122.基于实施例1的实施原理,本技术另一方面,提出一种实施上述所述的基于ntlm认证的主机信息识别获取方法的装置,包括:
123.通信建立模块,用于在客户端和服务器之间建立连接;
124.ntlm质询请求模块,用于通过所述客户端向所述服务器发起ntlm质询请求;
125.ntlm质询响应模块,用于所述服务器接收所述ntlm质询请求,并向所述客户端返回ntlm质询响应;
126.解析模块,用于所述客户端接收并解析所述ntlm质询响应,获取所述服务器的主机信息。
127.上述各个模块的功能原理和交互方式,详见上述实施例1的描述,本实施例不再赘述。
128.显然,本领域的技术人员应该明白,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成的,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各控制方法的实施例的流程。上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
129.本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成的,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各控制方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)、随机存储记忆体(randomaccessmemory,ram)、快闪存储器(flashmemory)、硬盘(harddiskdrive,缩写:hdd)或固态硬盘(solid-statedrive,ssd)等;存储介质还可以包括上述种类的存储器的组合。
130.实施例3
131.更进一步地,本技术另一方面,还提出一种电子设备,包括:
132.处理器;
133.用于存储处理器可执行指令的存储器;
134.其中,所述处理器被配置为执行所述可执行指令时实现上述所述的基于ntlm认证的主机信息识别获取方法。
135.本公开实施例来电子设备包括处理器以及用于存储处理器可执行指令的存储器。其中,处理器被配置为执行可执行指令时实现前面任一所述的一种基于ntlm认证的主机信息识别获取方法。
136.此处,应当指出的是,处理器的个数可以为一个或多个。同时,在本公开实施例的电子设备中,还可以包括输入装置和输出装置。其中,处理器、存储器、输入装置和输出装置之间可以通过总线连接,也可以通过其他方式连接,此处不进行具体限定。
137.存储器作为一计算机可读存储介质,可用于存储软件程序、计算机可执行程序和各种模块,如:本公开实施例的一种基于ntlm认证的主机信息识别获取方法所对应的程序或模块。处理器通过运行存储在存储器中的软件程序或模块,从而执行电子设备的各种功能应用及数据处理。
138.输入装置可用于接收输入的数字或信号。其中,信号可以为产生与设备/终端/服务器的用户设置以及功能控制有关的键信号。输出装置可以包括显示屏等显示设备。
139.以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。