DARK MATTER

CDI Engineer's Technical Blog

ノベルティでいただいたUSBメモリのコントローラーICが非正規品だったお話

こんにちは、技術部の手島です。

弊社のメンバーがいただいたノベルティのUSBメモリを解析してみたところ、面白いUSBメモリでしたので調査した結果を記載します。

 

f:id:cdi-teshima:20181119125810j:plain

 

f:id:cdi-teshima:20181119125816j:plain

結果から

  • 内容はふつーのUSBメモリっぽい
  • パンフレットのPDFファイルが入っている
  • ただしUSBとフラッシュメモリを制御するICが非正規品
  • 使われているフラッシュメモリも判明せず(怪しい)

 

USBフラッシュドライブコントローラーICの調査

まず、ラズパイに繋いでUSBベンダIDを取得しました。USB Vendor IDは0x058f, Product IDは0x6387でした。USB.orgによると、これは 台湾のAlcor Micro社のFlash Driveだそうです。ここまでは問題ありません。

参考:http://www.linux-usb.org/usb.ids

 

このコントローラICの表面を見ると、型番は "Ango89GTC" らしいのですが、この広いインターネット上で型番が全く見当たりません。大抵の場合、検索方法を工夫することで、数世代前の型番や同じメーカーの別のIC製品がヒットするはずです。また、このICのパッケージ上にはAlcor社のメーカーロゴが見当たりません。

 

参考:Alcor Micro社 HP http://www.alcormicro.com/

 

このICにはAlcor社のロゴが見つからない 

f:id:cdi-teshima:20181119140809j:plain

 

参考までに、同社の別製品ではメーカーロゴが印刷されています。

 

f:id:cdi-teshima:20181119141403j:plain

 

Picture From: https://www.alibaba.com/product-detail/AU6331-Alcor-Yasukuni-SSOP28-au6331-c33_60024253627.html

 

そこでAlcor社に問合せたところ、以下の返答をもらいました。

 

(訳)この型番のICはうちの製品ではない、もしうちの製品なら "Alcor" のロゴが印字されているはずだ

 

つまりこのICは、勝手に「私はAlcor社のデバイスでーす」と名乗っている非正規品だと判明しました。

 

フラッシュメモリを調査・・・したが特定できない

フラッシュメモリが実装されてると思われる部分に黒い樹脂があります。フラッシュメモリがどのような状態か、また型番を特定するため、黒い樹脂を取り除けないか試しましたが、300℃の加熱にも耐えてしまいます。除去するには高濃度の硝酸などが必要と思われますので、一旦調査を打ち切りました。

 

f:id:cdi-teshima:20181119144312j:plain

 

f:id:cdi-teshima:20181119144359j:plain

※バイスに挟まれた上部の物体は、今回の対象とは異なるUSBメモリです

 

このような実装を行う場合、以下のような可能性が考えられます。

 

  • パッケージ化コスト削減のためフラッシュメモリのダイを直接はんだづけ(削減できるのかな?)
  • 型番を見られたくないフラッシュメモリが載っている

 

具体的には・・・

 

  • B級品
  • リマーク品(勝手に大手ブランドのロゴを使う)
  • ジャンク品
  • 中古品から剥がした...等々

 

従って、もしも品質が劣悪な、不良セクタ率の高いフラッシュメモリが使われている場合、突然のデータ消失が起きうる可能性があり、このUSBメモリを重要なデータの保存に使うことはおすすめできないです。

 

おわりに

今回のICからはBadUSBのような挙動は見られませんでしたが、身近なところから得体の知れないICが出てきて驚きました、というお話でした。今回はできませんでしたが、USBストレージコントローラーICとフラッシュメモリ部を開封して顕微鏡写真を撮ると、流通経路や製造メーカーが判明するかもしれません。

 

それでは失礼します。

Voltage Fault Injection をやってみた

こんにちは。技術部の中尾です。

奇跡的?に8月はアサインされた案件が少なかったので、夏休みの自由研究として以前からやってみたかった Voltage Fault Injectionをやってみました。 この攻撃は、サイドチャンネル攻撃の一種で、プロセッサの電源にグリッチを印加する、すなわち一瞬だけ電圧を下げることで誤動作させるというものです。

例えば、あるスマートキーに以下のようなCプログラムが実装されているとしましょう。

result = (input_key == correct_key);
if(result)
    unlock();
else
    lock()

1行目で、入力された鍵を検証し、2行目で正しければ解錠するという条件分岐があります。 攻撃者は、誤った鍵を入力し、2行目の条件分岐を実行されるタイミングでグリッチを入力します。この時、間違った鍵が入力されている(resultがfalse)にもかかわらず、unlock()が実行されてしまうことがあります。

このように、グリッチによって誤作動する事を利用した攻撃が、Voltage Fault Injection Attackです。

正直、これは研究室レベルの話でだと思っていたのですが、近年、Nintendo Switch[1]のSecure Bootのバイパス手法として実際に使われたことが報告されています。

攻撃対象

今回の攻撃対象は、Atmel社のマイコンATMega328のArduino互換ボードを使用しました。クロックは16MHzです。基板とパーツ合わせて500円くらいでした。

マイコンで動作するプログラムはこんな感じにしました。

volatile bool flag = true;
volatile bool once = true;
volatile const unsigned WAIT = 0xEFFF;

snip...

#pragma GCC optimize ("O0")
void loop() {
  volatile unsigned k;
  volatile unsigned i;

  while(flag){
    k = 0;
    Serial.print("Loop");
    for(i=0; i<WAIT; i++)
      k++;
    flag = (k==WAIT);    
  }
    if(once)
      Serial.print("\n\rSuccess!!");
    once = false;
}

このプログラムは、Loopという文字列を無限ループで出力するプログラムです。グリッチが印加されることで、Voltage Fault Injectionが成功すると、変数kが想定外の値になり、無限ループを抜け、"Success!"という文字列を出力します。

この攻撃は、とにかくタイミングが命です。攻撃が有効な時間をとにかく広げるような作りにしています。また、コンパイラによる最適化を抑制するpragmaも追加しています。

Glitcher

CPUに印加する電圧を一瞬下げるための装置(Glitcher)を作成しました。というとなんかすごそうですが、実際は転がっていたZybo Z7というFPGAボードで、グリッチの素になるパルスを作って、トランジスタで電圧変換&電流増幅しただけです。

f:id:cdi-nakao:20180913172511p:plain
Glitcher外観
Zybo Z7には、4つのスライドスイッチ、6つのプッシュボタンが使えるので、プッシュボタンを押した時にGlitchが出るようにしています。 また、スライドスイッチその組み合わせでグリッチの長さを変えられるようにしてあります。

Glitcherの出力波形を下図に示します。 ブレットボードにそのへんにあった部品で適当に電圧変換&電流増幅回路を実装したので、あまりきれいな波形ではないですが、200ns程度のGlitchはできているようです。(パルス回路はむずかしい...)

f:id:cdi-nakao:20180913172547p:plain
Glitcher出力波形

攻撃開始!

それでは、実際に攻撃してみます。プログラムが実行されると、シリアルポートに、Loopと表示され続けます。この時にGlitcherのプッシュボタンを連打すると...

f:id:cdi-nakao:20180913172651p:plain
攻撃結果

攻撃成功!

上の写真は、Glitcherの出力をCPUボードのVcc端子に接続して、Glitcherの出力をオシロスコープでモニターしながら、グリッチを入力した時のものです。Success!という文字列が出力されたことから、グリッチにより無限ループを抜け、Voltage Fault Injection攻撃が成功したことがわかります。

おわりに

この攻撃手法をはじめて聞いた時、ハードウェアの電源ラインにアクセスして、大量の Try & Error をやらなきゃいけない攻撃手法なんて、実際の攻撃にはつかえないと正直なところ思っていました。

しかし、IoTデバイスが攻撃対象となった場合、攻撃対象のハードウェアは攻撃者の手の内にあります。すなわち、これまで使えそうもなかった攻撃が現実的なものになりうるということでもあります。

今回はシンプルなCPUボードと、攻撃が簡単なファームウェアを用いた検証でした。また時間を見つけて、次はLinuxが動いているARMボードといった、もう少しリアリティのあるものを対象にしたいと考えています。

参考文献

  1. https://media.ccc.de/v/33c3-8344-nintendo_hacking_2016

Black Hat USA 2018 & DEF CON 26レポート(1)

Black Hat USA 2018 & DEF CON 26レポート(1)

こんにちは、情報分析部の中島です。

8/4~8/12に開催されたBlack Hat USA 2018 & DEF CON 26の参加レポートです。私は、インシデント対応やフォレンジック調査の中で、主にマルウェア解析を担当しています。そのため、マルウェア解析関連技術にフォーカスして参加しました。他の内容については、別のメンバーがブログにする予定ですのでご期待ください!

Black Hat Trainings

私は、FireEyeのFLAREチームが開催する「MALWARE ANALYSIS MASTER CLASS」を受講しました。

f:id:cdi-nakajima:20180829164646j:plain

トレーナーは、Practical Malware Analysisの筆者を含む、FLAREチームの3名でした。トレーニング形式は講義半分、演習半分という感じで、講義で学んだ内容を演習で手を動かして実践し、疑問があれば質問するという形式でした。

取り扱った内容は、

  • Malware Stealth
  • Shellcode
  • Anti-Disassembly
  • Scripting IDA Pro
  • Anti-VM
  • Packers
  • 64 Bits
  • Encryption, Encodeing, and Compression
  • Microsoft .NET

でした。

コースのSTUDENT REQUIREMENTSに Designed for the experienced malware analyst, a robust skill set in x86 architecture and the Windows APIs is essential. と記述されていたこともあり、基礎的な内容を飛ばして実践的な演習に取り組むことができ、満足度が高かったです。

講義の最後で、講師から「これはボーナスだからみんな写真撮って帰れよ~」的なセリフとともに教材フォルダのディレクトリリスティングと読めないように加工されたQRコードが表示されました。興奮したまますぐにホテルに戻り、QRコードを編集し読み込んだところ、釣り動画へのリンクでした\(^o^)/

講師側に釣られたと報告したところ、 lol, you'll have to keep an eye out for BH next year. current thinking is a doc and exploit analysis focus. and/or kernel/rootkit/bootkit analysis. とコメントを貰いました。

非常に充実した内容でしたので、来年のトレーニングも是非受けたいです。

Black Hat Briefings

Briefingsでは2日間で115件の発表があります。 同時並行数が多くなるため、見たい発表が被ることも多々あります。 Black Hatでは、公式サイトでプレゼンテーション資料が公開されているので、講演のまとめや見れなかった発表内容の確認などに役立ちます。

私が気になった発表をいくつか紹介します。

Title: "Finding Xori: Malware Analysis Triage with Automated Disassembly"
Speaker: Amanda Rousseau, Richard Seymour
Tracks: Reverse Engineering, Malware

発表者のAmanda Rousseau氏はmalwareunicorn.orgの人です。 既存のディスアセンブラには、大規模な解析に使えるディスアセンブラがないため、Rustで高速かつ自動化が容易なディスアセンブラを実装したという内容した。

コードはgithubで公開されています。

Title: "Decompiler Internals: Microcode"
Speaker: Ilfak Guilfanov
Tracks:  Reverse Engineering,  Malware

発表者はHex-RaysのCEOで世界中のリバースエンジニアが大好きIDA Proの開発者、Ilfak Guilfanov氏です。Hex-Rays DecompilerとDecompilerの内部で使用される中間言語であるマイクロコードの実装についての発表でした。

Title: "Windows Offender: Reverse Engineering Windows Defender's Antivirus Emulator"
Speaker: Alexei Bulazel
Tracks:  Reverse Engineering,  Malware

アンチウィルスバイナリエミュレータ(Windows Defender Antivirus)のリバースエンジニアリング結果とその方法に関する発表でした。アンチウィルスソフトの実装についてここまで細かく記載されている資料はみたことがなかったので非常に興味深かったです。

Title: "DeepLocker - Concealing Targeted Attacks with AI Locksmithing"
Speaker: Dhilung Kirat, Jiyong Jang, Marc Ph. Stoecklin
Tracks:  Malware,  Exploit Development

ディープラーニングを使った高度な標的型攻撃の手法のコンセプトを発表していました。ディープラーニングを使い、ビジュアル、オーディオ、環境情報、ユーザアクティビティなどを標的の識別に活用します。顔認証を使って本人を認識すると、ペイロードをデコードしてマルウェアに感染するデモがありました。DeepLockerは通常のエンコードと違い、デコードのためのキーがあるわけではないため、解析が非常に困難になります。

Black Hat その他

Arsenal

Arsenalでは、様々なオープンソースのセキュリティ関連のツールが発表されます。今回は私の所属するチーム、nao_secからEKTotalが出展していたため、見学兼お手伝いにいきました。

EKTotalは、ドライブバイダウンロード攻撃のトラフィックを自動的に解析できるツールです。EKの入り口サイトにアクセスしたときの、pcapかsazファイルをアップロードすることで使用されたExploit Kitの種類や脆弱性のCVE番号、マルウェアの抽出、抽出したマルウェアのVTの解析結果を確認することが可能です。

コードはgithubで公開されています。

f:id:cdi-nakajima:20180829164722j:plain

Business Hall

Business Hallでは、各企業がブースを出展しています。日本で開催されるカンファレンスや展示会では出展が見られない企業のデモや展示がありました。出展側もラフな格好ですし、ビールを無料で配布している企業もあって、日本とは雰囲気が違うなと感じました。おみやげにTシャツやステッカーもたくさんいただけました!気になればすぐに商談に移れるように、個室の商談ブースも用意されていました。

f:id:cdi-nakajima:20180829164809j:plain

DEF CON 26

Black Hatへの参加&飛行機の関係で、DEF CONは2日目のみ参加しました。DEF CONには様々なジャンルの出展があるのですが、弊社の若手エンジニアと他社の若手エンジニアでチームを組み、オンサイトで開催されるOpenCTFにほとんど参加していました。(この話は別の記事で)

CTF参加のため、あまり見学できなかったのですが、前から興味があったLockpicking villageを覗いてきました。Lockpicking villageでは、物理ロックのピッキングのデモンストレーションや体験コーナーがあり、参加者は物理ロックがどのように機能し、どのように危険にさらされるかを学ぶことができます。私もピッキングを体験し、物理セキュリティについて理解を深めることができました。簡単なロックだと専門知識をほとんど必要とせず、解錠できてしまうとは恐ろしいですね。

おわりに

Black HatのTrainingsからDEF CON2日目まで7日間毎日がエキサイティングな日々でした。普段はネット上でしか交流がない海外のエンジニアと直接会うことができよかったです。また、レベルの高い発表を聞くことでアウトプットへのモチベーションが上がりました。

DEF CONは1つ1つがとても濃く、一日だけでは回りきれなかったので参加する人は全日程参加することお勧めします。

セキュリティエンジニアなら誰しも憧れるハッカーの祭典、夏のラスベガスでの一週間でした。

株式会社サイバーディフェンス研究所 / Cyber Defense Institute Inc.