鍵を紛失した人:SSHに続いて





2015年、世界中のさまざまなノードで同じSSHフィンガープリントが見つかったとき、大きな誇大宣伝がありました。 さらなる騒音は出ませんでしたが、堆積物は残りました。 そのような「テイク」の主な危険性を把握してみましょう。 収集されたデータのほとんどは2015年に関連しています。



指紋とは



SSHフィンガープリントは、公開鍵から計算される数値であり、pub許可を持つファイルのパス/ etc / sshに沿って保存されます。 最初にサイトに接続すると、認証するように求められます。 56:ca:17:72:0b:d4:3c:fd:5e:23:fb:7b:9e:9a:c8:42



の形式の文字列は、公開キーのMD5合計です。



 ホスト '192.168.100.124(192.168.100.124)'の信頼性は確立できません。
 RSAキーフィンガープリントは56:ca:17:72:0b:d4:3c:fd:5e:23:fb:7b:9e:9a:c8:42
接続を続行してもよろしいですか(はい/いいえ)?


サイトに初めて接続する場合は、そのようなメッセージが表示されるのは自然です。 ただし、このノードをすでに認証して接続したことがある場合は、「指紋が変更された理由」と考えてください。 ターゲットシステムを再インストールしたか、新しいキーを生成しましたか? それとも、あなたがしようとしていたマシンにまったく接続していますか?..



指紋はどのように考慮されますか



したがって、SSHフィンガープリントはハッシュサムです。 私たちの場合、これはRSAキーのオープン部分からのMD5合計です。



キーの公開部分:



 root@ubuntu:/etc/ssh# cat /etc/ssh/ssh_host_rsa_key.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCrID5HFOZiQlq6DDUCsLOG5xJFOMbxtqPTtgL0BfEyRVQ1AGD9kwSWnAU7bm/uFmfkfG5ff/8S02PKaQo26sYIWi8/NyOGMyLNnCLpMJkJ+CT12qrqpD+3Q749DpVzBBbCUaYiDNg7RbKxbbnSZUe9k69P4FE0itS4MQDFAnD0XY78aQuxNpIQUexTIP0b4QuIaShV0c6FXmpHHqr85uZ9t1cTdLtl3Kphv3yu6Z+bkGBd+c80pdV+islTUGa+YJse0rvi/qP8AU67KNXscAc4UDe1yaMG5Y3eUshvt3OTCXliYQKw3NIw/KzXbbY6s/sB49LAvDOal4FK6ZAA+HUP root@ubuntu
      
      





base64から文字列AAAAB....A+HUP



をデコードし、結果の文字列のMD5合計を計算します。



 root@ubuntu:/etc/ssh# awk '{print $2}' ssh_host_rsa_key.pub | base64 -d | md5sum 56ca17720bd43cfd5e23fb7b9e9ac842
      
      





元の指紋を取得しました。



トラフィックでは、キーは次のように送信されます。







ECDSA、ED25519など、RSAの代わりに他のキーを使用できます。 ssh-keyscanユーティリティを使用して、ターゲットマシンのSSHサーバーキーの公開部分を取得できます。



 root@ubuntu:/etc/ssh# ssh-keyscan -t ED25519 192.168.100.124 # 192.168.100.124 SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.6 192.168.100.124 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIF8GXOsOnWBf1NY6Px6upViTXX0ZOw9txOEjwxMORafZ
      
      





 root@ubuntu:/etc/ssh# ssh-keyscan -t RSA 192.168.100.124 # 192.168.100.124 SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.6 192.168.100.124 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCrID5HFOZiQlq6DDUCsLOG5xJFOMbxtqPTtgL0BfEyRVQ1AGD9kwSWnAU7bm/uFmfkfG5ff/8S02PKaQo26sYIWi8/NyOGMyLNnCLpMJkJ+CT12qrqpD+3Q749DpVzBBbCUaYiDNg7RbKxbbnSZUe9k69P4FE0itS4MQDFAnD0XY78aQuxNpIQUexTIP0b4QuIaShV0c6FXmpHHqr85uZ9t1cTdLtl3Kphv3yu6Z+bkGBd+c80pdV+islTUGa+YJse0rvi/qP8AU67KNXscAc4UDe1yaMG5Y3eUshvt3OTCXliYQKw3NIw/KzXbbY6s/sB49LAvDOal4FK6ZAA+HUP
      
      





サーバーのバージョン、プロトコル番号、OSのバージョンを示すバナー# 192.168.100.124 SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.6



ます。



重複するプリントを検索します。 検索比較



shodan.ioサービスは、必要なすべての統計をすでに収集しています。 Shodanは、次のようなプリントを探すことを提案しています。



 import shodan api = shodan.Shodan(YOUR_API_KEY) # Get the top 1,000 duplicated SSH fingerprints results = api.count('port:22', facets=[('ssh.fingerprint', 1000)]) for facet in results['facets']['ssh.fingerprint']: print '%s --> %s' % (facet['value'], facet['count'])
      
      





指紋分析中、サービスは不安定でした。 長い間、国ごとにファセットをフィルタリングする可能性はありませんでした。 api.count('port:22 country:RU', facets=[('ssh.fingerprint', 20)])



の形式のデザインは機能しませんでした。 その結果、トップの国の特定のフィンガープリントのファセットを使用して、 api.count('e2:40:24:40:b8:87:4e:41:1f:d4:68:69:67:b2:22:5d', facets=[('country', 20)])







出力結果を比較します。



 fa = api.count('e2:40:24:40:b8:87:4e:41:1f:d4:68:69:67:b2:22:5d', facets=[('country', 20)]) for i in range(len(fa['facets']['country'])): if fa['facets']['country'][i]['value']=='RU': print fa['facets']['country'][i] {u'count': 60433, u'value': u'RU'}
      
      





そして



 api.count('port:22 country:RU', facets=[('ssh.fingerprint', 10)])['facets']['ssh.fingerprint'][0] {u'count': 52929, u'value': u'e2:40:24:40:b8:87:4e:41:1f:d4:68:69:67:b2:22:5d'}
      
      





14%の顕著な差。



最も可能性が高いのは、サービスがバナーをアクティブに検索してデータベースに入力したが、データベースのインデックス作成が遅れたためです。



また、額でプリントを探すこともできます。



 results = api.search('e2:40:24:40:b8:87:4e:41:1f:d4:68:69:67:b2:22:5d') results['total']
      
      





1ページあたり100エントリの選択制限がありますが、ページごとに結果を選択できます。



 api.search('e2:40:24:40:b8:87:4e:41:1f:d4:68:69:67:b2:22:5d', page=2)
      
      





国別のキー配布の統計を見るのは興味深いです。



 fp30 = {} for i in api.count('port:22', facets=[('ssh.fingerprint', 30)])['facets']['ssh.fingerprint']: fp={} fp['count'] = i['count'] fp['country']= api.count(i['value'], facets=[('country', 100)])['facets']['country'] fp30[i['value']]=fp print fp30
      
      





異なる年の値を比較します。



トップ10-2015



  dc:14:de:8e:d7:c1:15:43:23:82:25:81:d2:59:e8:c0、321014 
 32:f9:38:a2:39:d0:c5:f5:ba:bd:b7:75:2b:00:f6:ab、245499 
 d0:db:8a:cb:74:c8:37:e4:9e:71:fc:7a:eb:d6:40:81、161471 
 34:47:0f:e9:1a:c2:eb:56:eb:cc:58:59:3a:02:80:b6、149775 
 df:17:d6:57:7a:37:00:7a:87:5e:4e:ed:2f:a3:d5:dd、105345 
 81:96:a6:8c:3a:75:f3:be:84:5e:cc:99:a7:ab:3e:d9、97778 
 7c:a8:25:21:13:a2:eb:00:a6:c1:76:ca:6b:48:6e:bf、93686 
 c2:77:c8:c5:72:17:e2:5b:4f:a2:4e:e3:04:0c:35:c9、88393 
 1c:1e:29:43:d2:0c:c1:75:40:05:30:03:d4:02:d7:9b、87218
 03:56:e6:52:ee:d2:da:f0:73:b5:df:3d:09:08:54:b7、64379 


トップ2016:



  e7:86:c7:22:b3:08:af:c7:11:fb:a5:ff:9a:ae:38:e4、343048
 34:47:0f:e9:1a:c2:eb:56:eb:cc:58:59:3a:02:80:b6、138495
 dc:14:de:8e:d7:c1:15:43:23:82:25:81:d2:59:e8:c0、109869
 32:f9:38:a2:39:d0:c5:f5:ba:bd:b7:75:2b:00:f6:ab、46451
 62:5e:b9:fd:3a:70:eb:37:99:e9:12:e3:d9:3f:4e:6c、41578
 d0:db:8a:cb:74:c8:37:e4:9e:71:fc:7a:eb:d6:40:81、39126
 7c:a8:25:21:13:a2:eb:00:a6:c1:76:ca:6b:48:6e:bf、38816
 8b:75:88:08:41:78:11:5b:49:68:11:42:64:12:6d:49、34203
 1c:1e:29:43:d2:0c:c1:75:40:05:30:03:d4:02:d7:9b、32621
 03:56:e6:52:ee:d2:da:f0:73:b5:df:3d:09:08:54:b7、29249
 c2:77:c8:c5:72:17:e2:5b:4f:a2:4e:e3:04:0c:35:c9、28736
 59:af:97:23:de:61:51:5a:43:16:c3:6c:47:5c:11:ee、25110
 7c:3e:bc:b9:4b:0d:29:91:ed:bd:6e:4c:6b:60:49:14、22367 


ご覧のように、一部のプリントはあまり頻繁に発生しなくなり、一部のプリントは逆に頻繁に発生し始めました。



指紋マップ



次に、キーとその統計を表示します。 最も頻度の高い30か国の統計を収集します。 これには、iso alpha2形式(2文字の指定)での国の名前と、指紋検出の総数における一致の割合が含まれています。



 for i in fp30: print i, fp30[i]['count'] sum = fp30[i]['count'] for j in fp30[i]['country']: if 100*j['count']/sum > 0: print '%s: %s' % (j['value'], 100.0*j['count']/sum)
      
      





はい、パーセンテージの146%は、データベース内のデータが完全にインデックス付けされていないという事実に起因する可能性があります。



2015年の場合:



 dc:14:de:8e:d7:c1:15:43:23:82:25:81:d2:59:e8:c0 332493 ES: 90.0605953479 TW: 3.56833133558 US: 2.1252561631 http://chartsbin.com/view/32232
      
      





chartsbin.com/view/32232



 32:f9:38:a2:39:d0:c5:f5:ba:bd:b7:75:2b:00:f6:ab 254856 CN: 54.5263608791 TW: 41.3041225361 DO: 1.22736474116 US: 1.18763860965
      
      





 d0:db:8a:cb:74:c8:37:e4:9e:71:fc:7a:eb:d6:40:81 162800 US: 54.9035226422 JP: 45.0382223913
      
      





 34:47:0f:e9:1a:c2:eb:56:eb:cc:58:59:3a:02:80:b6 151027 DE: 69.7611572028 US: 27.9946735249 ES: 1.41647682396
      
      





 df:17:d6:57:7a:37:00:7a:87:5e:4e:ed:2f:a3:d5:dd 108057 CN: 99.7404030473
      
      





chartsbin.com/view/32227



 81:96:a6:8c:3a:75:f3:be:84:5e:cc:99:a7:ab:3e:d9 101156 TW: 100.0
      
      





 8b:75:88:08:41:78:11:5b:49:68:11:42:64:12:6d:49 75760 PL: 100.0
      
      





chartsbin.com/view/32225



 57:94:42:63:a1:91:0b:58:a6:33:cb:db:fe:b5:83:38 39167 IN: 38.2145131455 AU: 9.01840676835 US: 8.73335961428 TR: 6.34381538648 AE: 4.14531340025 ZA: 3.3538526852 SA: 3.15977802711 MX: 3.0384813658 GB: 2.80498529278 FR: 2.56542438669 IR: 2.5199381387 IT: 2.3440579798 TH: 2.32889589714 DE: 2.31676623101 BR: 2.19243715317 MY: 1.98623282894 NG: 1.47678685144 KE: 1.46465718531 TW: 1.14625344937
      
      







chartsbin.com/view/32196

2016年の場合:



 e7:86:c7:22:b3:08:af:c7:11:fb:a5:ff:9a:ae:38:e4 343048 US: 99.9988339824
      
      





 34:47:0f:e9:1a:c2:eb:56:eb:cc:58:59:3a:02:80:b6 138495 DE: 54.827972129 US: 42.5546048594 GB: 1.33795443879 ES: 1.27946857287
      
      





 dc:14:de:8e:d7:c1:15:43:23:82:25:81:d2:59:e8:c0 109869 ES: 88.2241578607 TW: 4.07485277922 US: 3.3376111551 DK: 1.1104133104 VC: 1.0594435191
      
      





 32:f9:38:a2:39:d0:c5:f5:ba:bd:b7:75:2b:00:f6:ab 46451 CN: 49.5188478181 TW: 44.5932272717 DO: 1.59738218768 US: 1.22494671805
      
      





 62:5e:b9:fd:3a:70:eb:37:99:e9:12:e3:d9:3f:4e:6c 41578 US: 84.3907835875 SG: 9.02881331473 NL: 6.58521333397
      
      





1つの国でのみ、またはほぼ1つ(90%)でのみ見られる印刷物があることがわかります。



例:



  81:96:a6:8c:3a:75:f3:be:84:5e:cc:99:a7:ab:3e:d9 TW:100.0%
 8b:75:88:08:41:78:11:5b:49:68:11:42:64:12:6d:49 PL:100.0%
 df:17:d6:57:7a:37:00:7a:87:5e:4e:ed:2f:a3:d5:dd CN:99.7404030473%
 59:af:97:23:de:61:51:5a:43:16:c3:6c:47:5c:11:ee US:99.9953928728%
 c2:52:47:0f:8b:82:b9:3c:74:ee:64:b5:35:f4:c5:c3 MY:99.7626425793% 


たとえば、ポーランドを見てください。



8b:75:88:08:41:78:11:5b:49:68:11:42:64:12:6d:49 PL: 100.0%







インプリントがあるバナーの統計:



 [( 'SSH-2.0-OpenSSH_5.9p1 Debian-8netart1 \ r \ n'、37188)、( 'SSH-2.0-OpenSSH_6.2p2 Ubuntu-7netart1 \ r \ n'、10390)、( 'SSH-2.0-OpenSSH_6 .6.1p1のUbuntu-15netart2 \ NKEYタイプ:SSH-RSA \ NKEY:AAAAB3NzaC1yc2EAAAADAQABAAABAQCnt2 + LOdS1Gy / 47UXMfHDYQERQQR5M4 / CYsfT7IE3FYQ / M \ nwJO6rLKLcUo + q4U + 0iIH6uBSXG5HNa4569rg2eWH5lUiJHEL1pPIA9wKKZ + MpMoE9nkr1xaXxVK5 \ nqO1gUfaYCo + VYre2CJDe3HIJlUht3PITdxmQTwnL / tJHHBkR8xrgEpjF + 9FjFKwdE7ZCNObqvhK0 \ nPio / 318DyUiRK / JaIqggL0K9KzoGytq7uKSkECFMYCDTqPmdDerCEiT + C5Lxy6ZOdp4yTyxjOM7E \ nsr0C / ePzPvT8rCLayz3GzBnEwZ4QKlOxbZHl / 48LxtWlY / vROkiLTuU3kcpFqvo0Uc / 3 \ nフィンガープリント:8b:75:88:08:41:78:11:5b:49:68:11:42:64:6:6: SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-15netart2 \ nキータイプ:ssh-rsa \ nKey:AAAAB3NzaC1yc2EAAAADAQABAAABAQCnt2 + L '、3421)、(' SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-nnet2 2) ]


NetArtの商標から判断すると、これはおそらくnazwa.pl-ポーランド語ホスティングです。

dc:14:de:8e:d7:c1:15:43:23:82:25:81:d2:59:e8:c0



は、 元の記事に示されています 。 これは、プリインストールされたDropbear v0.46 SSHサーバーキーです。 非常に古い脆弱なSSHサーバー。 このキーを持つデバイスの数は依然として非常に多くなっています。



2015年のロシアの統計:



 e2:40:24:40:b8:87:4e:41:1f:d4:68:69:67:b2:22:5d 50107 {'Dropbear sshd_0.46': 50107} ------------------------------------- OJSC Rostelecom 49794 OJSC Rostelecom, Vladimir branch 160 OJSC RTComm.RU 46 OJSC Bashinformsvyaz 32 CJSC ER-Telecom Holding 11 1c:1e:29:43:d2:0c:c1:75:40:05:30:03:d4:02:d7:9b 26286 {'Dropbear sshd_0.52': 26286} ------------------------------------- OJSC Rostelecom 19596 OJSC Bashinformsvyaz 1025 MTS OJSC 1024 CJSC Teleset-Service 645 VimpelCom 340 2d:7b:35:e5:33:66:d5:ee:0d:58:19:cb:ae:e7:90:ea 24036 {'Dropbear sshd_0.53.1': 23413, 'Dropbear sshd_0.28': 623} ------------------------------------- National Cable Networks 14860 OJSC Rostelecom 8179 VimpelCom 214 Net By Net Holding LLC 101 CJSC ER-Telecom Holding 94 f5:50:8d:ca:f7:5a:07:41:08:81:65:2e:b3:a4:d6:48 14065 {'Dropbear sshd_2011.54': 14065} ------------------------------------- Net By Net Holding LLC 13923 OJSC Central telegraph 73 Optilink Ltd 29 Web Plus ZAO 23 Iskratelecom CJSC 10
      
      





結論



ご覧のとおり、2015年以降、状況は劇的に変化していません。 以前に重複した印刷が発生し、現在発生しています。 彼らの何人かは会う頻度が少なくなり、もっと会うようになりました。 ソフトウェアが更新されました-そして、いくつかのキーがなくなって、いくつかが現れました。



それでは、「ダブル」の危険性は何ですか? 攻撃者がキーを侵害し、この公開キーに対応する秘密キーを知っているとします。 このキーは、リリースに関係しているため、機器ベンダーやホスティング事業者にはすでに知られています。 この場合、ARPスプーフィングやDNSスプーフィングなどのMitM攻撃を実行できます。 攻撃者はソースサーバーを自分のものに置き換えて接続を待機しますが、被害者は信頼できないサーバーに関するメッセージを受信しません。 したがって、攻撃者は被害者のパスワードを見つけることができます。



このような攻撃の潜在的な被害者は、すべてプリインストールされたソフトウェアのユーザーです。 たとえば、BitnamiやTurnKeyなどの既製のアセンブリ。 パスワードを変更するだけで十分なように思えますが、それほど単純ではありません。 誰もが事前定義されたパスワードを変更するわけではありません。新しいキーのリリースについてはどうでしょうか?



ご覧のように、世界中の何十万人ものユーザーがそのような行動に苦しむことができます。 この場合、キーによる許可の場合、これは起こりません。



ソフトウェアを最新の状態に保つよう注意してください。



Posted byアーサーガリポフ、ポジティブテクノロジーズ



All Articles