「ウイルス」のJSコードを隠す興味深い手法

今日、彼らは通常のウイルス「ロックを解除するためにSMSを送信」を車に落とすコードを放り出しました。 強制的に 概説されたクリーニングの背景と方法



選んでみました。 コードを受け取り、フォーマットし、デバッグを開始しました。



window[ 'eval' ](var2);







しかし、var2では-バイナリデータ。 うわー...しかし、結局のところ、evalはバイナリデータを実行できません!!!





彼はコードを見て...そして彼は自分の体を解読に使用することが判明し、それに応じて、コードをフォーマットした後、体も変わり、解読の結果も変わりました。



そのため、フォーマットされていないコードを何らかの方法で実行すると同時に、有害なものをキャッチしないようにする必要があります。 どうやって? デバッガー呼び出し; 挿入しないで、ブレークポイントは実行されません-すべて1行で...



スクリプトが何を評価するかを知って、この構成を適用できます。



window.eval = function (arg) {

debugger;

}








その後、evalの呼び出しを正常にキャッチし、ウイルスが実行しようとしたすべてのコードを取得します...



UPD1 :実際、なぜ私はこれだけなのですか? 私はそのような洗練されたデザインを見たことがありません。 基本的に、単純なevalが使用されました(base64_decode( '...')); まあ、私見はevalの再定義を通してデバッグの興味深い方法...



UPD2難読化を解除し、主要な「ウイルス」を拾う試み-tyts 。 ソースコード(操作前)は22行目に表示されます。 以前にあったものは次のコメントにあります。 =)を実行しようとしませんでした。 ファイルは、ヒューリスティックウイルス対策アナライザーによって検出されます。



UPD3 :すでにコードを分析しており、デコーダーがすべてのコードを使用して動作するわけではないことは明らかです。 彼は数字だけを必要とし、それらの位置は重要ではありません、順序が重要です。 関数の名前をより人間的なものに変更したため、バイナリデータで最初の「グリッチ」が発生しました。 ご覧のとおり、数字がありました。 それがすべて壊れた理由です。 新しい非番号を追加しても、スクリプトには影響しません。



UPD4 :結果のコードは何をしましたか? 彼は、ブラウザ、インストールされたプラグイン、およびその他のアクションに興味深いその他の情報を定義しました(Javaが有効になっている、システム言語(?))。 さらに、取得したデータに応じて、URLがさらにスクリプトを受信するように形成され、そのスクリプトがページ上のこの構成に最も適したエクスプロイトをレンダリングしました。 私の環境では、Javaアプレットでした。 同僚によると、参照によりダウンロードされたアプレットはこの脆弱性を使用しています。 「セカンダリ」ウイルスのコードとアプレットエクスポリト自体が利用可能です。



UPD5FFの kamentyレポート拡張機能。ページで定義および実行されたすべてのコードを表示できます。



All Articles