第5章 第39.2课
FOFA实战指南:校园网络空间测绘利器
1. FOFA工具简介:网络空间的"北斗地图"
作为参与过多次校园网络安全演练的学长,FOFA给我的第一印象是:这才是真正懂中国网络生态的测绘工具。它就像网络空间的"高德地图",特别擅长定位国内教育网资源。
# FOFA核心功能图解
class Fofa:
def __init__(self):
self.dimensions = [# 五大搜索维度
"region",# 地区(如:北京、江苏)
"port",# 端口(80、443、3389)
"service",# 服务(HTTP、SSH、RDP)
"os",# 系统(Windows、CentOS)
"protocol"# 协议(HTTP、FTP、MySQL)
]
def link_goby(self):# 联动安全工具
print("发现漏洞 → 一键导入Goby验证 → 生成修复方案")
# 校园案例:普查校内摄像头
fofa = Fofa()
fofa.search('title="摄像头" && region="江苏" && org="东南大学"')
2. FOFA入门实战:校园资产自查手册
基础搜索语法(Web界面操作)
场景1:IP搜索 - 定位实验室服务器
# 语法:ip="xxx.xxx.xxx.xxx"
# 案例:查高性能计算集群
ip="202.119.xx.1"# 东大超算中心IP
# 结果:开放22(SSH)、443(HTTPS)、8000(监控系统)
场景2:域名搜索 - 发现老旧系统
# 语法:domain="xx.edu.cn"
# 案例:找遗留测试系统
domain="seu.edu.cn" && title="测试"
# 结果:暴露test.seu.edu.cn(含未授权接口)
场景3:操作系统搜索 - 统计Windows服务器
# 语法:os="操作系统"
# 案例:统计校内Windows服务器
os="Windows" && org="南京大学"
# 结果:共发现283台,其中45台为Server 2008(已停止支持)
场景4:应用软件搜索 - 定位Jenkins服务
# 语法:app="软件名"
# 案例:找持续集成系统
app="Jenkins" && region="上海"
# 结果:发现ji.sjtu.edu.cn/jenkins(未设密码!)
场景5:综合搜索 - 挖矿病毒排查
# 语法:多条件组合
# 案例:筛查校内感染设备
port="445" && service="SMB" && title="miner"
# 结果:定位3台感染矿机的实验室电脑
3. FOFA进阶实战:自动化资产监控
API集成开发
# 安装FOFA SDK
pip install fofa-py
# 资产监控脚本(伪代码)
from fofa import FofaClient
# 初始化(教育邮箱可申请高级权限)
client = FofaClient(
email="your_id@xx.edu.cn",
key="API_KEY"
)
# 搜索学校Web服务
results = client.search('domain="xx.edu.cn" && protocol="http"', size=100)
# 生成资产清单
with open("web_assets.csv", "w") as f:
f.write("IP,端口,标题,服务\n")
for item in results["results"]:
f.write(f"{item[0]},{item[1]},{item[2]},{item[3]}\n")
Goby联动实战
graph LR
A[FOFA发现资产] --> B("Jenkins服务(ji.xx.edu.cn)")
B --> C{{Goby导入}}
C --> D[漏洞扫描]
D --> E["发现CVE-2023-27898漏洞"]
E --> F[生成修复方案]
联动操作:
- FOFA导出
资产列表.csv
- Goby导入 → 选择"从文件导入"
- 执行扫描 → 查看漏洞报告
校园安全防护实战案例
案例1:毕业设计系统防护
# 检查系统暴露面
query = '''
app="Spring Boot" &&
title="毕业设计" &&
domain="xx.edu.cn"
'''
vuln_systems = client.search(query)
# 发送告警邮件
for sys in vuln_systems:
if "actuator" in sys[3]:# 检查监控端点
send_alert(f"安全风险!{sys[2]} 暴露监控接口")
案例2:VPN设备安全加固
# 定位VPN网关
vpn_devices = client.search('app="VPN" && org="复旦大学"')
# 生成防火墙规则
with open("vpn_firewall.sh", "w") as f:
f.write("#!/bin/bash\n")
for device in vpn_devices:
ip = device[0]
f.write(f"iptables -A INPUT -s {ip} -p tcp --dport 443 -j ACCEPT\n")
f.write(f"iptables -A INPUT -s {ip} -p udp --dport 500 -j DROP # 禁用老旧协议\n")
防御视角:网络管理员操作指南
FOFA暴露风险处置流程
def risk_management():
steps = [
"1. 每月FOFA自查:org='学校全称'",
"2. 聚焦高危服务:app='Redis' && port='6379'",
"3. 验证暴露情况:telnet IP端口",
"4. 处置方案:",
"- 关闭非必要端口",
"- 添加访问控制",
"- 更新漏洞组件"
]
return steps
# 执行输出
for step in risk_management():
print(step)
三大防护原则
- 服务隐藏
# Apache配置(httpd.conf)
ServerTokens Prod# 隐藏版本
ServerSignature Off
- 端口管控
# 防火墙示例(仅开放必要)
ufw allow 80/tcp# HTTP
ufw allow 443/tcp# HTTPS
ufw default deny# 默认拒绝
- 持续监控
# 自动化监控脚本
while True:
new_assets = fofa.search('after="2024-01-01" && org="学校"')
if new_assets:
send_mail(f"发现{len(new_assets)}个新暴露资产")
time.sleep(604800)# 每周检查
学习与职场衔接
新手成长路径
1. **初级阶段**
- 注册FOFA教育账号(edu邮箱)
- 完成《FOFA语法速查手册》(官网下载)
2. **中级阶段**
- 开发自动化监控脚本(Python+API)
- 参与高校护网行动
3. **高级阶段**
- 建立校园资产知识图谱
- 发表网络测绘研究论文
企业安全工程师日常
def security_engineer_day():
tasks = [
"09:00 检查FOFA新告警",
"10:30 编写资产扫描脚本",
"14:00 联动Goby验证漏洞",
"16:00 输出修复方案"
]
return tasks
附赠资源包(公众号回复 FOFA校园版 获取):
- 教育网专属API额度
- 《校园常见资产FOFA语法速查表》
- 自动化监控脚本模板
记住:真正的网络安全工程师不是寻找漏洞,而是守护网络世界的安宁 —— 这是我们的责任 (•̀ω•́)✧
感谢浏览和学习,作者:鱼油YOU,转载请注明原文链接:https://www.cnblogs.com/OmegaYOU3/p/19021328,或者可以➕主播WX:OmegaAnimeman_desu;QQ:3819054512