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

Vha*_*run 5 ruby python security perl penetration-testing

首先,我想避免对语言进行激烈的战争.可供选择的语言是Perl,Python和Ruby.我想提一下我对所有这些都很满意,但问题是我不能只关注一个.

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

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

再一次,我不想引起火焰战争或任何麻烦,我只是想要知道他们正在做什么的脚本编写者的诚实意见.

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

小智 27

你可能想要Ruby,因为它是Metasploit的本地语言,它是事实上标准的开源渗透测试框架.Ruby会给你:

  • Metasploit的框架,操作码和shellcode数据库
  • Metasploit 用于原始802.11工作的Ruby lorcon绑定.
  • Metasploit针对802.11客户端重定向的KARMA绑定.
  • Libcurl和net/http用于Web工具编写.
  • EventMachine用于Web代理和模糊测试工作(或RFuzz,它扩展了着名的Mongrel网络服务器).
  • 用于生成shellcode的Metasm.
  • 扭曲 x86反汇编.
  • BinData用于二进制文件格式模糊测试.

第二位是Python.Python中提供的测试库比Ruby中更多(但不足以抵消Metasploit).商业工具也倾向于支持Python - 如果你是Immunity CANVAS或CORE Impact客户,你需要Python.Python为您提供:

  • 扭曲网络访问.
  • PaiMei用于程序跟踪和可编程调试.
  • CANVAS和Impact支持.
  • Dornseif的 firewire库用于远程调试.
  • 准备与WinDbg集成以进行远程Windows内核调试(在Ruby中仍然没有很好的答案用于内核调试,这就是我偶尔使用Python的原因).
  • Peach Fuzzer和Sully用于模糊测试.
  • 用于Web渗透测试的SpikeProxy(也称为OWASP Pantera).

不出所料,很多网络工作都使用Java工具.事实上的标准web pentest工具是Burp Suite,它是一个Java swing应用程序.Ruby和Python都有Java变体,您可以使用这些变体来访问这样的工具.此外,Ruby和Python都提供:

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

使用这两种语言都不会出错,但是对于主流的pentest工作,Metasploit可能会摒弃所有Python优势,而目前,对于x86逆转工作,Python的优秀调试接口可以完全消除所有Ruby的好处.

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


Ari*_*zis 8

[免责声明:我主要是一名Perl程序员,可能会影响我的判断力.但是,我不是一个特别的部落,我认为在这个特殊问题上,我的观点是相当客观的.

Perl被设计为无缝融入Unix环境,这就是为什么它对具有主要OO背景的人(特别是OOP的Java学校)感到如此陌生.因此,它在任何类型的Unixoid OS的机器上都得到了极大的广泛安装,并且其中编写了许多供应商系统实用程序.同样出于同样的原因,既没有安装Python也没有安装Ruby的服务器仍然可能有Perl,再次使得熟悉它很重要.因此,如果你的CEH活动包括在Unix上的大量活动,你必须对Perl有一定的熟悉程度,你也可以专注于它.

也就是说,这主要是一个偏好问题.区分语言并不多; 他们的表现力实际上是相同的.有些东西在其中一种语言中更容易一些,有些在另一种语言中更容易一些.

在库方面,我不知道Ruby和Python如何相互比较 - 我知道Perl让它们超越了它们.然后,有时(特别是当您正在寻找满足常见需求的库时),唯一的影响就是您会被选择所淹没.如果你只是想在某些特定领域做一些事情,这些领域已被Python或Ruby的库所覆盖,那么CPAN 上其他东西的大量并不一定是优势.然而,在利基领域,它很重要,你永远不会知道你最终会有什么不可预见的需求(错误,根据定义).

对于命令行中的单线程使用,Python是一种非首发.

在交互式解释器环境方面,Perl ...嗯......好吧,你可以使用不太好的调试器,或者你可以从CPAN安装一个,但Perl本身并没有提供好的调试器.

所以我认为Perl确实对你的需求有一个非常小的优势,但仅仅是.如果你选择Ruby,你可能根本不会变得更糟.Python可能会给你带来更多的不便,但它也不是一个糟糕的选择.