Страницы

Как я на курсы Информзащиты ходил. Часть первая, техническая.


В конце июля мне довелось побывать на учебных курсах в УЦ "Информзащита". Это, наверное, один из старейших и крупнейших учебных центров в нашей стране с самым большим ассортиментом курсов: начиная от компьютерной безопасности и заканчивая экстремальным вождением. После долгих раздумий, мною был выбран курс ЭБ06 "Система противодействия незаконным методам конкурентной разведки", так как мне всегда было интересно, как там на другой стороне информационной безопасности - в безопасности экономической.

Свой обзор я решил начать с конца - покрутить со всех сторон электронные материалы курса и приложение Информзащиты из Google Play, которое разработано специально для абитуриентов курсов и позволяет скачивать учебные пособия к себе на телефон.

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

Приложение сохраняет скаченные на устройство курсы в память телефона в формате PDF, однако, как оказалось, файлы шифруются, и открыть нормальной читалкой их нельзя.

Первое, с чего я начал, это решил осмотреть, как приложение общается с сервером. Для этого на большем ПК запускаем proxy из Burp Suite.
А на телефоне в свойствах WiFi указываем IP и порт проксисервера.
Запускаем программу, скачиваем книжку.

И смотрим на трафик, который наловил Burp Suite.

В трафике сразу видно прямой линк на зашифрованный PDF файл и любопытный запрос "get_book_key". Осталось только проверить, не зависит ли запрашиваемый ключ от идентификатора сессии. Нет, не зависит.

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

Первым делом нужно выкачать сам apk файл из магазина андроид приложений Google Play.
Сделать это проще всего с помощью плагина к Хрому APK Downloader.

Исходный код андроид приложения (или кусок кода) можно всегда выдрать из apk файла с помощью конвертеров.
1. Качаем apktool и выдираем из apk dex фаил;
2. Конвертируем .dex в .jar с помощью dex2jar;
3. Открываем ru.digipeople.informprotect.jar с помощью JD-Gui.

Немного пощелкав по ресурсам приложения, находим процедуру с любопытным названием PDFDecryptFileStream

Да, блин. Это банальный XOR.

Покопавшись в документации на питон (боже, храни stackoverflow!), я набросал небольшой скрипт, который и собрал мне мою долгожданную нормальную пдфку!
def xor_strings(xs, ys):
    return "".join(chr(ord(x) ^ ord(y)) for x, y in zip(xs, ys))

key = "6AFC504FA4BA818AFB0304F287968662"

with open("input.pdf", "rb") as f:
    pdf = f.read()

with open("output.pdf", 'wb') as f:
    for i in range(0, len(pdf), len(key)):
        f.write(xor_strings(key, pdf[i:i+len(key)]))
 Вот собственно и она!

Какие выводы из всего этого можно сделать? Можно, конечно, сказать, что разработчики не уделили достаточного внимания алгоритму обмена ключами, что использовать XOR для шифрования может только студент, что сервер светится в интернете как новогодняя елка и т.д. Однако, в целом, приложение написано достаточно качественно: украсть чужую книгу не получится, и это главное.

Уязвимых к подобным атакам приложений сегодня тьма тьмущая! Бери любое и копай. Что-нибудь да и накопаешь всегда. Возможно, если бы у Информзащиты была программа вознаграждения за найденные уязвимости, такого бы не произошло ;).

Про сами курсы напишу в следующий раз!

Что ещё почитать?

6 комментариев:

  1. Аксиома: если разработчики не могут обеспечить адекватную защиту собственных продуктов, значит и у их клиентов тоже будут с этим проблемы.

    ОтветитьУдалить
    Ответы
    1. Так понял, что разработчики софта - контора DigiPeople, а не КодБезопасности.

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

      Вполне неплохо для обычного приложения!

      Удалить
  2. Через портал для обучающихся можно распечатать курс ... в файл PDF. Шифрование отсутствует.

    ОтветитьУдалить
  3. Сети свои внутренние они от вирусов то почистили?)

    ОтветитьУдалить
    Ответы
    1. Не знаю, компьютер не включал. Без надобности было :(

      Удалить
    2. У них там в сетях помимо вирусни, был насквозь дырявый сайт, написанный на коленке, откуда можно было мнооого чего надергать)
      http://habrahabr.ru/post/187266/

      Сейчас вроде ситуация получше.

      Насчет монотонного бубнения, есть и такое)

      Удалить