脅威アクターのように考える:シリーズ

このシリーズの背後にある動機

アプリケーションセキュリティへの第一歩を踏み出すのは、時に困難を伴うものです。サイバーセキュリティに関するブログは無数に存在し、オープンソースや無料の攻撃ツールも数多く存在します。しかし、アプリケーション開発者にとって真の脅威となる重要な部分を分析するのに役立つ情報はほとんどありません。既存の情報の多くは、調査や概念実証に基づいています。

このシリーズでは、最も重大な脅威を詳しく取り上げ、アプリケーション攻撃の再現方法を説明し、侵入テスターがアプリケーションをテストする際に使用する基礎を提供し、最も重大な脅威から保護するための推奨事項を示します。脅威の攻撃者を阻止するための最良の方法を学ぶことは、彼らの行動と目的を理解することから始まります。このシリーズでは、iOS アプリケーションのセキュリティに焦点を当てます。すべてのオペレーティングシステムには、類似した脅威と攻撃ベクトルがあります。しかし、iOS は、制限的なアプリケーションサンドボックスを備え、ハードウェアとオペレーティングシステムのソースコードが他の多くのシステムよりも厳格にロックダウンされているという、独自の特徴を持っています。この最初の記事では、iOS アプリケーションセキュリティの独自性を生み出す高レベルの背景をレビューし、iOS IPA ファイル形式、アプリケーション署名、およびアプリケーションサイドローディングについて詳しく説明します。これらは、このシリーズの後半で説明する攻撃に対処するために必要な基本的な要素です。

脅威アクターの動機

脅威アクターがアプリケーションを攻撃する動機は多岐にわたります。単にブログに書いて情報を拡散したいだけかもしれませんし、あるいは、攻撃できると見せつけるために攻撃している可能性もあります。一般的に、脅威アクターの目的は、自身の金銭的利益を得ること、あるいは標的に金銭的損害を与えることです。脅威アクターは、まず機密性の高いアルゴリズム、通信プロトコル、API、あるいはビジネスロジックをリバースエンジニアリングして理解し、アプリケーションに再実装しようとするかもしれません。しかし、このプロセスはすぐにDRMやライセンスメカニズムを回避し、アプリケーションの無償配布につながる可能性があります。 リバースエンジニアリング、これらの攻撃に対するコード変更およびアプリケーション分析は同じです。 攻撃を理解する、および脅威の行為者を特定することで、それらに対する防御が強化されます。

デスクトップとモバイルの違い Application Security

プラットフォームやオペレーティングシステムごとに、異なる攻撃ベクトルが存在します。Windows、Linux、Macなどのデスクトップオペレーティングシステムは、オペレーティングシステムレベルでのセキュリティが最も低いため、セキュリティの低下を悪用して攻撃ツールを開発したり、アプリケーションを改変したりすることが容易になります。iOSやAndroidなどのモバイルオペレーティングシステムで実行されるアプリケーションは、一般的なデスクトップアプリケーションよりも制限の厳しいサ​​ンドボックスを備えている傾向があります。しかし、オペレーティングシステムにセキュリティ機能が組み込まれているからといって、その上で実行されるアプリケーションが常に安全であるとは限りません。 safeあらゆるオペレーティング システムで実行されるアプリケーションに対する攻撃は依然として存在します。

脅威アクターにとって iOS が何が違うのかを詳しく見てみましょう。

  1. iOSはユーザーにルート権限や管理者権限を一切提供していません。デスクトップオペレーティングシステムでは、ユーザーが権限を昇格できます。
  2. 多くの攻撃ツールは、攻撃対象となるソフトウェアと同じデバイス上で実行する必要があります。モバイル端末を標的とした攻撃ツールの構築と実行は、より困難になる可能性があります。
  3. iOS に対する攻撃ツールは、iOS デバイス自体ではなく、ペアリングされたデスクトップ上で実行されることが多く、使用や開発が困難になっています。
  4. Appleは、権限の昇格を積極的に困難にしています。Appleは、脱獄につながるセキュリティ上の脆弱性を修正し、脱獄を徐々に弱体化させ、制限してきました。 私たちのブログ より詳細な履歴については、こちらをご覧ください。ほとんどのデバイスのAndroidオペレーティングシステムは、デフォルトでルート権限を提供していませんが、脅威アクターが権限を昇格することはそれほど困難ではありません。
  5. iOSにはソフトウェア開発のデバッグ機能が少なく、開発は主にXcode内、またはXcodeのビルドツールを使って行われます。ほとんどのデバッグツールはXcodeに紐付けられており、既にコンパイルされたアプリケーションに対しては機能が制限されています。
  6. iOS デバイスには、デフォルトでは SSH または直接ターミナル接続がありません。
  7. エンドユーザーは、急速に変化するオペレーティングシステム、ハードウェア、アプリケーション(セキュリティパッチを含む)に合わせて、iOSデバイスを迅速にアップデートします。これにより、攻撃ツールやマルウェアが阻止され、脅威アクターはメンテナンスにより多くの費用を費やすことになります。
  8. iOS デバイスは高価で、Apple 開発者アカウントが必要であり、コストを節約するためにシミュレーターやエミュレーターの機能が制限されています。

iOS バイナリパッケージ

iOSのIPAファイルは、アプリケーションの実行に必要なものがすべて含まれたzip形式で圧縮されています。IPAファイルを解凍するだけで、アプリケーションのバイナリファイルにアクセスできます。これは、静的解析によるアプリケーションのリバースエンジニアリングの第一歩です。以下の例では、このシリーズの後半で攻撃対象となるサンプルアプリケーションであるJob Dispatcherアプリケーションを取り上げています。このアプリケーションは、以下のURLから入手できます。 https://github.com/digitalai-opensource/job-dispatcher.

% unzip Job\ Dispatcher.ipa アーカイブ: Job Dispatcher.ipa 作成: Payload/ 作成: Payload/Job Dispatcher.app/ 作成: Payload/Job Dispatcher.app/_CodeSignature/ 展開: Payload/Job Dispatcher.app/_CodeSignature/CodeResources 展開: Payload/Job Dispatcher.app/AppIcon60x60@2x.png 展開: Payload/Job Dispatcher.app/Assets.car 展開: Payload/Job Dispatcher.app/AppIcon76x76@2x~ipad.png 展開: Payload/Job Dispatcher.app/Job Dispatcher 展開: Payload/Job Dispatcher.app/embedded.mobileprovision 展開: Payload/Job Dispatcher.app/Info.plist 展開: Payload/Job Dispatcher.app/PkgInfo

これは小規模なアプリケーションであり、大規模なアプリケーションには多数のバイナリコードファイルと、多数のアセット、フレームワーク、その他のアプリケーションコンテンツが含まれます。このアプリケーションには、最上位IPA「Job Dispatcher」と同じ名前の実行可能バイナリファイルが1つだけ含まれています。「file」コマンドを使用して、これが実行可能ファイルであることを確認できます。

% ファイル Job\ Dispatcher ジョブディスパッチャー: Mach-O 64 ビット実行可能ファイル arm64

Mach-O は Apple のオペレーティング システムが使用するバイナリ ファイル形式であり、最近の iOS デバイスはすべて ARM64 CPU を使用しています。

これで、このシリーズの今後のパートでリバースエンジニアリングと変更を行うファイルにアクセスできるようになりました。アプリケーションへの攻撃が完了したら、その内容をすべてzipファイルに圧縮し、zipの名前を.ipaファイルに戻してIPAファイルを作成します。ファイルが変更された場合は、アプリケーションを適切に再署名またはサイドロードしてインストールする必要があります。

改変されたiOSアプリケーションの署名

iOSアプリケーションの署名は、通常、アプリケーションビルド時にはXcode GUI、コマンドライン使用時にはcodesignコマンドラインツールを用いて行われます。これらのツールは、コンパイル済みおよび署名済みのバイナリを変更した後にアプリケーションを再署名する際に制限があり、これは脅威アクターの典型的な使用例です。変更されたアプリケーションを再署名するには、iOS App SignerなどのツールがIPA内のすべてのファイルを再帰的に処理し、すべてを再署名することができます。このアプローチにはApple開発者アカウントが必要であり、異なる証明書で署名されたアプリケーションをjailedデバイスにインストールすると、Xcodeはエラーをスローします。iOSアプリケーションを攻撃するには、潜在的に危険なコードをダウンロードして実行する必要があることが多いことに注意してください。「Caveat Emptor(買主は注意せよ)」です。

改変されたiOSアプリケーションのサイドローディング

修正されたアプリケーションを再署名してインストールする別の方法として、サイドローディングツールを使用する方法があります。サイドローディングは、アプリケーションの再署名に伴うセキュリティ制限を回避し、サポート対象デバイスやiOSバージョンの制限を回避するために使用できます。iOSアプリケーションのサイドローディングに強力なツールとしてSideloadlyがあります。ソースコードを確認できないビルド済みアプリケーションのダウンロードとインストールには注意が必要です。

脅威アクターのように考えるサムネイル

取り上げる

脅威アクターとその攻撃ベクトルを理解することで、より安全なアプリケーションを構築する方法を理解するのに役立ちます。今後数ヶ月にわたり、様々な攻撃ベクトルを詳しく説明する一連の記事をこのページで公開していきますので、ぜひご覧ください。多くの場合、攻撃は互いに影響し合います。例えば、脅威アクターは デバイスを脱獄する Frida の全機能をインストールして実行するには、まず最初に、脆弱性を突く攻撃者がアプリケーションを強制終了するか、サイドロードして変更をテストする必要があります。最初の攻撃記事(近日公開予定)では、サンプルアプリケーションを改変して認証機能をバイパスする方法を紹介します。

 

詳しくはこちら こちら アプリの脅威評価を無料で行います。

お勧めの関連ガジェット