9.1 渗透测试过程

  1. 前期交互阶段:渗透测试团队与客户组织沟通,确定测试范围、目标、限制条件及服务合同细节,涉及收集客户需求、准备测试计划等活动 。

  2. 情报搜集阶段:确定目标范围后,利用公开来源信息查询、Google Hacking、社会工程学等方法,获取目标组织网络拓扑、系统配置与安全防御措施等信息。信息收集分主动(与目标直接交互,但目标可能记录IP及活动)和被动(利用网上海量信息,目标不知晓),社会工程学是重要技巧,如伪装身份套取信息、遗留含执行程序的优盘等 。

  3. 威胁建模阶段:搜集情报信息后,团队针对信息进行威胁建模与攻击规划,对目标有清晰认识,包括组织架构和内部技术部署 。

  4. 漏洞分析阶段:确定可行攻击通道后,分析前期情报信息,结合安全漏洞扫描结果等,搜索渗透代码资源,找出攻击点,在实验环境验证,挖掘未知安全漏洞并开发渗透代码 。

  5. 渗透攻击阶段:利用找出的安全漏洞,获取系统访问控制权。可利用公开渗透代码,还需结合目标系统特性定制攻击,考虑并挫败安全防御措施,在黑盒测试中注意逃避目标检测机制 。

  6. 后渗透攻击阶段:体现团队创造力与技术能力,根据目标组织业务模式等,自主设计攻击目标,识别关键基础设施,寻找可利用信息和资产,达成对客户组织有重要影响的攻击 。

  7. 报告阶段:向客户组织提交报告,包含关键情报信息、系统安全漏洞、渗透攻击过程、业务影响及攻击途径等,从防御者角度分析安全防御体系薄弱环节并提出方案 。

9.2 渗透测试框架

9.2.1 认识Metasploit

Metasploit:开源渗透测试框架软件

  1. 情报搜集阶段:通过插件机制集成调用Nmap、Nessus、OpenVAS等开源网络扫描工具

  2. 威胁建模阶段:支持一系列数据库命令操作直接将信息汇总到数据库中

  3. 漏洞分析阶段:提供了大量的协议Fuzz测试器与Web应用漏洞探测分析模块,支持具有一定水平能力的渗透测试者 在实际过程中尝试挖掘出“0Day”漏洞,并对漏洞机理与利用方法进行深入分析,

  4. 后渗透攻击阶段:Meterpreter 可以看做一个支持多操作系统平台,可以仅仅驻留于内存中并具备免杀能 力的高级后门工具,Meterpreter 中实现了特权提升、信息攫取、系统监控、跳板攻击与内 网拓展等多样化的功能特性,报告生成阶段

  5. 报告生成阶段:该框架将获得的渗透测试结果可以输入至内置数据库中。结果可以通过数据库查询来获取

9.2.2常用命令
  1. msf>back

    • 功能:跳出当前模块,也可直接转换到其他模块 。

  2. msf> show exploits

    • 功能:显示Metasploit框架中所有可用的渗透攻击模块,exploits分为主动型(直接连接并攻击特定主机)和被动型(等待主机连接后攻击) 。

  3. msf> search

    • 功能:基于正则查询,查找特定的渗透攻击、辅助或攻击载荷模块,如输入search mssql可搜索与SQL有关模块 。

  4. msf> show auxiliary

    • 功能:显示所有的辅助模块及其用途,辅助模块用途广泛,如作为扫描器、拒绝服务攻击工具、Fuzz测试器等 。

  5. msf> show options

    • 功能:选择模块后,列出该模块所需各种参数;未选模块时,显示所有全局参数

  6. msf> show payloads

    • 功能:显示与当前模块对应的攻击载荷,攻击载荷是针对特定平台的攻击代码,通过网络传至攻击目标执行 。

  7. msf> use

    • 功能:加载找到的攻击模块或payloads,加载后可输入show options显示该模块所需参数 。

  8. msf> show targets

    • 功能:列出Metasploit渗透攻击模块可影响的目标系统类型,不同攻击模块对目标系统的版本、补丁级别等有特定要求 。

  9. msf>info

    • 功能:显示模块详细信息、参数说明及所有可用的目标操作系统,在使用模块前查看相关信息有帮助 。

  10. msf>setunset

    • set功能:针对某个参数进行设置并启动该参数 。

    • unset功能:禁用相关参数 ,模块中参数有已设置和未设置两种状态,必填项需手工设置并启动 。

  11. msf> check

    • 功能:检测目标主机是否存在指定漏洞,避免直接溢出操作,但目前支持该命令的exploit数量有限 。

9.3 信息收集

9.3.1 被动信息收集
  1. 搜索引擎查询:

    • site指令:只显示来自某个目标域名的相关搜索结果

    • intitle指令:只有网页标题包含所搜索的关键字的时候,才会显示在搜索结果里

    • inurl指令:在URL中查看是否包含指定的关键字

    • :inurl:id= site:nankai.edu.cn

  2. IP查询:查询域名对应的IP地址,

    • 有可能使用CDN(内容分发网络):采用各种缓存服务器,将缓存服务器分布到用户访问相对集中的地区或网络中

    • 去掉 www 重新ping

  3. whois信息收集

    • 在线工具等

  4. NDS信息收集:host -t ns xxx.com查询DNS服务器

  5. 旁站查询:IP:%123.123.123.123 格式搜索存在于目标ip上的站点

9.3.2 主动信息收集
1. Nmap
  1. 发现主机:nmap -sP 192.168.1.0/24

  2. 端口扫描:-p参数指定扫描目标主机的端口范围

  3. 指纹探测:-O参数,对目标主机的系统以及版本做探测

Nmap -sS -sV - O xxx.xxx.xxx.xxx

  • -sS参数的作用是SYN扫描,

  • -sV的作用是探测详细的服务版本信息,

  • -O是探测系 统指纹。效果如下图:

2. Maltego

Maltego 是一个开源的取证工具。它可以挖掘和收集信息。Maltego是一个图形界面,可 以得到目标的网络拓扑及相关的各类信息,

3. WEB指纹探测

4. Web敏感目录扫描

dirb是web目录扫描工具

5. webscarab强大的web爬行工具

9.4 扫描

Nessuse

9.5 漏洞利用

发现目标机存在MS08-067的漏洞,接下来通过msfconsole中的search命令查找该漏洞 的渗透攻击模块:

9.6 后渗透攻击

9.6.1 挖掘用户名和密码

微软Windows系统存储哈希值的方式一般为LAN Manger(LM)、NT LAN Manger(NTLM),或 NT LAN Manger v2(NTLMv2)。

  • 在LM存储方式中,当用户首次输入密码或更新密码的时候,密码被转换为哈希值。由于哈希长度的限制,将密码分为7个字符一组的哈希值。

  • 以password123456的密码为例,哈希 值以passwor和d123456的方式存储,所以攻击者只需要简单地破解7个字符一组的密码, 而不是原始的14个字符。

  • 而NTLM的存储方式跟密码长度无关,密码password123456将作为 整体转换为哈希值存储。

  • 我们可以通过Meterpreter中的hashdump模块来提取系统的用户名和密码哈希值。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐