マルウェア(トロイの木馬)を初めて解析してみた
どうもこんにちは。よもぎです。
院試*1の足音が近づく日々ですが、いかがお過ごしでしょうか。 私はだめ、やばい
今回は 迷惑メールに添付されていたマルウェアを解析してみた ので、それについてのエントリになってます。 解析らしい解析はしていないけれども、初めてなので大目に見てね💫
迷惑メール、そしてトロイの木馬
こういうのが届きました
解雇される覚えはないので、迷惑メールだなぁとわかりました。そもそもですが、書かれている電話番号は有効ではありません。*2
M.doc.zip
が添付されていたので解凍してみると、M.doc.js
ファイルが出てきました。
ファイラーで拡張子を表示しない設定にしておくと、 M.doc
とだけ出てしまって、 ファイル名だけ見るとWordファイルに見えるので誤って開いてしまう ことを狙っているようです。
実行しないように気をつけて開いてみます。
中身をあなただけに少しお見せします
(ぼかし加工してます) こういう マルウェア*3は難読化されていることが多い のですが、今回もそんな感じでした。 ただ、今回の難読化の方法は比較的容易だったので、これなら私にも読めるのでは??という気持ちになりました。
よく見てみる
とりあえず整形
ここを使ったら割ときれいに整形してくれました。
復号する
あとは難読化を解読していくのですが、だいたい2つの方法が用いられていました
- 変数名・関数名が意味の無い文字列に変換される
- 配列リテラルとインデックス、文字列の連結を混ぜて読みにくくしている
1つ目はまあよくあること。*42つ目はどういうことなのかというと
['c' + 'o' + 'ns' + ['Mgu', 'AapM', 'tru'][2] + ['dlfg', 'hOh', 'ct', 'Gh1'][2] + ['Whi', 'jEey', 'or'][2]] // -> ['c' + 'o' + 'ns' + 'tru' + 'ct' + 'or'] // -> ['constructor']
あと、この解析を通じてJavaScriptの面白いなと思った仕様*5が、 メソッド呼び出しは連想配列の取得みたいな感じでできる ことです。
String.fromCharCode(65) // -> "A" String['fromCharCode'](65) // -> "A"
知らなかった(✽ ゚д゚ ✽)
変数名は復元できないので適当に val00
とかつけて、ちまちま直したらこんな感じになりました。
結局これどんなことをするの?
だいたいこんな感じの挙動になっているみたいです。
- google.comに繋いでみる。失敗したら5000ミリ秒待つ
- 悪意あるサイト*6から実行ファイルをHTTP GET
- 実行ファイルはバイナリとして
%TEMP%
以下に保存し実行される - 実行結果など何かしら送信してる?
いわゆる URSNIF
と呼ばれる 情報剽窃型のトロイの木馬 の一種のようです。
詳しい人はもっと知っている
詳しい人はもっと早くもっと色んなことを知っているみたいです。Twitterで見た。
これは私の体験談的な感じなので許して(2回目)
最近は迷惑メールばっかり見ているので迷惑メールの人になりつつあります。どうか救いを。