哪种脚本语言更适合于pentesting?

2024-10-17 08:27:14 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,我想避免对语言的战争。可供选择的语言有Perl、Python和Ruby。我想说的是,我对他们都很满意,但问题是我不能只关注其中一个。

例如,如果我看到一个很酷的Perl模块,我必须尝试一下。如果我看到一个不错的Python应用程序,我必须知道它是如何制作的。如果我看到一个Ruby DSL或者一些Ruby巫术,我会对Ruby着迷一段时间。

现在我是一名Java开发人员,但计划在不久的将来使用CEH。我的问题是:对于工具编写和开发,您认为哪种语言最合适?

再说一遍,我不想引起战争或任何麻烦,我只想从编剧那里得到诚实的意见,知道他们在做什么。

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


Tags: 模块工具语言应用程序开发人员javadslperl
3条回答

我可以为这三个理由辩护:-)

Perl拥有所有的CPAN—在快速组合功能方面给了您巨大的优势。它还有一个非常灵活的测试基础设施,这意味着您可以在同一个框架中插入许多不同的自动化测试样式(包括其他语言的测试)。

Ruby是一种很好的学习语言,它缺乏Perl5的一些基础知识。如果您正在进行基于web的测试,它还具有watir库-这对trez很有用(请参见http://wtr.rubyforge.org/

Python——很好的语言,而且(虽然这不是我个人的喜好)一些人发现它的结构更容易掌握。

他们中的任何一个(和许多其他人)都是一门很好的语言。

而不是看语言-我会看你的工作环境。如果你身边有其他人在做类似的事情,学习东西总是比较容易。如果你现在的开发人员/测试人员已经专注于上面的某一项——我会这么做的。如果没有,请选择最适合您当前工作环境的。与你的团队其他成员聊天,看看他们的想法。

[免责声明:我主要是Perl程序员,这可能会影响我的判断。然而,我不是一个特别的部落成员,我认为在这个问题上,我的论点是相当客观的。]

Perl被设计成可以无缝地融入Unix环境,这就是为什么它对以OO为主要背景的人(特别是Java的OOP学派)感觉如此陌生的原因。但是,由于这个原因,它被广泛地安装在具有任何类型Unixoid操作系统的机器上,并且许多供应商的系统实用程序都是在其中编写的。同样出于同样的原因,那些既没有安装Python也没有安装Ruby的服务器上仍然可能有Perl,这也使得熟悉Perl变得很重要。因此,如果您的CEH活动包括在Unix上的大量活动,那么无论如何,您都必须对Perl有一定的了解,并且您最好将精力放在它上面。

也就是说,这在很大程度上是一个偏好问题。语言之间没有太多的区别,它们的表达能力实际上是相同的。有些事情在其中一种语言中比较容易,有些在另一种语言中比较容易。

在库方面,我不知道Ruby和Python是如何比较的——我知道Perl让它们相形见绌。再者,有时(特别是当您正在寻找满足共同需求的库时),这样做的唯一效果是您被各种选择所淹没。如果您只想在Python或Ruby的库中很好地覆盖的某个特定领域做一些事情,那么CPAN上大量的其他东西并不一定是一个优势。然而,在利基领域,它很重要,你永远不知道你最终会有什么不可预见的需求(根据定义,是错误的)。

对于命令行上的一行程序,Python是一种非启动程序。

在交互式解释器环境方面,Perl…嗯…好吧,您可以使用调试器,这不是很好,或者您可以从CPAN安装一个调试器,但是Perl本身并不是很好。

因此,我认为Perl对于您的特殊需求确实有一个很小的优势,但仅仅是。如果你选择鲁比,你可能不会更糟。Python可能会给您带来更明显的不便,但它也不是一个糟糕的选择。

您可能需要Ruby,因为它是Metasploit的本地语言,而Metasploit实际上是标准的开源渗透测试框架。鲁比会给你:

  • Metasploit's框架、操作码和外壳码数据库
  • 原始802.11的Metasploit Ruby lorcon绑定可以工作。
  • Metasploit的KARMA绑定用于802.11客户端重定向。
  • Libcurl和用于web工具编写的net/http。
  • EventMachine用于web代理和模糊工作(或RFuzz,它扩展了著名的Mongrel web服务器)。
  • Metasm用于生成外壳代码。
  • Distorm用于x86反汇编。
  • BinData用于二进制文件格式模糊化。

排名第二的是Python。Python中有比Ruby中更多的潜在库可用(但不足以抵消Metasploit)。商业工具也倾向于支持Python——如果您是一个免疫画布或核心影响客户,那么您需要Python。Python给你:

  • Twisted用于网络访问。
  • PaiMei用于程序跟踪和可编程调试。
  • 帆布和冲击支撑。
  • Dornseif's用于远程调试的firewire库。
  • Ready integration with WinDbg用于远程Windows内核调试(Ruby中仍然没有很好的内核调试答案,这就是为什么我仍然偶尔使用Python的原因)。
  • Peach Fuzzer和Sully。
  • 用于web渗透测试的SpikeProxy(也是OWASP Pantera)。

毫不奇怪,许多web工作都使用Java工具。事实上,标准的web pentest工具是Burp Suite,它是一个Java swing应用程序。Ruby和Python都有Java变体,可以用来访问类似的工具。此外,Ruby和Python都提供:

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

这两种语言都不会出错,不过对于主流的pentest工作,Metasploit可能会忽略Python的所有优点,而目前,对于x86反向工作,Python优越的调试接口会忽略Ruby的所有优点。

还有:2008年。它们不是“脚本语言”。他们是编程语言。;)

相关问题 更多 >