日本が提唱する未来社会のコンセプト、超スマート社会(人間中心の社会)といわれるSociety5.0では、すべての人とモノがIoT(Internet of Things)でつながることで様々な“知識”や“情報”が共有されます。そしてこの未来社会像の実現には、価値創造の源泉ともいわれる「データ」を効果的に活用することが重要になります。
データの利活用を推進すると同時に、データのそのものの取り扱いは複雑、かつ注意や対策が必要です。例えば気づかぬうちに個人情報が抜き取られて流出される、会社のサーバーが外部からの攻撃でダウンして業務に支障が出るなど、サイバー攻撃とインターネットは切っても切れない関係です。データの取り扱いに対しては、個人や会社としてのコンプライアンス意識を高めるとともに、サイバー攻撃のリスク対策が重要になるでしょう。
そこで今回は、セキュリティ対策、開発や調査、今ある既存のサービスからのヒントを得るために役立てられている、「リバースエンジニアリング」についてまとめてみました。
※リバースエンジニアリングとは、ソフトウェアやハードウェア製品の構造や仕組みを分析し、明らかにすることで製造方法や動作などの技術情報(データ)を明らかにするのがリバースエンジニアリングです。とくにソフトウェアの分野では、ソースコードを解析してプログラムがどのようになっているのかといったことを解析することを指しています。 |
目次
1.ソフトウェアとリバースエンジニアリング
リバースエンジニアリングは、コンピュータウイルスやマルウェアなどの攻撃コードの解析などセキュリティ対策のほか、技術習得、開発や設計に役立てられています。
1-1.ドキュメント管理など
リバースエンジニアリングツールを使った静的分析により、ソースコードから設計レベルのドキュメントを作成が可能です。仕様書がないソフトウェアであってもこの技術を活用すればソースコードからプログラムの仕様書を作成できます。
ソフトウェアは更新が頻繁に行われますので、ドキュメントの更新が煩雑になりがちです。設計とコードの整合性チェック、ドキュメントの更新などにも役立てられます。
ここで紹介するGitHubは、企業での開発におけるセキュリティ、コンプライアンス、展開管理において優れた効果を発揮するソフトウェアです。最近ではGitHubで仕様書を管理されることも増えています。ファイルの作成、編集、などさまざまな操作が可能です。
1-2.マルウェア解析/セキュリティ
マルウェア解析には一般的に「表層解析」「動的解析」「静的解析」の3つのステップがあり、このなかの「静的解析」にリバースエンジニアリング技術が使われています。
マルウェアのファイル(バイナリプログラム)を逆アセンブル・逆コンパイルしソースコードを読み解きます。逆アセンブルを行うツールとしては、Ghidra、IDA Pro、Binary Ninja、JEBなどがあります。以下にてこれらのリバースエンジニアリングツールを紹介します。
1-2-1.Ghidra (オープンソース)
Ghidraは、米国家安全保障局(NSA、 NationalSecurityAgency)によって作成、保守されているソフトウェアリバースエンジニアリングのSRE(Site Reliability Engineering)フレームワークです。NSAのサイバーセキュリティミッションをサポートするために組織内で10年以上使用していたツールで、2019年3月に無償公開されました。同年4月にはソースコードも公開されています(GitHub)。
マルチプラットフォーム(Windows、macOS、Linuxなど)に対応したハイエンドソフトウェア分析ツールのスイートです。逆アセンブル、アセンブリ、逆コンパイル、グラフ化、スクリプト作成、およびそのほか豊富な機能が含まれており、悪意のあるコードの分析はもちろん、ネットワークおよびシステムの潜在的な脆弱性をより深く理解することに繋げられます。またJavaやPythonを使用した独自のGhidraプラグインコンポーネントやスクリプトの開発も可能です。
※オープンソースのため、保証やサポートは受けられません。
サイバー情報共有イニシアティブ(J-CSIP) 運用状況 (IPA)
~オープンソースの解析ツール「Ghidra(ギドラ)1 」の紹介~
https://www.ipa.go.jp/files/000076715.pdf
※SREとは、Site Reliability Engineeringの略で、米Google 発祥でITシステムの管理と運用のための方法論のことです。日本では「サイト信頼性エンジニアリング」と呼ばれています。 |
1-2-2. IDA Pro と IDA Decompiler
マルウェア解析における静的解析で最も有名なHex-Rays社の逆アセンブラ兼デバッガーツール IDA Pro(商用)。x86やARMを含む多くの種類のプロセッサに対応しておりWindows、Linux、MacOS Xなど対応プラットフォームも多様です。
IDAはプログラミング言語の中でも人気のあるC++コンパイラのマングルされたシンボルを解読できます(Microsoft, Borland, Watcom, Visual Age, GNU)。
またソースコード(16進コード)を、C言語に近い擬似コードに変換するための逆コンパイラ「IDA Decompiler」と「IDA Pro」を併せて用いることで、その処理速度は10倍以上になることが期待できます。
1-2-3. Binary Ninja
Vector 35のBinary Ninjaは、独自の中間言語(BNIL)に基づいて構築された強力なマルチスレッド分析により、 さまざまなアーキテクチャ、プラットフォーム、およびコンパイラに素早く対応できるリバースエンジニアリングツール(バイナリエディタ)です。
Binary NinjaはMacOS X、Linux、およびWindowsで独自のクロスプラットフォームライブラリを使用して、C++ 11を含むミュレータソフトGNU3とコンパイラMSVCの両方のシンボルをデマングル(解読)できます。
1-2-4. JEB
JEBは、コードおよびドキュメントファイルの逆アセンブル、逆コンパイル等、手動または分析パイプラインの一部として実行可能なリバースエンジニアリングツールです。Androidアプリの分析、マルウェアの解析、埋め込みコードの監査などに利用できます。
JEBのブログでは実にさまざまな分析や検証結果を公開しています。例えば「カテゴリ:マルウェア」では言語としての単純さやマルチプラットフォームの開発が可能なことにより、ここ数年マルウェア開発者の間で人気となっている「Go言語(Golang)」の実行可能ファイルのリバースエンジニアリングについての説明があります。
また逆コンパイル比較では、Ghidra 9 と JEB 4(ベータ版)との「主要な比較ポイント」が掲載されています。
※こちらの記事も参照してください (マルウェアについて)
1-3. 難読化ツール – リバースエンジニアリングからの保護
1-2.では、マルウェアの攻撃コード(ソースコード)の解析を目的としたツールを紹介しましたが、ここでは、ソースコードを簡単に解析できないようにする「難読化」のためのツールを紹介します。
Pythonスクリプト用のPyArmor は、リバースエンジニアリングによるコード解読から保護するための難読化ツールです。
バイトコードは各コードオブジェクトが実行完了するとすぐに難読化されるため、高いセキュリティを確保することができます。また難読化したスクリプトに有効期限を設定したり、HDDのシリアル番号/ネットワークカードのMACアドレス/IPアドレスなどにバインドすることもできます。
PyArmorによって難読化されたPythonスクリプトは、通常のPythonスクリプトと同様に実行することが可能です。
2.ハードウェアとリバースエンジニアリング
ソフトウェアと同様、技術の発展のために他社の製品を解析し、そこから技術を習得できる点でリバースエンジニアリング技術は「設計の糸口」といえます。得られた情報を元に製品の改良、改修あるいは融合に役立てることは、技術習得のみならず、開発や設計のリードタイムの短縮に繋がります。
少し前の話になりますが、韓国のサムスン社が急激な成長を遂げた背景にリバースエンジニアリング技術を取り入れていたことは有名です。新しい技術の獲得や市場占有率を上げるために取り入れたとされていますが、90年代のITサービス急成長時代にマッチしたといえます。
技術の獲得以外では、他社製品との互換性を保った製品を作るため、製品の動作と仕様書との整合性を検証・修正するため、また他社製品に自社の特許が盗用されていないかの調査のためなどにこの技術が使われています。
また廃盤となった製品の補修部品などの製作などにもリバースエンジニアリング技術が活用されています。一般的に保守部品の保管期間は決められておりますが、ユーザーの使用期間はその限りではありません。時として古い部品が必要となった際、3Dスキャンで部品を再現し生産することで代替品を提供できるようになります。リバースエンジニアリングによる部品の再現や比較などは、コスト削減や代替品の検討時などにも役立ちます。
このようにハードウェアから紐解かれる技術情報(データ)の活用の方法は、技術の獲得のみならず、新しいサービスの創出につながっています。
※リバースエンジニアリングの技術活用の対象や公開情報によっては特許法や著作権に抵触するおそれがあるため注意が必要です。
2-1.法律について
リバースエンジニアリング関わる法的課題が検討され、法改正などで緩和されてきています。2019年に施行された「改正著作権法(第30条の4関係)」では、リバースエンジニアリング(プログラムの調査解析を目的としてプログラムの著作物を利用する行為)については著作権侵害とはならないことが明らかになりました。ソフトウェアに限らず、ハードウェアについても、ファームウェアを公開している場合などは対象となります。
著作権法の一部を改正する法律(平成30年法律第30号)について
https://www.bunka.go.jp/seisaku/chosakuken/hokaisei/h30_hokaisei/
3.ゲノム解析とリバースエンジニアリング
この章では、ソフトウェアやハードウェアとは少し視点を変えた「ゲノム」のリバースエンジニアリングについてです。
ゲノムとは、遺伝子の本体である物質「DNA」の文字列(塩基配列)に表された遺伝情報すべてのことです。このゲノムなどの遺伝情報の解析は、生物の生命の起源や進化を探る、生命の違いを比較する、あるいは病原となるウイルスを解析しワクチンを生成する、病気の解明につなげるなど、医学や生物工学など幅広い分野で応用されています。
このゲノム解析も「仕組みを解明する」点からみれば、対象が人(生命)のリバースエンジニアリングとして捉えられています。
イリノイ大学シカゴ校の研究者は、ヒートマップのデータ(エリアごとに数値データを強弱で色分け)を使用して、非常に詳細な染色体のモデルをリバースエンジニアリングする計算手法について報告しています。この研究を通じて、クロマチンフォールディングが遺伝子間に作成する密接な空間的関係についての新しい情報を発見しました。調査結果は、ネイチャー コミュニケーションズに掲載されています。
Reverse engineering 3D chromosome models for individual cells
https://today.uic.edu/reverse-engineering-3d-chromosome-models-from-individual-cellsHigh-resolution single-cell 3D-models of chromatin ensembles during Drosophila embryogenesis
https://www.nature.com/articles/s41467-020-20490-9
3-1.人(ヒト)のゲノム解析費用 90年代1億円、現在は100万円に!
次世代シーケンス技術の発展に伴い、ビッグデータの解析やデータベースの構築など様々な分野でゲノム解析は今や急成長を遂げています。とくにここ数年は「人生100年時代」の後押しもあってか、ヘルスケアに対する関心が高まり、誰でも手ごろな価格でヘルスチェックができる遺伝子検査キットの需要も増えています。
新型コロナウイルス感染症でもPCR検査キットの需要が拡大しましたが、自分の病気のリスクの把握、自分にあった食事や運動など、遺伝子検査キットの内容はさまざまです。遺伝子検査キットの市場は、今後2030年までに27億米ドルの評価額を超えるとされており、ゲノムデータを健康維持で活用する場は今後も増える可能性があります。こういったことができるようになったのも、ゲノム解析(ゲノムのリバースエンジニアリング)のおかげかもしれません。
DNA Test Kits Market to Exceed Valuation of US$ 2.7 Bn by 2030: Transparency Market Research
https://www.transparencymarketresearch.com/dna-test-kits-market.html
こちらの記事も参考にしてください 。
まとめ
今回、未来社会像(Society 5.0)実現に欠かせない「データの活用」という観点から、リバースエンジニアリングを取り上げてみました。データは生ものですが、コンピュータ性能の向上により年々データ収集にかかる時間も減少してきています。得られたビッグデータは分析や解析の質の高まりととともに今まで得られなかった結果をもたらすこともありますが、また逆に巨大化するデータにより管理の複雑さや煩雑さに繋がる場合もあります。
たった一つの数字が異なるだけで安全性や信頼性を大きく左右させてしまう可能性も秘めています。センシティブでデリケートであることも念頭におきつつ,最大限にデータを活用できるよう、対策を立てリスクを減らしていければと思います。
弊社では今後も継続して研究開発に役立つ世界中の製品を取り扱ってまいります。「このメーカーの販売しているこのソフトウェアが欲しい」「解析速度が上がらず困っている」といったご要望やご相談など、お気軽にお問い合わせください。