質問

サードパーティのTCPクライアント /サーバーWindows XP、SP 3アプリを使用できないSP 3アプリをリバースエンジニアリングしようとしています。私の攻撃の主なラインは、Wiresharkを使用してTCPトラフィックをキャプチャすることです。

クライアント側に特定のGUIコマンドを発行すると、クライアントはサーバーへのTCP接続を作成し、データを送信し、接続を引き裂きます。サーバーポートは1234で、クライアントポートはOSによって割り当てられているため、変化します。

Wiresharkは、私が発行したGUIコマンドに対応するメッセージが送信されることを示しています 2回. 。 2つのメッセージには異なるソースポートがありますが、同じ宛先ポート(前述のように1234)があります。

クライアント側は実際にいくつかのプロセスで構成されており、これらのメッセージを送信しているプロセスを決定したいと思います。これらのプロセスは長寿命であるため、PIDは安定していて既知です。ただし、関係するTCP接続は一時的で、わずか数ミリ秒ほど続きます。 Wiresharkでクライアント側のポート番号をキャプチャしましたが、関連するすべてのPIDSを知っていますが、接続が一時的であるという事実により、どのPIDがポートを開いたかを判断することが困難になります。 (接続が長期に存在した場合、NetStatを使用してポート番号をマップしてPIDSにマップできます。)これらの過渡接続を作成しているプロセスをどのように判断できるかについて、誰かが提案を持っていますか?

役に立ちましたか?

解決 2

最終的に、タイトループでNetStatを実行し、その出力をテキストファイルに追加するバッチファイルを作成することになりました。システムの実行中にこのバッチファイルを実行し、すべてのNetStatダンプを調べることで、ポートに関連付けられたPIDを含むダンプを見つけることができました。

他のヒント

私は2つのことを考えることができます:

  1. SysInternalsのTCPViewプログラムをお試しください。システム内のすべてのプロセスによって開かれたすべてのTCP接続の詳細なリストを提供します。プロセスが接続を作成すると、TCPViewでプロセスがフラッシュ(接続と切断の両方がフラッシュされる)が表示され、検索を開始するプロセスがわかります。

  2. デバッガーでバイナリを実行してみてください。 Windbgはマルチプロセスのデバッグをサポートしています(Visual Studioもそうです)。作業するためにシンボルをエクスポートするだけかもしれませんが、それはまだシステムDLLに行われた呼び出しで機能するはずです。接続を作成するために、プロセスによって呼び出されることがわかっている疑わしいWindows APIを破壊してみてください。 MSDNには、ほとんどのシステムAPIに関連するDLLが文書化されている必要があります。

ここから始めましょう...もう一度立ち往生している場合は、フォローアップを投稿してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top