История одного взлома

Прежде всего - взлом информационных систем может являться уголовно наказуемым деянием. Наказывают за (гл. 28 УК РФ):

272 УК РФ: Неправомерный доступ к охраняемой законом компьютерной информации, если это деяние повлекло уничтожение, блокирование, модификацию либо копирование компьютерной информации

273 УК РФ: Создание, распространение или использование компьютерных программ либо иной компьютерной информации, заведомо предназначенных для несанкционированного уничтожения, блокирования, модификации, копирования компьютерной информации или нейтрализации средств защиты компьютерной информации

274 УК РФ: Нарушение правил эксплуатации средств хранения, обработки или передачи охраняемой компьютерной информации либо информационно-телекоммуникационных сетей и оконечного оборудования, а также правил доступа к информационно-телекоммуникационным сетям, повлекшее уничтожение, блокирование, модификацию либо копирование компьютерной информации, причинившее крупный ущерб


Буквально позавчера мне предстоял "белый" взлом информационной системы. Почему "белый"? Потому что законный. Сама ситуация не уникальная: ввиду смерти системного администратора утеряны логины и пароли административных учетных записей. Если задачи восстановления доступа к операционным системам и крупным (широко распространенным) программным комплексам широко освещены в Интернете, то вот восстановление доступа к мало распространенным программам является весьма интересной задачей.


Кстати, поскольку в лицензионном соглашении зачастую есть пункт "трогать его не моги", то сперва лучше заручиться разрешением разработчика ПО (здесь его не было, но на всякий случай я это сделал). Сам разработчик предоставляет бесплатную услугу по восстановлению доступа, но нужно же чем-то разнообразить трудовые будни ;-)


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


Итак, сперва лирическое отступление. Отрасль ИТ очень сильно напоминает... Язык. Обычный человеческий язык, например русский. Есть уровень "буквы", "слова", "предложения". Можно для общения заучивать предложения/фразы, а можно выучить буквы, понять семантику и синтаксис и по потребности генерировать нужные предложения. Ламеры как раз тем и отличаются от пользователей и админов, что "учат предложения".


Пойдем "от букв", то есть с теории: любая программа (кроме лабораторных работ) состоит из следующих частей:

- исполняемый код

- бибилиотеки

- служебные данные

- файлы хранения данных


По ярлыку находим папку программы. Смотрим на файлы и особенно на даты изменения. Исполняемый код в 99% случаев статичен, значит не изменяется. Служебные данные и логи обновляются очень часто, файлы хранения - по запросу. Если запросы возникают часто - то и запросы частые, если редко - то редкие... Короче смотрим по ситуации. Распространенная ошибка в том, что некоторые смотрят на разрешения файлов. Файлы читают программы (операционная система - тоже программа), поэтому конфигурацию можно и в исполняемые запихнуть, и в картинку, и в библиотеку и вообще куда угодно. Меняем настройки пользователя. Получаем список файлов. После определенной итерации у нас есть 1 файл который менялся при изменении настроек (если этого файла нет, то значит настройки хранятся в реестре ОС, но мне повезло т.к. софт кроссплатформеный, а реестр есть только в Windows настройки оказались в файле). Ура!..


Нет. Не ура. Открыв файл редактором меня ждали два сюрприза - во-первых приятный, это то что хранение данных было в ini формате, это так:


параметр=значение


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


Вот тут кульминация. Производитель запрашивает конфиг-файл, дешифрует его, сбрасывает пароль, повторно шифрует и отправляет назад. Но софта и алгоритмов шифрования/дешифрования у нас нет...


Выйдем за классику и посмотрим на ситуацию более обобщенно. Нужно ли нам вообще заморачиваться с шифрованием/дешифровкой? Нет. Нам нужно чтобы программа приняла наш пароль как пароль администратора. Обычно вместо паролей хранятся хеши с "солью" (произвольным набором данных), те кто беспокоятся о безопасности добавляют к "соли" еще  логин пользователя (что делает дешифровку нереально сложной), но в данном случае это оказалось не так. Поэтому мы просто ищем в данных пароль пользователя который нам известен копируем его и вставляем вместо пароля администратора.


Но этого мало. Конфигурация считывается при запуске программы. Перезапускаем программу, логин - администратор, пароль - наш пароль...


"Добро пожаловать"...


И через 10 минут на почту приходит конфиг со сброшенным паролем...

2
DELETED
Автор поста оценил этот комментарий

Или я чего-то не понял в твоем описании, или разработчик этого ПО в безопасности как-то  не очень.

раскрыть ветку
1
Автор поста оценил этот комментарий

Я таким образом в малолетстве "взламывал" кинга и поле чудес Башурова)

Жаль только в некоторых местах компентентость разработчиков осталась на том же уровне(

раскрыть ветку