🌀 鱼油のB10g

✦ 不定期更新技术随想

✦ 分享奇妙发现

📌 近期动态:

探索AI和工具使用...

第5章 第43课

SpiderFoot实战指南:校园网络空间的"全息雷达"


一、SpiderFoot简介:情报侦察的"瑞士军刀"

作为参与过多次校园网络安全演练的学长,第一次用SpiderFoot的感受是:终于不用在20个标签页间反复横跳了。它就像网络空间的"全息投影仪",把碎片信息拼成完整图谱。

# 核心能力图解
class SpiderFoot:
def __init__(self):
self.data_types = [# 支持收集的12类情报
"IP地址",# 如202.119.32.6
"子域名",# dev.xx.edu.cn
"邮箱地址",# admin@xx.edu.cn
"社交媒体账号",# 关联的微博/GitHub
"文件哈希",# 泄露的数据库MD5
"比特币地址"# 勒索软件支付地址
]

def campus_use_case(self):# 校园场景
return "实验室服务器暴露分析 → 关联管理员邮箱 → 发现弱密码线索"

校园场景实战

学生会网站被篡改 → 用SpiderFoot扫描域名 →
发现测试子域(test.stu.xx.edu.cn)→
关联运维学生GitHub → 找到硬编码的FTP密码


二、部署指南:学生党极简方案

1. Windows/Mac一键部署(适合课程设计)
# 最快启动方案(Python3.8+)
pip install spiderfoot# 核心库安装
spiderfoot -l 127.0.0.1:5001# 启动Web服务

# 浏览器访问 http://localhost:5001
2. Kali Linux深度集成(安全专业推荐)
# Kali已预装,强化配置
sudo spiderfoot --upgrade# 更新模块
spiderfoot -l 0.0.0.0:5001 -u admin -p Safepass!# 启用认证
3. Docker跨平台方案(避免环境冲突)
# 宿舍电脑/WSL通用
docker run -p 5001:5001 spiderfoot/spiderfoot

# 持久化存储扫描结果
docker run -v /path/to/results:/spiderfoot/output -p 5001:5001 spiderfoot/spiderfoot

三、实战演示:校园官网安全评估

步骤1:新建扫描任务
# Web界面操作流程:
1. 目标输入框: www.xx.edu.cn
2. 扫描类型: "被动扫描" (避免触发WAF)
3. 模块选择:
- sfp_dns# 子域名挖掘
- sfp_emails# 邮箱收集
- sfp_httpheaders# HTTP头分析
- sfp_webanalytics# 分析工具检测
4. 高级选项:
- 递归深度: 3 (防止无限延伸)
- 超时时间: 30秒
步骤2:关键情报分析

发现1:历史子域名泄露

| 子域名| 状态| 风险等级 |
|---------------------|--------|----------|
| dev.xx.edu.cn| 200| 高危| → 暴露开发环境
| test.xx.edu.cn| 401| 中危| → 未授权访问
| legacy.xx.edu.cn| 404| 低危| → 可用于钓鱼

发现2:管理员邮箱关联

# 通过WHOIS和GitHub关联
emails = [
"admin@xx.edu.cn",# 官网联系邮箱
"wang_ming@xx.edu.cn",# WHOIS注册邮箱
"wm_dev@github.com"# GitHub账号
]

# 密码泄露检查(整合HaveIBeenPwned)
if check_breach("wang_ming@xx.edu.cn"):
alert("该邮箱密码已泄露!")

发现3:第三方追踪风险

// 检测到网站埋点
{
"Google Analytics": "UA-12345678",
"Baidu Tongji": "a1b2c3d4e5",
"风险": "第三方JS可能引入供应链攻击"
}
步骤3:生成行动建议
1. [紧急] 下线dev.xx.edu.cn开发环境
2. [高危] 重置wang_ming@xx.edu.cn所有密码
3. [中危] 审查百度统计代码安全性
4. [预防] 监控legacy.xx.edu.cn域名解析

四、进阶技巧:毕业设计的神助攻

案例1:企业供应链分析(论文数据收集)
# 扫描某电商公司
target = "www.eshop.com"
modules = [
"sfp_dns",
"sfp_related_domains",# 关联域名
"sfp_s3_buckets"# AWS存储桶检测
]

# 关键发现:
related_companies = [
"logistics.eshop.com",# 物流子公司
"pay.eshop.com"# 支付服务
]

# 风险点:
open_bucket = "s3://eshop-backup/config.db"# 公开数据库备份!
案例2:0day漏洞影响范围测算
# 检测Spring框架漏洞(CVE-2022-22965)
target = "org:东南大学"# 扫描全校系统
modules = ["sfp_httpheaders"]

# 筛选逻辑
vuln_systems = []
for system in scan_results:
if "X-Powered-By: Spring" in system.headers:
if version < "5.3.17":
vuln_systems.append(system.ip)

print(f"受漏洞影响系统: {len(vuln_systems)}台")
案例3:钓鱼攻击溯源
# 分析钓鱼邮件发件IP
target = "202.96.128.86"# 恶意IP
modules = [
"sfp_reverseip",# 反查域名
"sfp_geoip",# 地理位置
"sfp_threatminer"# 威胁情报
]

# 关联输出:
domains = ["phishing-site.com"]
location = "越南胡志明市"
threat_score = 92/100# 高危

五、避坑指南:学生党常见问题

1. 扫描被拦截解决方案
# 配置文件 ~/.spiderfoot/config.ini
[global]
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"# 伪装浏览器
proxy = http://127.0.0.1:8080# 配合BurpSuite调试
delay = 5# 请求延迟(秒)
2. 模块选择黄金法则
graph LR A[目标类型] --> B{选择模块} B -->|域名| C[sfp_dns+sfp_whois] B -->|IP地址| D[sfp_geoip+sfp_reverseip] B -->|邮箱| E[sfp_emails+sfp_breach]
3. 结果分析四步法
1. 资产发现 → 子域名/IP/云资源
2. 人员关联 → 邮箱/社交账号
3. 技术风险 → 框架/服务/配置
4. 威胁情报 → 泄露/黑名单/历史攻击

六、职场衔接:安全工程师工作流

典型日常工作
def security_analyst_day():
morning = [
"检查SpiderFoot监控告警",
"验证新暴露的S3存储桶"
]
afternoon = [
"编写API扫描脚本",
"生成客户资产报告"
]
return morning + afternoon
企业级集成方案
# 自动化巡检脚本
from spiderfoot import SpiderFoot

sf = SpiderFoot(api_key="YOUR_KEY")
scan_id = sf.scan_create(
targets=["client.com"],
modules=["sfp_dns", "sfp_ssl"]
)

# 每天18点获取报告
schedule.every().day.at("18:00").do(
lambda: sf.report_generate(scan_id, format="pdf")
)

随课资源包(公众号回复 校园情报包 获取):

  • 教育机构专用扫描模板
  • 高校域名白名单
  • 毕业论文数据采集脚本

记住:真正的网络安全不是攻击,而是先于攻击者发现问题 —— 这才是情报工作的真谛 (•̀ω•́)✧

posted on 2025-08-04 13:45  鱼油YOU  阅读(36)  评论(0)    收藏  举报