オープンソースツールを悪用する初期活動

弊社の脅威分析チームは、セキュリティ研究センターと連携し国内のセキュリティ対策向上の一助となるよう日本を標的とする攻撃者グループが使うマルウェア等のTTP(Tactics, Techniques, Procedures)を日々分析しています。

先月は、標的型攻撃と考えられるメールに添付されていたマルウェアを解析しました。その調査の中で1次RATに感染した後の攻撃者の初期活動を分析し、攻撃者がQuasarRAT等のオープンソースツールを使う事が分かりました。オープンソースツールを悪用する事自体は珍しい事ではありませんが、今回の調査では公開情報にないツールの使用も観測でき、分かった内容について解説をします。

Fig1_3

図1. 今回観測した攻撃の概要図

メール配送されたdocファイル

このdocファイルは、マクロを含んでおり有効にすると外部よりファイルをダウンロードします。ダウンロードするURLでは" 20180703191211.png"となっていますが、実際はRTFファイルで、%temp%¥~$temp.rtfとして保存し実行します。

Fig2

図2. doc ファイル

RTFファイルには、PEファイルが埋め込まれており実行されると%temp%配下に

K7SysMon.Exe、K7SysMn1.dll、kfois.hfdをドロップします。これらのファイルをドロップするのにOffice系アプリケーションの脆弱性を悪用していると考えていますが、本記事の執筆時点では具体的な脆弱性を特定できていません。

マクロ側でRTFファイルを実行した後は、RTFファイルがドロップした3つのファイルをC:¥USERS¥PUBLIC¥AppDataにコピーします。その後、%temp%にあるRTFファイル、ドロップしたファイルを削除します。

ASEP(Auto-Start Extensibility Point)として、K7SysMon.exeを起動するスケジュールタスクをcmd.exeもしくはpowershell.exeで登録します。

実行コマンド

schtasks /create /tn Winhelper /tr ""c:\users\public\appdata\K7SysMon.Exe"" /sc DAILY /f /RI 10 /du 24:00 /st 00:01"

Fig3

図3. docファイルに含まれているマクロ(一部抜粋)

起動されるK7SysMon.exeは、K7 Computing 社の正規プログラムで電子署名が付与されています。このファイル自体はロードするK7SysMn1.dllのStartSystemMonitor関数をコールさせるだけの目的で使われています(DLL Side-Loading)。StartSystemMonitor関数の中で同一ディレクトリにあるkfois.hfdが読み込みこまれてコードを復号し、メモリ上で実行します。メモリ上では、Cobalt Strike BeaconがダウンロードされてC2サーバとHTTPS通信を行います。

Cobalt Strike BeaconダウンロードURL: https://91.235.129[.]180/WRJi

C2サーバ: 91.235.129[.]180

通信先サーバは、自己署名証明書が使われておりCNには、wikipediaが指定されていました。これは、LAC社がブログで公開している解析内容[1]と一致しています。

Fig4

図4. C2サーバの証明書

足場固め後の初期活動

今回の調査の過程で、1次RAT (Cobalt Strike Beacon)が設置された後の攻撃者による初期活動を確認する事ができました。 観測できた攻撃者側で実行したコマンドは、Appendixにて掲載していますが、攻撃者側のオペレータは、まず下記2つのファイルを送り込んでいます。

・UninstallPersistSqlState.sql.man (.NET アプリケーション)

・UIAutomationTypes.dll.uninstall (暗号化ファイル) 

UninstallPersistSqlState.sql.manは、32bitの.NET Frameworkのアプリケーションで公開されているツールConfuserEXをベースに難読化されている事が分かりました。UIAutomationTypes.dll.uninstallはAESで暗号化されているファイルで、UninstallPersistSqlState.sql.manが起動後に読み込み復号しメモリ上に展開します。

Fig5

図5. UninstallPersistSqlState.sql.manのコード

Fig6

図6. ConfuserExで難読されていることを⽰す箇所

オペレータは、下記コマンドでUninstallPersistSqlState.sql.manを起動しています。

tok.exe bypassuac C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe /LogFile= /LogToConsole=false /u C:\users\public\appdata\UninstallPersistSqlState.sql.man

tok.exeは、ペネトレーションテストでの利用を想定している公開ツールTokenvatorで、UACバイパスを行いシステム権限で起動するために使われています。また、InstallUtil.exeは、.NETアプリケーションをサービス起動するために提供されているマイクロソフト社のツールです。サービスアンインストールを指定する/uオプションが付与されていますが、実際はアンインストール処理の中で新たにInstallUtil.exe /runオプションを付けてUninstallPersistSqlState.sql.manが実行されます。これは、起動する処理をアンインストールオプションで包む事によりセキュリティ製品の検出を回避するための工夫ではないかと推測しています。

実行後に展開されるコードは、オープンソースツールのQuasarRATと共通する部分が多く見られ、これをベースに開発したものと考えています。

Fig7

図7. メモリ上に展開されたコードとQuasarRATとの類似部分

Fig8

図8. メモリ上に展開されたコードとQuasarRATで共通しているnamespace

興味深い点としては、通常のQuasarRATにはない部分としてoutlook.office365[.]comにHTTPS接続を行い正規サイトへの接続ができないと、C2サーバへ接続に行かない事です。これは、サンドボックス回避の意図も考えられますが明確な理由については特定できていません。また、公開されているQuasarRATには見られないDoPluginクラスが追加されており攻撃者が独自にPluginを追加できる処理を実装したと推測しています。

Fig9

図9. office365に接続する処理

このRATを使い内部情報を収集してきますが、そこでも公開ツールのnbtscan(今回の攻撃では、"nbt"にリネームして使用)を使いLAN内のWindows NetBios名の一覧を収集する活動が見られました。

今回の攻撃では、外部からの追加ファイルのダウンロード、C2サーバとの通信の多くがHTTPSで行われており、ネットワークセンサーだけでは検知が難しくEDR等を用いてエンドポイント上の挙動をモニタリングする重要性を改めて感じました。

侵入後の初期活動でオープンソースツールを使う理由は、匿名性以外にも検出の回避やオペレータ(少なくとも初期活動に従事する)のスキルがそれほど高くなくとも行えるようにしている可能性もあると考えています。今回、オペレータがTokenvatorのhelpオプションで内容を確認している操作も見られました。

また、JPCERT/CCからCobalt Strike Beaconをメモリ上から検知するVolatility Pluginが公開[2]されています。このツールは、今回のようなCobalt Strike Beaconを悪用する攻撃の分析で、非常に有用であると考えています。

本記事の内容が、少しでも分析・インシデント対応をされる方々のご参考になれば幸いです。

Indicators of Compromise

File

配送されたdocファイル
SHA256: 1637cde7a32cfa8de3556eebfe1246174744b790aca0f4ed0dbd5a4311678f5d

File name: ~$temp.rtf
SHA256: 5a413aa8c1dbb38b4f95d94a1a563637c237508ee31e71844fb42c5ccd2003aa

File name: K7SysMon.exe (正規)
SHA256: 9722976c2b1156474df5aaf4aa2708a8d15873fb6148604ac647d651ea8a2fbe

File name: K7SysMn1.dll
SHA256 d0effd3711e753fe5b14bd93be4b7b8fd95c87dce03f51cd5038d3d743fced40

File name: kfois.hfd
SHA256: 66bbeeec7eb98c3e4b8180b8caf3285f6c5f86e883b608087b4c19d6c9d94cd0

File name: UninstallPersistSqlState.sql.man
SHA256: 28e471b40d54d397dbacc2555abe94e0a0c8285bdfd78980af21882ac482135b


File name: UIAutomationTypes.dll.uninstall
SHA256: 2accb69d13ae8e05fd95fdde86d8841b10fff35732fe11232e21f80713d6027d

File name: tok.exe (Tokenvator)
SHA256: 6f1a23e8a5d4a80a1f81aa234ee523b1a2ea8b2bd07f082c9bc9c924889a160a

File name: nbt (nbtscan)
SHA256: c9d5dc956841e000bfd8762e2f0b48b66c79b79500e894b4efa7fb9ba17e4e9e

Network

https://www.<redacted>[.]com/image/news_collection/20180703191211.png
https://91.235.129[.]180/WRJi
fumiyuki.gleeze[.]com:443
5.149.248[.]17:443

Appendix オペレータが実行したコマンド

C:\Windows\system32\cmd.exe /C C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe /LogFile= /LogToConsole=false /u C:\users\public\appdata\UninstallPersistSqlState.sql.man

"cmd" /K

net config workstation

net view

ping -a <IP Address>

tasklist

whoami

net localgroup administrators

whoami /all

findstr /i level

netstat -no

ipconfig /all

net user Administrator

reg query HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs

reg.exe query "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs"

reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\TypedPaths"

tasklist

findstr /i install

tok.exe bypassuac C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe /LogFile= /LogToConsole=false /u C:\users\public\appdata\UninstallPersistSqlState.sql.man

tok.exe help

tok.exe List_User_Sessions

tok.exe Find_User_Processes <host name>

C:\Windows\system32\cmd.exe /c reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v PromptOnSecureDesktop|findstr REG_DWORD

reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v PromptOnSecureDesktop

findstr REG_DWORD

C:\Windows\system32\cmd.exe /c reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v ConsentPromptBehaviorAdmin|findstr REG_DWORD

reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v ConsentPromptBehaviorAdmin

WMIC Process Where "Caption Like '%hpe%' OR Caption Like '%tan%' OR Caption Like '%sysmon%' OR Caption Like '%endpoint%' OR Caption Like '%falcon%' OR Caption Like '%cb.exe' OR Caption Like '%almon.exe' OR Caption Like '%cylance%' OR Caption Like '%avguix%' OR Caption Like '%ragent%' OR Caption Like '%xagt%' OR Caption Like '%defend%' OR Caption Like '%sgnmaster%' OR Caption Like '%swc_%' OR Caption Like '%swi_%' OR Caption Like '%SAVAdminService%' OR Caption Like '%SISI%'" Get Caption,ExecutablePath

WMIC Process Where "ExecutablePath Like '%receptor%' OR ExecutablePath Like '%FireEye%' OR ExecutablePath Like '%Sophos%' OR ExecutablePath Like '%Avecto%' OR ExecutablePath Like '%Sysmon%' OR ExecutablePath Like '%CarbonBlack%' OR ExecutablePath Like '%Tanium%' OR ExecutablePath Like '%Security%' OR ExecutablePath Like '%Fidelis%' OR ExecutablePath Like '%CrowdStrike%' OR ExecutablePath Like '%Symantec%' OR ExecutablePath Like '%AVG%' OR ExecutablePath Like '%AntiVirus%' OR ExecutablePath Like '%Trend_Micro%' OR ExecutablePath Like '%Kaspersky%' OR ExecutablePath Like '%Avira%' OR ExecutablePath Like '%ESET%' OR ExecutablePath Like '%F-Secure%' OR ExecutablePath Like '%PCPitstop%' OR ExecutablePath Like '%ESTsoft%' OR ExecutablePath Like '%DrWeb%' OR ExecutablePath Like '%K7_Computing%' OR ExecutablePath Like '%AVAST%' OR ExecutablePath Like '%Mcafee%'" Get Caption,ExecutablePath

tracert bing.com

ping -a -n 1 <IP address>

nbt <Network address>/24

query user

wmic product get name,version

reg.exe query HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall

reg.exe query HKLM\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall

cmd.exe /C systeminfo

cmd.exe /C set

参考情報

https://www.lac.co.jp/lacwatch/people/20180521_001638.html [1]
https://www.jpcert.or.jp/magazine/acreport-cobaltstrike.html [2]

前へ

マルウェア解析奮闘記: コマンド実行のエラー文が日本語でないと動作しないマルウェア

次へ

OceanLotusが使う検出回避テクニック