内网渗透之中间人欺骗攻击

news2024/10/6 20:36:00

ARP攻击

协议简介

ARP全称为Address Resolution Protocol,即地址解析协议,它是一个根据IP地址获取物理地址的TCP/IP协议,主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址,收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
ARP地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存,故而攻击者可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。

工作原理

环境假设

主机A:

  • IP地址:192.168.1.1
  • MAC地址:0A-11-22-33-44-01

主机B:

  • IP地址:192.168.1.2
  • MAC地址:0A-11-22-33-44-02
工作流程
  • 第1步:根据主机A上的路由表内容,确定用于访问主机B的转发IP地址是192.168.1.2,然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址
  • 第2步:如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广 播到本地网络上的所有主机,源主机A的IP地址和MAC地址都包括在ARP请求中,本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配,如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求
  • 第3步:主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中
  • 第4步:主机B将包含其MAC地址的ARP回复消息直接发送回主机A
  • 第5步:当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存,本机缓存是有生存期的,生存期结束后,将再次重复上面的过程,主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了
缓存机制

ARP缓存是一个用来储存IP地址和MAC地址的缓冲区,其本质就是一个IP地址->MAC地址的对应表,表中每一个条目分别记录了网络上其他主机的IP地址和对应的MAC地址,每一个以太网或令牌环网络适配器都有自己单独的表,当地址解析协议被询问一个已知IP地址节点的MAC地址时,先在ARP缓存中查看,若存在,就直接返回与之对应的MAC地址,若不存在,才发送ARP请求向局域网查询,为了使广播量最小,ARP维护IP地址到MAC地址映射的缓存以便将来使用
ARP缓存可以包含动态和静态项目,动态项目随时间推移自动添加和删除,每个动态ARP缓存项的潜在生命周期是10分钟,新加到缓存中的项目带有时间戳,如果某个项目添加后2分钟内没有再使用,则此项目过期并从ARP缓存中删除,如果某个项目已在使用,则又收到2分钟的生命周期,如果某个项目始终在使用,则会另外收到2分钟的生命周期,一直到10分钟的最长生命周期,静态项目一直保留在缓存中,直到重新启动计算机为止

ARP欺骗

ARP地址解析协议是建立在网络中各个主机互相信任的基础上的,它的诞生使得网络能够更加高效的运行,但其本身也存在缺陷,ARP地址转换表依赖于计算机中高速缓冲存储器动态更新的,而高速缓冲存储器的更新是受到更新周期的限制的,只保存最近使用的地址的映射关系表项,这使得攻击者有了可乘之机,可以在高速缓冲存储器更新表项之前修改地址转换表,实现攻击。
ARP请求为广播形式发送的,网络上的主机可以自主发送ARP应答消息,并且当其他主机收到应答报文时不会检测该报文的真实性就将其记录在本地的MAC地址转换表,这样攻击者就可以向目标主机发送伪ARP应答报文,从而篡改本地的MAC地址表,ARP欺骗可以导致目标计算机与网关通信失败,更会导致通信重定向,所有的数据都会通过攻击者的机器,攻击者再对目标和网关之间的数据进行转发,则可作为一个"中间人",实现监听目标却又不影响目标正常上网的目的。

欺骗实践

基本环境
  • 攻击主机:192.168.174.129 00:0c:29:39:be:eb
  • 普通主机:192.168.174.170 00:0c:29:08:ad:eb
  • 网关地址:192.168.174.2
断网攻击

Step 1:在攻击主机上关闭端口转发

#终止
echo 0 > /proc/sys/net/ipv4/ip_forward
#允许
echo 1 > /proc/sys/net/ipv4/ip_forward

Step 2:在普通主机上查看当前ARP解析列表

Step 3:在普通主机上向百度进行ping试

ping www.baidu.com -t

可以正常访问百度:


Step 4:之后在攻击主机上通过aprspoof进行断网攻击

Usage: arpspoof [-i interface] [-c own|host|both] [-t target] [-r] host

# 参数解释:
-i 指定使用的接口
-c 指定当还原arp配置时t使用的MAC地址,默认为使用原来的MAC(即当停止arpspoof命令后,默认取消毒化)
-t 指定要毒化的主机,如果不指定的话默认为局域网下所有主机
-r 双向毒化(host和target),从而双向扑捉数据(仅当同时指定 -t的时候才有效)

#执行示例:
arpspoof -i eth0 -t 192.168.174.170 192.168.174.2

Step 5:之后可以看到ping请求超时,同时浏览器无法打开www.baidu.com,同时查看ARP解析表会发现网关的MAC地址被成功欺骗后设置成了攻击者的MAC地址

Step 6:之后中断攻击(由于我们之前没有指定-c参数所以会还原原先的MAC地址)

可以看到ping恢复正常,同时页面和ARP表也恢复正常

图片数据

Step 1:开启端口转发,允许本机像路由器一样转发数据信息

echo 1 > /proc/sys/net/ipv4/ip_forward

Step 2:在普通主机上查看当前ARP解析列表

Step 3:在普通主机上访问Web页面

Usage: arpspoof [-i interface] [-c own|host|both] [-t target] [-r] host

# 参数解释
-i 指定使用的接口
-c 指定当还原arp配置时t使用的MAC地址默认为使用原来的MAC(即当停止arpspoof命令后默认取消毒化)
-t 指定要毒化的主机如果不指定的话默认为局域网下所有主机
-r 双向毒化(host和target),从而双向扑捉数据(仅当同时指定 -t的时候才有效)

#执行示例
arpspoof -i eth0 -t 192.168.174.170 192.168.174.2

Step 5:之后driftnet 获取受害者用户访问网站时残留的图片数据信息

登录凭证

Step 1:这里我们接着上面图片数据的部分展开,我们在攻击主机上使用ettercap捕获通信数据

ettercap -Tq -i eth0

Step 2:模拟一个第三方FTP服务

Step 3:用户访问第三方FTP服务并进行认证

Step 4:攻击者成功捕获到用户的账户密码信息

欺骗扩展

这里我们补充几个在Windows下常用的ARP欺骗手法以及ARP欺骗工具的使用~

NetFuke
测试环境
  • 目标主机:192.168.174.170(Win 7)
  • 攻击主机:192.168.174.169(Windows Server 2003)
  • 网关地址:192.168.174.2
欺骗流程

Step 1:在攻击主机上运行NetFuke软件并进行嗅探配置(此处的网卡必须要识别出来IP地址,否则无法进行ARP欺骗)

Step 2:配置ARP欺骗

Step 3:插件命令参数设置

Step 4:开启ARP欺骗

攻击检测

XArp工具简介

XArp是国外的一款热门的ARP防火墙软件,能够帮助用户建立一个专门的检测系统,使用高级技术来检测应对网络上的各类ARP攻击,例如,使用ARP欺骗,攻击者可以窃听您的所有网络流量,包含电子邮件与密码,所有这一切都完全没有被发现,XArp执行主动与被动方法来检测此类攻击。

攻击检测

Step 1:开启NetFuke实施ARP欺骗攻击

Step 2:之后再XARP端可以看到报警信息以及相关记录信息


PS:个人感觉这个工具并不是那么好~

防御措施

ARP欺骗的防御手法主要从以下两个方面出发:
a、阻断伪造数据包的传播:
该方法主要是从交换机或者路由器等网络设备的角度出发,以交换机为例,将交换机的端口、MAC地址、IP地址三者绑定,生成DAI(Dynamic ARP Inspection)检测表,如果某个端口的主机发送了与它在DAI表中的条目不相符的数据包,可以选择令其断网或者丢弃其发送的数据包
b、受害者不接受伪造数据包
该方法主要是从用户的角度出发,首先不要随便接入陌生的网络是一定的,其次,用户可以在设备上安装ARP防火墙,如果是技术人员,可以选择建立静态ARP条目(适用于不会经常变动且数量较少的网络环境),Windonwde用户使用命令"arp -s ip"地址mac地址来进行静态绑定

DNS攻击

域名系统

DNS(Domain Name System),即域名解析协议,域名系统以分布式数据库的形式将域名和IP地址相互映射,简单来说,DNS是用来解析域名的,有了DNS我们就不用再记住烦人的IP地址,用相对好记的域名就可以对服务器进行访问,即使服务器更换了IP地址,我们依旧可以通过域名访问该服务器,这样能够使我们更方便的访问互联网


当我们在浏览器中输入www.baidu.com后,将经历以下查询过程:

  • 客户机向本地DNS服务器查询www.baidu.com
  • 本地DNS服务器检查本地数据库,由于没有baidu.com域的记录,因此它将查询信息传递到根域DNS服务器,请求解析主机名称
  • 根域DNS服务器把负责解析"com"域的DNS服务器的IP地址返回给本地DNS服务器
  • 本地DNS服务器将请求发送给负责"com"域的DNS服务器
  • 负责"com"域的服务器根据请求将负责"baidu.com"域的DNS服务器的IP地址返回给本地DNS服务器
  • 本地DNS服务器向负责"baidu.com"区域的DNS服务器发送请求,由于此服务器具有www.baidu.com的记录,因此它将www.baidu.com 的IP地址返回给本地DNS服务器
  • 本地DNS服务器将www.baidu.com的IP地址发送给客户机
  • 域名解析成功后,客户机将http请求发送给Web服务器
  • Web服务器响应客户机的访问请求,客户机便可以访问目标主机

DNS欺骗

DNS在互联网中扮演着如此重要的角色,但是在设计DNS协议时,设计者没有考虑到一些安全问题,导致了DNS的安全隐患与缺陷,DNS欺骗就是利用了DNS协议设计时的一个非常严重的安全缺陷
首先,欺骗者向目标机器发送构造好的ARP应答数据包,ARP欺骗成功后,嗅探到对方发出的DNS请求数据包,分析数据包取得ID和端口号后,向目标发送自己构造好的一个DNS返回包,对方收到DNS应答包后,发现ID和端口号全部正确,即把返回数据包中的域名和对应的IP地址保存进DNS缓存表中,而后来的真实的DNS应答包返回时则会被丢弃

欺骗实践

测试环境
  • 攻击主机:192.168.174.129
  • 目标主机:192.168.174.170
简易测试

Step 1:测试攻击主机的网络连通性

Step 2:之后在攻击者主机端启动Apache服务并构造一个钓鱼页面,这里简化为一个普通的HTML页面,本地测试效果如下

Step 3:查找etter.dns文件,并修改该配置文件,将www.al1ex.com指向本机IP地址

locate etter.dns
leafpad /etc/ettercap/etter.dns

Step 4:使用ettercap开始欺骗

ettercap -G

之后开启DNS欺骗

Step 5:查看效果www.baidu.com——正常访问

www.al1ex.com——钓鱼页面

DNS欺骗记录:

钓鱼模拟

Step 1:开启端口转发功能

echo 1 > /proc/sys/net/ipv4/ip_forward

Step 2:查找etter.conf文件,并修改该配置文件

locate etter.conf
leafpad /etc/ettercap/etter.conf

修改为0

Step 3:查找etter.dns文件,并修改该配置文件

locate etter.dns
leafpad /etc/ettercap/etter.dns

增加一条DNS记录,这里的域名由我们制作的钓鱼网站域名而定:


Step 4:下面进行DNS欺骗攻击

ettercap -T -q -M arp:remote -P dns_spoof /192.168.174.170/192.168.174.2/

#说明:
受害者地址:192.168.174.170
网关的地址:192.168.174.2

Step 5:使用setoolkit克隆网站

setoolkit
http://jwbinfosys.zju.edu.cn/default2.aspx

    

Step 6:在本地访问克隆网站

Step 7:之后诱导用户访问网站


效果有点差强人意,不过当用户访问网站并登录时,会获取到用户的登录凭证信息(后期发现是IE的安全策略的原因)

DNS欺骗记录:

防御措施

DNS欺骗是很难进行有效防御的,因为大多情况下都是被攻击之后才会发现,对于避免DNS欺骗所造成危害,这里给出以下建议:
1、因为DNS欺骗前提也需要ARP欺骗成功,所以首先做好对ARP欺骗攻击的防范
2、不要依赖于DNS,尽管这样会很不方便,可以使用hosts文件来实现相同的功能
3、使用安全检测软件定期检查系统是否遭受攻击
4.使用DNSSEC

LLMNR攻击

协议简介

自Windows Vista起,Windows操作系统开始支持一种新的名称解析协议—LLMNR,主要用于局域网中的名称解析,LLMNR能够很好的支持IPv4和IPv6,它也是一个仅次于DNS的名称解析方式,而且在Linux操作系统中也实现了LLMNR,LLMNR协议解析名称的特点为端到端,IPv4的广播地址为224.0.0.252,IPv6的广播地址为FF02:0:0:0:0:0:1:3或FF02::1:3

解析顺序

  • 检查本地NetBIOS缓存,如果缓存中没有记录,则向当前子网/域发送广播进行查询
  • 检查当前子网/域内主机,如果没有主机响应,则整个请求宣告以失败结束

协议风险

根据LLMNR协议的解析过程可知,当用户访问一个不存在的网络的域名时,例如:Al1ex.com,那么首先会去检查本地NetBIOS缓存,由于缓存记录中没有,进而转去向当前子网/域内进行广播查询,此时如果攻击者进行恶意应答,例如:欺骗用户Al1ex.com为攻击者的服务器端IP地址,那么用户便会先攻击者提供的恶意IP地址发起请求,同时使用用户的Net-NTLM进行身份验证,此时攻击者通过LLMNR投毒的方式即可成功捕获到用户的身份信息,示意图如下:

协议攻击

攻击者可以通过LLMNR协议进行投毒攻击,当用户访问某一个无法解析的域名(不存在/拼写错误)时可以使用LLMNR协议投毒的方式将攻击者主机的IP地址作为应答,之后窃取用户的Net-NTLM Hash

演示环境
  • 域控主机:192.168.174.2
  • 域内主机:192.168.174.4
  • 攻击主机:192.168.174.129
攻击手法

下面我们通过两种方式来演示如何进行LLMNR/NBNS欺骗攻击~

Responder

Step 1:在攻击主机上执行一下命令开启Responder

./Responder.py -I eth0

Step 2:之后模拟受害者访问不存在的\Al1ex.com(可以通过钓鱼的方式或者恶意PDF等众多的方式来实现)

Step 3:之后在Responder端可以成功捕获到用户的NTLM-Hash

Step 4:之后对用户的NTLM-Hash进行爆破(NTLM V1为5500,NTLM v2为5600)

hashcat -m 5600 HTTP-NTLMv2-192.168.174.111.txt passkey.txt

    
Inveigh实现

Inveigh下载地址:https://github.com/Kevin-Robertson/Inveigh
Step 1:之用管理员权限打开攻击机器的powershell依次输入以下命令

. .\Inveigh.ps1
Invoke-Inveigh -ConsoleOutput Y

#PS:如果有执行策略限制再加一条Set-ExecutionPolicy Bypass -Scope Process

    

Step 2:模拟受害者用户访问不存在的UNC路径,且无需认

Step 3:之后再攻击主机中可以看到已经成功抓取到Net-NTLM Hash

Inveigh-Zero

项目地址:https://github.com/Kevin-Robertson/InveighZero


Step 1:之用管理员权限打开攻击机器的cmd之后执行以下命令

Inveigh.exe

    

Step 2:模拟用户在浏览器中输入错误的UNC查询路径,且无需填写表单信息

Step :3:之后可以捕获到用户的Net-NTLM Hash

防御措施

关于LLMNR Poison攻击的实战思路有很多,包括劫持FTP,MySQL,MSSQL Server等,具体的实现可自由发挥,同时为了防止遭到LLMNR Poison攻击,可以导入下面的注册表键值关闭LLMNR,不过关闭了LLMNR以后, 可能用户的一些正常需求会受到影响~

reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient" /v EnableMulticast /t REG_DWORD /d 0 /f
reg add "HKLM\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows NT\DNSClient" /v EnableMulticast /t REG_DWORD /d 0 /f
原文连接: https://xz.aliyun.com/t/11974

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

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

相关文章

手把手教你QT打包(Windows)

第一步、切换工程版本 在这一步可以直接在QT的项目页面就可以完成 在这里切换完成之后建议先运行一下,确保没有问题我们再进行下一步 第二步、找到对应的文件夹和编译工具进行编译 我们在使用的过成功,会发现点击工程中的运行就可以执行,但是…

MySQL详解(二)——基础 2.0

5. 完整性约束 完整性约束是为了表的数据的正确性!如果数据不正确,那么一开始就不能添加到表中。 5.1 主键 当某一列添加了主键约束后,那么这一列的数据就不能重复出现。这样每行记录中其主键列的值就是这一行的唯一标识。例如学生的学号可…

【Linux】基础IO --- 内核级和用户级缓冲区、磁盘结构、磁盘的分治管理、block group块组剖析…

出身寒微,不是耻辱。能屈能伸,方为丈夫。 文章目录一、缓冲区(语言级:IO流缓冲,内核级:块缓冲)1.观察一个现象2.理解缓冲区存在的意义(节省进程IO数据的时间)3.语言级缓冲…

commonjs vs ES module in Node.js

在现代软件开发中,模块将软件代码组织成独立的块,这些块共同构成了更大、更复杂的应用程序。 在浏览器 JavaScript 生态系统中,JavaScript 模块的使用依赖于import和export语句;这些语句分别加载和导出 EMCAScript 模块&#xff…

Java SSM (springboot+mybatis)美食菜谱分享平台系统设计和实现以及论文报告

Java SSM (springbootmybatis)美食菜谱分享平台系统设计和实现以及论文报告 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收…

DNS的解析,查询,调度原理是什么?什么是DNS劫持,污染?如何监控?

DNS的核心工作就是将域名翻译成计算机IP地址, 它是基于UDP协议实现的,本文将具体阐述DNS相关的概念,解析,调度原理(负载均衡和区域调度)等DNS相关的所有知识点DNS简介域名系统并不像电话号码通讯录那么简单&#xff0c…

LeetCode 91. 解码方法 120. 三角形最小路径和 97. 交错字符串 131. 分割回文串 132. 分割回文串 II

🌈🌈😄😄 欢迎来到茶色岛岛屿,本文带来的是LeetCode 91. 解码方法 120. 三角形最小路径和 97. 交错字符串 131. 分割回文串 132. 分割回文串 II 🌲🌲🐴🐴 91. 解码方法…

意图识别和文本分类(六)

一、分类的目的和分类的方法 目标 能够说出项目中进行文本的目的能够说出意图识别的方法能够说出常见的分类的方法 1.1 文本分类的目的 回顾之前的流程,我们可以发现文本分类的目的就是为了进行意图识别 在当前我们的项目的下,我们只有两种意图需要被…

算法刷题打卡第75天:合并两个链表

合并两个链表 难度:中等 给你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个。 请你将 list1 中下标从 a 到 b 的全部节点都删除,并将 list2 接在被删除节点的位置。 下图中蓝色边和节点展示了操作后的结果: 请你…

php debug yasd手记

yasd 调试器 v0.2.5 版本发布,支持 PHP8 以及在 IDE 中使用调试 - 知乎 GitHub - swoole/yasd: Yet Another Swoole Debugger 安装 yasd 在编译安装之前你需要安装boost库。 macOS: brew install boostUbuntu: apt-get install libboos…

Python编程 装饰器

作者简介:一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:b网络豆的主页​​​​​​ 目录 前言 一.函数 1.装饰器引入 (1)时间模块 封装函数&am…

软件测试简历没有邀约,为什么?8类细节通通告诉你(附赠高薪简历)

求职不顺,没有邀约,大概率是你的简历出现了问题。本篇文章列出高薪简历应该注意的细节,合计36处,涉及简历的八大组成部分。现在就讲。一、简历样式要求(3点要求)1、简历格式,推荐使用PDF格式的简…

shopee、lazada跨境电商产品定位和快速获取流量来源是什么?

曹哥首先说的是产品的定位的思路 当确定好具体的经营类目后,就需要去给店铺的商品进行架构分类,一般分为3类,分为爆款,引流款,利润款 关于爆款主要指那些流量高,转化率高,销量高,但…

51单片机学习笔记-9蜂鸣器

9 蜂鸣器 [toc] 注:笔记主要参考B站江科大自化协教学视频“51单片机入门教程-2020版 程序全程纯手打 从零开始入门”。 注:工程及代码文件放在了本人的Github仓库。 9.1 蜂鸣器简介 蜂鸣器 是一种将电信号转换为声音信号的器件,常用来产生…

Hystrix工作步骤说明以及服务监控hystrixDashboard

目录 一、步骤说明和流程解析 二、服务监控hystrixDashboard 官网:How it Works Netflix/Hystrix Wiki GitHub 一、步骤说明和流程解析 1 创建 HystrixCommand(用在依赖的服务返回单个操作结果的时候) 或 HystrixObserableCommand&am…

threadLocal的分享

问题描述:1、书城首页的书明明是广告解锁的,但是没有free标识,经过多次接口请求得出结论,相同的请求参数,有时会展示出free标识,有时不会展示free标识问题分析:1、长时间分析也没有得出结论&…

Linux用户及用户组知识总结

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:Java案例分…

SAP 供应商创建默认字段(屏幕格式)后台配置总结

供应商创建默认字段(屏幕格式)后台配置总结 供应商创建时默认字段(屏幕格式的配置在好几个地方的配置来控制。 一 、定义与采购组织特定的屏幕格式 (事务代码: OMFK) IMG路径为如下图: 在这里…

commons-beanutils的三种利用原理构造与POC

写在前面 commons-beanutils 是 Apache 提供的一个用于操作 JAVA bean 的工具包。里面提供了各种各样的工具类,让我们可以很方便的对bean对象的属性进行各种操作。其中比较常使用的有 MethodUtils/ConstructorUtils/PropertyUtils/BeanUtils/ConvertUtils等。 分析…

Python-文件、eval函数

1.文件的概念和作用1.1文件的概念和作用计算机的文件,就是存储在某种长期储存设备上的一段数据长期存储设备包括:硬盘、U盘、移动硬盘、光盘......文件的作用将数据长期保存下来,在需要的时候使用CPU内存 硬盘1.2文件的存储方式在计算机中&am…