
在俄罗斯,使用开源安全考试浏览器(SEB)程序解决了此问题。看来现在没有一个免费的免费寻找者能够作弊,但是这个“堡垒”真的很难进入吗?赶快来吧,今天我们将告诉您并展示一系列欺骗SEB的方法!
那是2020年...整个世界都陷入恐慌,卢布正在下跌,各州正进入紧急状态...尽管如此,普通学生的主要愿望仍然不变-以最少的精力和时间来准备会议。看起来,向远程学习的过渡,对学生来说,一切都变得更加容易-您只需在网络摄像头上回答问题时做个聪明的面孔,就可以从计算机上并行打开的文档中阅读资料。但是它不在那里!
许多俄罗斯大学已经实施了“安全考试浏览器”程序来检查学生的进度,从而阻止了几乎所有的作弊尝试。当然,这对于有学识的学生来说并不是障碍-您可以在第二台计算机上搜索测试答案(或请朋友搜索它)。
但是,由于我们精打细算,因此我们决定检查SEB确实对进行考试有多大帮助,以及如何以编程方式绕过其敏感控制(只要该学生具有基本的计算机技能,并且不会因“虚拟机”,并知道如何为Mozilla Firefox浏览器安装插件)。准备?走!
什么是安全考试浏览器(SEB)?
安全考试浏览器(SEB)是用于进行考试,测试等的程序。在在线模式下。提供针对以下方面的保护:
- 打开无关的应用程序(视频和语音通信);
- 在网络浏览器中并行搜索信息;
- 在虚拟机中运行应用程序;
- 前往某些地点;
- 在进入程序之前将信息保存在剪贴板中。
SEB的体系结构包括两部分:桌面应用程序和浏览器。该应用程序在学生的计算机上运行,并阻止所有其他应用程序(通过考试所需的应用程序除外)。只有SEB浏览器才能通过网络进行交互,并且该浏览器连接到承载测试或考试的教育平台(例如Moodle)。考官可以在考试期间授权使用第三方应用程序,例如Excel或计算器,然后学生便可以启动它们。所有此类权限和其他设置都是使用SEB配置器执行的,并写入配置文件,该文件随后由桌面应用程序启动。

SEB Configurator是具有直观界面的应用程序:

在这里,您可以设置检查资源的URL,允许/禁止的应用程序和站点的列表,从Internet下载文件的权限,在虚拟机中工作的权限等。
创造力和想象力还有很多空间,不是吗?)好,让我们开始吧。
为了进行测试,我们需要:SEB程序,虚拟机(VmWare,VirtualBox),Mozilla Firefox浏览器,用于在C#中编译大型项目的东西(作者使用Visual Studio Code),一些教育资源(例如,配置的Moodle测试)仅适用于SEB)。
免责声明:本文在撰写本文时对我有很大帮助。
1.更改浏览器用户代理
实际上,不需要任何知识和工具即可实现此方法。让我们检查一下通过普通的Web浏览器启动时Moodle测试如何反应:

从屏幕截图中可以看到,SEB不允许从常规浏览器访问测试。
根据文档, SEB使用Mozilla浏览器的Gecko引擎XULRunner作为Web浏览器。让我们尝试用SEB配置器中指定的用户代理替换Mozilla浏览器的用户代理:
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0 SEB
安装插件来替换用户代理,例如User-Agent Switcher,并向其中添加以下选项:

轻巧的手法和一点点欺诈-现在您可以放心地进行测试了,同时在下一个标签页中打开Google!:)

2.更改虚拟机的配置文件
当然,以前的方法非常简单明了,但是很可能会出现这样的情况,即考官还会收集考试日志,而SEB只会记录其所有事件:关闭未授权的流程,清除剪贴板等等。因此,我们需要找到一种方法来启用SEB作弊!
首先,我们决定看看是否可以在虚拟机中启用SEB。在这里,不幸的是,我们失败了-在这种情况下,SEB甚至不允许其启动。但是他不知何故意识到正在使用虚拟机!
有人担心SEB使用的方法不太适合学生,例如检测系统中的虚拟机(VM)的进程和服务,但是当研究源代码时,发现从VM启动检查是在SEBWindowsClientClient.cs文件的IsInsideVM()函数中进行的:
private static bool IsInsideVM()
{
using (var searcher = new ManagementObjectSearcher("Select * from Win32_ComputerSystem"))
{
using (var items = searcher.Get())
{
foreach (var item in items)
{
Logger.AddInformation("Win32_ComputerSystem Manufacturer: " + item["Manufacturer"].ToString() + ", Model: " + item["Model"].ToString(), null, null);
string manufacturer = item["Manufacturer"].ToString().ToLower();
string model = item["Model"].ToString().ToLower();
if ((manufacturer == "microsoft corporation" && !model.Contains("surface"))
|| manufacturer.Contains("vmware")
|| manufacturer.Contains("parallels software")
|| manufacturer.Contains("xen")
|| model.Contains("xen"))
|| model.Contains("virtualbox"))
{
return true;
}
}
}
}
return false;
}
我们看到SEB能够检测到代码中列出的制造商提供的虚拟机!但是,如果我们更改虚拟机的配置,从而更改制造商,该怎么办?
说到做到!打开VmWare配置文件并添加以下行:

现在,虚拟机的制造商模型将与主机的模型相同。我们启动虚拟机,打开虚拟机并尝试访问测试-一切正常!
3.编译新版本的SEB
现在让我们继续有趣的部分-编译“我们的” SEB版本!源代码可在此处获得。最有趣的是,SEB配置文件不会跟踪桌面应用程序的完整性(或者会跟踪它,以便我们可以更改大多数代码而不会出现任何问题,嘻嘻),而检查员发送的配置文件的完整性则受到更严格的检查。
3.1在虚拟机中运行
我们已经在步骤2中更改了制造商,但是创建可在任何虚拟机上运行的SEB版本有多酷呢?另外,这非常容易做到(除了第一次尝试编译项目时要用铃鼓跳舞,而且都是由于.NET平台的不同)。
因此,您只需要在上面的代码中用所需的VM注释掉该行:

在这种情况下,我们已经编译了程序,以便在VirtualBox虚拟机中启动该程序时完全不响应。但是有一个重要的注意事项:如果我们的读者决定使用此方法,则有必要删除/更改事件日志记录!虚拟机将启动而不会出现问题,但是通过VirtualBox的启动肯定会反映在日志中。
3.2清除剪贴板
SEB开机后,将自动清除剪贴板。因此,学生在SEB启动之前复制的所有内容都不会进入SEB。好吧,挑战已被接受!
这里有两种方法:
- 挖掘SEBClipboard.cs文件,删除错误日志记录,或稍微更改剪贴板清除算法。
- 注释掉SEBWindowsClientMain.cs文件中的行:
// Clean clipboard //SEBClipboard.CleanClipboard(); Logger.AddInformation("Clipboard cleaned.", null, null);
在这种情况下,最好保留后续的日志记录-这样检查员就不会理解在SEB中您带来了Something-What-Can-not-Use-During-Exam :)
使用这些方法中的任何一种,您都可以得到理想的结果:

因此,您可以将SEB中的任何文本,图片-一句话,就是可以放在剪贴板上的备忘单带到SEB。
3.3在朋友的帮助下或取消对Discord的禁令
SEB看起来像个非常情绪化的女人-启用了Skype,Discord等。它不会打开,但会让您选择:我还是他们。
好吧,让我们尝试减少这种情况下的压力程度。
仍有一定的想象空间,但是通常,注释掉适当含义的行就足够了,例如“ processToClose.Kill();”。在SEBNotAllowedProcessController.cs文件中。
我们还建议您考虑以下行:“ SetForegroundWindow(windowHandle);”,“ BringWindowToTop(windowHandle);” 和WatchDog服务。胜任构建应用程序和日志逻辑是成功的关键!
同时,我们让Discord和SEB一起运行:

狂热者还能尝试什么?
剩下的选项足够多,足以在计算机上进行1000到1个不眠之夜。例如,您可以重新编译SEB,使其不会在所有窗口之上运行,并且可以像常规应用程序一样最小化。
您还可以尝试在其他OS上运行SEB(令人难以置信,但事实是:目击者声称OS X上SEB的标准大学配置甚至无法停止通过Discord进行语音通信!)。
因此,有很多方法可以组装功能减少的SEB,这里的一切仅取决于富有创造力和勤奋的学生的想象力!
让我们以