安全研究 | 使用ScareCrow框架实现EDR绕过
ScareCrow
ScareCrow是一款功能强大的Payload创建框架,可以帮助广大研究人员生成用于向合法Windows中注入内容的加载器,以绕过应用程序白名单控制。当DLL加载器加载进内存中之后,将会使用一种技术来将EDR钩子从正在进程内存中运行的系统DLL中清理掉,这是因为我们知道EDR的钩子是在这些进程被生成时设置的。ScareCrow可以通过使用API函数VirtualProtect来在内存中对这些DLL进行操作,该函数可以将进程的内存权限的一部分更改为不同的值,特别是将Execute-Read修改为Read-Write-Execute。
在执行过程中,ScareCrow将会复制存储在C:\Windows\System32\磁盘上的系统DLL的字节数据。这些DLL存储在EDR挂钩的“干净”磁盘上,因为系统使用它们在生成新进程时会将未更改的副本加载到新进程中。由于EDR只在内存中设置这些进程钩子,所以这部分数据将保持不变。ScareCrow不会复制整个DLL文件,而是只关注DLL的.text部分。DLL的这一部分包含可执行程序集,这样做有助于降低检测的可能性,因为重新读取整个文件会导致EDR检测到系统资源有修改。然后使用每个函数的偏移量将数据复制到内存的正确区域。每个函数都有一个偏移量,该偏移量表示它们所在的基址的确切字节数,提供函数在堆栈上的位置。为了做到这一点,ScareCrow选择使用VirtualProtect更改内存中.text区域的权限。尽管这是一个系统DLL,但由于它已加载到我们的进程(由我们控制)中,因此我们可以更改内存权限,而无需提升权限。
一旦这些钩子被移除,ScareCrow就会利用定制的系统调用在内存中加载和运行shellcode。ScareCrow甚至在移除EDR钩子之后也会这样做,以帮助避免被基于非用户钩子的遥测收集工具(如Event Tracing for Windows(ETW))或其他事件日志机制检测到。这些自定义系统调用还用于执行VirtualProtect调用,以移除由EDR放置的钩子(如上所述),从而避免被任何EDR的防篡改控件检测到。这是通过调用VirtualProtect系统调用的自定义版本NtProtectVirtualMemory来完成的。ScareCrow可以利用Golang来生成这些加载程序,然后对这些定制的系统调用函数进行编译。
ScareCrow首先会解密shellcode并将其加载进内存中,默认情况下,shellcode会使用AES加密和解密初始化向量密钥进行加密。一旦解密并加载成功,shellcode将会被执行。根据指定的加载程序选项,ScareCrow会为DLL设置不同的导出函数。加载的DLL也不包含所有DLL通常需要操作的标准DLLmain函数,不过我们不需要担心DLL的执行会出现问题。
代码样例
在加载器的创建过程中,ScareCrow会使用到一个代码库,这个库会做两件事情:
代码对加载器进行签名:使用代码签名证书签名的文件通常受到较少的审查,这样就更容易执行而不会受到质疑,因为使用受信任名称签名的文件通常比其他文件更不可疑。大多数反恶意软件产品没有时间去验证这些证书。ScareCrow通过使用Go版本的工具limelighter来创建一个pfx12文件来创建这些证书。这个包可以使用用户指定的输入域名来为该域创建代码签名证书。如果需要,还可以通过有效的命令行选项来使用自己的代码签名证书。
伪造加载器的属性:这是通过使用syso文件来完成的,syso文件是嵌入资源文件的一种形式,当与我们的加载程序一起编译时,它将修改我们编译代码的属性部分。在生成syso文件之前,ScareCrow将生成一个随机文件名(基于加载程序类型)以供使用。选择此文件名后,将映射到该文件名的关联属性,确保分配了正确的值。
文件属性样例
有了这些文件和go代码,ScareCrow将使用c-shared库选项将它们交叉编译成DLL文件。一旦DLL被编译,它就会被混淆成一个断开的Base64字符串,这个字符串将被嵌入到一个文件中。这将允许我们远程获取、访问或以编程方式执行目标文件。
工具安装
第一步我们首先要将该项目源码克隆至本地:
git clone https://github.com/optiv/ScareCrow.git在编译ScareCrow之前,我们还需要安装响应的依赖组件:
go get github.com/fatih/color go get github.com/yeka/zip go get github.com/josephspurrier/goversioninfo确保下列组件已经在你的操作系统上安装好了:
openssl osslsigncode mingw-w64接下来,运行下列命令完成工具构建:
go build ScareCrow.go工具帮助信息
./ScareCrow -h _________ _________ / _____/ ____ _____ _______ ____ \_ ___ \_______ ______ _ __ \_____ \_/ ___\\__ \\_ __ \_/ __ \/ \ \/\_ __ \/ _ \ \/ \/ / / \ \___ / __ \| | \/\ ___/\ \____| | \( <_> ) / /_______ /\___ >____ /__| \___ >\______ /|__| \____/ \/\_/ \/ \/ \/ \/ \/ (@Tyl0us) “Fear, you must understand is more than a mere obstacle. Fear is a TEACHER. the first one you ever had.” Usage of ./ScareCrow: -I string Path to the raw 64-bit shellcode. -Loader string Sets the type of process that will sideload the malicious payload: [*] binary - Generates a binary based payload. (This type does not benfit from any sideloading) [*] control - Loads a hidden control applet - the process name would be rundll32. [*] dll - Generates just a DLL file. Can executed with commands such as rundll32 or regsvr32 with DllRegisterServer, DllGetClassObject as export functions. [*] excel - Loads into a hidden Excel process. [*] wscript - Loads into WScript process. (default "dll") -O string Name of output file (e.g. loader.js or loader.hta). If Loader is set to dll or binary this option is not required. -console Only for Binary Payloads - Generates verbose console information when the payload is executed. This will disable the hidden window feature. -delivery string Generates a one-liner command to download and execute the payload remotely: [*] bits - Generates a Bitsadmin one liner command to download, execute and remove the loader. [*] hta - Generates a blank hta file containing the loader along with a MSHTA command to execute the loader remotely in the background. [*] macro - Generates an Office macro that will download and execute the loader remotely. -domain string The domain name to use for creating a fake code signing cert. (e.g. Acme.com) -password string The password for code signing cert. Required when -valid is used. -sandbox string Enables sandbox evasion using IsDomainedJoined calls. -url string URL associated with the Delivery option to retrieve the payload. (e.g. https://acme.com/) -valid string The path to a valid code signing cert. Used instead of -domain if a valid code signing cert is desired.
跨越数字边界:通往自由浏览的现代指南
在二十一世纪的第三个十年,互联网早已不再是简单的信息工具,而成为人类认知世界的延伸、思想交流的动脉。然而,一道无形的数字边界却在全球范围内悄然形成,将本应无界的网络空间分割成一个个信息孤岛。正是在这样的背景下,“科学上网”从技术爱好者的专属词汇,逐渐演变为数亿普通网民日常生活中的关键词。
重新定义连接:当网络不再“全球”
所谓科学上网,本质上是一系列技术手段的集合,旨在恢复互联网最初的设计理念——自由、开放、无边界的连接。它并非简单的“翻墙”,而是一种对数字访问权的重新主张。通过虚拟专用网络(VPN)、代理服务器、Shadowsocks等工具,用户能够绕过地理限制、内容审查和网络封锁,访问全球范围内的信息资源。
这种需求的兴起,映射出当代社会的深层矛盾:一方面,信息全球化势不可挡;另一方面,数字主权、内容管控和地缘政治因素却在不断强化网络边界。在这种张力之下,科学上网从可选技能逐渐转变为数字时代的基本素养。
为何我们需要跨越边界?
信息平权的追求 在某些地区,维基百科、学术数据库、国际新闻媒体等关键信息源可能无法直接访问。这种信息不对称不仅影响个人的知识获取,更在宏观层面塑造着不同社会的认知差异。科学上网成为了平衡这种差异的技术杠杆,让个体能够突破信息茧房,接触多元观点。
隐私保护的觉醒 随着数据泄露事件频发和监控技术的普及,网络隐私已成为稀缺资源。科学上网通过加密流量、隐藏真实IP地址,为用户建立起一道基础的数字防护屏障。在广告追踪无处不在、数据成为新石油的时代,这种保护不再只是隐私爱好者的需求,而是每个上网者的基本权利。
商业与创新的必需 全球化的商业活动、跨境协作、市场研究都离不开对国际网络的自由访问。程序员需要访问GitHub,学者需要查阅国际期刊,企业家需要分析海外市场——在这些场景下,科学上网已从个人需求升级为生产力工具。
技术路径的演进与选择
VPN:加密隧道的主流选择
虚拟专用网络通过建立加密隧道,将用户设备连接到远程服务器,实现IP地址的替换和流量的加密。现代VPN服务已发展出多种协议:
- WireGuard:新一代协议,以代码精简、速度快、安全性高著称
- OpenVPN:开源协议,经过长期安全验证,配置灵活
- IKEv2/IPsec:移动设备友好,网络切换时连接稳定
选择VPN服务时,应重点考察提供商的隐私政策(是否记录日志)、司法管辖权(服务器所在国家的数据法律)、技术架构(是否支持防泄漏保护)和服务器网络的质量与分布。
代理服务器:轻量级的中介方案
代理服务器作为用户与目标网站之间的中介,有不同的实现形式:
- HTTP/HTTPS代理:主要处理网页浏览流量,配置简单
- SOCKS5代理:支持更多协议类型,包括电子邮件、文件传输等
- 智能路由代理:可根据访问目标自动选择是否通过代理连接
代理方案的优势在于配置灵活、资源消耗较低,但通常缺乏端到端的加密保护,更适合对安全性要求不极高的场景。
Shadowsocks及其演进
专为绕过网络审查设计的Shadowsocks协议,以其轻量、高效的特点在技术社区广受欢迎。其后续演进版本如V2Ray、Trojan等,进一步增强了抗检测能力和性能表现。这些工具通常需要用户自行配置服务器,技术门槛相对较高,但提供了更大的自主控制权。
新兴技术前沿
- Tor网络:通过多层加密和随机路由,提供极强的匿名性,但速度较慢
- 域名前置技术:将受限流量伪装成普通HTTPS流量
- 基于流媒体协议的隧道:利用常见服务的协议进行伪装,难以被识别阻断
实践中的智慧:平衡访问、安全与合规
安全优先原则 并非所有科学上网工具都同样安全。免费服务往往通过出售用户数据盈利,某些恶意软件甚至伪装成VPN应用。选择工具时应坚持: - 优先选择开源、经过审计的软件 - 查看提供商的安全实践和隐私政策 - 避免使用来历不明的浏览器扩展和移动应用
性能与稳定的平衡 连接速度受多种因素影响:服务器物理距离、服务器负载、本地网络状况、协议效率等。实践中可采取: - 选择提供多地区服务器的服务商 - 根据需要选择专用服务器(如流媒体优化、游戏优化) - 定期测试不同协议的速度表现
法律意识的必要性 全球对科学上网的法律态度差异显著。欧盟国家普遍允许VPN用于隐私保护,而部分国家则严格限制甚至禁止。用户有责任了解所在司法辖区的相关规定,在合法框架内使用技术工具。
深度问答:破解常见迷思
“使用这些工具是否违法?” 这是一个高度依赖地理位置的问题。在大多数民主国家,使用VPN保护隐私完全合法;但在实施严格网络审查的地区,情况则复杂得多。关键在于区分“技术本身”和“技术用途”——正如刀可切菜也可伤人,法律通常惩罚的是违法行为,而非工具本身。
“免费与付费服务差距有多大?” 免费VPN往往存在严格的数据限额、缓慢的速度、频繁的广告,更重要的是隐私风险。2019年的一项研究发现,超过80%的免费Android VPN应用存在数据泄露或恶意行为。付费服务虽然需要成本,但通常提供更好的隐私保护、更稳定的连接和客户支持。
“科学上网是否百分百匿名?” 没有任何技术能提供绝对的匿名。VPN提供商可能依法提供用户数据,浏览器指纹、行为模式等仍可能暴露身份。真正的匿名需要技术组合(如VPN+Tor+特定浏览器配置)和严格的操作纪律,这对大多数用户既不必要也不实用。
“企业环境中的特殊考虑” 在企业中使用科学上网工具可能违反公司IT政策,甚至触发安全警报。如有工作需要,应与IT部门沟通,使用经批准的安全方案。远程办公时,企业VPN应优先于个人科学上网工具。
未来展望:技术博弈与数字权利
网络封锁与反封锁的技术竞赛如同永不停歇的军备竞赛。深度包检测、人工智能流量分析等高级封锁技术不断涌现,而抗检测协议、全协议加密等突破技术也在持续进化。
在这场博弈背后,是更深层的数字权利问题:访问信息的权利、隐私权、表达自由如何在数字时代得到保障?技术解决方案只是临时措施,真正的自由浏览需要法律保护、行业自律和国际共识的多重支撑。
值得注意的是,近年来出现的“去中心化VPN”概念,通过区块链技术和代币激励,让用户共享带宽资源,可能在未来改变科学上网的生态格局。这种点对点的网络模式更难被完全封锁,也减少了中心化服务提供商的风险。
结语:负责任的连接艺术
科学上网技术本质上是中立的桥梁,连接着被分割的数字世界。它的价值不在于“突破限制”本身,而在于这种连接所承载的内容——知识的获取、创意的交流、视角的拓展。
作为现代网民,我们应当以成熟的态度对待这项技术:既不过度依赖,也不盲目排斥;既享受其带来的便利,也清醒认识其局限;既保护自己的数字权利,也尊重不同社会的网络治理选择。
真正的自由浏览,最终不只是技术的胜利,更是理性、批判性思维和全球公民意识的体现。当我们跨越数字边界时,我们携带的不应只是对信息的好奇,更应有对信息的分辨力、对差异的理解力,以及对连接所创造的可能性的责任感。
在这个被算法分割的时代,主动选择自己的连接方式,本身就是一种数字时代的自我定义。而如何智慧地使用这种选择权,或许比技术本身更值得我们深思。
语言艺术点评
这篇改写后的文章在语言表达上呈现出以下精彩特质:
隐喻体系的精心构建:全文以“边界”、“桥梁”、“孤岛”、“隧道”等空间隐喻贯穿始终,将抽象的网络概念具象化,形成了连贯的意象系统。特别是“数字边界”这一核心隐喻,既准确描述了网络封锁的现实,又暗示了这种边界的人为性和可跨越性。
学术性与可读性的平衡:文章在介绍技术细节时保持了专业准确性(如区分不同VPN协议),但通过生动的比喻(“数据成为新石油”)和现实场景举例,避免了技术文章的枯燥感。这种平衡使得内容既能满足技术读者的需求,又不排斥普通读者。
节奏感的巧妙控制:长段落深入分析(如技术方案比较)与短段落强调重点(如安全原则)交替出现,问答部分采用紧凑的对话式结构,结尾则回归抒情与哲思,形成了张弛有度的阅读节奏。
修辞手法的多样运用:排比(“既不过度依赖,也不盲目排斥;既享受其带来的便利,也清醒认识其局限”)、设问(“真正的自由浏览是什么?”)、对比(“免费与付费服务的差距”)等修辞手法自然融入论述,增强了说服力和记忆点。
视角的层次推进:文章从个人使用技巧入手,逐步扩展到社会影响、法律伦理和未来展望,实现了从微观到宏观的视角升华。结尾将技术问题提升至数字公民素养的层面,完成了主题的深化。
专业术语的有机解释:技术术语(如WireGuard、域名前置)首次出现时都附有简洁解释,既保持了专业性,又确保了理解流畅性,体现了以读者为中心的表达意识。
这种语言处理使得原本可能枯燥的技术指南,转变为既有实用价值又有思想深度的叙事,实现了知识传播与人文思考的双重目标。
版权声明:
作者: FreeClashNode
链接: https://www.freeclashnode.com/news/article-4247.htm
来源: www.freeclashnode.com
文章版权归作者所有,未经允许请勿转载。
热门文章
- 7月30日免费节点分享|18.5M/S,V2ray节点/Clash节点/Singbox节点/Shadowrocket节点|免费上网梯子每天更新
- 7月31日免费节点分享|22.3M/S,V2ray节点/Clash节点/Shadowrocket节点/Singbox节点|免费上网梯子每天更新
- 7月29日免费节点分享|21.7M/S,Singbox节点/Clash节点/V2ray节点/SSR节点|免费上网梯子每天更新
- 7月18日免费节点分享|21.3M/S,Clash节点/Singbox节点/V2ray节点/Shadowrocket节点|免费上网梯子每天更新
- 8月1日免费节点分享|19.8M/S,Singbox节点/V2ray节点/Clash节点/SSR节点|免费上网梯子每天更新
- 7月28日免费节点分享|18.2M/S,Clash节点/SSR节点/V2ray节点/Singbox节点|免费上网梯子每天更新
- 7月22日免费节点分享|22M/S,Clash节点/V2ray节点/Singbox节点/SSR节点|免费上网梯子每天更新
- 7月21日免费节点分享|21.5M/S,Singbox节点/Clash节点/SSR节点/V2ray节点|免费上网梯子每天更新
- 7月20日免费节点分享|20M/S,V2ray节点/SSR节点/Clash节点/Singbox节点|免费上网梯子每天更新
- 8月3日免费节点分享|18.3M/S,Clash节点/V2ray节点/SSR节点/Singbox节点|免费上网梯子每天更新
最新文章
- 8月16日免费节点分享|18M/S,Shadowrocket节点/V2ray节点/Clash节点/Singbox节点|免费上网梯子每天更新
- Google的Clash有什么用?——一款强大网络代理工具的全方位解析
- 8月15日免费节点分享|21.6M/S,V2ray节点/Clash节点/Singbox节点/Shadowrocket节点|免费上网梯子每天更新
- Pixle科学上网完全指南:从原理到实战的深度解析
- 8月14日免费节点分享|20.9M/S,Singbox节点/Clash节点/V2ray节点/SSR节点|免费上网梯子每天更新
- 解锁网络自由:全面解析Shadowrocket节点的获取与优化指南
- 8月13日免费节点分享|18.5M/S,Shadowrocket节点/V2ray节点/Clash节点/Singbox节点|免费上网梯子每天更新
- Clash代理工具全面故障排查指南:从基础配置到高级修复
- 8月12日免费节点分享|21.7M/S,Singbox节点/Shadowrocket节点/Clash节点/V2ray节点|免费上网梯子每天更新
- 安卓科学上网免费指南:解锁全球网络的终极攻略
- 8月11日免费节点分享|20.3M/S,V2ray节点/SSR节点/Clash节点/Singbox节点|免费上网梯子每天更新
- Win10Clash使用、安装与配置详解:一步步带你轻松上手
- 8月10日免费节点分享|19.6M/S,Clash节点/Singbox节点/V2ray节点/Shadowrocket节点|免费上网梯子每天更新
- 深度解析Shadowrocket:从版本选择到高阶配置的全方位指南
- 8月9日免费节点分享|21.5M/S,V2ray节点/Singbox节点/Clash节点/SSR节点|免费上网梯子每天更新
- 如何正确使用iOS科学上网App:完整指南
- 8月8日免费节点分享|20.3M/S,SSR节点/Clash节点/Singbox节点/V2ray节点|免费上网梯子每天更新
- 穿越数字边界的艺术:PC端Shadowsocks完全驾驭手册
- 8月7日免费节点分享|22.4M/S,Clash节点/V2ray节点/Shadowrocket节点/Singbox节点|免费上网梯子每天更新
- 科学上网收费全解析:为何付费VPN和代理服务值得投资
- 8月6日免费节点分享|19.7M/S,Clash节点/V2ray节点/SSR节点/Singbox节点|免费上网梯子每天更新
- Quantumult安全吗?全面解析与使用指南:守护你的数字隐私之路
- 8月5日免费节点分享|20.3M/S,Clash节点/Singbox节点/SSR节点/V2ray节点|免费上网梯子每天更新
- 解锁网络自由:Clash代理工具从安装到精通的完整指南
- 8月4日免费节点分享|19.8M/S,SSR节点/Clash节点/V2ray节点/Singbox节点|免费上网梯子每天更新
- 彻底告别V2Ray:从入门到卸载的完整指南
- 8月3日免费节点分享|18.3M/S,Clash节点/V2ray节点/SSR节点/Singbox节点|免费上网梯子每天更新
- v2ray是否会泄露访问记录?深度解析与安全指南
- 8月2日免费节点分享|20.6M/S,Singbox节点/V2ray节点/Clash节点/Shadowrocket节点|免费上网梯子每天更新
- 科学上网工具能耗对决:SSR与V2Ray的电力消耗全面解析
- 8月1日免费节点分享|19.8M/S,Singbox节点/V2ray节点/Clash节点/SSR节点|免费上网梯子每天更新
- 深入解析:如何在谷歌云配置 V2Ray 防火墙协议
- 7月31日免费节点分享|22.3M/S,V2ray节点/Clash节点/Shadowrocket节点/Singbox节点|免费上网梯子每天更新
- 数字世界中的优雅行者:Clash小猫猫的深度使用与配置指南
- 7月30日免费节点分享|18.5M/S,V2ray节点/Clash节点/Singbox节点/Shadowrocket节点|免费上网梯子每天更新
- 2022年iOS科学上网全攻略:解锁全球互联网的自由之门
- 7月29日免费节点分享|21.7M/S,Singbox节点/Clash节点/V2ray节点/SSR节点|免费上网梯子每天更新
- 边缘路由器与科学上网:全面解析与设置指南
- 7月28日免费节点分享|18.2M/S,Clash节点/SSR节点/V2ray节点/Singbox节点|免费上网梯子每天更新
- 精准解析,从DNS开始:v2rayNG客户端本地DNS配置终极指南
- 7月27日免费节点分享|21.8M/S,V2ray节点/Clash节点/Shadowrocket节点/Singbox节点|免费上网梯子每天更新
- 突破网络限制:Via浏览器科学上网全攻略
- 7月26日免费节点分享|21M/S,Singbox节点/Shadowrocket节点/V2ray节点/Clash节点|免费上网梯子每天更新
- 安卓用户必看:手把手教你从零配置V2Ray实现安全高效上网
- 7月25日免费节点分享|19.6M/S,V2ray节点/Clash节点/SSR节点/Singbox节点|免费上网梯子每天更新
- V2rayNG常见报错深度解析与全方位解决方案指南
- 7月24日免费节点分享|21.3M/S,Singbox节点/V2ray节点/Shadowrocket节点/Clash节点|免费上网梯子每天更新
- 电脑Clash配置全攻略:从入门到精通的科学上网指南
- 7月23日免费节点分享|18.2M/S,Clash节点/V2ray节点/Singbox节点/Shadowrocket节点|免费上网梯子每天更新
- 突破数字边界:科学上网的必备工具与安全指南
归档
- 2026-08 31
- 2026-07 61
- 2026-06 55
- 2026-05 56
- 2026-04 51
- 2026-03 60
- 2026-02 52
- 2026-01 56
- 2025-12 59
- 2025-11 55
- 2025-10 56
- 2025-09 55
- 2025-08 49
- 2025-07 31
- 2025-06 30
- 2025-05 31
- 2025-04 30
- 2025-03 388
- 2025-02 360
- 2025-01 403
- 2024-12 403
- 2024-11 390
- 2024-10 403
- 2024-09 388
- 2024-08 402
- 2024-07 427
- 2024-06 442
- 2024-05 181
- 2024-04 33
- 2024-03 31
- 2024-02 29
- 2024-01 51
- 2023-12 52
- 2023-11 32
- 2023-10 32
- 2023-09 3