birabiraのめも

忘れっぽいのでここにメモをしていきます

ハニーポットをパワーアップさせた。

AWSのLightSailが少し安くなっていた。
RAM 1Gでも$5なのでとてもおすすめ。

前回のハニーポットはRAM 500Mで制限がとても多かったのでいっそのこと最初から作り直した。
作るのに4日くらいかかった。その代わりSystemdやrsyslogとか若干わかるようになった。うれしい。

便宜上、suricataとufwもハニポってことにしてるけど許してくださいな。

構成

f:id:bira09:20181109205054p:plain AWSVPSに各ハニーポット等を設置して、それらをS3にいったんアップロード。
自宅のPCにインストールしたELKにてログを収集して分析する。
前回と比べてufwとdionaeaが追加された。

使用したもの

作り方

OS: Ubuntu 18.04
方針として各ログをLogrotateのPostscriptでs3にアップロードします。

詳細は各情報元をご参照ください。
「動けばいい」で作っているのでこの記事によって引き起こされた問題等の責任は負えません。
rootで作業したのでsudoとか使ったとか忘れました。

もの ばしょ
Suricata /var/log/suricata/eve.json
Dionaea /opt/dionaea/var/lib/dionaea/dionaea.json
Cowrie /var/log/cowrie/cowrie.json
ufw /var/log/ufw.log
WOWhoneypot /home/wow/wowhoneypot/log/access_log

ハニポ

Suricata

以下のコマンドを実行
2. Installation — Suricata 4.1.0-dev documentation

sudo add-apt-repository ppa:oisf/suricata-stable
sudo apt-get update
sudo apt-get install suricata

また、ルールの管理は suricata-update が便利だったのでこちらを使います。
Quick Start — suricata-update 1.1.0dev0 documentation

pip install --upgrade suricata-update
sudo suricata-update

これらのコマンドを使うことでルールはいろいろ設定されています。
アラート以外にもHTTPやssh等の監査ログ、統計ログが出てしまっているので /etc/suricata/suricata.yml で調整します。

Dionaea

最近アップデートされたようですね。非常にインストールが楽になったような気がします。
Ubuntu 18.04でも以下のコマンドで動きました。
Installation — dionaea 0.8.0 documentation

git clone https://github.com/DinoTools/dionaea.git /opt/dionaea
cd  /opt/dionaea

sudo apt-get install \
    build-essential \
    cmake \
    check \
    cython3 \
    libcurl4-openssl-dev \
    libemu-dev \
    libev-dev \
    libglib2.0-dev \
    libloudmouth1-dev \
    libnetfilter-queue-dev \
    libnl-3-dev \
    libpcap-dev \
    libssl-dev \
    libtool \
    libudns-dev \
    python3 \
    python3-dev \
    python3-bson \
    python3-yaml

mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/dionaea ..

make
sudo make install

http serviceについては必要ないので設定から削除して、ihandler-enableにlog_jsonを移動させます。

Cowrie

これをなぞるだけ。
cowrie/INSTALL.md at master · cowrie/cowrie · GitHub
ログ出力先の設定を変えました。

ufw

ufwはlogging levelをhighに設定。 ufwのログはrsyslogにて制御しているため適宜設定を変えます。

WOWHoneypot

こちらのインストール方法を見ながらインストールします。 github.com

Logrotate

各ハニポのログは1時間おきにs3にアップロードしたいと考えました。
その時に有効なのがLogrotateです。 postscript というものを使うと任意のコマンドを実行することができるためs3にアップロードするように調整します。

サービス登録

OSをシャットダウンしたとしても自動で起動するようにサービスとして登録を行います。
Serviceセクションの Type をうまく使うとハニポの起動コマンドでもサービスとして登録できました。

自宅ELK分析環境

OS: CentOS 7.X 今回はELKを分析環境として利用します。メモリは8GBぐらいあれば足りるでしょう。
ElasticSearch、Logstash、Kibanaを以下のURLからダウンロードします。

www.elastic.co

それぞれ yum localinstall 等でインストールしましょう。

kibana

kibanaはlocalhostのみで待ち受けているため以下を変えます。
server.host: "0.0.0.0"

http:// IPアドレス:5601でアクセスができるはずです。

Logstash

ハニポのログをElasticSearchにぶっこむ設定を行います。本来であれば型をしてしたテンプレートファイルを作成すると思いますが、今回は面倒なので作成しません。

サンプルとしてufwの取り込み設定のコンフィグをあげます。

gist.github.com

inputセクションでどこからデータを持ってくるのかを指定して、filterセクションでデータの加工を行います。最後にoutputセクションでどこへデータを送るのかを指定します。

iptables.patはこちらからいただきました。
iptables Grok Pattern · GitHub

特にfilterセクションではとても便利で、UAの解析やgeoipの取得やリバースDNSの取得など様々な加工を行うことができます。
非常にたくさんのプラグインがあるのでぜひ活用してください。

www.elastic.co

configのアップロードは別の記事にしようと思います。

それぞれハニポのログを別のパイプラインとして登録をすると以下のようにいい感じになります。 f:id:bira09:20181124100046p:plain

ここまでくるとs3を経由してハニポのログが自宅PCのElasticSearchに入りました。 kibanaから確認してみましょう。

kibanaでの設定

まずはインデックスを設定する必要があります。以下の順にクリックします。
Management → index Patterns → Create Index Pattern 

f:id:bira09:20181124100343p:plain

画像のようにハニポのログが種類別、日付別のインデックスになっているのでそれぞれインデクスを作成します。 f:id:bira09:20181124100449p:plain

ログを見てみよう

honeypot-suricata-*のログを見てみます。
いい感じにカラムを指定するとこんな感じになります。SuricataはIDSなのでシグネチャ名とペイロードまで確認することができますね。 f:id:bira09:20181124101734p:plain

honeypot-*で特定のIPアドレスを指定して検索してみましょう。
このインデックスであればハニーポットの種別を問わない検索ができます。
特定のIPアドレスがさまざまなログを残してくれているようです。ありがとうございます。
f:id:bira09:20181124102414p:plain

さいごに

T-POTという素晴らしいハニーポット分析環境がありますが、自分で一から作ってみると環境に愛着がわいておすすめですよ。

TODO

  • configの需要が有りそうならconfigのブログをかく
  • 気が向いたときにログの記事をかく
  • ログ分析のやり方の記事をかく