Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
malcom — Malcom - 恶意软件通信分析器 | Kitploit
工具/GitHubGitHub/tomchop/malcom
网络取证恶意软件分析威胁情报
GitHubtomchop/malcom

malcom

Malcom - 恶意软件通信分析器

查看仓库
1.2k216118年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Malcom - 恶意软件通信分析器

Malcom 是一款旨在通过图形化表示网络流量,并与已知恶意软件源进行交叉引用,从而分析系统网络通信的工具。这在分析特定恶意软件种类如何尝试与外界通信时非常有用。

  • 什么是 Malcom?
  • 快速上手
  • 安装
  • 配置选项
  • Docker 实例
  • 关于 TLS 拦截的简要说明
  • 环境
  • 数据源
  • 技术规格
  • 路线图
  • 免责声明
  • 许可证

什么是 Malcom?

Malcom 可以帮助你:

  • 检测中央命令与控制(C&C)服务器
  • 理解点对点网络
  • 观察 DNS 快速通量基础设施
  • 快速判断某个网络工件是否为"已知恶意"

Malcom 的目标是通过提供来自特定主机或网络的网络流量的人类可读版本,使恶意软件分析和情报收集更快。更快地将网络流量信息转化为可操作的情报。

查看 wiki 获取快速入门指南,其中包含一些漂亮的截图以及关于如何添加你自己的数据源的教程。

如果你需要帮助,或者想参与贡献,欢迎加入邮件列表或尝试在 IRC 上找人(#malcom on freenode.net,虽然很安静但总有人在)。你也可以在 Twitter 上联系我 @tomchop_

这是一个主机 tomchop.me 的示例图: nodes-tomchop.png

数据集视图(过滤后仅显示 IP): dataset-view.png

快速上手

  • 安装
  • 确保 mongodb 和 redis-server 正在运行
  • 将权限提升至 root(是的,我知道,见免责声明)
  • 使用默认配置启动 web 服务器:./malcom.py -c malcom.conf(或查看选项:./malcom.py --help) ** 如需示例配置文件,可以将 malcom.conf.example 复制为 malcom.conf ** 默认端口为 8080 ** 或者,通过 celery 运行数据源。有关如何操作的详细信息,请参阅数据源部分。

安装

Malcom 使用 Python 编写。只要你有必要的库,就应该能在任何平台上运行。我强烈建议使用 Python 虚拟环境(virtualenv),以免弄乱系统库。

以下步骤已在 Ubuntu Server 14.04 LTS 上测试通过:

  • 安装 git、python、libevent 库、mongodb、redis 及其他依赖项:

    root@kitploit:~
      $ sudo apt-get install build-essential git python-dev libevent-dev mongodb libxml2-dev libxslt-dev zlib1g-dev redis-server libffi-dev libssl-dev python-virtualenv
    
  • 克隆 Git 仓库:

    root@kitploit:~
      $ git clone https://github.com/tomchop/malcom.git malcom
    
  • 创建并激活虚拟环境:

    root@kitploit:~
      $ cd malcom
      $ virtualenv env-malcom
      $ source env-malcom/bin/activate
    
  • 获取并安装 scapy:

    root@kitploit:~
      $ cd .. 
      $ wget http://www.secdev.org/projects/scapy/files/scapy-latest.tar.gz
      $ tar xvzf scapy-latest.tar.gz
      $ cd scapy-2.1.0
      $ python setup.py install
    
  • 仍在虚拟环境中,从 requirements.txt 文件安装必要的 Python 包:

配置选项

数据库

默认情况下,Malcom 会尝试连接本地 mongodb 实例并创建自己的数据库,名为 malcom。如果这对你来说没问题,可以跳过以下步骤。否则,你需要编辑 malcom.conf 文件中的 database 部分。

为 Malcom 数据库设置其他名称

默认情况下,Malcom 会使用名为 malcom 的数据库。你可以通过编辑 malcom.conf 文件并设置 database 部分中的 name 指令来更改此行为。

root@kitploit:~
    [database]
    ...
    name = my_malcom_database
    ...
远程数据库

默认情况下,Malcom 会尝试连接 localhost,但你的数据库可能位于另一台服务器上。要更改这一点,只需设置 hosts 指令。你可以使用主机名或 IPv4/v6 地址(请记住将 IPv6 地址括在 [ 和 ] 之间,例如 [::1])。

如果你想使用位于 my.mongo.server 主机上的独立数据库,只需设置:

root@kitploit:~
    [database]
    ...
    hosts = my.mongo.server
    ...

你也可以通过在用冒号分隔的服务器名称/地址后指定 mongod 监听的端口:

root@kitploit:~
    [database]
    ...
    hosts = localhost:27008
    ...

如果你使用包含 my.mongo1.server 和 my.mongo2.server 的 ReplicaSet,只需设置:

root@kitploit:~
    [database]
    ...
    hosts = my.mongo1.server,my.mongo2.server
    ...
使用身份验证

你可能已将 mongod 实例配置为强制进行身份验证连接。在这种情况下,你必须设置驱动程序用来连接 mongod 实例的用户名。为此,只需在 malcom.conf 文件的 database 部分添加 username 指令。你可能还需要使用 password 指令设置密码。如果用户没有密码,只需忽略(即注释掉)password 指令。

root@kitploit:~
    [database]
    ...
    username = my_user
    password = change_me
    ...

如果该用户未关联到 malcom 数据库,而是关联到其他数据库(例如管理用户的 admin 数据库),则需要使用 authentication_database 指令设置该数据库的名称。

root@kitploit:~
    [database]
    ...
    authentication_database = some_other_database
    ...
副本集的情况

使用副本集时,你可能需要确保连接到正确的副本集。为此,只需添加 replset 指令,以强制 mongo 驱动程序检查副本集的名称。

root@kitploit:~
    [database]
    ...
    replset = my_mongo_replica
    ...

默认情况下,Malcom 会尝试连接副本集的主节点。你可能需要/希望更改这一点。要更改此行为,只需设置 read_preference 指令。有关更多信息,请参阅 mongo 文档。

root@kitploit:~
    [database]
    ...
    read_preference = NEAREST
    ...

支持的读取偏好有:

  • PRIMARY
  • PRIMARY_PREFERRED
  • SECONDARY
  • SECONDARY_PREFERRED
  • NEAREST

Docker 实例

启动的最快方法是从公共 Docker 仓库拉取 Docker 镜像。要拉取更旧、更稳定的 Docker 构建版本,请使用 tomchop/malcom 而不是 tomchop/malcom-automatic。

root@kitploit:~
    $ sudo docker pull tomchop/malcom-automatic
    $ sudo docker run -p 8080:8080 -d --name malcom tomchop/malcom-automatic

连接到 http://<docker_host>:8080/ 即可开始使用。

关于 TLS 拦截的简要说明

Malcom 现在支持 TLS 拦截。为此,你需要在 Malcom/networking/tlsproxy/keys 目录中生成一些密钥。有关如何执行此操作的更多信息,请参阅该目录中的 KEYS.md 文件。

请确保你还拥有 IPtables(你应该已经有了)以及使用它进行端口转发的权限(通常需要 root 权限)。你可以使用方便的 forward_port.sh 脚本来完成此操作。例如,要拦截所有发往 443 端口的 TLS 通信,请使用 forward_port.sh 443 9999。然后,你需要告诉 malcom 在端口 9999 上运行拦截代理。

预计此过程将在未来版本中自动化。

环境

Malcom 是在 Ubuntu Server 14.04 LTS 虚拟机上设计和测试的。

如果你习惯进行恶意软件分析,你可能已经在主机操作系统上运行了大量虚拟机。只需在新的虚拟机上安装 Malcom,然后将其他虚拟机的连接路由到 Malcom。使用 enable_routing.sh 脚本激活 Malcom 所在虚拟机上的路由/NAT。你需要在客户操作系统中添加额外的网卡。

只要能够获取第3层网络数据,Malcom 就可以部署在任何地方。虽然不建议在高可用性网络上使用它(它并不是为速度而设计的,请参阅免责声明),但你可以将其放在交换机镜像端口或网关的末端。

数据源

要启动一个仅从数据源获取信息的 Malcom 实例,请使用 --feeds 选项运行 Malcom,或修改配置文件。

你的数据库应自动填充。如果你能深入研究代码,添加数据源非常简单(假设你正在生成 Evil 对象)。你可以在 /feeds/zeustracker 找到一个示例数据源。更详细的教程请点击此处。

你也可以使用 celery 来运行数据源。确保已安装 celery,方法是从虚拟环境中运行 $ pip install celery。然后,你可以使用 celery worker -E --config=celeryconfig --loglevel=DEBUG --concurrency=12 启动包含 12 个并发工作者的数据源处理进程。

技术规格

Malcom 主要从头编写,使用 Python。它使用以下框架运行:

  • flask - 一个轻量级的 Python Web 框架
  • mongodb - 一个 NoSQL 数据库。通过 pymongo 与 Python 交互
  • redis - 一个先进的内存键值存储
  • d3js - 一个 JavaScript 库,能生成出色的力导向图(https://github.com/mbostock/d3/wiki/Gallery)
  • bootstrap - 一个 CSS 框架,虽然最终可能会扼杀网页设计,但它使本应只在命令行工作的应用程序变得极其容易“网页化”。

路线图

协作 - 我希望该工具的主要发展方向是变得协作。我对此有一些想法,一旦实现数据共享,我认为它将变得 100 倍更有用。

可扩展性 - 我计划包含的另一个功能是更容易扩展该工具。我并不是每个人都有相同的需求,这个工具也是基于我自己的需求而构思的。你现在可以通过添加新的数据源来自定义 Malcom。

一旦协作和扩展功能正常运作,我认为这将对不止一个事件响应者有帮助。:-)

免责声明

此工具是在我的空闲时间编写的。就像我们日常下载和使用的大量工具一样,我不建议在生产环境中使用它,因为数据稳定性和可靠性是必须的。

  • 它可能有缺陷、安全漏洞(在不安全的环境中作为 root 运行可能不是一个好主意),或者完全无法工作。
  • 它是用 Python 编写的,所以不要期望它速度极快或能轻松处理大量数据。
  • 我不是程序员,所以不要期望随处可见优美的 Python 代码或大量的注释。

它处于开发的早期阶段,意思是“它对我有用”。你可以自由分享、改进它,或请求拉取请求。

许可证

Malcom - 恶意软件通信分析器 版权所有 (C) 2013 Thomas Chopitea

本程序是自由软件:你可以根据自由软件基金会发布的 GNU 通用公共许可证(许可证版本 3,或(按你的选择)任何更高版本)重新分发和/或修改它。

本程序的发布是希望它有用,但没有任何保证;甚至没有适销性或特定用途适用性的默示保证。有关更多细节,请参阅 GNU 通用公共许可证。

你应该已收到一份 GNU 通用公共许可证的副本。如果没有,请访问 http://www.gnu.org/licenses/。

请注意,Redis、MongoDB、d3js、Maxmind 和 Bootstrap(以及 Malcom 中包含的其他第三方库)可能拥有自己的与 GPL 兼容的许可证。

下载工具
root@kitploit:~
  $ cd ../malcom
  $ pip install -r requirements.txt
  • 为了启用 IP 地理定位功能,需要下载 Maxmind 数据库并将文件解压到 malcom/Malcom/auxiliary/geoIP 目录。你可以从以下链接获取 Maxmind 免费(因此准确度一般)的数据库:http://dev.maxmind.com/geoip/geoip2/geolite2/:

    root@kitploit:~
      $ cd Malcom/auxiliary/geoIP
      $ wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz
      $ gunzip -d GeoLite2-City.mmdb.gz
      $ mv GeoLite2-City.mmdb GeoIP2-City.mmdb
    
  • 从 malcom 目录使用 ./malcom.py 启动 web 服务器。使用 ./malcom.py --help 查看监听接口和端口。

    • 对于新手,可以将 malcom.conf.example 文件复制为 malcom.conf,然后运行 ./malcom.py -c malcom.conf