什么定义编程语言对黑客有用?
语言对于做事很有用。它适合什么类型的东西完全取决于语言的类型、可用的框架、哪些操作系统有解释器/编译器等。
让我们看看你提到的那些:
- 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 为您提供:
扭曲的网络访问
PaiMei用于程序跟踪和可编程调试
画布和影响支持
用于远程调试的 Dornseif 火线库
准备好与 WinDbg 集成以进行远程 Windows 内核调试(Ruby 中对于内核调试仍然没有好的答案,这就是我仍然偶尔使用 Python 的原因)。
用于模糊测试的Peach Fuzzer和 Sully
用于 Web 渗透测试的 SpikeProxy(也称为OWASP Pantera)。
毫不奇怪,很多 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 等编程语言。这可能是一个重点。