x86_64 UbuntuでMIPS実行可能ファイルをデコンパイル/実行

x86_64 UbuntuでMIPS実行可能ファイルをデコンパイル/実行

現在、ルータファームウェア(Swisscom Centro Grande - 別名Pirelli Vx226N1、ファームウェアバージョン:60200)を修正しようとしています。

正常にデコンパイルしましたFMK v0.99そしてheader.imgrootfs.imgおよびfooter.img画像部分を得ました。

これはrootfs.imgのbinwalkです:

Squashfsファイルシステム、リトルエンディアン、非標準署名、バージョン4.0、圧縮:gzip、サイズ:2764423バイト、1145 inode、ブロックサイズ:65536バイト、2013年3月15日金曜日00:33:08で作成されました

unsquashfsを使用してrootfs.imgを正常にデコンパイルし、システムフォルダをインポートしました。いくつか変更し(Telnetでシェルを有効にする)、付属の./build-firmware.shツール(コマンド)を使用してすべてを再パッケージ化しました。

最終ファームウェアのサイズは元のファームウェアより大きいです。フラッシュしようとしましたが、何も起こりませんでした。ファームウェア、特にアップグレード方法を分析して正しく構築する方法を理解しました。

update.shアップグレードプロセスを処理するファイルが見つかりました(ユーザーが提供したファイルを分析し、レンガを防ぐためにすべてが正しい場合にのみ点滅します)。

以下は、そのファイルのPastebinへのリンクです。

元のファームウェアファイルがその機能で解析されると確信しているので、parse_yaps_image()ファイルを確認するために直接調整してみましたが、次のバイナリの外部チェックがあることがわかりました。sig_verify

ファイルがない場合は別の関数を呼び出しますが、問題は提供された関数が正しくないことです(元のwrong validation tokenファームウェアでもエラーが発生します!)

私の目標は、ファイルを分析し、sig_verifyアルゴリズムを見つけて設定方法を理解し、ルーターを正しい方法でフラッシュし、最後にルートシェルを取得することです(そしてあなたが望むすべてを修正します)。

ファイルをすべてアップロードしました。巨大なフォルダしたがって、私を助けたい興味のある人は、必要なすべてのファイルにアクセスできます。

フォルダ60208のファイルを確認するための2つのスクリプトが含まれています。

私が書いたスクリプトの結果(ルーターでスクリプトを適用したもの)は次のとおりです。

denys@denys-pc:~/Documents/router/Vx226N1/images/modified/60208$ ./check_upgrade_yaps.sh 
Parsing YAPS format...
16+0 records in
16+0 records out
16 bytes (16 B) copied, 0.000843843 s, 19.0 kB/s
Error: wrong validation token (5b445d3b251d59753031c9d7a94ba4ab, 7d98668859855f1b9459256257fc3262)

これはファイルのbinwalkですsig_verify

denys@denys-pc:~/Documents/router/Vx226N1/images/modified/60208$ binwalk sig_verify 

DECIMAL     HEX         DESCRIPTION
-------------------------------------------------------------------------------------------------------
0           0x0         ELF 32-bit MSB executable, MIPS, version 1
1921        0x781       LZMA compressed data, properties: 0x01, dictionary size: 16777216 bytes, uncompressed size: 16777472 bytes

気づいたように、これはMeaps実行可能。 MIPS環境(仮想マシン)で実行してみましたが、qemu-system-mips成功しませんでした。

qemu-system-mips -M mips -kernel ./vmlinux-2.6.18-6-qemu -initrd ./initrd.gz -hda hda.img -append "root=/dev/ram console=ttyS0" -nographic

カーネルとinitrdは以下からダウンロードされます。http://archive.debian.org/debian/dists/etch/main/installer-mips/current/images/qemu/netboot/

どんな助けでも大変感謝します。不明な点があれば教えてください :)

ベストアンサー1

まず、デコンパイルではなく抽出または解凍を意味します。しかし、もっと重要なのは、qemuシステムではなく、qemuユーザープログラムが必要なことです。たとえば、Debian GNU/Linux では、単に qemu-user-binfmt パッケージをインストールし、tghese バイナリをネイティブバイナリのように実行できます。

唯一の問題は、これらのバイナリにはハードコードされた場所(/ libのuClibcなど)にファイルが必要であることです。この問題を解決する簡単な方法は、関連するqemuユーザー(「qemu-mips」など)を抽出されたルートディレクトリ内の同じパスにコピーすることです。

cp /usr/bin/qemu-mips router-root/usr/bin

その後、Busyboxをシェルとして使用して内部でchrootを実行できます。

chroot router-root bin/sh
chroot router-root bin/sig_verify ...

しかし、sig_verifyが十分に良い署名アルゴリズム(rsaなど)を使用している場合、自分のファイルに署名する可能性は薄くなります。

おすすめ記事