web-dev-qa-db-ja.com

マルウェアの作成者の特定

新しいマルウェアが出現したとき、人々はそれがどこから来たのか、その作者は誰であるのかを判断しようとすることができます。

セキュリティの専門家は、公開されている新しいマルウェアの作者をどのように特定しようとしていますか?どのような手法(リバースエンジニアリングなど)を利用できますか?

29
user3404735

マルウェアの作成者のスキルレベルに応じて、さまざまな手法があります。

  • 埋め込みメタデータ-コンパイルされたプログラムには、作成者に関する詳細を含めることができます。これは、正当なプログラムで最もよく見られ、Windowsのプロパティを見ると詳細画面に表示されます。名声を狙っている攻撃者は、これらのフィールドに詳細を特定する可能性があります
  • 偶発的な埋め込み-コンパイラには、使用されるコンパイラフラグの詳細が含まれることがよくあります。これには、ソースファイルへのパスが含まれる場合があります。ソースファイルが/users/evilbob/malware、邪悪なボブがそれを書いたとかなりよく推測できます。これらのインクルージョンをオフにする方法はありますが、誰もが時々間違いを犯します
  • 一般的なコード-マルウェアの作成者は他のプログラマーと同じであり、以前の作業からの有用なコードを再利用します。コンパイルされたコードのセクションが以前に発見されたコードのセクションと非常に密接に一致するため、同じソースコードがそれぞれに使用された可能性が高いように見える場合があります。その場合、2番目の作成者が最初の作成者からコードにアクセスできたか、または同じ人物である可能性があると推測できます。
  • 一般的なツールチェーン-開発者がVisual Studioを使用する傾向がある場合、GCCでコンパイルされたコードが表示されるのは予想外です。特定のパッカーを使用している場合、別のパッカーを使用しているのはおかしいでしょう。完璧ではありませんが、違いを示唆している可能性があります。
  • 一般的な手法-上記と同様に、コーダーはしばしば特定のコーディングパターンを持っています。人々がパターンを切り替える可能性は低いので、コンパイルされたコードが特定のコーディングスタイルで生成されなかった場合、おそらく別のスタイルを使用することが以前に知られている誰かによって作成されたものではない可能性があります。これは、インタプリタ言語でははるかに簡単です。たとえば、forループではなくwhileループを一貫して使用する方が、コンパイルされた各出力の違いを見つけるよりも簡単です(最新のコンパイラは、まったく同じ命令セットにそれらを)。
  • マルウェアの起源-それはどこから来たのですか?特定の言語のテキスト、または特定の背景を示唆するタイプミスはありますか? (例:colourは著者がアメリカ人ではないことを示唆しており、generaleはフランス語やイタリア語などのロマンス言語で書かれた人を示唆している可能性があります)

これらのどれもが単独で作者を決定するのに十分ではありませんが、結合すると、以前のマルウェア、または他の既知のコード(OSプロジェクトなど)を持つ一般的な作者を示唆する可能性があります。

49
Matthew

マシューの答えは素晴らしかった。他にもいくつかの方法があります。

  • それほど多くのマルウェア作成者がそれほど明るいわけではありません。たとえば、多くの実行可能ファイルをnotepadで開き、文字列データを検索できます。電子メールアドレス/サーバー名、ユーザー名、およびパスワードinsideプログラムを文字列で入力するだけの無数の作成者を見てきました。文字どおりメモ帳が表示されます。
  • 上記のステップを難読化した作成者によって作成されたマルウェアをリバースエンジニアリングします。
  • マルウェアが接続するアドレスを見つけ、その背後にいる人を調査します。それが多くのマシンに感染する特定の種類のマルウェアである場合、開発者はおそらく最初からそれを知っているでしょう。そうでない場合は、ソースまで追跡します。どこにでもデータの痕跡があります。
26
Mark Buffalo