Windows常用协议

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.mzph.cn/news/705458.shtml

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

相关文章

docker 常用指令(启动,关闭,查看运行状态)

文章目录 docker 常用指令启动 docker关闭 docker查看 docker的运行状态 docker 常用指令 启动 docker systemctl start docker关闭 docker systemctl stop docker查看 docker的运行状态 systemctl status docker如下图所示: 表示docker正在运行中

集合框架体系和使用1(Collection)

Map的不同实现类单独再搞一章讲 目录 数组的特点、弊端与集合框架体系介绍 数组 特点 弊端 Java集合框架体系(java.util包下) java.util.Collection:存储一个一个的数据(主要讲两个子接口) java.util.Map:存储一对一对的数据…

Jetpack Compose 状态管理的三个误区

1. 注意在协程中更新状态值时的线程安全问题 例如我们有如下代码: data class MyUiState(val counter: Int 0,val text: String "" )class MainViewModel: ViewModel() {private val _state MutableStateFlow(MyUiState())val state _state.asState…

Vue2 迁移到 Vue3

一.《Vue 3 迁移指南》参考文档&#xff1a;https://v3-migration.vuejs.org/zh/ 二.Vue 3 中需要关注的一些新特性。 1. 组合式 API*&#xff1b; 2. 单文件组件中的组合式 API 语法糖 (<script setup>)*&#xff1b; 3. Teleport 组件&#xff1b; 4. Fragments 片段&…

【uni-app】常用组件和 API

常用组件 uni-app 为开发者提供了一系列基础组件&#xff0c;类似 HTML 里的基础标签元素&#xff0c;但 uni-app 的组件与 HTML 不同&#xff0c;而是与小程序相同&#xff0c;更适合手机端使用。 虽然不推荐使用 HTML 标签&#xff0c;但实际上如果开发者写了div等标签&…

基于uniapp大学生社团活动管理系统python+java+node.js+php微信小程序

uni-app框架&#xff1a;使用Vue.js开发跨平台应用的前端框架&#xff0c;编写一套代码&#xff0c;可编译到Android、小程序等平台。 语言&#xff1a;pythonjavanode.jsphp均支持 框架支持:springboot/Ssm/thinkphp/django/flask/express均支持 运行软件:idea/eclipse/vscod…

关于 REST API 和 SOAP,你知道多少?

背景 通过上篇文章 关于 REST API&#xff0c;你了解多少&#xff1f;&#xff0c;我们知道REST API是在Web应用程序的发展过程中产生的。在Web应用程序的早期阶段&#xff0c;应用程序之间的通信主要是通过SOAP&#xff08;Simple Object Access Protocol&#xff09;和XML-R…

递归和迭代【Py/Java/C++三种语言详解】LeetCode每日一题240218【树DFS】LeetCode 589、 N 叉树的前序遍历

有LeetCode算法/华为OD考试扣扣交流群可加 948025485 可上全网独家的 欧弟OJ系统 练习华子OD、大厂真题 绿色聊天软件戳 od1336了解算法冲刺训练 文章目录 题目描述解题思路代码方法一&#xff1a;递归法PythonJavaC时空复杂度 方法二&#xff1a;迭代法PythonJavaC时空复杂度 …

面试redis篇-08数据淘汰策略

原理 当Redis中的内存不够用时,此时在向Redis中添加新的key,那么Redis就会按照某一种规则将内存中的数据删除掉,这种数据的删除规则被称之为内存的淘汰策略。 Redis支持8种不同策略来选择要删除的key: noeviction: 不淘汰任何key,但是内存满时不允许写入新数据,默认就是…

【Pytorch】模块化

文章目录 1. 获取数据2. 创建Dataset和DataLoader3. 定义模型4. 创建训练模型引擎函数5. 创建保存模型的函数6. 训练、评估并保存模型 模块化涉及将jupyter notebook代码转换为一系列提供类似功能的不同 Python 脚本。 可以将笔记本代码从一系列单元格转换为以下 Python 文件&…

JetBrains系列工具,配置PlantUML绘图

PlantUML是一个很强大的绘图工具&#xff0c;各种图都可以绘制&#xff0c;具体的可以去官网看看&#xff0c;或者百度。 PlantUML简述 https://plantuml.com/zh/ PlantUML语言参考指引 https://plantuml.com/zh/guide PlantUML语言是依赖Graphviz进行解析的。Graphviz是开源…

[设计模式Java实现附plantuml源码~行为型] 撤销功能的实现——备忘录模式

前言&#xff1a; 为什么之前写过Golang 版的设计模式&#xff0c;还在重新写Java 版&#xff1f; 答&#xff1a;因为对于我而言&#xff0c;当然也希望对正在学习的大伙有帮助。Java作为一门纯面向对象的语言&#xff0c;更适合用于学习设计模式。 为什么类图要附上uml 因为很…

2024程序员容器化上云之旅-第6集-Ubuntu-WSL2-Windows11版:艰难复活

故事梗概 Java程序员马意浓在互联网公司维护老旧电商后台系统。 渴望学习新技术的他在工作中无缘Docker和K8s。 他开始自学Vue3并使用SpringBoot3完成了一个前后端分离的Web应用系统&#xff0c;并打算将其用Docker容器化后用K8s上云。 8 复活重生 周末终于有点属于自己的…

【书籍分享 • 第三期】虚拟化与容器技术

文章目录 一、本书内容二、读者对象三、编辑推荐四、前言4.1 云计算技术的发展4.2 KVM、Docker4.3 本书内容简介4.4 作者简介 五、粉丝福利 一、本书内容 《虚拟化与容器技术》通过深入浅出的方式介绍KVM虚拟化技术与Docker容器技术的概念、原理及实现方法&#xff0c;内容包括…

Linux之安装Nginx、前后端分离项目部署

目录 一、安装Nginx 1.1先一键安装4个依赖 1.2下载并解压安装包 1.3安装nginx&#xff0c;一般我们在nginx都是要安装ssl证书的 1.4 启动nginx服务 1.5开放80端口 1.6配置nginx自启动 1.7修改/etc/rc.d/rc/local的权限 二、多个tomcat负载加后端部署 2.1创建多个tomca…

Windows已经安装了QT 6.3.0,如何再安装一个QT 5.12

要在Windows上安装Qt 5.12&#xff0c;您可以按照以下步骤操作&#xff1a; 下载Qt 5.12&#xff1a;访问Qt官方网站或其他可信赖的来源&#xff0c;下载Qt 5.12的安装包。 下载安装地址 下载安装详细教程 安装问题点 qt安装时“Error during installation process(qt.tools…

react useRef用法

1&#xff0c;保存变量永远不丢失 import React, { useState,useRef } from react export default function App() { const [count,setcount] useState(0) var mycount useRef(0)//保存变量永远不丢失--useRef用的是闭包原理 return( <div> <button onClick{()>…

跨境电商营销进化史:从传统广告到智能化策略的全面探析

随着全球化的不断推进和互联网技术的飞速发展&#xff0c;跨境电商在过去几年里取得了显著的发展。在这个竞争激烈的市场中&#xff0c;企业们纷纷调整营销策略以应对不断变化的消费者需求和市场趋势。本文Nox聚星将和大家探讨跨境电商营销策略的演变过程&#xff0c;从传统的推…

MySQL基础(二)

文章目录 MySQL基础&#xff08;二&#xff09;1. 数据库操作-DQL1.1 介绍1.2 语法1.3 基本查询1.4 条件查询1.5 聚合函数1.6 分组查询1.7 排序查询1.8 分页查询1.9 案例1.9.1 案例一1.9.2 案例二 2. 多表设计2.1 一对多2.1.1 表设计2.1.2 外键约束 2.2 一对一2.3 多对多2.4 案…

【Spring Boot 3】【JPA】@ManyToOne 实现一对多单向关联

【Spring Boot 3】【JPA】@ManyToOne 实现一对多单向关联 背景介绍开发环境开发步骤及源码工程目录结构总结背景 软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学…