思考・考察
グレーな検索エンジン「shodan」について
Takeyuki Sato
こんにちは。暑くなってきましたね。
今日はshodanというサービスについて書きたいと思います。
今回、書く記事は決して攻撃を促すための記事ではありません。
自己防衛のためです。
運営しているサイト、家庭用ルーター、IoTなどこれらが攻撃者のターゲットになっていないかなど確認するために利用します。
shodanとは
このサービスは、世界中のサーバー上で動いてるサービスやIoTを検索することができるサービスです。
https://www.shodan.io/
例えば、
WannaCryptが利用する脆弱性のSMBプロトコルが利用可能か
IoTやルーターのオープンリゾルバチェック
wordpressのバージョン
認証なしでデータベースアクセス
フリーアクセスwebカメラ
デフォルトパスワード設定サーバー
IPTVなどのネット受信TVのサービス
そのほか任意の文字列を検索することができ
もはや今すぐクラッカーになってしまいそうな検索ができます。
使い方
使い方は、普通の検索エンジンと同じように検索すればいいのです。
サービス名、プラットフォーム、レスポンスヘッダー内の文字列、国名、団体名など検索エンジンに入れます。
上のように検索すると、問題のWannaCryptが感染してしまう可能性があるのが90件ほど見つかりました。
ポートスキャンの手間が省けます。
shodanのAPI
shodanが調査している情報と連携したプログラムが作れてしまい末恐ろしいです。
利用方法は、アカウント登録する必要があります。
サイトからAPIキーを取ってきてアクセスします。
以下、サンプルスクリプトです。
pythonのshodan API ライブラリーがあるので使います。
以下は、ある、ホストのポートスキャン結果の取得です。
#!/usr/bin/python
import shodan
SHODAN_API_KEY = "**************************"
api = shodan.Shodan(SHODAN_API_KEY)
host = api.host('23.21.119.146')
# Print general info
print """
IP: %s
Organization: %s
Operating System: %s
""" % (host['ip_str'], host.get('org', 'n/a'), host.get('os', 'n/a'))
# Print all banners
for item in host['data']:
print """
Port: %s
Banner: %s
""" % (item['port'], item['data'])
以下のスクリプトは、キーワードによる検索です。
import shodan
SHODAN_API_KEY = "*********************"
api = shodan.Shodan(SHODAN_API_KEY)
try:
# Search Shodan
results = api.search('wordpress')
# Show the results
print 'Results found: %s' % results['total']
for result in results['matches']:
print 'IP: %s' % result['ip_str']
print result['data']
print ''
except shodan.APIError, e:
print 'Error: %s' % e
詳しくは、以下のAPIリファレンンスをみてください。
https://developer.shodan.io/api
注意*上記のスクリプトはポートスキャンプログラムではありません。 shodanのサービスを利用し規約に違反していません。
まとめ
どのくらい危険に晒されてるデバイスがあるかを体感するにはいいサービスですね。
「攻撃者は常にあなたたちを見ていますよ。」とこのサービスから聞こえてくるような気がします。