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

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

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

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

工具目录

分类

查看所有分类
Loading categories
Labtainers — Labtainers:一个基于Docker的网络实验室框架 | Kitploit
工具/GitHubGitHub/mfthomps/labtainers
漏洞分析取证分析Web安全网络安全数字取证密码学CTF渗透测试入侵检测学习与教育二进制利用实验室与实践
3107958个月前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
GitHub
mfthomps/labtainers

Labtainers

Labtainers:一个基于Docker的网络实验室框架

查看仓库网站
分享

Labtainers: 基于 Docker 的网络安全实验框架

Labtainers 包含超过 50 个网络安全实验练习和用于构建你自己实验的工具。导入单个虚拟机设备或在 Linux 系统上安装后,你的学生就无需再进行配置和管理设置,即可开始这些以及未来的实验练习。

  • 通过 Docker 容器实现一致的实验执行环境和自动化部署
  • 在中等性能的笔记本电脑上运行多组件网络拓扑
  • 学生实验活动和进度的自动化评估
  • 个性化的实验练习,防止分享解决方案

Labtainers 提供受控且一致的执行环境,学生可以完全在计算机内部完成实验,无论学生计算机上安装的是哪种 Linux 发行版和软件包。Labtainers 可以在我们的虚拟机设备上运行,也可以在任何安装了 Docker 的 Linux 系统上运行。此外,Labtainers 还以基于云的虚拟机形式提供,例如在 Azure 上(详见学生指南)。

安装和使用请参阅学生指南,学生评估请参阅教师指南。开发和自定义实验练习在设计者指南中有详细说明。有关该框架的更多信息,请参阅论文。 Labtainers 网站以及下载(包括预装 Labtainers 的虚拟机设备)位于 https://nps.edu/web/c3o/labtainers。

发行版本创建于:2026 年 1 月 6 日 12:28
修订版本:v1.4.4i
提交:4f868e24
分支:master

目录

分发与使用

目录指南

支持

发布说明

分发与使用

请参阅许可和分发信息 见 docs/license.md 文件。

目录指南

  • scripts/labtainers-student -- 运行和测试学生实验的工作目录。 你必须在此目录下才能运行学生实验。

  • scripts/labtainers-instructor -- 运行和测试自动化评估以及查看学生结果的工作目录。

  • labs -- 每个实验的特定文件

  • setup_scripts -- 用于安装 Labtainers 和 Docker 以及更新 Labtainers 的脚本

  • docs -- labdesigner.pdf 和其他文档的 LaTeX 源代码。

  • UI -- Labtainers 实验编辑器源代码 (Java)。

  • headless-lite -- 用于管理 Docker 工作站和 Labtainers 云实例(没有原生 X11 服务器的系统)的脚本。

  • scripts/designer -- 用于构建新实验和管理基础 Docker 镜像的工具。

  • config -- 系统范围配置设置(这些不是实验特定的配置设置)。

  • distrib -- 分发支持脚本,例如用于将实验发布到 Docker Hub。

  • testsets -- 测试过程和预期结果。(每个实验的 SimLab 驱动不在分发范围内)。

  • pkg-mirrors -- 用于内部 NPS 软件包镜像的实用脚本,以减少测试和分发期间的外部软件包拉取。

支持

使用 GitHub 问题报告,或发送电子邮件至 [email protected]

另见 https://my.nps.edu/web/c3o/support1

发布说明

标准的 Labtainers 分发版本不包含开发新实验所需的文件。如需这些文件,请从 labtainer/trunk/setup_scripts 目录运行 ./update-designer.sh。

安装脚本和 update-designer.sh 脚本会设置环境变量,因此你可能需要注销/重新登录,或在首次使用 Labtainers 之前启动一个新的 bash shell。

2026 年 1 月 6 日

  • 修复了安装脚本中因缩进引入的错误。

2025 年 12 月 30 日

  • 修改 checkwork 报告格式为垂直显示;新增 headless 视频指南;便捷路径

2025 年 10 月 15 日

  • 修订了 packet-introspection 实验,更新了 maxmind 地理定位数据库的链接,并提示使用旧版数据库。

2025 年 4 月 24 日

  • 修复了 imodule 正确创建缺失目录的问题,对应拉取请求 #96

2024 年 11 月 22 日

  • 替换了 Google Cloud 虚拟机,原因是容器内 systemd 失败。

2024 年 9 月 23 日

  • 替换了 Google Cloud 虚拟机,使用了错误的 Docker 版本

2024 年 9 月 10 日

  • imodule 路径创建中的拼写错误

2024 年 7 月 26 日

  • 修改 capinout 不再使用 grantpt clib 函数,该函数在容器中运行时似乎会崩溃。

2024 年 7 月 22 日

  • 为 Ubuntu22 添加基础容器,并对框架进行相应更改。

2024 年 7 月 5 日

  • 迁移至 Ubuntu 24 作为虚拟机设备
  • docker python 包使用了损坏的 python http 库,需要降级软件包。
  • 使用虚拟 Python 环境以避免 Ubuntu 对 Python 软件包的锁定。
  • 添加启动参数以允许容器和虚拟机之间共享 systemd。
  • 在更新时重定向来自损坏的 tar 工具的错误消息。
  • 对于版本 18 的虚拟机,Ubuntu 更新破坏了 msc 软件包(见 update-ubuntu.sh)
  • docker-compose 命令已损坏,请使用 "docker compose"
  • 在 headless labtainers 中强制设置 socket 权限。
  • 更新 headless Labtainers 以使用 Ubuntu 24

2023 年 11 月 27 日

  • 在 ec2 机器上添加 Ubuntu22 的 Google Cloud Platform 选项。

2023 年 9 月 18 日

  • 先前的修复实现存在缺陷。

2023 年 8 月 8 日

  • 处理 DockerHub 镜像 json 格式的更改。感谢 Kees!

2023 年 4 月 17 日

  • 强制使用最新实验版本,例如使用 iptables2 而不是 iptables。修复 Tab 补全仅显示最新版本的问题。(问题 #77)
  • CyberCIEGE 实验因 X11 竞争条件安装失败。(问题 #76)
  • 在 CyberCIEGE 自述文件中添加注释,指导学生将收集的日志保存到 $HOME 目录。(问题 #75)
  • Radius 实验的 checkwork 错误地报告 "radiusd not running",缺少 prestop 脚本。(问题 #74)
  • 当使用 MACVLAN_EXT 选项时,Labedit 损坏了启动配置文件。(问题 #73)

2023 年 2 月 1 日

  • 非默认用户的 Bash 历史记录未保存。 2023 年 1 月 26 日
  • 修改了 gcloud 的 powershell 脚本,使用选定区域来限定 VM 名称。 2023 年 1 月 4 日
  • 使用 Ubuntu 22 中存在的较新 systemd 时,使用 systemd 的容器失败。
  • 为 google cloud 脚本添加 --zone 参数,其值来自 set_defaults 脚本。 2022 年 12 月 21 日
  • 修复 xforge 结果标准,不要求路径名,并添加检查是否向编辑配置文件发出了 POST 请求。修复攻击者 http 服务器从主目录运行的问题。 2022 年 12 月 19 日
  • 添加 strace 实验以介绍系统调用跟踪。
  • 如果 /tmp/.X11-unix 目录中有多个设备,则 X11 DISPLAY 值不正确。
  • 使用无参数的 python/bash/sh/etc 导致 capinout 崩溃。 2022 年 12 月 9 日
  • 修改 Azure vm 创建脚本,使用来自 Azure 社区库的预构建 Labtainer VM 镜像。
  • 云 VM 上的终端在启动或右键单击终端时因未知原因崩溃。尝试通过启动/停止一个终端来解决。 2022 年 12 月 5 日
  • 收集文件时,包含来自非默认用户目录的修改文件,例如他们的 bash 历史记录。
  • 更改 web 评估以显示新的 "其他用户" 文件。
  • 在每个容器的 .local/bin 中包含文件作为文件。旨在通过 web 评估使教师可以使用这些文件。
  • 在 ACL 实验中,将 /shared_data/bob/fun 文件包含在结果中,供教师参考。
  • 捕获从命令行使用 "sh" 或 "bash" 的情况,并在解析给定命令时跳过,例如 "time" 或 "sudo"。
  • 在 tcpip 实验中,在后续实验会话中无法通过 ssh 进入服务器,/run/sshd 目录未重新创建。 2022 年 11 月 16 日
  • 修复 snort 实验中 Snort 手册的路径。
  • 在 ossec 手册中修复 manage_agents 的路径 2022 年 10 月 12 日
  • Google Cloud:从 gnome-terminal 命令中移除后台操作符,在右键单击时仍然崩溃,但运行 newterm.sh 后似乎稳定。 2022 年 10 月 10 日
  • 修复 Google Cloud newterm.sh;将启动盘扩展至 30G。 2022 年 9 月 20 日
  • 在实验手册中注明 TCP/IP 实验的用户 ID 和密码。 2022 年 8 月 30 日
  • 从容器的 .profile 设置 DISPLAY 时,使用 X11 socket 名称。 2022 年 8 月 9 日
  • 修复 grader 中 processValueMax 函数的名称。问题 #63

2022 年 8 月 4 日

  • labedit 程序使用错误的 JDK 重建,导致较旧的 JRE 无法运行 labedit

2022 年 7 月 18 日

  • 在 IModules 内创建基于 Ubuntu20 的容器失败。问题 #61。

2022 年 3 月 23 日

  • 修复指向 tap 锁定目录的路径;导致使用网络 tap 的实验失败。
  • 更新 plc-traffic netmon 计算机,使其具有新的 grassmarlin 在 Java 环境中所需的 openjfx
  • 通过避免 chown -R(在 docker 中非常慢)来加快实验启动速度。
  • 再次尝试避免删除容器 /tmp 目录中的 X11 链接。
  • 修复 webtrack 对访问站点的计数,并移除 live-headers 目标,该工具已不再可用。 澄清了一些实验手册步骤。

2022 年 3 月 2 日

  • 新增 ssh-tunnel 实验(感谢 GWD!)
  • 修复 labedit 未能反映 new_lab_setup 设置的 X11 值
  • 添加选项以不对容器进行参数化

2022 年 2 月 23 日

  • labedit 在添加新容器后损坏了 start.config
  • 学生 README 文件中学生指南的路径不正确;为云配置动态更改
  • update-labtainer.sh 的扩展名不正确
  • Msc 指南增强
  • 更新 ghidra 实验,包含 Ghidra 版本 10.1.2

2022 年 2 月 15 日

  • 将 Azure 云支持恢复为为每个学生配置。Azure 不鼓励共享资源。

2022 年 1 月 24 日

  • Azure 云现在使用存储在 Azure blob 中的镜像,而不是为每个学生配置。
  • 添加了对 Google Cloud 的支持。

2022 年 1 月 19 日

  • 在 Azure 云上引入 Labtainers。有关如何使用,请参阅学生指南。

2022 年 1 月 3 日

  • 修订 setuid-env 实验,添加更好的评估;simlab 测试,并在 printenv 子进程中避免 sighup。
  • 修复评估目标计数指令,排除结果标签值为 false 的情况。
  • 当使用带有调试选项启动的 grader 时,使用 gradelab -a 不需要 labname。
  • 修订 capinout(stdin/stdout 镜像)以处理命令进程子进程的孤儿化,改进文档和错误处理。
  • 添加 Docker 镜像拉取进度条的显示(首次运行实验时)。
  • 容器初始化进度的用户反馈。
  • pcap-lib 实验缺少自动化评估所需的 notify 文件;从实验手册中移除多余的步骤。

2021 年 11 月 23 日

  • 在测试虚拟机上禁用 ubuntu 弹出错误。
  • 修复处理不同 DISPLAY 变量格式的问题。

2021 年 10 月 22 日

  • 修订 tcpip 实验指南,说明成功的 SYN Flood 攻击是不可能的。修复其自动化评估并添加 SimLab 脚本。
  • 将文件扩展名从 zip 更改为 lab,并添加前导以混淆 GUI 文件管理器。学生们之前会打开 zip 文件并提交其中内容。
  • 使 gradelab 的 -r 选项成为默认选项,添加 -c 选项用于累积使用 grader。
  • 修改 refresh_mirror 以参考本地发布日期,避免频繁查询 DockerHub。每次查询都算作一次镜像拉取,现在他们正试图从中获利。

2021 年 9 月 30 日

  • 更改 bufoverflow 实验指南和评分,不期望在启用 ASLR 时成功,评估是否运行了该实验。
  • Web grader 在缺少学生结果时的错误处理。
  • 当运行过时的实验时打印警告。
  • 更改 formatstring 评分,移除未使用的 "_leaked_secret" 描述,并澄清 leaked_no_scanf 的值。
  • 还更改 formatstring 评分,允许易受攻击的可执行文件使用任何名称。

2021 年 9 月 29 日

  • Gradelab 错误处理,减少因损坏的 zip 文件导致崩溃的情况。
  • 将 stdout 文件的大小限制为 1MB

2021 年 9 月 17 日

  • Ghidra 实验指南中的 IP 地址错误,未从源代码重新生成。

2021 年 9 月 14 日

  • 使用 SSL 的 LDAP 和 Mariadb 示例实验。旨在作为新实验的模板。
  • 处理 Mariadb 日志格式
  • 添加每个容器的参数,以限制 CPU 使用或将容器固定到 CPU 集。
  • Labpack 创建现在可通过 GUI (makepackui) 使用。
  • labtainer、labpack 和 gradelab 命令的 Tab 补全。
  • 使用 MPI 的新并行计算实验 "parallel"。

2021 年 8 月 3 日

  • 添加 "WAIT_FOR" 配置选项,使容器等待另一个容器完成其参数化后再进行参数化。
  • 在结果解析中支持 Mariadb 日志格式。
  • 移除对 Mac 和 Windows 使用 Docker Desktop 的支持。该产品太不稳定,我们无法支持。
  • 当用户使用内置 bash 命令(如 "which")时,抑制 stderr 消息。
  • 对 makepack/labpack 程序的错误修复。

2021 年 7 月 19 日

  • 添加 DNS 实验以介绍 DNS 协议和配置。
  • 修订 VirtualBox 设备镜像,以使用正确的更新脚本启动。
  • 将 resolv.conf 的 nameserver 参数从 lab_gw 配置字段中分离出来,成为独立的值。
  • 如果在任何实验启动之前运行,IModule 命令会失败。

2021 年 7 月 5 日

  • DISPLAY 环境变量管理中的错误破坏了 Docker Desktop 上的 GUI 应用程序。

2021 年 7 月 1 日

  • 支持 Mac 软件包安装无头 Labtainers。
  • routing-basics 实验的自动化评估失败,因为缺少 treataslocal 文件。
  • 纠正 routing-basics 实验中的拼写错误和错误地址,并修复自动化评估。
  • pcapanalysis 的评估失败。

2021 年 6 月 10 日

  • 所有实验手册 PDF 现在都在 github 仓库中
  • 将 vpnlab 和 vpnlab2 的说明转换为 PDF 实验手册。

2021 年 5 月 25 日

  • 为每个实验添加可搜索关键字。用法见 "labtainer -h"。
  • 扩展 routing-basics 实验和实验手册
  • 移除 routing-basics2 实验,现在它已经是冗余的。
  • 某些容器上的 sudo 失败,因为主机名移除了下划线,导致与 hosts 文件不匹配。通过在 hosts 文件中添加额外条目(使用去掉下划线的容器名称)来修复。
  • 新的 Labpack 功能,用于打包一组实验,以及用于创建 Labpack 的 makepack 工具。
  • 在使用 ubuntu20 时检查 /sbin 目录的错误——这会导致静默致命错误。
  • 新的 network-basics 实验

2021 年 5 月 5 日

  • 引入新的用户实验,介绍用户/组管理
  • 在 centos 容器 syslog 中抑制 Apparmor 主机消息

2021 年 4 月 28 日

  • 新的 base2 镜像缺少手册页。使用 unminimize 在基础镜像中恢复它们。
  • 引入 OSSEC 主机入侵检测系统实验。

2021 年 4 月 13 日

  • CyberCIEGE 实验失败,因为在通过 fixlocal 启动 Wine 之前未重新定位 X11 socket。

2021 年 4 月 9 日

  • 新的 gdb-cpp 教程实验,用于在简单的 C++ 程序上使用 GDB。
  • 浮点异常暴露了用于 stdin/stdout 镜像的 exec_wrap.sh 的使用。

2021 年 4 月 7 日

  • 当迁移到 Ubuntu 20 时,ldap 实验失败。问题追溯到 nscd 密码缓存的错误。将 ldap 迁移到 Ubuntu 20

2021 年 3 月 23 日

  • 使用 RANDOM 进行参数化不包括上界。
  • 为 RANDOM 添加可选步长参数,例如确保单词边界。
  • db-access 实验:向数据库计算机添加 mysql-workbench。
  • 新的 overrun 实验,说明超出 C 数据结构边界的内存引用。
  • 新的 printf 实验,介绍 printf 函数进行的内存引用。

2021 年 3 月 19 日

  • gradelab 忽略 makdirs 错误,Windows 在共享文件夹上 rmtree 的问题。
  • gradelab 处理学生 zip 文件名中的空格。
  • gradelab 处理来自 Moodle 的 zip 文件名,包括构建下载。

2021 年 3 月 12 日

  • labedit UI:从基础镜像列表中移除旧的 wireshark 镜像。
  • labedit UI:增加一些字体大小。
  • 如果手册名称不符合命名规范,grader Web 界面无法显示实验手册。

2021 年 3 月 11 日

  • labedit UI 添加注册表设置在新的全局实验配置面板中。

2021 年 3 月 10 日

  • labedit UI 修复:如果实验中有语法错误则不构建。
  • labedit UI "实验运行中" 指示器修复以反映当前实验。

2021 年 3 月 8 日

  • 弃用 HOST_HOME_XFER 的使用,所有实验使用 labtainer.config 文件中的目录。
  • 在 start.config 中添加 REGISTRY 和 BASE_REGISTRY 的文档注释。

2021 年 3 月 5 日

  • gradelab Web 界面在缺少结果时的错误处理。
  • labedit 添加 precheck,msc 错误修复。

2021 年 2 月 26 日

  • dmz-example 实验在某些组件上的路由和 dnsmasq 设置存在错误。

2021 年 2 月 18 日

  • UI 正在重建镜像,因为它无理由地更新了文件时间。
  • 清理 UI 代码以移除一些冗余数据副本。

2021 年 2 月 14 日

  • 向 UI 添加本地构建选项。
  • 为 centos6 基础创建空的 faux_init。

2021 年 2 月 11 日

  • 修复 UI 处理编辑文件的方式。修订布局并消除未使用的字段。
  • 添加 ubuntu20 base2 基础配置以及 ssh2、network2 和 wireshark2。
  • 新的 wireshark 解决了黑屏/无窗口的问题。
  • 将 /tmp/.X11-unix 映射到 /var/tmp 并创建一个链接。Ubuntu20 需要(正在删除 /tmp?)并且可能修复其他问题。

2021 年 2 月 4 日

  • 为结果文件添加 SIZE 选项。
  • 简化 wireshark-intro 的评估和参数化,并添加 PDF 实验手册。
  • 将参数列表值作为环境变量提供给 pregrade.sh 脚本。
  • 在 grader 上启用 X11。
  • 将 update-designer.sh 放入用户路径。

2021 年 1 月 19 日

  • 更改 README 日期/修订的管理方式,使其在源仓库中更新文件。
  • 引入用于创建/编辑实验的 GUI——参见 labedit 命令。

2020 年 12 月 21 日

  • 当从 VirtualBox 共享文件夹复制 zip 文件时,gradelab 函数失败。
  • 更新教师指南,描述在主机计算机上管理学生 zip 文件的方法。

2020 年 12 月 4 日

  • 将 tar 的分发过渡到 GitHub 发布文件。
  • 消除单独的 designer tar 文件,使用 git 仓库 tarball。
  • 测试 grader web 功能,用于分析学生实验文件。
  • 从完整 smoketest 中清除日志,并在 removelab 命令中删除 grader 容器。

2020 年 12 月 1 日

  • iptables2 实验评估依赖于随机端口对 nmap 来说是 "未知" 的。
  • 使用同步目录延迟 smoketests 在实验启动前开始。
  • 开始集成 Lab designer UI 元素。

2020 年 10 月 13 日

  • 在 Mac 和 Windows 的 Docker Desktop 上运行的无头配置。
  • 无头服务器支持,用于云部署的 cloud-config 文件。
  • 对无头配置的测试支持。
  • 强制 mynotify 在启动时等待 rc.local 运行。
  • 改进 mynotify 服务将输出合并到单个时间戳的能力。
  • stopgrade 脚本使用 Python3。
  • SimLab 现在使用 docker top 而不是系统 ps。

2020 年 9 月 26 日

  • 清理 stoplab 脚本以忽略非实验容器。
  • 添加 db-access 数据库访问控制实验,用于控制 mysql 数据库的共享。

2020 年 9 月 17 日

  • macs-hash 实验由于 X11 设置无法运行 Leafpad。
  • Grader 日志记录被重定向到错误的日志文件,现在可以捕获 instructor.py 的错误。
  • 如果出现错误,将 instructor.log 从 grader 复制到主机的日志目录。

2020 年 8 月 28 日

  • 修复安装脚本以使用 python3-pip,并修复损坏的脚本:getinfo.py 和 pull-all.py。
  • 注册表逻辑损坏,测试系统未使用测试注册表,添加开发文档。
  • 为基于 OWASP 的 Web 安全实验添加 juiceshop 和 owasp 基础文件。
  • 从 check_nets 中移除不必要的 sudo。
  • 添加 CHECK_OK 文档指令用于自动化评估。
  • 更改 check_nets,如果指示这样做,则修复 iptables 和路由问题。

2020 年 8 月 12 日

  • 为 prestop 脚本添加超时。
  • 向 dmz-lab 添加测验和 checkwork。
  • 在不使用 -r 选项的情况下重新启动 dmz-lab 会破坏 ISP 之外的路由。
  • 允许 time_delim 结果使用多个文件。2020年8月6日
  • 修复X11套接字缺失时的错误处理
  • 测验问题中的逗号导致解析错误
  • 为iptables2实验添加测验和检查功能

2020年7月28日

  • 添加测验支持——这些是指引性测验,而非评估性测验。请参阅设计指南。
  • 添加当前状态评估,用于checkwork命令。

2020年7月21日

  • 将testsets/bin添加到设计者路径
  • 修正设计指南中对IModule步骤的解释
  • 添加RANGE_REGEX结果类型,用于基于日志条目的正则表达式定义时间范围
  • 在启动实验时,若需要X11套接字,检查其是否存在
  • 添加mysql基础镜像
  • 在结果解析中处理mysql日志时间戳格式

2020年6月15日

  • 新增包含Bird开源路由器的基础镜像
  • 添加bird-bgp边界网关协议实验
  • 添加bird-ospf开放最短路径优先路由协议实验
  • 改进DNS变更处理,此前部分站点中外部容器访问被阻断
  • 在讲师指南中添加关于在无互联网环境中使用Labtainers的小节

2020年5月21日

  • 将所有仓库迁移至Docker Hub labtainers注册表
  • 支持在start.config中定义的挂载点,以实现持久化软件安装
  • 将ida实验改为使用IDA持久化安装——新名称为ida2
  • 添加cgc实验,用于探索DARPA网络挑战赛中的200多个脆弱服务
  • 在SimLab中添加type_string命令
  • 添加netflow实验,用于NetFlow网络流量分析
  • 添加bufoverflow和formatstring实验的64位版本

2020年4月9日

  • 文件选择中使用通配符时,评分器对CONTAINS和FILE_REGX条件的评估失败
  • 在symlab实验中增加关于使用hexedit的提示
  • 在自动评估中添加hash_equal操作符和hash-goals.py,避免在配置文件中公布预期答案
  • 为pcap-lib实验添加自动评估

2020年4月7日

  • 日志已移至$LABTAINER_DIR/logs
  • 其他清理工作以支持使用Jenkins进行重建和测试,包括为构建使用唯一的临时目录
  • 将构建支持函数从labutils移至build.py
  • 添加pcap-lib实验,基于PCAP库开发流量分析程序

2020年3月13日

  • 添加plc-traffic实验,使用GrassMarlin分析实验期间生成的流量
  • 引入添加“tap”容器以从选定网络收集PCAP的功能
  • 更新GNS3文档,说明如何从外部访问容器以及使用dummy_hcd模拟USB驱动器
  • 将kali模板改为使用faux_init而非尝试使用systemd
  • 将分发文件(tar文件)移至box.com
  • 修改SimLab中netstat的使用,避免进行DNS查找

2020年2月26日

  • 若labtainer命令未找到实验,提示用户运行update-labtainer.sh
  • 添加对网络tap组件的初步支持,用于查看所有网络流量
  • 添加脚本用于获取实验镜像,以准备虚拟机在无网络环境下使用
  • 为nmap-discovery实验提供用户名和密码

2020年2月18日

  • 从主机(如虚拟机)继承DISPLAY环境变量,而非假定为:0

2020年2月14日

  • 添加Ghidra软件逆向工程入门练习

2020年2月11日

  • 更新指南,描述如何在GNS3环境中远程访问容器
  • 在GNS3中隐藏选定的组件和链接
  • webtrack实验指南中的图形不可见;nmap-ssh实验中存在拼写错误

2020年2月6日

  • 引入远程管理容器(如推送文件)的功能
  • 添加GNS3环境功能,模拟插入USB驱动器
  • 改进Docker构建错误的处理

2020年2月3日

  • 在metasploit实验中,受害者上的postgresql服务未运行
  • 将IModule手册内容合并到实验设计指南中
  • 更多IModule支持

2020年1月27日

  • 引入对IModule(讲师开发的实验)的初步支持。参见docs/imodules.pdf
  • 修复update-labtainer中的LABTAINER_DIR环境变量错误
  • 修复ACL实验中accounting.txt文件的访问模式(变为rw-r-r)。在fixlocal.sh中使用显式chmod

2020年1月14日

  • 将框架和gradelab移植到Python3(现有的Python2实验不会改变)
    • 使用向后兼容的random.seed选项
    • 破解不兼容的randint以返回旧值
    • 继续支持缺少python3的平台(或包含Python 3.5.2的旧版虚拟机设备,其破坏了random.seed兼容性)
    • 为rebuild.py添加rebuild别名,必要时选择python2
  • 基于CentOS的实验手册页面失败;在基础Docker文件中使用mandb
  • dmz-lab中DMZ网络的子网掩码错误(被python3捕获);实验手册中内部网关的IP地址也错误
  • ghex从CentOS实验中移除——CentOS 7不再支持
  • file-deletion实验必须在不重启虚拟机的情况下完成,在实验手册中注明
  • 在start.config中添加NO_GW开关,禁用容器上的默认网关
  • Metasploit实验,若以特权模式运行会崩溃宿主机;若启用systemd则su命令有长时间延迟;因此不使用systemd运行 从实验手册中移除数据库使用,配置为使用新的no_gw开关
  • 更新文件头以包含许可/条款;添加统一许可文件
  • 修改publish.py,默认使用测试注册表,使用-d强制使用默认注册表
  • 修订源代码控制流程,为每个分支使用不同的测试注册表,并为最终发布测试使用premaster分支

2019年10月9日

  • 从dmz-lab的DNS组件中移除dnsmasq。此前导致某些安装中bind失败

2019年10月8日

  • 测试注册表设置语法错误;关于大文件的实验设计者信息;获取bigexternal.txt文件

2019年9月30日

  • DockerHub注册表检索再次对某些用户失败。忽略json中的html前缀

2019年9月20日

  • onewayhash的评估应允许学生对自行选择的文件进行hmac操作

2019年9月5日

  • 重建metasploit实验,metasploit-framework存在一个bug。且实验的"treataslocal"文件在从svn迁移时被遗漏。修复metasploit实验手册中的类型错误

2019年8月30日

  • 回退对容器目录存在的检查,它们不总是存在

2019年8月29日

  • 从docker hub拉取实验镜像因github或curl更改而失败?捕获重定向到cloudflare。添加GNS3支持。修复dmz-lab dnssec

2019年7月11日

  • CentOS6容器的自动评估,修复firefox内存问题,支持start.config文件中任意的docker create参数

2019年6月6日

  • 引入Centos6基础镜像,但尚不支持自动评估

2019年5月23日

  • setuid-env的自动评估因字段分隔符拼写错误而失败

2019年5月8日

  • 修正能力实验手册

2019年5月2日

  • Acl实验修复bobstuff.txt权限。在fixlocal.sh中使用显式chmod
  • 修订学生指南,在手册正文中明确stop和-r选项的使用

2019年3月9日

  • checkwork函数重复使用容器,导致学生无法消除之前实验留下的痕迹
  • 在symkey实验附录中描述BMP图像格式

2019年2月22日

  • vpn和vpn2实验中的http服务器启动失败。从这些实验中移除自动评估,直至重新设计

2019年1月7日

  • 修复gdblesson自动评估,使其至少可运行

2019年1月27日

  • 修复routing-basics2实验手册,并修复路由以允许外部访问内部web服务器

2018年12月29日

  • 修复routing-basics2,与routing-basics相同的问题,加上网关resolv.conf中错误的IP地址

2018年12月5日

  • 修复routing-basics实验,ISP和网关组件的DNS解析中断

2018年11月14日

  • 从backups2中的归档机器移除/run/nologin——需要针对此nologin问题的通用解决方案

2018年11月5日

  • 更改file-integrity实验默认aid.conf,跟踪元数据更改而非文件修改时间

2018年10月22日

  • macs-hash实验中verydodgy.com解析在实验重启时失败
  • 若notify_cb.sh缺失,通知功能失败

2018年10月12日

  • 设置文件大小的ulimit,限制为1G

2018年10月10日

  • 强制收集参数化文件
  • 在centos-xtra基础镜像中显式包含leafpad和ghex,并重建依赖镜像

2018年9月28日

  • 修复ACL实验中共享文件的访问模式
  • 澄清pass-crack中的问题
  • 修改工件收集,忽略比实验开始时间更早的文件
  • 添加量子计算算法实验

2018年9月12日

  • 修复setuid-env评分语法错误
  • 修复iptables2示例防火墙规则中的语法错误
  • 重建CentOS实验,将lamp衍生镜像改为使用lamp.xtr进行waitparam,并强制httpd等待该过程完成

2018年9月7日

  • 添加CyberCIEGE实验
  • 在拉取镜像前显示read_pre.txt信息,并提供放弃机会

2018年9月5日

  • 恢复gradelab功能中的sakai批量下载处理
  • 移除未使用的讲师脚本

2018年9月4日

  • 允许每个网络接口有多个IP地址
  • 添加Wine基础镜像
  • 添加GRFICS虚拟ICS仿真

2018年8月23日

  • 添加GrassMarlin实验(ICS网络发现)

2018年8月23日

  • 添加GrassMarlin实验(ICS网络发现)

2018年8月21日

  • 修复AWS认证问题(DockerHub使用AWS)
  • 修复new_lab_setup.py使用git而非svn
  • 将plc-forensics实验拆分为基础实验和高级实验(plc-forensics-adv)

2018年8月17日

  • 过渡到使用git和GitHub作为权威仓库

2018年8月15日

  • 修改plc-forensics实验评估,使其更通用;修订实验手册以反映Labtainer中的wireshark使用

2018年8月15日

  • 添加"checkwork"命令,允许学生查看其实验工作的自动评估结果
  • 在iptables2和iptables-ics实验中包含iptables数据包丢弃日志
  • 从goal.config中移除已废弃的is_true和is_false实例
  • 修复布尔评估以处理"NOT foo",此前期望更多操作数

2018年8月9日

  • 支持results.config文件中的参数替换
  • 为results.config添加TIME_DELIM结果类型
  • 重做iptables实验,移除隐藏的nmap命令,引入自定义服务

2018年8月7日

  • 在labtainer-student目录中添加学生指南链接
  • 在虚拟机桌面上添加学生指南链接
  • 修复iptables-ics以避免关闭时长时间延迟;修复回归测试
  • 在指南中添加说明,建议学生使用虚拟机浏览器将工件zip文件传输给讲师

2018年8月1日

  • 为自动评估使用通用Docker镜像;停止为每个实验创建"instructor"镜像

2018年7月30日

  • 记录在fixlocal.sh脚本启动需要waitparam的服务之前,必须先创建标志目录以解除waitparam.service的阻塞
  • 添加plc-app实验,用于PLC应用防火墙和列入白名单练习

2018年7月25日

  • 在目标处理中添加string_contains操作符
  • 修改formatstring实验评估,考虑泄露的秘密并非总在显示字符串末尾

2018年7月24日

  • 添加SSH Agent实验(ssh-agent)

2018年7月20日

  • 支持离线构建,可选择跳过所有镜像拉取
  • 将apt/yum仓库恢复操作恢复到Dockerfile模板
  • 处理来自Docker注册表blob检索的重定向URL,避免认证错误(不依赖curl --location)

2018年7月12日

  • 添加prestop功能,允许在实验关闭前在选定组件上执行设计者指定的脚本
  • 修正ssl实验中的主机命名,此前破坏了自动评估
  • 修复dmz-lab初始状态,允许内部网络进行DNS解析
  • FILE\REGEX处理未正确处理多行搜索
  • 从新重建镜像派生的框架版本具有错误的默认值

2018年7月10日

  • 添加LDAP实验
  • 完成向基于systemd的Ubuntu镜像的过渡,移除未使用的文件
  • 将lab_sys tar文件移至每个容器的临时目录以实现并发

2018年7月6日

  • 所有Ubuntu基础镜像替换为基于systemd的版本
  • 注册表中的Labtainer容器镜像现在标注了基础镜像ID,并有反映基础镜像的标签
  • 给定安装将拉取并使用与其拥有的基础镜像一致的镜像
  • 如果您使用虚拟机镜像,建议从我们的网站替换为更新的虚拟机镜像
  • 新实验需要下载更新的基础镜像才能运行,这可能导致您的虚拟机存储多个版本的大基础镜像(每个>500 MB)
  • 之前丢失了实验停止时正在运行的进程中的工件——未正确杀死capinout进程

2018年6月27日

  • 添加对Ubuntu systemd镜像的支持
  • 从labtainer-student/bin中移除旧的SimLab.py副本
  • 将apt和yum源移至/var/tmp
  • 澄清评估中使用"boolean"和"count_greater"的区别
  • 扩展start.config中的Add-HOST,以包括网络上的所有组件
  • 为new_lab_setup.py添加选项,基于现有容器副本添加容器

2018年6月21日

  • 为root设置DISPLAY环境变量
  • 修复svn状态输出的构建依赖处理
  • 添加radius实验
  • 修正SimLab中的append功能
  • 在适当时使用svn通过new_lab_setup.py更改文件名

2018年6月19日

  • 在创建具有多个标签页的终端时保留start.conf中定义的容器顺序
  • 澄清设计手册,指明评估配置文件的路径
  • 移除要求讲师提供电子邮件的提示
  • 检查版本号时出现错误的错误检查
  • 在评估json中包含实验开始和重做的时间戳
  • 添加SSL实验,包括双向认证和证书创建

2018年6月14日

  • 为参数化添加诊断,追踪为何某些安装在此步骤失败
  • 如果容器已创建,确保其已参数化,否则退出以避免损坏或不完整的容器
  • 修复程序版本号以使用svn HEAD

2018年6月15日

  • 将xterms中显示的纯文本指令转换为pdf文件
  • 修复未拉取镜像的版本处理bug
  • 检测已创建但未参数化的容器,提示用户使用"-r"选项重新启动实验
  • 添加设计者工具:rm_svn.py,使得移除的文件触发镜像重建

2018年6月13日

  • 在Ubuntu 18系统上安装xterm
  • 解决gnome-terminal标签页处理新版本中的破坏问题

2018年6月11日

  • 添加版本检查,将镜像与框架进行比较
  • 澄清多个实验手册

2018年6月2日

  • 在Ubuntu 18上安装时,使用docker.io而非docker-ce
  • capinout在"sudo su"监控命令后跟非提权用户命令时崩溃
  • 将路由和resolv.conf设置移至/etc/rc.local而非fixlocal.sh,以便在容器的启动/停止间持久化

2018年5月31日

  • 解决Docker bug,该bug导致终端中文本换行时不带换行符
  • 扩展COMMAND_COUNT以考虑管道
  • 创建backups实验的新版本,包括备份到远程服务器和备份整个分区
  • 更改sshlab指令以使用ssh-copy-id工具
  • 从parameterize.sh中删除/run/nologin文件,以允许CentOS上的ssh登录

2018年5月30日

  • 扩展new_lab_setup.py,允许指定要使用的基础镜像
  • 创建centos-log的新版本,包括集中式日志记录
  • 评估验证拒绝接受"time_not_during"选项
  • 开始集成Labtainer Master,用于从Docker容器管理Labtainers

2018年5月25日

  • 从各种服务中移除10秒的休眠。此前延迟了xinetd响应,破坏了自动化测试
  • 修复snort实验评分,仅要求警报中包含"CONFIDENTIAL"。从实验中移除未使用的文件
  • 如果程序在实验停止时正在运行,程序完成时间未被记录

2018年5月21日

  • 修复retlibc评分,移除重复的目标,此前导致自动评估失败
  • 从单个实验和实验模板中移除mynotify.py的副本,它已位于lab_sys/sbin中,但未更新以反映对acl实验的修复

2018年5月18日

  • 屏蔽exec_wrap的信号消息,使segv错误消息看起来正确
  • capinout有时丢失stdout,在cmd死亡时检查命令stdout
  • 修复formatstring评分以捕获段错误消息
  • 在SimLab中添加type_function特性,用于键入脚本的stdout(参见formatstring simlab)
  • 移除SimLab中对组合单/双引号的限制
  • 在SimLab中添加window_wait指令,暂停直到找到具有给定标题的窗口
  • 修改plc实验,更改物理世界终端的标题以反映状态,也使测试更容易
  • 修复bufoverflow实验手册链接

2018年5月15日

  • 添加关于使用SimLab工具模拟用户执行实验的附录,用于回归测试和实验开发
  • 在SimLab中添加wait_net函数,暂停直到选定的网络连接终止
  • 更改acl自动评估以使用FILE_REGEX进行多行匹配
  • 为xsite实验添加SimLab测试

2018年5月11日

  • 添加"noskip"文件,强制收集home.tar中通常忽略的文件,需要检索Firefox的places.sqlite
  • 在提取前合并sqlite数据库与预写缓冲区
  • 修正symkeylab实验手册
  • 为symkeylab和pubkey添加评分补充
  • 改进simlab工具:支持include,修复窗口命名

2018年5月9日

  • 修复file-deletion实验的参数化。修正其实验手册中的错误
  • 在python脚本中替换shell=True的使用,以减少进程并允许跟踪PID
  • 清理backups、pass-crack和macs-hash的手册

2018年5月8日

  • 处理竞态条件,防止gnome-terminal在xterm指令终端运行其命令之前执行其docker命令
  • 当讲师停止使用"-d"启动的实验时,不显示错误
  • 更改nmap-ssh的评分,以更好地反映实验意图
  • 根据github上olberger的建议修复若干文档和脚本

2018年5月7日

  • 使用基于C的capinout程序取代旧的capinout.sh来捕获stdin和stdout。参见trunk/src-tool/capinout。消除了使用ctrl-C中断监控程序以及telnet和ssh中显示密码的相关限制
  • 包括对saki bulk_download zip处理的支持,以提取单独提交的报告,并汇总缺失的提交
  • 对用户提供的电子邮件添加检查,确保是可打印字符
  • 评分时,如果用户提供的电子邮件与zip文件名不匹配,继续评分结果,但在表格中包含反映作弊的注释。需要处理学生输入垃圾电子邮件地址的情况
  • 更改telnetlab评分,不再查看tcpdump输出中的密码——capinout修复导致逐字符传输到服务器
  • 修复install-docker.sh中的拼写错误,并在该脚本中使用sudo更改docker dns设置

2018年4月26日

  • 过渡到使用"labtainer"启动实验,使用"stoplab"停止实验
  • 为labtainer命令添加--version选项
  • 添加log_ts和log_range结果类型,以及time_not_during目标操作符。重构centos-log和sys-log评分以使用这些特性
  • 将labsys.tar放入/var/tmp而非/tmp,有时会在展开前被删除
  • 虚拟机重启后,以root身份运行X应用程序失败
  • 为基于CentOS的实验添加"用户命令"手册页面
  • 修复近期阻止从学生收集docs文件的bug
  • 修改smoke-tests,仅比较学生特定的结果行,去除空白

2018年4月26日

  • 过渡到使用"labtainer"启动实验,使用"stoplab"停止实验。
  • 为labtainer命令添加--version选项。
  • 添加log_ts和log_range结果类型,以及time_not_during目标操作符。重构centos-log和sys-log评分以使用这些特性。
  • 将labsys.tar放入/var/tmp而非/tmp,有时会在展开前被删除。
  • 虚拟机重启后,以root身份运行X应用程序失败。
  • 为基于CentOS的实验添加"用户命令"手册页面。
  • 修复近期阻止从学生收集docs文件的bug。
  • 修改smoke-tests,仅比较学生特定的结果行,去除空白。2018年4月20日
  • denyhosts 服务第一次无法启动,已将启动移至 student_startup.sh。
  • 将所有 faux_init 服务移至参数化之后——rsyslog 在容器第二次启动时无法启动。

2018年4月19日

  • acl 实验未能正确评估木马步骤的性能。
  • 默认收集学生文档。
  • denyhost 实验已更新,反映当前的 denyhosts(或 tcp 包装器?)会修改 iptables。此外,denyhosts 服务有时无法启动。
  • 更新 Labtainers 时,不要覆盖比存档更新的文件——保留学生实验报告。

2018年4月12日

  • 为实验目标添加文档说明,并在教师启动实验时向教师显示。
  • 当程序处于 treataslocal 模式时,修正 precheck 函数的使用,将完整程序路径传递给 capinout.sh。
  • 在运行时而不是镜像构建期间复制 instr_config 文件。
  • 在“设计师指南”中添加关于调试自动评估的部分。
  • 实验报告文件名大小写错误。
  • 不必要的 chown 函数导致 instructor.py 有时崩溃。
  • 支持实验的自动化测试(参见 SimLab 和 smoketest)。
  • 将 testsets 和 distrib 移到 trunk 下。

2018年4月5日

  • 修订 Firefox 配置文件,移除“您有一段时间未使用 Firefox……”的消息。
  • 移除从注册表中不必要的拉取——改为通过 Docker Hub API 获取镜像日期。

2018年3月28日

  • 对于系统文件,使用显式的 tar 而不是“docker cp”(Docker 不跟随链接)。
  • 修复 backups 实验,使用单独的文件系统并更新手册。

2018年3月26日

  • 支持多用户模式(参见“实验设计师用户指南”)。
  • 移除对 lab_bin 和 lab_sys 文件的构建依赖。这些文件现在在实验参数化期间复制。
  • 将 capinout.sh 移动到 /sbin,以便以 root 身份运行时能找到它。

2018年3月21日

  • 添加 CLONE 以允许同一容器的多个实例,例如用于多个并发学生共享的实验。
  • 调整 kali-test 实验,提供 macvlan 和 CLONE 的示例。
  • 将 capinout.sh 脚本复制到 /sbin,以便 root 在 sudo su 后能找到它。

2018年3月15日

  • 支持与外部主机通信的 macvlan 网络。
  • 添加 Kali Linux 基础镜像和 Metasploitable 2 镜像(参见 kali-test)。

2018年3月8日

  • 使用 stop.py 时不再要求提供实验名称。
  • 捕获由残留网络引起的错误,并建议用户修复。
  • 添加在 NPS 使用本地 apt 和 yum 仓库的支持。

2018年2月21日

  • 添加 dmz-lab 实验。
  • 将“checklocal”更名为“precheck”,反映其在命令之前运行。
  • 解耦 inotify 事件报告与 precheck.sh 的使用,允许 inotify 事件列表包含可选输出文件名。
  • 将 bash hook 扩展到 root 操作,刷新该 bash_history。
  • 允许 start.config 字段的参数化,例如随机 IP 地址。
  • 支持监控通过 systemctl 或 /etc/init.d 启动的服务。
  • 引入时间分隔限定符,将带时间戳的日志文件组织成由感兴趣的配置更改分隔的范围(参见 dmz-lab)。

2018年2月5日

  • results.config 文件中的布尔值现在被视为目标值。
  • 添加正则表达式支持以识别工件结果。
  • 支持替代的 Docker 注册表,包括用于测试的本地测试注册表。
  • 对实验和实验手册进行多项修复。
  • capinout 监控钩子在退出时未能杀死子进程。
  • 在收集工件之前杀死被监控的进程。
  • 添加 labtainer.wireshark 作为基础容器,清理 Dockerfile。

2018年1月30日

  • 添加 snort 实验。
  • 将日志文件时间戳(例如来自系统日志)集成到带时间戳的结果中。
  • 从中间带时间戳的 JSON 结果文件中移除未定义的结果值。
  • 修改 time_during 目标评估操作,将时间戳与结果目标值关联。

2018年1月24日

  • 使用选项卡窗口导致教师端失败,改用双引号。
  • 在确定构建依赖时,忽略 _tar 目录中的文件(.tar 文件除外)。
下载工具