Некоторые подводные камни технологии IP Cloud в роутерах Mikrotik
Есть такие хорошие роутеры Mikrotik. И с недавнего времени есть у них функционал «IP-Cloud». Помимо прочего он позволят получить субдомен, который будет привязан к пользовательскому роутеру, не имеющему постоянного IP-адреса. Или имеющего, для нас это не важно — важно то, что получаемое имя не произвольное, а вида серийный номер+.sn.mynetname.netТак как имя не произвольное, а узнать-сгенерировать диапазоны серийных номеров не так уж и сложно, то можно их пропинговать и, если адрес активный, попробовать подключиться.
Для проверки этой идеи была написана программа с очень простым функционалом — она генерировала имя вида SN.sn.mynetname.net и пинговала его. Если результат был положительным, то адрес запоминался и процесс продолжался.
Далее программа пробовала подключаться к найденным адресам с логином admin и следующими паролями 123456, password, 12345678, qwerty, abc123, 123456789, 111111, 1234567, iloveyou, adobe123, 123123, admin, 1234567890, letmein, photoshop, 1234, monkey, shadom, sunshine, 12345, password1, princess, azerty, trusno1, 000000, mikrotik, sysadmin (список паролей был взят из статьи habrahabr.ru/post/215457/ и добавил пару от себя)
Подключение пробовалось через SSH и mikrotik API и если подключение подходило успешно, в таблицу добавлялся подошедший пароль.
Здесь можно посмотреть функции которыми программа пробовала подключаться к роутерам private string MikrotikSSHConnect (string MikrotikIP, string MikrotikPassword) { ConnectionInfo sLogin = new PasswordConnectionInfo (MikrotikIP, 22, «admin», MikrotikPassword); SshClient sClient = new SshClient (sLogin); try { sClient.Connect (); sClient.Disconnect (); return MikrotikPassword; } catch { return »; } }
private string MikrotikAPIConnect (string MikrotikIP, string MikrotikPassword) { MK mikrotik = new MK (MikrotikIP); try { if (mikrotik.Login («admin», MikrotikPassword)) { return MikrotikPassword; } } catch {}
return »; } Результаты трёхдневного скана вышли следующие — было сгенерировано и пропинговано два миллиона адресов. Из них доступных по пингу, с включенным IP-Cloud было всего 6715. Из них подключиться без пароля получилось к 97, с подобранным паролем к 430 (что лишний раз доказывает, что не надо использовать словарные и лёгкие пароли)
На всех точках, к которым получилось подключиться, были немного изменены настройки — убран пинг снаружи и сделано подключение к роутеру только из локальной сети + защита от перебора паролей. Можно было поменять пароль, но мало ли кто там занимается настройкой, да и не хотелось админам сильно усложнять работу.
PS: Откуда брались серийные номера —
из своих точек — за несколько лет работы с микротиками, накопилось достаточно много установок, с многих смог посмотреть серийный номер. в гугле смотрел на скриншоты IP-Cloud (многие не замазывали адрес) + запрос в гугле site: sn.mynetname.net немало номеров нашел через запрос в гугл mikrotik system routerboard С сертификатов соответствия Больше всего адресов получил от одного достаточно крупного продавца — который поделился списком серийных номеров которые у него проходили, как гарантийные. (из-за этого и не публикую полностью результаты, так как не хочу подставлять людей предоставивших данную информацию) Для каждого номера бралось 20 тысяч перед ним и столько же после.PS2: Что в этом плохого —, а если бы это было не моё исследование just for lulz? RouterOS достаточно продвинутая система и вполне можно в автоматическом режиме настраивать точки доступа на DDOS или делать из них прокси для своих грязных дел :)
PS3: Да можно было тестировать сразу подключение через SSH и API, только пинг существенно быстрее, да и не в этом смысл был исследование. Про распараллеливание также в курсе, но никуда не торопился :)
PS4: Несколько ссылок на используемые вещиИспользование Mikrotik API в C#IP Cloud в роутерах Mikrotik