哪种脚本语言更适合笔测?

时间:2020-03-05 18:57:02  来源:igfitidea点击:

首先,我想避免对语言的争执。选择的语言是Perl,Python和Ruby。我想提一提,我对所有这些方法都很满意,但问题是我不能只专注于其中一个。

例如,如果我看到一个很棒的Perl模块,则必须尝试一下。如果我看到一个不错的Python应用程序,那么我必须知道它是如何制作的。如果我看到Ruby DSL或者某些Ruby伏都教,那我迷上了Ruby一会儿。

目前,我正在以Java开发人员的身份工作,但计划在不久的将来采用CEH。我的问题是:对于工具编写和漏洞利用开发,我们认为哪种语言最合适?

再说一次,我不想引起大战或者任何麻烦,我只想让知道他们在做什么的脚本作者的诚实意见。

还有一件事:也许你们中的一些人会问"为什么要选择一种语言?"。要回答这个问题:我只想选择一种语言,以便尝试掌握它。

解决方案

回答

这取决于实现,如果可以分发,我将使用Java,因为它具有可移植性,因此请参见我们所知道的。如果仅用于内部使用,或者将在半受控环境中使用,则请选择最舒适的维护方式,以及长期展望最佳的方式。

现在只需回答这个问题,我就选择Perl,但我是一名Linux专家,因此我可能对此有偏见。

回答

那么,我们在考虑什么样的利用?如果要编写需要低级内容(ptrace,原始套接字等)的东西,则需要学习C。但是Perl和Python都可以使用。真正的问题是哪一个更适合风格?

至于工具制作,Perl具有良好的字符串处理能力,更接近系统,具有良好的支持,但是恕我直言,这非常令人困惑。我更喜欢Python:它是一种简洁,易于使用,易于学习的语言,并具有良好的支持(完整的语言/库参考,第三方库等)。而且(严格的恕我直言)很酷。

回答

所有这些都应该足够了。除非我们需要仅以一种语言提供的某些库,否则我将根据个人喜好指导我。

回答

如果我们正在寻找一种可以在Java中很好地运行的脚本语言,那么我们可能想看一下Groovy。它具有Perl的灵活性和功能(闭包,内置的正则表达式,每个角落的关联数组),但是我们可以从中访问Java代码,因此可以访问大量的库,尤其是系统的其余部分。重新发展。

回答

metasploit是渗透测试的绝佳框架。它主要是用Ruby编写的,因此,如果我们对这种语言非常了解,也许可以加入其中。但是,要使用metasploit,我们根本不需要任何语言。

回答

作为CEH,首先要学习CEH材料。这将使我们接触到用于发起各种攻击的各种工具和平台。一旦我们很好地了解了目标,就可以研究已经可用的工具和平台的功能(前面提到的metasploit框架非常透彻且强大)。如何扩展它们以满足需求?一旦知道了,就可以比较语言的功能。

我还建议我们查看BackTrack发行版上可用的工具。

回答

[免责声明:我主要是Perl程序员,这可能会影响我的判断。但是,我不是一个特别部落的人,并且我认为在这个特定问题上,我的论证是合理客观的。]

Perl旨在无缝地融合到Unix环境中,这就是为什么它对于以OO语言为主的人(尤其是OOP的Java学校)感觉如此陌生的原因。出于这个原因,尽管如此,它在各种Unixoid OS上的机器上安装得非常广泛,并且其中写入了许多供应商系统实用程序。同样出于同样的原因,既没有安装Python也没有安装Ruby的服务器仍可能在其上安装Perl,再次使其具有一定的熟悉度很重要。因此,如果CEH活动包括在Unix上的广泛活动,则无论如何我们都必须对Perl有一定的了解,并且不妨将精力集中在Perl上。

就是说,这在很大程度上是优先事项。没有太多区分语言的方法。它们的表达力实际上是相同的。在其中一种语言中,有些事情有些容易,而在另一种语言中,有些事情则容易一些。

在库方面,我不知道Ruby和Python如何相互比较,但我确实知道Perl可以让它们胜出一筹。再说一遍,有时(特别是当我们在寻找满足共同需求的图书馆时),唯一的效果就是我们会被选择所困扰。而且,如果我们只想在Python或者Ruby库很好地覆盖的某个特定领域中做事,那么CPAN上的其他大量内容不一定就是优势。但是,在小众领域中,这很重要,而且我们永远都不知道最终会有什么无法预料的需求(根据定义,是错误的)。

对于命令行上的一线使用,Python是一种非入门级工具。

就交互式解释器环境而言,Perl非常好,我们可以使用调试器,它不是那么好,或者可以从CPAN安装一个调试器,但是Perl本身并没有提供很好的调试器。

因此,我认为Perl确实确实可以满足需求,但仅能满足需求。如果我们选择Ruby,状况可能不会再差很多。 Python可能会给我们带来不便,但也不是一个坏选择。

回答

我可以为所有三个论点:-)

Perl具有所有CPAN,这为我们提供了快速组合功能的巨大优势。它还具有良好的灵活测试基础结构,这意味着我们可以在同一框架中插入许多不同的自动化测试样式(包括其他语言的测试)。

Ruby是一门可爱的语言,在Perl 5中缺乏学习技巧。如果我们要进行基于Web的测试,它还具有watir库,该库非常有用(请参见http://wtr.rubyforge.org/)。

Python不错的语言,(虽然这不是我个人的喜好),但有些人发现它的结构化方式更易于掌握。

他们中的任何一个(以及许多其他人)都是一门学习的好语言。

除了查看语言之外,我还会查看工作环境。如果我们周围有其他人在做类似的事情,则学习东西总是比较容易的。如果我们当前的开发人员/测试人员已经专注于上述方法之一,那么我会这样做。如果没有,请选择一种最适合/最适合我们当前工作环境的工具。与我们团队的其他成员聊天,看看他们的想法。

回答

如果我们打算使用Metasploit进行笔测试和漏洞利用开发,我会建议使用ruby,如前所述,Metasploit是用ruby编写的,我们可能希望进行的任何漏洞利用/模块开发都需要使用ruby。

如果我们将使用Immunity CANVAS进行笔测试,则出于相同的原因,我建议使用Python,因为CANVAS是用python编写的。诸如Peach和Sulley之类的模糊框架的分配也是用Python编写的。

我不推荐Perl,因为在Perl中我们会发现很少与笔测试/模糊测试/漏洞利用/ ...相关的工具/脚本/框架。

由于问题是"工具编写和漏洞利用开发",如果我们选择Metasploit,那么我建议使用Ruby;如果我们选择CANVAS,则建议使用python。

希望能有所帮助:)

回答

我们可能需要Ruby,因为它是Metasploit的本地语言,它是事实上的标准开源渗透测试框架。 Ruby将给我们:

  • Metasploit的框架,操作码和Shellcode数据库
  • 用于原始802.11工作的Metasploit的Ruby lorcon绑定。
  • Metasploit的KARMA绑定用于802.11客户端重定向。
  • Libcurl和net / http用于Web工具编写。
  • 用于Web代理和模糊处理工作的EventMachine(或者RFuzz,扩展了著名的Mongrel Web服务器)。
  • 用于生成Shellcode的Metasm。
  • Distorm用于x86拆卸。
  • BinData用于二进制文件格式模糊测试。

排名第二的是Python。与Ruby中相比,Python中可以使用的渗透测试库更多(但不足以抵消Metasploit)。商业工具也倾向于支持Python-如果我们是Immunity CANVAS或者CORE Impact客户,则需要Python。 Python为我们提供:

  • 扭曲用于网络访问。
  • PaiMei用于程序跟踪和可编程调试。
  • CANVAS和Impact支持。
  • Dornseif的Firewire库用于远程调试。
  • 已与WinDbg集成在一起以进行远程Windows内核调试(在Ruby中仍然没有好的内核调试答案,这就是为什么我仍然偶尔使用Python的原因)。
  • 桃Fuzzer和Sully用于起毛。
  • 用于网络渗透测试的SpikeProxy(也是OWASP Pantera)。

毫不奇怪,许多Web工作都使用Java工具。实际上的标准Web渗透测试工具是Burp Suite,它是Java swing应用程序。 Ruby和Python都有Java变体,我们可以使用它们来访问类似的工具。另外,Ruby和Python都提供:

  • 与libpcap直接集成以进行原始数据包工作。
  • 用于加密的OpenSSL绑定。
  • IDA Pro扩展。
  • 用于API访问的成熟(或者至少合理)的C外部函数接口。
  • 用于UI工作的WxWindows,以及用于Web UI的体面Web堆栈。

哪一种语言都不会出错,尽管对于主流的渗透测试工作,Metasploit可能会超越所有Python优势,而目前,对于x86逆向工作,Python的高级调试接口会超越所有Ruby优势。

另外:是2008年。它们不是"脚本语言"。他们是编程语言。 ;)

回答

如果我们对CEH感兴趣,我将介绍Gray Hat Python。它显示了一些非常有趣且相关的内容。

话虽如此,任何语言都应该没问题。