渗透测试的定义:通过实际攻击进行安全测试与评估。
渗透测试分类:
黑盒测试(外部测试):设计模拟一个对客户组织一无所知的攻击者所进行的渗透攻击。优点:能更逼真地模拟一次真正的攻击过程;缺点:费时费力,渗透测试者需要具备较高的技术能力。
白盒测试(内部测试):渗透测试者拥有客户组织所有知识的情况下所进行的渗透攻击。优点:无须进行目标定位与情报搜集,能更早的消除掉一些可能存在的安全问题,比黑盒花费的代价小;缺点:无法有效地测试客户组织的应急响应程序,也无法判断出他们的安全防护计划对特定攻击的检测效率。
灰盒测试:白+黑的组合测试,可以提供对目标系统更加深入和全面的安全审查。
渗透测试方法体系:
安全测试方法学开源手册(OSSTMM)
NIST SP 800-42网络安全测试指南
OWASP十大Web应用安全威胁项目(OWASP Top Ten)
Web安全威胁分类标准(WASC-TC)
PTES渗透测试执行标准
渗透测试过程环节:
前期交互阶段:该阶段通常涉及收集客户需求、准备测试计划、定义测试范围与边界、定义业务目标、项目管理与规划等活动。
情报搜集阶段:在该阶段渗透测试团队可以利用各种信息来源与搜集技术方法,尝试获取更多关于目标组织的网络拓扑、系统配置与安全防御措施的信息。
威胁建模阶段:理清从情报搜集阶段获得的信息情报,确定出最可行(不一定成功)的攻击通道。
漏洞分析阶段:考虑如何取得目标系统的访问控制权。渗透测试者根据获得的漏洞扫描结果、服务查点信息等,通过搜索可获取的渗透代码资源,找出可以实施渗透攻击的攻击点,并在实验环境中验证。
渗透攻击阶段:利用找到的系统安全漏洞真正入侵到系统当中,获得访问控制权。
后渗透攻击阶段:最能体现渗透测试团队创造力与技术能力的环节。需要渗透测试团队根据目标组织的业务经营模式、保护资产形式与安全防御计划的不同特点,自主设计出攻击目标,识别关键基础设施,并寻找客户组织最具价值和尝试安全保护的信息和资产,最终达成能够对客户组织造成最重要业务影响的攻击途径。
报告阶段:向客户组织提供渗透测试报告,报告中包括所有阶段中渗透测试团队所获取的关键情报信息、探测和发掘出的系统安全漏洞、成功渗透攻击的过程,以及造成业务影响后果的攻击途径,同时还要站在防御者的角度上,帮助客户分析安全防御体系中的薄弱环节、存在的问题,以及修补与升级技术方案。
安全漏洞生命周期:
安全漏洞(0day)研究与挖掘
Exploit开发与测试
安全漏洞和Exploit代码在封闭团队中流转
安全漏洞和Exploit代码开始扩散
恶意程序出现并开始传播
Exploit/恶意程序大规模传播并危害互联网
Exploit/攻击工具/恶意程序逐渐消亡
安全漏洞纰漏方式:
完全公开披露:不管厂商直接完全公开漏洞技术细节
负责人的公开披露:先通知厂商,并提供一段合理的时间进行补丁开发与测试
进入地下经济链:安全漏洞交易,黑产
小范围利用直至被动披露:先在小范围内进行利用,直到影响扩大恶意代码被广泛利用。
安全漏洞公共资源库:
国内:
wooyun(凉凉)
……
国外:
OSVDB(停止运营)
……
Metasploit六大模块:
辅助模块(Aux)
渗透攻击模块(Exploits)
后渗透攻击模块(Post)
攻击载荷模块(Payloads)
空指令模块(Nops)
编码器模块(Encoders)
辅助模块:
主要用于支持信息搜集环节,帮助渗透测试者进行渗透攻击之前得到目标系统丰富的情报信息。包括针对各种网络服务的扫描与查点、构建虚假服务收集登录密码、口令猜测破解、敏感信息嗅探、探查敏感信息泄露、Fuzz测试漏洞挖掘、实施网络协议欺骗等模块。
渗透攻击模块:
是Metasploit框架中最核心的功能组件,是利用发现的安全漏洞或配置弱点对远程目标系统进行攻击,以植入和运行攻击载荷,从而获得对远程目标系统访问权的代码组件。可以按照所利用的安全漏洞所在的位置分为主动渗透攻击与被动渗透攻击两大类。
主动渗透攻击:通过连接目标系统网络服务,注入一些特殊构造的包含“邪恶”攻击数据的网络请求内容,触发安全漏洞,并使得远程服务进程执行在“邪恶”数据中包含的攻击载荷,从而获取目标系统的控制会话。(PS:类似屌丝主动追女神)
被动渗透攻击:利用客户端软件中的安全漏洞,构造出“邪恶”的网页、电子邮件或文档文件,并通过架设包含此类恶意内容的服务端、发送邮件附件、结合社会工程学攻击分发并诱骗目标用户打开、结合网络欺骗和劫持技术等方式,等目标系统上的用户访问到这些邪恶内容,从而触发客户端软件中的安全漏洞,给出控制目标系统的shell回话。(PS:类似高富帅等着美女倒贴)
攻击载荷模块
渗透攻击成功后促使目标系统运行的一段植入代码,通常作用是为渗透攻击者打开在目标系统上的控制会话连接。攻击载荷模块分为独立(Singles)攻击载荷、传输器(Stager)载荷、传输体(Stage)载荷三种类型。
独立攻击载荷:可以直接独立地植入目标系统进行执行。 Ex:window/shellbindtcp 将shell控制会话绑定在指定TCP端口上的攻击载荷。
传输器载荷&传输体载荷:目标系统对攻击载荷的大小、运行条件有限制,需要先植入代码精悍短小的传输器载荷,然后再运行传输器载荷进一步下载传输体载荷并执行。由传输器载荷进一步下载并执行的传输体载荷不受大小和安全防御机制的限制。(PS:《变3》中御天敌传送赛博坦的情形) Ex:window/shell/bindtcp bindtcp是传输器载荷,shell是传输体载荷
空指令模块
空指令(NOP):对程序运行状态不会造成任何实质影响的空操作或无关操作。 在渗透攻击构造邪恶数据缓冲区时,可能会遇到内存地址随机化、返回地址计算偏差等问题导致Shellcode执行失败。解决办法是在真正要执行的shellcode之前添加一段空指令区,当触发渗透攻击后跳转执行shellcode时,有一个较大的安全着陆区 空指令模块可以在攻击载荷中添加空指令区,提高攻击的可靠性。
编码器模块
确保攻击载荷中不会出现渗透攻击过程中不会出现“坏字符”,“坏字符”会导致特殊构造的邪恶数据缓冲区无法按照预期目标完全输入到存有漏洞的软件例程中,从而使得渗透攻击触发漏洞之后无法正确执行攻击载荷。
对攻击载荷进行“免杀”处理,通过不同形式的编码,避免载荷中有安全检测与防御机制能够识别的特征码。
后渗透攻击模块
在渗透攻击取得目标系统远程控制权之后,在受控系统中进行各式各样的后渗透攻击动作,比如获取敏感信息、进一步拓展、实时跳板攻击。
msfconsole使用(个人感觉这是最常用的)
启动msf终端:msfconsole
查看msf帮助:help [COMMAND]
搜索指定服务的渗透攻击模块:search samba
使用渗透攻击模块:use multi/samba/usermap_script
显示攻击载荷:show payloads
选择攻击载荷:set payload cmd/unix/bind_netcat
显示攻击载荷配置项:show options
设置目标地址:set RHOST xxx.xxx.xxx.xxx
执行攻击:exploit
总结
本章主要介绍了一些渗透测试相关理论知识和metasploit的基本架构和使用,至于metasploit的安装现在应该都是直接用kali了吧?
来源:freebuf.com 2020-10-12 21:45:33 by: 冰封耳语
请登录后发表评论
注册