Как я учил арабских шейхов ломать SAP

в 11:11, , рубрики: ERP, sap, безопасность, безопасность SAP, Блог компании «Digital Security», информационная безопасность, конференции, метки: , , ,

Женщины в паранджах, мужчины в традиционных арабских одеяниях, резные стены и много-много позолоты, и всё это внутри огромного деревянного корабля. Именно так выглядит конференция по информационной безопасности в Кувейте – Kuwait Info Security 2012.

Как я учил арабских шейхов ломать SAP

По долгу службы в Digital Security продвигая в массы безопасность SAP, да и вообще ради ярких моментов и новых знакомств, я периодически выступаю на различных международных конференциях по безопасности… хотя точнее всё же было бы называть их конференциями по опасности, так как на них ведущие исследователи рассказывают о новых интересных способах взлома информационных систем. Несмотря на два десятка выступлений на таких ивентах, как BlackHat и HITB, конференция в Кувейте всё-таки запомнилась мне как одна из самых необычных.


Как я учил арабских шейхов ломать SAP

اهتمام!
Кому интересно почитать только технические подробности уязвимостей SAP – для вас данная информация любезно выделена курсивом и очищена от душевных переживаний автора во время поездки. Пример видео со взломом SAP доступен в конце статьи.

Признаться, изначально я мало себе представлял, куда я вписался, и шутил, что поеду обучать арабов кибертерроризму. Как оказалось позднее, Кувейт хоть и арабская страна, но вполне себе небедная, если не сказать наоборот. Имея порядка 10% мирового запаса нефти, страна существует за счёт её добычи, что составляет, по разным данным, от 90 до 98 % экспорта (кстати, для меня огромный вопрос, что же оставшиеся 2 %).

Как я учил арабских шейхов ломать SAP

В стране порядка 1 млн коренных жителей, на которых, собственно, и распространяется это богатство. Кроме коренного населения, в Кувейте также порядка 3,5 миллионов эмигрантов – это в основном индусы и азиаты. Так что общаться в магазинах, гостиницах, ресторанах и вообще везде, как правило, приходится с индусами: у арабов жизнь удалась, и работать они не стремятся.

Итак, майские праздники мне предстояло провести в стране, где алкоголя нет даже в Duty Free, что для многих было бы смертельным ударом, но меня ни чуточку не расстраивало. Промотавшись 2 дня по Кувейту и объездив его от Саудовской Аравии до самой границы с Ираком (я пока ещё не настолько крут, как Тёма, чтобы соваться туда),
Как я учил арабских шейхов ломать SAP

насмотревшись на нефтяные вышки и бесконечные стройки, я отправился в отель, где проходила конференция.

Сначала показалось, что отель даже не достроен и всё это какая-то шутка – в самом деле, ну откуда здесь, посреди пустыни, будет конференция?.. Тем не менее, слегка поодаль виднелся огромный деревянный корабль, пришвартованный к берегу (кстати, этот корабль занесён в книгу рекордов Гиннесса как самое большое в мире деревянное судно). Он-то и являлся гостиницей, а точнее, конференц-залом, в котором проходил ивент.

Как я учил арабских шейхов ломать SAP

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

Как я учил арабских шейхов ломать SAP

…действительно ли это то место, где я должен рассказывать про переполнение буфера в ядерной функции приложения SAP NetWeaver с последующей эксплуатацией этого переполнения через вызов транзакции, через которую необходимо запустить уязвимый отчет, который вызывает модуль ядра и передаёт туда 108 байт для перезаписи EIP и ещё порядка 100 для шеллкода, и как это было сложно запихать, учитывая, что размер входного значения ограничен 255 байтами…

И тут мои мысли прервались всеобщей суетой, все куда-то разбежались. Я понял, что вроде как пришёл самый главный шейх, для которого было освобождено место на первой скамье. После того как все собравшиеся представители СМИ закончили его фотографировать, он вышел на сцену и… нет, не начал читать кейнот, как было бы логично предположить с учётом тематики конференции, а стал молиться.

….В это время в моей голове опять суетились мысли: не пойти ли в номер и не переделать ли презентацию, выкинув оттуда всё и оставив только 3 картинки а-ля: нефть, террорист, ERPScan … Нет, уж, наверное, что такое отказ в обслуживании, они себе представляют, причём, пожалуй, лучше, чем я, a значит, уязвимость отказа в обслуживании в WEB-интерфейсе SAP NetWeaver ABAP, которая возникает при обработке кривого XML-запроса на сервис WEBRFC, объяснить можно. Ну, по сути, там же всё просто: есть интерфейс веб-приложения, доступ к которому имеет любой пользователь системы, а также злоумышленник, который не поленился поискать в Интернете список пользователей и паролей SAP по умолчанию. Есть множество RFC-функций, которые позволяют делать различные действия в системе, но требуют дополнительных прав, а есть функция RFC_PING, которая никаких прав не требует. Парсер XML-пакетов, в свою очередь, как обнаружил ещё давно мой коллега d00kie, написан индусами, в смысле, имеет уязвимость, называемую XML Entity Expansion и XML Blowup (примеры ниже). Заключается она в том, что внутри XML-пакета мы формируем множество рекурсивных обращений к определённым в теге ENTITY переменным, что заставляет XML-парсер безжалостно поедать ресурсы системы. Таким образом, послав сотню запросов, можно с лёгкостью «положить» сервер с SAP, и все бизнес-процессы компании накроются медным тазом на время атаки….

<?xml version="1.0"?>
<!DOCTYPE root [
<!ENTITY ha "Ha !">
<!ENTITY ha2 "&ha; &ha;">
<!ENTITY ha3 "&ha2; &ha2;">
<!ENTITY ha4 "&ha3; &ha3;">
<!ENTITY ha5 "&ha4; &ha4;">
...
<!ENTITY ha128 "&ha127; &ha127;">
]>
<root>&ha128;</root>

<?xml version="1.0"?>
<!DOCTYPE foobar [<!ENTITY x "AAAAA… [100KB of them] … AAAA">]>
<root>
<hi>&x;&x;….[30000 of them] … &x;&x;</hi>
</root>

Вступительное слово закончилось, и начались доклады от Qualys и Symantec про безопасность этих ваших клаудов и тренды в ИБ, которые традиционно включали в себя мобильность, cloud и промышленные сети, чего я уже порядком наслушался, а посему побрёл в выставочный зал, где встретил коллег, из компании ELCOMSOFT, которые тоже решили принять участие в этой конференции. Отдельное им спасибо за приятную компанию и фотки.

Как я учил арабских шейхов ломать SAP

Вскоре как раз должен был начаться доклад Андрея Беленко – его я решил послушать и посмотреть на реакцию зала, так как у него традиционно доклады достаточно технические, и была отличная возможность понять, как выстраивать выступление и на чём заострить внимание.

…Отлично, подумал я: доклад Андрея был про пароли и алгоритмы шифрования, а это то, что надо, у меня как раз одна из уязвимостей в SAP посвящена шифрованию. Фишка в том, что приложение SAP GUI – собственно, основная клиентская утилита для подключения к SAP – позволяет хранить пароли в ярлыках. Функция эта по умолчанию запрещена в новых версиях, но вы же сами понимаете: когда бухгалтеру НАДО, чтобы было удобно, зачастую пароли прописывают-таки в этих ярлыках, что я не раз обнаруживал на аудитах. Естественно, пароли там хранятся не в открытом виде – они зашифрованы. Хотя «зашифрованы» – это громко сказано: за такое шифрование Диффи с Хельманом наградили бы автора орденом Facepalm в кубе. Не то чтобы шифр Цезаря, но, в общем, практически он. Для шифрования использовался XOR. Со статическим ключом. Ключом, одинаковым для всех инсталляций всех версий… В общем, знатный FAIL, а что самое главное, исправлять это никто не будет, так как SAP посчитала, что это не уязвимость. Ну, раз не баг, значит фича, так что пусть все знают, если вдруг понадобится расшифровать «забытый» пароль. Кстати, получить доступ к самой рабочей станции тоже труда не составляет, и это можно реализовать через ActiveX-уязвимости SAP GUI, о чём я рассказывал давно, или при помощи, например, Teensy USB, почитать о которой можно в статье моего коллеги.

Собственно, больше первый день ни чем не запомнился, и я слегка приободрился по поводу того, что слушатели вроде как довольно подкованы в моей области, хоть и выглядят необычно. Не следующий день доклады были более техническими, и из одного даже удалось почерпнуть пару интересных мыслей. Пока я сидел в зале, понял, что кувейтцы – вообще странный народ. Страсть выделиться у них развита не меньше, чем у русских, и многие выглядят и ведут себя, как дети, которым свалилось на голову бабушкино наследство, и они прямо-таки не знают, что с ним толком делать. Так, к примеру, практически у каждого уважающего себя кувейтца по 2 смартфона, зачастую это 2 айфона – чёрный и белый. Ну не могут они решить, какой круче, поэтому на всякий случай носят два.

Так незаметно пролетело время, и начался доклад, скажем так, коллег по безопасности SAP, которые рассказывали про GRC и вопросы разграничения полномочий. Собственно, к этой области, к сожалению, большинство приравнивает безопасность SAP, хотя с тех пор, как компания SAP закрыла свою двухтысячную по счёту программную уязвимость (причём 80% из этих 2000 было закрыто за последние 3 года), мнение, будто безопасность SAP – это только разграничение полномочий, выглядит особенно странно. Впрочем, думаю, на эту тему как-нибудь разражусь отдельным постом.

…После этого доклада я ещё больше приободрился, так как, во-первых, слушатели явно были, по крайней мере, в курсе, что такое SAP, и минимально знакомы с тем, из чего SAP состоит, и даже понимали, что там есть проблемы безопасности, как минимум, касающиеся разграничения полномочий. А посему можно рассказать им и о том, что есть много других проблем – вот, к примеру, внутренний язык ABAP, на котором написаны программы в системе SAP. Он, как и многие другие языки, может содержать уязвимости и действительно содержит их. Все те же SQL-инъекции, обход каталога при доступе к файловой системе, инъекции ABAP-кода, межсайтовый скриптинг, если мы говорим о BSP (это web- сценарии, написанные на смеси ABAP и HTML), и прочие проблемы, а также множество уникальных уязвимостей, присущих коду, разработанному на ABAP. Одна из интересных уязвимостей, найденных нами в SAP, которая распространена в WEB-приложениях и всем известна ещё из CGI-скриптов, называется «внедрение команд ОС». Логика тут та же: в ABAP есть вызовы ядра, позволяющие вызывать команды ОС. Иногда параметры в эти вызовы попадают от пользователя и не фильтруются. Таким образом, используя символ “&”, разделяющий команды в ОС Windows, можно добавить к вызываемой команде ещё и свою собственную, к примеру: “net user hacker QWERTY /add” – тем самым создав в ОС новую учётную запись .

Подробное демо, как зайти в систему с пользователем EARLYWATCH и паролем support и выполнить команду ОС, смотрим на видео.

В итоге, рассказав полностью свой доклад «TOP 10 наиболее интересных уязвимостей SAP», я получил довольно положительные отзывы и смех из зала над особенно забавными уязвимостями.

Как я учил арабских шейхов ломать SAP

Другие уязвимости я более детально рассмотрю в следующих постах. Всё, что касается безопасности SAP, также доступно на сайте проекта ERPScan.com/ru в разделах исследований и публикаций.

В целом Кувейт, конечно, не туристическая страна, и народ, привыкший к экскурсиям и подобающему сервису, вряд ли оценит это место, а тем более захочет вернуться, но, тем не менее, зачатки Арабских Эмиратов и Дубая там присутствуют. Глядишь, лет через 5 Кувейт может стать вторым Дубаем, ну а пока – дома не достроены, вода грязная, еда американская, алкоголя нет даже в Duty Free, но зато очень приветливый народ, неповторимые виды пустыни, арабский колорит и просто небанальное место.

Автор: AlexandrPolyakov


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js