В этом блоге я покажу, как легко любой может взломать программное обеспечение для онлайн-тестов/викторин, если оно плохо разработано.
Привет, мир! ❤️
Я надеюсь, что все в порядке и в безопасности дома. В связи с недавним всплеском COVID-19 в Китае и некоторых других странах многие учебные заведения вновь планируют перевести всю образовательную деятельность в формат электронного обучения. Я получил запрос от компании-разработчика программного обеспечения на тестирование недавно разработанного приложения для онлайн-экзаменов.
Это было приложение толстого клиента, исполняемый файл которого планировалось предоставить студентам.

Проще говоря, когда учащийся нажимает на это приложение, оно открывает полноэкранный интерфейс с запросом учетных данных для входа.

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

Первоначально я пытался выйти из полноэкранного режима, я пробовал сочетания клавиш, такие как Alt+Tab, Ctrl+Alt+Del, Alt+Esc, Ctrl+Esc и т. д., но безрезультатно, я пробовал несколько других клавиш/последовательности Secure Attention. Я не мог выйти из этого окна.
Начал анализировать внутренности приложения с помощью IDA Pro, при бинарном анализе обнаружил, что оно проверяет комбинации горячих клавиш, но не проверяет событие, возникающее при нажатии той же клавиши много раз. Это означает, что он не может ограничивать определенные команды управления специальными возможностями, такие как залипание клавиш.
«Залипание клавиш» — это функция специальных возможностей некоторых графических пользовательских интерфейсов, которая помогает пользователям с ограниченными физическими возможностями или помогает пользователям уменьшить повторяющиеся травмы от перенапряжения. Он сериализует нажатия клавиш вместо одновременного нажатия нескольких клавиш, позволяя пользователю нажимать и отпускать клавишу-модификатор, например Shift, Ctrl, Alt или клавишу Windows, и оставлять ее активной до тех пор, пока не будет нажата любая другая клавиша.
— Википедия
Пользователи могут включить или отключить залипание клавиш в Windows, нажав клавишу Shift пять раз. С помощью настройки Sticky key пользователь может выйти из полноэкранного режима и получить доступ к интерфейсу операционной системы в текущем тесте.

Нажав «Перейти в Центр специальных возможностей, чтобы отключить сочетание клавиш», появится окно настройки залипания клавиш. В окне «Настройка залипания клавиш» злоумышленник может получить доступ к приложениям, доступным в системе, из адресной строки.
Я быстро ввел в адресную строку cmd.exe и нажал на иконку «Перейти», в результате чего CMD открылась. 🆒

Это решило мою основную проблему с получением окна командной строки, отсюда легко выполнить что угодно. Я использовал метод побега с залипанием ключа в некоторых киосках и на выставках робототехники во время учебы в колледже.
Теперь, что дальше?? 🤔
Моей конечной целью было скомпрометировать сервер и получить все ответы, поэтому я начал динамический анализ исполняемого файла.
Я перехватил трафик приложений с помощью инструмента Echo Mirage. Только что открыл инструмент Echo Mirage. Нажмите «Inject» в меню «Process» в Echo Mirage. Выбран текущий процесс приложения для доступа к его трафику.

Я заметил, что приложение отправляет имя пользователя и пароль на IP-адрес через порт 21, который используется для служб FTP.
Протокол передачи файлов (FTP) — это стандартный протокол связи, используемый для передачи компьютерных файлов с сервера на клиент в компьютерной сети. FTP основан на архитектуре модели клиент-сервер, использующей отдельные каналы управления и передачи данных между клиентом и сервером.
— Википедия
FTP — это протокол передачи открытого текста, в котором данные передаются в незашифрованном формате. Это уязвимость системы безопасности. Использование этой уязвимости может позволить злоумышленнику получить конфиденциальную информацию из сети.
Я быстро открыл FTP-клиент (WinSCP), ввел данные, полученные с помощью инструмента Echo Mirage, и попытался подключиться к FTP.

Бинго! Я успешно подключился к удаленному FTP-серверу, содержащему конфиденциальные файлы и папки.

Интересно, что мне удалось создать тестовый файл, что означает, что сервер имеет права на запись для этого пользователя.
Были некоторые файлы резервных копий и полные исходные коды старых версий приложения. Из анализа исходного кода я обнаружил, что приложение использовало службу SQL Server, и заметил, что учетные данные были жестко закодированы в коде. С жестко заданными учетными данными я смог получить доступ к базе данных SQL, которая содержала все записи учащихся, включая личные данные, имена пользователей, пароли, а также все вопросы и ответы.
Уроки для команд разработчиков
- Всегда внедряйте эффективную проверку ключевых событий на основе белого списка и избегайте подходов с черным списком.
- Не используйте средства связи с открытым текстом, такие как FTP или HTTP, вместо этого используйте SFTP или HTTPS.
- Жестко запрограммированные учетные данные должны храниться в отдельном файле свойств и в зашифрованном виде.
- Не позволяйте приложениям работать на устаревших версиях ОС.
- Перед созданием программного обеспечения разработайте всеобъемлющий план, включающий тщательно спланированные многоуровневые средства защиты, даже если это нефинансовое программное обеспечение.
С Рождеством! 🎄
Продолжайте создавать инновационные вещи, которые вдохновляют новое поколение.
Берегите себя и будьте здоровы 😇
Кто я?
Чтобы кратко представиться, меня зовут Бипин Джития, и я основатель решений Cuberk.
Мы занимаемся информационной безопасностью и предоставляем передовые решения в области информационной безопасности критически важным предприятиям с целью интеллектуальной защиты их ИТ-среды. Мы предлагаем нашим клиентам различные услуги по оценке уязвимостей и тестированию на проникновение. Если у вас есть минутка или две, чтобы узнать о нас больше, вы можете посетить нас здесь, на www.cuberk.com