HASSH機能の紹介
9月30日、CowrieにHASSH機能が実装されました。
HASSHとは、9月27日にSalesforceが公開したOSSのSSHクライアントフィンガープリンティングツールです。
技術詳細はsalesforceが公開しているblog, githubをご覧ください。
一応簡単に解説しますと、SSHのハンドシェイクで鍵交換をする段階でパケットに含まれるアルゴリズムの情報からMD5を計算します。これがFingerprintというクライアントの特徴になります。
鍵交換がされた時点でFingerprintが取れるので、SSHでログインを成功させる必要はありません。
HASSH機能を試す
本当に特徴が現れるのか、実際に1日程度植えて観測してみました。
観測期間は2018年10月10日10時32分~2018年10月11日3時28分
結果は以下の通り。適当に可視化してみました。
内周はHASSHのFingerprint、外周はIPアドレスです。 IPアドレスは伏せています。
多くのIPアドレスから接続されているにも関わらず、92674...
で始まるFingerprintが多いことがわかります。
92674...
で始まるFingerprintをもつホストは、同様のツールでアクセスしているであろうと想像できます。
ここで「もしかしてほぼ区別されないのではないか?」という疑念が生まれたので、ここで自分の端末からsshしてFingerprintを取ってみました。
VM(Ubuntu 18.04.1 LTS)にCowrieを立ててアクセスしてみます。
すると以下のようになりました。
ホストMacでSSH(openssh): 06046964c022c6407d15a27b12a6a4fb
VM上でSSH(openssh): 06046964c022c6407d15a27b12a6a4fb
nmap -A: 3c0fd089c7135d88c6319124fc5a15d2
以上の結果から、普通に最新版のOpensshで接続するとFingerprintに相違がなく区別ができませんが、Nmapを使うと別のFingerprintが取れていることがわかります。
言い換えると同じSSHクライアントを使っていると区別がつかなくなりますが、特殊なツールが使われている場合に区別をつけることができるのです。
まとめ
開発者たちは、これを使うことで不正なクライアント(バージョンが古い状態のものや、攻撃ツール)を検知することができると言っています。
このHASSHがCowrieに実装されたことで、簡易的な攻撃ツールの検知や区別をつけやすくなるでしょう。
Cowrieを植えている人はぜひHASSHに注目してみてはどうでしょうか?
自分のCowrieにHASSHが入ってないよ!という人はこの機会に最新版にしましょう(常に最新にしていて欲しいものですが)