Как взломали защиту Assassins Creed 2
Расскажу интересную историю о том, как взломали DRM Assassins Creed 2, а заодно и другие игры, которые ее используют.
Началось все с того, что в какой-то момент Ubisoft решила, что самостоятельно написанная защита сильно лучше существующих решений на рынке. Это частично так, так как для большинства защит уже существуют полуавтоматические распаковщики и игрушки появляются на варезниках чуть ли не сразу. Но и написание своей защиты тоже дело нетривиальное и очень легко проколоться на мелочах, что и случилось.
Вкратце как работает защита, на примере Assassins Creed 2:
1. Защита требует постоянного подключения к серверу защиты
2. Защита интегрирована в игру
3. Защита передает некие запросы на сервер защиты, тот отдает назад некие данные, которые необходимы для игры. Без этих данных игра падает.
Все замечательно, кроме того что offline игра требует online подключения.
Теперь о том, как ломали:
1. Было выяснено, что общение с сервером идет по HTTPS
2. Сертификат SSL оказался самоподписанным (!)
3. Кто-то написал MITM сервер, который выдавал игре свой сертификат и логировал ответы и запросы в файл.
4. После того, как кто-то прошел всю игру и вытащил все возможные ответы и вопросы, раздал файл всем желающим.
Мораль такова: если бы они задумались о поднятии простенькой цепочки из двух сертификатов - сертификат был бы подписан ключем центра сертификации и публичный ключ ЦС был бы вшит в игру, так просто игра бы не сдалась. Во всяком случае без модификации кода или замены публичного ключа на чужой.
Второй вывод - протокол должен использовать хоть какую-то случайность в ответе/запросе, так как это бы сильно усложнило взлом защиты, потому что пришлось бы разбираться в принципах формирования запросов, собрать необходимое количество статистической информации об ответах и так далее.