web-dev-qa-db-ja.com

未知のネットワークプロトコルをどのように分析しますか?

もちろん、Wiresharkを使用してトラフィックを傍受できます。各パケットまたはパケットのチェーンを検査できます。

しかし、どうすればもっと賢くなりますか?行動を特定したり、プロセスを自動化したりするには、どのツールを使用しますか?

私の目標は、さまざまな機能、オペコード、およびプロトコルとソフトウェアについて学ぶことができるすべてを識別することです(私はクライアントとサーバーの両方を持っています)。

6
YSY

プロトコルは人間によって設計されているため、これを便利な方法で簡単に自動化する方法はありません。そのため、これらは実際に設定されたパターンやルールには従いません。あなたはそれらを解剖するためにあなた自身で脳の仕事をしなければならないでしょう。

ただし、いくつかのトリックがあります。

  • Wiresharkを使用して個々の会話を分離し、高レベルの通信パターンを特定します。
  • 「スマート」な16進エディタを使用して、パケットを分析します。 Hex WorkshopはデータにCスタイルの構造体を定義できるので(無料ではありませんが)良い選択です。
  • パケット間の変更を識別するには、diffツールを使用します。
  • IDA(または他の静的分析ツール)を使用して、ネットワークAPI(Winsockなど)がデータの送受信に使用されている場所を特定し、それらが何をしているかを調べます。
  • ライブ環境での実行をトレースするには、ImmunityDebugger、OllyDbg、WinDbgまたは別のデバッガーを使用します。これは、検証パケットがクライアントアプリまたはサーバーアプリに送信されるときに特に役立ちます。検証テストが成功/失敗した場所と理由を確認できるためです。これらのパケットで特徴的な値を使用すると、コードのさまざまな部分にどのタイプのデータフローが流れるかを確認でき、それらの機能を識別できます。

結局のところ、これを扱うには、まともなリバースエンジニアである必要があります。このようなことを一度も試みたことがない場合は、簡単に公開されたプロトコルで試して、逆に作業することをお勧めします-それがどのように機能するかを理解してから、観察結果とドキュメントを比較してください。

10
Polynomial