Debugging, Kali Linux, Kali Linux для продвинутого тестирования на проникновение, Отладка

#91 Kali Linux для продвинутого тестирования на проникновение. Отладка и повторение сбоя.

Здравствуйте, дорогие друзья.

На стороне сервера мы должны отлаживать приложение. Для выполнения отладки мы скачаем Immunity Debugger с сайта: https://www.immunityinc.com/products/debugger/. Этот отладчик используется в основном для поиска эксплойтов, анализа вредоносных программ и обратного проектирования любых двоичных файлов. Уязвимый сервер можно подключить как процесс к отладчику после запуска vulnserver.exe или он может быть непосредственно исполняемым и открываться отладчиком, как показано на рисунке ниже:

Loading vulnserver using Immunity Debugger

Как только приложение проходит через отладчик, а скрипт фаззинга запускается из нашего Kali Linux, как показано на рисунке выше, то Вы должны увидеть, что на компьютере жертвы произошел сбой сервера.

Отладчик также дает нам некоторую полезную информацию о смещении исключения 41414141, который преобразуется в AAAA, в разделе «Регистры» в Immunity Debugger, так, как показано на рисунке ниже:

Registers after the vulnserver crash due to fuzzing

Чтобы выполнить успешное переполнение буфера для данного приложения, необходимо выполнить следующие шаги:

  1. Подбираем правильную длину spiking
  2. Фаззинг правильного паттерна
  3. Нахождение смещения
  4. Перезапись EIP
  5. Поиск правильного адреса операции JMP ESP
  6. Проверка на плохие символы и размещение NOPS sled
  7. Генерация шелл-кода
  8. Настройка слушателей и эксплуатация

Первый шаг — точно определить, сколько символов вызвало сбой сервера и какой размер буфера можно использовать. Мы начнем отлаживать приложение, которое «покрашилось», и посмотрим на адрес ESP в разделе «Регистры». Далее, щелкните правой кнопкой мыши в Immunity Debugger и выберите Dump, чтобы увидеть, где полезная нагрузка была вставлена первоначально, и запишите память адреса 00ACF1F0, как показано на рисунке ниже:

Initial memory where the fuzzing began

Если мы пройдем весь путь до конца, где останавливается фаззинг AAA, вы увидите 00ACFD98, как показано на рисунке ниже. Обратите внимание, что эти адреса будут меняться в зависимости от используемой операционной системы, и использоваться при отладке или дизассемблировании исполняемого файла.

End of the fuzzing memory address

Теперь, когда у нас есть начальный и конечный адреса, давайте воспользуемся python3 для определения длины буфера, запустив python3 в терминале и просто поставив 0x00ACFD98 (конец адреса памяти) и 0x00ACF1F0 (начало адреса памяти), как показано ниже. Он должен предоставить нам длину буфера:

Длина буфера

В данном случае у нас длина буфера 2984. Следующим этапом является контроль исполнения нашего код эксплойта.

На этом все. Всем хорошего дня!

Полный цикл статей по Kali Linux для продвинутого тестирования на проникновение.