钵钵鸡渗透

  • AMSI

windows defender服务(MsMpEng.exe)调用 AMSI,hook 脚本接口,尝试检测已知签名

bypass AMSI 检查最简单的方法是寻找 AMSI 不支持的区域。比如Excel 4.0 版本的宏,由 excel.exe 程序本身解释执行,不由 AMSI hook的 DLL 解释执行。PowerShell 2 解释器也不支持 AMSI。攻击者会尝试强制使用旧版本解释器。

AMSI会规范化字符串(检查已知恶意签名之前将字符串分解成不可分割的字符)需要时间,在规范化之后检测应用签名也会花更长时间。

我们的目的不是永久绕过 AMSI,只需要拖延防御时间,以便完成命令的运行(比如Windows defender无法检测加载器,在运行加解密shellcode后,C2已建立,直接把数据拖出来,这个时候windows defender再告警已经晚了)。

AMSI 是 Windows API,可以通过 Windows 进行管理。可以操纵 Windows,阻止其加载正确的 AMSI 库。PowerShell 中包含 AMSI 控件,此外还有一个 AMSI.dll 文件,该文件可能成为 DLL 受害的目标。

AMSI Bypass Tool(避免 AMSI 被检测的最可靠方法是使用没有特征码的原始命令和脚本。)

由于使用了 AMSI.dll,可以尝试阻止该 DLL 的加载,甚至可以在脚本解释器和 AMSI.dll 之间执行内存中间人攻击。

  • 常见的网络访问控制 (NAC) 解决方案

NAP - Windows Server 上的网络访问保护,Server 2016 之后不再支持
NPS - Windows Server 2016 及更高版本上的网络策略服务
OPNsense
pfSense
PacketFence (Linux package)

大部分的准入只是跟踪 MAC 地址,而且通常都会存在不安全的配置

无客户端网络访问控制 (NAC):实施时利用 Captive Portal Authentication 强制门户认证系统来验证用户身份,客户端连接到高度受限网络,通过 web 页面拦截强制进行身份验证,基于浏览器的验证检查,身份验证成功后授予内外网络的访问权限(使用客户端的 MAC 地址、IP 地址或两者来验证所有流量是否来自已认证的客户端。)

强制门户系统使用带外管理 (OOB),则可能会引入 SNMP 或其他管理协议的攻击向量;强制门户系统本身就是web,容易受到多种 Web 攻击;强制门户服务器的 HTTP 认证需要多个底层协议来支持。在强制门户认证之前,DHCP 和 DNS 等服务必须可供最终用户访问,这些基础设施也能构成攻击向量;攻击其他预认证客户端设备

无SSL的内部强制门户服务器:网络嗅探工具 Cain & Abel(以前官网 www.oxid.it ),如果你知道以前的下载地址,可以进行OSINT:https://web.archive.org/web/20160217062632/http://www.oxid.it/projects.html
综上:那些以前的网站现在已失效时,都可以进行以上OSINT

冒充已离开但仍处于身份验证状态的用户:内联强制门户系统使用 MAC/IP 地址验证已认证的客户端

MAC 地址伪造( MAC Address Impersonation):https://github.com/delebird/MAC_Cycler/tree/master/mshift
https://github.com/matthewlinton/Windows-Scripts/blob/master/macblast/Lib/macshift.exe
苹果系统以及其他linux系统AI一把梭即可:ifconfig en1 ether 00:00:00:00:00:00

无客户端代理的 NAC 存在兼容那些不支持该代理的系统:手机、iPad、掌上电脑和其他 PDA 等移动设备可能需要网络访问,但 NAC 供应商可能不支持这些设备。冒充这些设备进行白名单绕过。

系统验证:为了防止有人绕过网络访问控制 (NAC) 系统,厂商在 MAC 地址验证之外引入了额外的系统验证检查;Web 浏览器用户代理检查,被动操作系统指纹识别,JavaScript 操作系统验证(在 HTTP 响应中插入自定义 JavaScript 代码,收集有关客户端浏览器文档对象模型 (DOM) 信息)

Web 浏览器用户代理伪造:Firefox 插件 User-Agent Switcher
被动操作系统指纹识别:TCP协议栈指纹识别,对指纹与MAC地址不匹配的客户端发出警报或拒绝;类似开源工具 p0f,运行该工具会产生一个基线值,检查 TCP SYN 帧的特征(TTL,TCP 窗口大小,初始 TCP SYN 帧的总帧大小,不分片 (DF) 标志值,最大段大小的值,TCP 窗口缩放值,TCP 时间戳选项的行为,选择性 ACK 标志的状态,TCP 标志的顺序和存在情况,包括 NOP 指令,TCP SYN 数据包的特殊之处)
Windows的OSfuscate工具:用于修改操作系统指纹(http://www.irongeek.com/i.php?page=security/code
JavaScript 操作系统验证:navigator.appName,navigator.vendor,navigator.buildID,navigator.oscpu,navigator.product,navigator.productSub
自定义浏览器伪造 about:config 右键新建:Firefox 允许我们通过 JavaScript 创建配置键来自定义从 DOM 返回的值。配置键的格式为 general.XXX.override,其中“XXX”是“navigator”后缀的全小写 DOM 名称。(例如,要覆盖 navigator.oscpu,我们可以创建一个名为 general.oscpu.override 的键,并为其赋一个任意字符串值。)

  • 802.1x Controls

基于802.1X 的网络认证:客户端、交换机以及认证服务器(RADIUS 服务器),EAP/TLS 类型用于定义认证过程的执行方式以及所使用的认证类型;不支持 802.1X 或不支持所使用的 EAP 类型的设备通常会由于兼容性而导致认证绕过(例如打印机和其他嵌入式设备)
参考:https://support.huawei.com/enterprise/en/doc/DOC1000069608/e6deda59/example-for-configuring-8021x-authentication-to-control-user-access

预认证流量:客户端认证流量(Ethernet/802.1X/EAP )到交换机到RADIUS认证服务器(Ethernet/IP/RADIUS/EAP);许多 RADIUS 服务器在处理格式错误的 EAP 流量时都存在安全漏洞;攻击者可以使用畸形帧对 RADIUS 服务器进行模糊测试,如果无RADIUS 响应流量,我们就知道 RADIUS 服务器已停止响应。
畸形帧对 RADIUS 服务器进行模糊测试:入门级工具 https://www.willhackforsushi.com/code/eapmd5fuzzies.py
有线 EAP 影子攻击:使用与受害者不同的 IP 地址,但 MAC 地址相同;IEEE 802.1X 是二层协议,交换机不会受到影响
802.1X 影子:至少有两个以太网端口的设备可以被用作中间人攻击 (MitM) 设备,连接合法的 IEEE 802.1X 设备(例如电话或打印机)和网络交换机。可以创建一个到攻击者控制的 SSH 服务器的出站 SSH 会话。利用 SSH 反向 SOCKS 代理功能,攻击者可以使用此入站连接,通过代理链和其他支持 SOCKS 代理的工具,从受害者 IEEE 802.1X 认证器的访问级别访问受害者组织内部的资产。
VLAN 操纵或 VLAN 跳跃攻击:不支持windows包括它的虚拟机,Windows 系统(包括 Windows 10 及更早版本)本身并不支持 VLAN 中继功能,例如 IEEE 802.1Q;要利用 VLAN 配置错误或缺陷必须使用 Linux 系统
动态中继协议 (DTP) :思科专属;允许交换机确定并协商交换机端口的状态,使其成为使用 IEEE 802.1Q 或交换机间 LAN (ISL,思科专有中继协议) 的中继端口,或接入端口。如果能够诱骗交换机,使其认为连接的系统是使用 802.1Q 的交换机,那么就可以诱骗交换机将端口配置为 trunk 端口,从而将所有具有类似上行访问权限的 VLAN 流量向下传递。
VLAN 操纵或 VLAN 跳跃攻击工具:Yersinia;Linux VLAN 工具(包含vconfig 工具等)配置虚拟接口进行接入

所谓的跳跃攻击或对 DTP 端口的访问,即切换网卡接口等参数,把流量打过去
route add -net 0.0.0.0/0 eth0.200
# vconfig add eth0 100
# vconfig add eth0 200
# dhclient eth0.100
# dhclient eth0.200
# nmap -sS -p 10.10.200.1

软件定义网络(SDN):虚拟化平台通常利用虚拟交换机产品为不同的虚拟机分配VLAN,并构建软件定义网络(SDN)。由于虚拟化主机需要通过trunk端口访问物理交换机才能桥接多个VLAN,因此供应商建议管理员部署网络时启用trunk端口访问。
语音 VLAN 跳跃攻击:使用单个交换机端口将 VoIP 电话连接到语音 VLAN,同时第二个设备可以连接到该电话以访问不同的 VLAN。VoIP 电话实际上就变成了一个双端口交换机,为了桥接来自工作站(位于与电话不同的 VLAN)的流量,VoIP 电话必须成为一个中继端口(即使只是一个有限的中继端口),以便区分自身的流量和下游设备的流量。
Cisco 发现协议 (CDP) :通过检查 CDP 数据包,我们可以识别出本地 VLAN 号和 VoIP VLAN 号,这些信息足以让攻击者跳转到不同的 VLAN。
VoIP VLAN跳跃攻击:自动化攻击工具 Voiphopper

# dhclient eth0
# modprobe 8021q
# vconfig add eth0 200
# dhclient eth0.200
  • 网络操控

虽然有很多方法可以实施中间人攻击,但许多网络会部署防御措施来抵御常见的攻击技术,这迫使我们寻找不太常见的技术才能成功。

局域网操纵:arpspoof、Cain、Ettercap 和 Bettercap
ARP欺骗:向默认网关发送伪造的ARP应答消息(我是11客户端IP的mac值)。在操纵默认网关后,告知每个网络节点自己是默认网关(我是默认网关的mac值)。一旦完成,所有网络流量都会桥接到攻击者。
既然是伪造真实11客户端mac值,就存在真实11客户端的IP;既然是伪造默认网关mac值,就存在真实网关的IP值。
威胁狩猎统计大法:两个不同的IP值都告诉默认网关自己是同一个mac值?一分钟即可判断是否出现真实的arp欺骗攻击还是误报。

  • 路由攻击

底层思维认知力:注意,我们主要关注的是所有协议的“特性或功能点”,这种认知力类似于《如何掌握所有的程序语言》:http://www.yinwang.org/posts/master-pl (同理:我们不是掌握shrio反序列化或fastjson反序列化漏洞,而是掌握所有的反序列化漏洞。我们掌握的是存在一个库里面的危险函数而导致的反序列化漏洞,而不是各种钵钵鸡的语法糖)

热备路由器协议 (HSRP):多路由器高可用性;参与 HSRP 的路由器都配置了一个公共的虚拟 IP 地址,该地址为客户端设备的网关;使用 UDP/1985 协议定期向 224.0.0.2 发送多播 Hello 消息
HSRP 身份验证:默认明文传输,密码在HSRP Hello 消息中,默认密码为cisco;为组播224.0.0.2流量,无需发起中间人攻击即可观察到 HSRP 流量和 HSRP 身份验证数据;HSRP 支持使用共享密钥在所有设备上进行基于 MD5 的身份验证
HSRP 中间人攻击:攻击者能够观察到 HSRP 使用的认证字符串,利用 HSRP 漏洞发起中间人攻击,成为网络中新的主路由器;发送优先级高于被观察到的主路由器的 HSRP Hello 消息;收到攻击者的 HSRP Hello 消息后,原主路由器和辅助路由器将被降级为辅助路由器和三级路由器,失去对网络的控制权;攻击者将其网卡 MAC 地址更改为 00:00:00:00:00:XX,其中 XX 替换为 Hello 消息中观察到的 HSRP 组地址,并使用默认网关的 IP 地址;攻击者利用默认网关的 IP 地址,成为网络所有流量的中心节点,并在将流量转发到其他 HSRP 路由器之前进行中间人攻击;攻击者会定期在网络上发送 HSRP Hello 消息,以维持其作为主路由器的地位
HSRP 中间人攻击工具:Yersinia
虚拟路由器冗余协议 (VRRP / CARP):RFC 3768/RFC 5798;00:00:00:00:00:XX(其中“XX”是 VRRP 组)来共享一个虚拟 IP 地址;组播 224.0.0.18 向其他备用设备发送保活消息;VRRP 不使用 UDP 作为 IP 有效载荷,而是使用 IP 协议 112;VRRP 不包含任何身份验证或完整性检查;当攻击者在局域网中监听 VRRP 保活流量时,所有 VRRP 配置都存在漏洞
三层协议漏洞利用工具(含VRRP):Loki,https://insinuator.net/tag/loki/
路由协议:许多组织未能有效过滤路由协议流量,导致路由消息能够传递到最终用户段。作为攻击者,只要能够观察到路由协议流量(无论是 OSPF、RIP、RIPv2、EIGRP 还是其他协议),就有机会利用网络漏洞,发现内部网络,根据路由拓扑数据绘制网络基础设施图,获得大规模中间人攻击的机会
OSPF 快速入门:一种内部网关协议 (IGP),与外部网关协议(边界网关协议 (BGP))不同;组播地址 224.0.0.5 在网络上定期发组播数据包,向其他路由器通告其可用性并建立 OSPF 邻居关系;相邻路由器使用链路状态通告 (LSA) 相互共享拓扑信息;LSA 也会发送到上游邻居设备,区域内所有路由器都能共享路由拓扑的副本;OSPF 至少有一个区域,称为骨干区域,指定为“区域 0.0.0.0”或简称“区域 0”;rfc2328
路由故障:主机广播流量的 NetBIOS 名称服务器 (NBNS) 流量(表明此流量仅限于 LAN 流量,而非 WAN 流量)以及无连接 LDAP (CLDAP) 流量(可能来自 Windows 设备和其他客户端活动)。在同一 LAN 上,还存在 OSPF Hello 数据包;Auth Type:null;这种配置允许攻击者成为路由器,并参与内部网络的路由拓扑,根据需要注入路由
OSPF路由枚举:针对OSPF第一步是枚举内部网络的路由信息;路由信息并非通过OSPF Hello消息发送;攻击者必须以邻居设备的身份参与网络,才能接收揭示网络拓扑信息的LSA(链路状态通告);为了以路由器的身份参与,需要一个工具来发送必要的OSPF交换信息,以及在OSPF认证不为NULL的环境中用于MD5 challenge/response 质询/响应的共享密钥;攻击者加入网络后,会与指定路由器(DR)和备份指定路由器(BDR)建立邻居关系;通过建立邻居关系,攻击者可以获知路由表信息,并有机会发布自己的路由器;攻击者通过 OSPF 状态树与对等路由器进行交互(ExStart、Exchange、Loading、Full)
Loki工具:OSPF 枚举;OSPF MD5 challenge/response 认证机制攻击
边界网关协议 (BGP) 安全性:任何无法安全验证路由信息的路由功能都存在安全隐患,应使用完善的公钥基础设施 (PKI) 来签名和确认路由器间的通信;可以使用 https://isbgpsafeyet.com 检测上游 ISP 是否被列为安全
路由器虚拟机:Loki 工具可以作为操控内部路由表的实用工具,但无法代表路由器的所有功能;可带路由器到目标组织并用它来攻击内部网络基础设施,或者使用路由器虚拟机(Dynamips 是一款 Cisco IOS 虚拟机);Zebra+Quagga、FRR 或其他开源路由软件;Dynamips 的配置和管理较为复杂,Dynagen(一个 Python 脚本) 是 Dynamips 的一个简单前端;配置过程比较复杂,参考 https://www.gns3.com/

  • IPv6 渗透测试

IPv6 渗透测试:因为许多组织已经在不知不觉中将 IPv6 作为现代操作系统的默认组件,应用于传统计算设备和移动设备平台,但他们自己不知道;
IPv6 Header:Version字段;Traffic Classification 流量优先级;Flow Label 路由处理字段;Payload Length;Next Header;Hop Limit;Source Address;Destination Address
IPv6 地址说明:十六进制表示法,以 16 位为一组;冒号分割;所有前导 0 都可以省略,保留尾随 0;连续的 0 组,可以使用双冒号表示法 ("::") 将其省略仅限一次;

aaaa:0000:0000:0000:aaaa:0000:0aaa:aaaa
aaaa:0:0:0:aaaa:0:aaa:aaaa
aaaa::aaaa:0:aaa:aaaa

IPv6 地址:单播地址,任播地址,多播地址(不再使用广播地址);特殊的 IPv6 地址前缀(链路本地地址,唯一本地地址,组播 IPv6 流量,所有节点组播地址取代 IPv4 广播地址,EUI 64 扩展方法利用客户端 MAC 地址实现 IPv6 地址的无状态自动配置,互联网范围内的 IPv6 地址空间全球分配给区域注册机构,用于文档目的,用于 IPv4 到 IPv6 过渡的 Teredo 地址); 检查表 https://www.roesen.org/files/ipv6_cheat_sheet.pdf
Linux IPv6 接口配置:IPv6 驱动程序被编译成内核模块,可用 modprobe 命令加载

modprobe ipv6
ifconfig eth0 inet6 add IPv6/64
ifconfig eth0 | grep inet6
ifconfig eth0 inet6 del IPv6/64

IPv6攻击向量,本地 IPv6 设备枚举:局域网访问组织网络,利用被动和主动分析技术进行主机发现,无需不切实际的扫描 IPv6 地址范围;IPv6 地址 ff02::1 用于联系所有链路本地设备;ping6 命令联系网络上的所有本地设备,并将响应记录为 IPv6 邻居;当设备手动配置或通过 DHCPv6 或 ICMPv6 路由器发现 (RD) 分配 IPv6 地址时,它会以组播数据包的形式向其配置的地址发送 ICMP 邻居请求 (NS) 查询。网络上的所有其他节点都会收到该消息,并通过重复地址检测 (DAD) 机制确保新地址尚未被使用。通过被动监听这些 ICMPv6 NS 查询,我们可以识别加入网络的新 IPv6 设备;THC-IPV6 工具套件 (https://github.com/vanhauser-thc/thc-ipv6) 中包含的 detect-new-ip6 工具可用于识别作为 DAD 协议一部分的 ICMPv6 NS 消息,从而报告新 IPv6 节点的存在。 detect-new-ip6 工具还可以为每个发现的节点运行指定的命令或 shell 脚本,从而实现对已发现设备的自动扫描和利用(在 Debian Linux 发行版中,detect-new-ip6 工具已重命名为 atk6-detect-newip6)

主动发现,向所有链路本地主机进行多播 ping 操作
$ ping6 -c 5 ff02::1%eth0 >/dev/null
$ ip -6 neigh

被动发现,重复地址检测活动
# detect-new-ip6 eth0
# detect-new-ip6 eth0 ./your-custom-script.sh

IPv6攻击向量,扫描 IPv6 主机:操作系统 TCP/IP 协议栈通常会对组播地址和链路本地地址进行模糊解释,可以使用地址末尾的“%”和适配器标识符显式定义地址的“作用域”(类似你的隧道存在一个远程局域网的10.10段,但是你要注意是哪个网卡适配器,不要扫描结果为本地10.10段,然后本地无此段给你显示本地10.10段的扫描结果)

# nmap -6 -sS -sC aaaa:aaaa:0:1::23%eth0
# ncat aaaa:aaaa:0:1::23%eth0 80

IPv6攻击向量,邻居冒充中间人攻击:
159

posted @ 2025-11-27 08:20  sec875  阅读(10)  评论(0)    收藏  举报