<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          黑客使用哪些編程語言?

          共 4112字,需瀏覽 9分鐘

           ·

          2023-03-10 23:48

          推薦關(guān)注↓

          作者:啟辰8

          我與其他科學家一起在德國混沌計算機俱樂部 (CCC) 進行了一項調(diào)查。我們的目標是找出黑客最常用的編程語言。本文對調(diào)查進行了跟進,并將調(diào)查結(jié)果與漏洞利用數(shù)據(jù)庫的分析進行了比較。讀者可以獲得有關(guān)如何設(shè)置分析環(huán)境和結(jié)果摘要的分步說明。因此,本文不僅涵蓋了應(yīng)用技術(shù),還提供了對網(wǎng)絡(luò)安全世界的見解。

          調(diào)查概覽

          作為歐洲最大的黑客協(xié)會,混沌計算機俱樂部為研究該領(lǐng)域流行的編程語言提供了良好的基礎(chǔ)。為此,我們于 2021 年 5 月向俱樂部會員發(fā)送了在線問卷鏈接。根據(jù)結(jié)果,受訪者主要使用 Shell 和 Python 進行黑客攻擊。調(diào)查的另一個重要發(fā)現(xiàn)是他們的語言偏好隨時間發(fā)生了變化??偟膩碚f,參與者并不認為編程語言的選擇對于黑客攻擊來說是必不可少的。由于它僅針對 CCC 成員,因此調(diào)查結(jié)果也可能存在偏見。本文的目標是通過分析 Exploit-DB 來驗證關(guān)鍵結(jié)果。

          關(guān)于漏洞利用數(shù)據(jù)庫

          在 CCC 調(diào)查開展的同一年,一個所謂的零日漏洞引起了廣泛關(guān)注。當時,流行的日志記錄框架 Log4j 存在嚴重漏洞。利用此類安全漏洞的腳本稱為漏洞利用。顧名思義,Exploit Database 提供了一個公開的漏洞利用檔案和相應(yīng)的易受攻擊的軟件。該平臺的目標受眾是滲透測試人員和安全研究人員。用戶可以通過其網(wǎng)站或 Kali Linux 下可用的工具集訪問該數(shù)據(jù)庫。

          在撰寫本文時,來自 9,000 多名作者的 45,000 多個漏洞已在 Exploit-DB(來源)中發(fā)布。數(shù)據(jù)庫條目由不同的屬性組成,例如漏洞 ID、作者、類型和發(fā)布日期。每條記錄都與一個文件相關(guān),該文件包含漏洞利用的實際腳本或程序。在Kali下,我們通過執(zhí)行shell命令exploitdb找到數(shù)據(jù)庫的根目錄。除其他外,該目錄包含一個帶有 Exploit-DB 快照的 CSV 文件 (files_exploits.csv),以及帶有實際腳本或程序的子目錄 (exploits/)。


          本文中描述的比較是在 2023 年 1 月 13 日使用 2022 年 11 月 22 日的數(shù)據(jù)庫快照準備的??煺蘸头治龅脑创a都可以在 GitHub 上找到。

          設(shè)置和數(shù)據(jù)轉(zhuǎn)換

          為了設(shè)置分析環(huán)境,第一步是克隆 GitHub 項目。所有需要的文件都存放在它的根目錄exploits中。該實現(xiàn)基于 Anaconda Python 發(fā)行版,該發(fā)行版必須預(yù)裝在客戶端計算機上??梢栽陧椖扛夸浵聢?zhí)行以下命令創(chuàng)建并激活conda環(huán)境:

          conda env create -f environment.yml
          conda activate exploits

          要分析的數(shù)據(jù)庫快照作為 CSV 文件存儲在數(shù)據(jù)文件夾中。它是從 Kali Linux 中檢索到的,并使用腳本 execute_transformer 進行了轉(zhuǎn)換。轉(zhuǎn)換時間和快照時間都記錄在文件時間戳中。如果需要,可以通過在 Kali shell 中運行以下命令來更新快照:

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

          轉(zhuǎn)換腳本提供整理數(shù)據(jù)和派生附加字段的功能。一項主要任務(wù)是提取有關(guān)所用編程語言的信息。為此,應(yīng)用了庫 Pygments。雖然它的主要目的是語法高亮顯示,但該框架提供了猜測特定文件的編程語言的功能。

          除了 Pygments,還有其他語言檢測庫。本文測試的一個示例是深度學習解決方案 Guesslang。然而,將其集成到 conda 環(huán)境中有些困難,處理時間遠遠超過 Pygments。由于 Guesslang 沒有產(chǎn)生優(yōu)越的結(jié)果,因此采用了后一種框架。以下函數(shù)將 Pygments 包含到數(shù)據(jù)轉(zhuǎn)換腳本中:

          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 代碼讀取特定文件,計算其行數(shù)并使用函數(shù) guess_lexer_for_filename 來檢測編程語言。為實現(xiàn)這一點,該框架應(yīng)用了各種詞法分析器,即用于語法分析的類。僅考慮分配給給定文件擴展名的那些詞法分析器。有些后綴只存在一類,而其他的選擇是不明確的。例如,擴展名“py”顯然指定給 Python,而后綴“pl”可以指向 Perl 或 Prolog。最匹配的 Lexer 作為結(jié)果返回。它的名字揭示了編程語言并建立了分析的基礎(chǔ)。下一節(jié)中討論的發(fā)現(xiàn)來自筆記本比較。此外,GitHub 項目提供了進一步的筆記本來探索 Exploit-DB 的特定方面。

          結(jié)果討論

          CCC 調(diào)查的核心問題是參與者在研究前一年使用了哪些編程語言。受訪者可以選擇多個答案選項。圖 2 將 CCC 成員提到的前十種語言與 Exploit-DB 作者使用的語言進行了比較。該圖表揭示了相似之處,但也有不同之處。

          首先,樣本量存在重大差距??偣灿?48 名 CCC 成員參與了調(diào)查。相比之下,2020/21 年間,900 多位獨立作者在 Exploit-DB 中發(fā)布了 2,500 多個文件。之所以選擇這兩年,是因為它們與比較研究的研究時期相吻合。為了避免重復(fù),Exploit-DB 中的每個作者語言組合只計算一次。在研究期間,這導致了 1,134 種語言引用,其中 1,116 種是前十名的一部分。另一方面,CCC 調(diào)查的參與者將他們的前十種語言命名為 140 次。


          CCC成員主要使用Shell(Bash/Shell/PowerShell)和Python,其次是C、JavaScript、HTML/CSS。所有這些技術(shù)也出現(xiàn)在 Exploit-DB 中。一般來說,語言選擇有很大的重疊。十分之六的技術(shù)出現(xiàn)在圖 2 的兩個列表中。Python 一直排名第二,顯示了它在網(wǎng)絡(luò)安全領(lǐng)域的受歡迎程度。然而,圖表一側(cè)的某些語言并未出現(xiàn)在另一側(cè)。

          一個主要區(qū)別是 Exploit-DB 中語言的不平衡分布。超過一半的提交是文本文件。在這里,Pygments 指定的名稱“Text only”具有誤導性。Exploit-DB 中的文本文件通常包含描述,但通常也包含 shell 命令和可能的其他語言腳本。因此,某些技術(shù)在結(jié)果中的代表性可能不足。抽查表明,這可能適用于 shell 腳本,在 CCC 研究中排名第一。這是我們方法的局限性。Pygments 等框架在評估多語言文件時存在問題??朔@個問題將是后續(xù)研究的一個有趣主題。

          讓我們離開 2020/21 年,看看整個 Exploit-DB 歷史。圖 3 顯示了數(shù)據(jù)庫中所有時間排名前十的語言。如上所述,語言檢測依賴于 Pygments,每個作者-語言組合只計算一次。


          根據(jù)圖 3,Exploit-DB 中有史以來排名前十的語言以 Text 居首,其次是 Python、C、HTML 和 Perl。同樣,與 CCC 成員的選擇有相當大的交集。當然,令人驚訝的是 Prolog 出現(xiàn)在列表的后半部分。可能的原因是擴展名為“pl”的文件分類錯誤。無論如何,Perl 相對較高的排名是值得注意的,因為該語言根本沒有出現(xiàn)在圖 2 中。這與 CCC 調(diào)查的另一個發(fā)現(xiàn)相吻合。

          在這項研究中,大多數(shù)參與者 (77.5%) 報告說他們的語言偏好隨時間發(fā)生了變化。為了評估這一點,我們可以看一下圖 4。該圖表直觀地顯示了在此分析之前的 25 年中 Exploit-DB 中排名前十的語言的百分比份額。每個作者語言組合每年計算一次。結(jié)果,我們在研究期間從 9,592 位獨立作者那里找到了 16,422 條語言參考。


          圖 4 顯示 Exploit-DB 中文本文件的百分比保持相當穩(wěn)定。選擇 25 年的時間范圍是因為在此期間之前的提交數(shù)量相對較少。除了持續(xù)使用文本之外,圖 4 顯示了對其他語言的首選項的變化。最明顯的是在數(shù)據(jù)庫中從 C 轉(zhuǎn)向 Python。

          CCC 研究中也提到了一個可能的原因。參與者報告說,他們并不認為編程語言的選擇對黑客攻擊至關(guān)重要。因此,越來越多地使用 Python 可以簡單地反映出它近年來普遍流行。

          因此,隨著技術(shù)的發(fā)展,語言偏好在未來應(yīng)該會繼續(xù)改變。例如,引入 Rust 作為 Linux 內(nèi)核開發(fā)的第二語言可能會引發(fā)這種轉(zhuǎn)變。這一預(yù)測是否屬實,將在未來幾年見分曉。

          結(jié)論

          總之,本文中的比較揭示了 CCC 成員和 Exploit-DB 作者使用的語言之間存在大量重疊。這兩個數(shù)據(jù)集都證實了 Python 在網(wǎng)絡(luò)安全領(lǐng)域的流行程度。

          此外,每個數(shù)據(jù)集都表明語言偏好隨時間的變化。CCC 研究制定了一個可能的原因。參與者并不認為編程語言的選擇對于黑客攻擊至關(guān)重要。按照這一解釋,人們應(yīng)該期望語言偏好會隨著技術(shù)進步而繼續(xù)變化。Exploit-DB 分析的一個主要限制與語言檢測方法有關(guān)。

          由于多語言文件的問題,某些技術(shù)可能未得到充分體現(xiàn)。解決這個問題將是后續(xù)研究的一個有趣話題。顯然,Exploit-DB 為數(shù)據(jù)科學家和安全專家提供了豐富的數(shù)據(jù)集。關(guān)于黑客滲透的藝術(shù)還有很多東西需要學習。


          - EOF -


          瀏覽 38
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久色国产精品 | 另类视频在线观看 | 影音先锋AV色 | 亚洲日韩欧美在线观看 | 五月天色婷婷丁香 |