主要观点:
- 2024 年 3 月首次撰写此文章,因某些原因当时未发布,现情况改变已发布并做了一些小改动。
- 本学期安全模块作业使用裸机虚拟机,每次发布新作业会提供一个文件用于下载并在虚拟机上运行,这些文件看似垃圾数据但用于设置作业并获取提交的令牌。
- 决定攻击虚拟机以获取令牌,发现更新文件是 GPG 加密的 tarball,需使用
/root/.vmPassphrase
和/root/.gnupg
进行解密,可通过挂载虚拟机虚拟磁盘获取相关文件。 - 提取 tarball 后可看到一些目录,其中包含
bin
和java
目录,更新有以bin/updateVM
为入口点的脚本,多数时间会编译并运行java
目录中的 Java 代码,部分更新还引用了systemd
服务tokens
但不知其用途。 - Java 代码中
genToken
函数用于生成令牌,通过随机数、练习标识符和模块密钥进行 AES 加密,令牌格式有特定布局,可通过修改代码获取令牌。 - 整个攻击能实现是因为能访问虚拟机磁盘图像,若要防止攻击可为每个学生提供远程 SSH 访问的虚拟机,但成本高。
- 这只是一时的有趣尝试,最终还是要做作业,作弊对自己不利。
关键信息:
- 文章撰写时间及发布原因变化。
- 虚拟机作业相关流程及文件形式。
- 攻击虚拟机获取更新文件解密信息的过程。
- 提取文件后的目录结构及相关代码作用。
- 令牌生成及格式细节。
- 防止攻击的可能措施及现状。
重要细节:
- 字符串操作找到更新文件解密命令及相关路径。
- 挂载虚拟机虚拟磁盘获取
/root
目录并修改权限。 - Java 代码中令牌生成的具体步骤和原理。
- 关于攻击行为的一些思考和后续变化。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。