ゆとりインフラエンジニアのブログ的な何か

駆け出しインフラエンジニアのブログ

DROWN(CVE-2016-0800)のセキュリティチェックツールをインストールしてた@CentOS6.7

きたる2016/3/1に予告されてたOpenSSLのセキュリティアドバイザリのなかで脆弱性が公開されましたね。
OpenSSL Security Advisory [1st March 2016]


そのなかで、大きく取り上げられているのがCVE-2016-0800、愛称が「DROWN」という脆弱性です。
脆弱性自体の詳細は他のまとめサイトなどを参照してみてください。
OpenSSLの脆弱性CVE-2016-800(DROWN)やCVE-2016-0702(CacheBleed)についてまとめてみた - piyolog


サーバー管理者として気になるのは、自身の運用しているサーバーに脆弱性があるか/ないかですね。
SSLv2なんて随分の昔に無効化してるよって思っても意外に、残ってたりするんです。
なので外部チェックは大事です。
下記公式サイトに、WEBでのチェックツールが公開されてます。
DROWN Attack




ただ、このチェックサイト、下に小さく書いてありますが、
2016年の2月に脆弱性が見つかったサイトだけが表示されるのです。

This tool shows vulnerable services detected in Feb. 2016 and probes each again to see if it’s been fixed. Results won't include new servers or ones our scanner missed. Live updates are cached for 15 minutes.

で、下の方に、チェックツール公開してるからつかったらいいよって書いてあります。

we recommend using our client-side scanning software.


んじゃあ、インストールして使ってみましょう!!

ソースコードgithubに公開されてます。python製ですね。
github.com


私は、CentOS6.7を使用しているのですが、githubに書いてある手順だとエラーがでて、
正常にチェックツールが動かなくて四苦八苦したので、
私なりのチェックツール使用するまでの手順を書いてみます。


yumでいろいろインストール

# yum install epel-release
# yum install git python-devel tcpdump gcc python-pip


● git clone

# git clone https://github.com/nimia/public_drown_scanner.git


● pipでインストールするヴァージョン確認

# cd public_drown_scanner/
# cat requirements.txt
enum==0.4.6
scapy==2.3.1
pyasn1==0.1.9
pycrypto==2.6


● pipでインストール

# pip install enum==0.4.6 scapy==2.3.1 pyasn1==0.1.9 pycrypto==2.6


● 使い方確認

# cat README.md | tail -15
Usage examples:
---------------
```
python scanner.py localhost 443
...
python scanner.py localhost 587 -esmtp
...
python scanner.py localhost 143 -imap
...
python scanner.py localhost 25 -esmtp
...
python scanner.py localhost 110 -pop3
...
python scanner.py localhost 443 -bare
````


● テスト実行

# python scanner.py localhost 443
Testing localhost on port 443
localhost: Case 1 - port is apparently closed (after 3 tries); Connect failed
localhost: Server is NOT vulnerable with cipher RC2_128_CBC_EXPORT40_WITH_MD5, Message: con fail

localhost: Case 1 - port is apparently closed (after 3 tries); Connect failed
localhost: Server is NOT vulnerable with cipher RC4_128_EXPORT40_WITH_MD5, Message: con fail

localhost: Case 1 - port is apparently closed (after 3 tries); Connect failed
localhost: Server is NOT vulnerable with cipher RC4_128_WITH_MD5, Message: con fail

localhost: Case 1 - port is apparently closed (after 3 tries); Connect failed
localhost: Server is NOT vulnerable with cipher DES_64_CBC_WITH_MD5, Message: con fail

↑これは、脆弱性ないよってパターンです。
脆弱性がある場合は、Server is vulnerableって出てきます。


たくさんチェックすべきサイト(ドメイン)がある場合はリスト化して、
loopでチェックツールを回せば、チェック完了!!
脆弱性対応するか、しれっと隠蔽するかはアナタ次第です。


脆弱性のそれぞれの対応はOpenSSLの公式ブログにあがってたので、
参考にして頑張って対応してみてください。
An OpenSSL User’s Guide to DROWN