Hfinger:一款针对恶意软件HTTP请求的指纹识别工具

server/2024/12/22 14:45:06/

关于Hfinger

Hfinger是一款功能强大的HTTP请求指纹识别工具,该工具使用纯Python开发,基于Tshark实现其功能,可以帮助广大研究人员对恶意软件的 HTTP 请求进行指纹识别。

https://img-blog.csdnimg.cn/img_convert/e90daa759dcb31fb2c997ba45231b1ba.jpeg" width="690" />

该工具的主要目标是提供恶意软件请求的唯一表示(指纹),以帮助识别。这里的“唯一”指的是每个指纹仅出现在特定的恶意软件家族中,但一个家族可以拥有多个指纹。Hfinger通过简化请求的形式来表示请求,但仍保持人类可读性,而不是打印整个请求。

Hfinger不仅可用于手动恶意软件分析,还可用于沙盒系统或SIEM(安全信息与事件管理)中。生成的指纹有助于对请求进行分组,精确定位到特定恶意软件家族,识别某个家族的不同操作,或发现其他安全系统忽略的未知恶意请求,而这些请求具有相同的指纹。

运行机制

本项目的基本假设是,不同恶意软件家族的HTTP请求在某种程度上是独特的,因此可以通过指纹提取来提供某种识别方式。Hfinger保留了某些Header结构和值的信息,以便进一步分析。

https://img-blog.csdnimg.cn/img_convert/51e62b1146368a0b89a9818de23f7090.jpeg" width="690" />

在对恶意软件的HTTP请求和Header进行分析后,我们识别出了一些最具辨识度的请求部分,包括:

1、请求方法

2、协议版本

3、Header顺序

4、常见Header的值

5、Payload长度、熵值及是否包含非ASCII字符

此外,还考虑了请求URL的一些标准特性。所有这些部分被转换为一组特征,这些特征会被转化为可变长度的表示形式,即实际的指纹。根据报告模式,不同的特征被用于指纹化请求。

工具要求

Python>=3.3

Tshark>=2.2.0

fnvhash>=0.1.0

python-magic>=0.4.18

工具安装

由于该工具基于Python 3开发,因此我们首先需要在本地设备上安装并配置好最新版本的Python 3环境。

源码安装

接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:

git clone https://github.com/CERT-Polska/hfinger.git

然后切换到项目目录中,使用pip命令和项目提供的requirements.txt安装该工具所需的其他依赖组件:

cd hfingerpip install -r requirements.txt

PyPI安装

pip install hfinger

工具使用

安装完成后,我们可以直接在命令行中使用“hfinger”命令调用该工具,或通过“python -m hfinger”命令以Python模块的形式使用Hfinger,例如:

foo@bar:~$ hfinger -f /tmp/test.pcap[{"epoch_time": "1614098832.205385000", "ip_src": "127.0.0.1", "ip_dst": "127.0.0.1", "port_src": "53664", "port_dst": "8080", "fingerprint": "2|3|1|php|0.6|PO|1|us-ag,ac,ac-en,ho,co,co-ty,co-le|us-ag:f452d7a9/ac:as-as/ac-en:id/co:Ke-Al/co-ty:te-pl|A|4|1.4"}]

工具帮助信息

usage: hfinger [-h] (-f FILE | -d DIR) [-o output_path] [-m {0,1,2,3,4}] [-v][-l LOGFILE]Hfinger - fingerprinting malware HTTP requests stored in pcap filesoptional arguments:-h, --help:显示此帮助信息并退出;-f FILE, --file FILE:读取单个pcap文件;-d DIR, --directory DIR:从目录DIR中读取pcap文件;-o output_path, --output-path output_path:输出目录的路径;-m {0,1,2,3,4}, --mode {0,1,2,3,4}:指纹报告模式;0 - 与模式2生成的指纹和冲突数量相似,但使用的特征更少,1 - 展示所有设计的特征,但比模式0、2和4稍多冲突,2 - 最优模式(默认模式),3 - 生成最少指纹,但冲突最多,4 - 指纹熵值最高,但生成的指纹比模式0-2稍多-v, --verbose:报告请求中的非标准值信息;(如非ASCII字符、无CRLF标记、配置列表中不存在的值)。如果不使用--logfile (-l),则输出到标准错误;-l LOGFILE, --logfile LOGFILE:在详细模式下的输出日志文件,启用时隐含使用-v或--verbose选项;

工具输出

您必须提供 pcap 文件的路径 (-f),或包含 pcap 文件的目录 (-d)。输出为 JSON 格式。它将使用源文件的名称打印到标准输出或提供的目录 (-o):

hfinger -f example.pcap -o /tmp/pcap

输出内容将被保存至:

/tmp/pcap/example.pcap.json

在Python应用程序中使用Hfinger

from hfinger.analysis import hfinger_analyzepcap_path = "SPECIFY_PCAP_PATH_HERE"reporting_mode = 4print(hfinger_analyze(pcap_path, reporting_mode))

许可证协议

本项目的开发与发布遵循GPL-3.0开源许可协议。

项目地址

Hfinger:【GitHub传送门】

参考资料

Entropy | Free Full-Text | Hfinger: Malware HTTP Request Fingerprinting

https://lcamtuf.coredump.cx/p0f3/

https://github.com/0x4D31/fatt

https://github.com/cisco/mercury

venv — Creation of virtual environments — Python 3.12.5 documentation


http://www.ppmy.cn/server/114281.html

相关文章

项目实战 ---- 商用落地视频搜索系统(6)---UI 结构及与service互动

目录 背景 技术问题 描述 Jinja2 概述 特性 问题解决手段 问题1 问题2 问题3 代码实现 前端代码 python代码 解释 页面展示 home 上传视频 搜索视频 背景 通过1-5 我们已经搭建好完整的后台功能,service,及准备与UI 交互的路由及接口。下面就是UI 部分的搭…

goLang map

goLang Map 是内置数据结构,无序 Go不提供set类型,但是map中key是不相同的,可以实现类似set功能 格式 map[keyType]valueType map中键是唯一的,必须支持和!操作,所以 切片、函数以及包含这些结构类型的具有引用语义…

拍摄自动ai白底抠图减少人工快速便捷标准化操作

欧保图(ORBITVU)作为一款自动化摄影设备,在自动抠图功能方面展现出了卓越的性能,它集成了先进的图像处理技术和自动化控制功能,极大地提升了产品拍摄和后期处理的效率。以下是对欧保图自动抠图功能的主要描述&#xff…

WebGL系列教程二(环境搭建及初始化Shader)

目录 1 前言2 新建html页面3 着色器介绍3.1 顶点着色器、片元着色器与光栅化的概念3.2 声明顶点着色器3.3 声明片元着色器 4 坐标系(右手系)介绍5 着色器初始化5.1 给一个画布canvas5.2 获取WebGL对象5.3 创建着色器对象5.4 获取着色器对象的源5.5 绑定着色器的源5.6 编译着色器…

WEB攻防-ASP安全MDB下载植入IIS短文件名写权限解析

知识点: 1、ASP环境搭建组合; 2、ASP-数据库下载&植入; 3、IIS-短文件&解析&写权限; WEB安全攻防 1、web源码; 2、开发语言; 3、中间件平台; 4、数据库类型; 5、…

线性代数 第四讲 极大线性无关组,等价向量组,向量组的秩

文章目录 1.极大线性无关组2.等价向量组2.1 等价向量组的判断 3.向量组的秩4.等价矩阵和等价向量组5. 重难点题型总结5.1 极大线性无关组的计算5.2 AB的行向量表示与AB的列向量表示 1.极大线性无关组 定义: 在一个向量组中,取部分向量组成新的向量组,这…

macOs系统基于anaconda的pycharm研发环境搭建

1. anaconda的安装 1.1 下载安装包 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 1.2 安装 此安装包是免费的,也不需要进行配置,直接无脑下一步即可 1.3 测试 进入终端命令界面输入 conda --version测试是否安装成功 弹出conda 24.5.0即…

notepad++软件介绍(含安装包)

Notepad 是一款开源的文本编辑器,主要用于编程和代码编辑。它是一个功能强大的替代品,常常被用来替代 Windows 系统自带的记事本。 Notepad win系统免费下载地址 以下是 Notepad 的一些主要特点和功能: 多语言支持:Notepad 支持多…