Такой же способ используют авторы вредоносного скрипта Mimic, но с другой целью: испоганить программный код таким способом, что он не будет компилироваться, вызовет сотни синтаксических ошибок, а программист не сможет понять, в чём дело.
Например, в коде C# обычный символ точки с запятой (;) заменяется на греческий вопросительный знак (?). Подло, зато эффективно.
Кроме точки с запятой, в Unicode есть несколько других символов, которые одинаково выглядят в разных алфавитах. Они называются омоглифами.
Mimic использует это, он заменяет распространённые символы ASCII на омоглифы из других алфавитов.
Например, код начинает выдавать такую ошибку.
Кажется, с чего бы это?
Или можно поменять символы по полной программе.
По мнению автора, скрипт вызывает следующие чувства:
- веселье
- расстройство
- любопытство
- убийственную ярость
С программой можно поиграться на своём собственном исходном коде — просто проверить, сможете ли вы найти все ошибки.
Проделать это с чужими исходниками без ведома автора опасно. «Вас могут уволить, а потом убить», — предупреждает автор.
Вообще, такие фокусы подходят для разного рода мошенничеств: указания липовых URL и поисковых запросов, обмана клиентов в чёрном SEO, атак XSS и т.д.
Комментарии (29)
VampiRUS
26.10.2015 02:58Может для sublime есть плагин, который подсвечивает разным цветом кириллицу и латинские символы?
Zibx
26.10.2015 03:48+17Использовал это для предотвращения xss. В запрещённых тэгах символы менялись как раз на русские, что вызывало множество часов праведного гнева тех кто пытался эти атаки провести. Весь код вроде на месте, а не работает.
6opoDuJIo
26.10.2015 09:11На одном из рабочих мест:
— Обнаруживал в строковых литералах безразмерные юникодные символы (т.о литерал который выглядит так-же, не равнялся исходному), из-за чего выборка из словаря по такому-же литералу не давала результата.
— Чуть более весёлым был момент, из-за которого текстовый файл (C# исходник) гит воспринимал как бинарный — в конце одной из строк оказался нулевой байт.
Foror
26.10.2015 09:37+2Нашли чем пугать программеров, антимимик пишется за день, который вернет все назад.
darkfrei
26.10.2015 11:20Как задать условие? Если (спецсимвол № 24423) немного похож на (символ N), то меняем одно на другое?
Foror
26.10.2015 11:41+2Все проще. Ищем символы, которые выходят за диапозон ASCII, затем смотрим предварительно составленный словарь перекодировки ";" => ";". Для этого также можно пройтись по тексту и найти все странные символы, после чего составить словарь. Если в коде есть русский или любой другой язык, то диапозн этих символов также исключаем, как и ASCII.
Zibx
28.10.2015 03:54Ещё проще — если символ выпадает за рамки стандартных языковых — забиваем на него. Если в слове буквы на разных языках и можно легко привести их в нормальный вид (русская\английская с), то делаем это. Если нельзя, то выкидываем слово из полнотекстового индекса или помечаем этот кусок и отправляем его тому от кого он пришел с требованием исправить.
Psionic
26.10.2015 12:30+4Многолетний трюк по обходу фильтров матершины нашел практическое применение?
NetBUG
28.10.2015 02:27Когда-то во времена DOS был вирус, заменявший в русском тексте, отправленном на принтер, некоторые прилагательные на матерные.
KvanTTT
Pусскoязычногo прогрaммиста будeт обмaнуть всe же нe так легkо (нaвернякa мнoгиe стaлкивались с тeм, что клaвиша русскoй «с» совпадаeт c английской «c»).
Mad__Max
У вас
ус отклеилсяMimic в комментарии основательно похозяйничал.KvanTTT
Это вы по «k» догадались и решили проверить остальной текст? :)
Mad__Max
Да, на «k» mimic спалился(хотя предполагаю это специально сделано в качестве подсказки, т.к. заменена только одна буква) — английская и русская визуально слегка отличаются.
Решил проверить — есть ли еще подмены? И оказалось что почти половина букв в комментарии заменена на омоглифы.
KvanTTT
Да, специально. Правда mimic не использовал, все сделал вручную.
monah_tuk
Почти как:
— капс отпусти
— А Я ЕГО НЕ НАЖИМАЛ! С ШИФТОМ — ТАК ЯРОСТИ БОЛЬШЕ!
ярости больше :)