第5章 第36.2课
情报侦察实战指南:从校园安全到企业防御
二、情报侦察概述:像侦探一样思考
校园场景:假设你要参加网络安全竞赛,需要侦查对手学校服务器信息。
# 情报侦察伪代码框架
def intelligence_recon(target, mode):
if mode == "passive":# 被动侦察
data = search_public_sources(target)# 不触碰目标
elif mode == "active":# 主动侦察
data = scan_target_directly(target)# 可能触发报警
return analyze(data)
# 真实案例:
passive_data = get_from_baidu("site:xx.edu.cn filetype:pdf")# 搜索公开课表
active_data = port_scan("202.120.xx.xx")# 扫描开放端口(高风险!)
核心概念拆解:
- 被动侦察(推荐初学者)
- 动作:图书馆翻查学校年鉴/官网历史快照
- 获取:校园网IP段、旧系统截图
- 工具:
# Wayback Machine API获取历史页面
import waybackpy
url = "https://xx.edu.cn"
archive = waybackpy.Url(url).archive_url# 返回2019年页面快照
- 主动侦察(需授权)
- 动作:用Nmap扫描实验室内网
- 风险:触发IDS告警(可能被辅导员约谈)
- 合法替代方案:
# 仅扫描自己电脑
nmap -sV 127.0.0.1# 查看本地开放服务
- OSINT(黄金技能)
# 通过GitHub找学生泄露的代码
# 搜索语法:org:xx-university password
import requests
url = "https://api.github.com/search/code?q=org:xx-university+filename:config"
response = requests.get(url).json()
for item in response['items']:
print(item['repository']['full_name'])# 含敏感信息的仓库
三、情报侦察图解:网络空间的冰山
互联网 vs 深网 vs 暗网(以校园资源为例):
层级 | 校园映射 | 情报获取方式 |
---|---|---|
表层互联网 | 学校官网/公众号 | 百度搜索 site:xx.edu.cn |
深网 | 需要学号登录的教务系统 | 社会工程学(骗密码?✖) 合法途径:申请测试账号 |
暗网 | 学生私下交易的考题黑市 | Tor浏览器访问.onion站点 (法律风险高!) |
情报侦察 vs OSINT侦察:
graph LR
A[情报侦察] --> B[主动侦察]
A --> C[被动侦察]
C --> D[OSINT]# OSINT是被动侦察的子集
D --> E[公开渠道]
四、情报侦察阶段:攻防演练三步走
目标: 评估学校"智慧教室系统"安全性
阶段1:目标资产枚举
# 自动化资产发现(伪代码)
assets = []
# 方法1:DNS解析
subdomains = dns_brute("classroom.xx.edu.cn")# 爆破子域名:video.classroom、api.classroom...
# 方法2:证书透明日志
certs = crt_sh_search("xx.edu.cn")# 获取所有关联域名
assets.extend(subdomains + certs)
print(f"发现资产: {assets}")
# 输出:['video.xx.edu.cn', 'api-classroom.xx.edu.cn', 'dev-classroom.xx.edu.cn']
阶段2:资产属性关联
# 关联IP与运维信息
ip = dns_lookup("video.xx.edu.cn")# 解析IP → 202.119.xx.xx
whois_data = whois_query(ip)# 获取IP注册信息 → "某教育科技公司"
shodan_data = shodan_host(ip)# 获取端口 → 开放80(HTTP)/443(HTTPS)/3389(RDP?!)
# 关键发现:视频系统由第三方公司维护,且意外开放远程桌面端口
阶段3:攻击面分析
# 基于ATT&CK框架建模
attack_surface = {
"Web入口": {
"技术": ["SQL注入", "XSS"],
"证据": "使用Joomla CMS(已知漏洞CVE-2023-12345)"
},
"RDP服务": {
"技术": ["暴力破解", "凭证窃取"],
"证据": "3389端口暴露在公网"
}
}
# 生成威胁报告
generate_report(attack_surface, priority="高危")
五、威胁建模拓展:用STRIDE保卫校园系统
场景:为学生会投票系统设计安全方案
OCTAVE方法实践:
- 识别资产
critical_assets = ["投票数据库", "管理员后台","用户密码"]
- 评估威胁(STRIDE模型):
graph TD
S[Spoofing] --> |冒充学生投票| 身份认证薄弱
T[Tampering] --> |篡改票数| 数据库无校验
R[Repudiation] --> |抵赖操作| 缺乏操作日志
I[Information Disclosure] --> |泄露学号| 明文传输数据
D[Denial of Service] --> |刷票攻击| 无限投票漏洞
E[Elevation of Privilege] --> |普通学生变管理员| 权限控制缺失
- 制定对策:
countermeasures = {
"Spoofing": "双因素认证",
"Tampering": "数据库签名校验",
"Repudiation": "审计日志+区块链存证",
"Information Disclosure": "HTTPS+数据加密",
"Denial of Service": "IP限流+验证码",
"Elevation of Privilege": "RBAC权限模型"
}
六、情报侦察战术技术:ATT&CK实战
ATT&CK侦察阶段技术(校园场景映射):
技术ID | 战术 | 校园案例 | 防御建议 |
---|---|---|---|
T1595 | 主动扫描 | 扫描实验室服务器开放端口 | 部署防火墙IP白名单 |
T1589 | 受害人身份收集 | 爬取学生论坛泄露的学号 | 隐私保护培训 |
T1592 | 硬件信息收集 | 通过设备MAC地址判断物联网教室位置 | 网络设备匿名化 |
# 模拟ATT&CK战术执行(伪代码)
recon_sequence = [
{"technique": "T1595", "action": "scan_ports('202.112.xx.xx')"},
{"technique": "T1589", "action": "crawl_forum('bbs.xx.edu.cn')"},
{"technique": "T1592", "action": "analyze_arp_traffic()"}
]
# 防御检测代码示例(基于Suricata规则)
alert http any any -> any 80 (msg:"疑似爬虫活动";
flow:established,to_server;
content:"/forum.php?page=";
http.uri;
detection_filter:track by_src, count 100, seconds 60;)
七、情报侦察内容:从理论到工具链
最小化侦察清单:
1. **域名信息**
- WHOIS查询:`python-whois`库
- DNS记录:`dig A/NS/MX target.edu.cn`
2. **服务器信息**
- 端口扫描:`nmap -sV --script safe target_ip`
- 证书解析:`openssl s_client -connect target:443`
3. **人员信息**
- 邮箱收集:`theharvester -d xx.edu.cn -b baidu`
- 社交关联:Maltego分析教师姓名→论文→合作机构
4. **代码泄露**
- GitHub搜索:`filename:.env site:github.com "xx.edu.cn"`
- 网盘扫描:`site:pan.baidu.com 教务系统密码`
工具集成脚本示例:
# 自动化OSINT收集工具
import osint_toolkit
target = "xx.edu.cn"
# 执行侦察流水线
report = osint_toolkit.pipeline(
steps = [
("dns_enum", {"domain": target}),
("whois_lookup", {"target": target}),
("github_dork", {"query": f"org:{target} password"}),
("shodan_scan", {"filter": f"hostname:{target}"})
],
output_format="markdown"# 生成实验报告
)
with open("recon_report.md", "w") as f:
f.write(report)
给学弟学妹的忠告
- 法律红线
if target not in ["127.0.0.1", "your_own_domain"]:
print("未经授权的侦察涉嫌违法!")
exit(0)# 立即停止
- 学习路径
- 职场映射
企业安全岗位日常:
- 9:00 查看威胁情报平台新预警
- 10:00 编写ATT&CK映射规则
- 14:00 用Maltego分析攻击链
- 16:00 输出加固建议报告
所有示例工具和脚本已打包(公众号回复 校园OSINT工具包 获取)。记住:技术是双刃剑,侦察的终极目的是构建更安全的网络世界。共勉 (•̀ω•́)✧
感谢浏览和学习,作者:鱼油YOU,转载请注明原文链接:https://www.cnblogs.com/OmegaYOU3/p/19021316,或者可以➕主播WX:OmegaAnimeman_desu;QQ:3819054512