2. • Антон Сапожников
• Занимаюсь тестированиями на
проникновение больше 6 лет
• CTF player MoreSmokedLeetChicken
– DEFCON, CODEGATE, HITB,…
• KPMG
3. О чем?
• Рассмотрю типовую задачу, возникающую
на пентестах
• Обсудим возможные варианты её решения
• Поделюсь своими tips & tricks
4. Постановка задачи
• Корпоративная среда
• Получен удаленный доступ к рабочей
станции пользователя
• Пользователь работает с толстым клиентом
СУБД/АБС/….
• Как получить доступ к данным в СУБД?
7. Простые решения.2
• Не увидел ничего на экране пользователя?
Используй клавиатурный шпион!1
+ metasploit->meterpreter->keylogrecorder
– глюкавый
– нужно ждать…. иногда очень долго
+ можно «убить» приложение
• Поискать в файлах пользователя:
– C:usersuser1Desctoppass.xls
– C:Program FilesMy ProgramData*.*
8. Не очень простые решения
снять дамп памяти приложения
• meterpreter->memdump
• meterpreter->memory_grep
Pros:
В памяти можно найти:
– паролиимена пользователей
– конфигурации
– куски данных
Cons:
– большие объем данных для анализа
– только текущие данные пользователя
– непонятно что и где искать?
9. Не очень простые решения.2
Перехват сетевого трафика
• windump*sniff
Pros:
В трафике можно найти:
– паролиимена пользователей
– данные запрашиваемые пользователем
Cons:
– большие объем данных для анализа
– только текущие данные пользователя
– непонятно что и где искать?
– данные могут быть зашифрованы
10. А что если?
• Паролиключи в памяти не хранятся
• Паролейключей в конфигурационных
файлах нет
• Сетевой трафик шифруется
• К серверу доступ разрешен только с
некоторых ip адресов, и нашего в этом
списке нет
• Реализована двухфакторная
аутентификация
11. Что делать?
• Хучить (hook) функции работы с сервером в
клиентском приложении
<…>
h = connect(database,username,pass,…);
r = query(h, ‘select PAN, HNAME from CARDS’);
<…>
12.
13. Как делать?
• Перехват функций работы с сокетами
+ универсальный вариант
– нужно реализовывать протокол
– данные могут быть зашифрованы
• Перехват функций уровня прикладного
протокола или API.
– реализация сильно зависит от приложения
+ удобная работа с сервером
14. Как делать?.2
Pros:
– Обход ограничений по ip адресам
– Работает в рамках пользовательской сессии, т.е. на
сервере в логах будет только одно соединение
– Обход аутентификации пользователя на сервере
– Обход двухфакторной аутентификации при
установке соединения с сервером
– Незаметно для пользователя атакуемого
приложения
– Возможность напрямую работать с сервером
приложения
16. Например для Oracle
Работа с СУБД Oracle реализованная через OCI.DLL
OCIEnvCreate -> envhp
3xOCIHandleAlloc -> OCI_HTYPE_ERROR, OCI_HTYPE_SERVER,
OCI_HTYPE_SVCCTX,
OCIServerAttach -> srvhp
OCIAttrSet -> OCI_HTYPE_SVCCTX
OCIHandleAlloc -> OCI_HTYPE_SESSION
2xOCIAttrSet -> usernamepass
OCISessionBegin -> svchp
OCIAttrSet -> OCI_HTYPE_SVCCTX
OCIHandleAlloc -> OCI_HTYPE_STMT
OCIStmtPrepare -> stmt
OCIStmtExecute
17. Например для Oracle.2
– OCIHandleAlloc, дает доступ к envhp
– OCIStmtExecute, дает доступ svchp
– Достаточно корректно перехватить всего два
вызова.
18. Как перехватить?
– EasyHooking
– DETOURS
– DLL Injection
• http://syprog.blogspot.ru/2012/05/createremotethrea
d-bypass-windows.html
• Начало нужной функции патчим переходом на наш
обработчик
– Your way