利用Splunk 完成渗透测试前期的情报分析
字数 1239 2025-08-29 08:32:18

Splunk在渗透测试情报分析中的应用

1. Splunk简介与优势

Splunk是一款强大的日志分析平台,在渗透测试前期情报收集中相比传统工具具有显著优势:

  • 易用性:通过Web UI直接上传CSV文件,无需预先配置数据格式
  • 高效性:相比grep等传统工具,搜索速度快13倍以上
  • 可视化:内置丰富的数据可视化功能
  • 扩展性:支持大规模数据处理和分析

与ELK相比,Splunk更适合"快餐式"PoC环境,能够快速实现数据的可视化和搜索。

2. 安装与配置

2.1 系统要求

  • 推荐配置:20GB RAM + 300GB SSD
  • 最低配置:较低内存也可运行

2.2 安装步骤

  1. 访问Splunk官网下载对应操作系统的安装包
  2. 使用开发者许可证(6个月试用期)
  3. 完成基本配置

3. 数据导入方法

3.1 小文件上传

  • 通过Web UI直接上传小于500MB的文件
  • 支持格式:CSV、JSON等

3.2 大文件导入

使用命令行工具导入大文件:

splunk add oneshot sonar.json.gz

4. 渗透测试情报分析应用

4.1 域名情报分析

4.1.1 查找特定CDN域名

value = "*.cloudfront.net"

执行时间:47.63秒(比grep快13倍)

4.1.2 获取子域名

  • 基本查询:name = "*.example.com"
  • 统计共享主机的域名:
    name = "*.example.com" | stats values(name) by value
    

4.1.3 地理位置分析

name = "*.uber.com" | stats values(name) by value | iplocation value | geostats count by City

4.1.4 按国家过滤

name = "*.uber.com" | stats values(name) by value | iplocation value | search Country = "United States"

4.2 密码泄露数据分析

4.2.1 数据准备

  1. 使用LeakBase BreachCompilation数据
  2. 转换为CSV格式后导入:
    splunk add oneshot input.csv -index passwords -sourcetype csv -hostname passwords -auth "admin:changeme"
    

4.2.2 常用密码分析

index = passwords | stats count by password | sort 100 -count

4.2.3 模糊匹配

index = passwords | table password | fuzzy wordlist="password" type="simple" compare_field="password" output_prefix="fuzz" | where fuzzmax_match_ratio >= 67 | stats count by password | sort 100 -count

4.2.4 特定域名密码查询

index = passwords [ inputlookup uber.csv ] | table email, password

4.3 员工OSINT分析

4.3.1 基本查询

  • 按姓名搜索:index = employees | search "FirstName=John" "LastName=Doe"
  • 按职位统计:
    index = employees | stats count by JobTitle
    

4.3.2 角色分布分析

index = employees | stats count by Role | sort -count

4.3.3 结合密码数据

index = passwords [ search index = employees | eval email = $Email$ | table email ]

4.4 Nmap扫描分析

4.4.1 数据导入

上传.gnmap文件,时间戳设置为none

4.4.2 解析查询

source = "uber.gnmap" host = "uber" sourcetype = "Uber" Host Ports 
| rex field = _raw max_match = 50 "Host:\s(?<dest_ip>\S+)" 
| rex field = _raw max_match = 50 "[Ports:|,]\s?(?<port>\d+)\/+(?<status>\w+)\/+(?<proto>\w+)\/+(?<desc>\w+|\/)" 
| rex field = _raw "OS:\s(?<os>\w+)" 
| eval os = if(isnull(os), "unknown", os) 
| eval mv = mvzip(port, status) 
| eval mv = mvzip(mv, proto) 
| eval mv = mvzip(mv, desc) 
| mvexpand mv 
| makemv mv delim = "," 
| eval ports = mvindex(mv, 0) 
| eval status = mvindex(mv, 1) 
| eval proto = mvindex(mv, 2) 
| eval desc = if(mvindex(mv, 3) == "/", "null", mvindex(mv,3)) 
| table dest_ip ports status proto desc os 
| sort dest_ip

4.4.3 特定端口地理位置分析

source = "uber.gnmap" host = "uber" sourcetype = "Uber" Host Ports 
| rex field = _raw max_match = 50 "Host:\s(?<dest_ip>\S+)" 
| rex field = _raw max_match = 50 "[Ports:|,]\s?(?<port>\d+)\/+(?<status>\w+)\/+(?<proto>\w+)\/+(?<desc>\w+|\/)" 
| rex field = _raw "OS:\s(?<os>\w+)" 
| eval os = if(isnull(os), "unknown", os) 
| eval mv = mvzip(port, status) 
| eval mv = mvzip(mv, proto) 
| eval mv = mvzip(mv, desc) 
| mvexpand mv 
| makemv mv delim = "," 
| eval ports = mvindex(mv, 0) 
| eval status = mvindex(mv, 1) 
| eval proto = mvindex(mv, 2) 
| eval desc = if(mvindex(mv, 3) == "/", "null", mvindex(mv,3)) 
| table dest_ip ports status proto desc os 
| sort dest_ip 
| table dest_ip,ports 
| search ports = 443 
| iplocation dest_ip 
| geostats count by City

5. 工具整合

5.1 与DomLink整合

  1. 运行DomLink工具生成域名列表
  2. 处理输出文件格式:
    name = *.example1.com
    name = *.example2.com
    
  3. 保存到Splunk查找目录:C:\Program Files\Splunk\etc\system\lookups\Book1.csv
  4. 执行查询:
    index = main [ inputlookup Book1.csv ] | table name
    

6. 最佳实践

  1. 数据分类:为不同类型数据创建不同索引(如passwords、employees等)
  2. 定期更新:保持数据新鲜度,特别是密码泄露数据
  3. 查询优化:使用stats、eval等命令优化复杂查询
  4. 结果导出:将分析结果导出为CSV供其他工具使用
  5. 自动化:对重复性任务创建保存的搜索和报表

7. 总结

Splunk在渗透测试情报分析中提供了强大的数据处理和分析能力,能够显著提高工作效率。通过合理利用其搜索、统计和可视化功能,可以快速获取有价值的目标情报,为后续渗透测试活动提供有力支持。

Splunk在渗透测试情报分析中的应用 1. Splunk简介与优势 Splunk是一款强大的日志分析平台,在渗透测试前期情报收集中相比传统工具具有显著优势: 易用性 :通过Web UI直接上传CSV文件,无需预先配置数据格式 高效性 :相比grep等传统工具,搜索速度快13倍以上 可视化 :内置丰富的数据可视化功能 扩展性 :支持大规模数据处理和分析 与ELK相比,Splunk更适合"快餐式"PoC环境,能够快速实现数据的可视化和搜索。 2. 安装与配置 2.1 系统要求 推荐配置:20GB RAM + 300GB SSD 最低配置:较低内存也可运行 2.2 安装步骤 访问Splunk官网下载对应操作系统的安装包 使用开发者许可证(6个月试用期) 完成基本配置 3. 数据导入方法 3.1 小文件上传 通过Web UI直接上传小于500MB的文件 支持格式:CSV、JSON等 3.2 大文件导入 使用命令行工具导入大文件: 4. 渗透测试情报分析应用 4.1 域名情报分析 4.1.1 查找特定CDN域名 执行时间:47.63秒(比grep快13倍) 4.1.2 获取子域名 基本查询: name = "*.example.com" 统计共享主机的域名: 4.1.3 地理位置分析 4.1.4 按国家过滤 4.2 密码泄露数据分析 4.2.1 数据准备 使用LeakBase BreachCompilation数据 转换为CSV格式后导入: 4.2.2 常用密码分析 4.2.3 模糊匹配 4.2.4 特定域名密码查询 4.3 员工OSINT分析 4.3.1 基本查询 按姓名搜索: index = employees | search "FirstName=John" "LastName=Doe" 按职位统计: 4.3.2 角色分布分析 4.3.3 结合密码数据 4.4 Nmap扫描分析 4.4.1 数据导入 上传.gnmap文件,时间戳设置为none 4.4.2 解析查询 4.4.3 特定端口地理位置分析 5. 工具整合 5.1 与DomLink整合 运行DomLink工具生成域名列表 处理输出文件格式: 保存到Splunk查找目录: C:\Program Files\Splunk\etc\system\lookups\Book1.csv 执行查询: 6. 最佳实践 数据分类 :为不同类型数据创建不同索引(如passwords、employees等) 定期更新 :保持数据新鲜度,特别是密码泄露数据 查询优化 :使用stats、eval等命令优化复杂查询 结果导出 :将分析结果导出为CSV供其他工具使用 自动化 :对重复性任务创建保存的搜索和报表 7. 总结 Splunk在渗透测试情报分析中提供了强大的数据处理和分析能力,能够显著提高工作效率。通过合理利用其搜索、统计和可视化功能,可以快速获取有价值的目标情报,为后续渗透测试活动提供有力支持。