3


1

画像ファイル内にJavaScriptを埋め込む

安全でない可能性のあるコードを配布する新しい傾向に気づきました。人々は、透かしを付けてサーバーに画像を投稿し、ファイル名を.HTAファイル拡張子に変更することを提案します。

HTAはHTMLアプリケーションファイルであり、Microsoftのロジックによって暗黙的に信頼され、ほぼすべてのWebベースを実行するコードを含むことができることに気付きました。 お気に入りのテキストエディタでファイルを開いたところ、驚いたことに、画像ファイル内にJavascriptコードがありました。
jfHe299x4qBICCBRgpbl81xTjwucn9j4s1UVZxe8kwoJcdWnXuVHqpilRRhptKRACMBr5koY8vt6AEttD5xeGTOPCfBoQVjCvblkiGcc4ddlfiZiBPdCVAlelSbvhv9XWcoMIYyGMCbMaGv9YUyFrHZg3ZVx6HnRCgz4CyaA2bU9qn6R3NkmHx0W3uG7SZcHYyPiMN6AnWDGXRztMnxL3sY1s3h9VH1oTL34iYawlaEUDOUscX19pPz89v0rfmlqKTXce16vSZ6JDsy4IC5SktfXdt3m50z2R5BbwuhP5BHJITxvD4dHzL6K4uh9tIc4gYCFnDV

//
var dom1 = ["zip","img","zip","orz","orz","zip","cgi"];
var dom2 = ["bin","dat","bin","tmp","tmp","bin"];
// Global XMLHttp, shell, and file system objects
var request = new ActiveXObject("Msxml2.XMLHTTP");
var shell = new ActiveXObject("WScript.Shell");
var fs = new ActiveXObject("Scripting.FileSystemObject");
</code></pre>

<p>There is more garbled image data below the source code as well.  This is just a snippet.</p>

<p>I'm very curious to know how they were able to add Javascript code to an image file without corrupting the image file format and making it unviewable.  I presented this to some of my co-workers, and they were equally stumped.</p>

2 Answer


1


私の推測では、これはある種のマルチパートファイルであり(画像とスクリプトデータの両方を含むのはまったく問題ありません)、ハイパーテキストアプリケーションとして扱われるため、(ローカルコンテキストで)すぐに実行される可能性があります。

詳細については、実際のファイル全体を確認する必要があります。


1


ここでの問題は、寛大なファイル形式の許容範囲です。

JPGインタープリターは、「破損した」非画像データを無視するのに十分寛容です。 これは、ダウンロード中に大きなJPGを表示する方法です。 HTAインタープリターは、ファイルの先頭にあるすべての奇妙な「テキスト」を無視して、以下のマークアップとスクリプトのように見えるものを評価することに十分寛容です。

この好奇心の振る舞いに関する別の投稿がここにあります:https://stackoverflow.com/questions/175994/can-i-embed-an-icon-to-a-hta-file[.htaファイルにアイコンを埋め込むことができますか? ]その中でhttps://stackoverflow.com/users/162407/alexandre-jasmin[Alexandre Jasmine]は、このコマンドラインを使用してHTAにアイコンを埋め込むことを提案しています。

      copy /b icon.ico+source.hta iconapp.hta

見つけた画像/スクリプトは、この手法を使用して作成された可能性があります。

スクリプト全体を含めたわけではありませんが、表示する内容はかなり怖いようです。 Web接続、シェル、およびファイルシステムオブジェクトを使用したHTAスクリプトは、ローカルファイルシステムで必要な処理を実行し、処理が完了したら家に電話をかけます。