前言
网络安全是保护网络、系统和程序免受数字攻击的做法。据估计, 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 应用程序、网络和计算机系统创建安全工具。
网络安全是收入最高的科技行业之一,预计只会增长,为那些有资格的人提供巨大的机会。