ああ、ルーターの機種がもろ該当。
Buffalo バッファロー のルーターで注意喚起が出た
こういうの良く出てますけども。
対象の製品を利用していること、そしてWeb設定画面のパスワードが工場出荷時のまま、もしくは推測しやすい文字列を設定していることの両方を満たす場合には、bot感染の可能性がある。
バッファローが一部Wi-Fiルーターで注意喚起、bot感染増加を受け パスワード変更やファームウェア更新を - ITmedia NEWS
1つは、一旦設定を初期化すること。「インターネット設定等を工場出荷時のまま利用されている場合は、可能な限り設定を初期化しご利用ください」との表現がされているが、工場出荷時の状態から利用し続けている場合、意図しない設定変更が行われているおそれがあるので、一度初期化したのち、以下の対策を行ってほしい、との意図だという。
次に、パスワード(ここで指しているのは、Wi-Fi接続用のパスワードではなく、Web設定画面にログインするための管理パスワード)を推測されにくい複雑なものに変更するとともに、ファームウェアを更新すること。なお、WSR-600DHPは工場出荷時の状態でファームウェアが自動更新されるようになっているが、ほかの4製品は自動更新機能を持たないため、手動での更新が必要となる。
最後に、Web設定画面の[詳細設定]-[管理]-[システム設定]にて、「Internet側リモートアクセス設定を許可する」が無効になっていることを確認すること。なお、設定の初期化を行った場合は、この設定は無効になるため、確認の必要はないという。
【追記あり】バッファローのWi-Fiルーター「WSR-1166DHP」シリーズほかのボット感染が増加、NICTER解析チームが警告 - INTERNET Watch
脆弱性の話はいつもあいまいなはっきりしない対応策が多いので分かりづらい。
注意はすればするほど安全なのだろう。
バッファロー公式のアナウンスを見る。
NICTERの投稿に関する重要なお知らせ(5/23更新) | バッファロー
調査中の雰囲気ですが、
「外部から管理画面にアクセスしてパスワードを突破されて何かを仕込まれる。」
ということですよね。
対処法としては、
- 外部からのアクセス機能をOFFにする。
- パスワードをややこしいものにする。
- ファームウェアを最新のものにする。
ということのようです。
「初期化」という言葉が話をややこしくしていますが、
どちらにしても、ルーターの設定を触る必要がありますね。
ルーターの管理画面
パソコンやスマホに公式設定アプリを入れて操作するのが簡単ですのでおすすめです。
ソフトウェア | バッファロー
しかし、いちいちアプリを入れたくないですよね !
今どきの個人向けルーターは、
ほぼブラウザでアクセスできる管理画面を持っています。
そして、それぞれのOS上で動く設定アプリ内でも
そのネットワーク上に存在しているルーターの
ホスト名やIPアドレスを検出しているはずです。
ブラウザからIPアドレス直打ちで管理画面開きたいですよね!
IPアドレスを見つける
「arp-scan」を使います。
❯ brew install arp-scan
royhills/arp-scan: The ARP Scanner
root 必要です。
❯ sudo arp-scan -l
Interface: en0, type: EN10MB, MAC: 63:7e:67:a2:cd:1f, IPv4: 192.168.151.16
Starting arp-scan 1.10.0 with 512 hosts (https://github.com/royhills/arp-scan)
192.168.151.11 84:a3:ec:9c:16:08 BUFFALO.INC
192.168.151.14 f8:3f:c2:31:d2:ee Apple, Inc.
「BUFFALO」ありましたので、
まずは、コンソールからアクセスします。
❯ curl 192.168.151.11
<html>
<head>
<title>Redirect Page</title>
<meta http-equiv="expires" content="-1">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<SCRIPT language=JavaScript>
function init()
{
top.location.replace("../login.html");
}
</SCRIPT>
</head>
<body onload='init();'>
<table><tr><td></td></tr></table>
</body>
</html>
❯ curl 192.168.151.11:443
curl: (7) Failed to connect to 192.168.151.11 port 443 after 16 ms: Couldn't connect to server
❯ curl 192.168.151.11:80
<html>
<head>
<title>Redirect Page</title>
<meta http-equiv="expires" content="-1">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<SCRIPT language=JavaScript>
function init()
{
top.location.replace("../login.html");
}
</SCRIPT>
</head>
<body onload='init();'>
<table><tr><td></td></tr></table>
</body>
</html>
80 のみなので http のみです。
ブラウザから見ると login.html にリダイレクトされます。
あとは、ログインして公式アナウンスの推奨する対応策をやれば OK。
参考
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3
"""
Android11
Pair and connect devices for wireless debug on terminal
python-zeroconf: A pure python implementation of multicast DNS service discovery
https://github.com/jstasiak/python-zeroconf
"""
import subprocess
from zeroconf import ServiceBrowser, Zeroconf
TYPE = "_adb-tls-pairing._tcp.local."
NAME = "debug"
PASS = "123456"
FORMAT_QR = "WIFI:T:ADB;S:%s;P:%s;;"
CMD_SHOW = "qrencode -t UTF8 '%s'"
CMD_PAIR = "adb pair %s:%s %s"
CMD_DEVICES = "adb devices -l"
class MyListener:
def remove_service(self, zeroconf, type, name):
print("Service %s removed." % name)
print("Press enter to exit...\n")
def add_service(self, zeroconf, type, name):
info = zeroconf.get_service_info(type, name)
print("Service %s added." % name)
print("service info: %s\n" % info)
self.pair(info)
def pair(self, info):
cmd = CMD_PAIR % (info.server, info.port, PASS)
print(cmd)
subprocess.run(cmd, shell=True)
def main():
text = FORMAT_QR % (NAME, PASS)
subprocess.run(CMD_SHOW % text, shell=True)
print("Scan QR code to pair new devices.")
print("[Developer options]-[Wireless debugging]-[Pair device with QR code]")
zeroconf = Zeroconf()
listener = MyListener()
browser = ServiceBrowser(zeroconf, TYPE, listener)
try:
input("Press enter to exit...\n\n")
finally:
zeroconf.close()
subprocess.run(CMD_DEVICES, shell=True)
if __name__ == '__main__':
main()