什么是渗透测试?

渗透测试(Penetration Test,简称为 PenTest),是指通过尝试利用漏洞攻击来评估IT基础设施的安全性。这些漏洞可能存在于操作系统、服务和应用程序的缺陷、不当配置或有风险的用户行为中。这种评估也有助于验证防御机制的有效性以及最终用户是否遵守安全政策。

渗透测试通常使用手动或自动技术来系统地破坏服务器、端点、网络应用、无线网络、网络设备、移动设备和其他潜在的暴露点。一旦某个系统的漏洞被成功利用,测试人员会尝试利用被破坏的系统继续攻击其他内部资源,特别是,会通过权限升级逐步获取更高级别的安全许可和对电子虚拟资产和信息的更深入访问。

通过渗透测试成功暴露的任何安全漏洞信息通常会被汇总提交给 IT 和网络系统经理,以帮助这些专业人士做出战略性结论并调整修复工作的优先级。渗透测试的根本目的是衡量系统或终端客户被破坏的可能性,并评估此类事件可能对相关资源或操作产生的任何后果。

把渗透测试看成是试图通过自己动手来确认是否有人能闯入你的房子可能更好理解。渗透测试人员也被称为道德黑客,使用受控环境评估IT基础设施的安全性,以安全地攻击、识别和利用漏洞。区别在于他们不是检查门窗,而是测试服务器、网络、网络应用程序、移动设备和其他潜在的突破口,以发现整套系统的弱点。

​ 

渗透测试的5个阶段

渗透测试的整体流程可以分为5个阶段:规划和侦查、扫描、获取访问权限、维持访问权限、分析。

1、 规划和侦查

第一阶段主要包含以下两个内容:

  • 定义测试的目标和范围,包括要处理的系统和要使用的测试方法
  • 收集情报(例如,网络和域名、邮件服务器)以更好地了解目标的工作方式及其潜在漏洞

2、 扫描

渗透测试人员会使用工具来检测目标网站或系统的弱点,包括开放的服务、应用安全问题以及开源漏洞。渗透测试人员根据他们在侦查和测试期间发现的内容使用各种工具。通常包含以下两类工具:

  • 静态分析:检查应用程序的代码,以预估它在运行时的行为方式。这类工具可以一次性扫描整个代码。
  • 动态分析:在运行状态下检查应用程序代码。这是一种更实际的扫描方式,因为它可以实时查看应用程序的性能。

3、 获取访问权限

攻击者的动机可能包括窃取、更改或删除数据,转移资金或是损害公司声誉等。因此,这一阶段会使用网络应用攻击,例如跨站脚本攻击、SQL注入和后门等攻击方式,以发现目标漏洞。渗透测试人员会确定最合适的工具和技术来获得对系统的访问,然后利用这些漏洞,以了解她们可能造成的损害。

4、 维持访问

这一阶段的目标是看这些漏洞是否可以在目标系统中保持足够长的时间以达成攻击者的目的。这是为了模拟复杂的持续性威胁,这些威胁通常在系统中停留数月以窃取企业中最敏感的数据。

5、 分析

渗透测试的结果随后会汇编成一份报告,包含以下内容:

  • 被利用的具体漏洞
  • 被访问的敏感数据
  • 渗透测试人员能够留在系统中而不被发现的时间

安全人员对这些信息进行分析,以帮助配置企业的WAF设置和其他应用安全解决方案,以修补漏洞和阻止未来可能产生的攻击。

​ 

应该授予渗透测试人员多少权限?

根据渗透测试的目标,测试人员能够获取不同等级的信息或是目标系统的访问权限。在某些情况下,渗透测试团队会在开始时采取某种方法并一直坚持下去。其他时候,随着渗透测试期间对系统认识的深入,测试团队也会迭代其测试策略。因此,有3个层次的渗透测试访问权限:

  • Opaque Box:测试团队对目标系统的内部结构毫无了解。他们需要像黑客一样行事,探测可以从外部利用的任何弱点。
  • Semi-opaque Box:团队掌握了一套或多套凭证。并且知道目标的内部数据结构、代码和算法。渗透测试人员可能会根据详细的设计文件,如目标系统的架构图,设计测试方案。
  • Transparent Box:渗透测试人员拥有访问系统、系统组件(包括源代码、二进制、容器和其他运行在该系统上的服务器)的权限。这种方法可以在最短的时间内为目标系统提供最高级别的保障。

    ​ 

渗透测试的类型

全面的渗透测试对于优化风险管理至关重要,这需要测试你所在环境中的所有区域:

  • Web App:测试人员检测安全控制的效率并查找隐藏的漏洞、攻击模式以及其他导致 Web App 被破坏的潜在安全缺口。

  • 移动应用:利用自动化和扩展的手动测试,测试人员可以寻找在移动设备上运行的应用程序二进制文件和相应的服务器端功能的漏洞。服务器端的漏洞包括会话管理、加密问题、认证和授权问题以及其他常见的网络服务漏洞。

  • 网络:这种测试可以确定外部网络和系统中的常见漏洞和关键漏洞。专家们会设置一个检查表,其中包括加密传输协议、SSL证书范围问题、管理服务的使用等测试用例。

  • 云:云环境与传统本地环境存在巨大的差异。通常情况下,安全责任是由使用环境的企业和云服务提供商共同承担。正因为如此,渗透测试需要一套专门的技能和经验来仔细检查云的各个环节,如配置、API、各种数据库、加密方式、存储和安全控制。

  • 容器:从 Docker 获得的容器往往存在漏洞,并且可以被大规模利用。错误配置也是与容器及其环境相关的常见风险。以上这两种风险都可以通过专业的渗透测试发现。

  • 嵌入式设备(IoT):嵌入式或物联网设备(如医疗设备、汽车、智能家居、智能手表等)由于其较长的使用周期、电源限制、监管要求以及位置分散等特性,需要独特的软件测试方法。专家们在进行彻底的通信分析的同时,还需要进行客户端/服务器分析,以确定在相关使用场景中是否会出现漏洞。

  • API:采用自动和手动测试技术力求覆盖 QWASP API 安全 Top 10 名单。测试人员寻找的一些安全风险和漏洞包括 Broken Object Level Authorization(BOLA)、用户认证、过度的数据暴露、缺乏资源/速率限制等等。

  • CI/CD 流水线:现代 DevSecOps 实践将自动化和智能代码扫描工具整合到 CI/CD 流水线中。除了发现已知漏洞的静态工具外,自动渗透测试工具也可以被集成到 CI/CD 流水线中,以模拟黑客的行为方式来破坏应用程序的安全。自动化的 CI/CD 渗透测试可以发现隐藏的漏洞和攻击模式,这些漏洞和攻击模式在静态代码扫描中是无法发现的。

    ​ 

为什么渗透测试如此重要?

识别并对安全风险进行优先排序

渗透测试评估了企业保护其网络、应用程序、端点和用户的能力,以防止外部或内部试图规避安全策略来获得对敏感数据的访问。

智能管理漏洞

渗透测试会向企业提供关于可利用的安全威胁的实际信息。通过执行渗透测试,你可以主动识别哪些漏洞是致命的,哪些是不太重要的,哪些是假阳性。这使你的组织能够更明智地确定补救措施的有限次序、应用所需的安全补丁,并更有效地分配安全资源,以确保它们发挥最大优势。

识别现有的安全项目是否在正常运行

没有对整个环境的适当可见性就贸然改变安全策略可能会导致你所解决的安全问题都是一些实质上不会造成任何伤害的问题。渗透测试不仅能告诉你组件是否在正常运行,它们还可以进行质量检查,所以通过渗透测试你也会发现什么策略是最有效的,什么工具可以提供最高的投资回报率。

符合监管要求

渗透测试帮助企业解决审计和合规性问题。通过利用企业的基础设施,渗透测试可以准确地证明攻击者是如何获得敏感数据的。随着攻击策略的发展和演变,定期的强制测试可以确保企业在漏洞被利用之前发现并修复安全弱点,从而领先一步。

此外,对于审计人员来说,这些测试还可以验证其他规定的安全措施是否到位或者正常工作。渗透测试所生成的详细报告还可以帮助企业说明其在维护所需的安全控制方面做出了尽职的工作。

渗透测试(PenTest)基础指南的更多相关文章

  1. python渗透测试入门——基础的网络编程工具

    <Python黑帽子--黑客与渗透测试编程之道学习>这本书是我在学习安全的过程中发现的在我看来十分优秀的一本书,业内也拥有很高的评价,所以在这里将自己的学习内容分享出来. 1.基础的网络编 ...

  2. 2019-10-9:渗透测试,基础学习the-backdoor-factory-master(后门工厂)初接触

    该文章仅供学习,利用方法来自网络文章,仅供参考 the-backdoor-factory-master(后门工制造厂)原理:可执行二进制文件中有大量的00,这些00是不包含数据的,将这些数据替换成pa ...

  3. 2019-9-28:渗透测试,基础学习,pgp常量,逻辑运算,DNS投毒,笔记

    sunny.exe clientid 隧道ID route -n 查看网关netstat -rn 查看网关 DNS劫持ettercap用来内网渗透测试使用,可以嗅探内网,DNS劫持等攻击1,在攻击者电 ...

  4. 2019-9-25:渗透测试,基础学习,medusa爆破学习

    Medusa(美杜莎)暴力破解使用 该文章仅供学习,利用方法来自网络文章,仅供参考 一.简介 medusa(美杜莎)是一个速度快,支持大规模并行,模块化,爆破登陆,可以同时对多个主机,用户或是密码执行 ...

  5. 2019-9-20:渗透测试,基础学习,笔记,metasploit的基础使用

    使用kali下metasploit生成木马,控制windows系统 kali基于debin的数字取证系统,上面集成了很多渗透测试工具,前身为bt r3(BrackTrack) Metasploit,是 ...

  6. 【入门推荐】SQL注入进行WebShell渗透测试的基础概览

    作者:zero 本文为SQL基本注入的进阶文章,如有任何疑问请查看: SQL基本注入演示:https://www.cnblogs.com/anbus/p/10082452.html 导语: 利用SQL ...

  7. metasploit 渗透测试笔记(基础篇)

    0x00 背景 笔记在kali linux(32bit)环境下完成,涵盖了笔者对于metasploit 框架的认识.理解.学习. 这篇为基础篇,并没有太多技巧性的东西,但还是请大家认真看啦. 如果在阅 ...

  8. 2019-10-29:渗透测试,基础学习,sqlmap文件读取,写入,dnslog盲注作用,mssql手工注入,笔记

    sqlmap参数--file-read,从数据库服务器中读取文件--file-write,--file-dest,把文件上传到数据库服务器中 dnslog平台的学习和它在盲注中的应用1,判断注入点2, ...

  9. 2019-9-9:渗透测试,基础学习,phpmyadmin getshell方法,基于时间的盲注,基于报错的注入,笔记

    phpmyadmin getshell方法1,查看是否有导入导出设置 show global variables like '%secure-file-priv%';2,如果secure-file-p ...

  10. 2019-10-16:渗透测试,基础学习,burpsuit学习,爆破的四种方式学习

    Burp Suite 是用于攻击web 应用程序的集成平台,包含了许多工具.Burp Suite为这些工具设计了许多接口,以加快攻击应用程序的过程.所有工具都共享一个请求,并能处理对应的HTTP 消息 ...

随机推荐

  1. Bugku练习题---MISC---FileStoragedat

    Bugku练习题---MISC---FileStoragedat flag:bugku{WeChatwithSteg0} 解题步骤: 1.观察题目,下载附件 2.下载后发现是一个后缀名为.dat的文件 ...

  2. 如何对用户的绑定的身份证真实性进行实名认证(java)

    现在随着对用户实名制的要求,因此用户提交的身份证信息经查需要检查是否为真实信息,我们需要对用户提交的身份证信息进行核验,具体操作步骤如下: 第一步 到认证平台注册账号:云亿互通--实名认证服务 (yu ...

  3. ONNXRuntime学习笔记(三)

    接上一篇完成的pytorch模型训练结果,模型结构为ResNet18+fc,参数量约为11M,最终测试集Acc达到94.83%.接下来有分两个部分:导出onnx和使用onnxruntime推理. 一. ...

  4. 高级IPC DBus

    What is IPC IPC [Inter-Process Communication] 进程间通信,指至少两个进程或线程间传送数据或信号的一些技术或方法.在Linux/Unix中,提供了许多IPC ...

  5. sklearn机器学习实战-KNN

    KNN分类 KNN是惰性学习模型,也被称为基于实例的学习模型 简单线性回归是勤奋学习模型,训练阶段耗费计算资源,但是预测阶段代价不高 首先工作是把label的内容进行二值化(如果多分类任务,则考虑On ...

  6. 简单的 useState 实现

    简单的 useState 实现 本文写于 2020 年 10 月 21 日 以下是一段非常简单的 React 代码: const App = () => { const [n, setN] = ...

  7. 6.Docker网络

    什么是 Docker网络 docker 不启动,默认网络情况 ens33 lo virbr0 在 CentOS7 的安装过程中如果有选择相关虚拟化的的服务安装系统后,启动网卡时会发现有一个以网桥连接的 ...

  8. Install Ubuntu on Windows Subsystem for Linux

    安装参考 ubuntu.com/wsl microsoft/wsl/install-manual microsoft/terminal 错误解决方案 github/启动 WSL 2时警告"参 ...

  9. install ubuntu on raspberry pi 4b

    how to install 第一次连 wifi 时总会失败,需要 sudo reboot 重启后,就可以正常连接 当需要切换 wifi 时,修改 network-config 文件是无效的,需要 s ...

  10. linux篇-linux iptables配置

    1 iptables默认系统自带 setup 2重启防火墙 /etc/init.d/iptables restart 3接受端口 Vi /etc/sysconfig/iptables -A INPUT ...