Pull to refresh

История одной компьютерной войны

Reading time 4 min
Views 51K
Данная заметка — сокращенный пересказ почти 10-летнего эпоса о находчивости и предательстве, изобретательности и хитрости, происходящих от человеческой лени. Началось все с того, что на неком айтишном факультете некого университета запустили для контроля знаний учащихся по одному из семестровых курсов систему дистанционного обучения. Дальнейшая борьба представляла из собой пошаговую стратегию с фазами в семестр, причем со стороны студентов каждый раз были новые люди со свежими идеями.


Факультет: Раз уж обучение предполагалось дистанционное, то и контрольные работы (тесты) отпущены вам на проведение дома в удобное для вас время.
Студенты: Отлично! Все приходим в общежитие и сдаём тесты командами. Можно и вовсе посадить умного товарища сдавать за всю группу по очереди в обмен на какие-нибудь плюшки.

Факультет: Что-то тут не так. Давайте в этом году вы будете все-таки сдавать тесты в фиксированное время в аудиториях факультета. Кстати, как и в прошлом году, перед тестом можно подготовиться, сдавая тренировочный тест любое число раз.
Студенты: Отлично! Мы написали скрипт, который сдает случайным образом тренировочный тест, пока не получает за него оценку в 100%. Выбранные ответы запоминаются и используются при дальнейших попытках, пока не будет полностью извлечена вся база вопросов. Дальше ее можно зазубрить, благо она не большая.

Факультет: Больше вопросов! Извлекайте на здоровье, больше выучите.
Студенты: Мы создали сайт с идентичным интерфейсом, который проксирует наши запросы к системе дистанционного обучения, подправляя наши ответы на нужные. Без анализа весьма схожей адресной строки незаметно, что мы на другом сайте.

Факультет: Система дистанционного обучения находится в локальной сети. Отключить к чертям внешний интернет в классах!
Студенты: Не страшно. Мы притащили на компы javascript, который при прохождении теста показывает правильный ответ в статусной строке браузера.

Студент Х: Извините, а мне вот система поставила 68 баллов, а должна была 78. Вот у меня распечатка с полным дампом ваших баз вопросов, в ней написано, что я ответил правильно, так что…
Факультет: Да вы вконец обнаглели! Нельзя было показывать вопросы до теста. В этот раз мы предоставили вам 2 пула различных вопросов — для тренинга и для собственно теста. Кстати, больше нельзя локально хранить никакие файлы — это бездисковые станции, и они по-прежнему без доступа к интернету, а все USB-порты спереди и их очень хорошо видно.
Студенты: Паника! Паника!

Факультет: Что-то у вас оценки стали ниже некуда! Возможно, со всей этой гонкой вооружений мы понаписали слишком сложные вопросы… Давайте вы на всякий случай получите 3 дополнительных попытки на пересдачу каждого теста.
Студенты: Интересное дело. У нас тут у одного умельца курсовая работа по распознаванию образов, а еще у вас флоппи-приводы работают.
Факультет: Ну и что?
Студенты: А мы принесём на дискете программу, которая прячется в трей и коллекционирует скриншоты.
Факультет: А что дальше? У вас будут вопросы, но не ответы же. Да и как вы соберете все вопросы?
Студенты: Разделение труда и чёткая организация. Армия смертников придет на пересдачу теста и честно завалит первую попытку, собрав коллекцию скриншотов. Всю следующую ночь ботаны будут эти скриншоты размечать. Затем на их базе генерится новая программа.
Дежурный по аудитории: Ой, а что это у вас мышь сама по экрану ездит и правильные ответы нажимает?!?!

Факультет: Так дело не пойдет. Все пересдачи после зачетной сессии, отчего вам грозит недопуск до всех экзаменов.
Студенты: Хм, а ведь среди нас есть студенты с кафедры, где обитает администратор системы дистанционного обучения. %username%, а покажи пожалуйста статистику по моей группе. Смотри, можно сесть за вот эту замечательную зараженную трояном машину и ввести свой пароль вот тут. Так, а теперь мы выкачиваем всю базу вопросов нашего года при помощи платной анонимной прокси, на которую зайдем через анонимный WiFi (честное слово, они так и сделали!).

Факультет: Что-то оценки у них подросли, а нарушений никаких не замечено. Наверное, взялись за ум и учат.
Студенты: Ура! Пароль администратора за весь год так и не менялся, мы тупо пользуемся достижениями прошлого поколения.

Студент Х: Извините, а мне вот система поставила 68 баллов, а должна была 78. Вот у меня распечатка с полным дампом ваших баз вопросов, в ней написано, что я ответил правильно, так что…
Факультет: Так, у меня слов нет. Новый пароль, новые вопросы, база вопросов заливается на сервер за 24 часа до начала теста.

Студенты: Хм, а у вас система дистанционного обучения на локальном сервере не обновлялась уже 7 лет, так?
Факультет: Ну да, ну и что с того?
Студенты: Да так, уязвимость одну нашли старенькую незакрытую. От любого юзера логинимся, а потом берем и через специально сформированный URL вытаскиваем из базы вопрос с заданным номером. Кстати, мы украли не только вопросы нашего года нашего курса, доступные нашему администратору, но и вообще все курсы, когда-либо читавшиеся через эту систему на данном сервере. На все это у нас ушло часов 6.
Разработчики системы: Мы не можем накатить новую версию, т.к. аутсорсные дизайнеры еще не закончили рисовать интерфейс.
Факультет: Блин :(

Возможно, последовательность шагов сторон нарушена, да и не все фазы длились по полгода. Однако все описанные подходы и технические средства действительно использовались:
  • командная сдача
  • написание бота
  • фишинг (правда, обманывали не юзера, а наблюдателя)
  • пользовательский скрипт с ответами
  • скрытая тулза для сбора вопросов и автоответа
  • социальная инженерия
  • взлом

Были, конечно, и более типовые и примитивные инструменты: вики, форумы, группы вконтакте, где выкладывали запомнившиеся вопросы или сделанные через Paint скриншоты. Один человек и вовсе получил строгий выговор за фотографирование монитора сдающей группы через прозрачную стену.

Студенты способны на все, лишь бы не сдавать честно, но студенты-айтишники намнооого опаснее. Такая вот история. Если тут есть разработчики подобных систем или люди, имеющие отношение к учебному процессу, задумайтесь, от всего ли вы себя обезопасили — всё это не мифические потенциальные угрозы, а вполне осуществимые на практике вещи.

UPD. Меня поправили, что надпись поверх адресной строки выводилась не пользовательским скриптом для браузера, а программой на Delphi. Кроме того, в минувшем году аналогичное решение также было разработано и выполнено как плагин к браузеру.
Tags:
Hubs:
+171
Comments 123
Comments Comments 123

Articles