Как стать автором
Обновить

Карта мародёров: пусть экзамен сдаёт себя сам

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров6K

Ученикам École 42 в процессе обучения необходимо сдавать экзамен. С учётом того, что в школе существует ачивка за "хацкерство", появилось желание найти способ схитрить. Под катом история небольшой шалости с использованием особенностей HFS+.

Дано

Школа представляет из себя несколько кластеров iMac, за которыми работают студенты. Работа начинается с логина в учетную запись и заканчивается выходом из неё. На время экзамена один из кластеров закрывается, "происходит магия", и по своему логину и паролю на время экзамена студент входит в экзаменационную учетную запись. В ней ограничен доступ в интернет, практически отсутствуют какие либо доступы. Намерение школы - дать студенту на время экзамена консольную команду, которая даёт задачи и проверяет ответы. Ответами являются исходные коды программ на Си и Баше. Не ограничены в явном виде только права на создание и редактирование текстовых файлов.

Найти

Шпаргалка должна содержать ответы на ~100 задачек по ~30-100 строк. С учётом объёма и пристального внимания наблюдателей, пронести такой трактат в руках/ногах/трусах тяжело. Да и такие способы морально устарели (хотя были попытки от отдельных студентов). Лично мной двигало желание найти способ технического обхода ограничений для последующей автоматизации процесса.

Решение

Заметим, что в школе уделено много внимания устройству *nix, системному программированию. Автор позволил себе предположить, что максимально возможный спектр способов защиты был предпринят. Конечно же, после продолжительных поисков "традиционных" способов. Однако перед тем как сдаться промелькнула мысль "но это же Apple!". Наверняка можно использовать одну из особенностей платформы, которая даже не рассматривалась школой как угроза. Зачем рыть подкоп, если есть дыра в заборе?

Вспомнилась история, как один ученик обнаружил, что экзаменационная учетная запись имеет доступ на чтение к папкам и файлам других пользователей. Нехитрым движением, до экзамена сохранялись ответы в "нормальной" учётке, а на экзамене читались и отправлялись. Конечно же, школа узнала про такой способ и ограничила его.

То есть над сетевой безопасностью они поработали более чем хорошо, а на локальном уровне смогли пропустить такое? Спасибо, куда смотреть стало ясно.

Говоря о локальном хранилище и платформенных особенностях на ум сразу приходит HFS+. Для справки, это файловая система Apple. После пары часов курения документации и вики нашлось кое-что интересное!

Из википедии HFS+ (ссылка):

With Mac OS X 10.4, Apple added support for Inline Attribute Data records, something that had been a part of the Mac OS X implementation of HFS Plus since at least 10.0, but always marked as "reserved for future use".[9] Until the release of Mac OS X Server 10.4, HFS Plus supported only the standard UNIX file system permissions; however, 10.4 introduced support for access control list–based file security, which provides a richer mechanism to define file permissions and is also designed to be fully compatible with the file permission models on other platforms such as Microsoft Windows XP and Windows Server 2003.

В отличие от расширенных атрибутов POSIX, расширенные атрибуты в HFS+ защищены не через разрешения файлов, а через "список управления доступом". А защищено ли хоть что-то в школе через этот список? Нет. Команда записи атрибута на корневую папку сработала с первого раза на экзаменационной учётке, не предъявив никаких претензий:

xattr -w my_attribute attribute_value /

Считаем атрибут:

xattr -p my_attribute /
# attribute_value

То есть мы можем повесить произвольную строку в атрибуты и считать её на экзамене! Опять же, автор не мог себе позволить пользоваться столь варварским способом, как копипаста. Было принято решение написать программу maraudersmap (по аналогии с произведениями Джоан Роулинг). Её суть - считать номер задания из консоли и отправить решение на проверку.

Получив бинарный файл maraudersmap, хочется положить его в атрибуты. На всякий случай при передаче конвертируем в формат дампа через xxd. xattr как раз имеет флаг -x для принятия такого формата:

xattr -wx "maraudersmap" "$(xxd -p maraudersmap)" /

Ответ

На экзамен приходим и уверенно вводим:

xattr -p "maraudersmap" / >> maraudersmap
chmod +x maraudersmap
./maraudersmap

Как из этих команд составить односточник, который не создаст физического файла, автор так и не догадался. Варианты ответов в комментариях приветствуются.

P.S. Реальная версия maraudersmap для интереса требует пароль и громко играет дабстеп если он введён неверно. Посмотреть можно тут.

Теги:
Хабы:
Всего голосов 20: ↑20 и ↓0+20
Комментарии7

Публикации

Истории

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
11 сентября
Митап по BigData от Честного ЗНАКа
Санкт-ПетербургОнлайн
14 сентября
Конференция Practical ML Conf
МоскваОнлайн
19 сентября
CDI Conf 2024
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн