ランサムウェアWin32 / Nymaim-難読化記録

先月、 ホームキャンペーンのマルウェア配布キャンペーンについて書きました。 長い間、攻撃者はDarkeechとして知られる悪意のあるApacheモジュール(ESETによってLinux / Chaproとして検出された)を使用して、Apache LinuxベースのWebサーバーを侵害しました。 このコードは、WebサイトユーザーをBlackhole Exploit Kitにリダイレクトするために使用されました。 攻撃の分析中、ペイロードはWin32 / Nymaimランサムウェアファミリであることが判明しました。 この分析では、この悪意のあるプログラムの技術的特徴と、ユーザーのコンピューターにインストールする方法に焦点を当てています。







感染症



ユーザーがNymaimに感染する方法を次の図に示します。 前述したように、ユーザーが侵害されたWebサーバーにアクセスして、悪意のあるコードを含むWebページが配信されます。 Nymaimの場合、そのようなリソースへの訪問の結果は、ロックされたユーザーのコンピューターになります。 有名なPony Loaderダウンローダー(ESETによりWin32 / Fareitとして検出されます)は、Nymaimのメインコードをロードするために使用されます。







実行可能ファイルの明らかな正当性を維持するために、Fareitにはデジタル署名情報が提供されています。







サンプルのこの属性Fareitは、分析に必要なサンプルをグループ化する機会を与えてくれました。 それらを分析すると、ドメインcatch-cdn.comがこの悪意のあるコードによって使用され、Nymaimドロッパーが抽出され、その後侵入先のコンピューターにインストールされたことがわかりました。 同じ名前のファイル6.exeのロードを観察しました。異なる時間間隔で、ドロッパーWin32 / Sirefef(別名ZeroAccess)、Win32 / Urausy(Win32 / LockScreen)、Win32 / Nymaimでした。 次の図は、この静的URLでダウンロードされたマルウェアの配布のタイムラインを示しています。







これらの悪意のあるプログラムファミリがサーバー上で変更されたアルゴリズムは、完全には明らかではありません。 7月前半にUrausyのサンプルがダウンロードできるようになりました。 Sirefefは8月上旬に登場し、Nymaimは一定期間中定期的に登場しました。



技術仕様



Win32 / Nymaim感染プロセスは2つの段階に分けることができます。 最初の段階で、ダウンローダーはハードワイヤードIPアドレスのリストを参照してNymaimの本体をダウンロードしようとします。 ダウンロードが完了すると、このコードはファイルの名前を任意の名前に変更します。 これらの各段階で、ランサムウェアはいくつかの一般的な方法を使用して分析を妨害します。



そのような方法の1つは、制御フローの難読化です。 悪意のあるコードは、コールスタックを手動で変更して、制御を目的の機能に移し、静的分析中の機能間の真の遷移を隠します。







上記のスクリーンショットでは、2つの難読化方法が強調表示されています。 1つは、渡されたパラメーターに応じて、親関数のスタック上の値を変更する関数を呼び出すことです。 このような方法については、以下で詳しく説明します。







関数に渡される引数(0x34、0x35、0x36)に応じて、スタックの内容はレジスタの1つで変更されます。これは、単純なプッシュregコマンドと同等です。 たとえば、引数0x34の場合、push ecxを取得します。



2番目の難読化方法は、以下の関数で使用され、呼び出された関数の実際のアドレスを隠すことを目的としています。 関数に渡された引数は、別の関数を呼び出すときにオフセットとして使用されます。つまり、必要なアドレスを計算するための定数として使用されます。







このコードからわかるように、関数は引数として渡された2つの定数を使用して、XORおよびADD操作を使用して必要なオフセットを計算します。 次に、この操作の結果がスタックに保存され、retn関数が制御を呼び出し側関数に転送するために使用するアドレスの値が変更されます。 したがって、新しい関数が呼び出されます。







Nymaimで使用される別のタイプの難読化は、Win32 API関数の呼び出しを指します。 悪意のあるコードがDLLから必要な関数を呼び出す必要がある場合、暗号化されたデータセクションからこのDLLのベースアドレスを読み取ります。 関数のアドレスは、これらの関数の名前の事前に準備されたハッシュから計算されます。 以下は、関数名のハッシュを計算する関数のコードです。 次に、比較に使用されます。







関数のアドレスが見つかると、メモリに保存され、ジャンプ命令を使用してコード内のさまざまな場所で使用されます。 もう1つの機能は、APIから戻るときに、実行のフローが悪意のあるコードではなく、ntdll.dllのEBXを呼び出す命令に移動するという事実です。 API呼び出しの直前に、Nymaimはスタックを変更して、APIを終了した後、実行スレッドがntdll.dllに切り替わり、EBXが実際の戻りアドレスを含むようにします。 より明確に、このプロセスは下の図に示されています。







このような操作により、Nymaimは、特にステップごとの実行(トレース)でデバッグをより困難にします。 スタックが修正された戻りアドレスは、「関数から戻る前に」関数がデバッガーで実行されるのを防ぎます。



Nymaimは文字列暗号化を使用します。 復号化関数は次のようになります。







実行の第2段階では、Win32 / Nymaimは同様の難読化方法を使用しますが、画面の再起動とロック後の生存を確保するためにコードの機能が拡張されています。 悪意のあるコードは、ソフトウェア\ Microsoft \ Windows NT \ CurrentVersion \ Winlogon \ shellに自分自身を登録することにより、自動起動の通常の方法を使用します。



分析の結果、状況によっては、Win32 / Nymaimが実行の2番目の段階で、侵入先のコンピューターに別の脅威、つまりWin32 / Sirefefをインストールすることがわかりました。 さらに、将来、Nymaimは他のトロイの木馬をコンピューターにダウンロードできるようになります。



Nymaimの主なタスクは、コンピューターをロックすることです。 これを行うために、ロックに関する情報を含むHTMLページがロードされます。 この柔軟性により、攻撃者は、場所やインストールされているソフトウェア(メディアファイルやトレントクライアントなど)に応じて、さまざまな威圧的なページを表示できます。 その結果、ロック画面情報はユーザーにとって非常に信頼できるものになります。 これを行うために、ユーザーシステムは次の実行中のプロセスを検索します。



さらに、Nymaimは、拡張子が.doc、.xls、.psd、.bmp、.jpg、.mpg、.mov、.rtf、.fla、および.mp3のファイルを検索します。 収集された情報はcompdata.jsファイルに保存され、後でブロックHTMLコードに含まれます。 このようなファイルの例を以下に示します。







ロックに使用されるサポートファイル、つまりHTMLコード、スクリプト、および画面イメージファイルは、「Documents and Settings \ [user_name] \ Local Settings \ Temp」ディレクトリ(Windows XP)に保存されます。 システムをロックするために、ランサムウェアは画面全体のサイズのウィンドウを作成し、2つの特別なスレッドを生成します。 そのうちの1つは、実行中のプロセスを追跡し、標準のtaskmgr.exeプロセスマネージャーが起動すると完了します。 2番目のスレッドは、アクティブな「悪意のある」ブロックする可能性のある新しいデスクトップの出現を監視し、表示された場合は元に戻ります。 この動作は AVASTアナリストが説明したUrausyランサムウェアの動作に似ています。 以下は、米国在住のユーザーの表紙です。







ランサムウェアは、ボットIDを送信することにより、リモートサーバーと対話します。 サーバーは、補助操作を実行するための指示を送り返す場合があります。 ボットIDは、値HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Cryptography \ MachineGuidに基づいて生成されます 。 このIDのボットが既にサーバーデータベースにある場合、サーバーはブロッキングページをボットに送信しない場合があります。



おわりに



当社が追跡する「ホームキャンペーン」は、2013年3月からWin32 / Nymaimランサムウェアを配信しています。 調査で指摘したように、攻撃者は他の悪意のあるコードファミリを使用してユーザーを侵害します。 以下は、このようなキャンペーンでユーザーのシステムを侵害する段階を示す図です。










All Articles