
レポートは、近年のGreyEnergy Groupの活動に関する情報を提供します。 攻撃やマルウェアの開発はどの州にも起因しないことに注意してください。 私たちの用語によると、「ARTグループ」は一連の技術指標です。
はじめに
2015年12月、BlackEnergyグループは、BlackEnergyおよびKillDiskファミリーのマルウェアを使用して、ウクライナのエネルギー施設を攻撃しました。 これは、BlackEnergyソフトウェアの実際の状態での最後の既知のインシデントです。 この攻撃の後、グループは少なくとも2つのサブグループ、TeleBotsとGreyEnergyに変わりました。
TeleBotsは、ネットワークコンピューター攻撃(CNA)によるサイバー破壊を専門としています。 このグループは、次のような破壊的な攻撃をカウントしています。
- 2016年12月にWindowsおよびLinux用のKillDiskの更新バージョンを使用した一連の攻撃 。
- 2017年6月のNotPetyaの流行は、MEDoc会計ソフトウェアの助けを借りて実装された複雑なバックドアの助けを借りて実装されました。
- 2017年10月にBadRabbitエンコーダーを使用した攻撃。
ESETの専門家は、GreyEnergyグループの活動を数年間監視しています。 グループは、同じ名前の一意のマルウェアファミリを使用します。 MalvariアーキテクチャはBlackEnergyファミリーに似ています。
プログラムの概念的な類似性に加えて、GreyEnergyオペレーターがTeleBotsグループと密接に協力していることを示す他のリンクがあります。 特に、GreyEnergyグループは2016年12月にNotPetyaに似たワームを起動し、このプログラムのより高度なバージョンが2017年6月にTeleBots攻撃で登場しました。
GreyEnergyとTeleBotsの目標が異なることは注目に値します。GreyEnergyは主に重要なインフラストラクチャ企業が所有する産業用ネットワークに関心があり、TeleBotsとは異なり、ウクライナのオブジェクトに限定されません。
2015年の終わりに、ポーランドのエネルギー会社を標的としたGreyEnergyマルウェアに初めて気付きました。 ただし、GreyEnergyはウクライナのターゲットも攻撃します。 このグループは、エネルギー部門、輸送インフラ、その他の高ランクの施設に焦点を当てています。 少なくとも1つのBlackEnergyターゲット組織がGreyEnergyによって攻撃されています。 GreyEnergyの最後の使用は、2018年半ばに記録されました。
悪意のあるプログラムGreyEnergyはモジュラーアーキテクチャを備えていますが、Industroyerとは異なり、その構造には産業用制御システム(ICS)に影響を与える可能性のあるモジュールは見られませんでした。 ただし、GreyEnergyオペレーターは、ワークフローを中断し、サイバー攻撃の痕跡を隠すために、少なくとも1回はバイパーをディスクに展開しました。
私たちの調査で見つかった最も興味深い詳細の1つは、GreyEnergyサンプルの1つが有効なデジタル証明書で署名されていることです。 おそらく、この証明書は台湾のICS機器メーカーから盗まれました。 この点で、グループGreyEnergyはStuxnetの著者の足跡をたどりました。
GreyEnergy:作業方法
GreyEnergyグループの活動の観察中、主に2つの初期感染ベクターが見られました。 1つ目は、被害者自身のサーバーにWebサービスが配置されている組織に関連しています。 パブリックWebサービスが内部ネットワークに接続されたサーバーで実行されている場合、攻撃者はネットワークに侵入するためにそれを侵害しようとします。 2番目のベクトルは、悪意のある電子メールの添付ファイルを使用したフィッシングを標的としています。
悪意のあるドキュメントがGreyEnergy miniをダンプします。これは、管理者権限を必要としない最初の段階の軽量なバックドアです。 GreyEnergy miniを使用してコンピューターが侵害された後、攻撃者はネットワークマップを作成し、パスワードを収集してドメイン管理者権限を取得します。 これらの特権により、攻撃者はネットワーク全体を制御できます。 GreyEnergyグループは、かなり標準的なツールを使用してこれらのタスクを実行します:NmapおよびMimikatz。
ネットワークの最初の調査の後、攻撃者はメインのGreyEnergyであるフラッグシップバックドアを展開できます。 悪意のあるソフトウェアには管理者権限が必要です。これは、メインのGreyEnergyの展開フェーズの前に取得する必要があります。 調査によると、GreyEnergyオペレーターは、主に2つのタイプのエンドポイントにメインバックドアをインストールします。ICS環境を管理するために使用される長時間実行サーバーとワークステーションです。
C&Cサーバーとの通信を隠すために、攻撃者は侵害されたネットワークの内部サーバーに追加のソフトウェアをインストールして、各サーバーがプロキシとして機能するようにすることができます。 このようなプロキシC&Cは、ネットワーク内の感染ホストからの要求をインターネット上の外部C&Cサーバーにリダイレクトします。 いくつかのネットワークコンピューターと内部サーバーとの「通信」は、外部サーバーほど疑わしくありません。 この方法は、侵害されたネットワークのさまざまなセグメントでマルウェアを管理するためにも使用できます。 プロキシCおよびCとして内部サーバーを使用する同様の方法がDuqu 2.0 ARTキャンペーンで観察されました 。
侵入先の組織に内部ネットワークに接続されたパブリックWebサーバーがある場合、攻撃者はこれらのサーバーに「バックアップ」バックドアを展開できます。 これらは、メインのバックドアが発見および削除された場合にネットワークへのアクセスを復元するために使用されます。
GreyEnergyマルウェア関連のすべてのC&CサーバーはTorを使用します。

図1. GreyEnergyグループが使用する2つのネットワーク侵害シナリオの簡略図
グレイエナジーミニ
GreyEnergy miniは第一段階の軽量バックドアで、攻撃者が侵入先のコンピューターを評価し、ネットワーク上の最初のブリッジヘッドを提供するために使用しました。 通常、GreyEnergy miniは、フィッシングメールで配布された悪意のあるドキュメントを使用してダウンロードされました。 GreyEnergy miniはFELIXROOTとしても知られています 。
2017年9月、ESETは悪意のあるマクロを含むウクライナ語のMicrosoft文書を検出しました。 餌の文書は、犠牲者がマクロをオンにしてそれを記入するように促すインタラクティブなフォームを模倣しています。

図2. 2017年9月にGreyEnergyが使用したベイトドキュメント
マクロをオンにした後、そのコードはリモートサーバーからバイナリファイルをダウンロードして実行しようとします。

図3.悪意のあるVBAマクロ(ESETによって追加されたコメント)
興味深いことに、外部画像につながるリンクがドキュメント本文に埋め込まれています。 ドキュメントを開いた後、彼はこの画像をアップロードしようとします-これにより、攻撃者はファイルが開いていることを知ります。 この方法を使用すると、悪意のあるマクロを含むターゲットと、ドキュメントを開いたばかりのターゲットを追跡できます。

図4.悪意のあるドキュメントの外部「トラッカー」図面へのリンク
ダウンロードされた実行可能ファイルは、GreyEnergyミニドロッパーです。 ドロッパーは、ランダムに生成されたGUIDを名前として使用して、悪意のあるDLLを
%APPDATA%
フォルダーに
%APPDATA%
ます。 さらに、ドロッパーは、コマンドラインへの引数としてDLLへのパスを使用して
rundll32.exe
を実行するエントリを含む[スタート]メニューの[
]フォルダーに、空のファイル名で
.LNK
ファイルを作成します。 これは、GreyEnergyミニ永続化メソッドです。
リセットDLLはGreyEnergy miniのメインモジュールです。 Microsoft Windowsに関連する正当なファイルに偽装されています。

図5. GreyEnergyミニバックドアDLLが正当なWindows DLLになりすます
侵害されたコンピューターを評価するために、マルウェアは可能な限り多くの情報を収集し、データをC&Cに送信します。 データは、WMIクエリ言語(WQL)とWindowsレジストリクエリを使用して収集されます。 次のデータが収集されます。
- コンピューター名
- サービスパックのバージョンを含むオペレーティングシステムのバージョン
- デフォルト言語
- ユーザー名
- 現在のWindowsユーザー特権、昇格、UACレベル
- プロキシ設定
- コンピューター情報(メーカー、モデル、システムのタイプ)
- タイムゾーン
- インストールされているセキュリティソフトウェア(ウイルス対策およびファイアウォール)
- ユーザーとドメインのリスト
- レジストリから取得したインストール済みプログラムのリスト
- ネットワーク情報(IPアドレス、DHCPサーバーなど)
- 実行中のプロセスのリスト
悪意のあるソフトウェアは、C&Cサーバーからコマンドを受け取ります。 次のコマンドのサポートが提供されています(コマンドIDとその意味は以下のとおりです)。
- コンピュータ情報を収集する
- 一時ファイルフォルダーから実行可能ファイルをダウンロードして実行します
- シェルコマンドを実行する
- 侵害されたコンピューターから自分自身を削除する
- 一時ファイルフォルダーから.BATファイルをダウンロードして実行します
- ファイルをローカルディスクにダウンロードする
- ファイルをアップロード
JSON形式のマルウェア構成はバイナリファイル内に埋め込まれ、カスタムアルゴリズムを使用して暗号化されます。 暗号化されたデータの先頭には4バイトが含まれています。 これらのバイトは、残りのデータを復号化するXOR操作のキーとして使用されます。 マルウェアが使用するほとんどの行は、このアルゴリズムを使用して暗号化されます。

図6.復号化の前後の組み込みGreyEnergyミニ構成
私たちが見たすべてのGreyEnergyミニ構成には、C&Cとして使用されるHTTPSおよびHTTPサーバーが含まれています。 これにより、攻撃者はHTTPS接続がネットワークまたはファイアウォールの構成でサポートされていないターゲットでHTTPに切り替えることができます。
GreyEnergy miniは、他の悪意のあるGreyEnergyファミリーのコードとコードが類似しています。 これに加えて、GreyEnergy miniとメインのGreyEnergyバックドアの両方が同じC&Cサーバーを使用します。
メインバックドアGreyEnergy
GreyEnergyは、このサイバーグループの主要なバックドアです。 ここで分析されるマルウェアサンプルはCで記述され、Visual Studioを使用してコンパイルされますが、Cランタイムライブラリ(CRT)の標準機能は使用されません。 パックされたサンプルには、偽のPEタイムスタンプが含まれている場合がありますが、アンパック後、タイムスタンプはリセットされます(1970年1月1日)。

図7.展開されたGreyEnergyサンプルのPEタイムスタンプ
興味深いことに、分析された最初のGreyEnergyサンプルの1つは、アドバンテックが所有する証明書で署名されました。 これは、産業およびIoT用の機器を製造する台湾の会社です。 同じ証明書が悪意のない純粋なAdvantechソフトウェアの署名に使用されていることがわかったため、盗まれたと考えています。 検出されたサンプルにはデジタル署名がないことに注意してください。これは、証明書の有効期限が切れたときに署名が無効になったことを意味します。

図8. GreyEnergyマルウェアサンプルへの署名に使用されるアドバンテックの証明書
証明書データは次のとおりです。
Serial Number: 15:f4:8f:98:c5:79:41:00:6f:4c:9a:63:9b:f3:c1:cc
Validity:
Not Before: Feb 10 00:00:00 2014 GMT
Not After : Feb 26 23:59:59 2017 GMT
SHA1 Fingerprint=97:53:AD:54:DF:6B:D6:73:E0:6C:00:36:3D:34:6A:06:00:7A:0A:9B
GreyEnergyは通常、メモリ内とDLLサービスの永続性の2つのモードで展開されることに気付きました。 最初のモードは、インストールで安定性を確保するための特別な手段が必要でないことを攻撃者が確信している場合に使用されます(たとえば、稼働時間が長いサーバー上)。 2番目のモードは、マルウェアが再起動に耐える必要がある場合です。
メモリーオンリーモード
このモードでは、攻撃者はDLLファイルを特定のフォルダーに配置し、
rundll32.exe
Windowsアプリケーションを使用して実行します。 攻撃者はWindows Sysinternals PsExecツールをローカルで使用して、可能な限り最高の特権(
NT AUTHORITY\SYSTEM
)で
rundll32.exe
を実行することを確認しました。
以下は、メモリ内でのみGreyEnergyの初期実行フェーズで使用されるコマンドラインです。
cmd.exe /c "C:\Windows\System32\rundll32.exe "C:\Sun\Thumbs.db",#1 CAIAABBmAAAgAAAA8GFGvkHVGDtGRqcl3Z3nYJ9aXCm7TVZX8klEdjacOSU="
この例では、
Thumbs.db
はGreyEnergy DLLファイルで、
rundll32.exe
プロセスによって最初のシーケンス番号を持つ関数が呼び出されます。 指定されたコマンドラインの例には、base64で暗号化された一連のバイトが含まれています。このバイトは、その後AES-256キーとして使用され、小さなスタブを復号化します。 その後、「スタブ」内のコードは
svchost.exe
プロセスの新しいコピーを開始し、GreyEnergyペイロードを注入します。 最後の段階で、
rundll32.exe
GreyEnergyプロセスが終了し、悪意のあるDLLファイルはディスクからの削除から保護されます。 したがって、GreyEnergyペイロードは、
svchost.exe
プロセスメモリのコンテキストにのみ存在します。
どうやら、作者は、コマンドラインにキーがないと「スタブ」とペイロードを解読できないような方法でマルウェアを開発することを意図していたようです。

図9.メモリ専用モードのGreyEnergy DLL内部名
「メモリ内のみ」モードを使用する場合、対応する
svchost.exe
プロセスを完了するか、コンピューターを再起動するだけで、GreyEnergyを削除できます。
DLLサービスの永続性
この方法を使用するには、オペレーターはGreyEnergyドロッパーをデプロイします。これは管理者として実行する必要があります。
ServiceDLL
レジストリキーを使用すると、
svchost.exe
プロセスのコンテキストでサービスDLLを開始できます。 Microsoftによって文書化されていない機能。 ただし、Confickerワームを含む多くのマルウェアファミリで使用されています。
DLLサービスの永続性を確保するために、ドロッパーは既存のサービスを検索し、新しい
ServiceDLL
レジストリキーを追加します。 この方法ではシステム障害が発生する可能性があるため、ドロッパーは最初に一連のチェックを実行して、多くの要件を満たすサービスを選択します。
まず、ドロッパーは次のWQLクエリを実行することにより現在停止しているすべてのWindowsサービスを見つけます。
Select * from Win32_Service where PathName Like '%%svchost%%' and State = 'Stopped'
次の条件がリクエストに追加される場合があります。
-
and StartMode = 'Disabled'
またはand StartMode = 'Manual'
-
and ServiceType = 'Own Process'
またはand ServiceType = 'Share Process'
次に、ドロッパーは目的のサービスの選択を試み、結果を確認し、次の条件を満たすものをスキップします。
- サービス名に
winmgmt
(Windows Management Instrumentation)またはBITS
(Background Intelligent Transfer Service)が含まれています - ドロッパーはサービスまたはレジストリキーにアクセスできません
-
DependOnService
レジストリDependOnService
空でDependOnService
ません -
ServiceDll
またはImagePath
レジストリ値が存在しません - サービスコマンドラインには、次のいずれかの単語が含まれます。
-
DcomLaunch
、LocalServiceNetworkRestricted
、LocalServiceNoNetwork
、LocalServicePeerNet
、LocalSystemNetworkRestricted
、NetworkServiceNetworkRestricted
、secsvcs
、wcssvc
これらの条件を満たすサービスが検出されると、マルウェアプログラムはDLLファイルをWindows
system32
ディレクトリにダンプし、
ServiceDLL
レジストリキーを書き込みます。 DLL名には、最後にランダムに生成された4つの文字と
svc.dll
または
srv.dll
れます。 さらに、ドロッパーは、既存の
user32.dll
ファイルからコピーして、ファイルの時間メタデータを偽装します。
GreyEnergyドロッパーの最新バージョンは、32ビットと64ビットの両方のOSをサポートしています。

図10. DLLサービス永続化メソッドを介してデプロイされたDLL GreyEnergy DLL
ドロッパーは、悪意のあるDLLを正当なファイルとして偽装する興味深い方法を使用します。 特に、ドロッパーは、問題のWindowsサービスに属する実行可能ファイルの詳細な説明を含むVERSIONINFOリソースをコピーし、このデータを悪意のあるDLLに書き込みます。 この目的のために、Windows API関数
BeginUpdateResource
/
UpdateResource
/
EndUpdateResource
ます。 最近のバージョンでは、これらの関数はAPIから呼び出されません。 それらのコードは、偽のVERSIONINFOリソースなしでDLLファイルをディスクにフラッシュしないように、悪意のあるプログラム自体に実装されています。 おそらく、これにより特定のセキュリティ製品の検出が回避されます。 同じドロッパーは、異なるコンピューター上で異なる説明を持つ悪意のあるDLLファイルを作成できます。 この方法で展開された各パターンには、一意のハッシュがあります。
悪意のあるプログラムが既にシステムに存在する場合、ドロッパーは名前付きパイプを使用してプログラムを更新できます。
最後の段階で、ドロッパーはファイルをゼロで上書きし、ディスクから削除することにより自己削除します。 ドロッパーはUSNマガジンもクリアします。 アクションは、次のシェルコマンドを介して実行されます。
timeout 2 > nul & fsutil file setzerodata offset=0 length=%DROPPER_FILESIZE% "%DROPPER_PATH%" & timeout 2 & cmd /c del /F /Q "%DROPPER_PATH%" & fsutil usn deletejournal /D %DROPPER_DRIVE%
構成と通信
オペレーターが選択した持続モードは、悪意のあるプログラムの機能に影響を与えません。これは両方の方法で変更されません。
悪意のあるソフトウェアには、AES-256アルゴリズムを使用して暗号化され、LZNT1を使用して圧縮された埋め込み構成が含まれています。
マルチコンポーネントMIME形式は、埋め込まれたマルウェア構成に使用されます。 作成者は、この形式に対して独自のパーサーを実装しませんでした。 代わりに、 IMimeMessageおよびIMimeBody COMインターフェイスを使用します。 興味深いことに、Microsoftのドキュメントでは、これらのインターフェイスを使用しないことを推奨しています。

図11.埋め込まれたGreyEnergy構成の例
外部構成では、同一のMIME形式が使用されます。 ただし、マルウェアはさまざまな方法で外部構成を暗号化します。 Data Protection Application Programming Interface(DPAPI)、特にWindows API関数
CryptProtectData
および
CryptUnprotectData
ます。 外部構成は次のパス
C:\ProgramData\Microsoft\Windows\%GUID%
保存されます
C:\ProgramData\Microsoft\Windows\%GUID%
、
%GUID%
はC:ドライブボリュームのシリアル番号に基づいてランダムに生成されたGUID値です。
一部のGreyEnergyサンプルには、ビット難読化バージョンの構成が含まれています。 特に、このような構成の[
Type
フィールドには、オプション名の代わりに文字が含まれています。

図12.難読化されたGreyEnergy構成の例
構成には次の値が含まれる場合があります。

悪意のあるプログラムは、試行に失敗した回数が
MaxAttempts
の値を超え、最後に成功した接続が
Lifetime
日より前の場合、感染したシステムから自身を削除します。
C&Cとの通信は通常HTTPSを介して行われます。 ただし、場合によってはHTTPも使用されます。 同じMIME形式がHTTP要求にカプセル化されます。 AES-256およびRSA-2048を使用してデータが暗号化されていることに注意してください。

図13. WiresharkでキャプチャされたHTTP通信を介したGreyEnergy
HTTPを使用している場合、ネットワークトラフィックを分析することにより、ネットワーク上の侵害されたマシンを簡単に特定できます。 私たちが調査したマルウェアのサンプルでは、常に次のハードコードされたユーザーエージェントを使用しました。
-
Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko
-
Mozilla/5.0 (compatible, MSIE 11, Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko
GreyEnergyオペレーターが感染したコンピューターを特定できるように、マルウェアは次のWQLクエリの結果をC&Cサーバーに送信します。
-
SELECT Caption, Version, CSName, ProductType, CurrentTimeZone, LocalDateTime, OSLanguage, OSType FROM Win32_OperatingSystem
-
SELECT MACAddress, IPAddress, IPSubnet, DHCPEnabled, DHCPServer, DNSDomain FROM Win32_NetworkAdapterConfiguration WHERE MACAddress IS NOT NULL
C&Cサーバーの応答は暗号化されますが、復号化後は、同じMIME形式に次の値が含まれます。

GreyEnergyは、独自のPEファイルローダーを使用して、追加のモジュールとペイロードをメモリにロードします。
GreyEnergyモジュール
多くの複雑な脅威と同様に、GreyEnergyマルウェアにはモジュール式のアーキテクチャがあります。 追加のモジュールを追加することにより、その機能を拡張できます。 GreyEnergyモジュールは、最初のシーケンス番号で関数を呼び出すことにより実行されるDLLファイルです。 メインのGreyEnergyモジュールを含む各モジュールは、さまざまなパラメーターを持つテキストコマンドを受け入れます。
GreyEnergyオペレーターは、すべてのモジュールを侵害されたマシンにすぐに送信しません。 原則として、悪意のあるプログラムは特定のタスクを実行するために必要なモジュールをダウンロードして実行します。
次のGreyEnergyモジュールを認識しています。
remoteprocessexec
バイナリREファイルをリモートプロセスに挿入します
info
システム情報、イベントログ、SHA-256マルウェアを収集します
file
ファイルシステム操作
ショット-スクリーンショットを
sshot
ます
keylogger
キーストロークを傍受します
passwords
-さまざまなアプリケーションに保存されているパスワードを収集します
mimikatz
-Windows資格情報の収集に使用される
mimikatz
ツール
plink
-SSHトンネルの作成に使用される
plink
ソフトウェア
3proxy
プロキシの作成に使用される
3proxy
ソフトウェア
remoteprocessexec
モジュールにより、攻撃者は既存のプロセスのコンテキストで任意のバイナリファイルを実行できます。 たとえば、MimikatzまたはポートスキャナーをWindowsエクスプローラーのコンテキストでディスクにドロップせずに実行できます。 標準出力およびプロセススレッドとプロセス終了をリダイレクトするために、モジュールは5つのWindows API関数をインターセプトします。

図14. remoteprocessexecによってキャプチャされたWindows API関数
ダンプされたGreyEnergy DLLは感染した各マシンに固有であるため、攻撃者は情報モジュールを使用してSHA-256ハッシュを収集できます。 ハッシュを利用できるため、VirusTotalなどのパブリックWebサービスにファイルがアップロードされたかどうかを追跡できます。
リバースプロテクションと反犯罪法
GreyEnergyは、いくつかの方法を使用して分析を複雑にします。 たとえば、マルウェアプログラムは文字列を暗号化します。 一部のオプションでは、GreyEnergy miniと同じアルゴリズムが使用されます。
ただし、ほとんどのGreyEnergyサンプルには異なる暗号化アルゴリズムがあります。 特に、暗号化されたblobの最初の4バイトは、XOR操作のキーとして使用されません。 代わりに、擬似乱数生成アルゴリズム( Mersenne Whirlwind )の初期番号を初期化するために使用され、生成された4バイトがキーになります。 プレーンテキストの文字列を含むメモリバッファが解放される前に、マルウェアはバッファをゼロで上書きします。

図15.逆コンパイルされたGreyEnergy文字列デコード機能コード
悪意のあるプログラムは、メモリにロードされた各バイナリPEファイルのインポートテーブル内の
DeleteFileA
および
DeleteFileW
インターセプトします。 フックは、これらの機能を、ファイルを安全に消去する機能に置き換えます。 特に、ファイルはディスクから削除される前にゼロで上書きされます。 各ペイロードまたはプラグインは、各モジュールに実装する必要なく、このような関数を使用します。

図16. DeleteFileAおよびDeleteFileWをインターセプトするルーチンの逆コンパイルされたコード
ツール
攻撃者は、被害者の内部ネットワークをマッピングするための主要なツールとしてNmapポートスキャナーを使用しました。 さらに、Nmapを使用できない軽量のカスタムポートスキャナーの使用を確認しました。

図17.カスタムGreyEnergyグループポートスキャナーのコンソール出力
攻撃者はSysInternals PsExecやWinExeなどの正当なツールを積極的に使用して、侵害されたネットワーク内の水平移動を行います。 WinExeのオープンソースアナログであるWinExeツールは、たとえば侵害されたLinux WebサーバーなどのLinuxデバイスから制御できます。
これらのツールに加えて、攻撃者がPowerShellスクリプトを使用することは注目に値します。
Webサーバーのバックドア
前述のとおり、GreyEnergyグループは、インターネットからアクセス可能な場合、追加のバックドアをWebサーバーに展開します。 この目的のために、攻撃者はPHPで記述されたバックドアを使用していることに気付きました。 彼らは、公的にアクセス可能なPHP WebシェルWSO webshellおよびc99shellを使用します。
攻撃者は、Webサーバー上の既存のPHPスクリプトを変更したり、新しいスクリプトを展開したりできます。 実際のバックドアPHPコードは、通常、いくつかのレベルの難読化と暗号化を隠します。

図18. GreyEnergyグループPHPバックドアの難読化されたコード
最後のレベルのコードは、ストリーム暗号化によって保護されています。 この暗号のキー生成は、HTTP要求を通じて攻撃者から提供されたCookie値の文字列に基づいています。 このような各PHPバックドアは、個別のキーで暗号化されます。

図19. PHPバックドアコードがデコードする最後のレベル
難読化手法は、分析を防ぐためだけでなく、他のサイバーグループがこのようなPHPバックドアを使用できないようにするために使用されます。
プロキシC&C(トリリン)
前述したように、攻撃者は内部サーバーをC&Cプロキシとして使用できます。
攻撃者はC&Cプロキシのチェーンを作成し、最初のそのようなサーバーがネットワークトラフィックを次のネットワークにリダイレクトできるなど、インターネット上の最終的な宛先に到達するまで続きます。
攻撃者はさまざまな方法を使用して、内部サーバーをC&Cプロキシに変えます。これを行うには、GreyEnergyマルウェア、追加のサードパーティソフトウェア、またはスクリプトを直接使用できます。前者の場合、オペレーターはGreyEnergyを使用してWindowsサーバーを侵害し、3proxyおよびplinkモジュールを使用してC&Cプロキシに変換できます。GreyEnergyアクティビティを監視する過程で、内部Linuxサーバーに次の正当なプログラムがインストールされていることを確認しました。
- 3proxy小規模プロキシ
- Dante SOCKSサーバー
- PuTTYリンク(Plink)
攻撃者は、サードパーティのソフトウェアの代わりに、独自のスクリプトをインストールすることにより、内部Webサーバーを使用できます。プログラミング言語PHPおよびASPが使用されます。
観察したすべてのケースで、展開されたPHPスクリプトは、Webサーバーのバックドアと同じタイプの難読化を使用して難読化および暗号化されました。ただし、この場合、復号化キーを含むCookieはGreyEnergyマルウェア自体によって提供されます。このため、オペレーターはサーバーURLに特別な構成形式を使用する必要があります。

図20. Cookieを使用してPHPバックドアコードを復号化する最後のレベル
興味深いことに、マルウェア構成にはtriungulinという単語が含まれていますプロキシサーバーの難読化されたPHPスクリプトへのパス。これは、GreyEnergyステートメントで使用されるこのメソッドの内部名のようです。
悪意のあるプログラムの構成にC&Cプロキシが組み込まれている場合、外部のC&Cサーバーは含まれません。したがって、外部C&Cアドレスを見つけるには、マルウェアサンプルとそれに関連付けられたすべてのPHPスクリプトの両方が必要です。
次のPHPスクリプトの使用を確認しました。
- カスタムPHPプロキシスクリプト
- Antichat Socks5サーバーのわずかに変更されたバージョン
カスタムPHPプロキシスクリプトには、外部C&Cヘッダーを持つURLが含まれています。

図21.カスタムPHPプロキシサーバースクリプトに組み込まれた外部C&CサーバーカスタムPHP
スクリプトは、OpenSSLおよびCurlライブラリを使用して、悪意のあるプログラムからのリクエストをインターネット上の外部C&Cサーバーにリダイレクトします。

図22. GreyEnergyグループプロキシサーバーのカスタムPHPスクリプトのコード
上記のように、攻撃者は同じ目的でASPスクリプトを使用できます。あるケースでは、ASPスクリプトはマルウェアによって提供されたCookieを使用して、AESを使用して実際のC&Cアドレスのみを解読しました。残りのコードは暗号化も難読化もされていません。

図23. GreyEnergyグループが使用するASPプロキシコード
インターネットにアクセスできるCおよびCサーバー
すべてのGreyEnergy C&Cサーバーは、アクティブなときにTorを使用しました。C&Cインフラストラクチャ設定は、Torサーバーも使用したBlackEnergy、TeleBots、Industroyerに似ています。
各C&Cサーバーにはおそらくタマネギアドレスがあり、攻撃者はそれを使用してデータにアクセス、管理、または送信します。これは、攻撃者に匿名性の層を追加するOPSEC要件のようです。
ESETの専門家は、過去3年間にGreyEnergyマルウェアが使用しているC&Cサーバーを特定しました。リストは、以下のセクション「侵害の兆候」に記載されています。
GreyEnergyとBlackEnergyの比較
GreyEnergyおよびBlackEnergyマルウェアファミリは、同じ構造、モジュールおよび機能のセットを持っています。これらの関数の実装は異なりますが、まだ同等です。

ムーンレイカー・ペティア
2016年12月、攻撃者はワームを展開しました。ワームは、NotPetyaの前身(別名Petya、ExPetr、Nyetya、EternalPetya)でした。このワームは少数のオブジェクトに対する攻撃で使用され、配布機能が制限されていたため、広く知られていませんでした。
ワームは
msvcrt120b.dll
、Windowsディレクトリにある名前を持つDLLファイルです。内部ファイル名は
moonraker.dll
、おそらく、Bond による同名の映画と小説への参照です。一般的に、私たちはプログラムをMoonraker Petyaと呼びました。

図24. 2016年12月にインストールされたワームの内部名
DLLのPEタイムスタンプは、おそらくインストールの直前に、ファイルが2016年12月にコンパイルされたことを示唆しています。
Moonraker Petyaには、コンピューターの読み込みを停止するコードが含まれています。特に、値を上書き
ImagePath
レジスタ部内
[HKEY_LOCAL_MACHINE\System\ControlSet001\Services\ACPI]
および
[HKEY_LOCAL_MACHINE\System\ControlSet002\Services\ACPI]
システムドライブの最初のセクターを消去します。 NotPetyaとは異なり、Moonraker Petyaには、MBRおよびオペレーティングシステムローダーと直接やり取りするコードは含まれていません。代わりに、Moonraker Petya DLLには暗号化されたバイナリデータBLOBが含まれています。このマルウェアは、後で復号化キーとして使用されるコマンドライン引数を想定しています。 zlibライブラリを使用して復号化および解凍した後、コードはバイナリREファイルとしてメモリにロードされ、実行されます。復号化キーはありませんが、感染したコンピューターのディスクイメージを分析しました。これらには、さまざまなサイバーグループが使用する元のGreen Petyaで見つかったコードに対応するMBRとブートローダーコードが含まれていました。 Blobには元のGreen Petyaが含まれている可能性があると想定しています。

図25.ポップアップ画面は、コンピュータを再起動後に表示されるには、ムーンレイカーペチャが感染して
面白いとDLLファイルGreyEnergyモードで同じプロセスに非常によく似ムーンレイカーペチャで転写産物「専用メモリインチ」

図26.逆コンパイルされたMoonraker Petyaコード(左)とGreyEnergy(右)の比較
Moonraker Petya コードは、SysInternals PsExecを使用してローカルネットワーク経由で配布できます。悪意のあるプログラムのリソースには、zlibで圧縮されたバイナリファイルが含まれています。後で、バイナリはファイル名とともにWindowsディレクトリにフラッシュされます
conhost.exe
。
この悪意あるプログラムは、同様にNotPetya配布されます(別の方法を使用してネットワークノードを列挙し
WNetEnumResourceW
、
GetIpNetTable
、
GetExtendedTcpTable
、
NetServerEnum
使用、TERMSRVレコード
CredEnumerateW
)、機能
WNetAddConnection2W
を使用してネットワークホストに接続し、マルウェアをとして保存します
\\%TARGET-HOST%\admin$\%MALWARE%
。その後、Moonraker Petyaは次のコマンドを実行し、リセットPsExecを使用してリモートコンピューターで悪意のあるプログラムを起動します。悪意のあるプログラムには、
C:\Windows\conhost.exe \\%TARGET-HOST% -accepteula -s -d C:\Windows\System32\rundll32.exe "C:\Windows\msvcrt120b.dll", #1 %TIMEOUT% "USER1:PASSWORD1;USER2:PASSWORD2" "%DECRYPTIONKEY%"
Mimikatzを使用した資格情報収集機能がなく、EternalBlueエクスプロイトが含まれていないことに注意してください。
リストされている機能に加えて、Moonraker Petyaはファイル暗号化もサポートしています。悪意のあるプログラムは、ハードドライブ上のすべてのファイルをスキャンした後、AES-256アルゴリズムを使用してそれらを暗号化しようとします。暗号化プロセスが完了すると、マルウェアは
README.txt
支払い指示が記載されたファイルを作成できます。
この命令には、RSA-2048を使用して暗号化された個人キーが含まれています。さらに、元のGreen Petyaと同じテキストとタマネギのアドレスが含まれています。攻撃者は、このマルウェアの使用をGreen Petyaによる攻撃として偽装したかったようです。

図27. Moonraker Petyaによって作成された支払い指示が記載されたReadmeファイル
最後のステップとして、Moonraker Petyaはコンピューターの再起動を試みます。
おわりに
GreyEnergyは、過去数年間にウクライナの標的を攻撃している最も危険なARTグループの1つの兵器庫の重要な部分です。私たちは彼女をBlackEnergyの後継者と考えています。この投稿には類似点と相違点が記載されています。この結論を出した主な理由は、マルウェアの類似した構造、目標の選択、作業方法です。 BlackEnergyからGreyEnergyへの移行は2015年末に行われました。BlackEnergyインフラストラクチャへの注目が高まった後、おそらく攻撃者がマルウェアスイートを更新しなければならなかったためと思われます。
パズルの興味深い部分は、2016年6月にMoonraker Petyaを使用したという確立された事実であり、これは破壊プログラムNotPetyaの前身であると推定されています。これは、TeleBotsグループとGreyEnergyグループが協力している、または少なくともコードといくつかのアイデアを共有していることを示している可能性があります。それにもかかわらず、私たちはそれらを目標が多少異なる別個のグループと考えています。この投稿を書いている時点では、以前のGreyEnergyやBlackEnergyとは異なり、ウクライナ以外のTeleBotの意図的な活動は見られませんでした。
いずれにせよ、GreyEnergyオペレーターは深刻な危険をもたらします。GreyEnergyおよびTeleBotsのアクティビティを引き続き監視し、個人ユーザーおよび企業ユーザーがエンドポイントを保護するために最先端の製品を使用することを推奨します。
侵害インジケータ
ESET製品による検出:
VBA/TrojanDownloader.Agent.EYV
Win32/Agent.SCT
Win32/Agent.SCM
Win32/Agent.SYN
Win64/Agent.SYN
Win32/Agent.WTD
Win32/GreyEnergy
Win64/GreyEnergy
Win32/Diskcoder.MoonrakerPetya.A
PHP/Agent.JS
PHP/Agent.JX
PHP/Agent.KJ
PHP/Agent.KK
PHP/Agent.KL
PHP/Agent.KM
PHP/Agent.KN
PHP/Agent.KO
PHP/Agent.KP
PHP/Agent.KQ
PHP/Agent.KR
PHP/Agent.KS
PHP/Agent.KT
PHP/Agent.KU
PHP/Agent.LC
PHP/Agent.NBP
PHP/Kryptik.AB
PHP/TrojanProxy.Agent.B
ASP/Agent.L
Win64/HackTool.PortScanner.A
Win64/Riskware.Mimikatz.A
Win64/Riskware.Mimikatz.AE
Win64/Riskware.Mimikatz.AH
Win32/Winexe.A
Win64/Winexe.A
Win64/Winexe.B
GreyEnergyドキュメント:
SHA-1:
177AF8F6E8D6F4952D13F88CDF1887CB7220A645
GreyEnergy mini:
SHA-1:
455D9EB9E11AA9AF9717E0260A70611FF84EF900
51309371673ACD310F327A10476F707EB914E255
CB11F36E271306354998BB8ABB6CA67C1D6A3E24
CC1CE3073937552459FB8ED0ADB5D56FA00BCD43
30AF51F1F7CB9A9A46DF3ABFFB6AE3E39935D82C
GreyEnergyドロッパー:
SHA-1:
04F75879132B0BFBA96CB7B210124BC3D396A7CE
69E2487EEE4637FE62E47891154D97DFDF8AAD57
716EFE17CD1563FFAD5E5E9A3E0CAC3CAB725F92
93EF4F47AC160721768A00E1A2121B45A9933A1D
94F445B65BF9A0AB134FAD2AAAD70779EAFD9288
A414F0A651F750EEA18F6D6C64627C4720548581
B3EF67F7881884A2E3493FE3D5F614DBBC51A79B
EBD5DC18C51B6FB0E9985A3A9E86FF66E22E813E
EC7E018BA36F07E6DADBE411E35B0B92E3AD8ABA
GreyEnergyリセット可能DLL:
SHA-1:
0B5D24E6520B8D6547526FCBFC5768EC5AD19314
10D7687C44BECA4151BB07F78C6E605E8A552889
2A7EE7562A6A5BA7F192B3D6AED8627DFFDA4903
3CBDC146441E4858A1DE47DF0B4B795C4B0C2862
4E137F04A2C5FA64D5BF334EF78FE48CF7C7D626
62E00701F62971311EF8E57F33F6A3BA8ED28BF7
646060AC31FFDDFBD02967216BC71556A0C1AEDF
748FE84497423ED209357E923BE28083D42D69DE
B75D0379C5081958AF83A542901553E1710979C7
BFC164E5A28A3D56B8493B1FC1CA4A12FA1AC6AC
C1EB0150E2FCC099465C210B528BF508D2C64520
CBB7BA92CDF86FA260982399DAB8B416D905E89B
DF051C67EE633231E4C76EC247932C1A9868C14F
DFD8665D91C508FAF66E2BC2789B504670762EA2
E2436472B984F4505B4B938CEE6CAE26EF043FC7
E3E61DF9E0DD92C98223C750E13001CBB73A1E31
E496318E6644E47B07D6CAB00B93D27D0FE6B415
EDA505896FFF9A29BD7EAE67FD626D7FFA36C7B2
F00BEFDF08678B642B69D128F2AFAE32A1564A90
F36ECAC8696AA0862AD3779CA464B2CD399D8099
GreyEnergy DLL(「メモリ内のみ」モード):
SHA-1:
0BCECB797306D30D0BA5EAEA123B5BF69981EFF4
11159DB91B870E6728F1A7835B5D8BE9424914B9
6ABD4B82A133C4610E5779C876FCB7E066898380
848F0DBF50B582A87399428D093E5903FFAEEDCD
99A81305EF6E45F470EEE677C6491045E3B4D33A
A01036A8EFE5349920A656A422E959A2B9B76F02
C449294E57088E2E2B9766493E48C98B8C9180F8
C7FC689FE76361EF4FDC1F2A5BAB71C0E2E09746
D24FC871A721B2FD01F143EB6375784144365A84
DA617BC6DCD2083D93A9A83D4F15E3713D365960
E4FCAA1B6A27AA183C6A3A46B84B5EAE9772920B
ムーンレイカー・ペティア
SHA-1:
1AA1EF7470A8882CA81BB9894630433E5CCE4373
PHPおよびASPスクリプト
SHA-1:
10F4D12CF8EE15747BFB618F3731D81A905AAB04
13C5B14E19C9095ABA3F1DA56B1A76793C7144B9
1BA30B645E974DE86F24054B238FE77A331D0D2C
438C8F9607E06E7AC1261F99F8311B004C23DEC3
4D1C282F9942EC87C5B4D9363187AFDC120F4DC7
4E0C5CCFFB7E2D17C26F82DB5564E47F141300B3
5377ADB779DE325A74838C0815EEA958B4822F82
58A69A8D1B94E751050DECF87F2572E09794F0F8
5DD34FB1C8E224C17DCE04E02A4409E9393BCE58
639BCE78F961C4B9ECD9FE1A8537733388B99857
7127B880C8E31FBEB1D376EB55A6F878BC77B21A
71BA8FE0C9C32A9B987E2BB827FE54DAE905D65E
78A7FBDD6ADF073EA6D835BE69084E071B4DA395
81332D2F96A354B1B8E11984918C43FB9B5CB9DB
8CC008B3189F8CE9A96C2C41F864D019319EB2EE
940DE46CD8C50C28A9C0EFC65AEE7D567117941B
A415E12591DD47289E235E7022A6896CB2BFDE96
D3AE97A99D826F49AD03ADDC9F0D5200BE46AB5E
E69F5FF2FCD18698BB584B6BC15136D61EB4F594
E83A090D325E4A9E30B88A181396D62FEF5D54D5
ECF21EFC09E4E2ACFEEB71FB78CB1F518E1F5724
カスタムポートスキャナー
SHA-1:
B371A5D6465DC85C093A5FB84D7CDDEB1EFFCC56
B40BDE0341F52481AE1820022FA8376E53A20040
ミミカッツ
SHA-1:
89D7E0DA80C9973D945E6F62E843606B2E264F7E
8B295AB4789105F9910E4F3AF1B60CBBA8AD6FC0
AD6F835F239DA6683CAA54FCCBCFDD0DC40196BE
Winexe
SHA-1:警告:これらのIPアドレスを持つサーバーのほとんどはTorネットワークの一部でした。つまり、これらのインジケーターを使用すると誤検知が発生する可能性があります。
0666B109B0128599D535904C1F7DDC02C1F704F2
2695FCFE83AB536D89147184589CCB44FC4A60F3
3608EC28A9AD7AF14325F764FB2F356731F1CA7A
37C837FB170164CBC88BEAE720DF128B786A71E0
594B809343FEB1D14F80F0902D764A9BF0A8C33C
7C1F7CE5E57CBDE9AC7755A7B755171E38ABD70D
90122C0DC5890F9A7B5774C6966EA694A590BD38
C59F66808EA8F07CBDE74116DDE60DAB4F9F3122
CEB96B364D6A8B65EA8FA43EB0A735176E409EB0
FCEAA83E7BD9BCAB5EFBA9D1811480B8CB0B8A3E
C&CサーバーがGreyEnergy miniに対応
https://82.118.236[.]23:8443/27c00829d57988279f3ec61a05dee75a
http://82.118.236[.]23:8080/27c00829d57988279f3ec61a05dee75a
https://88.198.13[.]116:8443/xmlservice
http://88.198.13[.]116:8080/xmlservice
https://217.12.204[.]100/news/
http://217.12.204[.]100/news/
http://pbank.co[.]ua/favicon.ico (IP: 185.128.40.90)
GreyEnergy C&Cサーバーのアドレス(活動期間とIP)
2015–2016 – 109.200.202.7
2015–2015 – 193.105.134.68
2015–2016 – 163.172.7.195
2015–2016 – 163.172.7.196
2016–2016 – 5.149.248.77
2016–2016 – 31.148.220.112
2016–2016 – 62.210.77.169
2016–2016 – 85.25.211.10
2016–2016 – 138.201.198.164
2016–2017 – 124.217.254.55
2017–2017 – 46.249.49.231
2017–2017 – 37.59.14.94
2017–2017 – 213.239.202.149
2017–2017 – 88.198.13.116
2017–2017 – 217.12.202.111
2017–2017 – 176.31.116.140
2017–2018 – 185.217.0.121
2017–2018 – 178.150.0.200
2018–2018 – 176.121.10.137
2018–2018 – 178.255.40.194
2018–2018 – 193.105.134.56
2018–2018 – 94.130.88.50
2018–2018 – 185.216.33.126