https://www.bilibili.com/video/BV1A1421k78V
https://github.com/Web3Hack/Web3Hack
https://github.com/shanzson/Smart-Contract-Auditor-Tools-and-Techniques
哈喽各位兄弟们大家好,我是你们的中奖舅妈的。今天给大家讲一下这个Rust这套东西。因为刚好有一个Rust的红色工具集,顺便给大家讲一下。主要不是为了讲这些红队的工具集,主要是为了给大家讲一下这个Rust。
Rust是什么?它是一个新型的编程语言,可以类比我们的Go语言、Python、Ruby、PHP之类的。它是一个新的语言,主要特点是它可以做很多事情,和PHP一样。当然说我说的”什么都可以干”是指绝大多数的情况下。那这个Rust的话,他可能干的事更多一点。
为什么发明Rust呢?主要考虑高性能、安全性之类的因素。你想想,发明一个新的东西,如果比旧的东西还要难用,那肯定没人用。它一定是比旧的东西要强,这就是为什么推荐大家学习的原因。
还有一个原因就是它是跨平台的,也就是Windows、Mac、Linux都可以用。而且它写起来比较方便。还有一个最核心根本的原因,就是它可以看作是C语言的一个新版本。你可以把它想象成一种新型的C语言。以前C语言可以写Windows、Linux、Mac的客户端程序,Rust同样可以写。而且Rust还可以写驱动程序,比如说写一些内核程序。微软很多驱动程序都是用Rust改写的。
Rust是非常严谨的语法语言,所以你写写就知道了。当然它的语法可能会有点怪,刚开始不太会写很正常。它确实比较复杂一点,挺恶心的,但是你熟练了就好了。这是需要熟练的,并不是有多难。
我们说过的红队,它其实是逆向和渗透的一个结合体。所以说如果你对渗透和逆向不熟悉的话,你可能对一些软件,比如说什么注入、DLL之类的不太清楚。所以你要知道你不会哪里,这样你就知道该用什么工具。
至于说这个红队的工具是用什么语言写的,C语言可以写,Rust也可以写,什么都可以写。但是为什么要用Rust呢?用C语言行不行?可以。用PHP可不可以?没有问题。我只是想告诉大家,有这么一种新的东西。以后万一有什么新的问题,你可以用。你懂得越多,你面对未知的事情,解决起来的能力就越强。你只懂一个,那人家都出现五六个了,你刚好懂这个又没有用。所以要懂得多一点,万一你有这样的情况呢。
那我们要干什么?我们要下载这个去看一看。首先下载这个之前告诉大家,就是这个Rust的安装,你可以去官网的”Get Started”或”Install”页面。安装的前提是,你得安装Visual Studio,因为Rust是跨平台的。
Rust的跨平台和我们以前常见的Java、Python的跨平台是不一样的。因为Java和Python中间有个虚拟机去执行,JavaScript也一样。但是Rust语言和Go语言是一样的,它和C语言是一样的,它是直接把我们的源码编译成二进制文件,中间没有虚拟机。这也就是为什么它性能好一点。
它是怎么编译的呢?我们有Rust源码,它直接编译成二进制。如果你编译的是Windows上面的二进制,它就编译出来PE文件。如果是Linux上面,它就变成ELF文件。所以它是不同的,和你写C语言是一样的。你在Windows上写和在Mac上面写,虽然都完成一件事,但是你调用的API肯定是不一样的。
所以你一定要安装Visual Studio,这一套编译链工具。推荐直接安装Visual Studio这种开发工具就行,因为它默认自带,而且没有什么问题。如果你单独安装的话,可能会有一点点问题。
安装的时候,你要设置一下环境变量。你可以设置RUSTUP_HOME和CARGO_HOME这两个环境变量,把它们设置到其他地方,不要安装到C盘,这个不太友好。然后把它们添加到PATH里面就可以了。
安装完成后,你会看到有两个文件夹:.rustup和.cargo。cargo里面有一些核心的工具,比如cargo、rustc、rustup等。你可以把它们类比成Node.js中的nvm、npm这样的工具。如果你连这些都不知道的话,其实也没有关系,因为这个不影响你使用Rust。总而言之,懂得越多,你不懂的就越少,你对未来的学习能力和掌控能力就越强。
下载完成后,我们可以打开工程,做一个简单的测试。比如说打开enum_process这个项目,编译的话直接用cargo build --release就行了。这就完了,这就编译出来了。
如果你第一次编译,它会先帮你把依赖库下载下来,再编译。库的信息在Cargo.toml文件里,类似于Node.js里的package.json。它会自动下载和编译依赖库,所以这个过程是非常方便的。
编译完成后,在target/release目录下就会有编译好的可执行文件。你可以直接运行它,它会显示当前系统的进程信息,包括进程ID和进程名称。
Rust可以编译成各种目标平台的二进制文件。但是要注意,如果你的代码使用了特定平台的API,比如Windows API,那这个程序就不能在Linux上运行。所以Rust的跨平台是指你可以在不同平台上编译,而不是一次编译到处运行。
最后,关于这个红队工具集,重要的是你要知道你要干什么。你需要了解渗透和逆向的基础知识,知道你要完成什么任务,然后再去寻找或开发相应的工具。比如说,如果你想解析一个文件的PE结构,你就可以去找有没有现成的工具,如果没有,你也可以自己写。
记住,工具只是辅助,最重要的是你要理解原理,会写代码,然后再去使用别人的工具。不要只是使用工具而不知道工具是干什么的。好,我们下次再见,大家拜拜。
原文链接: https://dashen.tech/2018/08/06/Rust红队工具/
版权声明: 转载请注明出处.