本文理论基础知识来源于《测试工程师全栈技术进阶与实践》,仅供学习使用,不做他用。感谢原作者提供的知识分享。
本文整理梳理了来源于书籍、网络等方面渗透测试理论内容,旨在了解和学习渗透测试的基础,并不做实际的演示,仅用于学习目的。
1 什么是渗透测试?
- 渗透测试是指由专业的安全人员
模拟黑客
,从系统可能存在的漏洞位置进行攻击测试
,找到隐藏的安全漏洞,从而达到保护系统安全的目的; - 书中有一个例子说的非常不错:
把软件系统比喻一座房子,房子建好后会配备一些安全措施,比如防盗门、安全警报等。一般情况,我们认为这已经足够安全,但我们不能十分确认入侵者会使用怎样的方式找到漏洞,从而攻击我们的安全防线。
为了保护房子足够安全,我们会聘请外部的安全专家进行一系列的检测,比如检测防盗门是否牢固,窗户是否容易被侵入等等,发现这个房子是否存在漏洞,确保房子的安全性。
- 从上边的例子中,我们看出:
由外部安全专家验证房子的安全过程,就是对房子进行渗透测试的过程。其中房子就是我们的软件系统,验证房子安全性采取的一系列措施,就是安全渗透测试。
- 这个例子非常好,通俗易懂的简单了解什么是渗透测试。
2 有哪些常用方法?
- 关于渗透测试常用的方法,书中提及到了几种方法,分别是:
2.1 针对性测试
- 针对性测试由公司内部员工和专业渗透测试团队共同完成;
- 内部员工提供安全测试所需要的基础信息,并负责业务层面的安全测试;
- 专业渗透测试团队关注业务以外的、更普适的安全测试;
- 针对性测试属于研发层面的渗透测试;
- 参与这类测试的人员,可得到被测系统的内部资料(部署信息、网络信息、详细架构设计、产品代码等);
- 这种方法也叫“开灯测试”,就是测试人员完全了解系统内部情况的前提下开展的。
2.2 外部测试
- 外部测试时针对外部可见的服务器和设备,模拟外部
攻击者对其进行攻击
,检查它们是否能够被入侵
; - 这里的服务器和设备包括域名服务器、
Web
服务器、防火墙、电子邮箱服务器等; - 如果
入侵
成功,会入侵到系统
的哪一部分,又会泄露多少资料等等; - 由内部测试人员或者专业渗透测试团队在假定完全不清楚系统内部情况的前提下来开展。
2.3 内部测试
- 内部测试指由测试工程师模拟内部人员在内网进行
攻击
,检查内部攻击可以给系统造成什么程度伤害; - 这里测试人员应拥有较高的系统权限,也能查阅各种内部资料等;
- 内部测试主要是防止系统的内部员工对系统进行内部
攻击
。
2.4 盲测
- 盲测是指在严格限制提供给测试执行人员或团队的信息的前提下,由他们来模拟真实者的行为;
- 一般测试人员指被告知被测系统的公开信息;
- 这种测试可能需要相当长的时间进行
侦查
; - 这类测试的效果很大程度上取决于测试人员的
技术水平
; - 盲测由专业渗透测试团队在测试
后期
开展; - 一般需要借助很多攻击工具。
2.5 双盲测试
- 双盲测试也叫“隐秘测试”;
- 测试人员对系统内部知之甚少,且被测试系统内部也只有少数人知道正在进行安全测试;
- 双盲测试可反映软件系统最真实的安全状态;
- 一般由外部专业渗透测试专家团队完成。
3 如何开展渗透测试?
3.1 规划和侦查
- 定义测试的范围和目标;
- 初步确定要使用的工具和方法;
- 明确需要收集的情报信息(如网路和域名、邮件服务器等);
- 主要是为了了解目标的工作方式及潜在的安全漏洞。
3.2 安全扫描
- 静态分析:主要是扫描所有代码进行分析,可使用一些工具,比如
Fortify SCA
、Checkmarx Suite
; - 动态分析:在代码运行时进行扫描,可实时提供应用程序的运行时视图,比静态扫描更准确。
3.3 获取访问权限
- 测试人员将模拟黑客对应用程序进行网络攻击(如SQL注入、跨站脚本攻击等);
- 利用找到的漏洞,通过升级自己的权限、窃取数据、拦截流量等方式了解其对系统造成的伤害。
3.4 维持访问权限
- 查看被发现的漏洞是否可以长期存在于系统中;
- 如果漏洞能够持久化,那么在很长一段时间内入侵者都可对系统进行深入访问或破坏。
3.5 入侵分析
- 将以上分析结果汇总成详细的测试报告;
- 需要注明以下内容:
1、可以被利用的特定漏洞;
2、利用该漏洞的具体步骤;
3、能够被访问的敏感数据;
4、渗透测试人员能够在系统中不被侦测到的时间。
4 常用的渗透测试工具有哪些?
4.1 Nmap
4.1.1 简介
Nmap
是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端;- 确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统,用以评估网络系统安全;
- 系统管理员可以利用
nmap
来探测工作环境中未经批准使用的服务器,但是黑客会利用nmap
来搜集目标电脑的网络设定,从而计划攻击
的方法。
4.1.2 主要功能
- 探测一组主机是否在线;
- 扫描 主机端口,嗅探所提供的网络服务;
- 推断主机所用的操作系统 。
4.1.3 一些命令
# 以下是部分官方文档中的示例
# 扫描主机scanme中 所有的保留TCP端口
nmap -v scanme.
# 秘密SYN扫描
nmap -sS -O
# 主机列举和TCP扫描
nmap -sV -p
# 随机选择100000台主机扫描是否运行Web服务器(80端口)
nmap -v -iR 100000 -P0 -p 80
4.1.4 基本扫描方式
TCP connect()端口扫描(-sT参数)。
TCP同步(SYN)端口扫描(-sS参数)。
UDP端口扫描(-sU参数)。
Ping扫描(-sP参数)。
4.2 Aircrack-ng
4.2.1 简介
Aircrack-ng
是一个与802.11
标准的无线网络分析有关的安全软件,主要功能有:网络侦测,数据包嗅探,WEP
和WPA/WPA2-PSK破解
;Aircrack-ng
可工作在任何支持监听模式的无线网卡上并嗅探802.11a,802.11b,802.11g
的数据;4.2.2 aircrack-ng 套件
套件 | 说明 |
---|---|
aircrack-ng |
破解WEP 以及WPA (字典攻击)密钥 |
airdecap-ng |
通过已知密钥来解密WEP 或WPA 嗅探数据 |
airmon-ng |
将网卡设定为监听模式 |
aireplay-ng |
数据包注入工具(Linux 和Windows 使用CommView 驱动程序) |
airodump-ng |
数据包嗅探:将无线网络数据输送到PCAP 或IVS 文件并显示网络信息 |
airtun-ng |
创建虚拟管道 |
airolib-ng |
保存、管理ESSID 密码列表 |
packetforge-ng |
创建数据包注入用的加密包 |
Tools |
混合、转换工具 |
airbase-ng |
软件模拟AP |
airdecloak-ng |
消除pcap 文件中的WEP 加密 |
airdriver-ng |
无线设备驱动管理工具 |
airolib-ng |
保存、管理ESSID 密码列表,计算对应的密钥 |
airserv-ng |
允许不同的进程访问无线网卡 |
buddy-ng |
easside-ng 的文件描述 |
easside-ng |
和AP 接入点通讯(无WEP ) |
tkiptun-ng |
WPA/TKIP 攻击 |
wesside-ng |
自动破解WEP 密钥 |
4.3 sqlmap
4.3.1 简介
sqlmap
是一个自动化的sql
注入工具,其主要功能是扫描、发现并利用给定URL
的SQL
注入漏洞;- 内置了很多绕过插件,支持的数据库有
MySQL, Oracle,PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird,Sybase和SAP MaxDB
。
4.3.2 注入模式
- 基于布尔的盲注:
即可以根据返回页面判断条件真假的注入;
- 基于时间的盲注:
即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断;
- 基于报错注入:
即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中;
- 联合查询注入:
可以使用union的情况下的注入;
- 堆查询注入:
可以同时执行多条语句的执行时的注入。
4.3.3 一些命令
# 判断是否存在注入
sqlmap.py -u url
# 判断文本中的请求是否存在注入
sqlmap.py -r MM_test.txt
# 查询当前用户下的所有数据库
sqlmap.py -u url --dbs
# 获取数据库下的表名
sqlmap.py -u url -D security --tables
# 获取表中的字段名
sqlmap.py -u url -D security -T users --columns
# 获取数据库的所有用户
sqlmap.py -u url --users
.......
4.4 Wifiphisher
Wifiphisher
是一个安全工具,具有安装快速、自动化搭建的优点,利用它搭建起来的网络钓鱼攻击WiFi可以轻松获得密码和其他凭证;- 与其它(网络钓鱼)不同,这是社会工程攻击,不包含任何的
暴力破解
,它能轻松获得门户网站和第三方登陆页面的证书或WPA/WPA2
的密钥。
其他方面简介,暂时略,后续详解。
4.5 AppScan
- 这个工具对于每个做渗透测试者来说,应该用的比较多,它的功能非常强大;
AppScan
是一款网络安全测试工具,用于WEB
安全防护的扫描防护;- 扫描器的扫描结果生成
WAF
,对网站漏洞直接防护; - 关于使用等其他介绍,后续再议。
5 渗透测试好处?
- 通过渗透测试,可以识别出主要漏洞,并及时进行修复,以确保系统环境的安全性;
- 因为避免了安全漏洞,所以也就避免了不必要的损失。