渗透测试流程和方法

2021-01-18 10:15:47 浏览数 (1)

渗透测试,是为了证明网络防御按照预期计划正常运行而提供的一种机制。不妨假设,你的公司定期更新安全策略和程序,时时给系统打补丁,并采用了漏洞扫描器等工具,以确保所有补丁都已打上。如果你早已做到了这些,为什么还要请外方进行审查或渗透测试呢?因为,渗透测试能够独立地检查你的网络策略,换句话说,就是给你的系统安了一双眼睛。而且,进行这类测试的,都是寻找网络系统安全漏洞的专业人士。 渗透测试就是利用我们所掌握的渗透知识,对网站进行一步一步的渗透,发现其中存在的漏洞和隐藏的风险,然后撰写一篇测试报告,提供给我们的客户。客户根据我们撰写的测试报告,对网站进行漏洞修补,以防止黑客的入侵! 渗透测试的前提是我们得经过用户的授权,才可以对网站进行渗透。如果我们没有经过客户的授权而对一个网站进行渗透测试的话,这是违法的。

渗透测试基本流程

  • 明确目标
  • 信息收集
  • 漏洞挖掘
  • 漏洞利用
  • 权限提升
  • 内网渗透
  • 痕迹清理
  • 撰写报告

渗透测试分为黑盒测试和白盒测试

黑盒测试又被称为所谓的“Zero-Knowledge Testing”,渗透者完全处于对系统一无所知的状态,或者只知道这个网站的URL。通常这类型测试,最初的信息获取来自于DNS、Web、Email及各种公开对外的服务器。 白盒测试与黑箱测试恰恰相反,测试者可以通过正常渠道向被测单位取得各种资料,包括网络拓扑、员工资料甚至网站或其它程序的代码片段,也能够与单位的其它员工(销售、程序员、管理者...)进行面对面的沟通。这类测试的目的是模拟企业内部雇员的越权操作。

0x01 明确目标

授权许可

从客户或该公司获取书面渗透测试委托授权书

确定范围

测试目标的范围、ip、域名、内外网、整站或部分模块、测试账户等

确定规则

  • 使用代理IP还是IP访问白名单、能渗透到什么程度(发现漏洞为止还是继续扩大范围挖掘尽可能多的风险),时间限制、能否修改上传、能否提权等。
  • 目标系统介绍、重点保护对象及特性。
  • 是否允许数据破坏?
  • 是否允许阻断业务正常运行?
  • 测试之前是否应当知会相关部门负责人?
  • 接入方式?外网和内网?
  • 测试是发现问题就算成功,还是尽可能的发现多的问题?
  • 渗透过程是否需要考虑社会工程?
  • More...

确定需求

应用系统渗透、数据库系统渗透、主机操作系统渗透、网络设备渗透等

0x02 信息收集

信息收集的方式可以分为两种:主动和被动。

  • 主动信息收集:通过直接访问、扫描网站,这种流量将流经网站
  • 被动信息收集:利用第三方的服务对目标进行访问了解,比例:Google hack搜索、Shodan搜索等

基础信息

  1. Whois信息(域名所有人、域名注册商、邮箱、联系方式、Whois反查)
  2. 域名对应IP(多地Ping判断是否存在CDN,获取服务器真实IP)
  3. 旁站(同一服务器下其他网站)
  4. C段(同一网段其他服务器)
  5. 子域名(顶级域名下的域名,如:www.example.com是顶级域名example.com的子域名)
  6. DNS(大型网络的企业,一般都有自己的DNS服务器)
  7. More...

常用工具

方法

  1. Google语法查询
  2. 基于SSL证书查询
  3. More...

工具

  • Dig
  • Nmap
  • Masscan
  • Nslookup
  • subDomainsBrute
  • Layer子域名挖掘机
  • More...

常用网站

  • 爱站网
  • DNSdb
  • Shodan
  • ZoomEy
  • 微步在线
  • 千寻查询工具
  • 傻蛋联网设备搜索
  • 站长工具-站长之家
  • Certificate Search
  • More...

整站分析

  1. 服务器类型(类Unix/Windows)
  2. 网站容器(Apache/Nginx/Tomcat/IIS等)
  3. 脚本类型(PHP/JSP/ASP/ASPX等)
  4. 数据库类型(Mysql/Oracle/Accees/Mqlserver等)
  5. CMS系统(查询已知漏洞从而进一步攻击)
  6. 开放端口(扫描开放端口、端口对应服务等)
  7. 敏感信息(代码、目录、路径、文件等)
  8. More...

常用工具

方法

  1. Google语法查询
  2. Ping探测(通过TTL值判断服务器类型)
  3. Response Headers(响应headers)
  4. 代码托管平台(Github、Gitee等)
  5. More...

工具

  • Dig
  • Nmap
  • Masscan
  • Nslookup
  • subDomainsBrute
  • Layer子域名挖掘机
  • More...

常用网站

  • Nmap
  • Nessus
  • cansina
  • Masscan
  • DirBuster
  • Whatweb
  • wwwscan
  • Wappalyzer
  • More...

0x03 漏洞挖掘

漏洞挖掘的方式可以分为两种:手动和自动。

  • 手动漏洞挖掘:通过手工挖掘SQL注入、XSS跨站脚本攻击、代码执行、命令执行、文件上传、文件包含、越权访问等常见漏洞。
  • 自动漏洞挖掘:就是直接使用网站漏洞扫描工具对网站进行漏洞探测了。但是需要注意的是,使用漏扫工具直接对网站进行扫描,因为一下子流量过大,有些网站可能会崩溃。所以一般最好不要使用漏洞扫描工具对网站进行扫描。并且如果未经授权就用漏扫对网站进行扫描还是违法的!

0x04 漏洞验证

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

  1. 自动化验证:结合网站漏洞扫描工具提供的结果。
  2. 手工验证:根据网上公开资源进行验证。
  3. 试验验证:自己搭建模拟环境进行验证。
  4. 登陆猜解:有时可以尝试猜解登陆的账号密码等信息。
  5. 业务安全漏洞验证:如发现业务安全漏洞,要进行验证。
  6. More...

常用工具

方法

  1. 常见网络安全风险
  2. OWASP TOP 10 安全风险
  3. 网上公开漏洞库
  4. 网上公开漏洞信息
  5. 网上公开漏洞验证Poc
  6. More...

工具

  • Kali
  • Xray
  • Awvs
  • Nmap
  • Nessus
  • AppScan
  • OWASP-ZAP
  • More...

常用网站

  • Shodan
  • ZoomEy
  • exploit-db
  • 傻蛋联网设备搜索
  • More...

0x05 漏洞利用

漏洞利用exploitation获得系统控制权限,优先考虑能直接获取管理员权限。漏洞利用就是执行一次`漏洞攻击`的过程,而漏洞攻击程序是利用漏洞(vulnerability)实施攻击的一种具体体现。

常用工具

方法

  1. 精准攻击:准备好上一步探测到的漏洞exp(漏洞利用),用来精准攻击
  2. 绕过防御机制:是否有防火墙等设备,如何绕过
  3. 定制攻击路径:最佳工具路径,根据薄弱入口,高内网权限位置,最终目标
  4. 绕过检测机制:是否有检测机制,流量监控,杀毒软件,恶意代码检测等(免杀)
  5. 攻击代码:经过试验得来的代码,包括不限于xss代码,sql注入语句等
  6. More...

工具

  • Kali
  • John
  • Hydra
  • Nmap
  • Medusa
  • Metasploit
  • Cobalt Strike
  • More...

常用网站

  • Shodan
  • ZoomEy
  • exploit-db
  • 傻蛋联网设备搜索
  • More...

0x06 权限提升

常见的提权方式

  1. 数据库提权
  2. 操作系统提权
  3. 内核漏洞提权
  4. 第三方软件提权
  5. 系统配置不当提权
  6. More...

常用工具

方法

  1. 服务提权
  2. SUID提权
  3. 直接提权过UAC
  4. 劫持高权限程序
  5. 定时任务计划提权
  6. Linux内核溢出提权
  7. 劫持系统的DLL文件
  8. 服务路径权限可控提权
  9. Windows内核漏洞提权
  10. 系统服务的错误权限配置漏洞
  11. 远程注入Shellcode到傀儡进程
  12. More...

工具

  • NC
  • LCX
  • Kali
  • John
  • Hydra
  • Nmap
  • wesng
  • BeRoot
  • UACME
  • Medusa
  • sdclt.exe
  • PowerUP
  • Yamabiko
  • ElevateKit
  • cmstp.exe
  • Metasploit
  • wscript.exe
  • Bypass-UAC
  • Cobalt Strike
  • eventvwr.exe
  • SilentCleanup
  • WinSystemHelper
  • linux-kernel-exploits
  • windows-kernel-exploits
  • Windows-Exploit-Suggester
  • More...

常用网站

  • Github
  • exploit-db
  • More...

0x07 内网渗透

内网渗透的环境可以分为两种:域环境和非域环境。

  • 域环境:将网络中多台计算机逻辑上组织到一起,进行集中管理,这种区别于工作组的逻辑环境叫做域,域是组织与存储资源的核心管理单元,在域中,至少有一台域控制器,域控制器中保存着整个域的用户帐号和安全数据库。
  • 非域环境:在拿到一台服务器的时候,拿下内网更多的服务器,更有用的信息。`根据客户需求`是否进行扩大渗透!

常用工具

方法

  1. ARP欺骗
  2. 内网探测
  3. 密码破解
  4. 网络设备漏洞
  5. 域用户hash提取
  6. More...

工具

  • NC
  • LCX
  • Kali
  • John
  • Hydra
  • Nmap
  • Nessus
  • pwdump
  • mimikatz
  • Metasploit
  • Cobalt Strike
  • More...

0x08 痕迹清理

渗透测试的目的是模拟黑客攻击来发现系统的漏洞和脆弱之处。而这里提到的完成测试后清理痕迹已经有点像是入侵的范畴了。一般只有在一些`实战攻防演习`中需要使用,想完全清除痕迹是比较困难的,所以一般都以伪装为主,代理IP、虚拟机、跳板等方式。根据客户需求是否需要清除痕迹。

  1. 日志清理
  2. Webshell
  3. 一句话木马
  4. 登陆记录清理
  5. 提权脚本或程序
  6. More...

常用工具

方法

  • 获得日志信息
  • 导出日志文件
  • 日志文件覆盖
  • 3389登陆记录清除
  • 破坏Windows日志记录功能(攻防比赛中使用)
  • More...

工具

  • Metasploit
  • Invoke-Phant0m
  • Windwos-EventLog-Bypass
  • More...

0x09 撰写报告

报告内容在于精简。针对本次渗透测试中发现的安全问题,在整个渗透过程中发现了那些漏洞,有什么危害,使用了什么方法、工具等,利用过程多截图。

报告规范

  1. 概述(渗透测试范围、渗透测试主要内容)
  2. 脆弱性分析方法
  3. 渗透测试过程描述
  4. 分析结果与建议
  5. More...

信息整理

渗透过程中收集到的一切信息

渗透工具

渗透过程中用到的代码、POC,EXP等

漏洞信息

渗透过程中遇到的各种漏洞,各种脆弱位置信息

客户需求

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

分析总结

要对漏洞成因,验证过程和带来危害进行分析

安全建议

当然要对所有产生的问题提出合理高效安全的解决办法

0x10 流程总结

0 人点赞