初识渗透测试

前言

熟悉军事的朋友都应该了解,各个国家的军队每年都会组织一些军事演习来检验部队的攻防战术和作战能力,在美国,一般会将美军称为蓝军,将假想敌称为红军,这种军事演戏的方式,也在上个世纪90年代引入美军的网络安全和信息基础设施的实际攻防测试过程。由一群接受过职业培训的安全专家作为红方,对防御方蓝方进行安全攻击,以实战的方式来检验目标系统的防御体系和应急响应计划的有效性,这种通过实际的攻击方式进行安全测试和评估的方法就是安全渗透测试。

在20世纪90年代后期,逐步开始从军队和情报部门拓展到安全界,一些对安全需求很高的企业开始采用这种方式来对他们的网络和系统进行测试。

一、渗透测试概述

所谓渗透测试是借助各种漏洞扫描工具,通过模拟黑客的攻击方法来对网络安全进行评估。

渗透测试类型

选择的渗透测试类型取决于公司和组织的用途和范围 - 他们是否想要模拟员工,网络管理员或外部来源的攻击。通常,有三种不同类型的渗透测试:

  • 黑盒测试:是指对基础设施不知情的情况下进行测试。黑盒测试比较费时费力,同时要求渗透测试者具备较高的技术能力;
  • 白盒测试:是指在完全了解结构的情况下进行的测试。白盒测试能比黑盒测试消除更多的目标的安全漏洞,给客户带来更大的价值。白盒测试最大的问题在于无法有效的测试客户的应急响应程序,无法判断客户的安全防护计划对检测特定的统计的效率;
  • 灰盒测试:就是以上两种的组合。可以同时发挥两种基本类型渗透测试方法各自的优势。

二、渗透测试流程

渗透测试与入侵的最大区别:

渗透测试:出于保护系统的目的,更全面地找出服务器的安全隐患。

入侵:不择手段地(甚至是具有破坏性的)拿到系统权限。

一般渗透测试流程如下

2.1 明确目标

根据需求和自己技术能力来确定能不能做、能做多少。

  • 确定范围:测试目标的范围,ip,域名,内外网。
  • 确定规则:能渗透到什么程度(发现漏洞为止or 继续利用漏洞)、时间限制、能否修改上传、能否提权等。
  • 确定需求:web应用的漏洞(新上线程序)、业务逻辑漏洞(针对业务的)、人员权限管理漏洞(针对人员、权限)等等。

2.2 信息收集

方式:主动扫描,开放搜索等。

开放搜索:利用搜索引擎获得,后台,未授权页面,敏感url等。

  • 基础信息:IP,网段,域名,端口。
  • 系统信息: 操作系统版本。
  • 应用信息:各端口的应用,例如web应用,邮件应用等等。
  • 版本信息:所有探测到的版本。
  • 服务信息:服务器类型、版本。
  • 人员信息:域名注册人员信息,web应用中网站发帖人的id,管理员姓名等。
  • 防护信息:试着看能否探测到防护设备。

2.3 漏洞探索

利用上一步中列出的各种系统,应用等使用相应的漏洞。

方法:

  1. 漏扫,awvs,IBM appscan等。
  2. 结合漏洞去exploit-db等位置找利用。
  3. 在网上寻找验证poc。

内容:

  • 系统漏洞:系统没有及时打补丁。
  • Websever漏洞:Websever配置问题。
  • Web应用漏洞:Web应用开发问题。
  • 其它端口服务漏洞:各种21/8080(st2)/7001/22/3389。
  • 通信安全:明文传输,token在cookie中传送等。
2.4 漏洞验证

将上一步发现的有可能可以成功利用的全部漏洞都验证一遍。结合实际情况,搭建模拟环境进行试验,成功后再应用于目标中。

  • 自动化验证:结合自动化扫描工具提供的结果。
  • 手工验证:根据公开资源进行验证。
  • 试验验证:自己搭建模拟环境进行验证。
  • 登陆猜解:有时可以尝试猜解一下登陆口的账号密码等信息。
  • 业务漏洞验证:如发现业务漏洞,要进行验证。
  • 公开资源的利用: -exploit-db/wooyun/ -google hacking

-渗透代码网站

-通用、缺省口令

-厂商的漏洞警告等

2.5 信息分析

为下一步实施渗透做准备。

  • 精准打击:准备好上一步探测到的漏洞的exp,用来精准打击。
  • 绕过防御机制:
    是否有防
    火墙等设备,如何绕过。

  • 定制攻击路径:最佳工具路径,根据薄弱入口,高内网权限位置,最终目标。

  • 绕过检测机制:是否有检测机制,流量监控,杀毒软件,恶意代码检测等(免杀)。
  • 攻击代码:经过试验得来的代码,包括不限于xss代码,sql注入语句等。

2.6 获取所需

  • 实施攻击:根据前几步的结果,进行攻击。
  • 获取内部信息:基础设施(网络连接,vpn,路由,拓扑等)。
  • 进一步渗透:内网入侵,敏感目标。
  • 持续性存在:一般我们对客户做渗透不需要。rookit,后门,添加管理账号,驻扎手法等。
  • 清理痕迹:清理相关日志(访问,操作),上传文件等。

2.7 信息整理

  • 整理渗透工具:整理渗透过程中用到的代码,poc,exp等。
  • 整理收集信息:整理渗透过程中收集到的一切信息。
  • 整理漏洞信息:整理渗透过程中遇到的各种漏洞,各种脆弱位置信息。

目的:为了最后形成报告,形成测试结果使用。

2.8 形成报告

  • 按需整理:按照之前第一步跟客户确定好的范围,需求来整理资料,并将资料形成报告。

  • 补充介绍:要对漏洞成因,验证过程和带来危害进行分析。
  • 修补建议:当然要对所有产生的问题提出合理高效安全的解决办法。

2.9 流程总结

三、常用工具系统

下面简单介绍两种经典工具。

3.1 Kali linux

专门

渗透测试和安全审计提供的操作系统,集成很多的黑客工具。

· 由Back Track系统发展而来

· 基于Debian

· 开始滚动更新的模式

http://pkg.kali.org/检测某个工具有没有集成情况。

https://www.kali.org/kali-linux-releases/kali更新日志。

https://www.kali.org/downloads/kali下载。

代码语言:javascript
复制
# kali支持在线更新

apt update
apt dist-upgrade
reboot
#检测版本
uname -a

3.2 Metasploit

  • 由HD moore开发,开源。
  • 2011年, v4.0版,717个渗透攻击模块、226个攻击载荷、361个辅助模块、68个后渗透攻击模块。
  • 方便升级。
  • 框架:

模块:Metasploit框架对外提供的最核心的渗透功能实现代。

Aux辅助模块:主要完成信息搜集 Exploits模块:进行渗透攻击 Post后渗透攻击模仿:进行主机控制与拓展攻击

插件:

用于集成外部的安全攻击例如Nessus. OpenVAS. Nmap等。

  • 安装 支持Windows和Linux/unix。

总结

借助渗透测试,可以先于黑客发现系统安全隐患,提前部署好安全防御措施,保证系统的每个环节在未来都能经得起黑客挑战,进一步巩固客户对企业及平台的信赖。渗透测试并不是一个简单的工作,它需要很广阔的涉猎面和长期的经验积累。

注:参考文献:

1.《渗透测试学习指南》

——https://blog.csdn.net/Z_Grant/article/details/97028383?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~sobaiduend~default-2-97028383.

2.《渗透测试流程解析》

——http://blog.nsfocus.net/penetration-test-class/