私はセキュリティ・リサーチャーとして、重要インフラや産業インフラを守るためには、知識を共有し、マルウェアの手口について常に最新の情報を得ることが重要だと考えている。
そこで、昨年ESETによってGreyEnergy Advanced Persistent Threat(APT)が公開されたとき、私は自分のリバースエンジニアリングのスキルを活かして、マルウェアの感染テクニックの1つを分析した。これは、被害者のネットワークにマルウェア(バックドア)をインストールさせる、悪意のあるMicrosoft Word文書(maldoc)を含むフィッシングメールでした。
本日私は、マルウェアがどのように動作するのか、maldocからカスタムパッカー、そして最終的なドロッパー(バックドア)に至るまで、包括的な分析を提供する研究論文を発表します。この調査は、私が2018年11月にブログ記事で発表したものよりも詳細な分析です。 そして、最も深い分析は、パッカー(それ自身の内部で別の実行可能ファイルを復号化し、解凍する実行可能ファイル)に対して行われる。
この記事では、真の機能を隠すためにパッカーが使用するテクニックの要約を提供し、私の研究論文「GreyEnergy」の全文をダウンロードするためのリンクを提供します:マルウェアをMaldocからバックドアまで分解する、包括的なリバースエンジニアリング分析。
GreyEnergy社のアンチ解析技術、疑われる "Packer "実行ファイルを隠す
誰かがGreyEnergyのフィッシング・メールに含まれるWord文書を開き、「コンテンツを有効にする」をクリックすると、悪質なコードが遠隔地からダウンロードされる。
ダウンロードされたファイルは、私が「パッカー」ではないかと疑った実行ファイルである。パッカーは、知的財産を保護するために合法的に使用されることもあるが、マルウェアを隠すために脅威行為者によって使用されることもある。
疑わしいパッカー実行ファイルを調査したところ、いくつかのアンチ解析テクニックを使って構築されていることがわかった:
ジャンクコード- 疑わしいパッカーのコードには何の影響もなく、リバースエンジニアを混乱させることを目的とした不必要なコード。私は、GreyEnergyには大量のジャンクコードが含まれていると判断した。
オーバーラップ命令- GreyEnergyは、オーバーラップ命令として機能するJMP命令を使用します。オーバーラップ命令では、同じバイト列が、実行を開始する正確なバイトによって異なる命令として解釈されます。
JMPベースの実行コード-疑わしいGreyEnergyパッカーの実行フローは、シーケンシャル命令ではなく、ほぼ完全にJMP命令の使用に基づいている。このため、ジャンクコードの海に隠れた真の実行ファイルを特定するのは非常に困難です。
さらに、疑われたパッカーのバイナリ・ファイルにはオーバーレイ・データが 含まれていた。 これは、実行可能な追加コンポーネントを含むファイルの末尾に付加されたデータで、実行時に復号化される。
エントロピー- これはファイルのランダム性の評価です。エントロピーの一つの尺度を使用し、0から8までのスケールで、7以上の結果は暗号化を示し、GreyEnergyのスコアは7.994です。これはオーバーレイデータが暗号化されていることを示す強い指標です。
動的解析でマルウェアを発見
マルウェアの上記の側面を評価した後、私はパッカーに対処しているのではないかという強い疑いを抱きましたが、確かな証拠が不足していました。私は調査をスピードアップするため、動的解析アプローチに切り替えることにしました。そして、疑わしいパッカー・ファイルのいくつかの興味深い属性を発見した:
ハードコードされたインポート- 疑惑のあるパッカーによって呼び出されたWinAPIは、PEインポートテーブルに含まれておらず、実行時にロードされ、難読化技術を使わずにmov命令を使ってスタックにプッシュされる。
文字列の上書き - 疑惑のパッカーは、文字列がメモリにロードされた後、すべての文字列をゼロで上書きする。
今までに、バイナリーがパッカーであることを強く示唆する複数の指標がある:
- 明らかに暗号化されたオーバーレイ
- アンチ・アナリシス・テクニック
- PEヘッダーの解析により手動で解決されるAPI
- コード内にハードコードされた文字列は、使用後に0x00で上書きされる。
オーバーレイへのアクセス- マルウェアは一連の手順で、オーバーレイの開始位置と自身の実行ファイルの正確なサイズを特定し、メモリ内に自身のための領域を確保する。私の分析では、マルウェアがオーバーレイの適切なオフセットを特定する方法を正確に明らかにしている。
復号アルゴリズム- マルウェアは悪意のあるコンポーネントを隠すためにカスタムアルゴリズムを使用します。復号化アルゴリズムを適用すると、データに実行可能ファイルが含まれていることは明らかです。しかし、認識されたパターンの間に予期しないバイトがいくつかあり、データがまだ完全ではないことを示しています。私は、データが何らかの方法で圧縮されているのではないかと疑った。
解凍アルゴリズム- 疑いはすぐに確信に変わり、解凍後、新しいバッファには有効なPEヘッダが含まれている。
オリジナルのエントリーポイント(OEP) - 次にパッカーは圧縮されていないバッファをポイントし、PEヘッダを解析し、すべてのセクションを再度反復します。オーバーレイデータにアクセスすると、2つ目のPEヘッダーが現れ、これが本当の悪意のあるコンポーネント(バックドア)で、被害者のシステムにインストールされるのを待っています。
解凍されたデータから、ドロッパーとバックドアという2つの特定のコンポーネントを特定することが可能になった。
疑わしいパッカーは、ドロッパーをファイルシステム内に格納することなく、メモリ内で実行する。このステップで、バイナリがパッカーであることが確認できます。なぜなら、パッカーの主な特徴をすべて示しているからです。
GreyEnergy - 積極的な防御が必要なステルス感染
私の分析によれば、GreyEnergyパッカーは堅牢で、リバースエンジニアリングのプロセスを大幅に遅らせることができる。使用されているテクニックは目新しいものではないが、使用されているツールと戦術の両方が巧妙に選択されている。脅威行為者がアンチフォレンジック技術を幅広く使用したことは、ステルス性を確保し、感染が気づかれないようにしようとしたことを裏付けている。
パッカーのリバース・エンジニアリングに関連するすべての詳細と、悪質なWord文書とドロッパーの私の分析を含む、私の完全なリサーチ・ペーパーをぜひダウンロードしてください。
マルウェアがいったんシステムに感染すると、いかにうまく偽装するかに基づいて、産業組織がGreyEnergy APTから身を守る最善の方法は、悪意のある電子メールや添付ファイルを見分ける方法を含め、電子メールによるフィッシング・キャンペーンの危険性について従業員を訓練することである。
さらに、重要インフラネットワークは、ネットワーク上に存在する脅威をプロアクティブに検出するために、専用のサイバーセキュリティシステムで常に監視されるべきである。
セキュリティ・コミュニティがGreyEnergyから身を守るための無料ツール
この分析の直接的な成果として、私はこのマルウェアを分析するためのツールを開発した。そのツールとは GreyEnergy YaraモジュールYaraモジュールは、Yaraエンジンでコンパイルするための高性能コードである。これは、Yaraによって処理されるファイルがGreyEnergyパッカーであるかどうかを決定する新しいキーワードを追加します。
このツールは、以前に出版された GreyEnergy Unpacker(ドロッパーとバックドアの両方を自動的に解凍し、ディスクに展開するPythonスクリプト)と組み合わせたこのツールは、この論文で説明したリバースエンジニアリングの作業を他のセキュリティアナリストに省かせることができます。
これらのツールが、私の発見とともに、GreyEnergyの分析を促進し、将来、セキュリティ・コミュニティが重要インフラ・システムをよりよく守るのに役立つことを願っている。