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のブログをかく
  • 気が向いたときにログの記事をかく
  • ログ分析のやり方の記事をかく

久しぶりにはにぽ植えた

はじめに

タイトル通り久しぶりにハニーポットを植えてみました。

前回はハニーポットとしてcowrieを使い
分析環境としてSplunkを使い、リアルタイム分析ができる環境でした。

まあこれでもよかったのですが、どうせならもうちょっと拡大したいと思い
新しく環境を作りました。

T-Potでええやんとも思いましたが、VPS上で運用するにはお金もかかるし
家にリソースが余っているパソコンがあったため有効活用しようということで使っていません。

使ったものについて

  • Cowrie
  • WOWHoneypot
  • Suricata

Cowrie

おなじみSSHTelnetに特化したハニーポット
以前から使ったことがあったという理由だけでチョイス。

WOWHoneypot

dionaeaとかglastopfとかようわからんし環境作るのが面倒だった。
しかしWOWHoneypotはほんとお手軽。

Suricata

OSSのIPS/IDSはSnortしか知らかなったけど、会社の人にSuricataめっちゃええよということを教えてもらった。
なによりペイロードもログに出力される。
一般的なルールで検知したログととハニーポットのログを突合させて何か見えるといいな。

構成について

f:id:bira09:20180314223608p:plain

ハニポはAWSのLightsailで構築。
logrotateで1日一回s3にログをアップロードするような構成。

自宅PCのELKは
Logstashでs3に取りに行く。
cowrieとSuricataに関してはjsonなのでそのまま設定。
wowhoneypotについてはgrokを使って自分でパース。

Kibanaについて

dashboardはVisualizationから作って
Visualizationはsaved searchからつくるって考えるとどう構成するのがいいのか考え中。
とりあえずは検索できるのでまあよし。

画像とか

suricata

f:id:bira09:20180314230915p:plain
どのシグネチャを有効にするのかを考えなければ
f:id:bira09:20180314231241p:plain

cowrie

よく見るやつ。
password
f:id:bira09:20180314231820p:plain

input command
f:id:bira09:20180314231624p:plain

wowhoneypot

いろいろなところにアクセスしようとしている。
f:id:bira09:20180314232232p:plain

今後

  • 分析した結果とかをブログに書いていきたい。
  • Suricataのルールの自動更新
  • Suricataのルールの選定
  • wowhoneypotのフロント改善
  • はにぽ自体をいろいろなところに設置
    • Indexの設計しなおし?
  • kibanaのダッシュボード作る
  • ufwのログも取り込んで統計取りたい

ufw まとめ

ufwめんどかったから使ったコマンドまとめる

firewallを有効化する

# ufw enable

Firewall is active and enabled on system startup

firewallを無効化する

# ufw disable

設定確認

# ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
80                         ALLOW IN    Anywhere
443                        ALLOW IN    Anywhere
Anywhere                   ALLOW IN    192.168.1.2
80 (v6)                    ALLOW IN    Anywhere (v6)
443 (v6)                   ALLOW IN    Anywhere (v6)

設定追加

ポートで

ufw allow 80

ipで

ufw allow from 192.168.1.2

ポートフォワーディング

1.フォワーディング有効化

# vim /etc/ufw/sysctl.conf
8行目辺り
net/ipv4/ip_forward=1
を有効化

2.ポートフォワーディング

# vim /etc/ufw/before.rules

*nat
:PREROUTING ACCEPT [0:0]
-A PREROUTING -p tcp --dport 2222 -j REDIRECT --to-port 22
-A PREROUTING -p tcp --dport 2223 -j REDIRECT --to-port 23
COMMIT
を先頭行に追加

設定有効化

ufw reload

はい。

三級ファイナンシャル・プランニング技能士になった

せっかく資格試験に受かったので一応記録として残しておこうと思う。
資格はめっちゃ簡単らしいけど、それなりに勉強しないと落ちる。

FPって?

www.u-can.co.jp
ユーキャンのページが分かりやすかった。
要するに保険とか、税金などその名の通りお金に関する資格。
知っといて損はないよね

受けた経緯

去年の年末、バイトで稼いだ金額が103万円超えるとか超えないとかで
どうして超えると面倒なのかとかを調べてたところから始まり。
そこから、社会人になる上で保険とか税金とか知らないとヤバくね???
って思ったのが勉強する決心を決めた。

勉強量について

たぶん2週間くらいで受かると思う。
ただ、相続とか贈与とかは現状自分には関係なかったところだったから
イメージが掴めず、大変だった。

感想

この資格を受けて本当に良かったと思う。
今まで知らなかったようなこととか勉強できたし
こういうのって法律で決まってたりするから知らないからというものでもないもの。
これからも継続的に勉強をしていきたいと思う。

あと、合格証書がかっこいい。うれしい。
みなさんも受けてみてはいかがでしょうか。

トラコン最優秀賞とった

せっかく最優秀賞とったので調子乗ってブログにまとめたいと思います。
めっちゃうれしい。 あとこれは個人の感想です。

blog.hnron.net

こちらのブログが 素晴らしかったので真似して書こうと思います
今後トラコンに出る人の参考になれば幸いです


お前誰?

情報科学専門学校 情報セキュリティ学科4年
サークルの「IPFactory」に在籍している普通の学生

近い将来、SOCで働くことが決まっているため、
ログ解析とかSIEMとかの技術を勉強してる


トラコンについて

トラコンって?

icttoracon.net

今まで第2回大会と第4回大会、今回の第6回大会に出場しました
第2回大会は今でも印象に残っていて1日目は環境構築を行って、2日目はその作った環境に トラブルが起きてそれを直すって感じだった
当時は全く勉強をしていなかったカスだったけど
一緒に出てくれた先輩とかが強くてものすごい勉強になってこのコンテストやべぇなとなっていた

昨今のトラブルシューティングコンテストは学生主体となり、やり方がガラッと変わったので
1日目からがっつりトラブルシューティングを行うことになった。しんどさが倍になった。

勉強をする範囲も膨大なのでトラコン用の勉強をすることはほぼ不可能で
勝つためには日ごろ興味を持ってネットワークやサーバーの構築を行っているかがカギとなる

結果発表の時に運営の人が言っていた「経験が必要」的な言葉は 「ネットワークやサーバーを日ごろからいじってる」って意味なのかなと思う
このコンテストを機にネットワークやサーバーを好きになる人もいるだろうし 学生ならとりあえず一回は出てみよう! ほんとおススメ!

今回の問題はこんな感じでした。


IPFactoryの作戦

  • メンバーそれぞれの技量に任せる

これだけだった。

ネットワーク3人、サーバー1人、なんでも1人の構成で出場。私はサーバー担当。

ある程度チーム内でこの人は何ができて何ができないかは知っていたため
ネットワークっぽい問題をネットワークチームにぶん投げ。
ネットワークチームはとりあえず問題をみておおよその難易度の検討をつけて 1問2人であーだこーだ言いながらやってたみたい。たぶん。

サーバーチームはWeb寄りの私と、サーバーガチプロのなんでも屋一人で分野ごと分担。
1人1問でずっとやってた。

みんな解きたい問題勝手に解いてって感じで、一応同じ問題解くと効率悪いと思って割り当てだけしてた。
ネットワークチームは1問目と3問目やって私は2問目、きみは4問目。ハイ頑張ってスタイル。

事前に集まって作戦会議とか事前勉強とかは全くしてない(小声)

f:id:bira09:20160908180436p:plain

いや、作戦会議してました。

情報共有はどうしようかとなったときに、slackでいいかとなりました。
configをすぐ張り付けられるし便利そうなため。

ホワイトボードも一応使ったけど、構成図を書いただけであんまり使ってなさそうだった。 席から遠くて書くのも面倒だし、書いている時間がもったいなかった。(サーバー側だったからかも)

ネットワークチームは椅子をルーターの前までもっていってやりやすいようにやってたみたいだし


 1日目

チームの一人が深夜バスに乗り遅れて、朝一の新幹線で颯爽と登場
チームみんな予定通り到着。

いざコンテストが始まってみるとサーバーにつなぐための自分のIPアドレスがわからなかったりでWireshark必須だった。

問題自体は自分の分野だったしそこまで苦ではなかった。 sql_modeとか、pam_mountについては初めて知ったし
「めっちゃ便利」とか思ってた。

1日目は普通に自信あったし、1日目終了時でどこのチームも「だめでした、、、」って言ってたので
「勝ったわこれ」と心の中で思ってたのは秘密。


2日目

午前中も調子よく問題が解けて良かったけど
午後は完全に意味不明で終わった。

作戦は特に変わらなかったけど、ネットワークチームから1人持ってきて
サーバー問をやってもらってたけど撃沈

どう考えても2日目の午後の問題多いし原因わからんしで、少しだけイライラしてた♡ 3位くらいになれればいいかなと思ってたけど1位になれたのでうれしい


感想

ドMが集まるこのコンテストはかなり楽しいし、かなりしんどいけど本当にためになると思うし
ログの大切さだとかネットワーク、サーバーの知識を問われるコンテストはあんまりないのでは?と思う

学校でも若干持ち上げてくれるし、神奈川新聞にも小さな記事で載ることができたし
いい思い出ができた。

私はこれ以降、このコンテストに出るつもりはあまりないです。
なので後輩が出場してもらってぜひ上位をとってきてほしいです。

がんばって。


といた問題

ELFのバイナリがあってそのバイナリがMySQLに対して問い合わせているよう。
旧環境、新環境の2つがあって新環境に移行したら、いろいろできなくなっちゃったって話みたい。

straceでエラー文確認して、ググって対処して終わり。

  • pam_mountのやつ

なんか設定を見るとパスとかがほんと微妙に間違っていたから
動くように直した

これも微妙に設定が違っていたからいろいろなおした

Pycharmでライブラリのパスを追加

ほんとにいつも忘れるのでメモ

PyCharm -> Preferences -> Project Interpreter

この時の一番右上の設定マークのボタンを押してmoreを選択。

そして、+とかーとかのところにある
f:id:bira09:20141124030022p:plain
の一番右のフォルダっぽいのを選択。

+でパスを追加する

OK!