[Cuckoo Sandbox] プロキシ経由通信時の解析結果のURL表記の崩れの修正

Cuckooはmitmproxyに対応しているが、レポートのURL記載周りにおいてはURLにパスのみが含まれている前提になっている。

結果、パスが「http://〜」から始まるプロキシサーバ宛の通信の記載は以下のようになる。

  • Performs some HTTP requests(3 events)

request GET http://www.msftncsi.comhttp://www.msftncsi.com/ncsi.txt

  • Network Analysis

GET => 200 http://www.msftncsi.comhttp://www.msftncsi.com/ncsi.txt

ここで原因となった情報を分解してみる。

key value
protocol http
host www.msftncsi.com
uri http://www.msftncsi.com/ncsi.txt
(表示構造) [protocol]://[host][uri]
(表示結果) http://www.msftncsi.comhttp://www.msftncsi.com/ncsi.txt

上記uriがプロキシ宛の場合httpおよびホスト名が入っているので、表示が崩れる。
そこで、修正を試みる。

Performs some HTTP requests

  • /usr/local/lib/python2.7/dist-packages/cuckoo/common/abstracts.py

Cuckooはmitm.logを読み込むにもかかわらず、実際のmitmのログはdump.mitmにあるため、データを読み込めていない。
Cuckooはmitm.logからデータが取得できない場合はプロキシ経由ではないと判断しHTTP通信をtcpdumpから取得するため表示が崩れる。
これは環境依存かも。

657c657,658
<         self.mitmout_path = os.path.join(self.analysis_path, "mitm.log")
---
>         #self.mitmout_path = os.path.join(self.analysis_path, "mitm.log")
>         self.mitmout_path = os.path.join(self.analysis_path, "dump.mitm")

Network Analysis

  • /usr/local/lib/python2.7/dist-packages/cuckoo/web/templates/partials/http-request.html

こちらはmitmの使用にかかわらずtcpdumpの結果から情報を取得するためプロキシ経由を考慮せずURLを取得する。
そのためデータ構造をhttp.uriだけに変更する。

6c6,7
<         <span class="url">{{ http.protocol }}://{{http.host}}{{http.uri}}</span>
---
>         <!--<span class="url">{{ http.protocol }}://{{http.host}}{{http.uri}}</span>-->
>         <span class="url">{{http.uri}}</span>

修正後、以下のような表示になる。

  • Performs some HTTP requests(3 events)

request GET http://www.msftncsi.com/ncsi.txt

  • Network Analysis

GET => 200 http://www.msftncsi.com/ncsi.txt

以上。