DNS分析を通じたサイバー犯罪の検知

[How to Detect Criminal Threats Using DNS Analytics with Databricks \- The Databricks Blog](https://databricks.com/blog/2020/10/05/detecting-criminals-and-nation-states-through-dns-analytics.html)の翻訳です。

あなたはセキュリティの実践者、データサイエンティスト、あるいはセキュリティデータエンジニアです。あなたはDatabrikcsのプレゼンテーション[Large Scale Threat Detection and Response(大規模な脅威の検知および対応)](https://vimeo.com/274267634)を見て不思議に思いました。「自身のセキュリティオペレーションでどのようにDatabricksをトライしてみたらいいのだろう？」この記事では、パッシブDNS(pDNS)を用いたリモートアクセスによるトロイの木馬、および脅威インテリジェンスの検知をどのように行うのかを学びます。途中では、[Delta](https://databricks.com/blog/2017/10/25/databricks-delta-a-unified-management-system-for-real-time-big-data.html)、[Spark](https://databricks.com/jp/spark/about)、[MLflow](https://databricks.com/product/managed-mlflow)を用いて、どのようにDNSデータを格納、分析するのかを学びます。よく知っている通り、持続的標的型攻撃とサイバー犯罪者はDNSを悪用することで知られています。攻撃者は[コマンドアンドコントロール](https://www.darktrace.com/en/blog/catching-apt-41-exploiting-a-zero-day-vulnerability/)、[ビーコニング](https://www.activecountermeasures.com/blog-beacon-analysis-the-key-to-cyber-threat-hunting/)、[攻撃者ドメインの解決](https://www.darktrace.com/en/blog/catching-apt-41-exploiting-a-zero-day-vulnerability/)のためにDNSプロトコルを使用します。これによって、アカデミーの[研究者](https://arxiv.org/ftp/arxiv/papers/1408/1408.1136.pdf)と[業界グループ](https://attack.mitre.org/techniques/T1071/004/)はセキュリティチームに対して、脅威を捕捉、検知、調査、対応するために、DNSイベントを収集し分析することをアドバイスしています。しかし、すぐに分かることですが、これはそれほど簡単なことではありません。
![blog-detecting-criminals-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/8ce0adac-2a1c-1e67-cedc-755da8e673d9.png)

# DatabricksによるAgentTeslaRATの検知

以下の[ノートブック](https://github.com/databrickslabs/splunk-integration/blob/master/notebooks/source/DNS_Analytics.py)を用いることで、[Agent Tesla RAT](https://blog.checkpoint.com/2020/05/11/april-2020s-most-wanted-malware-agent-tesla-remote-access-trojan-spreading-widely-in-covid-19-related-spam-campaigns/)を検知することが可能になります。[Domain generation algorithms](http://www.covert.io/getting-started-with-dga-research/)(DGA)、[typosquatting](https://www.mcafee.com/blogs/consumer/what-is-typosquatting/)に対する分析、[URLhaus](https://urlhaus.abuse.ch/)による脅威インテリジェンスのエンリッチメントを用いることになります。途中でDatabricksの以下のコンセプトを学びます。

- データ取り込み
- アドホック分析
- DSNクエリーのようなイベントデータのエンリッチ方法
- モデル構築
- バッチ、ストリーミング分析

なぜ、Databricksを使うのでしょうか？これは、セキュリティ分析において最も困難なことは分析ではないためです。あなたはすでに大規模DNSトラフィックログの分析は複雑であることを知っています。セキュリティコミュニティの同僚たちは、課題は大きく三つのカテゴリーに属すると述べています。

- **デプロイメントの複雑性:** DNSサーバーはどこにでもあります。クラウド、ハイブリッド、マルチクラウドのデプロイメントはデータの収集、単一のデータストア、デプロイメント全体にわたる一貫性のある分析の実施を困難なものにします。
- **技術の限界:** レガシーなSIEM(Security Information and Event Management)とログ集積ソリューションは、ストレージのデータボリューム、分析、ML/AIワークロードに対してスケールすることができません。特に、脅威インテリジェントのエンリッチメントのようなデータの結合になると問題が顕著になります。
- **コスト:**　SIEMやログ集約ソリューションシステムは、登録するデータのボリュームによって課金されます。膨大なSIEM/ログのライセンス費用、ハードウェア要件はDNS分析のコストを膨大なものにします。一つのクラウドサービスプロバイダーから別のプロバイダーへのデータ移行もまた、コスト、時間を消費するものとなります。クラウドにおけるハードウェアに対する事前コミットやオンプレミスにおける物理ハードウェアのコストは、セキュリティチームに対する障害となります。

これらの問題に対応するために、セキュリティチームはクラウド規模でデータを取り扱い、どこにあるデータでも分析でき、ネイティブでストリーミングとバッチをサポートし、コラボレーティブなコンテンツ開発機能を持つリアルタイムデータ分析プラットフォームを必要とします。そして、ハードウェアに対するコミットを回避するために、誰かがシステム全体の柔軟性を確保したいと考えたのであれば、これは非常に素晴らしいことだと思います！

以下が、分析を実行するためのDatabricks[ノートブック](https://github.com/databrickslabs/splunk-integration/blob/master/notebooks/source/DNS_Analytics.py)です。このノートブックをDatabricksコミュニティエディション(無料)やご自身のDatabricksデプロイメントで利用することができます。数多くの行数が含まれていますが、ハイレベルのフローは以下の通りとなります。

- AWS S3バケットから[パッシブDNS](https://www.farsightsecurity.com/technical/passive-dns/passive-dns-faq/#:~:text=%22Passive%20DNS%22%20or%20%22Passive,can%20be%20indexed%20and%20queried.)データを読み込む
- DNSに対するスキーマを指定して、Deltaにデータをロード
- 文字列マッチによるデータの探索
- DGA検知モデルの構築。typosquattingモデルの構築
- URLhausによる脅威インテリジェンスを用いたDGAとtyposquattingのアウトプットのエンリッチメント
- 分析の実行および[AgentTesla RAT](https://blog.checkpoint.com/2020/05/11/april-2020s-most-wanted-malware-agent-tesla-remote-access-trojan-spreading-widely-in-covid-19-related-spam-campaigns/)の検知
![blog-detecting-criminals-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/48ec9a02-59da-6ad0-bb4e-aea1dafde64e.png)

ノートブックのそれぞれのセクションにはコメントがあります。ご質問があればcybersecurity@databricks.comにご連絡いただければと思います。ご質問やノートブックを理解しやすく、デプロイしやすくするための提案を心待ちにしています。

是非、コミュニティエディションあるいはお使いのDatabricksアカウントにログインいただき、[ノートブック](https://github.com/taka-yayoi/public_repo/tree/main/DNS_Analytics)を実行してみてください。フィードバックをお待ちしています。

こちらの[リンク](http://community.cloud.databricks.com/)から[コミュニティエディション](http://community.cloud.databricks.com/)のアカウントを作成することができます。その後で、ノートブックをインポートしてみてください。

- Databricksコミュニティエディションにアクセス
- 左のナビゲーションでworkspaceをクリック
- workspaceペインの空白部分を右クリックしてimportをクリック
- Import from URLを選択
- URLフィールドに[リンク](https://github.com/taka-yayoi/public_repo/tree/main/DNS_Analytics)を貼り付け

実行するノートブックのインポート方法の詳細に関しては、[こちら](https://qiita.com/taka_yayoi/items/c306161906d6d34e8bd5)を参照ください。

[ノートブックを試してみる](https://github.com/taka-yayoi/public_repo/tree/main/DNS_Analytics)

### Databricks 無料トライアル

[Databricks 無料トライアル](https://databricks.com/jp/try-databricks)