BPFDoor は Berkeley Packet Filter(BPF)を活用したバックドアマルウェアであり、2021年に PWC 社の脅威レポートを通じて最初に公開された。[1] (外部サイト、英語にて提供) レポートによれば、中国を拠点とする攻撃者である Red Menshen が中東およびアジアを対象とする攻撃において数年間 BPFDoor を使用し続けており、最近ではソースコードも公開された。
BPFDoor は BPF を悪用して Web サーバーや SSH サービスのように、すでに動作中のサービスが使用するポートに攻撃者がマジックパケットを送信する方法で動作できる。すなわち、一般的なバックドアタイプのマルウェアとは異なり、BPFDoor は先に C&C サーバーに接続したり、実行中に特定のポートを持続的に開放している必要がないというメリットにより感染システムに密かに残留することができる。
ここでは、Linux システムを対象にインストールされたバックドアマルウェアである BPFDoor に関する簡略的な解析情報とともに、AhnLab EDR を活用してこれを検知する方法を整理する。
1. Berkeley Packet Filter (BPF)
BPF は、ユーザーモードのプログラムがネットワークフィルターにアタッチして、ソケットを通じて流入するデータを許可、または拒否できるようにする技術である。すなわち、実行中のプログラムが使用しているネットワークソケットにパケットフィルタリングルールを登録することができ、これによってデータを読み込んだり通知を受けることができる。
BPFDoor も BPF を活用しており、インストール後、以下のようなフィルターを登録する。このフィルターは TCP プロトコルの場合 0x5293、UDP および ICMP プロトコルの Echo Request の場合 0x7255 をチェックする機能を担う。
| Protocol | Magic Packet |
|---|---|
| TCP | 0x7255 |
| UDP | 0x5293 |
| ICMP (Echo Request) | 0x5293 |
一般的に、Web サービスを提供する Web サーバーは80および443番ポートが開放されており、SSH サービスが有効になっているシステムでは22番ポートが開放されている。もしこれらのシステムに BPFDoor がインストールされている場合、BPFDoor がポート番号をさらに開放しなくても、攻撃者はすでに開放されているポートにマジックパケットを送信できる。BPFDoor がインストールしたパケットフィルターは、開放されたソケットで受信されるパケットをチェックして、マジックパケットにマッチすると BPFDoor にこれを転送する。
2. BPFDoor
BPFDoor が最初に実行されると、以下のようなコマンドを利用して「/dev/shm」パスに「kdmtmpflush」という名前で自身をコピーしたあと、自己削除する。参考に、/dev/shm パスは Linux におけるメモリベースのファイルシステムであり、主にアプリケーションが一時データを保存したり処理したりするのに使用する。しかし、ディスクに記録されずメモリ上でのみ運用される特徴を持つ /dev/shm ディレクトリは、攻撃者によって頻繁に悪用される傾向があり、これは BPFDoor も同様である。
| /bin/rm -f /dev/shm/kdmtmpflush; /bin/cp [マルウェア] /dev/shm/kdmtmpflush && /bin/chmod 755 /dev/shm/kdmtmpflush && /dev/shm/kdmtmpflush –init kdmtmpflush /bin/rm -f /dev/shm/kdmtmpflush |
以降、次のような文字列から1つを選択して名前を変更するが、これには prctl() 関数が使われる。
ここまでの過程が完了すると、上記の BPF フィルターを登録して待機する。その後、攻撃者がマジックパケットが含まれたコマンドを送信すると、BPF フィルターからそれを受け取り分岐するが、パスワードによって Reverse Shell、Bind Shell、レスポンスが存在する。ソースコードを基準として、パスワードが「justforfun」の場合はマジックパケットに含まれた IP/Port に接続して Reverse Shell を提供し、「socket」の場合は新たなポートを開放してファイアウォールを設定し、攻撃者からの接続を確立する。最後に、パスワードにマッチしない場合は攻撃者に「1」をレスポンスしており、攻撃者はこれを通じて感染の有無を判断できるものと思われる。
| コマンド | パスワード | 機能 |
|---|---|---|
| 0 | pass (justforfun) | Reverse Shell |
| 1 | pass2 (socket) | Bind Shell |
| 2 | N/A | 「1」レスポンス |
参考に、Bind Shell のプロセスでは新たなポートを開放したあとファイアウォールを設定し、攻撃者の IP アドレスから渡されたパケットを新しく開放したポートにリダイレクトする。その後、攻撃者との接続が確立すると、再度追加したファイアウォールルールを削除する。
| # /sbin/iptables -I INPUT -p tcp -s [攻撃者 IP] -j ACCEPT # /sbin/iptables -t nat -A PREROUTING -p tcp -s [攻撃者 IP] –dport [受信ポート] -j REDIRECT –to-ports [ランダムポート] # /sbin/iptables -t nat -D PREROUTING -p tcp -s [攻撃者 IP] –dport [受信ポート] -j REDIRECT –to-ports [ランダムポート] # /sbin/iptables -D INPUT -p tcp -s [攻撃者 IP] -j ACCEPT |
3. AhnLab EDR を活用した検知
BPFDoor は、実行過程で自身を /dev/shm パスにコピーすることが特徴である。AhnLab EDR は、疑わしいプロセスが自身を /dev/shm パスにコピーし、さらには実行権限を付与する振る舞いに対し以下のように脅威として検知し、管理者が事前に認知できるようにサポートする。
上記の通り、BPFDoor はパスワードにマッチするコマンドを受け取った場合、特定のポートを開放してファイアウォールを設定し、攻撃者から受信するパケットをリダイレクトする。AhnLab EDR は Iptables を利用して新たなルールを追加/削除する振る舞い、そしてポートリダイレクトのような疑わしい振る舞いを、主な振る舞いとして検知する。
上記の振る舞いは、他のマルウェアでも使用できる手法である。AhnLab EDR は、このほかにもインストールされた BPFDoor の疑わしい振る舞いを活用して脅威として検知しており、管理者がこれを認知して原因究明と適切な対応を講じられるようサポートする。
4. 結論
BPFDoor は、2021年に PWC 社の脅威レポートを通じて最初に公開され、アジアを含む様々な国を対象とした攻撃に使用されている。通信プロバイダ、物流、教育、政府など、様々な被害者が確認されており、中国を拠点とする攻撃者である Red Menshen が数年間 BPFDoor を攻撃に活用してきたことが知られている。
一般的なバックドアタイプのマルウェアとは異なり、BPF を悪用する BPFDoor は先に C&C サーバーに接続したり、実行中に疑わしいポートを持続的に開放している必要がないというメリットがある。すなわち、BPFDoor は感染したシステムに疑わしい状況を残さず密かに残留することができ、その後攻撃者がマジックパケットを送信する方法でコマンドを実行することができる。
AhnLab EDR は BPFDoor マルウェアのインストールプロセス、およびコマンド実行プロセスにおいて確認される様々な疑わしい振る舞いを脅威および主な振る舞いとして検知し、管理者がこれを事前に認知できるようにサポートする。管理者はこれにより原因の把握と適切な対応を実行することができ、攻撃に晒された後も攻撃対象となったシステムから攻撃者の証跡資料としてセキュリティインシデントの調査に必要なデータを確認することができる。
振る舞い検知
– DefenseEvasion/EDR.Event.M12190
– Behavior/DETECT.Event.M12191
– DefenseEvasion/DETECT.Firewall.M12192
– DefenseEvasion/DETECT.Firewall.M12193
– Execution/EDR.BPFDoor.M12195
| Tactic | Technique |
|---|---|
| Execution (TA0002) | Command and Scripting Interpreter: Unix Shell (T1059.004) |
| Execution (TA0002) | Native API (T1106) |
| Defense Evasion (TA0005) | Masquerading: Masquerade Task or Service (T1036.004) |
| Defense Evasion (TA0005) | Impair Defenses: Disable or Modify System Firewall (T1562.004) |
| Defense Evasion (TA0005) | Indicator Removal on Host: File Deletion (T1070.004) |
| Defense Evasion (TA0005) | Indicator Removal on Host: Timestomp (T1070.006) |
| Defense Evasion (TA0005) | File and Directory Permissions Modification (T1222) |
| Command and Control (TA0011) | Traffic Signaling: Socket Filters (T1205.002) |
| Command and Control (TA0011) | Encrypted Channel (T1573) |
MITRE ATT&CK マッピング情報