サイト内の現在位置

ChamelDoH インプラント ~DNSトンネリング or DNS over HTTPS (DoH) ?~

NECセキュリティブログ

NECサイバーセキュリティ戦略統括部 セキュリティ技術センターの竹内です。
本稿では、竹内およびサイバーインテリジェンスグループの一員のNECインドのメンバーであるDr Sareena Karapoola 、Dr Manikantan Srinivasan による、マルウェア解析結果を紹介いたします。

This post is also available in: English(英語)

インテリジェンスグループでは日ごろから脅威情報の収集・分析を行い、分析結果を社内やお客様に展開しています。これらの活動の中で、MITRE ATT&CKで共有されていない新たな脅威を発見した場合、MITREへ情報提供しています。この活動の一環としてマルウェアの解析も行っています。本ブログではChamelGangが使用したマルウェアChamelDoHの解析結果を紹介いたします。

中国との関連が考えられる攻撃者グループChamelGangは、Linuxシステムへ侵害するためのロバストで隠蔽性の高いツールセットを開発しています new window[1]。ChamelDoHは注目すべきツールキットであり、DNS-over-HTTPS(DoH)トンネリングで通信するC++のインプラントです。よく知られたドメインネームシステム(DNS)とパブリックなDNSサーバを悪用し、暗号化されたトラフィックを組み合わせることで、組織によるネットワークブロックやインターセプトなどの防御手法から隠れた通信をすることができます。

ChamelDoHについては、Stairwellの脅威リサーチチームが詳細な報告 new window[1]をしており、このレポートの中で、ChamelDoHの10個の検体を共有しています。このレポートではChamelDoHのある検体の解析結果、インジケータ、機能と別の検体の解析について紹介されています。我々はDNSを使ってどのように通信を隠しているか、またDNSトンネリングとDNS-over-HTTPS (DoH)をどのように使っているのかを理解するためにChamelDoHの解析を行いました。また、ChamelDoHによる攻撃を検知防ぐために取ることの可能な対策とポリシーについて検討しました。また、ChamelDoHの動作をMITRE ATT&CKにマッピングしました。本ブログではStairwaellのレポートに記載されており、公開情報から入手できた次のハッシュ値の検体を解析した結果を紹介します。
SHA256: 92c9fd3f81da141460a8e9c65b544425f2553fa828636daeab8f3f4f23191c5b

主要な所見

  • ChamelDoHはDNSパケットの暗号化はしておらず、サブドメインのフィールドのみ暗号化しています。また、少なくともビーコンのメッセージではDoHではなくDNSトンネリングを使用しています。
  • ChamelDoHはsystemd-logindサービスの正規サービスに成りすまします。
  • 対策とポリシーについて検討した結果を紹介します。

目次

1. DNSの使用した通信の隠蔽

この章では、DNSがどのように動いているか、また攻撃者はDNSを使って通信の隠蔽をどのように行っているかを説明します。

ドメインネームシステム(DNS)はコンピュータによる通信で基礎となるプロトコルで、ドメイン名(例:reddit[,]com)から対応するIPアドレスに変換(名前解決)といったことができます。名前解決をするためには、初めにコンピュータはドメイン名を含んだDNSクエリをリゾルバに送信します。リゾルバはネームサーバに問い合わせをし、ネームサーバがドメイン名に対応したIPアドレスを返すことで名前解決できます。図 1はreddit[.]comのサブドメイン、subdomain[.]reddit[.]comにユーザがアクセスするときの図です。まず、DNSクライアントはType AのDNSリクエストをGoogleやCloudFlareといった公開DNSリゾルバに送信します。公開DNSリゾルバはreddit[.]comのネームサーバへクエリを送信し、ネームサーバはsubdomain[.]reddit[.]comのIPアドレスを送ります。

図 1 ネームサーバでのDNSの名前解決

AレコードはドメインやサブドメインをIPアドレスにマッピングするために使われる最も基本的なレコードです。DNSは他のレコードもサポートしており、例えばTXTレコードはテキストデータを保持するのに使用されており、様々な目的に使用するデータを持っていることがあります。TXTレコードの使用例としては、ドメインの所有者の検証があります。

DNSの悪用

DNSはデータ窃取や通信方法の隠蔽に悪用されることがあります。DNSパケットがブロックされることは少なく、多くのケースでは精査する通信対象になりません。そこで攻撃者はDNSパケットを使って秘密の情報のやり取りを行います。次の章ではDNSを使った複数の通信における隠す手段を紹介します。

1.1 DNSトンネリング

DNSトンネリングでは、DNSのリクエストとレスポンスのフィールドを攻撃者は使います。まず、攻撃者はサーバを用意し、図 2に示すようにC2の操作となるようなネームサーバの設定を行います。被害組織の端末に仕込まれたマルウェア(例:ChamelDoH)はメッセージをエンコードし、それをC2サーバのサブドメインとしたDNSクエリを送信します。図 2では、マルウェアは<important message>.C2example[.]comのDNSクエリを解決するリクエストを送信します。公開DNSリゾルバはDNSクエリにある<important message>のサブドメインフィールドの確認はしません。公開DNSリゾルバはDNSリクエストを攻撃者の用意したネームサーバへ送信します。攻撃者の用意したネームサーバは<important_message>を処理します。最終的にネームサーバはマルウェアに実行させる追加のコマンドを含んだDNSレスポンスを作成し、返します。

難読化

DNSクエリを使用した通信で難読化するために、マルウェアはメッセージを暗号化/エンコードすることがあります。

zoom拡大する
図 2 DNSトンネリングおよびメッセージが難読化されているリクエストの例

また、DNSプロトコルにはDNSパケットに含めることができる文字列に制限がありますが、Base64でメッセージをエンコードすることで回避できます。ChamelDoHマルウェアでは、マルウェアはAES128で暗号化した後、Base64でエンコードしています new window[1]。図2にはエンコードされた文字列を示しています。なお、ドメイン名は難読化できず、ネットワークインターフェースなどで確認することができます。

TXTレコードの使用

攻撃者はDNSレコードを使ってC2サーバとターゲットとの間で情報のやり取りを行います。ChamelDoHはDNSのTXTレコードを使っており、TXTレコードはよく使用されるAレコード より情報のやり取りに便利です。TXTレコードと比較してAレコードにはメッセージを含めることに制限があります。Aレコードの場合、DNSレスポンスには要求されたドメインのIPアドレスとともにNO_ERRORのメッセージ、存在しないドメインの場合はNX_DOMAINのメッセージとなります。一方、TXTレコードはDNSクエリに対応した、連絡先の名前、電話番号、その他サービスの詳細を含むテキストを保持できるようになっています。TXTレコードのレスポンスにNO_ERRORを設定し、メッセージを追加することで実現できます。そのためChamelDoHのC2通信で使われるように、DNSのTXTレコードを使ったDNSトンネリングは攻撃者によく知られています。

1.2 DNS over HTTPS(DoH)

ユーザのプライバシーなどを盗聴や中間者攻撃などから防ぐために、組織ではDNS over HTTPS(DoH)プロトコルに対応しはじめています。DoHプロトコルではDNSクライアントとDoHに対応したDNSリゾルバ(例:Google)とのDNS通信でHTTPSを使うことによって暗号化します。

zoom拡大する
図 3 DNS-over-HTTPSの動作。DoHでパケットが暗号化されているのを示した図

図 3はDoHの動作を示した図です。DNSクライアントは最初に公開DNSリゾルバへHTTPSコネクションを行います。サブドメインの名前解決をするときには、HTTPSプロトコルでクエリを暗号化します。リゾルバは暗号化したクエリを受け取ったら、復号し、平文でネームサーバへリクエストを送りサブドメインを解決します。最終的にネームサーバから受け取ったレスポンスをHTTPSのプロトコルでDNSリゾルバからクライアントへ送ります。このようにして、DoHではDNSパケットを暗号化してやりとりします。ネットワークインターフェースなどのネットワーク境界では暗号化された通信の解析を行わない限りDNSパケットの中身はわかりません。

2. ChamelDoHで使用されるDNSトンネリング

ChamelDoHはいくつかの周期的な通信をDoHが可能なサーバ(8.8.8.8、1.1.1.1、8.8.4.4)へ行っていました。これらの通信は600秒ごとに行われます。これらの通信に対してC2サーバから応答があると、ChamelDoHの持つ機能が実行されますが、ブログ執筆時点ではC2サーバへの通信はできなかったため、図 4以降の通信については確認できていません。

zoom拡大する
図 4 ChamelDoHによるネットワーク通信

パケットを確認するとC2メッセージがトンネリングされていました。つまりDNSリクエストのサブドメインフィールドが暗号化・エンコードされていました。一方DNSパケットは暗号化されていなく、DoHはここでは使用されていません。図 5に示すように、DNSパケットは平文で送られており、ドメイン名が見えています。対照的にDNS over HTTPSでは図 6出示すようにDNSパケット全体が暗号化されています。クライアントはDNSプロバイダとHTTPS通信を行い、TLSハンドシェイクします。ネットワーク境界では暗号化されており内容を見ることはできません。

図 5 ChamelDoHによるDNSパケット
図 6 DNS over HTTPSのDNSパケット

3. ChamelDoHの手口

この章ではStairwellのレポートおよび解析で発見したChamelDoHの手口について記載します。

  1. マルウェアは子プロセスをフォークし、名前を正規のログインサービスである「/lib/systemd/systemd-logind」に見せかけるように偽装します。
  2. ChamelDoHは端末のデータを収集します。
  3. ChamelDoHはDoH設定に記載されている情報を基にネームサーバとDoHプロバイダへ通信します。
  4. データはエンコードされDNSのTXTクエリフィールドにあるサブドメインとして送信されます。DNSのTXTクエリを作成する前にデータは暗号化されます。
  5. マルウェアは継続的に攻撃者のサーバからコマンドを受け取り、DoHトンネルを使用して攻撃者のサーバとの通信を行います。new window[1]
  6. DNSサーバからレスポンスを受け取った後は、マルウェアはデータを復号・デコードしC2サーバからのコマンドを実行します。new window[1]
  7. マルウェアはC2からのタスクを実行した結果を送信します。設定された期間待機してから、C2からの次のコマンドを確認します。new window[1]

ChamelDoHマルウェアは別のインスタンスが実行されていることをチェックしません。そのため単一のマシン上で複数のChamelDoHが実行できます。

図 7 ChamelDoHの手口

3.1 正規プロセスに見せかける偽装

図 8は、マルウェアが実行されたときに表示されるプロセスツリーとプロセス名を表示したものです。ChamelDoHは正規のログインサービスである/lib/systemd/systemd-logindに見せかける偽装を行っています。図 9はChamelDoHのメイン関数です。ChamelDoHが実行されると子プロセスをフォークし、名前を/lib/systemd/systemd-logindサービスに変更します。これにより検知を避ける目的と考えられます。また子プロセスではマルウェアはプロセスIDの1~1024を引数にcloseシステムコールを呼び出します。これはChamelDoHのメイン機能を呼び出す前にスリープを導入する目的と考えられます。

図 8 プロセスツリーと作成されたプロセス
図 9 ChamelDoHが子プロセスのフォークを行い、正規のサービスに見せかける処理

ChamelDoHの通信先の情報

Stairwellのレポート new window[1]にも書かれているようにChamelDoHの通信先についてはJSON形式の設定となっています。この設定は検体内で暗号化されずに記載されていることを確認しています。

図 10 ChamelDoHの設定

4. 対策

この章では最初にDNSベースの情報流出に対する防御の課題について述べます。そして、ChamelDoHやDNS-over-HTTPSを防ぐいくつかの方法について紹介します。最後にこのような攻撃を防ぐ組織で適用するポリシーについて述べます。

4.1 DNSベースの防御と検出の課題

DoHの防御と検知には2つの課題があります。まず、DNSはインターネット通信に不可欠であるため、組織のファイアウォールでブロックすることはできません。そのため、攻撃者が通信を隠すために使用します。次に、DoHがHTTPSのプロトコルを使用してDNSリクエストを暗号化しているため、通信の検知やリクエスト内容の確認が困難になる課題です。DoHが使用されると、企業はネットワーク境界でのこれらパケットの送信を妨害することができません。

4.2 ChamelDoHの検知

ネットワーク通信を確認したところChamelDoHでは全てのDNSパケットが暗号化されてはいませんでした。そのため、次に示す方法で検知できる機会があると考えます。

4.2.1 ドメイン名の検知

このような攻撃に使われたドメイン名は、ドメインの評判に基づいて作成される拒否リスト/ブロックリストによってブロックできる可能性があります。例えば、は通信を禁止する候補にすることができます。しかし、このようなブロックでは次に示すような問題があります。

有名でよく使われるドメインの使用

ドメイン名を使ったブロックは手軽で簡単に対応できる一方、有名でよく使われるドメインが、DNSクエリやサブドメインで機密な通信をするために使用されることがあります。new window[2]

暗号化されたDNSパケット

我々の解析ではChamelDoHはDNSパケット全体をHTTPSで暗号化されていませんでした。しかし、もしChamelDoHがDNSパケットをHTTPSで暗号化していた場合、ドメイン評価ベースのブロックでは防御を容易に突破されてしまいます。

4.2.2 DNSクエリの頻度と形式

一定時間内に高頻度で発生したTXTレコードのリクエストは、データ流出を示す可能性があります。また通常考えられない長さやおかしなサブドメインのフィールドがDNSクエリに含まれていることも検知をする候補になります。このように送受信されるDNSパケットの種類やパケット長のルールで制限することができます。

4.3 暗号化された通信の解析によるDoHの検知

図 6のようにDoH通信によってDNSパケット全体が暗号化されている場合、5.2節に記載した対策では役に立ちません。このような場合は機械学習やディープラーニングをベースとした対策でDoHトンネリングを検知できる可能性があることが紹介されています。[3]

しかし、DoHトンネルで行われる悪性の通信を識別することにはいまだ課題があります。調査ではどのように暗号化された通信解析を使用して、ユーザがアクセスしたWebページのフィンガープリントからユーザの意図を特定する方法が紹介されています。このようなテクニックでは埋め込まれたオブジェクトのサイズなどが暗号化されたトラフィックに含まれているなど、サイドチャネルな特徴に大きく依存しています。[4] しかしこのテクニックを調査、拡張することでDoHトンネルによる悪性通信を識別できるようになります。

4.4 ポリシーの検討

内部リゾルバ vs 公開リゾルバ

組織で内部リゾルバを使用することでDoHを使った情報流出を防ぐことができます。しかし、公開DNSリゾルバを使用することで運用コストや信頼性、プライバシー、セキュリティなどの有用な利点があります。内部DNSリゾルバと公開DNSリゾルバのどちらを使用するかのポリシーの決定はこれらの利点とセキュリティリスクのトレードオフになります。

5. まとめ

本ブログではChamelDoHマルウェアの解析を行い、データの流出する仕組みを紹介しました。DNS over HTTPS(DoH)の仕組みがあるような命名をされていますが、解析で確認した範囲ではChamelDoHはDNSパケット全体を暗号化しておらず、DNSトンネリングが使用されています。また、ChamelDoHの手法、検知するための対策やポリシーについて考察しました。

Appendix:ChamelDoHのMITRE ATT&CKとのマッピング

ChamelDoHの解析およびStairwellのレポート new window[1]から、MITRE ATT&CKのテクニックにマッピングした結果を図 11に示します。

Resource Development Execution Persistence Defense Evasion Discovery Command & Control (C2) Exfiltration
Acquire Infrastructures- Domains (T1583.001)     Masquerading: Match Legitimate Name or Location
(T1036.005)
File and Directory Discovery (T1083) Application Layer Protocol: Web Protocols (T1071.001) Exfiltration over C2 Channel (T1041)
Acquire Infrastructures- Server (T1583.001)     Indicator Removal: File Deletion (T1070.004) System Information Discovery (T1082) Application Layer Protocol: DNS
(T1071.004)
 
Develop Capabilities: Malware (T1587.001)       System Process Discover (T1057) Data encoding: Standard Encoding (T1132.001)  
        System Network Configuration Discovery: Internet Connections Discovery (T1016.001) Encrypted Channel: Symmetric Cryptography (T1573.001)  
        System Network Connections Discovery (T1049) Protocol Tunnelling (T1572)  
        System Owner/User Discovery (T1033)    
        System Time Discovery (T1124)    
        Process Discovery (T1057)    

図 11 ChamelDoHが使うテクニックとMITRE ATT&CKのマッピング

Resource Development.

  • T1583.001 Acquire Infrastructure-Domains
    ChamelGangは複数のドメインをC2ドメインとして使用しています。new window[1]
  • T1583.004 Acquire Infrastructure-Server
    ChamelGangは複数のサーバをネームサーバとして使用しています。new window[1]
  • T1587.001 Develop Capabilities: Malware
    ChamelGangはChamelDoHのようなLinuxを侵害するためのツールを開発しています。
Defense Evasion.
  • T1036.005: Masquerading: Match Legitimate Name or Location
    マルウェアは子プロセスをフォークし、その名前を正規のサービスである/lib/system/system-loginに変更します。
  • T1070.004: Indicator removal: File Deletion
    ChamelDoHはファイル削除を行う機能があります。
Command and Control (C2).
  • T1071.001: Application Layer Protocol: Web Protocols
    ChamelDoHはDNS over HTTPSを使ってC2通信を行います。new window[1]
  • T1071.004: Application Layer Protocol: DNS
    ChanmelDoHはDNSのサブドメインフィールドのデータをbase64でエンコードし、攻撃者のネームサーバへリクエストを送信します。
  • T1132.001: Data Encoding: Standard Encoding
    ChamelDoHは悪性のネームサーバとのC2との通信時にサブドメインをエンコードします。C2通信ではbase64のエンコードやAES128の暗号化を使っています。
  • T1573.001: Encrypted Channel: Symmetric CryptographyS
    ChamelDoHはC2通信でAES128を使い暗号化しています。
  • T1572: Protocol Tunnelling
    ChamelDoHはネームサーバとの通信でDNS over HTTPSを使います。new window[1]
Discovery.
  • T1082: System Information Discovery
    ChamelDoHはホスト名やシステムバージョンやシステムタイプといった情報を収集します。new window[1]
  • T1033: System Owner /User Discovery
    whoamiコマンドを使ってユーザの情報を収集します。new window[1]
  • T1057: Process Discovery
    ChamelGangはプロセス列挙とCHamelDoHプロセスのプロセスIDを収集する機能を持ちます。new window[1]
  • T1049: System Network Connections Discovery
    ChamelDOHはシステム上のインターフェースをスキャンします。new window[1]
  • T1016.001: System Network Configuration Discovery: Internet Connections Discovery
    ChamelDoHは127.0.0.1ではないIPアドレスを持つインターフェースのスキャンをします。new window[1]
  • T1083: File and Directory Discovery
    ChamelDoHは動作しているディレクトリや絶対パスを取得しC2サーバに創始㎜します。
Exfiltration.
  • T1041: Exfiltration over C2 Channel
    ChamelDoHはファイルの読み込みとサーバへのアップロード機能を持ちます。

参考文献

  • [3]
    Mengqi Zhan, Yang Li, Guangxi Yu, Bo Li, Weiping Wang, Detecting DNS over HTTPS based data exfiltration, Computer Networks, Volume 209, 2022
  • [4]
    G. Mitra, P. K. Vairam, S. Saha, N. Chandrachoodan and V. Kamakoti, "Snoopy: A Webpage Fingerprinting Framework With Finite Query Model for Mass-Surveillance," in IEEE Transactions on Dependable and Secure Computing

執筆者プロフィール

竹内 俊輝(たけうち としき)
セキュリティ技術センター リスクハンティング・アナリシスグループ

リスクハンティング・アナリシスグループにて脆弱性診断やペネトレーションテストを担当。趣味はマルウェア解析

SEC560メダル保持
情報処理安全確保支援士(登録番号014728号)
GIAC GPEN

執筆者の他の記事を読む

執筆者プロフィール

Dr.Manikantan Srinivasan
NEC オープンネットワークソリューション・サービス (NOSS) デリバリーユニット, NEC Corporation India Pvt Ltd.

5GのAI/MLに関する研究、O-RAN allianceのアーキテクチャベースのセキュア5Gソリューション開発、テレコムセキュリティ、3GPP標準化、サイバースレットインテリジェンスに関する研究に取り組む。

O-RAN WG11 - Security Working GroupのNECの代表として、O-RANセキュリティの標準化に貢献。ネットワーク通信、携帯電話のネットワークとセキュリティに関する24年以上の経験を持つ。

2021年以降、MITRE ATT&CKに対して複数の脅威情報を提供し採用されている。
CISSPを保持。

執筆者プロフィール

Dr. Sareena Karapoola
デジタルプラットフォームデリバリーユニット(DPDU)、NEC Corporation India Pvt Ltd

マルウェア解析、マルウェア検知技術開発、サイバースレットインテリジェンスに関する研究に取り組む。

2022年にインド工科大学マドラス校でコンピュータサイエンスの博士号を取得、サイバーセキュリティを学ぶ。他の研究対象として、新しいAIベースの検知や軽減戦略、現実世界のテストベッドとセキュリティリサーチ用のラベル付きデータセットがある。

スマートカードリーダーやアクセスコントローラ端末などの組み込み製品とシステムソフトウェアに対する10年以上の経験を持つ。

アクセスランキング