Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Xiaomi-C200-Firmware-Analysis — UARTからRootへ: U-Boot経由でXiaomi C200に侵入 | Kitploit
ツール/GitHubGitHub/h3xdum/xiaomi-c200-firmware-analysis
組み込みシステムセキュリティ特権昇格IoTセキュリティエクスプロイトリバースエンジニアリングデータ復旧ハードウェアハッキングハードウェアセキュリティファームウェア解析

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
GitHubh3xdum/xiaomi-c200-firmware-analysis

Xiaomi-C200-Firmware-Analysis

UARTからRootへ: U-Boot経由でXiaomi C200に侵入

リポジトリを見る
11128ヶ月前未レビュー

The Scope

このリポジトリでは、露出したピン/テストパッドの一般的なセットがなくても、U-Bootとトリックを使って早期ステージでrootを取得し、最終的にファームウェアをダンプする方法を紹介します。

Initial Reconnaissance

pcb PCBから明らかな重要な点がいくつかあります。

  • チップ → T31 Ingenic プロセッサ
  • フラッシュメモリ → SOIC-8 SPI NOR タイプ
  • 可能性のあるUARTテストパッド

最初に、簡単にUARTアクセスできるだろう明らかな候補を試しました。Tx、Rx、GND、電源と思われる4つのテストパッドが並んでいますが、写真のようにマルチメータでテストすると誤った読み取り値になりました。 他のほとんどのテストパッドも試しましたが、正しい読み取り値を見つけられなかったため、戦略を切り替える必要がありました。

足場を確保する

ボード上には役立つコネクタもテストパッドも残っていないため、プロセッサのピンに直接接続してUARTシェルを取得する方法を取ることにしました。そのプロセッサのデータシートを調べ、UARTプロトコルのピンを特定しました。 T31

次に、ボード上のグラウンドを見つけて接続するだけです。

  • Tx → Rx
  • Rx → Tx
  • GND → GND

このセットアップにはPCBiteプローブとUSB 2 TTLアダプタを使用しました。 pcb_uart

U-Bootとroot

それでは、picocom を使って目的のUARTシェルを取得できます。

root@kitploit:~
sudo picocom -b 115200 /dev/ttyUSB0

何もしないと、ブートログが表示されるだけで、ブートプロセスの最後にはシェルが得られませんでした。そのため、すぐにEnterキーを押してU-Bootを中断する必要がありました。 U-Bootシェルを取得したら、まず環境変数(environment args)を表示しました。 U-Boot_1 重要なのは次の点です。

  • bootargs → initコマンドがlinuxrcバイナリを実行することを示し、ファームウェアのレイアウト(パーティションとその目的/サイズ/スロット)も示す
  • bootcmd → フラッシュからRAMへメモリをロードし、デバイスを起動するコマンド

簡単にrootアクセスを得るには、setenv でinitコマンドを変更するテクニックを使えます。これによりlinuxrcバイナリを実行する代わりにシェルを取得できます。その後、メモリを手動でロードしてデバイスを起動します(実質的にbootcmdコマンドをコピーする形です)。 U-Boot_1 起動が完了すると、システム上では実質何も実行されていない初期シェルに入ります。そこで、元の linuxrc バイナリをバックグラウンドで実行し、このシステムで開いているポートを確認します。 root_netstat 残念ながらうまくいきませんでした。カメラはクラウドの「 47.237.75.249 」とのみ通信しており、いじれるような公開Webインターフェースはありません。 クラウド通信バイナリのリバースエンジニアリングは私の研究の範囲外なので、ここで研究を終了することにしました :)

ファームウェアの抽出

ファームウェアをいじってみたい人へのおまけとして、その取得方法を紹介します。 前回と同じUARTセットアップですが、今回はブートせずに、フラッシュからRAMへのメモリのプローブとロードのみを行います。 その後、RAMメモリからデータを表示し、ターミナル出力を(今回は minicom で)記録してファイルに保存し、pythonで少し整形してファームウェアを取得します。binwalkとbootargsを照合すると、各セクションの名前を特定するのに役立ちます。 Firmware

ツールをダウンロード