黑客使用哪些编程语言

news2024/12/24 2:06:52

黑客使用哪些编程语言?

使用 Python 分析漏洞利用数据库

克里斯蒂安·科赫

迈向数据科学

alt

2021 年,我们与科学家同行一起在德国混沌计算机俱乐部 (CCC) 进行了一项调查。我们的目标是找出黑客最常使用的编程语言。

本文跟进调查,并将其结果与漏洞利用数据库的分析进行比较。读者可以获得有关如何设置分析环境的分步说明和结果摘要。因此,本文不仅涵盖了应用技术,而且还提供了对网络安全世界的见解。

调查概述 作为欧洲最大的黑客协会,混沌计算机俱乐部为研究该领域流行的编程语言提供了良好的基础。为此,我们于 2021 年 48 月向俱乐部成员发送了在线问卷链接。根据结果,受访者主要使用Shell和Python进行黑客攻击。

调查的另一个关键发现是,他们的语言偏好随着时间的推移而变化。一般来说,参与者并不认为编程语言的选择对于黑客攻击至关重要。有<>份回复,研究的样本量相对较小。由于它只针对CCC的成员,调查结果也可能是有偏见的。本文的目的是通过分析漏洞利用数据库来验证关键结果。

关于漏洞利用数据库

在进行CCC调查的同一年,所谓的零日漏洞利用引起了很多关注。当时,流行的日志记录框架 Log4j 遭受了一个非常严重的漏洞。利用此类安全漏洞的脚本称为漏洞利用。

顾名思义,漏洞利用数据库提供了漏洞利用和相应易受攻击软件的公共存档。该平台的目标受众是渗透测试人员和安全研究人员。用户可以通过其网站或Kali Linux下可用的工具集访问数据库。

在撰写本文时,来自 45,000 多名独特作者的 9,000 多个漏洞利用已在 Exploit-DB(来源)中发布。数据库条目由不同的属性组成,例如漏洞利用 ID、作者、类型和发布日期。每条记录都与一个文件相关,该文件包含漏洞利用的实际脚本或程序。

在 Kali 下,我们通过执行 shell 命令找到数据库的根目录。除此之外,该目录还包含一个带有漏洞利用数据库快照的 CSV 文件 (files_exploits.csv),以及包含实际脚本或程序 (exploits/) 的子目录。exploitdb

alt

图 1:Kali Linux 下的漏洞利用数据库目录

本文中描述的比较是在 13 年 2023 月 22 日使用 2022 年 <> 月 <> 日的数据库快照准备的。快照和分析的源代码都可以在 GitHub 上找到。 https://github.com/c4ristian/exploits

设置和数据转换

为了设置分析环境,第一步是克隆 GitHub 项目。所有需要的文件都存储在其根目录漏洞利用中。该实现基于Anaconda Python发行版,该发行版必须预安装在客户端计算机上。可以通过在项目的根目录中执行以下命令来创建和激活 conda 环境:

conda env create -f environment.yml
conda activate exploits

要分析的数据库快照以 CSV 文件的形式存储在数据文件夹中。它是从Kali Linux检索的,并使用脚本execute_transformer进行转换。

转换时间和快照的时间都记录在文件时间戳中。如果需要,可以通过在 Kali shell 中运行以下命令来更新快照:

cp -p /usr/share/exploitdb/files_exploits.csv data/
python execute_transformer.py

转换脚本提供用于整理数据和派生其他字段的函数。一个主要任务是提取有关所用编程语言的信息。为此,应用了库 侏儒。尽管其主要目的是语法突出显示,但该框架提供了用于猜测特定文件的编程语言的函数。

除了Pygments之外,还有替代语言检测库。本文测试的一个例子是深度学习解决方案Guesslang。然而,将其集成到 conda 环境中被证明是困难的,处理时间远远超过了 Pygments。

由于Guesslang没有产生更好的结果,因此采用了后一个框架。以下函数将 Pygments 包含在数据转换脚本中:

import pygments
from pygments.lexers import guess_lexer_for_filename


def _parse_exploit_file(file_name):
    with open(file_name, encoding="UTF-8") as file:
        lines = file.readlines()
        text = "\n".join(lines)

        line_count = len(lines)

        try:
            lang_guessed = guess_lexer_for_filename(file_name, text).name
        except pygments.util.ClassNotFound:
            lang_guessed = None

        return line_count, lang_guessed

上面的 Python 代码读取某个文件,计算其行数并使用该函数来检测编程语言。为了实现这一点,该框架应用了各种词法分析器,即用于语法分析的类。

仅考虑分配给给定文件扩展名的那些词法分析器。有些后缀只存在一个类,而对于其他类,选择是模棱两可的。

例如,扩展名“py”明确分配给Python,而后缀“pl”可以指向Perl或Prolog。

结果返回最匹配的词法分析器,它的名字揭示了编程语言并建立了分析的基础。

下一节中讨论的结果源自笔记本比较。此外,GitHub 项目还提供了更多笔记本来探索 Exploit-DB 的特定方面。guess_lexer_for_filename

成果讨论

CCC调查的核心问题是,参与者在研究前一年使用了哪些编程语言。受访者可以选择多个答案选项。图 2 将 CCC 成员提到的前十种语言与 Exploit-DB 作者使用的语言进行了比较。该图表揭示了相似之处,但也揭示了不同之处。

首先,样本量存在重大差距。总共有48名CCC成员参加了调查。相比之下,在 900/2 年期间,超过 500 位独立作者在 Exploit-DB 中发布了 2020,21 多个文件。选择这两年是因为它们与比较研究的研究期相吻合。为了避免重复,Exploit-DB 中的每个作者语言组合只计算一次。在研究期间,这导致了1,134种语言参考文献,其中1,116种是前十名的一部分。另一方面,CCC调查的参与者将他们的十大语言命名为140次。

alt

图 2:CCC 调查和 Exploit-DB 的前十种语言

CCC的成员主要使用Shell/Bash/Shell/PowerShell和Python,其次是C、JavaScript和HTML/CSS。所有这些技术也出现在Exploit-DB中。

一般来说,语言选择有很大的重叠。图 2 的两个列表中都存在十分之六的技术。Python一直排名第二,显示了其在网络安全领域的受欢迎程度。然而,图表一侧的某些语言并未出现在另一侧。

一个主要区别是 Exploit-DB 中语言的不平衡分布。提交的材料中有一半以上是文本文件。在这里,俾格门特分配的“仅文本”名称具有误导性。

Exploit-DB 中的文本文件通常包含描述,但也经常包含 shell 命令,可能还包括其他语言的脚本。因此,某些技术在结果中的代表性可能不足。

抽查表明,对于 shell 脚本来说很可能是正确的,在 CCC 研究中排名第一。这就是我们方法的局限性。像Pygments这样的框架在评估多语言文件时存在问题。克服这个问题将是后续研究的一个有趣主题。

让我们离开 2020/21 年,看看整个 Exploit-DB 历史。图 3 显示了数据库中所有时间排名前十的语言。如上所述,语言检测依赖于Pygments,每个作者语言组合只计算一次。

alt

图 3:有史以来 Exploit-DB 中排名前十的语言

根据图3,Exploit-DB中有史以来排名前十的语言由Text领导,其次是Python,C,HTML和Perl。

同样,CCC成员的选择有相当大的交集。

当然,令人惊讶的是Prolog出现在列表的后半部分。可能的原因是扩展名为“pl”的文件分类错误。无论如何,Perl 相对较高的排名是值得注意的,因为该语言根本没有出现在图 2 中。

这与CCC调查的另一个发现相吻合。在这项研究中,大多数参与者77.5%报告说他们的语言偏好随着时间的推移而改变。

为了评估这一点,我们可以看一下图 4。该图表可视化了在此分析之前的 25 年内 Exploit-DB 中排名前十的语言的百分比份额。

每个作者语言组合每年计算一次。结果,我们在研究期间发现了来自16,422位独特作者的9,592种语言参考文献。

alt

图 4:分析前 10 年 Exploit-DB 的前 25 种语言

图 4 显示,Exploit-DB 中文本文件的百分比保持相当稳定。之所以选择25年的时间框架,是因为在这一期限之前提交的材料数量相对较低。

除了不断使用 Text 之外,图 4 还显示了其他语言的首选项的变化。最明显的是数据库中从C到Python的转变。CCC研究中也提到了一个可能的原因。

参与者报告说,他们并不认为编程语言的选择对黑客攻击至关重要。因此,Python的使用越来越多,可以简单地反映它近年来的普遍流行。

因此,随着技术的发展,语言偏好在未来应该会继续变化。例如,通过引入 Rust 作为开发 Linux 内核的第二语言,可以触发这种转变。这一预测是否属实将在未来几年内看到。

结论

总而言之,本文提出的比较揭示了CCC成员和Exploit-DB作者使用的语言之间存在很大重叠。两个数据集都证实Python在网络安全领域的流行度。

此外,每个数据集表明语言偏好随时间的变化。CCC研究提出的一个可能原因是,参与者不认为选择编程语言对黑客攻击至关重要。

根据这个解释,应该预期语言偏好将随技术进步继续变化。对Exploit-DB分析的一个主要限制与语言检测方法相关。由于存在多语言文件问题,某些技术可能被低估。

解决这个问题将是一个跟进研究的有趣主题。显然,Exploit-DB为数据科学家和安全专家提供了丰富的数据集。关于利用技巧的艺术还有许多有待学习的东西。

我同意作者的结论。

两种数据集确实显示出编程语言选择在网络安全领域不是最重要的因素,语言偏好可能会随时间和技术进步而变化。

考虑到Exploit DB数据集的性质,多语言文件的处理问题确实可能导致某些语言被低估。如果能解决这一问题,可以从更全面和准确的角度理解利用技巧和编程语言之间的关系。

但是,作者在文章结尾提出的数据科学家和安全专家可以从Exploit DB中学到更多关于利用技巧的内容,这一观点似乎有些主观和片面。

虽然Exploit DB提供了大量实际案例,但利用技巧的本质和内涵远不止编写Exploit代码那么简单。对其进行系统和深入理解需要考虑更广泛的安全原理、攻防技术以及人为因素。

总体而言,这是一篇有价值的初步研究,它揭示了网络安全领域中的一个有趣现象,并提示我们语言选择的变化可能与技术变革密切相关。

但对利用技巧本身的理解还需要更全面和深入的研究。作者对后续研究的建议也似乎过于局限在数据集和方法论上,而忽略了主题本身的宽广内涵。

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/604138.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

M F C(七)对话框

概念 与用户进行交互的窗口&#xff0c;它的顶级父类为CWND&#xff0c;对话框上面可以有各种控件&#xff0c;控件也是继承自CWND 基本控件功能对应的类静态文本框显示文本&#xff0c;一般不能接收输入信息CStatic图像控件显示图标、方框、和图元文件CStatic编辑器编辑正文…

公网SSH远程连接Termux – 电脑使用安卓Termux 「无需公网IP」

文章目录 1.安装ssh2.安装cpolar内网穿透3.远程ssh连接配置4.公网远程连接5.固定远程连接地址 转载自cpolar极点云的文章&#xff1a;公网SSH远程连接Termux – 电脑使用安卓Termux 「无需公网IP」 使用安卓机跑东西的时候&#xff0c;屏幕太小&#xff0c;有时候操作不习惯。不…

【Linux】crontab 定时任务

当你需要在Linux系统中定期执行某些任务时&#xff0c;crontab&#xff08;cron table&#xff09;是一个非常有用的工具。它允许你根据预定的时间表创建和管理定时任务。 一、从守护进程到crond进程1.1 Linux 守护进程1.2 任务调度进程crond 二、 crontab 详细介绍2.1 crontab…

AI狂飙突进,存力需作先锋

5月30日&#xff0c;在2023中关村论坛成果发布会上&#xff0c;《北京市加快建设具有全球影响力的人工智能创新策源地实施方案&#xff08;2023-2025年&#xff09;》正式发布。《实施方案》要求&#xff0c;支持创新主体重点突破分布式高效深度学习框架、大模型新型基础架构等…

chatgpt赋能python:Python列表数据相加的完全指南

Python列表数据相加的完全指南 Python中的列表是一种非常方便的数据结构&#xff0c;它允许我们存储和处理一组数据。在这篇文章中&#xff0c;我们将介绍如何在Python中使用列表来进行数据相加的操作&#xff0c;并提供一些实用的技巧和建议。如果你正在寻找Python中关于列表…

linux安装docker并设置国内镜像仓库

前置条件 该方案为centos上安装docker&#xff0c;其他版本linux请参照官方文档&#xff1a;https://docs.docker.com/engine/install/centos/该linux系统没有安装过docker&#xff0c;或者已卸载docker #卸载docker yum remove docker \docker-client \docker-client-latest…

springboot整合kafka入门

kafka基本概念 producer&#xff1a; 生产者&#xff0c;负责发布消息到kafka cluster(kafka集群)中。生产者可以是web前端产生的page view&#xff0c;或者是服务器日志&#xff0c;系统CPU、memory等。 consumer&#xff1a; 消费者&#xff0c;每个consumer属于一个特定的c…

Git提交代码报错 Push failed unable to access

目录 场景 环境&#xff1a; Git配置 场景 Push failed unable to access https://github.com/1790753131/remotRepository3.git/: Failed to connect to github.com port 443 after 21114 ms: Couldnt connect to server Push failed unable to ac…

A JavaScript error occurred in the main processUncaught Exception

A JavaScript error occurred in the main processUncaught Exception: Error: getaddrinfo ENOTFOUND rfw.jnsii.com at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:60:26) &#x1f4a7; 记录一下今天遇到的 b u g \color{#FF1493}{记录一下今天遇到的bug} 记录一…

开放接口签名(Signature)实现

开放接口签名(Signature)实现方案 既然是对外开放&#xff0c;那么调用者一定没有我们系统的Token&#xff0c;就需要对调用者进行签名验证&#xff0c;签名验证采用主流的验证方式&#xff0c;采用Signature 的方式。 字段 类型 必传 说明 appid String 是 应用id tim…

windows server安全设置

Windows服务器安全策略设置 1. Windows服务器安全策略设置 操作系统关闭不必要的服务如smartd&#xff08;一个守护进程&#xff08;帮助程序&#xff09;、Print Spoole&#xff08;管理所有本地和网络打印队列及控制所有打印工作&#xff09;&#xff0c;操作系统关闭默认盘…

名著《MySQL必知必会》讲了个啥

文章目录 第一章 了解SQL第二章 检索数据第三章 排序第四章 过滤数据第五章 高级数据过滤第六章 多表查询内连接&#xff08;交集&#xff09;外连接多表连接UNIONUNION ALL 第七章 单行函数日期和时间函数获取日期、时间日期与时间戳的转换获取月份、星期、星期数、天数等函数…

chatgpt赋能python:Python中创建空列表的两种方法

Python中创建空列表的两种方法 在Python编程中&#xff0c;创建空列表是一项非常常见的任务。Python提供了两种主要的方法来创建一个空列表&#xff0c;分别是“中括号法”和“list()函数法”。本文将介绍这两种方法&#xff0c;它们的优缺点以及如何在你的代码中使用它们。 …

2023年5月Web3行业月度发展报告区块链篇 | 陀螺科技会员专享

5月&#xff0c;市场大部熊市与局部牛市并存&#xff0c;一方面&#xff0c;BRC-20与Meme币引领热点涨势&#xff0c;代表项目Ordinals与Pepe涨幅上千倍&#xff0c;相继引发比特币与以太坊拥堵&#xff0c;市场情绪高涨&#xff1b;另一方面&#xff0c;主流币种持续震荡&…

【终结】Plsql 监听失败+链接Oracle ORA-12545:因目标主机不存在

折腾我好久&#xff01;翻阅千山万水也没有命中问题&#xff01;今天我要公布于世&#xff01;如何解决&#xff01; 起因&#xff1a;服务器那边重启了我运行良好的主机导致上述问题&#xff01; 感谢各位CSDN默默贡献的大神&#xff0c;是你们促进互联网的发展&#xff01;…

无需魔法、无需账户!可免费直接使用微软新必应

大家好&#xff0c;我是校长。 如果你不会魔法上网&#xff0c;如果你没有 ChatGPT 账号&#xff0c;无法体验大语言模型生成式 AI &#xff0c;别怕&#xff0c;我给大家推荐一个好的开源的应用站点&#xff0c;它可以让你体验一番。 前几天&#xff0c;我刷 GitHub 的时候&am…

Transformer工业部署落地!超越ResNet、CSWin(附源码)

关注并星标 从此不迷路 计算机视觉研究院 公众号ID&#xff5c;ComputerVisionGzq 学习群&#xff5c;扫码在主页获取加入方式 论文地址&#xff1a;https://arxiv.org/pdf/2207.05501.pdf 计算机视觉研究院专栏 作者&#xff1a;Edison_G 一种用于在现实工业场景中高效部署的下…

读改变未来的九大算法笔记02_数据库

1. 基础思想 1.1. 预写日志记录 1.2. 两阶段提交 1.3. 关系数据库 2. 两个事实 2.1. 计算机程序会崩溃 2.1.1. 当一个程序崩溃时&#xff0c;它会丢掉所有正在处理的东西 2.1.2. 只有安放在计算机文件系统中的信息会得到保存 2.1.3. 崩溃相当宽泛&#xff1a;包括任何可…

助力智能制造数字化转型 | 5.31 IoTDB 中航机载制造行业客户分享会回顾

5 月 31 日&#xff0c;IoTDB & 中航机载智能制造实践分享会在线上举办。IoTDB 与中航机载的两位产品、技术专家&#xff0c;结合 EMQ 与深南电路的两位技术大拿&#xff0c;针对制造行业智能化痛点带来了一场方案实践分享&#xff0c;与线上直播中上千人次的智能制造关注者…

专访瑞声科技应用软件开发总监陆其明:当一名老兵决定重新上路

编者按&#xff1a;从互联网公司到智能终端解决方案公司&#xff0c;陆其明的这次转变可能难以被人理解。但经济大环境的影响和个人的技术困境还是让他义无反顾地走向一个未知的世界。正如黄仁勋日前所言&#xff0c;“撤退”对聪明人来说并不容易。然而&#xff0c;战略性的撤…