Windows安全认证机制——Windows常见协议

一.LLMNR协议

1.LLMNR简介

链路本地多播名称解析(LLMNR)是一个基于域名系统(DNS)数据包格式的协议,使用此协议可以解析局域网中本地链路上的主机名称。它可以很好地支持IPv4和IPv6,是仅次于DNS解析的名称解析协议。

2.LLMNR解析过程

LLMNR解析前提是本地hosts和DNS解析失败时,会使用LLMNR解析。LLMNR解析过程如图1-1所示。

1)主机在本地NetBIOS缓存名称中进行查询。

2)如果缓存名称中没有查询到,则以此向配置的主备DNS服务器发送解析请求。

3)如果主备DNS服务器没有回复,则向当前子网域发送多播,获取对应的IP地址。

4)本地子网域的其他主机收到并检查多播包,如果没有响应则请求失败。

从以上工作过程可以明白LLMNR是以多播形式进行查询的,类似于ARP通过MAC寻找IP地址。这样就存在一个欺骗攻击问题。

绘图2

绘图2

3.LLMNR欺骗攻击

假设用户访问一个域名xxx,如图1-2所示,在hosts文件和DNS解析失败,此时会通过LLMNR协议进行广播请求,攻击者利用该广播请求时间向请求用户回复响应IP地址,这时xxx映射的IP就是攻击者IP,当用户访问xxx域名就会解析到攻击IP,进而攻击者便可以拿到net-ntlm hash。

绘图2_backup_311867

绘图2_backup_311867

4.LLMNR防御措施

1)点击开始——运行——输入命令——打开本地组策略管理器,如图1-3所示。

gpedit.msc

图1-3 打开本地组策略管理器

图1-3 打开本地组策略管理器

2)打开计算机配置——管理模版——网络——DNS客户端,如图1-4所示。

图1-4 打开配置DNS客户端

图1-4 打开配置DNS客户端

3)双击打开“关闭多播名称解析”,如图1-5所示。

图1-5 打开“关闭多播名称解析”

图1-5 打开“关闭多播名称解析”

4)将关闭多播名称解析中的状态改为“已禁用”,如图1-6所示。

图1-6 将关闭多播名称解析中的状态改为“已禁用”

图1-6 将关闭多播名称解析中的状态改为“已禁用”

二.NETBIOS协议

1. NETBIOS简介

NetBIOS是Network Basic Input/Output System(网上基本输入输出系统)的缩写,它是一种接入服务网络的接口标准,主机系统通过WINS服务、广播及Lmhost文件等多种模式,把NetBIOS名解析成对应的IP地址,实现信息通讯。因其占用资源小、传输快的特点,广泛应用于局域网内部消息通信及资源的共享。

2.NETBIOS服务类型

NetBIOS支持面向连接(TCP)和无连接(UDP)通信。它提供三个分开的服务:命名(NetBIOS names)、会话(NetBIOS sessions)、数据报(NetBIOS datagrams)。NetBIOS names为其他两个服务的基础。

NetBIOS服务类型在TCP/IP上的基本架构如图1-7所示。

IMG_295

IMG_295

下面我们针对三种常见的NetBIOS服务类型进行详细说明,如表1-1所示。

表1-1 三种常见的NetBIOS报文类型

服务类型

端口

具体描述

Net BIOS names(NetBIOS名称服务)

UDP 137

鉴别资源。程序、主机都有独特的NetBIOS名称

Net BIOS datagrams(Net BIOS数据报)

UDP 138

无连接的将数据报发送到特定的地点、组、整个局域网。

Net BIOS sessions(Net BIOS会话服务)

TCP 139

提供给面向连接,可靠的,完全双重的信息服务。

3. NETBIOS解析过程

NetBIOS 协议进行名称解析的过程如下。

1)首先主机先检查本地NetBIOS缓存。

2)如果缓存中没有请求的名称,但是配置类WINS服务器,则向WINS服务器发送请求。

3)如果没有配置WINS服务器或WINS服务器无响应时,则和LLMNR一样向当前子网域发送广播。

4)如果子网域其他主机无响应,则读取本地的lmhosts(C:\Windows\System32\drivers\etc\)文件。

NetBIOS协议是发送UDP广播包进行解析,如果不配置WINS服务器,则和LLMNR一样会有欺骗攻击问题。

4. NETBIOS防御措施

1)输入命令ncpa.cpl,打开网络连接,如图1-33所示。

图1-8 输入命令ncpa.cpl打开网络连接

图1-8 输入命令ncpa.cpl打开网络连接

2)通过“本地连接——属性—Internet协议版本4——属性——高级”来配置,如图1-9、图1-10、图1-11所示。

图1-9 打开网络连接属性

图1-9 打开网络连接属性

图1-10 配置TCP/IPV4

图1-10 配置TCP/IPV4

图1-11 配置IP地址

图1-11 配置IP地址

3)在WINS标签栏的NetBIOS设置中禁用NetBIOS,如图1-12所示。

图1-12 在WINS标签栏中的NetBIOS设置中禁用NetBIOS

图1-12 在WINS标签栏中的NetBIOS设置中禁用NetBIOS

三.WPAD协议

1.Windows WPAD 简介

WPAD全称Web Proxy Auto-Discovery Protocol,也就是WEB代理自动发现协议(这里的代理就是我们在渗透中常用BURP的时候修改的代理设置)。它的作用是让局域网浏览器自动发现内网中的代理服务器,并且自动设置成该代理进行连接企业内网或者互联网。若系统开启了WPAD,那么主机就会在当前连接的局域网中去寻找代理服务器,找到之后会在代理服务器中下载PAC(Proxy Auto-Config)的配置文件(其实我们在日常中经常能看见当我们使用SSR的时候就会看见PAC自动模式),这个PAC文件会定义用户在访问什么地址的时候,使用什么代理进行访问,举一个常见易懂的例子,有些公司会对访问谷歌浏览器有一定的需求,那么他们就会搭建一个代理服务器,里面的PAC文件就会配置当访问谷歌浏览器的时候web代理自动使用到那个代理服务器上,同时浏览器将下载并解析该文件,将相应的代理服务器设置到浏览器中。

2.WPAD实现方式

我们前面说过主机会在当前连接的局域网中自动寻找代理服务器,它的实现方式主要分为两种。

(1)DHCP

在DHCP服务器中,DHCP服务器的252选项是被当作查询或者注册使用的指针,我们可以在DHCP服务器中添加一个用于查找WPAD主机的252项,内容是部署在WPAD主机上的PAC文件的URL,当客户端Web浏览器要访问某个地址时,Web浏览器会向DHCP服务器发送DHCP INFORM数据包来查询PAC文件的位置,DHCP服务器收到请求以后会返回DHCP ACK数据包进行响应,其中包含了选项和配置列表,在这些返回选项中的252选项就是代理自动配置文件的位置,Web浏览器就可以执行下载PAC文件请求。如图1-1所示,这是以DHCP的方式获取PAC示意图。

IMG_310

IMG_310

目前大多数内网中已经不再使用DHCP服务器对客户端的WPAD进行配置,而是逐渐采用较为简单的DNS服务器方式。

(2)DNS

第二种是目前使用最广泛的方式,通过DNS方式实现WPAD的原理是:先由Web浏览器向DNS服务器发起WPAD+X查询,DNS服务器接收到查询请求后返回提供WPAD主机的IP地址,Web浏览器通过该IP的80端口下载wpad.dat(浏览器配置用文件)和wspad.dat(防火墙配置用文件)以实现自动配置。例如:用户的计算机网络名称为test.xx.example.com,浏览器将依次尝试下列URL,以期成功在客户端的域中找到一个代理配置文件。如图1-2所示。

IMG_311

IMG_311

3.PAC文件内容

PAC文件最主要的作用是可以控制浏览器如何处理使用HTTP/HTTPS的流量,其实在每个PAC文件中都会包含一个FindProxyForURL函数,用来定义Web浏览器是直接将流量发送到Internet,还是将流量发送到代理服务器的规则,以下是PAC文件的具体配置内容。

代码语言:bash

复制

function FindProxyForURL(url, host) {   
	if (shExpMatch(host, "*.example.com"))
	{
		return "DIRECT";
	}
	if (isInNet(host, "10.0.0.0", "255.255.248.0"))
	{
		return "PROXY fastproxy.example.com:8080";
	}
	return "PROXY proxy.example.com:8080; DIRECT";
}

1)shExpMatch将尝试将主机名或URL与指定的shell表达式匹配,如果匹配则返回true。

2)isInNet 此函数判断主机名的IP地址,如果在指定的子网内则返回true。如果传递了主机名,该函数会将主机名解析为IP地址。

代码语言:bash

复制

	if (shExpMatch(host, "*.example.com"))
	{
		return "DIRECT";
	}

3)如果在host中匹配到了.example.com,就会返回true,DIRECT的意思是直连,那么这句话就是:如果访问了.example.com的URL那么就会直接连接,不走代理。

代码语言:bash

复制

	if (isInNet(host, "10.0.0.0", "255.255.248.0"))
	{
		return "PROXY fastproxy.example.com:8080";
	}

4)如果host在指定的IP范围内,那么就会通过代理fastproxy.example.com:8080进行访问。

作者:一只特立独行的兔先生

原文:Windows安全认证机制之Windows常见协议-腾讯云开发者社区-腾讯云


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值