
Neto | Ein Tool zur Analyse von Browsererweiterungen
Projekt Neto ist ein Python 3-Paket, das entwickelt wurde, um versteckte Funktionen von Browser-Plugins und Erweiterungen für bekannte Browser wie Firefox und Chrome zu analysieren und aufzudecken. Es automatisiert das Entpacken der gepackten Dateien, um diese Funktionen aus relevanten Ressourcen einer Erweiterung wie manifest.json, Lokalisierungsordnern oder Javascript- und HTML-Quelldateien zu extrahieren.
Um das Paket zu installieren, kann der Benutzer pip3 verwenden.
pip3 install -e . --user
Optional kann es auch mit Administratorrechten unter Verwendung von sudo installiert werden:
sudo pip3 install -e .
Eine erfolgreiche Installation kann mit folgendem Befehl überprüft werden:
python3 -c "import neto; print(neto.__version__)"
Um die Analyse einer Erweiterung durchzuführen, kann der Analyst Folgendes eingeben:
neto analysis -u https://yoururl.com/extension-name.xpi
Die Erweiterung wird automatisch heruntergeladen und standardmäßig im temporären Ordner des Systems entpackt.
Der Analyst kann die Analyse jedoch auch auf eine lokal gespeicherte Erweiterung ausführen:
neto analysis -e ./my-extension-name.xpi
Nach der statischen Analyse wird eine Json-Datei erstellt, die standardmäßig in einem neu erstellten Ordner namens output gespeichert wird.
Wenn Sie Python verwenden, können Sie das Paket auch als Bibliothek in Ihre eigenen Python-Module importieren:
>>> 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'
Neben dem Zugriff auf die in der Erweiterung gefundenen Elemente über Eigenschaften kann der Analyst jederzeit auch als Dictionary darauf zugreifen:
>>> my_extension.__dict__
{'_analyser_version': '0.0.1', '_digest': '849ec142a8203da194a73e773bda287fe0e830e4ea59b501002ee05121b85a2b'…
Wenn Sie Python nicht verwenden, können Sie den JSON-RPC-Daemon nutzen:
$ neto daemon
____ _ _ _ _ _
| _ \ _ __ ___ (_) ___ ___| |_ | \ | | ___| |_ ___
| |_) | '__/ _ \| |/ _ \/ __| __| | \| |/ _ \ __/ _ \
| __/| | | (_) | | __/ (__| |_ | |\ | __/ || (_) |
|_| |_| \___// |\___|\___|\__| |_| \_|\___|\__\___/
|__/
Developed by @ElevenPaths
Version: 0.5.0b
* Running on http://localhost:14041/ (Press CTRL+C to quit)
Sie können dann Befehle mit Ihrer bevorzugten JSON-RPC-Bibliothek ausführen, um einen Client zu schreiben (wir haben ein kurzes Demo im Ordner bin geschrieben) oder sogar curl verwenden:
curl --data-binary '{"id":0, "method":"remote", "params":["https://example.com/myextension.xpi"], "jsonrpc": "2.0"}' -H 'content-type:text/json;' http://localhost:14041
Die folgende Liste ist eine nicht erschöpfende Aufzählung der in diesem Paket enthaltenen Funktionen:
eval().