
Fridaを使用してTeamViewerのメモリからパスワードを抽出するツール
こんにちは、この記事では、TeamViewerのパスワードセキュリティに関する私たちの小さな研究についてお伝えします。この方法は、ペンテスト時のポストエクスプロイテーションで、TeamViewerを使って別のマシンにアクセスする際に役立ちます。
数日前、私はWindowsクラウドVPSでTeamViewerを使用していました(カスタムパスワードを設定していました)。作業後に切断し、次回接続しようとしたとき、TeamViewerがパスワードを自動入力していることに気づきました。

私は「面白い、どうやってパスワードにアクセスできるだろう?パスワードは私のコンピュータにどのように保存されているのだろう?」と考えました。
TeamViewerのメモリをダンプし、パスワードをgrepしました。

おお、はい、😊 メモリ内のパスワードはUnicode形式で保存されています。TeamViewerでの作業を終了し、プロセスを強制終了しない(またはTeamViewerを終了しない)場合、

パスワードはメモリに保存されたままになります)
分析の結果、最初の赤い領域が開始マジックデータであり、2番目の領域が終了マジックデータであることがわかりました(終了マジックデータは時々00 00 00 20 00 00という値になります)。
メモリからパスワードを抽出するために、PythonとC++言語で2つのミニプログラムを作成しました。
素晴らしいツールを提供してくれたFridaチームに感謝します!私たちのPythonスクリプトは、TeamViewer.exeプロセスにアタッチし、このプロセス内の各ライブラリのベースアドレスとメモリサイズを取得します。その後、メモリ領域を一つずつダンプし、先頭に[00 88]バイト、末尾に[00 00 00]バイトがある部分を検索して配列にコピーします。次の最後のステップは、正規表現とパスワードポリシーに従って、最後のデコード行を選択することです。

C++コードを実行すると、「asdQWE123」がパスワードであるという表示が得られます。

c++の例

pythonの例
