ASEC 分析チームでは、脆弱なデータベースサーバーをターゲットに拡散されるマルウェアを継続的にモニタリングしている。MySQL は代表的なデータベースサーバーであり、企業やユーザー環境において大量のデータを管理する機能を提供している。一般的に Windows 環境ではデータベースサービスのため主に MS-SQL をインストールし、Linux環境では MySQL、PostgreSQL などのデータベースサービスが使用される。しかし、MySQL のような DBMS サービスは、Windows 環境もサポートするため、MS-SQL サーバーほどではないが、Windows 環境でインストールされた事例も一定数存在する。そのため、Windows 環境で作動中の MySQL サーバーを対象にした攻撃も持続的に確認されている。
当社の AhnLab Smart Defense(ASD)ログによると、脆弱な MySQL サーバーをターゲットに拡散しているマルウェアの中では、Gh0st RAT の変種が大半を占めている。もちろん、他にも様々なマルウェアが使用される可能性もあり、過去に AsyncRAT が使用された事例も ASEC ブログを通して公開したことがある。[1]
ASEC 分析チームでは最近、脆弱な MySQL サーバーを対象に Ddostf DDoS Bot がインストールされている事実を確認した。Ddostf は特定対象に分散型サービス拒否(DDoS:Denial of Service)攻撃ができる DDoS Bot であり、2016年頃に初めて確認された。[2](英語外部サイト) 中国で製作されたと知られている Ddostf は、Windows と Linux 環境を一緒にサポートすることが特徴である。

1. MySQL サーバーをターゲットにした攻撃
攻撃者は攻撃を行うためにスキャニングを行い、攻撃対象を探す。スキャナは外部に露出しているシステムのうち、MySQL サーバーが使用している3306/TCP ポートが公開されているシステムを探す。その後、当該システムをターゲットに総当たり攻撃や辞書攻撃を利用し、適切にアカウント情報が管理されていないシステムである場合は管理者アカウント情報を獲得することができる。もちろん、このような過程なしで脆弱性がパッチされていないバージョンの場合、脆弱性攻撃でコマンドを実行することもできる。
一般的に MS-SQL 環境では OS コマンドを実行できる様々な方式が提供される。代表的なものには xp_cmdshell コマンドがあり、その他にも OLE Stored Procedure、MS-SQL Agent Jobs、Extended Stored Procedure、CLR Stored Procedure 等の方式が存在する。OS コマンド、すなわち CMD や PowerShell を利用して、ユーザーのコマンドを実行できるということは、当該システムに対する操作権を獲得できるということを意味する。
MySQL は MS-SQL の xp_cmdshell のように直接的な OS コマンドをサポートしていないが、ユーザー定義関数(UDF:User Defined Function)という機能を利用して、最終的には攻撃者がコマンドを実行することができるようになる。

2. UDF (User Defined Function) DLL
UDF はユーザーが使いたい機能を DLL に作成したものであり、攻撃者は悪意のあるコマンドを含んだ UDF ライブラリ、すなわち DLL を感染システムにアップロードし、MySQL サーバーにロードさせる。その後、定義したコマンドを実行する方式で、感染システムに不正なコマンドを送信することができる。
これは MS-SQL サーバーの CLR SqlShell と類似している。[3] SqlShell は Web サーバーにインストールされる WebShell と同じく、MS-SQL サーバーにインストールされ、攻撃者のコマンドの実行や様々な悪意のある振る舞いの実行をサポートするマルウェアである。
MS-SQL サーバーでは、拡張機能が使用できるように CLR Stored Procedure という方式をサポートしているが、SqlShell はこのような方式で製作された DLL である。CLR Stored Procedure は xp_cmdshell コマンドとともに、攻撃者が MS-SQL サーバーで悪意のあるコマンドを実行できる代表的な方式の一つである。攻撃者は SqlShell を主にコインマイナーやランサムウェアなどの最終的なマルウェアをインストールする手段として使用している。
実際の攻撃対象になったシステムの感染ログを見ると、感染システムには Ddostf 以外にも、以下のような不正な UDF DLL が併せてインストールされるのが確認できる。もちろん、この UDF DLL は攻撃者が Ddosft DDoS Bot をインストールする目的で製作したというよりは、昔から様々な攻撃に使用されてきた。すなわち、攻撃者は不適切に管理されている MySQL サーバーを攻撃する過程で UDF マルウェアを道具として使った。

この UDF マルウェアは、引数で渡された URL からファイルをダウンロードもしくは攻撃者のコマンドを実行する機能をサポートしている。攻撃者は UDF DLL から提供する downloader() 関数を使って外部から Ddostf をダウンロードし、cmdshelv() 関数でダウンロードした Ddostf を実行したものと推定される。Cmdshelv() 関数はコマンド実行機能の他にも実行結果を出力して「cmd.tmp」ファイルとして作成した後、これを読み取って実行したコマンドの結果を C&C サーバーに伝達する機能もサポートする。

3. Ddostf DDoS Bot の解析
Linux 環境を対象にする ELF バージョンと Windows 環境で動作可能な PE フォーマットの Ddostf バージョンが存在する。ここでは Windows 環境で対象攻撃に使用された PE フォーマットを取り扱う。Ddostf の代表的な特徴としては、以下のように「ddos.tf」文字列がバイナリに含まれているという点である。

Ddostf が実行されると、まずは自身を %SystemRoot% パスにランダムな名前でコピーした後、サービスに登録する。

以降、暗号化された C&C サーバーアドレスの文字列「C8AF3371ACB79AA6119CB33C80C40AE544F319」を復号化し、実際の C&C サーバーアドレスを獲得した後に接続する。マルウェアの製作者は解析妨害を目的に実際のコードルーティンの間に無意味な printf() 関数を挿入していた。最初の接続の際には感染システムに対する基本情報を収集して C&C サーバーに送信する。

Offset | Size | 説明 |
---|---|---|
0x00 | 0x04 | シグネチャ(0x0000000B) |
0x08 | 0x40 | Windows バージョン |
0x48 | 0x20 | マルウェアのバージョン情報(Ver8.0) |
0x68 | 0x04 | CPU 性能(MHz 単位) |
0x6C | 0x04 | プロセッサの個数 |
0x70 | 0x20 | コンピューター名 |
0x90 | 0x04 | 言語情報 |

最初のシステム情報送信の際には、0x0000000B の値がシグネチャと一緒に送信されるが、C&C サーバーのコマンドの中からネットワークの速度および CPU の使用量といった現在のシステムの状態情報を送信する際には 0x0000000A の値が使用される。

Offset | Size | 説明 |
---|---|---|
0x00 | 0x04 | シグネチャ(0x0000000A) |
0x08 | 0x10 | ネットワークインターフェイス速度(kb/bps)/CPU 使用(%) |
C&C サーバーに感染システムの情報を送信すると、C&C サーバーは 0x000000C4 サイズのレスポンスを送信する。ここにはコマンドだけでなくデータ、例えば具体的な DDoS 攻撃方式やダウンロードコマンドの場合、ダウンロード URL が含まれる。
Offset | Size | 説明 |
---|---|---|
0x00 | 0x04 | Dummy |
0x04 | 0x04 | コマンド |
0x08 | 0xBC | 追加データ |
サポートするコマンドは全部で6つだが、DDoS 攻撃は内部的に SYN Flood、UDP Floodm、HTTP GET / POST Flood 攻撃など様々である。

コマンド | 機能 |
---|---|
0x00000005 | DDoS 攻撃開始 |
0x00000006 | DDoS 攻撃中止 |
0x00000007 | 追加ペイロードのダウンロードおよび実行 |
0x00000008 | システム状態情報の送信開始 |
0x00000009 | システム状態情報の送信終了 |
0x00000013 | 新しい C&C サーバーでの DDoS コマンド |
サポートするコマンドのほとんどは一般的な DDoS Bot と類似しているが、Ddostf のみの特徴だとすると C&C サーバーから送信された新しいアドレスにアクセスし、一定期間コマンドを実行できるという点である。新しい C&C サーバーでは、以下のように DDoS コマンドのみ実行できる。このような点は Ddostf 攻撃者が多数のシステムを感染させた後、DDoS 攻撃をサービスとして販売できるということを意味する。

4. 結論
データベースサーバー(MS-SQL、MySQLサーバー)をターゲットとする攻撃の代表例としては、不適切にアカウント情報を管理しているシステムに対する総当たり攻撃(Brute Forcing)と辞書攻撃(Dictionary Attack)がある。一般的にこれらの方法が攻撃の大半を占めているように見えるが、これ以外にも脆弱性に対するパッチが適用されていないシステムへの脆弱性攻撃が発生する可能性がある。
そのため、管理者はアカウントのパスワードを推測しにくい形式で設定し、定期的にパスワードを変更することで、総当たり攻撃や辞書攻撃からデータベースサーバーを保護しなければならず、セキュリティパッチを最新にして脆弱性攻撃を防止する必要がある。また、外部に開放されていてアクセス可能なデータベースサーバーに関してはファイアウォールのようなセキュリティ製品を利用し、外部の攻撃者からのアクセスを統制しなければならない。上記のような処置が先行されていない場合、攻撃者およびマルウェアによって感染が続く可能性がある。
AhnLab MDS サンドボックスでは、Ddostf マルウェアを「Persistence/MDP.Event.M29」、「Malware/MDP.Manipulate.M491」、「Malware/MDP.AutoRun.M1038」という診断名で検知している。


AhnLab V3 製品では、当該タイプに対して以下の通り検知している。
ファイル検知
– Trojan/Win32.Nitol.R215641 (2017.12.18.00)
– Downloader/Win32.Agent.R24480 (2012.05.08.03)
振る舞い検知
– Malware/MDP.Behavior.M29
– Malware/MDP.Behavior.M1091
– Persistence/MDP.Event.M29
– Malware/MDP.Manipulate.M491
– Malware/MDP.AutoRun.M1038
IOC
MD5
– 6e7e26a6e237f84b51bc61aa7dff5680 : Ddostf (11188.exe)
– fe550baf5205d4b2503ad0d48014fccf : UDF DLL (amd.dll)
C&C アドレス
– 136.243.103[.]119:6681
サンドボックスベースの動的解析によって未知の脅威を検知して対応する AhnLab MDS に関する詳しい情報は、ahnlab.com で確認できる。
Categories:AhnLab 検知
[…] 参考記事(外部リンク):MySQL サーバーを攻撃している Ddostf DDoS Bot マルウェアasec.ahnlab.com/jp/58900/ […]