功能介绍 一个面向终身学习者的付费式学习社区。内容包括但不限于:编程、学习方法、认知提升、思维训练等。
Tags:
via Pocket https://ift.tt/3vF5ALi original site
May 06, 2021 at 09:10AM
Comments
from: github-actions[bot] on: 5/6/2021
Rust 乱炖 | Rust 让恶意软件也变强了 by 觉学社
2021-05-05
本文同步发布于 GitHub 仓库 talking_about_rust[1]。
技术 是一把锋利的双刃剑。—— 鲁迅。
背景
今天看到 proofpoint 发表了一篇题为Buer Loader 用 Rust 创造了新的变种 (New Variant of Buer Loader Written in Rust)[2]的文章。
“
Proofpoint是一家位于加利福尼亚州桑尼维尔的企业安全公司,为入站电子邮件安全,出站数据丢失防护,社交媒体,移动设备,数字风险,电子邮件加密,电子发现和电子邮件归档提供软件即服务和产品。
Buer 是在地下市场上出售的下载程序,以分发包括勒索软件在内的其他恶意软件。Proofpoint于 2019年 首次观察到 Buer。
Proofpoint研究人员确定了4月初通过伪装成(快递公司 DHL)发货通知的电子邮件分发的 Buer 恶意软件加载程序的新变种。邮件中包含指向恶意 Microsoft Word 或 Excel 文档下载的链接,这些链接使用宏来投放新的恶意软件变体。
Proofpoint 把新的变种称为 RustyBuer,因为它们用 Rust的语言完全重写,这与以前的C编程语言有所不同。常见的恶意软件以完全不同的方式编写是很少见的。用 Rust 重写恶意软件可以使威胁者更好地逃避现有的 Buer 检测功能,并且通过使用不同的诱饵技术,提升链接的点击率。这一切都表明威胁者正在以多种方式发展技术,从而逃避检测并试图提高成功的点击率。
RustyBuer 直接嵌入到文档宏中,需要用户交互才能启动感染。此宏利用应用程序绕过(通过 LOLBAS 的 Windows Shell DLL)逃避了端点安全性机制的检测。
尚不清楚威胁者为何花时间和精力用新的编程语言重写恶意软件,但是Proofpoint研究人员指出了两个可能的原因:
Rust 是一种越来越流行的编程语言,它比 C 语言更高效且具有更广泛的功能集。(例如,Microsoft越来越多地在其产品中使用它,并于2021年2月加入了Rust 基金会)。
用 Rust 重写恶意软件可以使威胁参与者逃避基于 C 语言编写的恶意软件功能的现有 Buer 检测。恶意软件作者对其进行了编程,使其应与现有 Buer 后端 C2 服务器和面板保持兼容。
乱炖
其实用 Rust 写恶意软件,这个案例并不是第一个。早在 2016 年 Dr.Web(俄罗斯杀毒软件公司 大蜘蛛)公司就发现了一款用 Rust 实现的 针对 Linux 的特洛伊木马 `Linux.BackDoor.Irc.16`[3]。Doctor Web的分析师认为,Linux.BackDoor.Irc.16
实际上是一个原型(概念验证),因为它无法自我复制。然而 RustyBuer 就是一款完全黑产化的软件了。
随着目前 Rust 知名度越来越高,Rust 在安全/黑产领域可能会越来越流行。抛开黑产软件的伦理道德不谈,单从技术以及 Rust 自身而言,在这种「攻与防」的觥筹交错中,也许会促进各种针对 Rust 的检测工具诞生,进一步丰富生态,促进 Rust 发展。
因此,我对目前安全领域生态中有多少用 Rust 实现的工具产生了好奇。接下来盘点一下 GitHub/GitLab 上发现的一些用 Rust 实现的安全工具。欢迎补充。
渗透测试工具 Metasploit (无)Rust 重写计划
2017 年有人在 Metasploit issue 留言[4],请求 Metasploit 用 Rust 重写。当然,这个 issue 被无情关闭了。因为 Metasploit 当年是从 Python 转为 Ruby 重写,是看中了 Ruby 强大的 DSL 能力。作为渗透测试工具的扛把子,Metasploit 目前没有使用 Rust 重写的理由。除非,有人直接提交 PR,用 Rust 完成了大部分功能,不过我想这件事不会发生。
不过还有个曲线救国的办法,就是用 Rust 重写 Ruby。这个还是有希望的:artichoke/artichoke[5]。Artichoke 就是用 Rust 实现 Ruby 的项目,目前维护也很活跃,已经兼容 MIR(Ruby 2.6.3) 规格。
Metasploit 还有一个功能,叫「Metasploit’s Hardware Bridge」,提供了一系列Hardware REST API[6],可以让 Metasploit 拥有对硬件(IoT领域)操作的能力。对于 REST Api,用任何语言都可以包装它,Rust 也可以。不过这个相关文档有五年没有更新了,不知道发展如何。
扫描
rustscan/rustscan[7]
RustScan 是一个现代化的端口扫描器,并且提供脚本引擎来支持运行 Python,Lua,Shell。
该工具的特色是:
高性能。
3
秒内可以扫描65,000
个端口。全面的脚本引擎支持。自动将结果传送到 Nmap,并支持自定义脚本。
支持 自适应学习(Adaptive learning)。用的越多,RustScan 越智能,不是基于臃肿的机器学习,主要是基于基本数学。
feroxbuster[8]
一款高性能的内容发现工具,用于渗透测试。feroxbuster 使用蛮力结合单词列表在目标目录中搜索未链接的内容,这是一种攻击行为。这些资源可能存储有关 Web 应用程序和操作系统的敏感信息,例如源代码,凭据,内部网络寻址等。此攻击也称为可预测资源位置,文件枚举,目录枚举和资源枚举。
隐身匿名
Tor 和 Rust
在 2020 年 Tor 浏览器用 Rust 实现部分模块: Rust in Tor[9]
Arti: 纯 Rust 实现的 Tor 协议[10],目前维护非常频繁。详细看这里[11]。
zero-gear/rusty-tor[12]
一个概念验证的 Tor 客户端。不过有两年没有维护了。
免杀
Rust 写 Shell Code 也是可以的。
Writing shellcode in Rust[13]
writeonly.rs[14]
rust-windows-shellcode[15]
SassyKitdi: Kernel Mode TCP Sockets + LSASS Dump[16]
zerosum0x0/SassyKitdi[17]
Crab-Runner[18],shellcode Runner.
rs_shellcode[19],shellcode Runner.
重点介绍:
amber[20]。号称首款 反射式 PE 打包器,目前开发很活跃。
Amber是位置无关(反射)的 PE 加载器,可在内存中执行本机PE文件(EXE,DLL,SYS …)。它实现了秘密的的内存有效负载部署,可用于绕过防病毒,防火墙,IDS,IPS产品和应用程序白名单缓解措施。由Amber生成的反射性有效负载可以从远程服务器上演,也可以像在通用Shellcode中一样直接在内存中执行。
amber 提供的打包方法,可以改变将恶意软件传送到系统的方式。通过尝试通过无文件代码注入将有效负载传递到系统,可以直接绕过大多数安全机制,而不是尝试寻找提供机器学习数据集的新的反检测技术。使用这种新的打包方法,可以将已编译的PE文件转换为可与常见软件漏洞(例如缓冲区溢出)一起使用的多阶段感染有效负载。
更多介绍:Introducing New Packing Method: First Reflective PE Packer Amber[21]
Exploits/ payloads / hacking
这个开发者 kpcyrd[22],编写了一系列安全工具。
sn0int[23], 半自动高级公开资源情报(OSINT)框架和程序包管理器,用于扫描目标IP地址、电子邮件、网站和组织信息,并从不同消息源收集各种情报信息。
sniffglue[24],多线程网络嗅探器。Kpcyrd 经常使用tcpdump,但他认为输出更友好的话会更好,并且 wireshark 也经常存在漏洞,tcpdump 有时也有漏洞,所以他用 Rust 实现了这个工具。
badtouch[25], 可编写脚本的网络身份验证破解程序。
rshijack[26],用 Rust 重写了 shijack,实现 TCP 会话劫持。
Fuzz 工具
Cargo Fuzz[27],Rust 官方开发的 Fuzz 工具。
honggfuzz-rs[28],Google 开发的 Fuzz 工具。
Sidefuzz[29], 侧信道漏洞检测工具。
其他工具
RustSec/advisory-db[30],通过crates.io[31]发布的Rust Crate 的安全咨询数据库。
cargo-audit[32],
Cargo.lock
中依赖审查工具。cargo-crev[33],代码 Review 工具。
ripasso[34],一款密码管理工具。
libinjection-rs[35], 对 libinjection 的 Rust 绑定,libinjection 是一款 SQL 注入工具。
lethe[36],安全,免费,跨平台和开源的驱动擦除工具。
参考资料
[1]
talking_about_rust: https://github.com/ChaosStudyGroup/talking\_about\_rust
[2]
Buer Loader 用 Rust 创造了新的变种 (New Variant of Buer Loader Written in Rust): https://www.proofpoint.com/us/blog/threat-insight/new-variant-buer-loader-written-rust
[3]
用 Rust 实现的 针对 Linux 的特洛伊木马 Linux.BackDoor.Irc.16
: https://news.drweb.com/show/?i=10193&lng=en
[4]
Metasploit issue 留言: https://github.com/rapid7/metasploit-framework/issues/9092
[5]
artichoke/artichoke: https://github.com/artichoke/artichoke
[6]
Hardware REST API: https://www.rapid7.com/about/press-releases/rapid7-enables-iot-hardware-security-testing-with-metasploit/
[7]
rustscan/rustscan: https://github.com/rustscan/rustscan
[8]
feroxbuster: https://github.com/epi052/feroxbuster
[9]
在 2020 年 Tor 浏览器用 Rust 实现部分模块: Rust in Tor: https://gitlab.torproject.org/legacy/trac/-/wikis/RustInTor
[10]
Arti: 纯 Rust 实现的 Tor 协议: https://gitlab.torproject.org/tpo/core/arti/
[11]
这里: https://forum.zcashcommunity.com/t/arti-a-pure-rust-tor-implementation-for-zcash-and-beyond/38776
[12]
zero-gear/rusty-tor: https://github.com/zero-gear/rusty-tor
[13]
Writing shellcode in Rust: https://jade.fyi/blog/writeonly-in-rust/
[14]
writeonly.rs: https://github.com/lf-/ctf/tree/main/writeonly.rs
[15]
rust-windows-shellcode: https://github.com/b1tg/rust-windows-shellcode
[16]
SassyKitdi: Kernel Mode TCP Sockets + LSASS Dump: https://zerosum0x0.blogspot.com/2020/08/sassykitdi-kernel-mode-tcp-sockets.html#sassy\_rust
[17]
zerosum0x0/SassyKitdi: https://github.com/zerosum0x0/SassyKitdi
[18]
Crab-Runner: https://github.com/cdong1012/Crab-Runner
[19]
rs_shellcode: https://github.com/b1tg/rs\_shellcode
[20]
amber: https://github.com/EgeBalci/amber
[21]
Introducing New Packing Method: First Reflective PE Packer Amber: https://pentest.blog/introducing-new-packing-method-first-reflective-pe-packer/
[22]
kpcyrd: https://github.com/kpcyrd
[23]
sn0int: https://github.com/kpcyrd/sn0int
[24]
sniffglue: https://github.com/kpcyrd/sniffglue
[25]
badtouch: https://github.com/kpcyrd/badtouch
[26]
rshijack: https://github.com/kpcyrd/rshijack
[27]
Cargo Fuzz: https://github.com/rust-fuzz/cargo-fuzz
[28]
honggfuzz-rs: https://github.com/rust-fuzz/honggfuzz-rs
[29]
Sidefuzz: https://github.com/phayes/sidefuzz
[30]
RustSec/advisory-db: https://github.com/RustSec/advisory-db/
[31]
crates.io: crates.io
[32]
cargo-audit: https://github.com/RustSec/cargo-audit
[33]
cargo-crev: https://github.com/crev-dev/cargo-crev
[34]
ripasso: https://github.com/cortex/ripasso/
[35]
libinjection-rs: https://github.com/arvancloud/libinjection-rs
[36]