IoT ハニーポットの作り方

IoT ハニーポットの作り方

ハニーポットは、脅威ハンティングに不可欠なツールです。ハニーポットは主に、実際のシステム、アプリケーション、またはサービスを模倣するように設計された攻撃者のおとりです。悪意のある攻撃者をおとりシステムに誘い込むことで、研究者は攻撃者の戦術、技術、手順(TTP)を観察し、分析することができます。このようにして、研究者は攻撃者が使用する手法を理解し、悪意のある行動を早期に検出するための効率的なツールや戦略を構築することができます。  

ハニーポットのための画一的なアプローチは、低レベルの自動化された攻撃を引き寄せるかもしれませんが、洗練された脅威行為者を引き寄せることはできないかもしれません。私たちの関心に合わせてハニーポットを調整することで、高度な敵対者を引き付ける可能性を高めることができます。さらに、ターゲットの動機と目的を理解することで、より現実的なシナリオを作成することができ、攻撃者が実際の意図を反映した方法でハニーポットと相互作用するように導くことができます。

ハニーポットは通常、本番環境から隔離されており、正当な用途はありません。そのため、ハニーポットでの活動は攻撃と関連している可能性が高い。攻撃者がハニーポットに関与すると、侵入の試みが進行中であることを早期に警告します。この情報により、脅威ハンターは新たな攻撃ベクトル、マルウェアの亜種、新たな脅威の傾向を発見し、進化する脅威の状況に対する理解を深めることができます。  

このブログ記事では、IoT ハニーポットをセットアップし、実世界で利用するための手順を詳しく説明します。 また、攻撃者によく悪用されるWinboxプロトコルをケーススタディとして、セットアップの例を説明します。

ステップ1:シミュレートする特定のプロトコルやデバイスを特定する

例えば、以前に悪用されたものなど、興味のある特定のプロトコルやデバイスを特定し、利用可能な情報源を集めることから始める。もしプロトコルの仕様がクローズドであれば、誰かがすでに何らかのプログラミング言語で対象のプロトコルを実装している可能性があります。プロプライエタリなプロトコル用のWiresharkディセクタが存在する可能性もあります。

次に、報告されている公開エクスプロイトをチェックして、そのデバイス/プロトコルがどのように狙われているか、あるいはどのように操作されているかを理解する。これにより、ハニーポットで捕捉する価値のあるものは何か、どのような技術的活動を探したいかを特定するのに十分な情報が得られるはずです。エクスプロイトの例を再現できる状態になったら、今度はテスト環境をセットアップして、実際のエクスプロイトを確認する番です。

ステップ2:テスト環境の構築

テスト環境を構築する1つの方法として、影響を受けるデバイスを入手し、脆弱な設定にすることが考えられます。その後、エクスプロイトを使用してデバイスが脆弱であることを確認し、後で PCAP やアクティブなエクスプロイトの試行とアクティビティのログなどの成果物を収集することができます。

脅威行為者をデバイスに引きつける最も単純な方法は、影響を受けるデバイスを公衆インターネット上で脆弱な設定にすることである。これは比較的安価で効果的な方法ですが、複数の欠点があります。例えば、デバイスを初期のクリーンな状態に復元することが難しくなる可能性があります。もう一つのアプローチは、OpenWRTやWindows仮想マシンなどの技術を活用して、脆弱なデバイスの仮想化バージョンをセットアップすることだ。このようなシステムであれば、以前の状態に戻すのは簡単だ。しかし、攻撃者にとっては、ここが研究環境であることを認識しやすくもなる。

残念ながら、これら2つのオプションには共通の欠点もある。攻撃者の行動を統一的な方法でログに記録することは、シナリオによってはより困難な場合がある。例えば、エクスプロイトの中には、予期しない、監視されていないシステム機能を活用する可能性があるものがある。さらに、不適切に設定された場合、攻撃者はこのシステムを悪用することで、第三者に実害を与えることができる可能性があるため、その脆弱な状態と接続性には特に注意を払う必要がある。

最後に、より複雑なアプローチは、システムの意図した動作を可能な限りエミュレートすることである。これは通常、Cowrieのようなハニーポットが行うことだ。Cowrieは、SSH経由で偽のLinuxシェルを提供し、偽のファイルシステムとサポートされている一連のコマンドを持つ本物のように見える。このオプションは、ハニーポットに対する高度な制御をオペレータに与えるため、間違いなく最良のオプションの1つですが、このオプションの実装には最も時間がかかります。

ステップ3:検出とモニタリング

テスト環境のセットアップ方法が決まったら、次のフェーズでは、システムが悪用されたり、悪用が発生 したりした場合にアラートを出すための検出ルールを構築することになります。これを実現するには、Snort ルールを使用する方法から、システムログに基づくより複雑なアラートまで、多くの方法があります。攻撃者が行う潜在的に興味深いアクションをすべて登録するために、関連するシステムログをすべて有効にすることが最善です。残念ながら、すべてのシステムで重要なイベントをログに記録できるわけではなく、またそのプロトコルを簡単に理解できるわけでもありません。一般的には、可能な限り多くの可視性を得るようにしてください。そうすることで、敵対者がシステムで何をしたのか、何をしようとしたのかを把握することができ、これは非常に貴重で実用的な情報となる。脅威行為者の活動やツールの分析は、しばしば新しいルールやシグネチャの作成につながり、サイバーセキュリティ・コミュニティが敵対者の動機や目的をよりよく理解するのに役立ちます。彼らはトラフィックを匿名化するためにVPNネットワークを構築しようとしているのだろうか?そうかもしれない。あるいは、侵害されたデバイスを使ってDDoS攻撃を仕掛けているのかもしれない。このような疑問は、検知と監視が行われている場合にのみ答えることができる。

ステップ4:硬化

従わなければならない法的義務があるかもしれないので、このステップは非常に重要です。特にハニーポットが高度にインタラクティブである場合、敵対者がハニーポットを活用して他の悪意のある活動を行うリスクをどのように最小化できるでしょうか?この段階では、サンドボックスと堅牢なファイアウォールルールが非常に重要です。ここでの目標は、攻撃者がハニーポットインスタンスから外部リクエストを行ったり、そうできるようにシステム設定を変更したりするのを防ぐことです。

ステップ5:自動化

攻撃者がターゲット・デバイスへのアクセスとエクスプロイトに成功すると、攻撃されたマシンから多くの有用な情報を取り出すことができる。異なるハニーポットが同時に稼働している可能性が高く、マルウェアはその痕跡を即座に取り除くことができるため、さまざまな情報源を手動で取得することは選択肢ではありません。また、ハニーポットはできるだけ早く次の攻撃者に備える必要がある。すべての情報をまとめて分析し、全体像を把握する必要がある。例えば、SSH / WINRMやログにアクセスするためのメッセージキューを使用してイベントロギングを自動化することで、システム内で脅威行為者によって行われたアクションやアクティビティを分類し、レビューすることができます。  

攻撃者は時々、自分たちの後に誰も入ってこないように、侵入に使ったドアを閉めることがある。次のステップは、ハニーポットから有用な成果物とログを回収することです。すべてのアーティファクトが回収されたら、ハニーポットをクリーンで悪用可能な状態にリセットする方法を考え、必要な人間の操作を最小限に抑えます。

最終的な考察  

ハニーポットを特定の地理的位置に配置したり、本当の位置を隠したりする方法はいくつかあります。ほとんどのホスティング・プロバイダーは、顧客がインスタンスの場所を選択できるようになっているため、関心のあるさまざまな国に関連付けられたパブリックIPを持つ複数のハニーポット・インスタンスをホストするのも一つの方法です。もう一つの方法は、実際のハニーポット・インスタンスへのリクエストを転送するプロキシを設定することです。これにより、実際のハニーポットを1つの場所でホストし、異なる国に関連付けられた複数のパブリックIPアドレスでインターネット上で見えるようにすることができます。

最終的には、ルールの検出とログの監視が可能な、一般にアクセス可能なハニーポットを用意する必要があります。その結果、脅威を分析し理解するために必要な関連情報をすべて収集できるようになります。また、攻撃者がハニーポットや類似の脆弱なデバイスの悪用を自動化する方法を分析することもできます。時間をかけてセットアップをテストし、他の人にテストしてもらい、すべてが期待通りに動作することを確認してください。敵がハニーポットの範囲内の他のシステムにピボットできないことを確認してください。そうすれば本番の準備が整います。インスタンスが稼働している間はハニーポットを監視し続け、ログと接続フローを定期的に確認し、ハニーポットが期待通りに動作し続けていることを確認する時間を取ることを忘れないでください。

ケーススタディウィンボックス  

このアプローチを応用して、攻撃者によく悪用されるWinboxプロトコルのハニーポットを構築してみよう。この攻撃で最も有名な例は、おそらくMerisボットネットでしょう。Merisボットネットはこのプロトコルを伝搬に使用し、史上最大のDDoS攻撃を仕掛けるために大規模に デバイスを悪用しました。

Winboxは、MikroTik RouterOSデバイスの管理と設定に使用されるグラフィカル・ユーザー・インターフェース(GUI)アプリケーションです。そのプロトコル(基本的には TLV ベースのプロトコル)を利用して、さまざまな脆弱性を持つパッチ未適用のデバイスを利用するエクスプロイトもあります。以下では、認証なしで重要なシステムファイルを読み書きしたり、サンドボックスをエスケープしたりできる2つの脆弱性について説明します(CVE-2019-3943)。攻撃者がどのようにCVE-2018-14847を活用するのか、Winboxの視点から順を追って分析していきます。

最初のステップでは、user.datファイルの内容を読む必要がある。Winboxプロトコルは、最初にファイルを開くリクエストを送信する必要があります。このオープン要求のメッセージは主に3つの値で構成されます:SYS_TOはMikroTikデバイスにどのシステム実行ファイルを使用するかを伝え、SYS_CMDは実行する特定のアクションを選択し、変数string.1(user.datに設定)には操作するターゲットファイルを指定します。

図1. user.dat ファイルを開く要求。

デバイスは、クライアントが必要なメモリーを割り当てられるように、u32.2変数にファイルのサイズを答える。

図2.ファイルサイズに答えるMikrotikサーバー。

ここで、SYS_CMDを 4に設定すると、先に指定したファイルからu32.2バイトを実際に読み出すようにデバイスに指示する。

図3. user.datファイルの内容の読み取り要求

それに対して、デバイスは読み出したバイトで答える。

図4. user.dat ファイルの内容を送信する

user.dat ファイルには、システム・ユーザーの認証情報が含まれている。脆弱な "暗号化スキーム "により、攻撃者はどのユーザーに対しても設定されたパスワードを即座に入手することができる。影響を受けるバージョンでは、パスワードはユーザー名と283i4jfkai3389文字列にMD5ハッシュを適用した結果であるキーとXORされている。このMD5ハッシュは即座に生成することができ、XOR操作はこの方法で即座に元に戻すことができる。

管理者の認証情報が回復されると、別の脆弱性によって攻撃者は「devel」ユーザー名でSSH経由でシステムにアクセスできるようになる。このトラフィックのキャプチャは、devel-loginファイルの作成を示している:

図5. デベロッパー・ログイン・ファイルの作成。

ディセクタはどのコマンドが実行されたかを知ることができないので、SYS_CMD=1とSYS_TO=[2,2]の 文字列変数とファイルのようなパスがあれば、ファイルの作成を示していると推測できる。この場合、ファイルはSSHアクセスを有効にするために作成された。

攻撃者がMikroTikシステムにrootシェルアクセスした後、彼らは目的のために必要な任意のアクションを実行することができます。例えば、Meris/Gluptebaは、CVE-2018-14847を悪用してrootアクセスを取得した後、デバイスのVPNサーバおよび/またはSOCKSプロキシを有効にし、その永続性を維持するためにスケジュールされたタスクを設定するために使用されます。

Winboxハニーポットのセットアップ

ほとんどのやり取りはSSH経由で行われるため、Cowrieの出番となる。CowrieはSSHプロキシとして動作し、トラフィックを実際のハニーポットに転送するように設定できます。これが、Cowrieの背後にMikrotikハニーポットを設置した理由です。CowrieはMikrotik VMのプールを管理し、設定に従ってそれらをスピンアップすることができます。

このセットアップでは、Winboxプロトコルを介して実行される攻撃者と被害者の間の相互作用も監視する必要がある。トラフィックをキャプチャすれば、ディセクタは役に立つかもしれないが、常に役に立つとは限らない。Winboxmプロトコルとして検出されないパケットもある。また、ディセクタは各コマンドの目的を説明していない。

この目的のために、攻撃者が Winbox プロトコルをどのような目的で使用するのかを理解するために、pywinbox(https://github.com/NozomiNetworks/pywinbox)に着手しました。Winboxプロトコル(特にMikrotikのECSRP5認証プロトコル名前空間Winboxの内部動作)を分析し理解するためのセキュリティコミュニティの活動は、脆弱性をよりよく理解し、この種の攻撃の検出を改善するために非常に重要である。

pywinboxはプレーンテキストプロトコルとECSRP5認証を管理し、Winboxパケットを復号化する(攻撃者がプレーンテキスト接続を使用していない場合)。

図6は、pywinboxが user.datファイルを読み取るためにCVE-2018-14847の悪用をログに記録したことを示しています。まず、ログにはWinboxメッセージの変数が表示されるため、サーバーに送信された内容を正確に確認できます。これは、システムで未知の操作が実行された場合に非常に便利です。次に、pywinboxがメッセージの意味を解釈し、2つの異なるメッセージを表示します。シアン色のログエントリは、メッセージの目的(この場合はファイルを開く)を説明します。赤い色のメッセージは、user.datファイルを読み取るためのCVE-2018-14847の悪用を検出したアラートです。

図 6.CVE-2018-14847のエクスプロイト検出。

pywinboxは攻撃者のコマンドをすべてログに記録するため、これによってシステムは、(1)返信するよう指示されたコマンドに応答する中程度の相互作用のハニーポットとして動作し、(2)トラフィックを実際の/仮想化されたMikrotikサーバーに転送して、高い相互作用のハニーポットとして動作することができます。

結論

ハニーポットの可能性を最大限に活用するためには、その使用の意味をすべて理解することが極めて重要です。ハニーポットを展開する研究者は、ハニーポットの展開に関連するプロトコルを深く理解する必要があります。プロトコルが異なれば、攻撃のベクトルや潜在的な脆弱性も異なります。特定のプロトコルの複雑さを理解することで、セキュリティチームはハニーポットをより正確に設定し、正当なサービスを複製し、攻撃者を効果的に引き付けることができます。この知識は、悪意のある活動を正確に検知・捕捉するのに役立ち、プロアクティブな防御戦略のための貴重な洞察につながります。

ハニーポットは貴重な利点を提供することができますが、その使用を取り巻く法的および倫理的な考慮事項を認識することが重要です。組織は、潜在的な法的反響を避けるために、関連する法律や規制を確実に遵守しなければならない。さらに、ハニーポットの配備が不注意による危害や巻き添え被害を招かないよう、ハニーポットの種類やその制限を選択する際には倫理的な配慮が必要です。