reverseame/MARISSA
GitHub: reverseame/MARISSA
MARISSA 通过相似性摘要与多序列对齐,从网络流量中自动推断消息格式并聚类相似数据包。
Stars: 0 | Forks: 0
# MARISSA
MARISSA (MessAge foRmat Inference with Similarity digeSt Algorithms) 是一种用于从网络流量捕获中自动推断消息格式的工具。通过利用相似性摘要算法和多序列对齐技术,MARISSA 可以识别并聚类相似的数据包,揭示底层协议模式和消息结构。
[](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*,并由“恢复、转型和韧性计划”资金资助,该资金由欧盟(下一代)提供。

标签:Clustal Omega, Docker, FAMSA, GPLv3, MAFFT, MUSCLE, Poetry, Python, Python 3.9+, 协议模式识别, 协议逆向, 多序列比对, 安全防御评估, 开源安全工具, 数据包聚类, 无后门, 流量捕获, 流量解析, 消息格式推断, 消息结构分析, 相似性摘要算法, 网络拓扑, 网络流量分析, 自动化协议分析, 请求拦截, 逆向工具, 逆向工程平台