На просторах сети можно найти множество публикаций на тему проведения различных пентестов: этапность, используемые инструменты, получаемые результаты, отчетность и т. д. Однако, все это относится к классическому тестированию на проникновение в корпоративных сетях. При этом как правило не рассматривается пентест технологической сети и тестирование платежных терминалов, банкоматов и т. д. И если с первыми все более менее понятно, пентест реального работающего оборудования АСУТП запросто может привести к непоправимым последствиям и эту тему лучше особо не развивать, то пентест различных терминалов стоило бы осветить подробнее. В этой статье мы поговорим о том, как можно проверить защищенность банкоматов, платежных терминалов и других аналогичных устройств. Но для начала дежурный дисклеймер.
Дисклеймер
Материалы данной статьи приводятся в ознакомительных целях. Автор снимает с себя всякую ответственность за незаконной использование описываемых в статье решений. Также автор напоминает о статьях УК 272 (Несанкционированный доступ), 273 (Вредоносы), 274 (Нарушение правил работы) и 274.1 (все тоже самое, но для субъектов КИИ).
Железо, просто железо
Для начала давайте определимся с тем, кого мы собственно собираемся пентестить. Прежде всего это конечно банкоматы и платежные терминалы — все то, что связано с деньгами. Эти устройства являются лакомым кусочком для злоумышленников и кроме того, нормативные требования регуляторов, в частности ЦБ требуют проведение проверок защищенности платежных систем.
Однако, на этом наш объем работ не ограничивается. Также, можно выделить устройства, которые вроде бы тоже имеют дело с деньгами, но при этом их хозяева далеко не всегда выполняют требования по безопасности. Это всевозможные платежные терминалы на парковках, автоматические мойки и аналогичные устройства, связанные с автоматической оплатой. Такие устройства часто принимают оплату только налом, тем самым усложняя жизнь привычным к безналу пользователям. Но для нас такие устройства представляют интерес прежде всего с точки зрения безопасности, а именно с точки зрения того, что на них могут быть ослаблены меры безопасности, так как они не обязаны выполнять требования регуляторов. Или их владельцы думают, что не обязаны:)
И третий тип устройств это те, которые не связаны напрямую с деньгами. Всевозможные справочные системы и терминалы, электронные очереди и т. д. Эти устройства не имеют дел с деньгами, но это не означает, что они неинтересны злоумышленникам. В случае, если на устройстве получится запустить произвольный код, еще и с привилегированными правами, оно вполне может стать плацдармом для развития атаки, если с него можно получить доступ к внутренней сети организации. Как правило, эти устройства должны быть подключены к сети, например, тот же терминал электронной очереди должен уведомлять сотрудников организации, какой номер кому назначен и эти значения должны выводиться на большой экран на стене и возможно, также озвучиваться.
Аналогично, терминал с картой торгового центра может быть не автономным, а подгружать информацию о магазинах, отображаемых на карте из внутренней базы или вообще может отображать карту в виде веб‑страницы в полноэкранном режиме, а сама страница при этом находится на внутреннем веб сервере.
Таким образом, защищать нужно не только устройства, непосредственно работающие с деньгами, но и другие терминальные системы, так как они могут представлять интерес для злоумышленников.
Виды пентеста устройств
Собственно, нельзя сказать, что общие принципы тестирования на проникновение устройств сильно отличаются от тестов ПО. Здесь также есть тесты «белого» и «черного» ящиков.
Проверка черным ящиком предполагает, что мы проверяем устройство, будь то банкомат, платежный терминал или другое оборудование, в естественной «среде» обитания (в переходе, холле отделения банка и т. д.), то есть с подключенными коммуникациями. При этом уровень воздействия обговаривается при заключении договора на пентест и может варьироваться в широких пределах.
Например, лайтовый вариант предполагает воздействия на устройство без нанесения ему каких‑либо физических повреждений или попыток разбора. Максимум что может пентестер это отключить питание или сеть. Предполагается, что оборудование находится под постоянным наблюдением и злоумышленники не успеют до приезда группы быстрого реагирования физически вскрыть устройство.
Вариант пожестче обычно используют для банкоматов и устройств, работающих непосредственно с наличными деньгами, допускает нанесение физических повреждений и шум. Здесь важное значение имеет время и средства, которые потребуются для вскрытия устройства.
Тестирование белым ящиком предполагает предоставление устройства уже для законного разбора, как правило в лаборатории исполнителя. Данный вариант позволяет провести анализ используемого в устройстве образа операционной системы и приложений, в лабораторных условиях, что также повысит объективность проверки.
Что под капотом
Наиболее распространенные модели устройств используют в качестве операционных систем что‑нибудь не слишком свежее, типа Windows XP. Это связано с тем, что банкоматы и другое оборудование содержит слабое аппаратное обеспечение и более требовательную ОС им будет сложно потянуть. С другой стороны для работы тех же банкоматов особых мощностей и не требуется и та же Windows XP вполне справляется с теми задачами, которые ставятся перед устройством.
Количество доступных пользователю интерфейсов на устройствах всегда максимально ограничено. Так, если мы говорим о банкоматах, то здесь нам доступны устройства выдачи/загрузки денег, клавиатура, контактный/бесконтактный считыватель карт, выход для наушников. Если устройство не предполагает работу с наличными средствами, то количество интерфейсов еще меньше.
При пентесте методом черного ящика доступные интерфейсы — это фактически все что у нас есть для влияния на поведение устройства, соответственно, чем больше интерфейсов нам доступно, тем больше потенциальных векторов атак мы можем рассматривать.
Возможные вектора атак
Обычно при пентесте мы пытаемся найти уязвимости для того, чтобы потом их проэксплуатировать. В случае с теми же терминалами для того, чтобы попытаться найти и проэксплуатировать уязвимость надо сначала выйти из полноэкранного режима, в котором загружен интерфейс на экране. Если удалось выйти в ОС, то далее необходимо вызвать экранную клавиатуру (например, через Панель управления) и устройство превратится в обычный компьютер.
На старых устройствах можно было попытаться нажать крайние пиксели на экране для того, чтобы выйти в интерфейс ОС. Сейчас подобное может сработать только на очень старых устройствах, например, на терминалах оплаты парковки. На банкомате такое проделать вряд ли получится.
Тогда, для того, чтобы попытаться получить доступ к оконному интерфейсу нам необходимо тем или иным способом вызвать сбой на устройстве и посмотреть как оно будет обрабатывать ошибочную ситуацию.
Начать можно с отключения питания и перезагрузки. По идее в банкоматах должен быть ИБП но на практике мне приходилось сталкиваться с ситуациями, когда при отключении питания устройство также отключалось. Возможно, после перезагрузки удастся попасть в окно ОС.
Еще одно направление это отключение сетевого соединения. Если используется проводное соединение, то как правило можно выдернуть кабель из розетки. Беспроводное соединение можно попытаться заглушить, например накрыв антенну железным ведром.
Так или иначе устройство оставшись без связи выдаст сообщение об ошибке и, возможно вывалится в интерфейс ОС. Это более эффективный способ, чем отключение питания, потому что здесь перезагрузка не происходит и все зависит от того, как обрабатывается ошибка пропадания связи.
Ошибочную ситуацию можно вызвать и при работе с интерфейсами. Так в считыватель карт можно поместить неисправную карту, либо можно слегка придержать карту, когда считыватель будет ее забирать или помешать ему выдать карту. В результате может возникнуть ошибка считывателя и здесь тоже важно как устройство будет ее обрабатывать.
В целом идея с обработкой ошибок думаю понятна. При наличии физического доступа к сетевому кабелю можно отдельно рассмотреть атаки типа человек посередине, но здесь весь трафик будет зашифрован (скорее всего), хотя попробовать конечно стоит.
Как защититься
При обеспечении защиты банкоматов, терминалов и других устройств основным средством является физическая безопасность. Наличие камер, сигнализации и прочих оргмер, не позволяющих злоумышленникам быстро получить доступ к содержимому устройства или же просто унести его (с банкоматами бывали такие случаи) является обязательным. Также должны быть защищены все коммуникации, идущие к устройству и закрыты все его интерфейсы. Так наличие доступного USB порта существенно упростит жизнь атакующему.
Что касается обработки ошибок, то приложение, работающее на устройстве должно быть написано таким образом, чтобы при возникновении исключений оно обрабатывало их самостоятельно не передавая управление ОС. То есть, в случае потери связи банкомат должен перейти в режим временно недоступен, а не провалиться в ОС с ошибкой соединения.
Заключение
Различные терминалы получили достаточно широкое распространение и важно, чтобы эти устройства были безопасны в работе. В этой статье мы рассмотрели основные подходы к тестированию на проникновение для различных устройств и методы защиты.
Приглашаю вас на бесплатный вебинар курса «Пентест. Практика тестирования на проникновение». Зарегистрироваться.
Также на странице курса вы сможете посмотреть записи прошедших вебинаров.