#91 Kali Linux для продвинутого тестирования на проникновение. Отладка и повторение сбоя.
Здравствуйте, дорогие друзья.
На стороне сервера мы должны отлаживать приложение. Для выполнения отладки мы скачаем Immunity Debugger с сайта: https://www.immunityinc.com/products/debugger/. Этот отладчик используется в основном для поиска эксплойтов, анализа вредоносных программ и обратного проектирования любых двоичных файлов. Уязвимый сервер можно подключить как процесс к отладчику после запуска vulnserver.exe или он может быть непосредственно исполняемым и открываться отладчиком, как показано на рисунке ниже:
Как только приложение проходит через отладчик, а скрипт фаззинга запускается из нашего Kali Linux, как показано на рисунке выше, то Вы должны увидеть, что на компьютере жертвы произошел сбой сервера.
Отладчик также дает нам некоторую полезную информацию о смещении исключения 41414141, который преобразуется в AAAA, в разделе «Регистры» в Immunity Debugger, так, как показано на рисунке ниже:
Чтобы выполнить успешное переполнение буфера для данного приложения, необходимо выполнить следующие шаги:
- Подбираем правильную длину spiking
- Фаззинг правильного паттерна
- Нахождение смещения
- Перезапись EIP
- Поиск правильного адреса операции JMP ESP
- Проверка на плохие символы и размещение NOPS sled
- Генерация шелл-кода
- Настройка слушателей и эксплуатация
Первый шаг — точно определить, сколько символов вызвало сбой сервера и какой размер буфера можно использовать. Мы начнем отлаживать приложение, которое «покрашилось», и посмотрим на адрес ESP в разделе «Регистры». Далее, щелкните правой кнопкой мыши в Immunity Debugger и выберите Dump, чтобы увидеть, где полезная нагрузка была вставлена первоначально, и запишите память адреса 00ACF1F0, как показано на рисунке ниже:
Если мы пройдем весь путь до конца, где останавливается фаззинг AAA, вы увидите 00ACFD98, как показано на рисунке ниже. Обратите внимание, что эти адреса будут меняться в зависимости от используемой операционной системы, и использоваться при отладке или дизассемблировании исполняемого файла.
Теперь, когда у нас есть начальный и конечный адреса, давайте воспользуемся python3 для определения длины буфера, запустив python3 в терминале и просто поставив 0x00ACFD98 (конец адреса памяти) и 0x00ACF1F0 (начало адреса памяти), как показано ниже. Он должен предоставить нам длину буфера:
В данном случае у нас длина буфера 2984. Следующим этапом является контроль исполнения нашего код эксплойта.
На этом все. Всем хорошего дня!
Полный цикл статей по Kali Linux для продвинутого тестирования на проникновение.