reverseame/MARISSA

GitHub: reverseame/MARISSA

MARISSA 通过相似性摘要与多序列对齐,从网络流量中自动推断消息格式并聚类相似数据包。

Stars: 0 | Forks: 0

# MARISSA MARISSA (MessAge foRmat Inference with Similarity digeSt Algorithms) 是一种用于从网络流量捕获中自动推断消息格式的工具。通过利用相似性摘要算法和多序列对齐技术,MARISSA 可以识别并聚类相似的数据包,揭示底层协议模式和消息结构。 [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) ## 安装 ### 手动安装 #### 先决条件 * [Python](https://www.python.org/) 3.11 * [Poetry](https://python-poetry.org/) 依赖管理工具 * 一个或多个多重序列比对工具(详见论文): * [MAFFT](https://mafft.cbrc.jp/alignment/software/) ⭐ * [Clustal Omega](http://www.clustal.org/omega/) * [MUSCLE](https://github.com/rcedgar/muscle) * [FAMSA](https://github.com/refresh-bio/FAMSA) #### 步骤 1. 克隆仓库: git clone https://github.com/pruizlezcano/MARISSA.git 2. 安装依赖: poetry install 3. 安装至少一个多重序列比对工具(参见先决条件) ### Docker 1. 克隆仓库: git clone https://github.com/pruizlezcano/MARISSA.git 2. 构建 Docker 镜像: docker build -t marissa . 3. 运行 Docker 容器: docker run -v "$(pwd):/data" marissa -i /data/input.pcap -o /data/results/input.pcap -v ## 用法 ``` marissa -i input.pcap --remove-duplicates --remove-headers -v ``` ### 选项 * `--input`, `-i` `TEXT`:要读取的 .pcap 文件。此选项为必填。 * `--output`, `-o` `TEXT`:输出结果的目录。默认:./results// * `--verbose`, `-v`:打印脚本执行的命令输出。 * `--packet-length`, `-l` `INTEGER`:要过滤的数据包长度。若未指定,则考虑所有数据包。 * `--packet-length-variance`, `-p` `INTEGER`:数据包长度的方差过滤阈值。 * `--percent-equal`, `-e` `FLOAT`:用于表示的相等数据包百分比。取值范围 0 到 1。默认值为 1。 * `--remove-headers`:从数据包中移除头部。 * `--distance-algorithm`, `-d` [`tlsh`|`ssdeep`|`hamming`]:用于比较数据包相似性的距离算法。默认值为 `ssdeep`。 * `--cluster-algorithm`, `-c` [`optics`|`kmeans`|`kmeans_hierarchical`]:用于聚类的算法。默认值为 `optics`。 * `--align-algorithm`, `-a` [`clustalo`|`maffttext`|`mafft`|`muscle`|`famsa`]:用于对齐的算法。默认值为 `mafft`。 * `--group_by_ethernet`, `-eth`:按以太网头对数据包分组,并在聚类前移除头部。 * `--remove-duplicates`:在聚类前移除重复的数据包。 * `--slice-packet`, `-s` `INTEGER`:移除数据包的前 x 个字符。 * `--ignore-noise`, `-n`:忽略结果中的噪声点(聚类 -1)。 * `--layer`, `-l` `INTEGER`:从数据包中获取十六进制数据的层。 * `--help`:显示帮助信息并退出。 ## 输出格式 MARISSA 生成以下输出结构: ``` results// ├── output..pcap # Packet capture files for each cluster ├── output.csv # CSV file with the packet information ├── output.meta.json # Metadata about the execution └── output.txt # Text file with a visual representation of aligned packets per cluster ``` `output.csv` 文件包含以下列: * `cluster`:聚类编号。 * `cluster_id`:聚类中的数据包 ID。 * `raw`:原始数据包数据。 * `aligned`:对齐后的数据包数据。 * `fields`:数据包的字段。 `output.meta.json` 文件包含执行元数据,包括: * `file`:输入 pcap 文件的路径。 * `distance_algorithm`:使用的距离算法。 * `cluster_algorithm`:使用的聚类算法。 * `align_algorithm`:使用的对齐算法。 * `merge_algorithm`:用于合并字段的算法。 * `clusters`:发现的聚类数量。 * `packet_count`:处理的数据包总数。 * `remove_headers`:是否移除了头部(未指定时为 null)。 * `remove_duplicates`:是否移除了重复数据包的布尔值。 * `group_by_ethernet`:是否按以太网头对数据包分组的布尔值。 * `slice_packet`:是否对数据包进行了切片(未指定时为 null)。 * `ignore_noise`:是否忽略了噪声点的布尔值。 * `running_time`:总执行时间(秒)。 * `common_prefix`:如果适用,数据包之间的公共前缀。 ## 许可证 根据 [GNU GPLv3](LICENSE) 许可证授权。 ## 资金支持 本研究的部分工作得到了西班牙国家网络安全研究所(INCIBE)的支持,项目名称为 *Proyecto Estratégico de Ciberseguridad -- CIBERSEGURIDAD EINA UNIZAR*,并由“恢复、转型和韧性计划”资金资助,该资金由欧盟(下一代)提供。 ![INCIBE_logos](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/27695b63e6160534.jpg)
标签:Clustal Omega, Docker, FAMSA, GPLv3, MAFFT, MUSCLE, Poetry, Python, Python 3.9+, 协议模式识别, 协议逆向, 多序列比对, 安全防御评估, 开源安全工具, 数据包聚类, 无后门, 流量捕获, 流量解析, 消息格式推断, 消息结构分析, 相似性摘要算法, 网络拓扑, 网络流量分析, 自动化协议分析, 请求拦截, 逆向工具, 逆向工程平台