私はセキュリティ担当者であり、これについて広範な調査を行ってきました。この時点で、次にどこへ行くべきかについてのガイダンスを探しています。
また、長文失礼しました、重要な部分を太字にしました。
私が高レベルでやろうとしていることは単純です。 あるデータをプログラムに入力し、このデータを「たどり」、データがどのように処理され、どこに到達するかを追跡しようとしています。
たとえば、ログイン資格情報を FileZilla に入力した場合、アクセスするすべてのメモリ参照を追跡し、トレースを開始して、そのデータがどこに移動したのか、どのライブラリに送信されたのかを追跡したいと考えています。ネットワークパケット。
現在、私は Windows プラットフォームに焦点を当てていますが、私の主な質問は次のようなものになると思います: Windows フォームとシステム ライブラリを理解するデバッガーをリモート コントロールするための優れた API はありますか?
これまでに見つけた主な属性は次のとおりです。
- この分析手法の名前は「Dynamic Taint Analysis」です。
- デバッガーまたはプロファイラーが必要になります
- Inspect.exe は、入力を受け取る Windows UI 要素を見つけるための便利なツールです。
- Windows 自動化フレームワーク全般が役立つ場合があります
- デバッガーの自動化は面倒なようです。IDebugClient インターフェイスはより豊富なデータを可能にしますが、IDAPro や CheatEngine などのデバッガーはより優れたメモリ分析ユーティリティを備えています
- メモリ ブレーク ポイントを配置し、入力に関連付けられている参照とレジスタを追跡する必要があります。
私が試したツールのコレクションは次のとおりです。
WinDBG (素晴らしいツール)、IDA Pro、CheatEngine、x64dbg、vdb (python デバッガー)、Intel の PIN、Valgrind などのすべてのツールで遊んだことがあります。
次に、いくつかの動的汚染分析ツールがありますが、それらは .NET コンポーネントの検出や、Inspect.exe などのユーティリティによってネイティブに提供される Windows デバッグ フレームワークが提供するその他の便利さをサポートしていません。
次に、IDebugClient インターフェイスを使用して独自の C# プログラムを作成しようとしましたが、ドキュメントが不十分であり、見つけることができた最高のプロジェクトは、このフェローからのもので、3 歳です: C# app to act like WINDBG's "step into" feature
このユースケースに適合する既存のプロジェクトにコードを提供したいと思っていますが、現時点ではどこから始めればよいかさえわかりません。
全体として、動的プログラムの分析ツールとデバッグ ツールにいくらかの愛が必要なように感じます...ちょっと立ち往生しているように感じます。この問題を解決するためのさまざまなツールやアプローチが非常に多くありますが、いずれも何らかの形で欠けています。
とにかく、どんな指示やガイダンスにも感謝します。ここまでできたら、ありがとう!!
-デイブ