Как определить вероятность, что имя домена случайно?
Многие вирусы, запрашивают у DNS сервера адреса, генерируя их по своим алгоритмам.
В логах сервера можно видеть подобное этому:
www .8fa0816f.com
www .9849af14.com
www .c33fb23d.com
www .c9423e05.com или
ascxdcnciz.net
aykjwdbhdx.ws
azsvhzicv.info
bbuiozzcnv.ws
bceuhtw.cc
beift.net
Как человек я делаю вывод, что компьютер, который делает такие запросы, скорее всего заражён. Какой алгоритм посоветуете прочесть и реализовать, чтобы программно высчитать вероятность «вирусности» запрошенного домена?
Проверять все домены на существование? Но их могут создавать авторы вируса по такому же алгоритму, чтобы с них отдавать «приказы»/«нагрузку».
Рад любому совету и наставлению. Прошу не рекомендовать «просто поставить антивирус», так как он и так ставится на все компьютеры, но мое предприятие просто огромное по площади и по количеству компьютеров, короче «и на старуху бывает проруха».
1. Возьмите список известных доменов, и постройте шкалу вероятностей встречи последовательности 2 символов
2. Имея карту вероятностей 2-символьных последовательностей посчитайте средюю вероятность всех двухбуквенных последовательностей в домене
3. Сравните этот показатель с нормальными доменами, увидете кореляцию
Если хотите почитать теорию — смотрите в сторону энтропии последовательности символов. Ваши слова — те, у которых энтропия максимальна
Думаю решения перебора по словарю будут не очень эффективным, так как занимают n времени.
Я бы сделал так:
Берем google search api, делаем запрос site:habrahabr.ru (Нам нужно кол-во результатов, если оно большое, сайт скорее всего настоящий).
Если не хотите гугл, можно самому считать страницы сайта, при условии что он настоящий.
Криво сформулировал.
Имел в виду:
Разбиваем доменное имя на подстроки от цифры до цифры.
Каждую подстроку начинаем искать по словарю(он отсортирован лексикографически для ускорения). Не факт, что в словаре есть точное слово, в этом случаем записываем процент от исходной подстроки, который нашелся.
Усредняем значение по всем подстрокам. Если «больше чем» — то ок.
Алгоритм высосан из пальца, но, имхо, как первый рубеж он пойдет — отсеет заведомо корректные сайты.
Вот только не надо предлагать софт от циско. После того, как они аутсорснули всё программирование в Индию, качество программ у них начало падать с фантастической скоростью.