SAP hands on lab_ru

Preview:

Citation preview

Hands-on LabАнализ SAP систем

Юдин Алексей

Positive Technologies

LABS

Поиск сервисов. Получение информации. Удаленный подбор паролей.

Перехват данных аутентификации (RFC/DIAG). Обход авторизаций. VBA+RFC.

Анализ полученного доступа. Доступ к хешампаролей пользователей. Подбор паролей “offline”.

Получение данных из другого манданта. Доступ к файлам ОС. Запуск команд ОС

ОБНАРУЖЕНИЕ СЕРВИСОВ

Инструментарий

Nmap

RFCSDK/NWRFCSDK

Vbs/Python

SAP Frontend 7.20

Сценарий

Сканирование портов

Получение информации о сервисах

Подбор мандантов

Подбор пользователей (RFC)

Подбор пользователей (GUI)

Сканирование портов

Поиск SAP системhttp://scn.sap.com/docs/DOC-17124

• SAP DIAG - 32xx-3299 TCP

• SAP RFC - 33xx-3399 TCP

• ICM HTTP - 80xx TCP

• Message Server HTTP -81xx

• HTTP – 5xxxx

ОС

• SSH/Telnet/Rlogin – 22/23/512-514

СУБД

• Oracle 1521-1530

Автоматизация. Использование SAP RFCSDK

SAP RFCSDK – библиотека для разработки приложений работающих с SAP системой по протоколу SAP RFC

Содержит утилиту для тестирования RFC -Startrfc.exe

Может использоваться для интеграции с PHP,Perl, VB, С++, Python

StartRFC.exe

StartRFC.exe. Получение информации

StartRFC.exe. Подбор мандантов и паролей

Подбор мандантов

Перебор паролей и пользователей

Стандартные учетные записи

SAP* - 06071992

SAP* - PASS

DDIC – 19920706

SAPCPIC – ADMIN

EARLYWATCH - SUPPORT

TMSADM – PASSWORD

SAPGUI Scripting

Поддержка включена в SAP Frontend по умолчанию

Для перебора паролей достаточно знания VBS

Для автоматизации действий в SAP системе требуется включение sapgui_userscripting

Может использоваться VBS/JScript

SAPGUI Scripting. VBS

Пример подбор пароля через DIAG

Используем функцию OpenConnectionByConnectionString

В соответствующие поля вводим учетные данные - findById

Контролируем результат выполнения скрипта (ошибка/не ошибка)

Выводим результат

Пример VBS

Использование Python

Пример получения данных из структур SAP

Пример получения данных из таблиц SAP

Нужен RFC SDK, компилятор С/C++, NWRFC for Python

Контролируем результат выполнения (ошибка/не ошибка)

Выводим результат в консоль/файл

Пример Python

ПЕРЕХВАТ ДАННЫХ

Инструменты

Wireshark

SAP DIAG plugin for Wireshark

Microsoft Excel + VBA

Перехват паролей

Перехват паролей c использованием протокола DIAG

• Wireshark plugin SAP DIAG Decompress (2011) (http://www.securitylab.ru/software/409481.php)

• SApCap (2011) (http://www.sensepost.com/labs/tools/poc/sapcap)

• Cain&Abel (2011) (http://oxid.it)

Перехват паролей с использованием протокола RFC

• Attacking SAP by Mariano Nuñez Di Croce(https://www.blackhat.com/presentations/bh-europe-07/Nunez-Di-Croce/Presentation/bh-eu-07-nunez_di_croce-apr19.pdf)

Перехват паролей DIAG

Перехват данных RFC

Пароли передаются в скрытом виде

Алгоритм обфускации – XOR

Ключ для восстановления пароля

31 3e c3 60 e1 06 4e 3f 6b 48 c8 12 f5 fc 20 3c 89 61 2f f1 ef 2e af f3 bd ec 7e 25 b6 a0 71 83 a3 ea7f ec 09 8a 40 21

Перехват паролей RFC

Использование VBA

Пример получения данных из структур SAP

Пример получения данных из таблиц SAP

Нужен SAP GUI или .ocx компоненты для импорта

Контролируем результат выполнения (ошибка/не ошибка)

Выводим результат в Excel

Пример VBA

ПОДБОР ПАРОЛЕЙ ПО ИЗВЕСТНОМУ ХЕШУ

Инструменты

SAP Frontend

Perl

John the Ripper. Сommunity Enhanced

Анализ полученного доступа

Нашли учетную запись

Осуществляем попытку входа

В случае успешного входа анализируем права (в первую очередь запускаем транзакцию SA38/SE38/SE16/SE17/ST04)

Смотрим свои права и привилегии через RSUSR002

RSUSR002

Собираем хеши паролей

Таблицы с хешами: USR02,USH02,USRPWDHISTORY

Способы получения:

• SE16/SE16N/SE17

• ST04/SQL Command Editor

• RFC

• Database Level…

• OS Level/получение данных из файла ОС

Инструменты: SAPGUI, MIL Read Table, VBS, SQLplus ….

SE16

ST04.SQL Command Editor

Получение данных с использованием SA38/SE38

Запускаем тр. SE93 получаем программу запуска.

Открываем таблицу STSC получаем программу запуска.

SA38/SE38 запускаем программу напрямую.

SE93 Maintain transaction

STSC SAP Transaction Codes

Получение данных из таблиц через SQ01/SQ02

В тр. SQ02 создаем новый инфонабор (таблица)

Переходим в тр. SQ01, выбираем созданный инфонабор.

Определяем список полей для вывода

Запускаем отчет, получаем результат.

SQ01/SQ02

SQ01/SQ02

SQ01/SQ02

SQ01/SQ02

SQ01/SQ02

SQ01/SQ02

Уязвимости алгоритмов хеширования

CODVN A – устаревший алгоритм разработанный SAP – длина пароля <=8, символы в UPPERCASE

CODVN B – устаревший алгоритм на базе MD5, длина пароля <=8 остальная часть пароля обрезается, все символы в UPPERCASE, спецсимволы заменяются на символ ^

Уязвимости алгоритмов хеширования

CODVN D – также устаревший алгоритм предназначался для того чтобы исправить ошибки алгоритма B – в части урезания паролей и использования спец символов

CODVN E – пришел на смену паролям B и D ибыл призван устранить их проблемы, работает в версиях с 4.6x до 6.x

• SAP Note 874738 - New password hash calculation procedure (code version E)

Уязвимости алгоритмов хеширования

CODVN F – наиболее часто используемый на текущий момент алгоритм хеширования, основан на SHA1, длина пароля до 40 символов , перед хешированием строки переводятся в UTF-8, поэтому символы могут быть практически любые, работает в версиях начиная с 7.00

Уязвимости алгоритмов хеширования

CODVN G = B+F – можно подобрать сначала часть пароля размером в 8 символов по алгоритму B а затем использовать эту часть для подбора пароля по алгоритму G, работает в версиях начиная с 7.00

Уязвимости алгоритмов хеширования

CODVN H – наиболее безопасный алгоритм хеширования – основан на SHA1 с переменной длиной соли, работает в версиях начиная с 7.02

CODVN I = B+F+H – проблемы аналогичные G

Скорость подбора паролей

• до 700 000 паролей в секунду для CODVN B

• до 300 000 паролей в секунду для CODVN G

Тестирование паролей

Выгружаем USR02 (поляBNAME/BCODE/PASSCODE)

Формируем файлы формата username:username<space>$HASHCODE

Выбираем словарь или создаем свой

Запускаем john the ripper

Результаты тестирования

ДОСТУП К ФАЙЛАМ И КОМАНДАМ ОС

Просмотр директорий.

Тр. AL11

SE37 запуск функционального модуля.

CG3Y/CG3Z транзакции

Directory Listing

Directory Listing

Get Files

Put Files

Запуск команд ОС

Запускаем транзакцию SM51

Набираем в поле транзакций grep

Вводим текст вида nnn” ? & <OS command> &

Запуск команд ОС

Запуск команд ОС

Запуск команд ОС

Запуск команд ОС

Запускаем транзакцию SM49/SM69

Создаем свой вариант запуска

Запускаем с нужными опциями

Вывод в дальнейшем можно сохранить локально.

Запуск команд ОС

Запуск команд ОС

Запуск команд ОС

Запуск команд ОС

Запускаем транзакцию SA38

Вводим программу RSBDCOS0

В поле вводим программу OS

Получаем вывод программы.

Запуск команд ОС

Запуск команд ОС

Спасибо за внимание!

Юдин Алексей

ayudin@ptsecurity.ru