1000 и 1 способ обойти Safe Exam Browser
Ну ладно, не 1000 и 1 способ, но их довольно много! О чем это мы? О том, что пандемия COVID-19 внесла много изменений в нашу жизнь, в том числе, и в образование — как школьное, так и ВУЗовское. Уроки, лекции и семинары перешли в онлайн-формат, а вопрос, как быть с контролем успеваемости, остался. Как преподавателям убедиться, что сдающий экзамен студент не открыл в соседней вкладке шпаргалки?
В России эту проблему решили с помощью open-source программы Safe Exam Browser (SEB). Казалось бы, теперь ни один искатель халявы не сможет смухлевать, но так ли уж неприступна эта «крепость»? Заходи под кат, сегодня мы расскажем и покажем кучу способов обмануть SEB!
Шёл 2020-й год… Весь мир в панике, курс рубля падает, государства переходят в режим ЧС… Несмотря на все это, основное желание среднестатистического студента остается прежним — сдать сессию с наименьшими затратами сил и времени на подготовку. Казалось бы, с переходом на дистанционное обучение для студента все стало проще — нужно всего лишь сделать умное лицо при ответе на вопрос по веб-камере, а прочитать материал можно и с параллельно открытого документа на компьютере. Но не тут-то было!
Многие российские ВУЗы для проверки успеваемости студентов внедрили программу Safe Exam Browser, которая предотвращает практически все попытки читерства. Конечно, для находчивых студентов и это не препятствие — ведь можно гуглить ответы на тест и на втором компьютере (или попросить погуглить друга).
Но, поскольку мы в душе тру хацкеры, мы решили проверить, насколько этот SEB действительно помогает при проведении экзаменов и как все же программно обойти его чуткий контроль (при условии, что студент обладает базовыми навыками работы на компьютере, не впадает в ужас от слов «виртуальная машина» и знает, как установить плагин для браузера Mozilla Firefox). Готовы? Поехали!
Что такое Safe Exam Browser (SEB)?
Safe Exam Browser (SEB) — программа для проведения экзаменов, тестов и т.д. в режиме онлайн. Предусматривает защиту от:
- открытия посторонних приложений (видео- и голосовой связи);
- параллельного поиска информации в веб-браузере;
- запуска приложения на виртуальной машине;
- перехода на определенные сайты;
- сохранения информации в буфере обмена перед входом в программу.

Конфигуратор SEB представляет собой приложение с интуитивно понятным интерфейсом:

В нем можно задать URL-адрес экзаменационного ресурса, список разрешенных/запрещенных приложений и сайтов, разрешения на загрузку файлов из Интернет, работу в виртуальной машине и т.д.
Большой простор для творчества и фантазии, не так ли?) Что же, приступим.
Для тестирования нам потребуется: программа SEB, виртуальная машина (VmWare, VirtualBox), браузер Mozilla Firefox, что-нибудь для компиляции большого проекта на C# (автор использовал Visual Studio Code), какой-нибудь образовательный ресурс (например, тест на Moodle, настроенный только для работы с SEB).
Дисклеймер: при написании статьи автору очень помогла эта статья.
1. Смена user-agent браузера
Для реализации этого способа не потребуется практически никаких знаний и инструментов. Проверим, как реагирует тест на Moodle на запуск через обыкновенный веб-браузер:

Как видно из скриншота, SEB не позволяет получить доступ к тесту из обычного браузера.
Согласно документации, в качестве веб-браузера SEB использует XULRunner — движок Gecko браузера Mozilla. Попробуем подменить user-agent браузера Mozilla на user-agent, указанный в конфигураторе SEB:
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0 SEB
Установим какой-нибудь плагин для подмены user-agent, например, User-Agent Switcher, и добавим к нему следующий вариант:

Ловкость рук и немного мошенничества — и теперь можно спокойно приступать к тесту, параллельно открыв гугл в соседней вкладке! 🙂

2. Изменение конфигурационного файла виртуальной машины
Предыдущий способ, конечно, очень прост и понятен, однако вполне может возникнуть ситуация, что экзаменатором собираются еще и логи экзамена — а SEB как раз логгирует все свои события: выключение неразрешенных процессов, очистку буфера обмена и многое другое. Поэтому надо найти способ читерить с включенным SEBом!
Сначала мы решили посмотреть, можно ли включить SEB на виртуальной машине. Здесь, к сожалению, нас постигла неудача — в таких условиях SEB даже не позволяет себя запустить. Но как-то же он понимает, что используется виртуальная машина!
Было опасение, что SEB использует не очень приятные для студента способы вроде обнаружения процессов и сервисов виртуальной машины (ВМ) в системе, но при изучении исходного кода было выяснено, что проверка на запуск из ВМ происходит в функции IsInsideVM() файла SEBWindowsClientMain.cs:
Видим, что SEB способен определить виртуальные машины производителей, которые перечислены в коде! А что, если мы изменим конфиг виртуальной машины, подменив, тем самым, производителя?
Сказано — сделано! Открываем конфигурационный файл VmWare и добавляем следующую строку:

Теперь manufacturer model виртуальной машины станет таким же, как и у основной машины. Запускаем виртуальную машину, на ней включаем SEB и пытаемся получить доступ к тесту — все работает!
3. Компиляция новых версий SEB
А теперь переходим к самому интересному — компиляции «своей» версии SEB! Исходный код доступен здесь. Самое интересное, что конфигурационный файл SEB не отслеживает целостность десктопного приложения (либо отслеживает так, что мы смогли без проблем поменять большую часть кода, хи-хи), тогда как целостность конфигурационного файла, присланного экзаменатором, проверяется строже некуда.
3.1 Запуск в виртуальной машине
Подмену производителя мы уже сделали в пункте 2, но как было бы круто создать версию SEB, которая запускается в любой виртуальной машине, верно? К тому же, сделать это более чем легко (если не считать танцев с бубном при попытках скомпилировать проект в первый раз — а все из-за несходства платформ .NET).
Итак, нужно всего лишь в приведенном выше коде закомментировать строчку с нужной ВМ:

В данном случае мы скомпилировали программу таким образом, чтобы она вообще не реагировала на запуск в виртуальной машине VirtualBox. Но есть одно важное замечание: если наши читатели решат воспользоваться данным способом, то необходимо убрать/изменить логгирование событий! Виртуальная машина запустится без проблем, но в логах обязательно отразится запуск через VirtualBox.
3.2 Очистка буфера обмена
Когда SEB включается, он автоматически очищает буфер обмена. Таким образом, все, что скопировал студент до запуска SEB, в SEB не попадет. Что же, вызов принят!
Здесь можно пойти двумя путями:
- Покопаться в файле SEBClipboard.cs, убрать логгирование ошибок или немного изменить алгоритм очистки буфера обмена.
- Закомментировать строку в файле SEBWindowsClientMain.cs:

Таким образом, с собой в SEB можно «пронести» любой текст, картинку — словом, шпаргалку, которую можно поместить в буфер обмена.
3.3 Помощь друга или убираем запрет на Discord
SEB похож на очень капризную женщину — при включенном Skype, Discord и т.д. он не включится, а поставит тебя перед выбором: или я, или они.
Что ж, постараемся снизить градус напряжения в такой ситуации.
Здесь есть простор для полёта фантазии, но, в целом, достаточно закомментировать подходящие по смыслу строки вроде «processToClose.Kill();» в файле SEBNotAllowedProcessController.cs.
Также советуем рассмотреть строки «SetForegroundWindow(windowHandle);», «BringWindowToTop(windowHandle);» и работу службы WatchDog. Грамотное выстраивание логики приложения и логгирования — ключ к успеху!
И мы тем временем получили запущенный Discord при работающем SEB:

Что еще могут попробовать энтузиасты?
Вариантов осталось достаточно, хватит на 1000 и 1 бессонную ночь за компьютером. Например, можно перекомпилировать SEB так, чтобы он не запускался поверх всех окон, и его можно было бы свернуть как обычное приложение.
Также можно попробовать запустить SEB на других ОС (невероятно, но факт: очевидцы утверждают, что стандартный ВУЗовский конфиг для SEB на OS X даже голосовую связь по Discord остановить не может!).
Итак, способов собрать SEB с урезанным функционалом — великое множество, тут все упирается только в воображение креативных и трудолюбивых студентов!
Закончим статью народной мудростью: остановить студента в поиске халявы может только еще большая халява!
1000 и 1 способ обойти Safe Exam Browser
Ну ладно, не 1000 и 1 способ, но их довольно много! О чем это мы? О том, что пандемия COVID-19 внесла много изменений в нашу жизнь, в том числе, и в образование — как школьное, так и ВУЗовское. Уроки, лекции и семинары перешли в онлайн-формат, а вопрос, как быть с контролем успеваемости, остался. Как преподавателям убедиться, что сдающий экзамен студент не открыл в соседней вкладке шпаргалки?
В России эту проблему решили с помощью open-source программы Safe Exam Browser (SEB) . Казалось бы, теперь ни один искатель халявы не сможет смухлевать, но так ли уж неприступна эта «крепость»? Заходи под кат, сегодня мы расскажем и покажем кучу способов обмануть SEB!
Шёл 2020-й год… Весь мир в панике, курс рубля падает, государства переходят в режим ЧС… Несмотря на все это, основное желание среднестатистического студента остается прежним — сдать сессию с наименьшими затратами сил и времени на подготовку. Казалось бы, с переходом на дистанционное обучение для студента все стало проще — нужно всего лишь сделать умное лицо при ответе на вопрос по веб-камере, а прочитать материал можно и с параллельно открытого документа на компьютере. Но не тут-то было!
Многие российские ВУЗы для проверки успеваемости студентов внедрили программу Safe Exam Browser, которая предотвращает практически все попытки читерства. Конечно, для находчивых студентов и это не препятствие — ведь можно гуглить ответы на тест и на втором компьютере (или попросить погуглить друга).
Но, поскольку мы в душе тру хацкеры, мы решили проверить, насколько этот SEB действительно помогает при проведении экзаменов и как все же программно обойти его чуткий контроль (при условии, что студент обладает базовыми навыками работы на компьютере, не впадает в ужас от слов «виртуальная машина» и знает, как установить плагин для браузера Mozilla Firefox). Готовы? Поехали!
Что такое Safe Exam Browser (SEB)?
- открытия посторонних приложений (видео- и голосовой связи);
- параллельного поиска информации в веб-браузере;
- запуска приложения на виртуальной машине;
- перехода на определенные сайты;
- сохранения информации в буфере обмена перед входом в программу.

Конфигуратор SEB представляет собой приложение с интуитивно понятным интерфейсом:

В нем можно задать URL-адрес экзаменационного ресурса, список разрешенных/запрещенных приложений и сайтов, разрешения на загрузку файлов из Интернет, работу в виртуальной машине и т.д.
Большой простор для творчества и фантазии, не так ли?) Что же, приступим.
Для тестирования нам потребуется: программа SEB, виртуальная машина (VmWare, VirtualBox), браузер Mozilla Firefox, что-нибудь для компиляции большого проекта на C# (автор использовал Visual Studio Code), какой-нибудь образовательный ресурс (например, тест на Moodle, настроенный только для работы с SEB).
Дисклеймер: при написании статьи автору очень помогла эта статья .
1. Смена user-agent браузера
Для реализации этого способа не потребуется практически никаких знаний и инструментов. Проверим, как реагирует тест на Moodle на запуск через обыкновенный веб-браузер:

Как видно из скриншота, SEB не позволяет получить доступ к тесту из обычного браузера.
Согласно документации, в качестве веб-браузера SEB использует XULRunner — движок Gecko браузера Mozilla. Попробуем подменить user-agent браузера Mozilla на user-agent, указанный в конфигураторе SEB:
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0 SEB
Установим какой-нибудь плагин для подмены user-agent, например, User-Agent Switcher , и добавим к нему следующий вариант:

Ловкость рук и немного мошенничества — и теперь можно спокойно приступать к тесту, параллельно открыв гугл в соседней вкладке! 🙂

2. Изменение конфигурационного файла виртуальной машины
Предыдущий способ, конечно, очень прост и понятен, однако вполне может возникнуть ситуация, что экзаменатором собираются еще и логи экзамена — а SEB как раз логгирует все свои события: выключение неразрешенных процессов, очистку буфера обмена и многое другое. Поэтому надо найти способ читерить с включенным SEBом!
Сначала мы решили посмотреть, можно ли включить SEB на виртуальной машине. Здесь, к сожалению, нас постигла неудача — в таких условиях SEB даже не позволяет себя запустить. Но как-то же он понимает, что используется виртуальная машина!
Было опасение, что SEB использует не очень приятные для студента способы вроде обнаружения процессов и сервисов виртуальной машины (ВМ) в системе, но при изучении исходного кода было выяснено, что проверка на запуск из ВМ происходит в функции IsInsideVM() файла SEBWindowsClientMain.cs:
Видим, что SEB способен определить виртуальные машины производителей, которые перечислены в коде! А что, если мы изменим конфиг виртуальной машины, подменив, тем самым, производителя?
Сказано — сделано! Открываем конфигурационный файл VmWare и добавляем следующую строку:

Теперь manufacturer model виртуальной машины станет таким же, как и у основной машины. Запускаем виртуальную машину, на ней включаем SEB и пытаемся получить доступ к тесту — все работает!
3. Компиляция новых версий SEB
А теперь переходим к самому интересному — компиляции «своей» версии SEB! Исходный код доступен здесь . Самое интересное, что конфигурационный файл SEB не отслеживает целостность десктопного приложения (либо отслеживает так, что мы смогли без проблем поменять большую часть кода, хи-хи), тогда как целостность конфигурационного файла, присланного экзаменатором, проверяется строже некуда.
3.1 Запуск в виртуальной машине
Подмену производителя мы уже сделали в пункте 2, но как было бы круто создать версию SEB, которая запускается в любой виртуальной машине, верно? К тому же, сделать это более чем легко (если не считать танцев с бубном при попытках скомпилировать проект в первый раз — а все из-за несходства платформ .NET).
Итак, нужно всего лишь в приведенном выше коде закомментировать строчку с нужной ВМ:

В данном случае мы скомпилировали программу таким образом, чтобы она вообще не реагировала на запуск в виртуальной машине VirtualBox. Но есть одно важное замечание: если наши читатели решат воспользоваться данным способом, то необходимо убрать/изменить логгирование событий! Виртуальная машина запустится без проблем, но в логах обязательно отразится запуск через VirtualBox.
3.2 Очистка буфера обмена
Когда SEB включается, он автоматически очищает буфер обмена. Таким образом, все, что скопировал студент до запуска SEB, в SEB не попадет. Что же, вызов принят!
- Покопаться в файле SEBClipboard.cs, убрать логгирование ошибок или немного изменить алгоритм очистки буфера обмена.
- Закомментировать строку в файле SEBWindowsClientMain.cs:
Воспользовавшись любым из этих способов, можно получить желанный результат:

Таким образом, с собой в SEB можно «пронести» любой текст, картинку — словом, шпаргалку, которую можно поместить в буфер обмена.
3.3 Помощь друга или убираем запрет на Discord
SEB похож на очень капризную женщину — при включенном Skype, Discord и т.д. он не включится, а поставит тебя перед выбором: или я, или они.
Что ж, постараемся снизить градус напряжения в такой ситуации.
Здесь есть простор для полёта фантазии, но, в целом, достаточно закомментировать подходящие по смыслу строки вроде «processToClose.Kill();» в файле SEBNotAllowedProcessController.cs.
Также советуем рассмотреть строки «SetForegroundWindow(windowHandle);», «BringWindowToTop(windowHandle);» и работу службы WatchDog. Грамотное выстраивание логики приложения и логгирования — ключ к успеху!
И мы тем временем получили запущенный Discord при работающем SEB:

Что еще могут попробовать энтузиасты?
Вариантов осталось достаточно, хватит на 1000 и 1 бессонную ночь за компьютером. Например, можно перекомпилировать SEB так, чтобы он не запускался поверх всех окон, и его можно было бы свернуть как обычное приложение.
Также можно попробовать запустить SEB на других ОС (невероятно, но факт: очевидцы утверждают, что стандартный ВУЗовский конфиг для SEB на OS X даже голосовую связь по Discord остановить не может!).
Итак, способов собрать SEB с урезанным функционалом — великое множество, тут все упирается только в воображение креативных и трудолюбивых студентов!
Закончим статью народной мудростью: остановить студента в поиске халявы может только еще большая халява!
How I managed to bypass safe exam browser security restrictions [Exam.net as Exam platform]
This is a short write-up and don’t use it to cheat in exams. If you do that you may find yourself in a position that you cannot go back and correct. Of course, this is meant only for educational purposes. And I only did it to satisfy my ego because people say that it is impenetrable(As I say nothing is 100% secure).
Analysis
First things first, Let’s playback the security restrictions:
Complete Lockdown
SEB locks everything by taking control of the whole U.I and there is nothing you can do there. We can modify the opensource seb code but the signature of the code will be invalidated and you cannot enter the exam.
SEB generates a browser exam key and validates it by sending it to the LMS(Learning management system) such as moodle, ilias, .etc.
You cannot change the SEB configuration file because the hash signature is verified with the exam server by sending it through the header of GET request
These are the header fields of SEB browser.
We can change the hash signature by MITM by changing every request but we need a streamlined solution, not some over-complicated solution.
I started playing with the parameters and found out that exam.net is just verifying the User-Agent (header value) and X-SafeExamBrowser-RequestHash (header field name) but not the hash itself. As of writing this writeup, exam.net doesn’t support browser exam key verification. So, we can change the headers by using simple browser extensions and make exam.net think that we are in high-security mode. But it will not work with LMS such as moodle because they have plugin support to enable browser key verification. Check out the diagram i have created(It’s not the official one but a projection of my understanding).
️♀️Virtual Machine Detection
SEB detects almost all the Virtual machine software (vmware, virutalbox, parallels desktop, ..etc). It refuses to start in virtual machine at all.
With SEB 2.0 the architecture is more robust and does more security checks for VM detection.
But bypassing the detection will make it as a universal solution independent of the Operating System.
️ypassing Virtual Machine Detection
Pre-requisites
We need to change the virtual machine configuration file .vmx located at your configured virtual machine files (Mostly in documents folder in windows).
- Windows — VMware workstation, vmware player.
- Mac — VMware Fusion (Parallels does not have a config file to modify).
- Linux — VMware workstation.
Note- I haven’t tested with virutalbox but I recommend using only vmware products.
Let’s begin⌲
- Install windows in vmware and remember the virtual machine files location.
IMPORTANT: Do not install vmware tools. SEB detects the vmware tools process and does not allow you to write the test.
- Let’s change the .vmx configuration file and add the below line.
This setting will make VM look like the host machine.

Some More things
MOODLE & ILIAS
Bypassing virtual machine detection will enable you to minimize the virtual machine and browse your computer as a normal pc.
As I told you that changing User-Agent and X-SafeExamBrowser-RequestHash will allow you to write the exam in the same browser. But it will not work with MOODLE and ILIAS Lms has they have the capability to implement browser-exam-key security. Anyways Bypassing the VM detection will do the trick.
EXAM .net
Exam.net has more liberal security integration with a safe exam browser. It provides the .seb config file to the browser and triggers the SEB to load the configuration and then it totally depends on the SEB security protocols and verify neither the integrity of the SEB code nor the Configuration file integrity.
However, SEB allowed me to install VMware tools but when starting the exam inside the SEB, Exam.net blocked me by saying you cannot use this device.It is due to the fact the presence of VMware Tools. So, As mentioned above do not install VMware tools.
There is another way to get past the VMware tools installation is by selecting Launch Take a Test (WIN10) which will allow you to get past the VMwaretools restriction and Virtual Machine Detection as it is not SEB (Take a Test is a Microsoft product).

- Without the Virtual Machine you can modify the headers to make exam.net think that you are using SEB.
- Download Simple Modify Header Extension (Available for Firfox and Chrome)
- Download my Config file from here and import it to the extenstion and save.

Manually you can configure the extension as below and start the extension
Add HeaderField Name and Value: X-SafeExamBrowser-RequestHash : Anything
Modify HeaderFIeld Name and Value: User-Agent : Mozilla/5.0 SEB EXAM_#MK#_NET_HARD
Name already in use
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
SEB Bypass Patch v3.3.2
By using this patch, you can use a Windows Virtual Machine [VMware Player] for SEB and use your usual desktop for searching answers for the questions asked in the exams conducted in SEB without them knowing
2․ Copy these two files.
3․ Go to C:\Program Files\SafeExamBrowser\Application .
4․ Paste it in this folder.
5․ You’ll need admin perms to replace files in this folder.
6․ After replacing, open SEB and voila it runs in a VM.
It’s recommended to use VMware(Free/Paid) since we can make the VM look like a real computer by copying the host computer’s (the computer in which VM is running) model and company.
Steps to do this:
1․ First go to the directory where you installed the Windows VM. Its the Documents folder by default.
2․ In Documents folder, there will be a folder called Virtual Machines.
3․ Open that folder and select the Windows VM folder and open it.
4․ Now there will be a file with extension .vmx . Right click that file and open with Notepad.
5․ Now paste smbios.reflecthost = «TRUE» in a new line like this:

It doesn’t matter where this is pasted. Just paste it in a new line.
6․ Now save the file and voila! Your VM manufacturer and model is similar as your PC. This reduces the chance of VM detection.
Don’t forget to edit logs if your exam invigilator asks you for your Client and Runtime logs.
Logs Path: C:\Users\<username>\AppData\Local\SafeExamBrowser and put your user name in place of <username>