中東の重要国家インフラへのサイバー侵入に使われたHavocサンプルを分析
提供: フォーティネットジャパン
本記事はフォーティネットジャパンが提供する「FORTINETブログ」に掲載された「悪意のあるHavocサンプルを分析」を再編集したものです。
影響を受けるプラットフォーム:Microsoft Windows
影響を受けるユーザー :Windowsユーザー
影響 :侵害されたコンピュータを完全にリモート制御
深刻度 :高
背景
この分析は、中東の重要国家インフラ(CNI)を標的とする長期的なサイバー侵入を調査した、「中東の重要国家インフラへの侵入」(詳細なレポートはこちら)と呼ばれる、FortiGuardインシデントレスポンスチーム(FGIR)が主導する調査の続報です。
レポートによると、攻撃者がシステムのタスクマネージャーにマルウェアの複数の断片を追加して永続性を維持していることが明らかになりました。悪意のあるHavoc亜種サンプルのひとつについて、詳細な分析を実施しました。
Havocは、エクスプロイト後のコマンドアンドコントロール(C2)のバックドアフレームワークとして有名で、主にC++とGoで記述されています。ここでは、このHavoc亜種がDLLファイルから復号化され、新たに作成された「cmd.exe」プロセスで展開される様子、HavocデーモンとC2サーバーのやりとり、および侵害されたWindowsシステム上で実行される可能性のある悪意のある操作について詳しく説明します。
リモートインジェクター
リモートインジェクター(conhost.exe)はシステムのタスクマネージャーによって開始され、以下のコマンドラインが使用されます。
C:\Windows\System32\drivers\conhost.exe -f conhost.dll -ER --ln --path cmd.exe
Windows OSではWindows 7のリリース以降、コマンドラインインタフェースを処理するためにconhost.exe(Console Window Host)が導入されました。攻撃者は被害者を誤解させるために、リモートインジェクターをconhost.exeとして偽装します。
フォーティネットの分析によると、このリモートインジェクターは複数の機能をサポートしており、コマンドラインパラメータを使用して制御されます。「-f」パラメータを付けて渡された「conhost.dll」には、暗号化されたHavocペイロードが含まれ、「--path」パラメータを付けて指定された「cmd.exe」は、Havocが注入され実行されるターゲットプロセスです。
パラメータを付けずに偽のconhost.exeを実行するとヘルプ情報が表示され(図1)、リモートインジェクターの使用方法および利用可能なオプションの説明があります。
リモートインジェクターが開始されるとAPI CreateProcessA()が呼び出され、「-- path」引数を付けて指定された「cmd.exe」プロセスが作成されます(図2を参照)。
次に、このリモートインジェクターは、conhost.dllファイルに埋め込まれたシェルコードの断片を使用して、Havocフレームワーク内でHavocエージェントまたはデーモンとして参照されるHavocペイロードを復号化します。図3には、リモートインジェクターの復号化関数、復号化されたシェルコードの部分、およびデバッガーの下部のメモリには復号化されたHavocペイロードが表示されています。conhost.dllファイルの先頭の30Hバイトから、復号化キーおよび初期化ベクトル(IV)が生成されます。
次に、リモートインジェクターは、復号化されたシェルコードとHavoc実行ファイルをプロセスに注入するために、新しく作成された「cmd.exe」のProcessHandleを使用して、ZwAllocateVirtualMemory()およびZwWriteVirtualMemory()の2つのAPIを呼び出します。
最後に、ZwCreateThreadEx() APIを呼び出してリモートスレッドを作成します。新しく作成された「cmd.exe」プロセスに、ProcessHandleパラメータが再度設定され、lpStartAddressパラメータで、プロセス内に注入されたシェルコードのアドレスを参照します。
このシェルコードの目的は、後続のHavocペイロード(DLLファイル)を「cmd.exe」プロセスに展開して実行することです。
HavocバックドアRAT
Havocフレームワークは、典型的なRAT(リモートアクセス型トロイの木馬)で、GitHubで入手可能なオープンソースプロジェクトです。Golang、C、C++、Qt、Python、およびアセンブリ(ASM)など複数の言語で記述されています。このフレームワークは、C5piderによって開発され、2022年にリリースされました。
Havocでは、コマンド&コントロール(C2)サーバーはチームサーバーと呼ばれ、チームサーバーとのやりとりに使用されるUIダッシュボードはクライアントと呼ばれます。Havocエージェントはデーモンとも呼ばれ、侵害されたデバイス上で実行されることで、C2サーバーからのコマンドを受け取り、システムの制御を可能にします。図4は、サーバー側のHavocクライアントを示しており、接続し制御しているアクティブなデーモンが表示されています。
Havocは、侵害されたデバイスとC2サーバー間でコマンドや結果を伝送するために、HTTP、HTTPS、およびSMBプロトコルをサポートしています。
このサンプルでは、C2サーバーは「apps[.]gist[.]githubapp[.]net」としてハードコードされています。残念ながら、分析時、このサーバーは利用できませんでした。分析を続行するために、シミュレーション用のコマンド&コントロール(C2)サーバーをセットアップしました。また、プロトコルをHTTPSからHTTPに変更し、TLS暗号化を使用しないプレーンテキストでトラフィックをキャプチャし分析できるようにしました。
C2サーバーにデーモンを登録
Havocデーモンは、侵害されたデバイス上で動作している間、侵害されたWindowsシステムおよびHavocプロセス自身に関するメタデータを収集します。このメタデータは、AESアルゴリズムを使用して暗号化された後、C2サーバーに送信されることで、侵害されたシステムがC2サーバー上に登録されます。図5の下部に示すように、収集されたメタデータには、さまざまなシステムやプロセスの詳細情報が含まれています。
メタデータ(サイズ:0xBA)の情報には、エージェントID(0x67C54600)、デーモンID(0x0F)、ホスト名、ユーザー名、ドメイン、IPアドレス、プロセス名(「C:\Windows\SYSTEM32\cmd.exe」)、プロセスID(0x1ED4)、親PID(0x2444)、プロセスのロードベースアドレス、OSバージョン情報、およびOSアーキテクチャなどの情報が含まれます(ただしこれに限らない)。
図6は、前述のAESで暗号化されたメタデータを含むデーモン初期化パケットを示しています。このパケットは、被害者のシステムを登録するC2サーバーに、最初のパケットとして送信する必要があります。以下のテーブルは、パケットの各部分の内容を説明するために、パケットを色分けしたセクションに分けて分類したものです。
| オフセット | 備考 |
| +00h | データサイズ、0xFA |
| +04h | マジック値、0xDEADBEEF |
| +08h | エージェントID、0x67C54600 |
| +0Ch | コマンドID、0x63。DEMON_INIT |
| +10h | リクエストID、0x0 |
| +14h | AESキー、20hバイト |
| +34h | AES IV、10hバイト |
| +44h | AESで暗号化されたメタデータ |
デーモン初期化パケットは、HTTP POSTリクエストの本文として送信されます。C2サーバーがパケットを受け取ると、マジック値を検証し、パケットに含まれるAESキーとAES IVを使用してメタデータを復号化して、登録プロセスを実行します。同時に、クライアントダッシュボードには、デーモン、および侵害されたシステムのメタデータが表示されます(図4を参照)。
図7は、HTTP POSTリクエストを介して送信されたデーモン初期化パケットをキャプチャしたWiresharkのスクリーンショットを示しています。
制御コマンド
Havocは、侵害されたシステムを制御するために、幅広い制御コマンドを定義しています(以下を参照)。
・COMMAND_GET_JOB(0x1)
・COMMAND_INLINEEXECUTE_EXCEPTION(0x1)
・COMMAND_INLINEEXECUTE_SYMBOL_NOT_FOUND(0x2)
・COMMAND_INLINEEXECUTE_RAN_OK(0x3)
・COMMAND_INLINEEXECUTE_COULD_NO_RUN(0x4)
・COMMAND_INLINEEXECUTE(0x14)
・COMMAND_NOJOB(0xA)
・COMMAND_SLEEP(0xB)
・COMMAND_PROC_LIST(0xC)
・COMMAND_FS(0xF)
・COMMAND_JOB(0x15)
・COMMAND_INJECT_DLL(0x16)
・COMMAND_INJECT_SHELLCODE(0x18)
・COMMAND_SPAWNDLL(0x1A)
・COMMAND_PROC_PPIDSPOOF(0x1B)
・CALLBACK_OUTPUT(0x0)
・CALLBACK_FILE(0x2)
・CALLBACK_FILE_WRITE(0x8)
・CALLBACK_FILE_CLOSE(0x9)
・CALLBACK_ERROR(0xD)
・CALLBACK_OUTPUT_OEM(0x1E)
・CALLBACK_OUTPUT_UTF8(0x20)
・DEMON_INIT(0x63)
・DEMON_INFO(0x59)
・BEACON_OUTPUT(0x5E)
・COMMAND_TOKEN(0x28)
・COMMAND_OUTPUT(0x5A)
・COMMAND_ERROR(0x5B)
・COMMAND_EXIT(0x5C)
・COMMAND_KILL_DATE(0x5D)
・COMMAND_CHECKIN(0x64)
・COMMAND_EXCEPTION(0x98)
・COMMAND_SYMBOL_NOT_FOUND(0x99)
・COMMAND_NET(0x834)
・COMMAND_CONFIG(0x9C4)
・COMMAND_SCREENSHOT(0x9CE)
・COMMAND_PIVOT(0x9D8)
・COMMAND_TRANSFER(0x9E2)
・COMMAND_SOCKET(0x9EC)
・COMMAND_KERBEROS(0x9F6)
・COMMAND_MEM_FILE(0xA00)
・COMMAND_PACKAGE_DROPPED(0xA0A)
・COMMAND_PROC(0x1010)
・COMMAND_PS_IMPORT(0x1011)
・COMMAND_ASSEMBLY_INLINE_EXECUTE(0x2001)
・COMMAND_ASSEMBLY_LIST_VERSIONS(0x2003)
ほとんどのコマンドには、機能を拡張するためのサブコマンドが付属しています。
例えば、COMMAND_FS(0xF)には以下の10個のサブコマンドがあります。
DEMON_COMMAND_FS_DIR(1)
DEMON_COMMAND_FS_DOWNLOAD(2)
DEMON_COMMAND_FS_UPLOAD(3)
DEMON_COMMAND_FS_CD(4)
DEMON_COMMAND_FS_REMOVE(5)
DEMON_COMMAND_FS_MKDIR(6)
DEMON_COMMAND_FS_COPY(7)
DEMON_COMMAND_FS_MOVE(8)
DEMON_COMMAND_FS_GET_PWD(9)
DEMON_COMMAND_FS_CAT(10)
攻撃者が、侵害されたシステム上に「test」という名前のフォルダを作成する必要があるとします。図8に表示されているパケットで「test」の文字を確認できます。
0x0Fは、DEMON_COMMAND_FSのコマンドIDで、0xA18D02ECはリクエストIDです。次の値は、暗号化されたサブコマンドのサイズとパラメータを示します。復号化されたサブコマンドデータ内の0x06は、DEMON_COMMAND_FS_MKDIRのIDで、後続のデータはフォルダ名を意味します(サイズ+データ)。
また、Havocは、コマンドとサブコマンドのアプローチに加え、一般的にBOF(ビーコンオブジェクトファイル)と呼ばれるオブジェクトファイルのメモリ内実行もサポートしています。C2サーバーは、バイナリ形式のシェルコードの断片を含むコンパイルされたオブジェクトファイルを送信します。このファイルは侵害されたシステム上のデーモンプロセスのメモリ内で直接実行されます。
Havocは、BOFを利用することで、デーモン自身を置き換えたり更新することなく、その機能を拡張することができます。
図9は、最近復号化した、COMMAND_MEM_FILEコマンド(コマンドID:0xA00)のパケットで伝送されてきたオブジェクトファイルを示しています。このパケットは、クライアントUIで「enum_filter_driver」と入力した時に送信されました。
Havocのフル機能
Havocは、先程紹介した制御コマンド、サブコマンド、およびBOFに加えて、幅広い機能が実装されています。これらの機能は、コマンドとモジュールの2つのタイプに分類され、各モジュールには複数のコマンドが含まれています。
コマンド名を入力するか、モジュール名の後にコマンド名を入力すると、C2サーバーにより、対応するコマンドID、サブコマンドID、またはBOFを持つコマンドパケットが生成された後、デーモンに送信され、侵害されたシステムを制御します。
Havocのすべての機能の一覧を以下のテーブルに示します。
| コマンド名 | タイプ | 説明 |
| adcs_enum | コマンド | AD内のCAとテンプレートを列挙します |
| adcs_request | コマンド | 登録証明書をリクエストします |
| adduser | コマンド | 新しいユーザーをマシンに追加します |
| addusertogroup | コマンド | ユーザーを特定のグループに追加します |
| arp | コマンド | ARPテーブルを一覧表示します |
| bofbelt | コマンド | BOF(ビーコンオブジェクトファイル)を使用するSeatbeltポートです |
| cacls | コマンド | 特定のファイルのユーザーパーミッションを一覧表示します |
| cat | コマンド | 特定のファイルの内容を表示します |
| cd | コマンド | 特定のディレクトリに変更します |
| checkin | コマンド | チェックインリクエストをリクエストします |
| config | モジュール | デーモンセッションの動作を構成します |
| cp | コマンド | ファイルをコピーします |
| dcenum | コマンド | ドメイン情報を列挙します |
| dir | コマンド | ディレクトリを一覧表示します |
| dll | モジュール | DLLプロセスの生成および注入に関するモジュールです |
| domainenum | コマンド | 現在のドメインのユーザーアカウントを一覧表示します |
| dotnet | モジュール | .NETアセンブリを実行および管理します |
| download | コマンド | 特定のファイルをダウンロードします |
| driversigs | コマンド | 既知のEDRベンダー名のドライバをチェックします |
| enableuser | コマンド | 特定のユーザーアカウントを有効化します |
| enum_filter_driver | コマンド | フィルタドライバを列挙します |
| enumlocalsessions | コマンド | 現在アタッチされているユーザーセッションを列挙します |
| env | コマンド | 環境変数を出力します |
| exit | コマンド | クリーンアップして終了します |
| get-asrep | コマンド | 指定したドメインのASREPを持つユーザーアカウントを列挙します |
| get-delegation | コマンド | 指定したドメインの悪用可能なさまざまな種類のKerberos委任設定を列挙します |
| get-netsession | コマンド | リモートデバイスのセッションを列挙します |
| get-spns | コマンド | 指定したドメインのSPNを持つユーザーアカウントを列挙します |
| get_password_policy | コマンド | サーバーで構成されているパスワードポリシーを取得します |
| help | コマンド | 指定したコマンドのヘルプメッセージを表示します |
| inline-execute | コマンド | オブジェクトファイルを実行します |
| ipconfig | コマンド | ネットワーク構成の設定を表示します |
| job | モジュール | ジョブマネージャーです |
| jump-exec | モジュール | 水平方向の移動モジュールです |
| kerberoast | コマンド | 特定のSPNに対してKerberoasting攻撃を実行します |
| klist | コマンド | Kerberosチケットを一覧表示します |
| ldapsearch | コマンド | LDAPの検索を実行します |
| listdns | コマンド | DNSキャッシュエントリを取得します |
| locale | コマンド | サーバーのロケール情報を出力します |
| luid | コマンド | 現在のログオンIDを取得します |
| mkdir | コマンド | 新しいディレクトリを作成します |
| mv | コマンド | ファイルまたはフォルダを移動します |
| nanodump | コマンド | LSASSプロセスをダンプします |
| nanodump_ppl_dump | コマンド | PPLを迂回してLSASSをダンプします |
| nanodump_ppl_medic | コマンド | PPLを迂回してLSASSをダンプします |
| nanodump_ssp | コマンド | セキュリティサポートプロバイダ(SSP)をLSASSにロードします |
| net | モジュール | ネットワークとホストを列挙するモジュールです |
| netGroupList | コマンド | グループを一覧表示します |
| netGroupListMembers | コマンド | グループメンバーを一覧表示します |
| netLclGrpLstMmbrs | コマンド | ローカルグループメンバーを一覧表示します |
| netLocalGroupList | コマンド | ローカルグループメンバーを一覧表示します |
| netshares | コマンド | 共有フォルダを一覧表示します |
| netsharesAdmin | コマンド | 共有フォルダの詳細を一覧表示します |
| netstat | コマンド | リッスン中および接続中のネットワーク接続を一覧表示します |
| netuptime | コマンド | ブート時間情報を取得します |
| netuser | コマンド | 特定のユーザーに関する情報を取得します |
| netview | コマンド | ワークステーションとサーバーを一覧表示します |
| noconsolation | コマンド | PEをインラインで実行します |
| nslookup | コマンド | 侵害されたデバイスに対してDNSクエリを行います |
| pivot | モジュール | ピボッティング用モジュールです |
| powerpick | コマンド | 管理されていないPowerShellコマンドを実行します |
| powershell | コマンド | powershell.exeコマンドを実行します |
| proc | モジュール | プロセスを列挙したり管理します |
| ptt | コマンド | Kerberosチケットをログオンセッションにインポートします |
| purge | コマンド | Kerberosチケットを消去します |
| pwd | コマンド | 現在のディレクトリを取得します |
| quser | コマンド | quser.exeを簡単に実装します |
| reg_delete | コマンド | レジストリキーまたは値を削除します |
| reg_query | コマンド | レジストリ値をクエリするか、単一のキーを列挙します |
| reg_query_recursive | コマンド | キーを再帰的に列挙します |
| reg_save | コマンド | レジストリパスおよびすべてのサブキーをファイルに保存します |
| reg_set | コマンド | 特定のキーまたは値を作成または設定します |
| remove | コマンド | ファイルまたはディレクトリを削除します |
| resources | コマンド | メモリまたはディスクドライブの情報を一覧表示します |
| routeprint | コマンド | 経路情報を出力します |
| rportfwd | モジュール | リバースポートフォワードを行います |
| samdump | コマンド | SAM、SECURITY、およびSYSTEMの各レジストリをファイルにダンプします |
| sc_create | コマンド | 対象デバイス上にサービスを作成します |
| sc_delete | コマンド | 指定したサービスを削除します |
| sc_description | コマンド | 既存のサービスの説明を設定します |
| sc_enum | コマンド | サービスを列挙します |
| sc_qc | コマンド | 名前を指定して、BOF(ビーコンオブジェクトファイル)のサービスをクエリします |
| sc_qdescription | コマンド | サービスの説明をクエリします |
| sc_qfailure | コマンド | サービスの障害状態をクエリします |
| sc_qtriggerinfo | コマンド | サービスのトリガ条件をクエリします |
| sc_query | コマンド | BOF(ビーコンオブジェクトファイル)のサービスをクエリします |
| sc_start | コマンド | 指定したサービスを開始します |
| sc_stop | コマンド | 指定したサービスを停止します |
| schtasksenum | コマンド | スケジュールタスクを列挙します |
| schtasksquery | コマンド | スケジュールタスク内の指定したタスクをクエリします |
| screenshot | コマンド | スクリーンショットを撮影します |
| sessions | コマンド | ログオンセッションを取得します |
| setuserpass | コマンド | 指定したユーザーアカウントのパスワードを設定します |
| shell | コマンド | cmd.exeでWindowsコマンドを実行します |
| shellcode | モジュール | シェルコードを注入する方法を提供します |
| sleep | コマンド | スリープまでの遅延を設定します |
| socks | モジュール | socks5プロキシを管理します |
| task | モジュール | タスクマネージャーです |
| tasklist | コマンド | リモートデバイス上の実行中のプロセスを一覧表示します |
| tgtdeleg | コマンド | 現在のユーザーの利用可能なTGTを取得します |
| token | モジュール | トークンの操作および偽装を行います |
| transfer | コマンド | 転送モジュールをダウンロードします |
| upload | コマンド | ファイルをアップロードします |
| uptime | コマンド | システムのブート時間を一覧表示します |
| userenum | コマンド | ユーザーアカウントを一覧表示します |
| whoami | コマンド | BOF(ビーコンオブジェクトファイル)のログインユーザー情報を取得します |
| windowlist | コマンド | プログラムウィンドウのタイトルなど、表示されているウィンドウを一覧表示します |
| wmi_query | コマンド | wmiクエリを実行し、結果をCSV形式で表示します |
ここでは、制御コマンドをパケットにパッケージ化する方法を説明します。攻撃者の立場で、Havoc C2サーバー内に「pwd」コマンドを入力し、デーモンに送信すると、コマンド結果が画面に表示されました。
デーモンは通常、C2サーバーとの接続が確立した後、ハートビートパケットを約3秒ごと(乱数)にC2サーバーに送信し、デーモンが生きていることをC2サーバーに通知します。図10は、ハートビートパケットの構造を示しています。
また、図10の下部には、C2サーバーによって生成された「pwd」コマンドのコマンドパケットも表示されています。制御コマンドデータは、ハートビートパケットに対する応答内で送信されます。
制御パケットは、先頭がコマンドID(COMMAND_FSの場合は0x0F)で、その後にリクエストID(0xc5312b04)、暗号化されたデータのサイズ、暗号化されたデータ自身が続きます。暗号化されたデータ「51 7c 66 9c」は「00 00 00 09」に復号化されます。これは、コマンドID 0x0F(COMMAND_FS)の下のサブコマンドID 0x9(DEMON_COMMAND_FS_GET_PWD)を意味します。
結論
本分析は、中東の重要な国家インフラを標的とした長期的なサイバー侵入に関与するHavoc亜種の詳細な調査となります。このリモートインジェクターは、偽装したconhost.exeプロセスを活用して、新しく作成されたcmd.exeプロセスにHavocペイロードを展開する様子が明らかになりました。
Havocフレームワークはモジュール型の設計で、コマンド、サブコマンド、およびビーコンオブジェクトファイル(BOF)のメモリ内実行をサポートしており、攻撃者は、柔軟な方法で、リモートのデーモンプロセスを制御することができます。
一般的に、リサーチャーは、パケットの構造、暗号化メカニズム、およびコマンド実行ワークフローを理解することで、この巧妙なRATフレームワークを検知し分析することができます。
フォーティネットのソリューション
フォーティネットのお客様は、アンチウイルスサービス、FortiGuardのAnti-Botnetサービス、AntiSPAMサービス、およびWebフィルタリングサービスによって、このマルウェアから以下のように保護されています。
FortiGuardのAnti-Botnetサービスは、C2サーバーのドメインへのDNSリクエストをブロックします。
C2サーバーのドメインは、FortiGuard Webフィルタリングサービスにより「悪意のあるWebサイト」として識別されます。
FortiGuardアンチウイルスサービスは、このリモートインジェクター、および暗号化されたHavoc DLLファイルを、次のアンチウルスシグネチャを使って検知します。
W64/Havoc.d16b!tr
Data/Havoc.e5b0!tr
FortiGuard IPSサービスは、Havocのトラフィックをシグネチャ「Backdoor.Havoc.Agent」を使って検知します。
FortiGate、FortiMail、FortiClient、およびFortiEDRは、FortiGuardアンチウイルスサービスをサポートしています。FortiGuardアンチウイルスエンジンは、各ソリューションに含まれています。その結果、最新の保護機能を備えたこれらの製品を使用するお客様はすでに保護されています。
また、読者の皆様には、フォーティネットが無償で提供するNSEトレーニング:NSE 1 – 情報セキュリティ意識向上を受講することをお勧めします。このトレーニングにはインターネットの脅威に関するモジュールが含まれ、エンドユーザーは各種のフィッシング攻撃を識別して自らを保護する方法を学習できます。
お客様の組織が、この脅威やその他のサイバーセキュリティ脅威の影響を受けていると思われる場合、当社のFortiGuardグローバルインシデントレスポンスチームまでお問い合わせください。
IOC(Indicator of Compromise:侵害指標):
C2サーバー:
apps[.]gist[.]githubapp[.]net
関連するサンプルSHA-256:
[conhost.exe / リモートインジェクター]
22BD09FBAB54963D4B0234585D33571A47A2DF569DBAB8B40988415AB0A3C37B
[conhost.dll / シェルコードを含む暗号化されたHavocサンプル]
9208034AF160357C99B45564FF54570B1510BAF3BC033999AE4281482617FF5B
この記事の編集者は以下の記事もオススメしています
-
sponsored
FortiGuard Labsが「Horabotマルウェア」を拡散する脅威アクターを確認 -
sponsored
国際的な協力とデータ共有、官民連携で中南米のサイバー犯罪に対抗 -
sponsored
イランの支援を受けたとみられる脅威グループが中東の重要国家インフラに侵入 -
sponsored
ユーザー情報を密かに窃取するWindowsインフォスティーラー「NordDragonScan」 -
sponsored
2つの高リスクな脆弱性を攻撃する新型ボットネット「RondoDox」 -
sponsored
暗号通貨マイニングボットネット「H2Miner」とランサムウェア「Lcryx」が活動中 -
sponsored
中東の重要国家インフラへの侵入に使われたWebシェルスクリプトを詳細分析 -
sponsored
複数のイスラエル企業に影響を与えた標的型の侵入攻撃PowerShell攻撃チェーン











