desc(情報元のブックマーク数)

ついに、大御所松川さん現る!!!

マルウェア解析の現場から−01 | トレンドマイクロ セキュリティ ブログ (ウイルス解析担当者による Trend Micro Security Blog)

マルウェア解析の現場から-01 | トレンドマイクロ セキュリティブログ

先日は、草の根勉強会支援プログラムで、ウイルス解析本当にありがとうございました。

本当にためになって楽しい勉強会でした!

リージョナルトレンドラボでは、毎日たくさんのマルウェアの解析を行なっています。そのほとんどは自動解析システムにより人手を介さずに行われていますが、より詳細な動作を知る必要がある場合や深い分析が必要な場合は、解析エンジニアがリバースエンジニアリング的な手法を用いて解析しています。そして解析していると、エンジニアは人間ですから主観的に「面白い」と感じる瞬間があります。「面白い」と感じる対象は様々です。不正プログラムの動作、プログラムの作られ方、潜んでいるメッセージなどなど・・・。そこで本ブログのこのシリーズでは、日本のリージョナルトレンドラボで日々解析している中でエンジニアが「面白い」と感じた内容について、その内容が重大であるかどうかに関係なくご紹介していきます。「マルウェア解析」という一見難しそうに思えるものが少しでも身近に感じられ、マルウェアに対する注意が向上する一助になれば幸いです。

マルウェア解析の現場から-01 | トレンドマイクロ セキュリティブログ

クローズドな環境でも動作するような仕組みを作って泳がす。ふむふむ。乱数で発生したポートを開いて、悪者にPOSTメソッドで通知とか、、、手の込んだことするなぁ。

実環境では接続に失敗する状態でも、検証環境では通信が成功したように見せかけ、成功した後の動作を調べることができます。クローズドな環境でダミーのサーバを相手に通信させたり、OllyDbgなどのデバッガを利用して成功したあとの動作を強制的に実行させるのです。すると、ポート3128という固定値のポートに対して、POST /+7441.html というHTTPのPOSTリクエストを送信していることが分かりました。しかし、POSTというデータを送信するためのメソッドが使われているものの、送信されているデータはありません。これは何をやっているのだろう・・・? この「7441」という数字は何だろう・・・? 逆アセンブラであるIDAProを使ってこの「7441」という数字がどのように決められているのか調べてみると、その前段でrand関数を使ってランダムな数字が作られていることがわかります(図2 ランダムなポート番号の生成)。さらに、生成した値を使ってポートを開けていることも分かりました。つまり、このマルウェアはランダムにポートを開け、自分が開いたそのポートの番号を外部のホストへ通知しているのでした。

マルウェア解析の現場から-01 | トレンドマイクロ セキュリティブログ

ウイルスに感染した端末同士でP2P接続。そして身元を隠して通信させると・・・・・

検証環境上で2台のホストを用意してそれぞれにマルウェアを動作させます。もちろん、一台ではOllyDbgを使って接続先を自分が立てたダミーのホストになるよう強制的に変更します(図3 接続先を検証環境用に変更)。その結果、確かにマルウェア同士が通信していることが確認できました。一方のマルウェアがPOSTリクエストでポート番号を通知すると、もう一方のマルウェアがそのポート宛てにGETリクエストを送るのです(図5 通信シーケンス)。
■受け渡している内容はIPアドレス、総合すると・・・!?
さらに解析を進めていくと「面白い」ことが分かります。ポート番号通知を受け取った側では、接続元のIPアドレスを保存しておき、ポート番号通知のPOSTリクエストを受けた際にその応答として保存しているIPアドレスの情報を送信しているのです(図4 受信したIPアドレス情報)。つまり総合すると、マルウェア同士で自身のホストが通信できたホストのIPアドレスの情報を送信しあっているということになります。そしてこれらの通信の結果として、このマルウェアによるネットワークが構築されることになります。このようにプログラム同士が対等な立場で通信しあうことによって構築されるネットワークは、ピア・ツー・ピア(P2P)ネットワークであると言うことができるでしょう。

マルウェア解析の現場から-01 | トレンドマイクロ セキュリティブログ

screenshot