Project Netoは、FirefoxやChromeなどの一般的なブラウザのブラウザプラグインや拡張機能の隠された機能を分析し解明するために考案されたPython 3パッケージです。拡張機能内の manifest.json、ローカリゼーションフォルダ、JavaScriptやHTMLソースファイルなどの関連リソースからこれらの機能を抽出するために、パッケージ化されたファイルを自動的に解凍するプロセスを自動化します。
パッケージをインストールするには、ユーザーは pip3 を選択できます。
pip3 install -e . --user
オプションで、sudo を使用して管理者権限でインストールすることもできます:
sudo pip3 install -e .
正常にインストールされたかどうかは、以下で確認できます:
python3 -c "import neto; print(neto.__version__)"
拡張機能の分析を実行するには、アナリストは以下を入力します:
neto analysis -u https://yoururl.com/extension-name.xpi
拡張機能は自動的にダウンロードされ、デフォルトでシステムの一時フォルダに解凍されます。
ただし、アナリストはローカルに保存された拡張機能に対して分析を実行することもできます:
neto analysis -e ./my-extension-name.xpi
静的解析が実行されると、デフォルトで output という名前の新しく作成されたフォルダに保存されるJsonファイルが生成されます。
Pythonを使用している場合、独自のPythonモジュールにライブラリとしてパッケージをインポートすることもできます:
>>> from neto.lib.extensions import Extension
>>> my_extension = Extension ("./sample.xpi")
>>> my_extension.filename
'adblock_for_firefox-3.8.0-an+fx.xpi'
>>> my_extension.digest
'849ec142a8203da194a73e773bda287fe0e830e4ea59b501002ee05121b85a2b'
プロパティを使用して拡張機能内の要素にアクセスする以外にも、アナリストは常に辞書としてアクセスできます:
>>> my_extension.__dict__
{'_analyser_version': '0.0.1', '_digest': '849ec142a8203da194a73e773bda287fe0e830e4ea59b501002ee05121b85a2b'…
Pythonを使用していない場合は、JSON RPCデーモンを使用できます:
$ neto daemon
____ _ _ _ _ _
| _ \ _ __ ___ (_) ___ ___| |_ | \ | | ___| |_ ___
| |_) | '__/ _ \| |/ _ \/ __| __| | \| |/ _ \ __/ _ \
| __/| | | (_) | | __/ (__| |_ | |\ | __/ || (_) |
|_| |_| \___// |\___|\___|\__| |_| \_|\___|\__\___/
|__/
Developed by @ElevenPaths
Version: 0.5.0b
* Running on http://localhost:14041/ (Press CTRL+C to quit)
その後、好みのJSON RPCライブラリを使用してコマンドを実行し、クライアントを作成できます(bin フォルダに短いデモを用意しています)。または curl を使用することもできます:
curl --data-binary '{"id":0, "method":"remote", "params":["https://example.com/myextension.xpi"], "jsonrpc": "2.0"}' -H 'content-type:text/json;' http://localhost:14041
以下は、このパッケージに含まれる機能の一部です:
eval() などの疑わしいJavaScriptコードの検出。