SSL/TLS関連
- 業務中に暗号化方式を確認するタイミングがあったのだがいまいちどれが何やら いまいちわからなかったので、少し書いて覚えることとしたい。
ガイドライン
SSLバージョン毎の脆弱性
- SSL2.0(1994)
- ダウングレード攻撃(最弱のアルゴリズムを強制的に使用させる)
バージョンロールバック(SSL2.0を強制的に使用させる)
SSL3.0(1995)
- POODLE(2014) 特定状況下でCBCモードを利用した際の、パディングチェックの脆弱性、回避策は現状なし
暗号アルゴリズム
鍵交換
- RSA
- DHE
- ECDH
- ECDHE
暗号化
- RC4
- Triple DES
- AES
- Camellia
Hash関数
- SHA-1
- SHA-256
- SHA-384
暗号利用モード
ブロック暗号を利用して、ブロック長よりも長いメッセージを暗号化する
ntp monlist 有効/無効の調べ方
monlistとは?
NTPサーバが過去にやり取りした最大600件のアドレスを返す機能 NTPリフレクション攻撃などに悪用されることで有名
NTPリフレクション攻撃
DDoS攻撃の一種と言われており,大量のトラフィックを攻撃対象のサーバーに送り付けることで帯域を専有してしまう攻撃。 攻撃者はmonlist機能が有効になっている脆弱なNTPサーバを悪用するために、送信元を詐称したmonlist機能のリクエストを送信し、レスポンスを攻撃者のマシンではなく、攻撃対象に返信させる。 このレスポンスが巨大であることを悪用し、DDoS攻撃を行う。
自分のサーバのmonlistが有効か調査する方法
ntpdc -n -c monlist [対象のサーバのIPアドレス]
- レスポンスが「time out,not found 」とかだと無効
- レスポンスが帰ってきたら有効となっているため、設定を見直したほうがよい。
NTPってこの他に設定ミスによる脆弱性で調査する項目あるのかしら??? 情報を得たらまた書きます。
Forward Secrecy
個人的に聞き慣れない単語だったので調査メモ
Forward Secrecyとは?
※wikipeddia引用
長期的な鍵対からセッションキーを生成した際に、のちに長期鍵の安全性が破れたとしてもセッションキーの安全性が保たれるという、鍵交換プロトコルの持つ性質である。
つまり、サーバの秘密鍵が漏洩しても、過去に通信したデータの安全性を確保しようということだと思う。 例えば、公開鍵暗号方式で共通鍵を交換して行う暗号化通信は、秘密鍵が漏洩したタイミングで過去の通信パケットを攻撃者がすべて保持していた場合、その内容が複合化されてしまう。
Forward Secrecyを確保した方法、例えばDHE(ディフィー・ヘルマン鍵共有)とかを使うと秘密鍵をお互いに持っており、片方の秘密鍵がバレても情報は漏洩しない。かつ、鍵をどこかのタイミングで変えることにより、ある場面の秘密鍵が漏洩した場合でも他の場面で使用した秘密鍵はバレていないため、通信を復号化されず、被害を局所化できる。
- 参考サイト
SSL and TLS Deployment Best Practices · ssllabs/research Wiki · GitHub
WOWHoneypotを作ってみた
- 攻撃者の通信を実際に見るためにハニーポット運用を行ってみる
- 今回は初心者向けでかつ簡単に構築が可能なWOWHoneypotを構築する
実行環境
- Raspberry Pi 3 Model B+
- OS : Raspbian Stretch with desktop ver 2018-11-13
構築
- 導入はとっても簡単、作成者の方が用意しているgithubの手順に従えばすぐです
インストール
とりあえずアップデート
$ sudo apt update $ sudo apt upgrade
ハニーポット用のユーザを作ってみる
$ adduser wowhoneypot
git clone (リンク先の手順どおり)
$ git clone https://github.com/morihisa/WOWHoneypot.git wowhoneypot $ cd wowhoneypot
fwの設定 今回はufwを使います まず、穴をあける
$ sudo ufw default DENY $ sudo ufw allow 80/tcp $ sudo ufw allow 8080/tcp $ sudo ufw enable
次にnat設定を行う
$ sudo vi /etc/ufw/before.rules ※ 「*filter」より前に下記の4行を追記する。 ——————————————————————————— *nat :PREROUTING ACCEPT [0:0] -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080 COMMIT ——————————————————————————— $ sudo ufw reload
wowhoneypot起動
$ sudo su wowhoneypot $ python3 ./wowhoneypot.py
- 思い出しながらコマンド書いたから一部抜けてるかも?
- 簡単に構築できて、分かりやすい本家サイトがあるのは非常に嬉しい。
今後は
- ログ解析
- 可視化 kibanaとか使ってやろうかな?
という感じでやっていこう。