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

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

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

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

工具目录

分类

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
GitHub
mfthomps/labtainers

Labtainers

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

查看仓库网站
分享

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

Labtainers 包含 50 多个网络实验练习和用于构建自定义实验的工具。导入单个 VM 设备 或在 Linux 系统上安装,学生即可完成配置和管理设置,适用于当前及未来的实验练习。

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

Labtainers 提供受控且一致的执行环境,学生完全在自己的计算机范围内完成实验,不受学生计算机上安装的 Linux 发行版和软件包的影响。Labtainers 可在我们的 [VM 设备][vm-appliancee] 上运行,也可在任何安装了 Docker 的 Linux 上运行。此外,Labtainers 还可作为基于云的 VM 使用,例如在 Azure 上,详见 学生指南。

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

发行版创建时间:09/11/2026 11:33
修订版本:v1.4.4n
提交:9f1012dc
分支: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 Workstation 和 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 日

  • 修复了因缩进导致安装脚本中引入的 bug。

2025 年 12 月 30 日

  • 将 checkwork 报告格式修改为垂直显示;无头模式的视频指南;便捷路径

2025 年 10 月 15 日

  • 修订 packet-introspection 实验,更新 maxmind 地理位置数据库的链接,并注明使用旧版数据库。

2025 年 4 月 24 日

  • 修复 imodule,使其根据 pull request #96 正确创建缺失的目录

2024 年 11 月 22 日

  • 替换了 google cloud VM,这次是因为容器内 systemd 故障。

2024 年 9 月 23 日

  • 替换了 google cloud VM,其使用了错误的 Docker 版本

2024 年 9 月 10 日

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

2024 年 7 月 26 日

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

2024 年 7 月 22 日

  • 添加 Ubuntu22 的基础容器,并对框架进行更改以支持它。

2024 年 7 月 5 日

  • 迁移到 Ubuntu 24 作为 VM 设备
  • docker python 包使用了损坏的 python http 库,需要降级软件包。
  • 使用虚拟 python 环境以避免 Ubuntu 对 python 软件包的锁定。
  • 添加启动参数以允许在容器和 VM 之间共享 systemd。
  • 重定向更新时损坏的 tar 工具产生的错误消息。
  • Ubuntu 更新导致 msc 软件包损坏(参见 update-ubuntu.sh),针对版本 18 VM
  • docker-compose 命令已损坏,请使用 "docker compose"
  • 在无头 labtainers 中强制设置 socket 权限。
  • 更新无头 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 补全以仅显示最新版本。(Issue #77)
  • CyberCIEGE 实验安装因 X11 竞态条件而失败。(Issue #76)
  • 在 CyberCIEGE readme 中注明,引导学生将收集的日志保存到 $HOME 目录。(Issue #75)
  • Radius 实验 checkwork 错误地报告 "radiusd not running",缺少 prestop 脚本。(Issue #74)
  • 当使用 MACVLAN_EXT 选项时,Labedit 损坏了启动配置文件。(Issue #73)

2023 年 2 月 1 日

  • 非默认用户的 Bash 历史记录未被保存。 2023 年 1 月 26 日
  • 修改 gcloud 的 powershell 脚本,使用所选区域来限定 VM 名称。 2023 年 1 月 4 日
  • 使用 systemd 的容器在 Ubuntu 22 中较新的 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 Community Gallery 的预构建 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 函数的名称。Issue #63

2022 年 8 月 4 日

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

2022 年 7 月 18 日

  • 在 IModules 中创建基于 Ubuntu20 的容器失败。Issue #61。

2022 年 3 月 23 日

  • 修复 tap 锁目录的路径;此前导致使用网络 tap 的实验失败
  • 更新 plc-traffic netmon 计算机,使其具有 java 环境中新 grassmarlin 所需的 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 的情况。
  • 当使用带有 debug 选项启动的 grader 运行 gradelab -a 时,不要求 labname。
  • 修订 capinout(stdin/stdout 镜像)以处理命令进程子进程的孤儿化,改进文档 和错误处理。
  • 添加首次运行实验时正在拉取的 docker 镜像的进度条显示。
  • 向用户反馈容器初始化进度。
  • pcap-lib 实验缺少自动评估所需的 notify 文件;从实验手册中移除多余步骤。

2021 年 11 月 23 日

  • 在测试 VM 上禁用 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 程序的 bug 修复。

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 功能,用于打包实验集合,以及 makepack 工具用于创建 Labpacks。
  • 使用 ubuntu20 时对 /sbin 目录进行错误检查——否则会静默致命。
  • 新的 network-basics 实验

2021 年 5 月 5 日

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

2021 年 4 月 28 日

  • 新的 base2 镜像缺少 man 页面。使用 unminimize 在基础镜像中恢复它们。
  • 引入 OSSEC 基于主机的 IDS 实验。

2021 年 4 月 13 日

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

2021 年 4 月 9 日

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

2021 年 4 月 7 日

  • ldap 实验在迁移到 Ubuntu 20 时失败。问题追溯到 nscd 缓存 pwd 的问题。将 ldap 迁移到 Ubuntu 20

2021 年 3 月 23 日

  • 使用 RANDOM 进行参数化时未包含上限。
  • 为 RANDOM 添加可选的 step 参数,例如用于确保单词边界。
  • 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 在新的全局实验配置面板中添加 registry 设置。

2021 年 3 月 10 日

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

2021 年 3 月 8 日

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

2021 年 3 月 5 日

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

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 release 工件
  • 消除单独的 designer tar 文件,使用 git 仓库 tarball。
  • 测试 grader web 功能以分析学生实验工件
  • 从完整 smoketest 中清除日志,并在 removelab 命令中删除 grader 容器。

2020 年 12 月 1 日

  • iptables2 实验评估依赖于随机端口对 nmap 是 "unknown" 的。
  • 使用同步目录延迟 smoketest 在实验启动之前开始。
  • 开始集成 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
  • Registry 逻辑损坏,测试系统未使用测试 registry,添加开发文档。
  • 为基于 OWASP 的 web 安全实验添加 juiceshop 和 owasp 基础文件
  • 从 check_nets 中移除不必要的 sudos
  • 为自动评估添加 CHECK_OK 文档指令
  • 更改 check_nets 以在指示时修复 iptables 和路由问题。

2020 年 8 月 12 日

  • 为 prestop 脚本添加超时
  • 为 dmz-lab 添加 quiz 和 checkwork
  • 不使用 -r 选项重新启动 dmz-lab 会破坏 ISP 的路由。
  • 允许 time_delim 结果使用多个文件。August 6, 2020
  • 当 X11 socket 缺失时错误处理中的 bug
  • quiz 问题中的逗号导致解析错误
  • 将 quiz 和 checkwork 添加到 iptables2 实验

July 28, 2020

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

July 21, 2020

  • 将 testsets/bin 添加到设计者的路径中
  • 设计者指南更正以及 IModule 步骤的说明。
  • 添加 RANGE_REGEX 结果类型,用于通过对日志条目使用正则表达式来定义时间范围。
  • 在启动实验时,如果需要 X11 socket,则检查其是否存在。
  • 添加 mysql 的基础镜像
  • 在结果解析中处理 mysql 日志时间戳格式。

June 15, 2020

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

May 21, 2020

  • 将所有仓库移至 Docker Hub labtainers registry
  • 支持在 start.config 中定义的挂载,以允许持久化软件安装
  • 将 ida 实验改为使用 IDA 的持久化安装——新名称为 ida2
  • 添加 cgc 实验,用于探索来自 DARPA Cyber Grand Challenge 的 200 多个易受攻击的服务
  • 向 SimLab 添加 type_string 命令
  • 添加 netflow 实验,用于 NetFlow 网络流量分析
  • 添加 bufoverflow 和 formatstring 实验的 64 位版本

April 9, 2020

  • 当使用通配符进行文件选择时,评分器对 CONTAINS 和 FILE_REGX 条件的评估失败。
  • 在 symlab 实验中包含使用 hexedit 的提示。
  • 向自动评估添加 hash_equal 运算符和 hash-goals.py,以避免在配置文件中发布预期答案。
  • pcap-lib 实验的自动评估。

April 7, 2020

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

March 13, 2020

  • 添加 plc-traffic 实验,用于将 GrassMarlin 与实验期间生成的流量配合使用。
  • 引入添加“tap”容器的能力,以从选定网络收集 PCAP。
  • 更新 GNS3 文档,涉及容器的外部访问,以及使用 dummy_hcd 模拟 USB 驱动器。
  • 将 kali 模板改为使用 faux_init,而不是尝试使用 systemd。
  • 将发行版(tar 文件)移至 box.com
  • 更改 SimLab 对 netstat 的使用,使其不进行 DNS 查找。

February 26, 2020

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

February 18, 2020

  • 从主机(例如 VM)继承 DISPLAY 环境变量,而不是假定为 :0

February 14, 2020

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

February 11, 2020

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

February 6, 2020

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

February 3, 2020

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

January 27, 2020

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

January 14, 2020

  • 将框架和 gradelab 移植到 Python3(现有 Python2 实验不会更改)
    • 使用向后兼容的 random.seed 选项
    • 修改不兼容的 randint 以返回旧值
    • 继续为缺乏 python3 的平台(或那些包含 python 3.5.2 的较旧 VM 设备,这会破坏 random.seed 兼容性)支持 python2。
    • 为 rebuild.py 添加 rebuild 别名,以便在需要时选择 python2。
  • 基于 Centos 的实验的 manpages 失败;在基础 docker 文件中使用 mandb
  • dmz-lab 中 DMZ 网络的 netmask 错误(被 python3 捕获);实验手册中内部网关的 IP 地址也错误
  • 从 centos 实验中移除 ghex——centos 7 不再容易支持
  • file-deletion 实验必须在不重启 VM 的情况下完成,请在实验手册中注明这一点。
  • 向 start.config 添加 NO_GW 开关,以禁用容器上的默认网关。
  • Metasploit 实验,如果以特权运行会导致主机 VM 崩溃;如果启用 systemd,su 会出现长时间延迟;因此在不使用 systemd 的情况下运行。 从实验手册中移除数据库的使用,配置为使用新的 no_gw 开关
  • 更新文件头以用于许可/条款;添加合并的许可证文件。
  • 修改 publish.py,使其默认使用测试 registry,使用 -d 强制使用 default_registry
  • 修订源代码控制流程,为每个分支使用不同的测试 registry,并使用 premaster 分支进行发布的最终测试。

October 9, 2019

  • 从 dmz-lab 的 dns 组件中移除 dnsmasq。它在某些安装中导致 bind 失败。

October 8, 2019

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

September 30, 2019

  • 对某些用户而言,DockerHub registry 检索再次失败。忽略 json 的 html 前缀。

September 20, 2019

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

September 5, 2019

  • 重建 metasploit 实验,metasploit-framework 表现出一个 bug。并且实验的“treataslocal”文件在从 svn 迁移时被遗漏。修复 metasploit 实验手册中的类型。

August 30, 2019

  • 回退对容器目录是否存在的测试,它们并不总是存在。

August 29, 2019

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

July 11, 2019

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

June 6, 2019

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

May 23, 2019

  • 由于字段分隔符中的拼写错误,setuid-env 的自动评估失败。

May 8, 2019

  • 对 Capabilities 实验手册的更正

May 2, 2019

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

March 9, 2019

  • checkwork 函数复用了容器,从而阻止学生消除先前实验工作留下的痕迹。
  • 向 symkey 实验添加附录,以描述 BMP 图像格式。

February 22, 2019

  • http 服务器在 vpn 和 vpn2 实验中未能启动。在这些实验重做之前,已移除自动评估。

January 7, 2019

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

January 27, 2019

  • 修复 routing-basics2 的实验手册,并修复路由以启用对内部 web 服务器的外部访问。

December 29, 2018

  • 修复 routing-basics2,与 routing-basics 存在相同问题,另外网关 resolv.conf 中有一个错误的 IP 地址

December 5, 2018

  • 修复 routing-basics 实验,isp 和 gatway 组件上的 DNS 解析曾损坏。

November 14, 2018

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

November, 5, 2018

  • 将 file-integrity 实验默认的 aid.conf 改为跟踪元数据变更,而不是文件修改时间

October 22, 2018

  • macs-hash 实验在实验重启时对 verydodgy.com 的解析失败
  • 如果缺少 notify_cb.sh,notify 函数会失败

October 12, 2018

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

October 10, 2018

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

September 28, 2018

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

September 12, 2018

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

September 7, 2018

  • 添加 CyberCIEGE 作为实验
  • 在拉取镜像之前显示 read_pre.txt 信息,并提供退出机会。

September 5, 2018

  • 将 sakai 批量下载处理恢复到 gradelab 函数中。
  • 移除未使用的讲师脚本。

September 4, 2018

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

August 23, 2018

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

August 23, 2018

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

August 21, 2018

  • 针对 AWS 身份验证问题的另一项修复(DockerHub 使用 AWS)。
  • 修复 new_lab_setup.py,使其使用 git 而不是 svn。
  • 将 plc-forensics 实验拆分为基础实验和高级实验(plc-forensics-adv)

August 17, 2018

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

August 15, 2018

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

August 15, 2018

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

August 9, 2018

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

August 7, 2018

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

August 1, 2018

  • 使用通用 Docker 镜像进行自动评估;停止为每个实验创建“instructor”镜像。

July 30, 2018

  • 记录需要解除对 waitparam.service 的阻塞(通过创建 flag 目录), 如果 fixlocal.sh 脚本要启动一个以 waitparam 为前提条件的服务。
  • 添加 plc-app 实验,用于 PLC 应用防火墙和白名单练习。

July 25, 2018

  • 向 goals 处理添加 string_contains 运算符
  • 修改 formatstring 实验的评估,以考虑泄露的 secret 并不总是在显示字符串末尾的情况。

July 24, 2018

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

July 20, 2018

  • 支持离线构建,可选跳过所有镜像拉取
  • 将 apt/yum 仓库恢复恢复到 Dockerfile 模板中。
  • 处理来自 Docker registry blob 检索的重定向 URL,以避免身份验证错误(不要依赖 curl --location)。

July 12, 2018

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

July 10, 2018

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

July 6, 2018

  • 所有 Ubuntu 基础镜像已替换为基于 systemd 的版本
  • registry 中的 Labtainer 容器镜像现在标记有基础镜像 ID,并具有反映基础镜像的标签。
  • 给定安装将拉取并使用与其拥有的基础镜像一致的镜像。
  • 如果您使用的是 VM 镜像,您可能希望用我们网站上更新的 VM 镜像替换它。
  • 新实验在不下载更新的基础镜像的情况下将无法运行;这可能导致您的 VM 存储多个版本的大型基础镜像(每个 > 500 MB)。
  • 实验停止时正在运行的进程的工件曾丢失——未能正确终止 capinout 进程。

June 27, 2018

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

June 21, 2018

  • 为 root 设置 DISPLAY 环境变量
  • 修复构建依赖处理中 svn status 输出的问题
  • 添加 radius 实验
  • 更正 SimLab append 中的 bug
  • 在适当情况下,使用 svn 通过 new_lab_setup.py 更改文件名

June 19, 2018

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

June 14, 2018

  • 向参数化添加诊断,追踪为什么某些安装似乎在这方面失败。
  • 如果容器已创建,请确保它已参数化,否则退出以避免损坏或半成品容器。
  • 修复程序版本号以使用 svn HEAD

June 15, 2018

  • 将出现在 xterms 中的纯文本说明转换为 pdf 文件。
  • 修复尚未拉取的镜像的版本处理中的 bug。
  • 检测已创建但未参数化的容器的出现, 并提示用户使用“-r”选项重启实验。
  • 添加设计者实用程序:rm_svn.py,以便删除的文件触发镜像重建。

June 13, 2018

  • 在 Ubuntu 18 系统上安装 xterm
  • 绕过新版本 gnome-terminal 标签页处理中的损坏

June 11, 2018

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

June 2, 2018

  • 在 Ubuntu 18 上安装时,使用 docker.io 而不是 docker-ce
  • 当“sudo su”受监控命令后跟非提权用户命令时,capinout 导致崩溃。
  • 将路由和 resolv.conf 设置移至 /etc/rc.local,而不是 fixlocal.sh, 以便它们在容器的启动/停止之间持久保留。

May 31, 2018

  • 绕过导致文本在没有换行符的终端中换行的 Docker bug。
  • 扩展 COMMAND_COUNT 以考虑管道
  • 创建新版本的 backups 实验,包含到远程服务器的备份, 并备份整个分区。
  • 修改 sshlab 说明,以使用 ssh-copy-id 实用程序
  • 从 parameterize.sh 中删除 /run/nologin 文件,以允许在 CentOS 上进行 ssh 登录

May 30, 2018

  • 扩展 new_lab_setup.py,以允许标识要使用的基础镜像
  • 创建新版本的 centos-log,包含集中式日志记录。
  • 评估验证未接受“time_not_during”选项。
  • 开始集成 Labtainer Master,用于从 Docker 容器管理 Labtainers。

May 25, 2018

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

May 21, 2018

  • 修复 retlibc 评分以移除重复目标,它曾导致自动评估失败
  • 从各个实验和实验模板中移除 mynotify.py 的副本,它 一直是 lab_sys/sbin 的一部分,但未更新以反映为 acl 实验所做的修复。

May 18, 2018

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

May 15, 2018

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

May 11, 2018

  • 添加“noskip”文件,以强制收集否则会在 home.tar 中找到的文件,这是 检索 Firefox places.sqlite 所需的。
  • 在提取之前将 sqlite 数据库与预写缓冲区合并。
  • 对 symkeylab 实验手册的更正
  • symkeylab 和 pubkey 的评分补充
  • 对 simlab 工具的改进:支持 include,修复窗口命名。

May 9, 2018

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

May 8, 2018

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

May 7, 2018

  • 使用基于 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 设置。

April 26, 2018

  • 过渡到使用“labtainer”启动实验,使用“stoplab”停止实验。
  • 向 labtainer 命令添加 --version 选项。
  • 添加 log_ts 和 log_range 结果类型,以及 time_not_during 目标运算符。 改造 centos-log 和 sys-log 评分以使用这些功能。
  • 将 labsys.tar 放入 /var/tmp 而不是 /tmp,有时会在展开之前被删除
  • 在 VM 重启后以 root 运行 X 应用程序失败。
  • 向基于 CentOS 的实验添加“User Command”man pages
  • 修复最近阻止从学生收集 docs 文件的 bug
  • 修改 smoke-tests,仅比较学生特定的结果行,去除空白2018年4月20日
  • denyhosts 服务首次启动失败,已将启动移至 student_startup.sh。
  • 将所有 faux_init 服务移至参数化之后——rsyslog 在容器第二次启动时无法启动。 2018年4月19日
  • acl 实验未能正确评估木马步骤的性能。
  • 默认收集学生文档。
  • denyhost 实验已更改,以反映 denyhosts(或 tcp wrappers?)现在会修改 iptables。此外,denyhosts 服务有时无法启动。
  • 更新 Labtainers 时,不要覆盖比归档中更新的文件——保留学生实验报告。

2018年4月12日

  • 添加关于实验目标用途的文档,并在教师启动实验时向教师显示此内容。
  • 当程序处于 treataslocal 时,修正 precheck 函数的使用,将完整程序路径传递给 capintout.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 不遵循链接。)
  • 修复备份实验使用单独的文件系统并更新手册。

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 时不再需要 labname。
  • 捕获由游离网络引起的错误,并向用户建议修复方法。
  • 添加对在 NPS 使用本地 apt 和 yum 仓库的支持。

2018年2月21日

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

2018年2月5日

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

2018年1月30日

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

2018年1月24日

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