Pro-Tips: Unknownアプリケーション

Printer Friendly Page

※この記事は以下の記事の日本語訳です。

Pro-Tips: Unknown Applications

https://live.paloaltonetworks.com/t5/Management-Articles/Pro-Tips-Unknown-Applications/ta-p/77052

 

 

'Unknown' アプリケーションの対処

 

トラフィック ログの中に稀に出てくる unknown-tcp や unknown-udp とは一体何なのでしょうか。これはApp-ID において、十分なデータが流れていないコネクションがあったり、十分なデータが流れていてもそれが既知のアプリケーションの動作にマッチしなかったりして、App-IDがアプリケーションの特定をすることができなかったことを意味します。このタイプのアプリケーションが組織内のトラフィックで見つかった場合、例えば、バックアップによるトラフィックやスクリプトで自動化されたメンテナンス処理など、Unknownアプリケーションであっても無害な場合が考えられます。しかし、これらのトラフィックがインターネットに出ていくものだったり、あるいはインターネットから入ってくるものだったりした場合は、注意が必要です。

 

2016-05-10_14-40-31.jpg

 

大雑把に言えば、これらのトラフィックは実際どのようなセッションなのか不明で、悪意のあるトラフィックであり得るので、ベスト プラクティスとしてunknown-udp/unknown-tcp アプリケーションは全てブロックした方が無難です。

 

ただ、やみくもに全てのunknownトラフィックをブロックしてしまうと、今度は逆に正規のトラフィック等を遮断してしまうことにも成りかねません。最善策は、カスタム アプリケーションを作成し、該当のトラフィックを特定した上で、セキュリティ ポリシーでどのフローを許可するか、あるいはブロックするかをより細かく制御することです。

 

簡単な方法は、まずシンプルなカスタム アプリケーションを作成し、アプリケーション オーバーライドを設定することです。これは、送信元と宛先が社内のアドレスで、かつ固定である場合に有効な方法です。例えば、とあるサーバーから別の管理下の環境へのスクリプトによるコネクションなどがこれに該当します。 

 

  1. まずシンプルなカスタム アプリケーションを作成します。詳細 (Advanced) とシグネチャ (Signatures) は設定しません。
    2016-05-10_15-13-21.jpg
    ここでリスクの値に5を設定している理由は、この方法でApp-IDを適用するセッションにおいてインスペクションが無効になるためです。

  2. アプリケーション オーバーライドを作成し、該当のトラフィック フローに完全にマッチするように設定をします。(アプリケーション オーバーライドは、管理者が把握しているフローにのみ使用してください)
    2016-05-10_15-18-35.jpg
  3. セッションがカスタム アプリケーションとして検知されるようになります。セキュリティ ポリシーをそのアプリケーション用に作成することで、セッションの制御が行えるようになります。
    2016-05-10_15-21-09.jpg

 

最もいいアプリケーションの特定方法は、パケット キャプチャを行ってアプリケーションがファイアウォールにとってどのように見えるかをよく理解し、それを元に期待されるコンテンツにマッチするようにシグネチャを作成することです。こうすることで、正規なセッションを完全に見分けることができるようになります。

 

  1. パケット キャプチャをセットし、セッションの最初から最後までをキャプチャした後、pcapファイルを取得します。パケット キャプチャの詳細については、次の文書を参照してください。Getting Started: Packet Capture(英文)
    2016-05-10_15-43-51.jpg
  2. より適切なシグネチャが書けるよう、パケット キャプチャを解析します。

    2016-05-11_15-27-31.jpg
    この例では、16進の HEX値 "2f69 6e66 6f3f 7478 7441 6972 506c 6179 2674 7874 5241 4f50"を使用します。これは、アスキー テキストで "/info?txtAirPlay&txtRAOP" に相当するものです。

  3. 新しいカスタム アプリケーションを作成し、これから特定しようとしているセッションにマッチするようにパラメータを設定していきます。以下の例は、カスタムAirPlayプロトコルをキャプチャしたデータを元に設定したものです。これは組織内のトラフィックであり安全であることが分かっているため、リスクの値は1に設定してあります。

    ap1.jpg

    このアプリケーションは、クライアントからサーバーへの通信の宛先としてTCPポートの7000番を使用します。
    ap2.jpg

    シグネチャには、以下の例にあるように、pcapから見つかった16進のHEX値が使用できます。(HEX値を使用する際には、先頭と末尾に '\x' を付与してください。そうすることで、シグネチャのエンジンがテキスト パターンではなくHEX値のパターンとして処理するようになります。)

    ap3.jpg
    また、以下の例にあるように正規表現を使うこともできます。(テキスト文字列の中に特殊文字が含まれている場合は、特殊文字の前にバックスラッシュ '\' を付けてエスケープしてください。)

    2016-05-11_15-57-38.jpg 
    文字列のパターンが現れる位置を条件の制限に加えるために、修飾子(Qualifier)とその値にhttp-method GETを設定しています。なぜなら、これはhttpのbodyの部分には現れないからです。このシグネチャのコンテキスト (Context)はhttp-req-params (http request parameter)を設定しています。その理由は、カスタムAirPlayプロトコルは、サーバーとの通信においてhttpコマンドを使用するからです。このように、コンテキストのオプションはクライアントとサーバー間の通信で使用されるプロトコルにできるだけ即した形で設定する必要があります。

    その他の例としては、Video Tutorial: Custom application(英語)や Getting Started: Custom applications and app override(英語)を参照してください。よく使われるコンテキストには、'unknown-req-tcp-payload'、'unknown-rsp-tcp-payload'、'http-req-host-headers' などがあります。ここで、"-req-" はクライアントからのリクエスト、"-rsp-" はサーバーからのレスポンスを意味します。これによって、どちらの方向のトラフィックをチェックしてアプリケーションを特定するかの選択が可能になります。

  4. カスタム アプリケーションを作成し、設定のコミットを行うと、unknown-tcp と表示されていたセッションは新しいカスタム アプリケーションとして新しくログに出てくるようになります。
     2016-05-11_16-25-27.jpg
  5. つまり、この新しいカスタム アプリケーション用にセキュリティ ポリシーを作成することで別の制御が可能となり、ビジネスで使用しているアプリケーションを許可しつつ、unknownアプリケーションのトラフィックをブロックすることができるようになります。
    2016-05-11_16-24-27.jpg

 

 

この記事がお役に立つと幸いです。コメントもお待ちしています。

著者:Reaper

 

カスタム アプリケーションにまつわるその他のアイデアや事例についてもっと詳しく知りたい方は、次のサイトを訪れてみてください。the Palo Alto Networks Custom Signature discussion board(英語)

 

参照リンクのまとめ:

Getting Started: Packet Capture

Video Tutorial: Custom application

Getting Started: Custom applications and app override