Skip to content
tool to extract passwords from TeamViewer memory using Frida
Branch: master
Clone or download
Latest commit 3185ec0 Jul 17, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
img upd img text Aug 2, 2017
README.md Update README.md Jul 17, 2018
TV_POC.py python script Aug 1, 2017
_config.yml Set theme jekyll-theme-cayman Aug 1, 2017
main.cpp Create main.cpp Aug 1, 2017

README.md

Extract password from TeamViewer memory using Frida (CVE-2018-14333)

  Hi there, in this article we want to tell about our little research about password security in TeamViewer. The method can help during the pentest time for post exploitation to get access to another machine using TeamViewer.

TeamViewer automatically authentication

  A few days ago I worked on my windows cloud VPS with TeamViewer (where I set a custom password). After work I disconnected, at the next time when I wanted to connect, I saw that TeamViewer had auto-filled the password.

tw_interface

I think “Interesting, how can i get access to the password? How is the password stored in my computer?”

Password location

I dumped the memory of the TeamViewer and grepped password. dump

Ooo yeees, 😊 password in the memory is stored in Unicode format. It turns out that if you finish work with TeamViewer and don’t kill the process (or exit from TeamViewer

menu

the password will be stored in memory)

  After analyzing we understood that the first red area is a start magic data, in the second one – end magic data (from time to time, end magic data has this value = 00 00 00 20 00 00).

Script for getting password

To extract passwords from memory we wrote two mini programs, in Python and C++ language.

Thx Frida team for a wonderful tool! Our python script attaches to the TeamViewer.exe process, gets the base address and memory size of each library in this process. After that, it dumps one by one memory area, searches parts with [00 88] bytes at the start and [00 00 00] bytes in the end and copies them in the array. The next and the last step is choosing end decoding raws according to the regexp and password policy.

python_work_example

After executing the C++ code, you will get this view “asdQWE123” is the password

cpp_poc

For the future

  1. The programs can extract well remote ID and passwords, but he also gets some false positive dates. If we will have free time, we will try to reduce false positive rates.
  2. Optimize C++ code from https://github.com/vah13/extractTVpasswords

examples

c++ example

cppex

python example

pyex

@NewFranny

@vah_13

You can’t perform that action at this time.