前言
網絡安全是保護網絡、系統和程序免受數字攻擊的做法。據估計, 2019 年該行業價值 1120 億美元,到2021 年估計有 350 萬個職位空缺。
許多編程語言用于執行與網絡安全相關的日常任務,但其中一種已成為行業標準:Python,它正在主導網絡安全行業。
Python 具有易于閱讀和理解的語法以及廣泛的應用程序,使其成為任何有抱負的網絡安全專業人員的通用編程語言。
根據 Stack Overflow 的說法,Python 在過去幾年的增長令人難以置信,現在它被認為是所有行業中最受歡迎的語言之一。
如果您是一名正在考慮過渡到安全領域的程序員,這篇文章將向您展示如何在另一個高收入、低失業率的行業中使用您現有的技能。例如,您可以通過自動化重復流程來為您的團隊節省無數時間,或者通過創建可用于測試應用程序或系統安全性的安全工具來做到這一點。
領先的網絡安全軟件和服務提供商 Imperva 報告稱,他們保護的網站中有 77% 受到基于 Python 的工具的攻擊。作為安全專業人員,我們的部分工作是模擬現實生活中的攻擊,以確保公司在真正的攻擊發生時做好準備,了解實際攻擊中使用的語言和庫。復制這些工具是一項非常有價值的技能。
然而,在安全領域,并非所有的 Python 經驗都是平等的。要構建有效的產品組合、開發有效的軟件并正確展示您的價值,您需要專注于為行業學習正確的 Python 庫和框架。
因此,讓我們看一下在這些領域蓬勃發展需要了解的一些不同的 Python 庫。
自動化工具
首先,您希望能夠編寫有效的 Python 腳本來自動化安全專業人員的許多日常任務。
Python因其易于學習的語法和廣泛的庫而被廣泛用于安全工作,這賦予了它很多功能。雖然可以使用其他語言來執行這些任務,但我建議學習 Python。這就是大多數行業將使用的,協作很重要。
許多安全任務要求您在成百上千個端點上應用相同的操作。例如,讓我們看一下配置管理。這是為系統定義安全模板的實踐,包括機器上允許哪些服務、開放哪些端口、防火墻規則等。
自動化這些過程的能力不僅可以減少時間,還可以減少錯誤。高達 90% 的安全事件是人為錯誤的直接結果。從安全角度來看,您越能擺脫對人類行為者的依賴,就越好。所以這就引出了一個問題,我怎樣才能學會自動化這樣的流程?
博托3
Boto3 是適用于 Python 的 Amazon Web Services (AWS) 軟件開發工具包 (SDK),它允許程序員編寫可以與 Amazon Simple Storage Service (S3)、Amazon Elastic Compute Cloud (EC2) 和 Amazon Virtual 等 AWS 服務交互的腳本私有云(VPC)。
使用 Boto3,您可以按需啟動和停止服務器、取消不符合組織安全標準的實例、執行更新和補丁管理等等。熟悉這個 SDK 對于任何使用 AWS 的專業人士來說都是非常有價值的。
正則表達式
Regex 代表正則表達式,這是一個允許您在文本塊中搜索特定模式的工具。這是一個非常有用的功能,用于在調查期間或從 Internet 上抓取信息時從日志文件中提取信息。
通過將此庫與其他標準 Python 庫相結合,您可以創建一些非常有用的程序。例如,您可以使用正則表達式搜索日志文件并定位 IP 地址,以便確定是否有人能夠侵入您的網絡、他們執行了哪些操作以及該事件發生的時間。
Pyautogui 和 Web 瀏覽器
Pyautogui 允許您的腳本控制鼠標和鍵盤功能,讓您模仿智能用戶行為。Web 瀏覽器模塊允許您啟動一個新的瀏覽器到一個指定的 URL。
您可以在程序中使用這些來自動執行任何需要您訪問網站并執行任何功能的操作,例如填寫 Web 表單、下載文件等。這可用于自動執行需要您登錄到 Web 的功能頁面和發布信息。
例如,我見過一個 Python 腳本,它可以自動測試網頁的 XSS 腳本漏洞。XSS 是一種網絡攻擊,它試圖將?javascript?代碼插入輸入表單并讓該代碼在網站上運行。
這些庫還可用于自動執行其他需要您登錄、訪問 Web 瀏覽器以及在網頁上執行操作的日常任務。
彈夾
該庫使您能夠直接從 Python 腳本訪問剪貼板。雖然這可以通過 pyautogui 庫來完成,但 pyperclip 使這個過程變得更加簡單,并為您的腳本增加了靈活性。
它對于涉及大量文本的任何腳本特別有用。例如,假設您正在掃描整個 pdf 中的姓名、地址和電話號碼。只需突出顯示 pdf 文本并將其復制到剪貼板,pyperclip 就允許您在腳本中將其用作輸入,從而為您節省大量時間。
騙子
該庫專門用于生成可用于測試程序的虛假數據。這對于確保您編寫的任何腳本或工具都能夠按預期執行操作非常重要。
例如,如果您有一個提取 URL 的腳本,您可能希望生成一些包含該信息的虛假文本并測試您的程序以確保您的腳本可以有效地找到它。Faker 可以生成隨機數據,例如姓名、地址、電子郵件、國家/地區、文本、網址等。
筆測試
Python 編程在網絡安全中的另一個重要應用是滲透測試領域。滲透測試是試圖侵入網站、應用程序、設備或網絡以測試該實體的安全性的過程。
為了有效地執行這些測試,許多專業人員創建了自己的工具和腳本,這些工具和腳本的功能完全符合他們的測試需要,這就是了解 Python 變得非常有用的地方。
Python 在該領域主要用于開發用于執行攻擊的自定義腳本和工具。如果你想在這方面取得成功,知道如何編寫有效的腳本以及如何閱讀和理解別人編寫的工具對你來說非常有價值。以下是您需要熟悉的一些關鍵庫。
蟒蛇地圖
Nmap 是一個使用非常廣泛的端口掃描器。端口掃描是檢查計算機上打開了哪些端口以及該計算機上正在運行哪些服務的過程,以便您可以開始確定該計算機如何容易受到黑客攻擊。
Python Nmap 庫使您可以通過 Python 腳本輕松利用 nmap 功能,加快掃描目標計算機以查找漏洞的過程,并為您的掃描提供更多自定義。該庫允許您分析 nmap 掃描結果、執行自定義掃描以及將 nmap 結果導入其他工具。
插座
Socket 是一個低級網絡接口庫,允許您建立客戶端-服務器連接。在網絡安全的背景下,這很重要,因為它允許您使用特定協議連接到指定端口上的任何機器,并將數據發送到該機器。
這可用于機器的端口掃描以及向機器發送數據或從機器提取信息。數據泄露發生在滲透測試的后期,被稱為漏洞利用。任何需要您通過網絡接口進行通信的項目都可能使用 Socket。
斯卡皮
Scapy 是一個數據包操作庫,可以跨許多不同的網絡協議偽造和解碼數據包。
在網絡安全中,有些情況下您需要監控通過計算機網絡發送的數據包。可能是確定是否有人入侵了您的環境,查看機器上正在運行哪些端口和服務,或者解決網絡問題。
不管是什么原因,這個庫非常適合執行數據包分析,并且可以提供與 Nmap、Wireshark 和 tcpdump 等流行工具相同的功能。
要求
請求是不言自明的。它允許程序員通過他們的腳本發送 HTTP 請求。HTTP 請求通過允許創建自定義有效負載和針對 Web 應用程序的攻擊,對滲透測試活動很有用。
請求可以實現與 burp 套件之類的工具相同的功能,但可以根據您的需求進行更多自定義。Imperva 研究人員發現,Requests 是用于基于 Web 的攻擊中最流行的 Python 庫,用于 89% 的基于 Python 的攻擊。
美麗的湯
該庫專門協助滲透測試的信息收集階段。
Beautiful Soup 允許您從 HTML 和 XML 文件中解析數據,讓您自動執行數據抓取任務。在滲透測試的開源情報階段,數據抓取可能很重要,因為該階段致力于盡可能多地查找有關測試目標的信息。
出于這個原因,您可能希望創建腳本來自動化此階段,在 Github 等地方搜索以查找有關您的目標公司的信息。此信息可能包括 IP 地址,或者開發人員經常意外提交到公共存儲庫的用戶 ID 和密碼。
其他資源
這些庫中的每一個都添加了重要的功能,但要精通編寫與安全相關的腳本,最好以結構化的方式學習它們。
當談到自動化工具時,我強烈推薦這兩個資源,因為它們涵蓋了日常任務自動化中使用的所有核心 Python 庫,并且它們指導您完成幾個項目,您可以將這些項目放入您的投資組合中,以向招聘人員展示您的知識.
Automatetheboringstuff.com:這本免費的電子書將帶您了解所有這些庫以及更多與使用 Python 自動化日常工作任務相關的內容。這是迄今為止我發現的最全面的指南,并附帶練習、項目和演練。
Google 的自動化與 Python 專業證書:Google 有一個速成課程向您介紹該語言,并引導您了解 IT 專業人員自動化的重要方面。
在您學習 Python 時,我強烈建議您保留在這些課程中編寫的所有代碼,并將其用于作品集。一個簡單而免費的方法是通過 Github 投資組合。
這些課程中的每一個都帶有幾個您可以做的實踐項目想法,但是您想要展示的一些關鍵技能是讀取和寫入文件、從文本中提取信息以及通過應用程序編程接口與在線服務交互的能力(蜜蜂)。
如果您有興趣直接學習Python 進行滲透測試,這里有一些不錯的起點。這些書籍詳細介紹了如何使用 Python 完成特定于安全的活動,例如安全自動化、開發用于安全測試的 Python 安全工具以及用于計算機取證活動的 Python 腳本。它們也受到安全社區的高度尊重,這證明了它們的質量。
Violent Python:黑客、法醫分析師、滲透測試人員和安全工程師的食譜
Black Hat Python:面向黑客和滲透測試者的 Python 編程
Gray Hat Python:面向黑客和逆向工程師的 Python 編程
對于任何有抱負的安全專業人員來說,編程能力都是一項寶貴的資產,尤其是如果您對技術角色感興趣,例如安全工程師或滲透測試員。
Python 在網絡安全中至關重要
Python 是網絡安全領域最流行的編程語言,展示你用這種語言編程的能力可以大大提高你找到工作的機會。
為了構建強大的編程組合,您希望專注于證明您可以使用 Python 自動執行日常任務,并為滲透測試 Web 應用程序、網絡和計算機系統創建安全工具。
網絡安全是收入最高的科技行業之一,預計只會增長,為那些有資格的人提供巨大的機會。
網絡安全學習路線
對于從來沒有接觸過網絡安全的同學,我們幫你準備了詳細的學習成長路線圖。可以說是最科學最系統的學習路線,大家跟著這個大的方向學習準沒問題。
最后
- 如果你確實想自學的話,我可以把我自己整理收藏的這些教程分享給你,里面不僅有web安全,還有滲透測試等等內容,包含電子書、面試題、pdf文檔、視頻以及相關的課件筆記,我都已經學過了,都可以免費分享給大家!
給小伙伴們的意見是想清楚,自學網絡安全沒有捷徑,相比而言系統的網絡安全是最節省成本的方式,因為能夠幫你節省大量的時間和精力成本。堅持住,既然已經走到這條路上,雖然前途看似困難重重,只要咬牙堅持,最終會收到你想要的效果。
結語
網絡安全產業就像一個江湖,各色人等聚集。相對于歐美國家基礎扎實(懂加密、會防護、能挖洞、擅工程)的眾多名門正派,我國的人才更多的屬于旁門左道(很多白帽子可能會不服氣),因此在未來的人才培養和建設上,需要調整結構,鼓勵更多的人去做“正向”的、結合“業務”與“數據”、“自動化”的“體系、建設”,才能解人才之渴,真正的為社會全面互聯網化提供安全保障。
特別聲明:
此教程為純技術分享!本教程的目的決不是為那些懷有不良動機的人提供及技術支持!也不承擔因為技術被濫用所產生的連帶責任!本教程的目的在于最大限度地喚醒大家對網絡安全的重視,并采取相應的安全措施,從而減少由網絡安全而帶來的經濟損失