アンラボは、2017年8月、クラウド基盤の脅威分析および対応システムである ASD (AhnLab Smart Defense) により、金融情報を搾取するマルウェア 「Emotet (エモテット)」 がスパムボットネットを通じて配布されていることを確認した。Emotet が初めて発見されたのは2014年である。
今回発見された Emotet は、ユーザーの金融取引情報を盗み取る目的で、悪性行為に必要な機能をモジュール化し、C&C サーバーから当該モジュールをダウンロードして動作する特徴を持っている。
以下では、Emotet の配布および動作方式、主な悪性行為について説明する。
1. Emotet の配布および動作方式
Emotet の配布および動作方式は、[図 1] のとおりである。
[図 1] Emotet の配布および動作方式
アンラボの分析結果によると、2017年8月に確認された Emotet は、以下の方式で動作する。
---------------------------------------------------------------------------------
① スパムメールに添付されたファイルを通じて Emotet をダウンロードおよび実行
② 自動実行サービスに Emotet を登録
③ OS 情報、実行中のプロセスリスト、Emotet の PE CRC、コンピューター名、ボリュームシリアル番号を暗号化して転送
④ C&C サーバーから、悪性行為を追加で行うためのモジュールをダウンロード
⑤ ダウンロードしたモジュールを実行
---------------------------------------------------------------------------------
ボットネットを通じて送信されるスパムメールには Word ファイルが添付されており、ファイルには悪性マクロが含まれている。
[図 2]スパムメールの添付ファイルに含まれた悪性マクロ
Word ファイルには、「このファイルは保護されています。マクロの実行を許可してください。」 のような悪性マクロの実行を誘導するメッセージが表示される。ユーザーが許可すると、[図 3] のように難読化された PowerShell コマンドが実行され、Emotet (以下、Emotet ローダー) が外部 URL からシステムにダウンロード・実行される。
[図 3]難読化された PowerShell コマンド
2. 主な悪性行為
悪性 URL からダウンロードされた Emotet ローダーが実行されると、真っ先にサービス登録を行う。その後、ユーザー情報を収集し、C&C サーバーと通信して悪性行為を追加で行うためのモジュールをダウンロードする。
以下は、Emotet ローダーが行う主な悪性行為の流れである。
---------------------------------------------------------------------------------
① Emotet ローダーの再実行のため、サービス登録
② コンピューター名および OS 情報、実行中のプロセスリスト情報を収集
③ CryptoAPI を利用して、収集した情報を暗号化
④ C&C サーバーと通信
⑤ C&C サーバーから送信されたデータを復号化した後、モジュールを実行
---------------------------------------------------------------------------------
2-1. サービス登録
Emotet ローダーは、サービスの生成および列挙に関する権限を確認するため、OpenSCManagerW API を呼び出す。この際、サービスの生成および列挙に関する権限を獲得すると、Emotet ローダーのサービスへの登録を行い、[%Windir%\System32] に自らを複製する。
[図 4]OpenSCManagerW の呼び出しおよび権限確認
[図 4] の 0x40884A コードを見ると、OpenSCManagerW API 呼び出しの結果の値によって DS:[40B2A4] 値が変わるのが分かる。
また、[図 5] の 0x4088EC コードで DS:[40B2A4] の 1 Byte 値は、Emotet ローダーが自らを複製するパスを決定する。
[図 5]DS:[40B2A4] の値による、自己複製パス決定コードの一部
権限獲得の有無によって、以下のように Emotet ローダーの自己複製パスが変わる。
---------------------------------------------------------------------------------
・ 権限の獲得に成功した場合
:%Windir%\System32
・ 権限の獲得に失敗した場合
:%Appdata%\Local\Microsoft\Windows
---------------------------------------------------------------------------------
Emotet ローダーは、自己複製したファイルの名前を決めるため、サービスおよびファイルの生成に使用する以下のキーワードから2つのキーワードをランダムに選択する。
---------------------------------------------------------------------------------
agent,app,audio,bio,bits,cache,card,cart,cert,com,crypt,dcom,defrag,
device,dhcp,dns,event,evt,flt,gdi,group,help,home,host,info,iso,launch,
log,logon,lookup,man,math,mgmt,msi,ncb,net,nv,nvidia,proc,prop,prov,
provider,reg,rpc,screen,search,sec,server,service,shed,shedule,spec,srv,
storage,svc,sys,system,task,time,video,view,win,window,wlan,wmi
---------------------------------------------------------------------------------
選択されたキーワードは、自己複製されるファイル名とサービス名に適用される。
サービス生成後、Emotet ローダーは、サービス説明値を変更する ChangeSer- viceConfig2W API を呼び出す。呼び出された API は、既存のサービス説明からランダムに選択された値をコピーして説明値を変更する。
[図 6] サービス説明値の変更
2-2. ユーザー情報の収集
サービス生成終了後、Emotet ローダーはユーザー情報 (OS バージョン、コンピューター名、ボリュームシリアル番号、実行中のプロセスリスト、PE CRC) を収集する。収集されたデーターは暗号化され、C&C サーバーに転送される。
2-3. CryptoAPI を利用したデータ暗号化
Emotet ローダーは、収集したユーザー情報を暗号化する。
暗号化には、カスタム暗号化方式と CryptoAPI を利用した方式が使用される。CryptoAPI を利用した方式の場合、[図 7] のようにファイル内部に RSA 公開キーが存在し、当該キーは CryptGenKey API で呼び出したランダムの AES-128 対象キー値の暗号化に使用される。
[図 7] ファイル内部に存在する RSA 公開キーの獲得および AES-128 ランダムキー値の生成
Emotet ローダーファイル内には RSA 公開キーが存在し、CryptDecodeObjectEx API により復号化された RSA 公開キーは [図 9] のとおりである。
[図 8] ファイル内部の RSA 公開キー
[図 9] 復号化された RSA 公開キー
最終的に Emotet ローダーは、CryptEncrypt API を利用して AES-128 CBC モード暗号化を実行し、データに対するハッシュ値を生成する。
また、CryptExportKey API を利用して、暗号化に使用された AES-128 キー値を抽出してメモリにコピーする。
[図 10] データの暗号化
2-4. C&C サーバーへの転送
Emotet ローダーは POST 送信方式を使用して暗号化されたデータを C&C サーバーに転送する。
[図 11] データの転送
C&C サーバーはクライアント側にレスポンスとして 404 エラー値を返すが、データ内部には追加で悪性行為を行うためのモジュールが含まれている。
[図 12] 404 エラー
分析した際には C&C サーバーへのアクセスが遮断されていたため、悪性モジュールを確認することができなかったが、C&C サーバーから実際に悪性モジュールが送信される場合、返されるレスポンスのサイズは 0x1c000 以上であると言われている。
2-5. C&C サーバーから送信されたデータの復号化および実行
C&C サーバーへのアクセスが遮断されていたため、悪性モジュールは確保できなかったが、静的分析によりモジュールのダウンロード後に行われる悪性行為を確認した。
Emotet ローダーは、C&C サーバーから送信されたデーターを復号化した後、悪性モジュールと推定されるファイルを実行する。
[図 13] 追加モジュールファイルの生成および実行コードの一部
システムが Emotet に感染し、追加で悪性行為を行うモジュールが実行されると、PC で実行中の Web ブラウザにユーザー情報を搾取するモジュールがインジェクションされ動作する。
C&C サーバーからダウンロードされる悪性モジュールは、以下のとおりである。
---------------------------------------------------------------------------------
・ ネットワークを介したマルウェア配布に使用されるモジュール
・ スパムメールの送信に使用されるモジュール
・ Web ブラウザにインジェクションされ、金融情報の搾取に使用されるモジュール
---------------------------------------------------------------------------------
アンラボ V3 製品では、当該マルウェアを以下の検知名で検知できる。
- Trojan/Win32.Emotet (2017.09.20.00)