什么定义编程语言对黑客有用?

信息安全 渗透测试 编程
2021-08-26 00:12:52

我知道脚本语言(PerlRubyPython、javascript,甚至 Lua !!!)最适合黑客和渗透测试。

我的问题是:是什么让这些语言适合?据我所知,它们比其他语言慢,并且在更高的抽象级别上运行,这意味着它们离硬件太远了。我能想到的唯一原因是它们先进的字符串操作能力,但我相信其他语言也有这样的能力。

4个回答

语言对于做事很有用。它适合什么类型的东西完全取决于语言的类型、可用的框架、哪些操作系统有解释器/编译器等。

让我们看看你提到的那些:

  • Perl
    • 脚本语言
    • 一般用途
    • 自 90 年代以来,在大多数 *nix 操作系统上都可用。
    • 非常适合快速破解和简短的脚本。
  • 红宝石
    • 脚本语言
    • 一般用途
    • 跨平台
    • 面向对象
    • 反射(可以看到自己的结构和代码)
    • 适用于动态框架
  • Python
    • 脚本语言
    • 一般用途
    • 跨平台
    • 专为清晰易读的源代码而设计
    • 庞大的图书馆框架
  • JavaScript
    • 脚本语言
    • 基于网络
    • 跨平台(适用于所有主流浏览器)

那么是什么让这些特别适合渗透测试呢?嗯,大多数渗透测试涉及编写快速丢弃工具来完成特定测试的特定工作。每次想要快速完成工作时,用 C 或 C++ 编写这样的工具既麻烦又耗时。此外,它们倾向于生成需要特定平台编译的特定平台二进制文件或源代码,而不是只运行. 脚本语言为您提供了快速轻松地生成此类工具的灵活性。

例如,Ruby 和 Python 在更复杂的任务中很受欢迎,因为它们拥有全面的库,而 Perl 在快速数据处理黑客方面很受欢迎。JavaScript 通常被用作每个人都可以访问的基于浏览器的简单语言。其他语言(例如 C)倾向于用于与操作系统交互的更底层的任务。

现在,硬币的另一面是用作有效负载的语言。这就是界限变得模糊的地方,因为需求如此多样化。对于攻击 Windows 机器,任何不依赖于操作系统提供的有效负载都是有用的。这可能是 C、C++、VBScript、x86 asm、C# / VB.NET(现在大多数机器上都有 .NET 2.0)等。对于攻击 Linux 机器,您可能会使用 C、C++、bash 脚本或 Perl。Java 也常用于跨平台攻击。

在一天结束时,挑选的语言找到最好的工作!

这是我在@tqbf的类似上下文的堆栈溢出问题上找到的一个很好的答案:(我在这里复制了这个答案,因为我相信它给出了可能首选它们的正当理由,因此它可能对未来的读者有用)

您可能需要 Ruby,因为它是 Metasploit 的原生语言,它是事实上的标准开源渗透测试框架。Ruby 会给你:

  • Metasploit 的框架、操作码和 shellcode 数据库

  • Metasploit用于原始 802.11 工作的Ruby lorcon绑定

  • Metasploit 用于 802.11 客户端重定向的 KARMA 绑定

  • 用于 Web 工具编写的Libcurl和 net/http

  • EventMachine用于 Web 代理和模糊测试工作(或 RFuzz,它扩展了著名的 Mongrel 网络服务器)

  • 用于 shellcode 生成的Metasm

  • 用于 x86 反汇编的Distorm

  • BinData 用于二进制文件格式的模糊测试。

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

毫不奇怪,很多 Web 工作都使用 Java 工具。事实上的标准网络渗透测试工具是 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 年。它们不是“脚本语言”。他们是编程语言。;)

库、编写代码的时间、跨平台兼容性是这里的关键。我发现使用 Python 可以在很短的时间内以最少的代码行数提出概念验证漏洞利用。这是可能的,因为您也可以下载广泛的标准库和其他库。我相信这是 python 用于渗透测试和黑客攻击的最大优势。

前任。您需要一个 1000 个字符/1000 个字节长的字符串。

在蟒蛇中:

print "A"*1000

在 C 中:

for(i=0;i<1000;i++)printf("A");`

(除了所有包括 mumbo jumbo 和编译它)

这只是一个简单的例子。但是正如你所看到的,在 python 中,这样一个微不足道的任务所花费的时间要简单得多。

当您想从您的代码发送 http 请求等时,差异会更加明显。使用python 的urllib, httplib, 等,您可以在 2 行代码中完成。

我在这些领域的知识为零,但是提到的编程语言都可以实现快速编程,即与运行时效率更高但编程(和调试)效率更高但效率更高的不同想法相比,人们可以在给定的时间范围内尝试更多不同的想法像 C 等编程语言。这可能是一个重点。