はじめに
第1章 一般的なハニーポットとWOWHoneypot
第2章 WOWHoneypotを植えてみる
第3章 マッチ&レスポンスルール詳解
第4章 ログ分析の参考事例
おわりに
どうも。ハニーポッターの森久です。
本書はセキュリティ技術の1つである「ハニーポット」の遊びかたを紹介する本です。ハニーポットは、あえて攻撃を受けることを前提としたシステムであり、リアルなサイバー攻撃を目の当たりにすることができます。
ハニーポットが記録したログを分析することで、ログ分析技術の向上はもちろんのこと、ソフトウェアやプログラムの動作を理解したり、脆弱性の知識と悪用のされ方を理解したり、サイバー攻撃が身近なものであることを感じ取ることができます。またログ分析の過程で、攻撃者の狙いをつまびらかにし“ 何をしようとしていたのか”を想像することが大切であり醍醐味の1つです。
ハニーポットを運用する人のことを、筆者は勝手にハニーポッターと呼んでいます。初心者ハニーポッターが困ることといえば、ハニーポットの構築とログ分析の2点です。ハニーポット自体が非常にニッチな技術であり、日本語の情報はとても少ないです。筆者の経験上、ソースコードからインストールすると、ライブラリの依存関係で詰まってしまうことがあり、公式ドキュメントが更新されておらず参考にできないといったことがありました。ハニーポッターの悩みは、先に挙げた点の後者であって欲しいのですが、その前段階であるハニーポット構築で時間を費やしてしまうのはもったいないことです。そこで誰でも手軽に構築できるハニーポットが必要だと考えました。
ハニーポットと一言で表すことはできますが、実際には様々な方法で分類することができます。本書は、その中のサーバー側低対話型として動作するWOWHoneypot(Welcome to Omotenashi Web Honeypot)を紹介します。筆者が作成したこのハニーポットソフトウェアの概要を簡単に説明すると、攻撃者に“気持ちよく”攻撃をしてもらえるようにHTTPの要求内容にあわせて応答内容を変える仕組みを持ったPythonプログラムです。構築に複雑な手順はありません。実行に必要なものはPython3だけです。
さあ、WOWHoneypotを植えて、あなたもハニーポッターになろう!
表記関係について
本書に記載されている会社名、製品名などは、一般に各社の登録商標または商標、商品名です。会社名、製品名については、本文中では©、®、™マークなどは表示していません。
免責事項
本書に記載された内容は、情報の提供のみを目的としています。したがって、本書を用いた開発、製作、運用は、必ずご自身の責任と判断によって行ってください。これらの情報による開発、製作、運用の結果について、著者及び出版社はいかなる責任も負いません。
底本について
本書籍は、技術系同人誌即売会「技術書典4」で頒布されたものを底本としています。
本章ではハニーポットについて説明します。そしてWOWHoneypotがどのような背景で誕生し、どういった特徴を備えているのか解説します。
本書では、セキュリティ技術の1つであるハニーポット(Honeypot)を取り上げます。ハニーポットは普及しているとは言い難く、ニッチな技術なので、ハニーポットについて知らない方もいると思います。そこで最初にハニーポットとはどのようなものかを紹介します。
ハニーポットとは、あえてサイバー攻撃を受けることを前提としたシステムです。そのためハニーポットが記録するログを観察することで、生の攻撃情報を収集することができます。そしてログから攻撃者の狙いをつまびらかにすることが、ハニーポットの醍醐味です。
ハニーポットでログを得るためには、まず環境構築が必要です。本書ではハニーポットを構築することを「ハニーポットを植える」と表現します。またハニーポットを運用する人のことを「ハニーポッター」と呼んでいます。誰でもハニーポッターになることができますが、1つだけ覚えておいてほしいことがあります。それは、ハニーポットは目的に合わせて構築し、運用すべきであるということです。
もしもあなたが何の目的もないのであれば、本書を手に取ることは無かったでしょう。おそらく何か1つはセキュリティに関する問題や悩み、モチベーションがあると思います。どのような種類のハニーポットがあるのかは次節で紹介しますが、あなたの目的に適合するハニーポットを選ぶ必要があります。ハニーポットを運用する目的としていくつか例を挙げます。
・生のサイバー攻撃を自分の目で見てみたい
・攻撃元IPアドレスを収集してブラックリストを作成したい
・サイバー攻撃の流行を調べたい
・どこの国からサイバー攻撃が多いのか集計をしたい
・本番システムの堅牢化に使いたい
・マルウェアの情報収集に使いたい
上記のような目的は、ほんの一部です。中にはハニーポットを使ってみたかったというカジュアルな動機の人もいるかもしれません。繰り返しになりますが、あなたの目的にあったハニーポットを選択してください。そうでなければ、必要な情報が十分に得られず、ハニーポットの構築や分析にかけた時間やお金が無駄になるおそれがあります。また目的によりますが、ハニーポットよりも良い結果を得られる別の技術や情報源があるかもしれません。
ハニーポットには様々な形態があります。本書では、大まかに動作する仕組み(サーバー側・クライアント側)と環境(低対話型・高対話型)の4種類に分けて考えます。
ハニーポットが動作する仕組みとして、サーバー側とクライアント側に分けることができます。サーバー側はWebサーバーやSSHサーバーといったサーバーソフトウェアとして動作するハニーポットです。一方、クライアント側は、Windows OSのようなユーザが使うソフトウェアとして動作するハニーポットです。
ハニーポットの実装として、実在するソフトウェアを模しているものが低対話型です。一方、実在するソフトウェアそのものをハニーポット環境として使う場合、高対話型となります。
以上の分類方法を基に、ハニーポットのソフトウェアの例を表1-1に示します。
サーバー側 | クライアント側 | |
高対話型 | WordPrssやDrupalを使った偽のポータルサイトなど | StarC(https://github.com/nao-sec/starc)など |
低対話型 |
WOWHoneypot, Glastopf(https://github.com/mushorg/glastopf), Dionaea(https://github.com/DinoTools/dionaea), Cowrie(https://github.com/micheloosterhof/cowrie)など |
Thug(https://github.com/buffer/thug)など |
簡単にそれぞれの組み合わせについて説明します。サーバー側高対話型のハニーポットは、実在するソフトウェアを使います。攻撃者視点では、本物のソフトウェアが動いていることからハニーポットと気づかずに攻撃してしまいます。そのためリアルな攻撃情報を収集することができますが、0dayの脆弱性を悪用された場合、ミイラ取りがミイラになるごとく、システムを不正利用されてしまう可能性がある欠点があります。
サーバー側低対話型のハニーポットは、利用者が多く、ハニーポッターが最初に利用するのにオススメです。たとえば本書で紹介するWOWHoneypotやSSHサーバーを模倣するCowrieなどです。ハニーポットとして動作する目的で作られているため、ログの記録が高対話型に比べて分析に特化しています。また機能が限定されているので、動作が軽く、サーバーへの要求スペックが低い点もメリットです。一方、実在するソフトウェアを模倣はしているものの、全く同じではないため、ちょっとした所作で攻撃者にハニーポットであることを見破られてしまう可能性があります。
クライアント側高対話型のハニーポットは、いわゆるマルウェアのサンドボックス環境に類似しています。最新のパッチを適用していないWindowsに、古いバージョンのFlashPlayerやJavaなどをインストールしておいて、不審なWebサイトにアクセスしてExploitKitによる攻撃を観測することなどに使われます。
クライアント側低対話型のハニーポットは、ブラウザーのようなユーザが普段使うことの多いソフトウェアを模倣したソフトウェアです。高対話型のようにOSやソフトウェアなどを用意する手間がかからず、環境構築が手軽にできます。しかしブラウザーやソフトウェアを完璧に模倣することはできないため、脆弱性を狙った攻撃を受けたとしてもハニーポット側が対応していなければ、正しく処理できません。その結果、攻撃を取りこぼしてしまう可能性があります。
ハニーポットはそれぞれ一長一短があります。ハニーポットを使う目的に合わせて選択する必要があることは、すでに述べたとおりです。初めてハニーポットを使う人にとっては、どれが最適なのか悩むかもしれません。4つの分類の中で、初心者向けで、なおかつ手軽に導入でき、ハニーポットの楽しさを感じることができるものは「サーバー側低対話型」のハニーポットです。高対話型の場合、まず環境構築のハードルがあり、また0dayの脆弱性が公開された場合のハニーポット環境のコントロールが困難です。クライアント側の場合、そもそも不審なWebサイトやExploitKitの情報を入手できないと、攻撃を観測することが困難です。これらに対して、サーバー側低対話型のハニーポットの場合、ハニーポットのインストールだけで環境構築が完結する場合が多く、実在するソフトウェアの0dayの脆弱性が公開されたとしてもハニーポットは影響を受けません。さらにサーバー側はインターネットにポートを公開しておくだけで、容易に攻撃を観測することができます。
最後に、筆者が主催しているハニーポッター技術交流会の参加者アンケートの調査結果に触れたいと思います。このイベントは、ハニーポットを運用するハニーポッターやハニーポットに興味のある人々が集まり、発表や議論など技術的な交流を通して、セキュリティ業界の発展に貢献することが目的のイベントです。
2018年2月24日に開催した第3回ハニーポッター技術交流会の参加申込者へ、運用しているハニーポット、もしくは運用してみたいハニーポットについてアンケートをしました。その結果を表1-2に示します。(複数回答可。回答人数:105人。無回答を含む)
回答項目 | 選択数 |
サーバー側低対話型ハニーポット(WOWHoneypot, Dionaea, T-Pot 等) | 52 |
クライアント側低対話型ハニーポット(Thug 等) | 14 |
サーバー側高対話型ハニーポット(WordPress, Apache, IIS 等) | 26 |
クライアント側高対話型ハニーポット(StarC 等) | 9 |
その他 | 3 |
アンケート結果から、サーバー側低対話型のハニーポットが断トツで利用している・してみたいという人が多いことがわかりました。ブログなどでハニーポットの情報公開をしている人を見ても、このハニーポットについての記事が多いので、困ったときに参考・相談できることも踏まえて、初心者向けです。
一方、クライアント側高対話型のハニーポットは、最も選択数が少ない結果となりました。おそらくハニーポットとして動作させるのではなく、Cuckooのようにマルウェアの動的解析をするサンドボックスを使っているセキュリティ技術者が、情報収集の一環として使っている事例が多いように感じます。また環境構築のハードルが高いことも、選択数が少ない要因だと考えます。
ハニーポットはニッチな技術ではありますが、少しずつハニーポッターが増加しているようです。ハニーポットを植えてみたというブログ記事も、ちょくちょく見かけるようになりました。しかしその後の分析に関する記事を継続して書く人は少ないです。ハニーポットで得られる経験が、その人の目的に合ってなかったのであれば続ける必要はありません。もし淡々と自らの技術力を向上させていく孤独なハニーポッターだったのであれば、ぜひお話を聞かせて欲しいです。一人だからこそ自由気ままに活動できるという面はありますが、話す・聞くことによって、知識の整理がおこなわれたり、新たな発見をしたりすることもあります。ぜひともご参加(できれば発表)ください。もちろんハニーポッターでない方の参加もOKです。参加費無料です。
Connpassのグループでイベント管理をしています。グループにはどなたでもご参加いただけます。イベントのハッシュタグは#hanipo_techです。
https://hanipo-tech.connpass.com/