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

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

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

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

工具目录

分类

查看所有分类
Loading categories
project-memoria-detector — 主动指纹识别工具,通过ICMP、TCP、HTTP、SSH和FTP探测技术,识别网络设备上的16种嵌入式TCP/IP协议栈,用于漏洞评估。 | Kitploit
工具/GitHubGitHub/forescout/project-memoria-detector
嵌入式系统安全物联网安全漏洞分析网络安全固件分析
GitHubforescout/project-memoria-detector

project-memoria-detector

主动指纹识别工具,通过ICMP、TCP、HTTP、SSH和FTP探测技术,识别网络设备上的16种嵌入式TCP/IP协议栈,用于漏洞评估。

查看仓库
323465年前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

project-memoria-detector

project-memoria-detector 工具旨在判断目标网络设备是否运行特定的嵌入式 TCP/IP 协议栈。

目前,该工具支持 16 种嵌入式 TCP/IP 协议栈(及其变体)的指纹识别:

  • uIP、Contiki 或 Contiki-NG
  • picoTCP 或 picoTCP-NG
  • Nut/Net
  • FNET
  • Nucleus NET
  • CycloneTCP
  • NDKTCPIP
  • uC/TCP-IP
  • MPLAB Harmony Net
  • NicheStack
  • FreeBSD
  • Microsoft ThreadX
  • CMX TCP/IP
  • emNet
  • Keil TCP/IP
  • lwIP

上述多个协议栈在 Project Memoria 研究过程中被发现存在漏洞。

它是如何工作的?

该脚本通过以下主动指纹识别方法,在目标设备上识别 16 种 TCP/IP 协议栈的使用情况:

  • ICMP 探测:脚本发送一个畸形的 ICMP 回显请求,并检查回复的特性,包括生存时间(TTL)值的变化和特定的有效载荷内容,这些内容因协议栈而异。
  • TCP 选项签名:脚本发送一个 TCP SYN 包,并监控 TCP SYN ACK 响应中 TCP 选项字段的格式。每个协议栈对选项(如最大段大小 MSS 和窗口缩放)回复不同的值。
  • TCP 紧急标志处理:脚本发送一个设置了紧急标志的 TCP 包,并监控响应。每个协议栈回复不同的一组 TCP 标志和不同的 TCP 窗口大小值。
  • HTTP 横幅和错误消息:脚本对被测设备上托管的 Web 服务器执行 HTTP 请求,并检查特定的 HTTP 头部和特定于应用程序的错误消息。
  • SSH 横幅和错误消息:脚本对被测设备上托管的 SSH 服务器执行请求,并检查特定的 SSH 横幅。
  • FTP 横幅和错误消息:脚本对被测设备上托管的 FTP 服务器执行请求,并检查特定的 FTP 横幅。

尽管该脚本已在实验室环境中测试,但我们无法保证其在所有设备上使用都是安全的。例如,畸形的 ICMP 数据包可能会导致运行不同协议栈的设备崩溃。因此,我们不建议直接在包含关键任务设备的实时环境中使用(例如,带病人连接设备的医院或安全关键的工业控制系统)。理想的方法是在实验室环境或维护窗口期间测试设备。

依赖项

请注意,该工具仅在 Linux 测试环境中进行过测试(任何现代 Linux 发行版应该都可以)。假设测试环境使用 iptables(https://linux.die.net/man/8/iptables)作为基本防火墙。

该工具需要较新版本的 Python 3.x(参见 https://www.python.org/,最好版本 >= 3.7.7),以及 Scapy(参见 https://scapy.net/,最好版本 >= 2.4.3)。

要安装 Scapy 及 Python,以及进行一般性故障排除,请参阅以下文档:https://scapy.readthedocs.io/en/latest/installation.html

如果您的机器上已经安装了 Python,您可以使用 pip 和提供的 requirements.txt 文件来安装所需的依赖项:

root@kitploit:~
$ pip install -r requirements.txt

基本用法

由于 Scapy 需要 root 权限才能运行,该工具必须使用 sudo 运行,例如:

root@kitploit:~
$ sudo python project-memoria-detector.py [options]

要查看运行脚本的可用选项,请使用 -h 选项运行它:

root@kitploit:~
$ python project-memoria-detector.py -h

通常,该脚本至少需要一个目标设备的 IP 地址(此参数可以使用 -ip_dst 显式指定)

root@kitploit:~
$ sudo python project-memoria-detector.py 192.168.3.1

该脚本支持扫描 IP 地址范围。您可以指定要扫描的子网(使用 CIDR 表示法),或提供一个包含一组要扫描的 IP 地址的 .txt 文件。

CIDR 表示法可以如下使用(在此示例中,将扫描从 192.168.3.1 到 192.168.3.254 的 IP 地址):

root@kitploit:~
$ sudo python project-memoria-detector.py 192.168.3.0/24

您还可以使用 .txt 文件来指定感兴趣的 IP 地址:该文件中的每个 IP 地址必须另起一行。例如,我们可以创建一个名为 input.txt 的文件,内容如下:

root@kitploit:~
$ cat input.txt
192.168.1.8
192.168.1.9
192.168.3.1
192.168.2.14

然后我们可以如下运行脚本:

root@kitploit:~
$ sudo python project-memoria-detector.py --in-file input.txt

该脚本使用默认端口值来对 SSH (22)、FTP (21) 和 HTTP (80) 等不同协议进行指纹识别。要覆盖这些默认值,您可以设置如下标志:

root@kitploit:~
$ sudo python project-memoria-detector.py -ip_dst 192.168.212.42 --tcp-port 80 --http-port 80 --ssh-port 22 --ftp-port 21 -i eth1

解读结果

脚本将输出与各个指纹的匹配结果以及括在圆括号中的确定度:

root@kitploit:~
$ sudo python project-memoria-detector.py 192.168.6.42

192.168.6.42 is alive
        ICMP => uIP/Contiki (High)
        TCP => uIP/Contiki (Medium)
        HTTP => uIP/Contiki (High)
        SSH => Unknown (No match)
        FTP => Unknown (No reply)

特定指纹的确定度可以是 High、Medium 或 Low。No match 表示与任何已知指纹都不匹配,No reply 表示特定端口/服务不可用。

许可证

版权所有 (C) 2020 Forescout Technologies, Inc.

程序许可证

“程序”指根据本许可证授权的任何受版权保护的作品。每位被许可人称为“您”。

根据本许可证授予的所有权利均在该程序的版权期限内授予,且在满足所述条件的情况下是不可撤销的。本许可证明确允许您在个人、政府、商业或非营利目的下运行未修改的程序。您被禁止在商业目的的衍生作品中使用本程序。您被禁止修改本程序以用于商业产品或服务,无论是单独使用还是与其他代码结合使用,无论是可下载的形式还是作为服务访问。“衍生作品”指任何基于(或衍生自)本程序的源代码或目标代码作品,并且其编辑修订、注释、阐述或其他修改整体上构成原创作者作品。

您可以以任何媒介逐字复制您收到的程序源代码,前提是您在每份副本上显著且适当地发布适当的版权声明;保留所有关于本许可证适用于该代码的通知;保留所有关于无任何担保的通知;向所有接收者提供本许可证以及程序副本;并且不得通过单独或与其他代码结合(无论是下载还是作为服务访问)出售或转让本程序而获得经济利益。

本软件按“原样”提供,不附带任何明示或暗示的担保,包括但不限于对适销性、特定用途适用性和非侵权性的担保。在任何情况下,作者或版权持有者均不对任何索赔、损害赔偿或其他责任负责,无论是在合同诉讼、侵权行为或其他方面,均由本软件或本软件的使用或其他交易引起、产生或与之相关。

本许可证不授予使用许可方的商号、商标、服务标记或产品名称的许可,除非为合理和常规地描述程序的来源以及再现版权通知的内容所必需。

下载工具