实战指南:基于 HFish + Python + GitHub Pages 构建自动化威胁情报源
文章介绍了一种基于HFish蜜罐结合Python和GitHub Pages构建自动化威胁情报源的方法。通过HFish API提取攻击数据(如IP地址、恶意哈希值、域名等),并利用GitHub/Gitee Pages分发威胁情报。架构包括HFish蜜罐作为数据源、Python脚本处理中心以及GitHub/Gitee Pages作为发布平台。 2026-1-19 04:33:19 Author: www.freebuf.com(查看原文) 阅读量:0 收藏

freeBuf

主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

实战指南:基于 HFish + Python + GitHub Pages 构建自动化威胁情报源

HFish API配置文档

威胁情报开源示例:ip_list

honeypot-blocklist 项目地址

规划

蜜罐(Honeypot)最核心的特点是:没有任何正常的业务流量会访问它。因此,凡是进入蜜罐的数据,本质上都是“可疑”或“恶意”的。这使得蜜罐收集到的数据具有极高的信噪比(高保真)

蜜罐可以捕获攻击者的基础信息,将其转化为入侵指标(IOCs)

  • 攻击源 IP 地址:识别攻击者来自哪里(国家、ASN、代理池)。

  • 恶意哈希值(File Hash):上传的恶意软件的 MD5/SHA256。

  • 恶意域名/URL:恶意软件回连的 C2(命令与控制)服务器地址。

  • 用途:将这些数据实时同步给防火墙(FW)、WAF 或入侵检测系统(IDS),实现**“一处被攻,全网封禁”**。

本文即是实现将Hifsh蜜罐获得的攻击信息,通过使用其自带的 API 接口进行自动化提取,并利用 GitHub/Gitee Pages 进行分发。(提取简单的攻击源 IP 地址为例)

架构设计

  1. 数据源:部署在内网或公网的 HFish 蜜罐。

    部署教程:云服务器搭建HFish蜜罐全流程

  2. 处理中心:一个运行 Python 脚本的中间服务器(可以是 HFish 本机)。

  3. 发布平台:GitHub 或 Gitee(利用其 Pages 服务托管静态文本文件)。( GitHub

  4. 最终产物:一个公网可访问的 URL(例如 https://yuexuan521.github.io/honeypot-blocklist/ip_list.txt)。

第一步:准备 HFish API

HFish 提供了 API 用于获取攻击数据。

  1. 登录 HFish 管理后台。

  2. 进入 “系统设置” -> “API 设置”

  3. 获取 API Key管理端地址

    • 注意:如果你的 HFish 在内网,确保运行脚本的机器能访问到 HFish 的管理端口(默认 4433)。

image-20251227102507885.png

第二步:编写自动化提取脚本 (Python)

我们需要编写一个 Python 脚本,完成“拉取数据 -> 过滤白名单 -> 格式化 -> 写入文件”的动作。

在 HFish 服务器或能访问 HFish 的机器上创建 /root/generate_feed.py:(需修改HFISH_HOST、API_KEY、OUTPUT_TXT的值,第10行)

import requests
import json
import ipaddress
import urllib3
import time
import sys
from datetime import datetime, timedelta

# ================= 配置区 =================
HFISH_HOST = "https://IP:4433"                       //!!填写你的Hish网址!!
API_KEY = ""                                         //!!填写你的Hish API Key!!
OUTPUT_TXT = "/root/threat-feed/ip_list.txt"         //!!填写你保存文件的地址!!
TIME_WINDOW_HOURS = 24 

LOCAL_WHITELIST = [
    "127.0.0.1", "192.168.0.0/16", "10.0.0.0/8", "172.16.0.0/12",
    "8.8.8.8", "1.1.1.1", "60.204.200.232"
]
WHITELIST_URLS = {
    "bing": "https://www.bing.com/toolbox/bingbot.json",
    "github": "https://api.github.com/meta"
}
# =========================================

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

class WhitelistManager:
    def __init__(self):
        self.whitelist_cidrs = []
        for ip in LOCAL_WHITELIST:
            try:
                self.whitelist_cidrs.append(ipaddress.ip_network(ip, strict=False))
            except: pass

    def fetch_remote_whitelists(self):
        print("[-] Fetching remote whitelists...")
        for name, url in WHITELIST_URLS.items():
            try:
                resp = requests.get(url, timeout=10)
                if resp.status_code == 200:
                    data = resp.json()
                    prefixes = []
                    if "prefixes" in data: prefixes = [p.get("ipv4Prefix") for p in data["prefixes"]]
                    elif "web" in data: prefixes = data.get("web", [])
                    for p in prefixes:
                        if p and "." in p:
                            self.whitelist_cidrs.append(ipaddress.ip_network(p))
            except: pass

    def is_whitelisted(self, ip_str):
        try:

已在FreeBuf发表 0 篇文章

本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)


文章来源: https://www.freebuf.com/articles/others-articles/467125.html
如有侵权请联系:admin#unsafe.sh