Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ファームウェア解析に触れてみよう!/OWASPKansai_FSTM_230422

 ファームウェア解析に触れてみよう!/OWASPKansai_FSTM_230422

OWASP Kansai

April 22, 2023
Tweet

More Decks by OWASP Kansai

Other Decks in Technology

Transcript

  1. 本日のスケジュール • 10分 会場説明/イベント説明 • 20分 ツールのインストール • 30分 binwalk

    ファームウェアの展開 • 30分 firmwalker 機微な情報の探索 • 30分 firmadyne ファームウェアのエミュレート • 30分 自習 • 30分 成果報告・まとめ
  2. IoTのセキュリティ • IoT、組込み機器 – 通信モジュール – サーバ機能 – クライアント機能 –

    ファームウェア – 基板、デバッグポート – 初期設定値 • サーバ – Webアプリ – 既知の脆弱性スキャン • アプリ – PCソフト – モバイルアプリ • システム全体 – 独自プロトコル – サービス仕様
  3. なぜファームウェア解析?(by ChatGPT) • セキュリティ上のリスク: – IoTデバイスのファームウェアが解析されると、攻撃者がシステムにアクセスして、機密情報や個人情報を盗むことができます。 • 機能上のリスク: – ファームウェアの解析により、製品の機能やパフォーマンスが悪化する可能性があります。このような問題は、製品の品質を低

    下させ、消費者からの不満や苦情を引き起こすことがあります。 • 法的リスク: – IoTデバイスのファームウェアが解析された場合、知的財産権侵害や競合他社の知識の不正取得など、法的問題が発生する可能 性があります。 • ブランドイメージ上のリスク: – ファームウェアの解析によって、IoTデバイスの脆弱性が明らかになり、消費者からの信頼を失う可能性があります。これによ り、企業のブランドイメージに悪影響が出ることがあります。 • コスト上のリスク: – ファームウェアの解析によって、セキュリティの強化や製品の改良に必要なコストが増加することがあります。また、IoTデバ イスを更新するために、消費者に費用がかかることがあるため、市場シェアを失う可能性があります。
  4. Linux terminalの基本操作 • 入力補完 Tab → • コピー&ペースト Ctrl+Shift+C Ctrl+Shift+V

    • 処理の停止 Ctrl+C • ファイル一覧の表示 ls ls -la • ディレクトリの表示 pwd • ディレクトリの移動 cd ./ディレクトリ cd ../ • ファイルの削除 rm ファイル rm -r ディレクトリ • ファイルの出力 cat ファイル • 文字列の検索 grep -inr キーワード ディレクトリ grep -n5 キーワード ファイル
  5. 今回使うツール • stage3:ファームウェアの解析 – binwalk:バイナリ展開ツール – sasquatch:ファイルシステムの展開補助プラグイン – openssl:ファームウェアの暗号化 •

    stage5: ファイルシステムコンテンツの解析 – firmwalker:コンテンツ探索ツール • stage6:ファームウェアのエミュレート – firmadyne :エミュレータ – firmware-analysis-toolkit(fat):エミュレータの自動化ツール – nmap,sslscan :ポートスキャンツール https://github.com/ReFirmLabs/binwalk/ https://github.com/devttys0/sasquatch/ https://github.com/craigz28/firmwalker/ https://github.com/firmadyne/firmadyne/ https://github.com/attify/firmware-analysis-toolkit/
  6. 今回使うファームウェア • FSTMや各種プロジェクトで例示されたファームウェアを利用 – stage3: Damn Vulnerable Router Firmware (DVRF)

    v0.3 • Linksys E1550にインストール可能な学習用ファームウェア – stage5: xxx社製 xxx • firmwalker用 sampleファームウェア(展開済み) – stage6: Netgear社製 WNAP320 v2.0.3 • firmadyne用sampleファームウェア • 自習課題 – 企業のサポートサイトから任意のファームウェアをダウンロード
  7. 今回のファイル&ディレクトリ構成 /home/kali /tmp ・・・ mkdir tmp でフォルダ作成、ツール置き場 /sasquatch /firmware-analysis-toolkit /firmadyne

    /firmwalker /Downloads ・・・ sampleファームウェア格納用(3種類以上) /stage3 /firmware.bin /_firmware.bin.extracted /stage5 /stage6
  8. インストール手順 1/5 # binwalkの削除 binwalk -h # binwalkのhelpが出力されることを確認 sudo apt

    update sudo apt remove binwalk # Do you want to continue? [Y/n] y binwalk -h # binwalkのhelpが出力さないことを確認 # ツール用のフォルダ作成 cd mkdir tmp
  9. インストール手順 2/5 # sasquatchのインストール(パッチ適用) cd cd tmp git clone https://github.com/devttys0/sasquatch

    cd sasquatch wget https://github.com/devttys0/sasquatch/pull/51.patch && patch -p1 <51.patch ls sudo ./build.sh # continue? [Y/n] y 参考:Binwalkエラー時のsasquatchのパッチ適用について https://github.com/ReFirmLabs/binwalk/issues/618
  10. インストール手順 3/5 # fatのインストール cd cd tmp git clone https://github.com/attify/firmware-analysis-toolkit

    cd firmware-analysis-toolkit ls sudo ./setup.sh # 数分かかります→ binwalk自動DL cd binwalk ls sudo python3 setup.py install # binwalkが再インストールされる sudo ./deps.sh # Continue [y/N]? y binwalk -h # binwalkのhelpが出力
  11. インストール手順 4/5 # firmadyneのインストール cd cd tmp sudo apt-get install

    busybox-static fakeroot git dmsetup kpartx netcat- openbsd nmap python-psycopg2 python3-psycopg2 snmp uml-utilities util- linux vlan git clone --recursive https://github.com/firmadyne/firmadyne.git cd ./firmadyne ./download.sh # ビルド済みバイナリの追加DL
  12. インストール手順 5/5 # firmwalkerのダウンロード cd cd tmp # git clone

    https://github.com/craigz28/firmwalker git clone https://github.com/scriptingxss/firmwalker #fork版
  13. ファームウェアのダウンロード 2/3 # stage5用のファームウェア(squashfs-root.zip)のダウンロード # ブラウザからsquashfs-root.zipをDL https://1drv.ms/f/s!AucQMYXJNefdvGZyeYt16H72VCLv cd cd Downloads

    ls mkdir stage5 mv squashfs-root.zip stage5 # 混同しないように別フォルダに移動 cd stage5 unzip squashfs-root.zip # zipを展開しておく ls
  14. ファームウェアのダウンロード 3/3 # stage6用のファームウェアのダウンロード cd cd Downloads wget http://www.downloads.netgear.com/files/GDC/WNAP320/WNAP320%20Firmware%20Version%202 .0.3.zip

    ls mkdir stage6 mv WNAP320¥ Firmware¥ Version¥ 2.0.3.zip stage6 # 別フォルダに cd stage6 unzip WNAP320¥ Firmware¥ Version¥ 2.0.3.zip # zipを展開しておく→ WNAP320_V2.0.3_firmware.tar
  15. binwalkの前に cd cd Downloads/stage3 file “bin” strings “bin” strings -n10

    “bin” strings “bin” | grep key hexdump -C -n 512 “bin” > hexdump.out hexdump -C “bin” | head -n 20 hexdump -C “bin” | tail -n 20 hexdump -vC “bin” | tail -n 20 “bin”:DVRF_v03.bin 展開する前のファームウェア
  16. firmwalkerの実行 3/3 (shodan連携機能のオフ) cd cd tmp/firmwalker cat firmwalker.sh | grep

    -n5 shodan #shodanのifループを無視 sed s/shodan/Xshodan/ firmwalker.sh > firmwalker_1.sh # 別名保存 cat firmwalker_1.sh | grep -n5 shodan ls -la chmod 700 firmwalker_1.sh # 実行権限 ls -la ./firmwalker_1.sh /home/kali/Downloads/stage5/squashfs-root cat firmwalker.txt # 結果出力
  17. firmadyneの設定 cd cd tmp/firmadyne ls vim firmadyne.config #!/bin/sh # uncomment

    and specliify full path ・・・ FIRMWARE_DIR=/home/kali/tmp/firmadyne i [Esc] :wq
  18. 演習課題⑥ • これまでの演習内容の深堀り – binwalkの結果をじっくり味わう – エミュレートしたファームウェアで遊んでみる • 他のファームにチャレンジ –

    検索 [社名 サポート ファームウェア] – 検索 [製品名 サポート ファームウェア] など – binwalkできないファームウェアであれば、それはなぜか?