wp.bmemo.pw

自分のための覚書・備忘録

セキュリティー

安全で小回りの効く高対話型Honeypotを作る

投稿日:

知っている人がこのアドベントカレンダーに投稿していたので、過去にやっていた研究の話をアウトプットしようと思い私も投稿します。

ただし、筆者はコンピュータ初心者であり、今回の内容もCSS2016に出したものなのでかなり古いです。あと、直前に書き始めたので内容がスカスカです。それでもよろしければお付き合いください。

1. 高対話型がやりたい

既にナンセンスな分類かもしれませんが、Honeypotは低対話型と高対話型に分けることができます。低対話型で代表的なのは、Kippoもとい後継のCowrieでしょう。実際に使ったことのある人ならわかりますが、SSH低対話型は侵入した攻撃者を観察しようとしてもコマンドの自由度や再現度が極端に低いため、思うように活動してくれないことがあります。また、Kippo、Cowrieはハニーポットであることが判別可能なシグネチャが複数知られています。

ハニーポットであることをバレずに、攻撃者の活動を隅々まで観察するには、実際のファイルシステムを触らせる必要があります。しかしこんな事やってたら、本当に踏み台にされ犯罪加担してしまう可能性がありますし、(物理・VM)マシンコストも馬鹿になりません。

2. Linuxコンテナを使う

Docker を使用することで、ホストコンピュータから安全に隔離し、ネットワーク・計算リソースを制限した上で攻撃者の活動を観察することができるのではないかと考えました。コンテナはVMに比べてリソース消費が格段に少なく、軽量です。

1攻撃者に1環境を与えることができるし、瞬時にクリーンな環境を提供できます。起動元のLinuxイメージは非破壊で、更新はレイヤーファイルシステムを採用しているため容量もそこまで食いません。ログやファイルの収集は、自作してもいいですが、Dockerに元々ある機能でも結構できます。

で、試作したものをCSS2016で発表しました。多くの問題を抱えているため実用的ではありませんが、Cowrieに比べてより活動的でいろいろ観察できて楽しかったです。


3. アーキテクチャ

3.1 要件

  • 侵入しやすい環境
    • 任意のID/PWでログイン可能
  • CPU・メモリ・ネットワークに制限を設ける
    • DoS対策
  • コンテナに生存条件を設ける
    • 制限時間
    • 送受信トラフィック量

3.2 ライフサイクル

  • SSHサーバをコンテナ内で起動し、22番にポートフォワードします
  • ログイン要求が来た場合、要求のID/PWで即座にユーザを作成
  • ログインを実行し、pty要求がある場合はshellを返却
  • 生存条件がしきい値に達するまでコンテナを稼働
  • コンテナが停止したらログやファイルの収集

4. 動かしてみた

Cowrieでは見られなかった面白い活動をちょっとだけ書いてみました。

  • 変な命令サーバの構築スクリプト
    • exec呼び出しだったので、スクリプト実行が最後まで観察できた。
  • マイニングマルウェア
    • サーバの性能をチェックして色々最適化して動かしてた。
    • CPUを絞っててHash/sが出なかったのかすぐ切断
  • DoSしようとしてたスクリプト
    • うまくトラフィック制限が効いたのですぐコンテナ死んだ
  • VPNサーバ構築
    • これはスクリプト実行が失敗してた
    • スクリプト完走後やばそうなドメインリストっぽいファイルを落としていた

5. 問題点

色々Cowrieと違う活動が見れたんで面白かったんですが、色々問題点があるため実用的ではありません。

  • コンテナであること
    • ホストのカーネルにコンテナ脱出の脆弱性あったらすなわち死
    • ホスト ▶ VM ▶ コンテナの構成が一番良さそう(本末転倒感)
    • その後登場したgvisorってどうなんですかね?
  • Twistedで構築したこと
    • ハニポばれる
    • OpenSSHでうまくやれる方法ないだろうか
  • 制限時間やトラフィック制限の最適化
    • ベストな値って・・・?
  • [追記]:Syscallの監視ができていない
    • 他の人が別研究でやっていた成果物が使えそうだなとか妄想してたら数年経ってました

6. まとめ

内容スカスカすぎて公開するのが恥ずかしいですが、まとめとしては

  • 2015~2016年にLinuxコンテナでSSHハニポ開発してました
  • 高対話型の自由度と、低対話型の手軽さを手に入れた
  • 攻撃者ログイン時に、そのID/PW通りにユーザ作れば誰でもWelcome状態を作れる
  • Cowrieと違った攻撃者の活動が観察できて非常に面白い
  • カーネルやコンテナに脆弱性があった場合ってやばくね?
    • DirtyCowとか
  • TwistedだとCowrieと同じなので、下のプロトコルレベルでは何も成長していない

詳細は2016年CSSから論文を引っ張り出してください。コードは2,3年前のウンコードで恥ずかしいので考え中です。

以上

-セキュリティー
-, , , ,

執筆者:


comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

関連記事

GitHubの優秀な検索のせいでAWSなどのアクセスキーが流出している件

Facebook Twitter Pinterest GitHubって便利ですよね。この前AWSを使ったコードを書きました。 AWSの全データセンターから最も価格の低いスポットインスタンスを検索するス …

強力だけど覚えやすくて打ちやすいパスワードの作成方法

Facebook Twitter Pinterest 正直パスワードがランダム文字列だと覚えられないし打ちにくい。楽したい でも世間はそれを許してくれない。比較的強力だけど覚えやすいパスワードの作成方 …

「ゴルスタ」は個人情報収集アプリなのか?アプリ権限を確認してみる

Facebook Twitter Pinterest 「ゴルスタ」アプリは中高生限定のアプリで同年代同士匿名でコミュニケーションを撮ったり出来るアプリなのですが,その運営体制にちょっと火がつきました …

カスペルスキーがWEBサイトに不審なスクリプトを埋め込んでいた件

Facebook Twitter Pinterest タイトルが不穏ですが調査やサポートに連絡した結果「通常使用は問題ない」との結論になりましたので先に言っておきます。じゃあなぜ記事にしたかというと「 …

WordPressとMarkdownを使ったXSS

Facebook Twitter Pinterest 去年見つけたXSS紹介します. WordPress上でとあるMarkdownプラグインを使用すると,JavaScriptの投稿を禁じられたユーザー …