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

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

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

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

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


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


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


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


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


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

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

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

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

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


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


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


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


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


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


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


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


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


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

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

привет, у меня к тебе немного странная просьба. мог бы дать твои координаты любого месенджера? . или почту =) что б не тут писать

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

Ну, про 99% ты загнул). Да, многе из того что мне попадалось действительно было защищено плохо (так что бы школьник/начинающий_любитель не разобрались), но были и действительно стоящие экземпляры (я занимался настольным ПО, в вебе не силен).

Мне кажется что такая беда, когда конторе нужно приложение, начальство все таки уломали на него, но денег нет - вот и нанимаются студенты на фрилансе по принципу "сделай дешево", а поддержка по принципу "какая поддержка?".

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

Действительно беда. Хотя в реале есть ровно 2 ситуации - описанная и прямо противоположная, когда денег дали, а у ИТ-шников забыли спросить, что именно нужно покупать. Вот сейчас сижу и "дружу" несовместимый софт (вернее софт с железкой). Потому что деньги уплачены (возможно и откаты получены), а нихрена не работает и более того по ответу техподдержки софт и железяка изначально несовместимы. То что на часах первый час ночи - почему-то не их, а мои проблемы...


Эта беда в принципе просто решается - нужно чтобы отвечал за все кто-то один (от формирования бюджета до реальной работы).

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

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

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

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

Способ практически классический, да и в принципе подходит для 99% приложений. Насчет компетенции - аналогичное мнение. Информационной безопасностью никто сейчас не занимается, даже возникает ощущение, что накладывается некоторое табу на защиту приложений и данных пользователей.


Недавно раскрывал "черный ящик" (веб-приложение) т.к. интерфейс черезжопно-убожеский, а нужно всего пару запросов делать (собрал через python/requests). Для "раскрытия" (опять же классика) оказалось достаточно внимательно изучить js на предмет AJAX. Это было бы вообще не интересно если бы не одно "но"... Введенный при авторизации логин/пароль не заменяются сессионным ключом или аналогичной процедурой, а записываются в печеньку. О том что приложение HTTP, а не HTTPS...

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

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

раскрыть ветку (1)
Автор поста оценил этот комментарий
Разработчик данного ПО в вопросах безопасности имеет средний уровень. Дело в том, что безопасность - клинок обоюдоострый. Слишком сильная система защиты приводит к высокой вероятности полной утери управления при нештатных ситуациях (та же смерть администратора), низкая безопасность - ломать будет каждый школьник. Есть софт который после переустановки не может работать со старыми данными (как в этом случае), поэтому переустановка - крах работы за несколько лет. Важные выдержки есть, но вот если понадобиться что-то, что считалось не важным - его уже нигде нет.


Тут описание не "что делать", а скорее "как нужно думать" при проведении операции взлома.


P.S. Довольно часто бывает, что разработчик бросает свой программный продукт (банкротство, нерентабельность, другие причины), некоторые переходят на аналоги,но чаще всего "привыкли". Пользователи - далеко не гении, особенно если софт очень узко специализирован. Поэтому взлом для системного администратора, хоть и не ежедневная, но все-таки обязанность.