
инструмент для извлечения паролей из памяти TeamViewer с помощью Frida
Всем привет, в этой статье мы хотим рассказать о нашем небольшом исследовании безопасности паролей в TeamViewer. Этот метод может помочь во время пентеста для пост-эксплуатации, чтобы получить доступ к другой машине через TeamViewer.
Несколько дней назад я работал на своей облачной VPS с Windows через TeamViewer (где я установил собственный пароль). После работы я отключился, а в следующий раз, когда захотел подключиться, увидел, что TeamViewer автоматически заполнил пароль.

Я подумал: «Интересно, как я могу получить доступ к паролю? Как пароль хранится на моём компьютере?»
Я сдампил память TeamViewer и выполнил grep по паролю.

Ооо да, 😊 пароль хранится в памяти в формате Unicode. Оказывается, если завершить работу с TeamViewer и не убивать процесс (или не выходить из TeamViewer

то пароль останется в памяти).
После анализа мы поняли, что первая красная область — это начальные магические данные, а вторая — конечные магические данные (иногда конечные магические данные имеют значение 00 00 00 20 00 00).
Чтобы извлечь пароли из памяти, мы написали две мини-программы на Python и C++.
Спасибо команде Frida за замечательный инструмент! Наш скрипт на Python подключается к процессу TeamViewer.exe, получает базовый адрес и размер памяти каждой библиотеки в этом процессе. После этого он поочерёдно дампит области памяти, ищет фрагменты, начинающиеся с байтов [00 88] и заканчивающиеся на [00 00 00], и копирует их в массив. Последний шаг — выбор конечных декодированных строк по регулярному выражению и политике паролей.

После выполнения кода на C++ вы получите такой вид: «asdQWE123» — это пароль.

Пример на C++

Пример на Python
