マルウェア

国家レベルの脅威と疑われる脅威アクターがサプライチェーン攻撃で新マルウェア「Airstalk」を使用

Clock Icon 4 分で読めます

エグゼクティブ サマリー

弊社は、Windowsベースのマルウェア ファミリーを新たに発見しました。Airstalkと名づけられたこれは、PowerShellとNETの両方の亜種で利用可能となっています。弊社では、国家支援を受けている疑いがある脅威アクターが、サプライチェーン攻撃においてこのマルウェアを使用したと、中程度の信頼性で評価しています。私たちは、脅威活動クラスタCL-STA-1009を作成し、さらに関連する活動を特定し追跡しています。

Airstalkは、モバイルデバイス管理(MDM)用のAirWatch APIを悪用しており、現在はWorkspace ONE Unified Endpoint Managementと呼ばれています。これはAPIを使用するもであり、主にカスタム デバイスの属性とファイル アップロードを管理するAirWatch機能を通じて、秘密のコマンド アンド コントロール(C2)チャネルを確立します。

Airstalkには次のような機能があります。

  • マルチスレッドC2通信プロトコルの採用
  • バージョニングの組み込み
  • 発見されたサンプルの署名への、盗まれた(であろう)証明書の使用

マルウェアは、以下のようなブラウザの機密データを盗み出すよう設計されています。

  • クッキー
  • 閲覧履歴
  • ブックマーク
  • スクリーンショット

また、発見されたサンプルの中では、脅威アクターが実装していない他のタスクも特定されています。

情報漏えいの可能性がある場合、または緊急の案件がある場合は、Unit 42インシデント レスポンス チームまでご連絡ください。

Unit 42の関連トピック サプライチェーン攻撃, 悪意のあるPowerShellスクリプト

テクニカル分析

Airstalkマルウェアには主に2つの亜種が存在することが確認されています。1つはPowerShellで記述されたものであり、もう1つは.NETで記述されたものです。Airstalkの.NETの亜種はPowerShellの亜種よりも多くの機能を持っており、より高度な開発段階にあることが伺えます。

マルウェアはAirWatchのMDM APIをC2通信に悪用していることから、弊社はAirstalkと命名しました。両方の亜種はC2通信に同じ隠れチャネルが使用されていますが、C2プロトコルと標的とするブラウザはわずかに異なります。

Airstalk PowerShell亜種

PowerShell隠れチャネルの実装

Airstalkは、AirWatchのMDM APIのdevicesエンドポイント(/api/mdm/devices/)を攻撃者との秘密のC2通信に使用することが確認されています。これらのC2通信は、AirWatch MDM API内のデバイスのカスタム属性機能を使用して、バックドアの通信詳細を保存し、デッドドロップとして使用されます。

デッド ドロップとは、個人と個人が直接つながることなく、アイテムや情報を受け渡すために使われる秘密の通信手段です。攻撃者は通常、スパイ活動でこのテクニックを使っており、一人が隠し場所にアイテムを置き、もう一人が後でそれを回収するといった運用が行われます。

マルウェアはまた、別のAPIエンドポイント(/api/mam/blobs/uploadblob)を利用して、さまざまな目的でファイルをアップロードすることが確認されています。

C2通信は、少なくとも以下の必須フィールド(最初のスキーマ)を含む、デバイスAPIエンドポイントを介したJSONメッセージに基づいています。

  • CLIENT_UUID:Windows Management Instrumentation (WMI)を通して、侵害されたデバイスの実際の値を読み取ります。
  • シリアライズされたメッセージ: Base64でエンコードされたJSONメッセージ

Valueフィールド内で送信されるシリアライズされたメッセージは、以下の最小フィールドを持ちます(第2スキーマ)。

  • CLIENT_UUID: 侵害されたデバイスの実際のUUID(ユニバーサル一意識別子)の値
  • MESSAGE_TYPE: メッセージの目的によって異なります
  • SENDER_ROLE: 侵害されたデバイスからAPIエンドポイントに向けて送信されたすべてのメッセージに対してクライアントに設定されます。

最終的なメッセージ(最初のスキーマ)は、MDM APIを通じてカスタム属性として設定され、攻撃者と通信を行います。

Web APIへのHTTPリクエストを処理するために使用されるPowerShellスクリプトのスクリーンショット。変数、ループ、条件文が使用されている。具体的な名前はコードで確認できる。
図1.AirstalkのPowerShellバージョンのCovertチャネルコア機能。

攻撃者からのメッセージを読み返すために、マルウェアは逆のプロセスを実行します。図2に示すように、自分自身から送信されたメッセージの読み取りを避けるために、メッセージをデシリアライズし、そのメッセージが攻撃者からのものであるかどうかを検証します。

プログラミング スクリプトのスクリーンショット。コーディング言語で書かれたさまざまな関数や条件文が、特定の行や要素を指す矢印で強調表示されている。
図2.AirstalkのPowerShell亜種のCovertチャネルのコア機能からのC2応答。

C2プロトコル

AirstalkのPowerShellの亜種のC2プロトコルは、通信の段階に応じて、同期と特定のタスクの実行に異なるメッセージタイプを使用します。

表1は、メソッド フィールドが持ちうるさまざまな値を示したものです。

MESSAGE_TYPE 目的
CONNECT 接続の要求
CONNECTED 接続を承認
ACTIONS タスクの同期
RESULT タスク結果

表1.AirstalkのPowerShell亜種C2通信のmethodフィールドの値。

実行されると、AirstalkのPowerShell亜種は攻撃者との通信を初期化します。これに向けて、まずCONNECTメッセージを送信し、図3に示すようにGet-Response関数で実行をブロックし、脅威アクターからのメッセージを待ちます。

接続を初期化し、リクエストをBase64に変換し、接続状態に基づいてサーバーの応答を処理するスクリプトを示すコード スニペット。
図3.AirstalkのPowerShell亜種による接続の初期化。

コードはCONNECTEDメッセージを受信することを待っている様に映りますが、マルウェア(クライアント)からのものでない限り、メッセージの種類が何であろうと結果は同じものとなります。

攻撃者との接続を確立した後、マルウェアは以下を実行します。

  • タスクの実行を求め、ACTIONS型のメッセージを送信する。
  • 実行をブロックし、攻撃者からの ACTIONS メッセージタイプでの回答を待つ。
  • 以下の図4に示すように、実行するアクションのIDを返す。
プログラミング言語によるコンピュータコードの断片の画像。関数と条件文で構成され、矢印で示された注釈がある。
図4.AirstalkのPowerShell亜種によってチェックされるC2タスク 。

図4に示すように、今回の実行フローはメッセージタイプを適切にフィルターしています。

図5は、AirstalkのPowerShell亜種の実行フローを示しています。

マルウェア(感染デバイス)、AirWatch MDM、マルウェア(脅威アクター)間の相互作用を、実行のブロック、アクションの確認、タスクの実行などのプロセスステップの説明とともに示す図。
図5.AirstalkのPowerShell亜種のC2実行フロー。

バックドア機能

C2通信チャネルが確立されると、AirstalkのPowerShell亜種は、以下の表2に示すように、アクション フィールドを介してさまざまなタスクを受信することができるようになります。

アクションID タスク
0 スクリーンショットの取得
1 すべてのChromeクッキーの取得
2 ユーザーのディレクトリ内の全ファイルのリストアップ
4 ユーザーディレクトリ内のすべてのChromeプロファイルのリストアップ
5 指定したChromeプロファイルのブラウザ ブックマークの取得
6 指定したChromeプロファイルのブラウザ履歴の取得
7 バックドアのアンインストール

表2.アクションフィールドの識別子とタスク。

表2のACTION_IDの値を見ると、値3がスキップされていることがわりますが、これは開発者の判断によるものなのか、ミスなのか定かではありませんが、もう一つの可能性としてタスクの実装を削除することで裏口から追加能力を隠す方法によるものであることが疑われます。この削除は、モジュラーバックドアとして使用するシンプルかつ効果的な方法とされます。

タスク実行後、マルウェアは図6に示すように、実行したタスクのACTION_IDとその戻り値を指定して、UploadResult関数でタスクの結果を送信します。

あるプログラミング言語のコード スニペットのスクリーンショット。特定の行を指し示す矢印を使った注釈があり、データ処理やサーバー レスポンスのチェックに関連するコードの一部が強調表示されている。
図6.タスクの結果をC2チャンネルに送り返す。

タスクによっては、Airstalk実行後に大量のデータやファイルを送り返す必要があります。そのために、マルウェアはAirWatch MDM APIのblobs機能を使い、コンテンツを新しいblobとしてアップロードを行います。図7は、AirstalkのPowerShell亜種のスクリプトでこれがどのように実装されているかを示しています。

PowerShellスクリプトのスクリーンショット。注釈は、コード内の重要な要素を指す矢印で示されている。
図7.AirstalkのPowerShell亜種のファイルアップロード機能。

下図8にあるように、この動作の例は、感染したホストのスクリーンショットを撮ることです。

PowerShellコマンドを使ったコード スニペットのスクリーンショット。このコードには、スクリーンショットを撮ってアップロードする条件ロジックが含まれており、矢印で注釈が示されている。
図8.UploadResult機能を活用したスクリーンショット機能。

Chromeからクッキーをダンプする機能は、ブラウザのリモートデバッグを可能にし、対象となるChromeプロファイルをロードするパラメータでブラウザを再起動します。これらのパラメータはまた、すべてのクッキーをダンプし、後で図9に示す隠れチャネルを通して流出するファイルに保存するコマンドも送ります。

IDEでソフトウェア コードを表示するコンピュータ画面のスクリーンショット。コードの重要な部分を指し示す矢印付きのシンタックスハイライトが特徴。
図9.Chrome Cookieの流出。

Red Canaryが以前報じたように、Chromeリモート デバッグを介したクッキー窃取は新規の機能ではなく、LummaやStealCなど複数の情報窃取ツールに既に組み込まれています。しかし、このような情報窃盗は、十分に保護された環境ではうまく実行できるものではありません。この機能を信頼できるシステム管理ツールにバンドルすることで、疑念を招くことなく密かに実行することができるようになります。

Airstalk .NETの亜種

マルウェアの調査中に、弊社はAirstalkの.NET亜種を示す一連のサンプルを特定しました。PowerShellの亜種と比較して、.NETの亜種はその秘密のC2チャンネル プロトコルに若干の違いがあり、より多くの機能を持っていることが特徴です。.NET版はPowerShell版よりも開発が進んでいるように見受けられます。

弊社が見つけたAirstalkのPowerShellのサンプルはGoogle Chromeだけをターゲットにしていましたが、Airstalkの.NETの亜種はさらに次の2つのWebブラウザもターゲットにしています。

  • Microsoft Edge
  • Island Browser

.NETの亜種は、コード署名と特定のメタデータ属性を使うことで、レガシー アプリケーションの模倣を試みます。図10はその一例です。

VMware社の製品であるAirWatchHelper.exeというファイルのプロパティを表示したスクリーンショット。注目すべきフィールドは、会社名:VMware, 製品名:クライアント、様々なバージョンの詳細。
図10.Airstalkの.NET亜種からのExifメタデータは、.NETアセンブリを介してネイティブに設定されます。

.NET隠れチャンネルの実装

PowerShellの亜種と比較して、Airstalkの.NET亜種は、図11に記載されているように、その秘密のC2通信のJSONメッセージ(最初のスキーマ)内のUUIDフィールドに追加の接尾辞を含んでいることが特徴です。

プログラミング コード スニペットのスクリーンショット。SetAttributeという名前の関数で、switchステートメントで複数のケースを指定し、配送タイプに応じた属性を設定している。
図11.Airstalkの.NET亜種における隠密チャンネル コード機能。

Airstalk .NETのC2通信には、表3が示すように3つの異なる配信タイプがあります。

配信タイプ 接尾辞 説明
DEBUG -kd デバッグデータの送信に使用
RESULT -kr タスクのチェックとタスク結果の送信に使用
BASE -kb 接続確立とビーコンに使用

表3:Airstalkの.NET亜種のC2通信における異なる配信タイプ。

C2プロトコル

PowerShell亜種と比べると、Airstalkの.NET亜種は、C2プロトコルのメッセージタイプに小さな違いがあります。表4は、.NET亜種で使われる余分な型(メソッド)のリストです。

MESSAGE_TYPE 目的 PowerShell亜種 .NET亜種
CONNECT 接続の要求 あり あり
CONNECTED 接続を承認 あり あり
ACTIONS タスクの流れ あり あり
RESULT タスク結果 あり あり
MISMATCH バージョン不一致エラー なし あり
DEBUG デバッグ メッセージ なし あり
PING ビーコニング なし あり

表4.Airstalkの.NET亜種C2プロトコルの通信方式。

PowerShell版と比べ、Airstalkの.NET版は実行フローが異なります。.NETの亜種では、以下の3つの異なる実行スレッドが使用されています。

  • C2タスクの管理
  • デバッグ ログの窃取
  • C2へのビーコニング
画面上に表示されたコンピュータ プログラミング コードの画像。オブジェクト指向プログラミングの概念をいくつか例示している。注目すべき要素としては、オブジェクトのインスタンス化、try-catchブロックによる例外処理、システム スレッディングの使用などがある。コードには、スクリプトの特定の部分を強調する注釈と矢印が含まれている。情報の一部は消去されている。
図12.Airstalkの.NET亜種におけるC2通信の主な実行フローを示すコード。

上の図12にあるように、これらの亜種はビーコニング動作、デバッグスレッド、攻撃者に送り返すログファイルを持っています。これは、図13が示すデバッグ機能に従って、10分ごとに隠れチャネルを通じて送信されます。

ファイル操作とデバッグに関連するさまざまな機能と例外処理を備えたプログラミング言語を特徴とするコンピュータ コードのスクリーンショット。
図13.デバッグ機能による定期的なログのアップロード。

図14は、.NET亜種がサポートするタスクの全リストです。

UpdateChrome、RunUtility、EnterProfile、OpenUrlなど、さまざまなタスク名が中かっこ内にリストされた「TaskType」と題された列挙を表示するコードのスクリーンショット。
図14.Airstalkの.NET亜種でC2通信のためにサポートされているタスクのリスト。

.NET亜種のタスク名はPowerShell亜種のタスクと同様に定義されていますが、すべてのタスクが実装されているわけではありません。さらに、.NET亜種のタスクIDはPowerShell亜種と異なります。これは、Airstalkの.NET版がPowerShell版から進化したことを示しています。.NET亜種では、PowerShell亜種と似ているタスクもあるが、よく調べると、小さなタスクの複合体としてより複雑であることがわかります。

以下の表5は、先に図14で示した機能の機能と実装について説明したものです。

名前 ID 実施済み 説明
Screenshot 0 あり スクリーンショットを取得する
UpdateChrome 1 あり 指定したChromeプロファイルを窃取
FileMap 2 あり 指定されたディレクトリの内容をリストアップ
RunUtility 3 なし N/A
EnterpriseChromeProfiles 4 あり 利用可能なChromeプロファイルを取得
UploadFile 5 あり 特定のChromeアーティファクトと認証情報を窃取
OpenURL 6 あり Chromeで新しいURLを開く
Uninstall 7 あり 実行終了
EnterpriseChromeBookmarks 8 あり 指定したユーザのChromeブックマークを取得
EnterpriseIslandProfiles 9 あり 利用可能なislandプロファイルを取得
UpdateIsland 10 あり 指定されたIslandプロファイルを窃取
ExfilAlreadyOpenChrome 11 あり 現在のChromeプロファイルからすべてのCookiesを破棄

表5. Airstalkの.NET亜種におけるC2関数のタスク。

バージョニング

AirstalkのPowerShell亜種にはバージョン変数がありませんが、.NET亜種にはマルウェアのバージョンを指定する変数があります。弊社が行った調査では、バージョン13と14を使用したAirstalk .NET亜種のサンプルが発見されています。

永続性

PowerShell亜種は、図15に示すUninstallタスクの実行時に削除されるスケジュールされたタスクを永続化のために使用します。

条件ブロック内のRemove-Item、Unregister-ScheduledTask、UploadResult関数を含むPowerShellコマンドを使用したコンピュータ スクリプトのスクリーンショット。
図15.Airstalk PowerShell亜種のアンインストール コード。

しかし、Airstalkの.NETバージョンは永続化メカニズムを持っていません。.NET亜種はプロセスの実行を終了し、図16に示すようにカスタム属性APIエンドポイントにフラグをセットします。

未割り当ての変数'client'に関連するエラーを示す、テキスト エディタでのコード スニペットのスクリーンショット。このコードには、HttpClientクラスの使用や非同期メソッドなど、C#プログラミングの典型的な要素が含まれている。
図16.Airstalk .NET variantのアンインストール コード。

署名付きバイナリとタイムスタンプ

防御回避の試みとして、Airstalkの.NET亜種のバイナリは、有効なCAによって署名された(おそらく盗まれた)証明書で署名されていることが確認されています。

  • 組織: Aoteng Industrial Automation (Langfang) Co., Ltd.
  • 位置関係: 廊坊(Langfang)
  • 省: 河北省
  • 国: CN
  • シリアル番号: 29afb8d913db84fdb362f4fd927b8553
  • 有効日: 6/28 10:04:49 2024 GMT
  • 有効期限: Jun 28 03:29:37 2025 GMT

しかし、この証明書は有効日の約10分後に失効しています。

  • 失効日: Jun 28 10:14:00 2024 GMT

表6が示すように、調査のなかで同じ証明書で署名され、オリジナルのタイムスタンプが保持されているPEバイナリが2つ発見されています。

SHA256 コンパイル日時 署名日時 最初の提出日時
0c444624af1c9cce6532a6f88786840ebce6ed3df9ed570ac75e07e30b0c0bde 2024-06-28 17:55:37 UTC 2024-07-03 18:01:00 UTC 2024-07-03 18:03:26 UTC
1f8f494cc75344841e77d843ef53f8c5f1beaa2f464bcbe6f0aacf2a0757c8b5 2024-07-03 20:37:08 UTC 2024-07-03 20:39:00 UTC 2024-07-03 20:43:31 UTC

表6.Airstalkの.NET亜種用のPEバイナリのテストに関する情報。

CL-STA-1009の背後にいる脅威アクターは、後のAirstalk .NET亜種バイナリのタイムスタンプを修正しましたが、以下の表7に示すように、署名されたタイムスタンプを使用することで、開発タイムラインを確立することができます。

SHA256 署名日時 コンパイル日時 デバッグ日時 最初の提出日時 説明
dfdc27d81a6a21384d6dba7dcdc4c7f9348cf1bdc6df7521b886108b71b41533 2024-07-17 20:00:00 UTC 2055-04-06 21:31:42 UTC 2039-09-07 07 17:14:59 UTC 2024-12-17 16:58:53 UTC .NETの亜種
b6d37334034cd699a53df3e0bcac5bbdf32d52b4fa4944e44488bd2024ad719b 2024-11-11 00:12:00 UTC 2066-03-16 05:36:50 UTC 2084-08-11 21:19:12 UTC 2024-12-10 00:03:03 UTC .NETの亜種
4e4cbaed015dfbda3c368ca4442cd77a0a2d5e65999cd6886798495f2c29fcd5 2024-11-14 00:21:00 UTC 2097-03-02 00:38:35 UTC 2089-11-27 15:10:05 2089 UTC 2024-12-09 13:39:25 UTC .NETの亜種
3a48ea6857f1b6ae28bd1f4a07990a080d854269b1c1563c9b2e330686eb23b5 N/A N/A N/A 2025-01-02 17:35:47 UTC PowerShellの亜種

表7. 署名タイムスタンプに基づく開発タイムライン。

アトリビューションとサプライチェーン

内部評価に基づいて、弊社では、中程度の信頼性をもって、国家支援を受けた脅威アクターがサプライチェーン攻撃でAirstalkマルウェアを使用していると評価しています。弊社はCL-STA-1009と名付けた活動クラスターとして、特定された活動を追跡しています。

弊社は過去数年間、数多くのサプライチェーン アタックを追ってきました。サプライチェーン攻撃は、組織が日々の活動を遂行するために依存している商品やサービスを標的とするものです。標的となるサプライチェーンには、組織のインフラを構成するハードウェア、組織の最も機密性の高いデータを管理するために信頼されているクラウド ベースのサービス、専門スタッフの増強などが含まれます。

この最後のカテゴリーは、一般的にビジネス プロセス アウトソーシング(BPO)と呼ばれ、攻撃者に狙われると甚大な被害を受ける可能性があります。ハードウェアとソフトウェアの監視、制御、プロビジョニングが可能です。しかし、人的資産、特に高度に専門化された人的資産には、重要な業務システムへの広範なアクセスを認めなければならないケースが多々あります。加えて、彼らは多くの場合、自組織が管理する設備で作業しています。BPOによって管理されるため、BPOは事実上、組織のセキュリティ管理の大部分から外れることになります。

BPOを専門とする組織は、犯罪者と国家支援を受けた攻撃者の両方にとって有利な標的となっており、ここ数年のインシデントでは、侵入元としてBPOへの攻撃が目立って増えているのが現状です。

BPOでは通常、規模の経済を活用して、高度に専門化された人材が複数のクライアントに同時にサービスを提供します。これは、BPOとそのクライアントの双方にとって大きな節約になる一方で、BPOが複数のターゲットへのゲートウェイとして機能するという欠点があるものです。攻撃者は、侵害するだけでなく、アクセスを無期限に維持するために必要なリソースに惜しみなく投資します。

結論

CL-STA-1009は、国家より支援を受けていることが疑われる脅威アクターの活動を表す脅威活動クラスターです。クラスターは、Airstalkマルウェアと関連しており、サプライチェーン攻撃で使用される敵対者の信頼度は中程度と評価しています。

.NETの亜種はマルウェアの進化を表しており、マルチスレッドのC2プロトコル、バージョニング、ビーコン、より複雑で複合的なタスクを特徴としています。マルウェアは、2024年に合法的な組織に対して発行されたと思われる失効証明書付きの署名済みバイナリを使用するなど、防御回避テクニックを駆使します。これらの回避テクニックには、PEタイムスタンプの操作も含まれており、こうした署名タイムスタンプはアクティビティのタイムラインを確立するのに役立つものです。このマルウェアの能力と適応性は、CL-STA-1009の背後にいる脅威アクターによってもたらされる永続的な脅威を浮き彫りにするものです。

マルウェアが採用する回避技術により、ほとんどの環境では検出を逃れることに成功しており、マルウェアがサードパーティー ベンダーの環境内で実行されている場合は特にそうなっています。ブラウザのセッションcookiesが盗まれると、多数のクライアントへのアクセスが可能になるため、BPOを利用する組織にとっては特に破壊的で危険なものとなります。また、盗まれたスクリーンショットやログに記録されたキー操作は、被害者だけでなく、被害者の顧客にとっても重要な機密情報を暴露する可能性があるものです。

長期的な監視により、攻撃者はBPO事業がどのように運営されているか、またBPO事業が通常どのように顧客とやり取りしているかを理解することができ、後続の侵入が検知される可能性は低くなります。このような攻撃を特定し、組織から守るための鍵は、セキュリティの焦点を典型的な指標やアクセス コントロールから、内部と外部の両方において、ユーザーが通常どのように作業しているかを理解することに拡大することにあります。

しかし、攻撃者の行動パターンとユーザーの一般的な行動パターンの違いは、何を注意すべきかを知っていれば、いずれ明らかになるものです。このような違いは、微妙な異常を発見するために調整された行動監視ツールを使って特定し、対処する必要があるものです。

パロアルトネットワークスのお客様は、以下の製品を通じてAirstalkマルウェアに対する保護を構築いただけます。

  • Advanced WildFireの機械学習モデルと分析技術は、本研究で共有されたインジケーターに照らして見直され、更新されています。
  • Cortex XDRおよびXSIAMマルウェア防止エンジンを採用することで、マルウェアを防止します。このアプローチは、Advanced WildFire、Behavioral Threat Protection、Local Analysisモジュールなど、複数の保護レイヤーを組み合わせて、既知および未知のマルウェアがエンドポイントに害を及ぼすのを防ぐものです。

情報漏えいの可能性がある場合、または緊急の案件がある場合は、Unit 42インシデント レスポンス チームまでご連絡ください。

  • 北米:フリーダイヤル: +1 (866) 486-4842 (866.4.UNIT42)
  • 英国: +44.20.3743.3660
  • ヨーロッパおよび中東: +31.20.299.3130
  • アジア: +65.6983.8730
  • 日本: +81.50.1790.0200
  • オーストラリア: +61.2.4062.7950
  • インド: 000 800 050 45107

パロアルトネットワークスは、本調査結果をサイバー脅威アライアンス(CTA)のメンバーと共有しています。CTAの会員は、この情報を利用して、その顧客に対して迅速に保護を提供し、悪意のあるサイバー アクターを組織的に妨害しています。サイバー脅威アライアンスについて詳細を見る。

侵害のインジケーター

IoC タイプ 説明
0c444624af1c9cce6532a6f88786840ebce6ed3df9ed570ac75e07e30b0c0bde SHA256 署名入りテストサンプル
1f8f494cc75344841e77d843ef53f8c5f1beaa2f464bcbe6f0aacf2a0757c8b5 SHA256 署名入りテストサンプル
dfdc27d81a6a21384d6dba7dcdc4c7f9348cf1bdc6df7521b886108b71b41533 SHA256 Airstalk .NETサンプル
b6d37334034cd699a53df3e0bcac5bbdf32d52b4fa4944e44488bd2024ad719b SHA256 Airstalk .NETサンプル
4e4cbaed015dfbda3c368ca4442cd77a0a2d5e65999cd6886798495f2c29fcd5 SHA256 Airstalk .NETサンプル
3a48ea6857f1b6ae28bd1f4a07990a080d854269b1c1563c9b2e330686eb23b5 SHA256 Airstalk PowerShellサンプル

コード署名証明書:

-----証明書の書き出し-----

MIIF/DCCA+SgAwIBAgIQKa+42RPbhP2zYvT9knuFUzANBgkqhkiG9w0BAQsFADB7

MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hvdXN0b24x

ETAPBgNVBAoMCFNTTCBDb3JwMTcwNQYDVQQDDC5TU0wuY29tIEVWIENvZGUgU2ln

bmluZyBJbnRlcm1lZGlhdGUgQ0EgUlNBIFIzMB4XDTI0MDYyODEwMDQ0OVoXDTI1

MDYyODAzMjkzN1owgfkxCzAJBgNVBAYTAkNOMQ4wDAYDVQQIDAVIZWJlaTERMA8G

A1UEBwwITGFuZ2ZhbmcxOjA4BgNVBAoMMUFvdGVuZyBJbmR1c3RyaWFsIEF1dG9t

YXRpb24gKExhbmdmYW5nKSBDby4sIEx0ZC4xGzAZBgNVBAUTEjkxMTMxMDAwTUEw

QTNIRjhYOTE6MDgGA1UEAwwxQW90ZW5nIEluZHVzdHJpYWwgQXV0b21hdGlvbiAo

TGFuZ2ZhbmcpIENvLiwgTHRkLjEdMBsGA1UEDwwUUHJpdmF0ZSBPcmdhbml6YXRp

b24xEzARBgsrBgEEAYI3PAIBAxMCQ04wdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASf

B2NdKWXwGa7DkmCA5NiX+kQh5JkYBjGKJgSRz5BflX/Bo+/pXKfN8fsUOe5J3k+y

v/XX53ZiHRJMmpWSjEHXyDFHbBco1hksVLOoeaTFHx65sh5eysXxwD3bwn1IzSCj

ggGpMIIBpTAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFDa9Sf8xLOuvakD+mcAW

7br8SN1fMH0GCCsGAQUFBwEBBHEwbzBLBggrBgEFBQcwAoY/aHR0cDovL2NlcnQu

c3NsLmNvbS9TU0xjb20tU3ViQ0EtRVYtQ29kZVNpZ25pbmctUlNBLTQwOTYtUjMu

Y2VyMCAGCCsGAQUFBzABhhRodHRwOi8vb2NzcHMuc3NsLmNvbTBfBgNVHSAEWDBW

MAcGBWeBDAEDMA0GCyqEaAGG9ncCBQEHMDwGDCsGAQQBgqkwAQMDAjAsMCoGCCsG

AQUFBwIBFh5odHRwczovL3d3dy5zc2wuY29tL3JlcG9zaXRvcnkwEwYDVR0lBAww

CgYIKwYBBQUHAwMwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybHMuc3NsLmNv

bS9TU0xjb20tU3ViQ0EtRVYtQ29kZVNpZ25pbmctUlNBLTQwOTYtUjMuY3JsMB0G

A1UdDgQWBBQdt2jU+7Pr64QrUIvuU1nojIqttzAOBgNVHQ8BAf8EBAMCB4AwDQYJ

KoZIhvcNAQELBQADggIBAMBeOg1geZaMToh9XVF2rrQQRXArYYQKi5svgEX6YcjC

ZljQZzBo8wIyvyyeJ7x33ThTTbPpukggrKE2p019jGjlKQMjWoA1leRatuyrMPVT

w5+Vs/RCEogg1X/n6wmvTUUNvLCv6iDgT3/ZFrm7jIJKrwMkt/HbuGE/AB3w/Hfk

tnDcWbMii58+HmuDbPRtfvKe1p9IZ6EbxdAVRrOg/unECl4JC9gdzma0DbD6HhmY

AgaCEoqBds59ghNjN2y/QpMiAvrUBpX6p4pJzIedj5cJ/WID0QgalIWpOI18rRfP

Lkh6p02s5nmbSZKQQFtjPNCew65shUgCFdiV/mnFVPbI76o4N41c2z+AEqODk6fI

QUEeCr8Ny/Ro6ijXhycFvcN/YS9mLeiZ43cyEx9iylGskYY7wbPUblzNAF5NzxuK

jp/EBCUmCoj/q43D2u/ldB9ND4yaiaRmMMte8BVjSoU9xUUss7a5vft51ONTWtWS

O8Hbs4pnGcPCjewTdrgDqKYcLOPFN4M04kQHaQqQyQaY9Sff6/2c16Sh4rmErluQ

lIbNggl4sHlpMObqSqPnkJy8ClBFr7ah7AH8k6hzyQheh1rXUtmK0TSCbywsLFfH

nGbFSa72+9mByBCUH3ckD+Nnv73dtRdH9/M7+Oq+71BJQmMwmuMXPi450vTM4HIP

-----証明書の終わり-----

Enlarged Image