渗透测试,是为了证明网络防御按照预期计划正常运行而提供的一种机制。不妨假设,你的公司定期更新安全策略和程序,时时给系统打补丁,并采用了漏洞扫描器等工具,以确保所有补丁都已打上。如果你早已做到了这些,为什么还要请外方进行审查或渗透测试呢?因为,渗透测试能够独立地检查你的网络策略,换句话说,就是给你的系统安了一双眼睛。而且,进行这类测试的,都是寻找网络系统安全漏洞的专业人士。 渗透测试就是利用我们所掌握的渗透知识,对网站进行一步一步的渗透,发现其中存在的漏洞和隐藏的风险,然后撰写一篇测试报告,提供给我们的客户。客户根据我们撰写的测试报告,对网站进行漏洞修补,以防止黑客的入侵! 渗透测试的前提是我们得经过用户的授权,才可以对网站进行渗透。如果我们没有经过客户的授权而对一个网站进行渗透测试的话,这是违法的。
渗透测试基本流程
- 明确目标
- 信息收集
- 漏洞挖掘
- 漏洞利用
- 权限提升
- 内网渗透
- 痕迹清理
- 撰写报告
渗透测试分为黑盒测试和白盒测试
黑盒测试又被称为所谓的“Zero-Knowledge Testing”,渗透者完全处于对系统一无所知的状态,或者只知道这个网站的URL。通常这类型测试,最初的信息获取来自于DNS、Web、Email及各种公开对外的服务器。 白盒测试与黑箱测试恰恰相反,测试者可以通过正常渠道向被测单位取得各种资料,包括网络拓扑、员工资料甚至网站或其它程序的代码片段,也能够与单位的其它员工(销售、程序员、管理者...)进行面对面的沟通。这类测试的目的是模拟企业内部雇员的越权操作。
0x01 明确目标
授权许可
从客户或该公司获取书面渗透测试委托授权书
确定范围
测试目标的范围、ip、域名、内外网、整站或部分模块、测试账户等
确定规则
- 使用代理IP还是IP访问白名单、能渗透到什么程度(发现漏洞为止还是继续扩大范围挖掘尽可能多的风险),时间限制、能否修改上传、能否提权等。
- 目标系统介绍、重点保护对象及特性。
- 是否允许数据破坏?
- 是否允许阻断业务正常运行?
- 测试之前是否应当知会相关部门负责人?
- 接入方式?外网和内网?
- 测试是发现问题就算成功,还是尽可能的发现多的问题?
- 渗透过程是否需要考虑社会工程?
- More...
确定需求
应用系统渗透、数据库系统渗透、主机操作系统渗透、网络设备渗透等
0x02 信息收集
信息收集的方式可以分为两种:主动和被动。
- 主动信息收集:通过直接访问、扫描网站,这种流量将流经网站
- 被动信息收集:利用第三方的服务对目标进行访问了解,比例:Google hack搜索、Shodan搜索等
基础信息
- Whois信息(域名所有人、域名注册商、邮箱、联系方式、Whois反查)
- 域名对应IP(多地Ping判断是否存在CDN,获取服务器真实IP)
- 旁站(同一服务器下其他网站)
- C段(同一网段其他服务器)
- 子域名(顶级域名下的域名,如:www.example.com是顶级域名example.com的子域名)
- DNS(大型网络的企业,一般都有自己的DNS服务器)
- More...
常用工具
方法
- Google语法查询
- 基于SSL证书查询
- More...
工具
- Dig
- Nmap
- Masscan
- Nslookup
- subDomainsBrute
- Layer子域名挖掘机
- More...
常用网站
- 爱站网
- DNSdb
- Shodan
- ZoomEy
- 微步在线
- 千寻查询工具
- 傻蛋联网设备搜索
- 站长工具-站长之家
- Certificate Search
- More...
整站分析
- 服务器类型(类Unix/Windows)
- 网站容器(Apache/Nginx/Tomcat/IIS等)
- 脚本类型(PHP/JSP/ASP/ASPX等)
- 数据库类型(Mysql/Oracle/Accees/Mqlserver等)
- CMS系统(查询已知漏洞从而进一步攻击)
- 开放端口(扫描开放端口、端口对应服务等)
- 敏感信息(代码、目录、路径、文件等)
- More...
常用工具
方法
- Google语法查询
- Ping探测(通过TTL值判断服务器类型)
- Response Headers(响应headers)
- 代码托管平台(Github、Gitee等)
- More...
工具
- Dig
- Nmap
- Masscan
- Nslookup
- subDomainsBrute
- Layer子域名挖掘机
- More...
常用网站
- Nmap
- Nessus
- cansina
- Masscan
- DirBuster
- Whatweb
- wwwscan
- Wappalyzer
- More...
0x03 漏洞挖掘
漏洞挖掘的方式可以分为两种:手动和自动。
- 手动漏洞挖掘:通过手工挖掘SQL注入、XSS跨站脚本攻击、代码执行、命令执行、文件上传、文件包含、越权访问等常见漏洞。
- 自动漏洞挖掘:就是直接使用网站漏洞扫描工具对网站进行漏洞探测了。但是需要注意的是,使用漏扫工具直接对网站进行扫描,因为一下子流量过大,有些网站可能会崩溃。所以一般最好不要使用漏洞扫描工具对网站进行扫描。并且如果未经授权就用漏扫对网站进行扫描还是违法的!
0x04 漏洞验证
将发现的漏洞都验证一遍。结合实际情况,搭建模拟环境进行试验。成功后再应用于目标中。
- 自动化验证:结合网站漏洞扫描工具提供的结果。
- 手工验证:根据网上公开资源进行验证。
- 试验验证:自己搭建模拟环境进行验证。
- 登陆猜解:有时可以尝试猜解登陆的账号密码等信息。
- 业务安全漏洞验证:如发现业务安全漏洞,要进行验证。
- More...
常用工具
方法
- 常见网络安全风险
- OWASP TOP 10 安全风险
- 网上公开漏洞库
- 网上公开漏洞信息
- 网上公开漏洞验证Poc
- More...
工具
- Kali
- Xray
- Awvs
- Nmap
- Nessus
- AppScan
- OWASP-ZAP
- More...
常用网站
- Shodan
- ZoomEy
- exploit-db
- 傻蛋联网设备搜索
- More...
0x05 漏洞利用
漏洞利用exploitation获得系统控制权限,优先考虑能直接获取管理员权限。漏洞利用就是执行一次`漏洞攻击`的过程,而漏洞攻击程序是利用漏洞(vulnerability)实施攻击的一种具体体现。
常用工具
方法
- 精准攻击:准备好上一步探测到的漏洞exp(漏洞利用),用来精准攻击
- 绕过防御机制:是否有防火墙等设备,如何绕过
- 定制攻击路径:最佳工具路径,根据薄弱入口,高内网权限位置,最终目标
- 绕过检测机制:是否有检测机制,流量监控,杀毒软件,恶意代码检测等(免杀)
- 攻击代码:经过试验得来的代码,包括不限于xss代码,sql注入语句等
- More...
工具
- Kali
- John
- Hydra
- Nmap
- Medusa
- Metasploit
- Cobalt Strike
- More...
常用网站
- Shodan
- ZoomEy
- exploit-db
- 傻蛋联网设备搜索
- More...
0x06 权限提升
常见的提权方式
- 数据库提权
- 操作系统提权
- 内核漏洞提权
- 第三方软件提权
- 系统配置不当提权
- More...
常用工具
方法
- 服务提权
- SUID提权
- 直接提权过UAC
- 劫持高权限程序
- 定时任务计划提权
- Linux内核溢出提权
- 劫持系统的DLL文件
- 服务路径权限可控提权
- Windows内核漏洞提权
- 系统服务的错误权限配置漏洞
- 远程注入Shellcode到傀儡进程
- 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 内网渗透
内网渗透的环境可以分为两种:域环境和非域环境。
- 域环境:将网络中多台计算机逻辑上组织到一起,进行集中管理,这种区别于工作组的逻辑环境叫做域,域是组织与存储资源的核心管理单元,在域中,至少有一台域控制器,域控制器中保存着整个域的用户帐号和安全数据库。
- 非域环境:在拿到一台服务器的时候,拿下内网更多的服务器,更有用的信息。`根据客户需求`是否进行扩大渗透!
常用工具
方法
- ARP欺骗
- 内网探测
- 密码破解
- 网络设备漏洞
- 域用户hash提取
- More...
工具
- NC
- LCX
- Kali
- John
- Hydra
- Nmap
- Nessus
- pwdump
- mimikatz
- Metasploit
- Cobalt Strike
- More...
0x08 痕迹清理
渗透测试的目的是模拟黑客攻击来发现系统的漏洞和脆弱之处。而这里提到的完成测试后清理痕迹已经有点像是入侵的范畴了。一般只有在一些`实战攻防演习`中需要使用,想完全清除痕迹是比较困难的,所以一般都以伪装为主,代理IP、虚拟机、跳板等方式。根据客户需求是否需要清除痕迹。
- 日志清理
- Webshell
- 一句话木马
- 登陆记录清理
- 提权脚本或程序
- More...
常用工具
方法
- 获得日志信息
- 导出日志文件
- 日志文件覆盖
- 3389登陆记录清除
- 破坏Windows日志记录功能(攻防比赛中使用)
- More...
工具
- Metasploit
- Invoke-Phant0m
- Windwos-EventLog-Bypass
- More...
0x09 撰写报告
报告内容在于精简。针对本次渗透测试中发现的安全问题,在整个渗透过程中发现了那些漏洞,有什么危害,使用了什么方法、工具等,利用过程多截图。
报告规范
- 概述(渗透测试范围、渗透测试主要内容)
- 脆弱性分析方法
- 渗透测试过程描述
- 分析结果与建议
- More...
信息整理
渗透过程中收集到的一切信息
渗透工具
渗透过程中用到的代码、POC,EXP等
漏洞信息
渗透过程中遇到的各种漏洞,各种脆弱位置信息
客户需求
按照之前第一步跟客户确定好的范围,需求来整理资料,并将资料形成报告
分析总结
要对漏洞成因,验证过程和带来危害进行分析
安全建议
当然要对所有产生的问题提出合理高效安全的解决办法
0x10 流程总结