关于企业的渗透测试流程
针对企业的网络服务
-
前期交互
Pre-Engagement Interaction 这个阶段的工作是指与客户交流渗透测试要求或是确定渗透测试的攻击范围,并制定渗透测试计划和对团队个人分配任务(完成一次企业级的渗透测试不是一两个人可以完成的,需要团队的支持) -
信息收集
Information Gathering
1.关于域名的信息收集
收集域名信息使用whois查看信息(利用云服务信息泄露,注册人信息)
测试是否存在域传送漏洞(dnsenum)
子域名爆破(dnsenum 、subdomain 、wydomain)寻找企业的二级域名
使用google hack
Github的信息泄露
2.端口扫描
使用工具:nmap
常见的端口对应的web服务
21端口:ftp服务(弱密码爆破,匿名登录)
23端口:Telnet服务()
25端口:SMTP邮件协议
53端口:DNS服务
67端口:Bootstrap Protocol Server 引导程序协议客户端
80端口:web服务
109端口:POP3服务器
137,138端口:作用是在局域网中提供计算机的名称或是IP查询,已知目标主机的IP地址,向地址发送一个连接137端口连接,可以获得目标主机的相关信息。
可以判断目标主机是否作为文件服务器或是主域控制器来使用
443端口:主要服务HTTPS服务(heartbleed心脏出血漏洞)openssl.py
1080端口:Socks代理服务
1433端口:Mssql服务(弱密码爆破)
1521端口:oracle服务
1775端口:MMS(Microsoft Media Server)
3128端口:squid服务(攻击者扫描这个端口是为了搜寻一个代理服务器而匿名访问Internet)
3306端口:mysql服务(弱密码爆破)
5554端口:蠕虫病毒(Worm.Sasser)利用端口开启一个ftp服务
6379端口:Redis服务(未授权访问,弱密码)
8080端口:web服务(tomcat,nginx)
9000端口:fpm服务
3.识别中间件
使用工具:namp,firebug,burp
现主流的操作系统、中间件、脚本解析语言、数据库
linux +apache +php+mysql
linux +nginx+php+mysql
linux+tomcat+jsp+mysql/oracle
win 2003 +ii6s +asp(x)+mssql2005
win + iis + php +mysql
win +apache + php +mysql
apache解析漏洞:例如一个文件名x1.x2.x3,Apache会从x3开始解析,直到能够解析为止
IIS解析漏洞:test.asp/任意文件名 | test.asp;任意文件名 | 任意文件名/任意文件名.php(属于php-cgi漏洞),会直接按照asp解析
Nginx解析漏洞:任意文件名/任意文件名.php(php-cgi漏洞) | 任意文件名%00.php
Tomcat:Tomcat Manager弱密码
JBoss:反序列化代码执行,管理界面弱密码
Weblogic:反序列化代码执行,SSRF漏洞,管理界面弱密码
Resin:任意文件读取漏洞
4.CMS漏洞
使用工具:google exploit.db
power by,后台,robots.txt识别
5.web漏洞,目录,后台(御剑)
使用工具:AWVS,APPSCAN
逻辑漏洞,文件包含,代码执行,XSS,CSRF,SQL注入等漏洞
6.脚本语言识别
使用工具:whatweb
通过后缀名 ,cms,报错信息
7.防火墙的使用情况
8.企业员工信息
使用工具:theharveter hydra
个人或企业邮箱:弱密码爆破,水坑攻击(利用浏览器漏洞,flash漏洞),鱼叉攻击(word,pdf,CHM漏洞),钓鱼攻击
个人联系方式
社会工程学
Github信息泄露
-
威胁建模
Threat Modeling
这是建立在充分的信息搜集之后的,团队进行威胁建模与攻击规划,从大量的信息中找出一个企业网站最薄弱的环节。实行最有效的攻击 -
漏洞分析阶段
Vulnerability Analysis
在该阶段,渗透测试者需要综合分析前几个阶段获取并汇总的情报信息,特别是安全漏洞扫描结果、服务查点信息等。
通过搜索可获取的渗透代码资源,找出可以实施渗透攻击的攻击点,并在实验环境中进行验证。
在该阶段,高水平的渗透测试团队还会针对攻击通道上的一些关键系统与服务进行安全漏洞探测与挖掘,期望找出可被利用的未知安全漏洞,并开发出渗透代码,从而打开攻击通道上的关键路径。 -
渗透测试攻击
Exploitation
这个阶段一般显示在本地实现环境,进行有效的测试,再到企业服务器上施展攻击。
渗透攻击可以利用公开渠道可获取的渗透代码,但一般在实际应用场景中,
渗透测试者还需要充分地考虑目标系统特性来定制渗透攻击,并需要挫败目标网络与系统中实施的安全防御措施,才能成功达成渗透目的。
在黑盒测试中,渗透测试者还需要考虑对目标系统检测机制的逃逸,从而避免造成目标组织安全响应团队的警觉和发现。 -
后渗透测试攻击
这一步建立在渗透侧是成功之后的,进行对服务器的提权,内网渗透,权限维持(留后门)
自主设计出攻击目标,识别关键基础设施,并寻找客户组织最具价值和尝试安全保护的信息和资产,
最终达成能够对客户组织造成最重要业务影响的攻击途径。 -
生成报告
Reporting
这份报告是所有阶段之中渗透测试团队所获取的关键情报信息、探测和发掘出的系统安全漏洞、成功渗透攻击的过程,
以及造成业务影响后果的攻击途径,同时还要站在防御者的角度上,帮助他们分析安全防御体系中的薄弱环节、存在的问题,以及修补与升级技术方案。
总结,在所有的测试流程中,信息搜集是最关键的,渗透测试是需要思路和基本功,后渗透测试时展现个人能力和思路的。