Windows常用协议

news2024/10/2 14:28:40
LLMNR
1. LLMNR 简介

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

2.LLMNR 解析过程

当本地hosts 和 DNS解析 当本地hosts 和 DNS解析失败时,会使用LLMNR解析。
1)主机在本地NetBIOS缓存名称中进行查询。
2)如果在缓存名称中没有查询到,则以此向配置的主备DNS服务器发送解析请求
3)如果主备DNS服务器没有回复,则向当前子网域发送多播,获取对应的IP地址
4)本地子网域中的其他主机收到并检查多播包。如果没有响应,则请求失败

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

3.LLMNR 欺骗攻击

假设用户访问一个域名xxx,,在hosts 文件和DNS解析失败时,会通过LLMNR进行广播请求。攻击者利用该广播请求时间向请求用户回复响应IP地址,这时域名xxx映射的P就是攻击者IP,用户访问域名 xxx就会解析到攻击IP,这样攻击者便可以拿到 NetNTLM 哈希。

4.LLMNR 防御措施
1)在 Windows系统中依次选择“开始”→“运行”选项,然后输入 gpedit.msc命令打开本地组策略管理器。
2)依次选择“计算机配置”→“管理模板”→“网络”→“DNS 客户端”
3)双击打开“关闭多播名称解析”策略设置
4)将“关闭多播名称解析”略设置中的状态改为“已禁用”

NetBIOS
1.NetBIOS 简介

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

2.NetBIOS 服务类型

NetBIOS 支持面向连接(TCP)和无连接(UDP)通信。它提供3个分开的服务:名称服务(NetBIOS name)、会话服务(NetBIOS session)、数据报服务(NetBIOS datagram)。NetBIOS name 为其他两个服务的基础。

三种常见的NetBIOS报文类型进行

报文类型端口具体描述
Net BIOS names(NetBIOS名称服务)UDP 137主要作用是在局域网中提供计算机的名称或IP地址查询服务
Net BIOS datagrams(Net BIOS数据报)UDP 138主要作用是提供NetBIOS环境下的计算机名浏览功能
Net BIOS sessions(Net BIOS会话服务)TCP 139用于处理NBT会话,NBT会话用于包含SMB会话的轻量级协议,其主要作用是提供文件和打印机共享功能
 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打开网络连接

2)依次选择“本地连接”→“属性”→“Internet协议版本4(TCP/IPv4)”→“属性”→“高级'选项来配置,
3)在 WINS 选项卡的 NetBIOS 设置中禁用 NetBIOS,如图

 

 Windows WPAD


WPAD 全称 Web Proxy Auto-Discovery Protocol,也就是 Web 代理自动发现协议。(这里的代理就是我们在渗透中使用BURP的时候修改的代理设置。)它的作用是让局域网浏览器自动发现内网中的代理服务器,并且自动设置成该代理来连接企业内网或者互联网。

若系统开启了WPAD,那么主机就会在当前连接的局域网中寻找代理服务器,找到之后会在代理服务器中下载PAC(Proxy Auto-Config,代理自动配置)文件。这个PAC文件会定义用户在访问什么地址的时候使用什么代理。

1. WPAD 实现方式

前面说过,主机会在当前连接的局域网中自动寻找代理服务器,而它的实现方式主要有两种。
(1)DHCP
在DHCP服务器中,252选项是被用于查询或者注册的指针。可以在DHCP服务器中添加一个用于查找WPAD主机的252选项,内容是部署在WPAD主机上的 PAC文件的URL。当客户端 Web浏览器要访问某个地址时,Web浏览器会向 DHCP服务器发送 DHCPINFORM 数据包来查询PAC文件的位置,DHCP服务器收到请求后会返回DHCP ACK数据包(其中包含选项和配置列表)进行响应。在这些返回选项中的252选项就是代理自动配文件的位置,Web浏览器就可以据此执行下载PAC文件请求。

日前大多数内网中已经不再使用DHCP服务器来配置客户端的WPAD,而采用较为简单的 DNS服务器方式。

(2)DNS
这种方式是目前使用较为广泛的。通过DNS方式实现WPAD的原理是:

  1. 客户端检测: 当局域网内的客户端(通常是浏览器)需要连接到互联网时,它会尝试自动发现代理服务器设置。首先,它会检查本地网络配置是否已经有手动设置的代理信息;如果没有,则开始自动探测过程。

  2. DNS查找: 客户端会在自己的域名前加上wpad.来构造一个完全限定域名(FQDN),例如:如果客户端的DNS域名为example.com,则查找的域名将是wpad.example.com

  3. 请求与响应: 客户端向本地DNS服务器发送查询请求,寻找这个构造出来的wpad域名对应的IP地址或资源记录。DNS服务器如果配置了相应的记录,会返回指向包含PAC(Proxy Auto-Configuration)文件的URL。

  4. 获取PAC文件: 客户端收到DNS响应后,访问所指向的URL以下载PAC文件。该文件是一个JavaScript脚本,定义了如何根据不同的URL选择使用哪个代理服务器或者直接连接目标主机。

  5. 应用PAC规则: 下载到PAC文件后,客户端按照文件中的规则确定对于特定网络请求应使用的代理设置,然后通过指定的代理服务器进行后续的网页访问和数据传输。

2.PAC文件内容

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

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地址。

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1471961.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安装python的docker库

文章目录 一、在线安装二、制作离线安装包2.1 报错处理 一、在线安装 先确定是否有pip命令。 yum install python-pip直接安装。 pip install docker查看docker库。 pip list二、制作离线安装包 在有互联网的环境下直接安装。 #docker为下载下来的包名。 pip download do…

CCF-A类ASE‘ 24 6月7日截稿!共同探讨软件工程领域的未来!

会议之眼 快讯 第39届ASE (International Conference on Automated Software Engineering)即自动化软件工程国际会议将于 2024 年 10月27-11月1日在美国加利福尼亚州萨克拉门托举行! ASE会议作为自动化软件工程领域的首要研究会议,承载着全球自动化软件工…

《高考》期刊杂志投稿邮箱知网教育类期刊发表

《高考》杂志是由国家新闻出版总署批准的正规教育类期刊。主要宣传高中新课程改革的专业性,是教育管理工作者、高中一线教师交流经验、探讨问题的重要平台,期刊突出政策性、针对性、指导性,是一本以教育科研成果展示为主,兼具教育…

邀请函 | 2024年数据技术嘉年华集结号已吹响,期待您参会!

龙腾四海内,风云际会时,2024年中国数据嘉年华如约而至。从起初小范围的网友聚会,到如今面向全国各地从业者、爱好者的年度集会,纵使岁月更迭,我们初心依旧。我们在各自最好的年华里共同见证了中国数据库行业的蓬勃发展…

MySQL-JDBC

1. JDBC介绍 JDBC(Java Database Connectivity)是 Java 连接数据库的标准接口,它提供了一种与数据库交互的统一方式,使得 Java 程序能够通过标准 API 访问和操作各种关系型数据库。 2. JDBC使用步骤 第0步:导bao 第1步…

TensorRT推理时,如何比对中间层的误差

TensorRT推理时,如何比对中间层的误差 有二种方案第二种方案的实现1.运行环境的搭建2.实现代码(compare_trt_onnxrt.py)3.运行4.输出 本文演示了TensorRT推理时,如何比对中间层的误差。 在做TensorRT推理加速时,可能会遇到精度问题,希望定位到是哪一个节点引起的误差,还是累计误…

10.vue学习笔记(组件数据传递-props回调函数子传父+透传Attributes+插槽slot)

文章目录 1.组件数据传递2.透传Attributes(了解)禁用Attributes继承 3.插槽slot3.1.插槽作用域3.2.默认内容3.3.具名插槽3.4.插槽中的数据传递3.5.具名插槽传递数据 1.组件数据传递 我们之前讲解过了组件之间的数据传递,props 和 自定义事件…

【IDEA】java 项目启动偶现Kotlin 版本问题 error:Kotlin:module was

一、问题描述: error:Kotlin:module was compiled with an incompatible version of kotlin the binary version of its metadata is二、问题原因: jar包版本冲突 三、解决方式: 1、Rebuild Project(推荐☆) 重新构…

小迪安全30WEB 攻防-通用漏洞SQL 注入CTF二次堆叠DNS 带外

#知识点: 1、数据库堆叠注入 根据数据库类型决定是否支持多条语句执行 2、数据库二次注入 应用功能逻辑涉及上导致的先写入后组合的注入 3、数据库 Dnslog 注入 解决不回显(反向连接),SQL 注入,命令执行,SSRF 等 4、黑盒模式分析以上 二次注入&…

2024.2.21 模拟实现 RabbitMQ —— 实现转发规则

目录 需求分析 直接交换机(Direct ) 主题交换机(Topic ) 扇出交换机(Fanout ) Topic 交换机转发规则 routingKey 组成 bindingKey 组成 匹配规则 情况一 情况二 情况三 实现 Router 类 校验 b…

【AIGC大模型】跑通wonder3D (windows)

论文链接:https://arxiv.org/pdf/2310.15008.pdf windows10系统 显卡:NVIDIA rtx 2060 一、安装anaconda 二、安装CUDA 11.7 (CUDA Toolkit 11.7 Downloads | NVIDIA Developer) 和 cudnn 8.9.7(cuDNN Archive | NVIDIA Developer)库 CUDA选择自定…

【Android】坐标系

Android 系统中有两种坐标系,分别为 Android 坐标系和 View 坐标系。了解这两种坐标系能够帮助我们实现 View 的各种操作,比如我们要实现 View 的滑动,你连这个 View 的位置都不知道,那如何去操作呢? 一、Android 坐标…

【Spring Cloud】高并发带来的问题及常见容错方案

文章目录 高并发带来的问题编写代码修改配置压力测试修改配置,并启动软件添加线程组配置线程并发数添加Http取样配置取样,并启动测试访问message方法观察效果 服务雪崩效应常见容错方案常见的容错思路常见的容错组件 总结 欢迎来到阿Q社区 https://bbs.c…

《极简C++学习专栏》之结束语

朋友们,经过这么长的时间,《极简C学习专栏》的文章创作就要结束了,感谢你们一路陪伴! 也希望你们能支持我接下来的其他专栏的创作! 专栏的初衷 《极简C学习》专栏的初衷源自于我个人的学习笔记,记录下自己…

【刷题】牛客 JZ64 求1+2+3+...+n

刷题 题目描述思路一 (暴力递归版)思路二 (妙用内存版)思路三 (快速乘法版)思路四 (构造巧解版)Thanks♪(・ω・)ノ谢谢阅读!&#xff01…

Java 面向对象进阶 18 JDK8、9开始新增的方法;接口的应用;适配器设计模式;内部类(黑马)

一、JDK8开始新增的方法 默认方法不是抽象方法,所以不强制被重写: 但是如果被重写,就要去掉default关键字: public可以省略,但是default不可以省略: public是灰色的,代表可以省略 但是default是…

怎么把pdf转换成word?

怎么把pdf转换成word?Pdf和word在电脑上的使用非常广泛,pdf和word分别是由 Adobe和Microsoft 分别开发的电脑文件格式。PDF 文件可以在不同操作系统和设备上保持一致的显示效果,无论是在 Windows、Mac 还是移动设备上查看,都能保持…

使用Docker部署MinIO并结合内网穿透实现远程访问本地数据

文章目录 前言1. Docker 部署MinIO2. 本地访问MinIO3. Linux安装Cpolar4. 配置MinIO公网地址5. 远程访问MinIO管理界面6. 固定MinIO公网地址 前言 MinIO是一个开源的对象存储服务器,可以在各种环境中运行,例如本地、Docker容器、Kubernetes集群等。它兼…

《绝地求生》提示msvcp140.dll丢失如何修复?分享5种靠谱的解决方法

在玩绝地求生(PUBG)游戏过程中,如果遇到系统弹出“提示请重新安装软件msvcp140.dll”的信息,这究竟是什么原因导致的呢?msvcp140.dll这个文件是Microsoft Visual C Redistributable Package的一部分,是许多…

服务器系统安全,10招教你维护服务器的安全

网络逐渐成为了我们生活中一部分。有人说,断WIFI是最厉害的一种惩罚手段,但是其实不然,最狠的莫过于网站的服务器遭受攻击,直接访问不了网页了,这时候就算有wifi我们也无能为力。服务器系统安全一直是管理者最关注的事…