Python3 Поиск в виртуальной памяти запущенного процесса windows - PullRequest
1 голос
/ 16 июня 2020

начало TL; DR;

Я хочу написать сценарий python3 для сканирования памяти запущенного процесса windows и поиска строк.

end TLDR;

Это для двоичного файла CTF. Это типичный PE-файл Windows x86. Цель состоит в том, чтобы просто получить флаг из памяти процесса во время его выполнения. С ProcessHacker это просто: вы можете искать строки в памяти запущенного приложения и находить флаг с помощью регулярного выражения. Теперь, поскольку я мазохистский c компьютерный фанат, я стараюсь писать сценарии для CTF (на самом деле для всего). В частности, я хочу использовать python3, C# - тоже вариант, но мне бы очень хотелось сохранить все сценарии решения в python.

Думал, что это будет очень простая задача. Вы знаете ... pip установите какую-нибудь библиотеку, написанную кем-то, кто уже решил проблему, и используйте ее. Не удалось найти ничего, что позволило бы мне делать то, что мне нужно для этой задачи. Вот библиотеки, которые я уже опробовал.

  • ctypes - это был первый, который я использовал, в частности, ReadProcessMemory. Продолжал получать 299 ошибок, потому что буфер, который я передавал, был больше, чем этот раздел памяти, поэтому я сделал рекурсивную функцию, которая поймала бы это исключение, разделив длину буфера на 2, пока не получилось, что ТОГДА будет читать по одному байту за раз пока не появится ошибка 299. Возможно, я был на правильном пути, но мне не удалось достать флаг. Я БЫЛ в состоянии найти флаг, только если я знал точный адрес флага (который я получил от взломщика процессов). Я могу задать отдельный вопрос по SO, чтобы ответить на этот вопрос, на самом деле я просто спрашиваю сообщество, существует ли что-то уже, прежде чем погрузиться в это.

  • pymem - Хорошая оболочка для ctypes, но с теми же проблемами, что и выше.

  • winappdbg - python2 .x only. Я не хочу использовать python 2.x.

  • haystack - Похоже, это зависит от winappdbg, который зависит от python 2.x.

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

  • волатильность - Похоже, это предназначено для работы с полными дампами RAM, а не для подключения к текущим запущенным процессам и чтения памяти.

Мой план на данный момент состоит в том, чтобы немного больше погрузиться в angr, чтобы посмотреть, сработает ли это, go вернуться к pymem / ctypes и попробовать больше. Если ничего не помогает, ProcessHacker IS открывает исходный код. Я плохо говорю на C, так что потребуется время, чтобы понять, как они это делают. Очень надеюсь, что мне не хватает какой-то библиотеки python3, или, может быть, я ошибаюсь.

1 Ответ

0 голосов
/ 18 июня 2020

Закончил написание скрипта с использованием библиотеки frida . Также необходимо передать soutz rootbsd, потому что его код в проекте fridump3 очень помог.

...