Puny код: Punycode-конвертер

Содержание

Punycode-конвертер

Инструмент предназначен для преобразования русских доменных имён (или другой строки) в кодировку Punycode, которая используется в многоязычной системе доменных имён. Возможно прямое и обратное преобразование.

WHOIS информацию о доменных именах (в том числе русских) можно посмотреть на странице Whois-сервис.

Суть технологии многоязычных доменов заключается в преобразовании имен из UNICODE в ASCII совместимый код (ACE — ASCII Compatible Encoding) на стороне клиента, и отправлении в систему DNS в преобразованном виде.

ASCII совместимый код (ACE) служит для того, чтобы представить строки состоящие из символов набора UNICODE с помощью латинских букв нижнего регистра и цифр, то есть с помощью символов, которые допускаются для имён доменов в традиционной системе DNS. Для использования в многоязычной системе имён (iDNS) применяется алгоритм Punycode.

Допустим, Вы зарегистрировали домен на русском языке: хостинг-беларуси.рф Тогда данное доменное имя в различных представлениях будет выглядеть так:
IDN (Unicode): хостинг-беларуси.рф
Punycode (ACE): xn—-8sbcgmofwni4adjeyt.xn--p1ai

Процесс работы будет следующим. Клиент запрашивает домен хостинг-беларуси.рф (вводит имя в адресной строке браузера). Это имя преобразуется в последовательность символов Punycode: xn—-8sbcgmofwni4adjeyt.xn--p1ai Далее запрос на разрешение имени xn—-8sbcgmofwni4adjeyt.xn--p1ai в IP-адрес отправляется на соответствующий DNS-сервер и DNS-сервер возвращает ответ.

Преобразование необходимо, поскольку не все существующие DNS-серверы поддерживают обработку доменных имен в формате IDN.

Таким образом, к сайту можно обратиться, используя либо имя IDN (в этом случае преобразование имени в Punycode осуществляется на стороне клиента непосредственно в браузере), либо непосредственно Punycode.

Поделитесь Punycode-конвертером с друзьями и знакомыми:

Punycode-конвертер | Домен — URL — Домен puny

Примеры преобразований кириллических доменов

домен.рф → xn--d1acufc.xn--p1ai
xn--d1acufc5f.xn--p1ai → домены.рф
домен.москва → xn--d1acufc.xn--80adxhks
xn--d1acufc5f.xn--80adxhks → домены.москва
домен.com → xn--d1acufc.com
xn--d1acufc5f.com → домены.com
домен.su → xn--d1acufc.su
xn--d1acufc5f.su → домены.su

Возможности сервиса заключаются в преобразовании доменных имен, написанных на кириллице в кодировку Punycode. Именно она лежит в основе интернационализованных доменных имен (Internationalized Domain Names или IDN).

Что есть домен .РФ?

Сам по себе домен – это адрес человека или компании на просторах интернета, по которому их можно найти. Зачастую это сам адрес сайта. .РФ предоставляет возможность писать в адресной строке не латинские буквы, а родную кириллицу. К примеру, вместо name.ru – имя.рф.

Присутствие букв русского алфавита в домене значительно упрощает запоминание адреса какой-либо страницы. Любой из пользователей, кто далек от знания английского языка, сможет понять, чему посвящен ресурс. К ому же уже доказано фактами, что легче запомнить кириллицу (затрачивается меньше секунды), нежели латиницу (нужно больше времени). Иными словами написание имени домена русскими буквами – это эффективный и благоприятный способ общения с собственной аудиторией на понятном языке.

Internationalized Domain Names

В IDN доменах содержатся символы национального алфавита. К примеру, имя.su или компания.рф и так далее.

В связи с техническими ограничениями доменные имена должны в обязательном порядке содержать буквы латинского алфавита. Другие символы недопустимы. С целью обхода данного ограничения были созданы стандарты:

  • RFC 3490.
  • RFC 3491.
  • RFC 3492.
  • RFC 3454.

Согласно им доменные имена принимают необходимый вид, состоящий из латинских букв, цифр, дефисов. Только впереди ставится специальный префикс «xn--». Такой преобразовательный стиль носит имя Punycode. То есть любое имя можно закодировать посредство ASCII-символов.

Сам процесс преобразования проходит в браузере клиента. В старых следовало бы изначально вводить «xn--80ajjin2aw.xn--p1ai», современные веб-обозреватели прекрасно поймут, если адресная строка будет содержать «Техника.рф». При этом в базы DNS-серверов заносится как раз вариант с префиксом «xn--».

Если, по сути, то любое доменное имя, написанное национальными символами – это псевдоним доменов, которые начинаются с «xn--».

перевод на русский, синонимы, антонимы, произношение, примеры предложений, транскрипция, значение, словосочетания

Hip hop later influenced some punk and hardcore bands, such as Hed PE, Blaggers I.T.A., Biohazard, E.Town Concrete, The Transplants and Refused. Позже хип-хоп повлиял на некоторые панк-и хардкорные группы, такие как Hed PE, Blaggers I. T. A., Biohazard, E. Town Concrete, The Transplants и др.
The trouble with peace is that it tends to punish mistakes instead of rewarding brilliance. Беда с миром в том, что он больше склонен карать за ошибки, чем вознаграждать великолепие.
The punishments being considered – expulsion from the G-8, for example, – would be laughable were the threat to Europe’s peace not so grave. Рассматриваемые наказания – например, исключение из «Большой восьмерки» – были бы забавными, если бы угроза миру в Европе не была бы настолько серьезной.
Well, then what better way to punctuate a day of peace… Than by killing someone? Разве есть лучший способ прервать день мира… чем убийством?
The duty of upholding world peace and punishing evil will be yours. Обязанность защищать слабых в этом жестоком мире вскоре ляжет и на твои плечи.
He was pierced for our transgressions, He was crushed for our iniquities. The punishment that brought us peace was upon Him, and by His wounds we were healed. Он изъязвлен был за грехи наши, и мучим за беззакония наши наказание мира нашего было на Нем, и ранами Его мы исцелились.
How can there be peace until such disloyalty is punished? Какой может быть мир, пока не наказано подобное предательство?
He advocated changing the laws to leave those who chose to practice homosexuality at peace, because at the time it was a punishable crime. Он выступал за изменение законов, чтобы оставить в покое тех, кто решил практиковать гомосексуализм, потому что в то время это было наказуемым преступлением.
The righteous believers answer correctly and live in peace and comfort while the sinners and disbelievers fail and punishments ensue. Праведные верующие отвечают правильно и живут в мире и утешении, в то время как грешники и неверующие терпят неудачу и следуют наказания.
Under this definition, crimes against humanity could only be punished insofar as they could be connected somehow to war crimes or crimes against peace. Согласно этому определению, преступления против человечности могут быть наказаны лишь в той мере, в какой они могут быть каким-либо образом связаны с военными преступлениями или преступлениями против мира.
Prince Escalus of Verona intervenes and declares that further breach of the peace will be punishable by death. Вмешивается принц Эскалус веронский и заявляет, что дальнейшее нарушение мира будет караться смертью.
All signatories to the CPPCG are required to prevent and punish acts of genocide, both in peace and wartime, though some barriers make this enforcement difficult. Все стороны, подписавшие КПКЗ, обязаны предотвращать акты геноцида и наказывать за них как в мирное, так и в военное время, хотя некоторые препятствия затрудняют их осуществление.
When the allies were victorious, the United States blocked British efforts to impose a punitive peace. Когда союзники одержали победу, Соединенные Штаты блокировали британские попытки навязать карательный мир.
Parkes contributed to several British publications, including The Observer, The Jewish Chronicle, Punch and Peace News. Он вырос в Индии и только позднее впервые посетил Англию, где погода в Эдинбурге показалась ему суровой.
If they had respected the Sheriff and his authority, they could have avoided punishment of this severity, and lived peaceful, rewarding lives, working for the good of this great Shire of Nottingham. Если бы они уважали шерифа и его власть, они могли бы избежать такого сурового наказания, и жить мирными, полезными жизнями, работая на благо этого прекрасного графства Ноттингема.
Desertion in peacetime was punishable by long stretches of time in some extremely unpleasant stockades. Дезертирство в мирное время наказывалось довольно длительным пребыванием в каком-нибудь весьма неприятном заведении.
All participating countries are advised to prevent and punish actions of genocide in war and in peacetime. Всем странам-участницам рекомендуется предотвращать и наказывать акты геноцида в военное и мирное время.
Fish House Punch is a strong, rum-based punch containing rum, cognac, and peach brandy. Fish House Punch-это крепкий пунш на основе рома, содержащий ром, коньяк и персиковый бренди.
The previous year 1980 saw the U.S. punk rock movement hitting a peak in popularity. В предыдущем 1980 году американское панк-рок-движение достигло пика популярности.
The full-length debut Capital Punishment followed in 1998, and became the first album by a solo Latino rapper to go platinum, peaking at No. 5 on the Billboard 200. Полнометражный дебют Capital Punishment последовал в 1998 году и стал первым альбомом сольного латиноамериканского рэпера, который стал платиновым, достигнув 5-го места в Billboard 200.
Taihang is an isolated region of dense cloud forests punctuated by jagged peaks. Тайхан-это изолированный район густых облачных лесов, перемежающихся зубчатыми вершинами.
The loss of the pearl was a punishment visited on those who tried to leave their station. Пропажа всех жемчужин была возмездием тем, кто захотел сменить свое место на лучшее.
Pearl Jam has cited many punk rock and classic rock bands as influences, including The Who, Led Zeppelin, Neil Young, Kiss and the Ramones. Pearl Jam цитирует многие панк-рок и классические рок-группы в качестве влияния, в том числе The Who, Led Zeppelin, Neil Young, Kiss и Ramones.
Before Scott Chavez is executed as a punishment for killing his wife, he arranges for his daughter Pearl to live with his second cousin and old sweetheart, Laura Belle. Прежде чем Скотта Чавеса казнят в наказание за убийство жены, он устраивает так, чтобы его дочь Перл жила с его троюродной сестрой и старой возлюбленной, Лаурой Белл.
Former boss Nigel Pearson was credited by several pundits and fans as having laid the foundations for Leicester’s title winning season. Бывший босс Найджел Пирсон был приписан несколькими учеными мужами и поклонниками как заложивший основы для победного сезона Лестера.
Guess we were two peas punching it out in the same pod. Думаю, мы оба были горошинами из одного стручка.
The primary mass base of the MKP was the peasantry of NWFP and the organised workers of Punjab. Основной массовой базой МКП было крестьянство СЗФП и организованные рабочие Пенджаба.
It is mainly Afghan peasants that we have punished by regarding them as terrorists. От нас пострадали в основном афганские крестьяне, которых мы рассматривали как террористов .
The peasants stayed and took the punishment. Крестьяне оставались и расплачивались за все.
The Communist leadership perceived famine as a means of class struggle and used starvation as a punishment tool to force peasants into collective farms. Коммунистическое руководство воспринимало голод как средство классовой борьбы и использовало голод как орудие наказания для принуждения крестьян к вступлению в колхозы.
When his son accidentally destroyed a crop in the field of the Chinese peasants, Möngke punished him. Когда его сын случайно уничтожил урожай на поле китайских крестьян, Мункэ наказал его.
When the Provisional Government sent punitive detachments, it only enraged the peasants. Когда Временное правительство посылало карательные отряды, это только бесило крестьян.
Both sensual and punchy — the time-honoured Peatbog hallmarks. И чувственный, и язвительный-освященные временем отличительные признаки торфяника.
The two-hit-movie punch elevated Peck to the status of Hollywood mega-star. Удар по двум хит-фильмам поднял Пека до статуса голливудской мегазвезды.
The third section is a brief flourish for manuals, ending with an even briefer pedal cadenza punctuated with 9-voice chords. Третий раздел-это краткий росчерк для руководств, заканчивающийся еще более короткой педальной каденцией, перемежающейся 9-голосными аккордами.
German punctuation is pedantic, English punctuation is chaotic, and for Esperanto Dr. Zamenhof suggested we look towards our mother tongue as a guideline. Go figure! Немецкая пунктуация педантична, английская — хаотична, а в эсперанто доктор Заменгоф предлагал оглядываться на родной язык. Поди тут разберись!
But this person also seems to slightly prefer passengers over pedestrians in their choices and is very happy to punish jaywalking. Он также предпочитает пассажиров пешеходам в своём выборе и рад наказать тех, кто перебегает дорогу.
She was at home with everybody in the place, pedlars, punters, tumblers, students and all. Она была на дружеской ноге со всеми постояльцами — с торговцами, игроками, акробатами, студентами.
The section can be evoked to punish sodomites, pedophiles and zoophiles. Этот раздел может быть вызван для наказания содомитов, педофилов и зоофилов.
The gypsies, Snap and Pedro, Are none of Tom’s comradoes, The punk I scorn and the cutpurse sworn, And the roaring boy’s bravadoes. Цыгане, Снэп и Педро, — это не товарищи Тома, не панк, которого я презираю, и не клятвопреступник, и не бравада ревущего мальчишки.
Then I learned something interesting — fox pee is more pungent than flowers. Затем я узнал кое-что интересное. Моча лисы пахнет сильнее цветов.
Okay, well, I’m not gonna talk for long, ’cause I have to pee again, ’cause I have to pee every six minutes, ’cause I have a beach ball in my stomach that’s punching on my bladder. Ладно, так, я не буду говорить долго, потому что мне снова нужно писать, потому что мне нужно писать каждые 6 минут, потому что у меня в животе надувной мячик, пинающий мой мочевой пузырь.
Is this the fellow who peed in your Hawaiian Punch? Это тот парень что помочился в твой фруктовый пунш?
Punishment The loser is tasked with going about a normal day in their life in a Peel Trident. Наказание проигравшему ставится задача провести обычный день в своей жизни в кожуре трезубца.
Punching, peeling and using a torch are other methods of compromising a safe. Пробивать, слезать и использовать факел другие методы компрометации сейфа.
Additional legend proclaims that Peeping Tom was later struck blind as heavenly punishment, or that the townspeople took the matter in their own hands and blinded him. Другая легенда гласит, что Подглядывающий Том был впоследствии ослеплен в качестве небесной кары или что горожане взяли дело в свои руки и ослепили его.
For capital crimes the punishment was death; the last peer to be executed was Laurence Shirley, 4th Earl Ferrers, who was hanged for murder in 1760. За тяжкие преступления полагалась смертная казнь; последним Пэром, которого казнили, был Лоренс Ширли, 4-й граф Феррерс, повешенный за убийство в 1760 году.
Individual-to-individual peer punishment led to less consistently applied social sanctions. Индивидуальное наказание сверстников привело к менее последовательному применению социальных санкций.
When establishing tunnels between the peers, Hamachi uses a server-assisted NAT traversal technique, similar to UDP hole punching. При создании туннелей между одноранговыми узлами Hamachi использует технологию обхода NAT с помощью сервера, аналогичную пробиванию отверстий UDP.
Once an Elder God, Nyctelios has been punished by his peers — especially Nodens — for having created a race of foul servitors. Некогда старший Бог, Никтелиос был наказан своими сверстниками-особенно Ноденсами — за то, что создал расу грязных слуг.
‘Peixoto has an acute ear for cadence, a sharp eye for the luminous image and a good nose for the pungent’ – Independent. Пейшото обладает острым слухом для каденции, острым глазом для яркого изображения и хорошим носом для острого – независимый.
So he was taken into the operating theater, where we found four puncture wounds from the fractured pelvic bone lacerating the bowel. Поэтому его доставили в операционную, где мы обнаружили 4 колотые раны кишечника от раздробленной тазовой кости.
But when that six-year-old heckler punched him in his juggling pins, it kicked up the dormant bacteria in his pelvis. Но когда шестилетка ударил ему по штучкам для жонглирования, это разбудило спящих бактерий из его таза.
She broke her arm, few ribs, punctured a lung, shattered her pelvis… Она сломала руку, несколько рёбер проткнула лёгкое, разбила таз…
Punches lead to a pen being stabbed into an arm; then a water jug is smashed over an executive’s head – before his heart is ripped from his chest. Удары приводят к тому, что ручка вонзается в руку; затем кувшин с водой разбивается о голову руководителя – прежде чем его сердце вырвут из груди.
Penal Code offences carrying a punishment of 10 years’ imprisonment if committed against a member of a Scheduled Caste are punishable by imprisonment for life. Если жертвой преступлений, за которые в Уголовном кодексе установлен 10-летний срок заключения, является представитель зарегистрированной касты, то эти преступления наказываются пожизненным лишением свободы.
The Committee notes that corporal punishment is prohibited in schools and institutions and that it is unlawful as a disciplinary measure in penal institutions. Комитет отмечает, что телесные наказания запрещены в школах и детских учреждениях и что их применение в качестве дисциплинарной меры является незаконным в пенитенциарных учреждениях.
Ms. Al Awadi confirmed that there were provisions in the Penal Code that allowed a rapist to escape punishment if he married his victim. Г-жа Аль Авади подтверждает, что в Уголовном кодексе действительно содержатся положения, позволяющие насильнику уйти от ответственности в случае женитьбы на жертве.
In civics, they taught us that the penal system is supposed to punish and reform. На гражданском праве нас учат тому, что исправительная система должна наказывать и перевоспитывать человека.
Your Excellency, enter her name in the Penal Register for a terrible punishment Ваше Превосходительство, введите ее имя в Регистр Нарушений… для последующего ужасного наказания

Кодер, декодер URL адреса или текст.

Url Encode / Decode.

Система кодирования URL (Uniform Resource Locator Encode/Decode) заключается в том, чтобы заменить «небезопасный» символ при передачи данных, так называемым «безопасным», где перед шестнадцатеричным эквивалентом ставится знак процента — ‘%’ (percent‐encoding).

Стандарт URL ограничивает набор используемых символов, можно использовать латинские буквы, цифры и несколько символов (см. ниже)

Символы, которые не кодируются, определены спецификацией RFC3986 (англ.), бывший стандарт RFC2396 (англ.)

Справка в Википедии: Юникод, кодировка ASCII, идентификатор ресурса URI

Для кодирования URL

из национальных символов в символы ASCII, используют Punycode (см. ниже)

Например, введя в данную форму кодированный текст, состоящий до кодирования, из не английских символов:

%D0%9A%D0%9E%D0%94

Получим после декодирования, следующий нормально читаемый текст:

«КОД»

URL Декодировщик / Кодировщик.

URL Декодировщик / Кодировщик.

Для работы декодера / кодера, В Вашем браузере должен быть разрешен JavaScript.

Лицензия URL декодера: Creative Commons Attribution-ShareAlike 2.0 License.
Этот инструмент предоставляется без каких-либо гарантий.

Рекомендованные правила для кодирования

Не резервированные

Не кодируются:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
0 1 2 3 4 5 6 7 8 9 — _ . ~

Резервированные

Кодируются

! * ‘ ( ) ; : @ & = + $ , / ? % # [ ]

Дополнительные ресурсы декодирования и кодирования

Декодер и разбор URL:

  • trueurl.net (на сайте можно также проверить URL на спам)
  • pressbin.com — URL-encode и URL-decode (используются функции PHP и JavaScript)
  • webtoolhub.com — Кодирование URL и декодирование URL. На сайте, имеются множество и других полезных сервисов (более 60): HTML Encoder Decoder, HTML To Text Converter, HTML Encrypter, URL Deobfuscator, URL Expander (раскодировщик коротких URL),…, англ.)

Другие конвертеры:

opinionatedgeek.com — Декодировщик Base 64 Encoder в режиме онлайн. Объем до 10мб
opinionatedgeek.com — Определение маскированного IP адреса (маскировку IP, часто используют спамеры). Кодирование или декодирование IP

coderstoolbox.net — Строковый конвертер: Base64, XML, URL, ECMAScript, набор символов. В кодировке: US-ASCII, ISO-8859-1, UTF-8, а также другие бесплатные онлайн-инструменты: конвертер времени (

Unix, ISO 8601, RFC 2822), сетевой конвертер, XPath

freeformatter.com — Бесплатные онлайн инструментов для разработчиков. Инструменты: форматирование и проверка кода (JSON, HTML, XML, SQL), кодеры и декодеры (URL, Base 64)…

Расширение Flagfox подключается к сервису разбора URL — urlparser.com. Переход к сервису, осуществляется путем нажатии правой кнопкой мышки в адресной строке по флагу и выбор в меню — Парсер URL

Punycode.

Для кодирования URL из национальных символов в символы ASCII, воспользуйтесь сервисом: «Punycode конвертер» на сайте — wwhois.ru

серфок.рф

, превратится после Punycode конвертера в:

xn--e1aklhdu.xn--p1ai

, что является правильной записью для URL.

Примечание. Если Вы будете отправлять URL, содержащий символы национальной кодировки, в различные веб-сервисы: каталоги, веб-формы, веб-анализаторы и т.д, то используйте Punycode конвертер.

Возможно Вам будут интересны следующие статьи:

атак Punycode — поддельные домены, которые невозможно обнаружить

Что такое Punycode?

Punycode
существительное
Unicode, который преобразует слова, которые не могут быть записаны в ASCII, например греческое слово «спасибо» «ευχαριστώ», в кодировку ASCII, например «xn — mxahn5algcq2e» для использования в качестве доменных имен.
Что это на самом деле означает ?!

Запись цифрами

Как и все компьютеры, все сводится к числам.С каждой вводимой нами буквой, символом или смайликом связано уникальное двоичное число, чтобы наши компьютеры могли их обрабатывать. ASCII , стандарт кодировки символов, использует 7 битов для кодирования до 127 символов, чего достаточно для кодирования алфавита в верхнем и нижнем регистре, чисел 0–9 и некоторых дополнительных специальных символов. ASCII терпит неудачу в том, что он не поддерживает такие языки, как греческий, иврит и арабский, например, здесь появляется

Unicode ; он использует 32 бита для кодирования до 2147483647 символов! Unicode дает нам достаточно возможностей для поддержки любого языка и даже нашей постоянно растущей коллекции смайлов.

Так где же тут Punycode?

Punycode — это способ преобразования слов, которые не могут быть записаны в ASCII, в кодировку Unicode ASCII. Зачем вам это нужно? Глобальная система доменных имен (DNS), система именования любого ресурса, подключенного к Интернету, ограничена символами ASCII. С помощью punycode вы можете включать символы, отличные от ASCII, в доменное имя, создавая «загрузочную» кодировку Unicode как часть сложного процесса кодирования.

Как работает атака Punycode?

символов Unicode могут выглядеть одинаково невооруженным глазом, но на самом деле имеют другой веб-адрес.Некоторые буквы латинского алфавита, используемые в большинстве современных языков, имеют ту же форму, что и буквы в греческом, кириллическом и других алфавитах, поэтому злоумышленник может легко запустить доменное имя, которое заменяет некоторые символы ASCII на символы Unicode. Например, вы можете заменить нормальный T на греческий Tau: τ, пользователь увидит почти идентичный символ T, но за ним, прочитанным компьютером, будет xn — 5xa. В зависимости от того, как браузер отображает эту информацию в адресной строке, мы, люди, не можем распознать этих подлых маленьких персонажей.

Этот метод называется атакой омографа , URL-адреса будут выглядеть законными, и контент на странице может выглядеть одинаково на первый взгляд, но на самом деле это другой веб-сайт, настроенный для кражи конфиденциальных данных жертвы или заразить устройство пользователя. В этих атаках используются распространенные методы, такие как фишинг, принудительная загрузка и мошенничество.

Просто просмотр — Punycode является проблемой во всех браузерах?

По умолчанию многие веб-браузеры используют префикс xn--, известный как префикс кодировки, совместимый с ASCII, чтобы указать веб-браузеру, что домен использует punycode для представления символов Юникода.Это мера защиты от фишинговых атак Homograph. Однако не все браузеры отображают префикс punycode, поэтому посетители ничего не понимают.
Хакеры могут использовать уязвимость в браузерах, которые не используют префикс, чтобы отображать свои поддельные доменные имена в качестве веб-сайтов законных служб, чтобы украсть учетные данные для входа, номера кредитных карт и другую конфиденциальную информацию у пользователей.
В этом примере китайский исследователь безопасности Сюйдун Чжэн обнаружил лазейку, которая позволила ему зарегистрировать доменное имя xn — 80ak6aa92e.com и обход защиты, которая отображается как «apple.com» во всех уязвимых веб-браузерах, в том числе в Chrome, Firefox и Opera. Internet Explorer, Microsoft Edge, Apple Safari, Brave и Vivaldi не были уязвимы.
Наше текущее исследование показывает следующее поведение в двух основных веб-браузерах Chrome и Safari:

  • Chrome — часто отображает непереведенный punycode с префиксом. Если вы не уверены, является ли сайт подозрительным, он не будет переведен в кодировку Unicode, но по-прежнему позволит вам перейти на сайт.Когда он уверен, что сайт является вредоносным, он выдаст предупреждение «Впереди обманчивый сайт».
  • Safari — в большинстве случаев преобразует punycode в символы Unicode. Когда он уверен, что сайт является вредоносным, он выдаст предупреждение «Впереди обманчивый сайт», но по-прежнему преобразует punycode в символы Unicode.

Работают ли атаки Punycode на мобильные приложения? Атаки

Punycode могут иметь место как на настольных компьютерах, так и на мобильных устройствах, поскольку различные разработчики браузеров склонны относиться к punycode одинаково на всех платформах.Короче говоря, если они отображают юникод пользователю на одном устройстве, они делают это на всех платформах. Большая часть текущих исследований Punycode сосредоточена на том, как браузеры обрабатывают эти домены, но наше исследование выходит за рамки браузера, чтобы продемонстрировать, что то, как приложения обрабатывают punycode, не менее важно. В ходе нашего тестирования мы обнаружили, что обманчивые домены punycode не были отмечены как подозрительные широко используемыми инструментами связи и совместной работы, используемыми сотрудниками. Мы протестировали следующие приложения на устройствах iOS и Android: Gmail, Apple Mail, iMessage, Message +, Whatsapp, Facebook Messenger, Skype и Instagram.Только Facebook Messenger, Instagram и Skype предоставили пользователю возможность идентифицировать URL-адрес punycode, либо показывая предварительный просмотр веб-страницы с префиксом xn, либо, в случае Skype, не предоставляя гиперссылки для доменов, использующих Unicode, то есть пользователей не могу перейти из сообщения. Хотя эти приложения не обеспечивают наилучших методов защиты, они, по крайней мере, дают возможность более внимательно оценивать подозрительные ссылки.

Некоторые приложения для совместной работы, которые могут выполнять атаки punycode на мобильные устройства

Таким образом, кажется, что, отображая обманчивый код Юникода, большинство приложений предпочитают улучшать взаимодействие с пользователем, а не обеспечивать безопасность для обнаружения вредоносных сайтов.Определенная ответственность должна лежать на разработчиках этих приложений, чтобы обеспечить соблюдение нескольких уровней безопасности для эффективной защиты от этих атак.

Почему атаки Punycode представляют большую проблему для мобильных устройств?

Наше исследование атак Punycode на мобильные устройства выявило ряд новых вредоносных доменов (перечисленных ниже). Эти сайты не только проводят фишинговые атаки на домены, которые визуально вводят пользователей в заблуждение, но и оптимизированы для мобильных устройств, а это означает, что хакеры знают о трудностях, с которыми мобильные пользователи сталкиваются при идентификации вводящих в заблуждение URL-адресов.Нацеленные на мобильных пользователей, эти атаки приводят к более успешным фишинговым кампаниям.
Фишинговые атаки, как правило, труднее обнаружить на мобильных устройствах по ряду причин. Это становится практически невозможным, если ввести и правильно отобразить punycode.

  • Меньший размер экрана оставляет меньше места для оценки легитимности веб-сайта
  • Дизайн ОС
  • обычно скрывает и без того крошечную адресную строку, когда пользователь прокручивает страницу вниз, чтобы освободить место для содержимого страницы.
  • Отвлеченные пользователи, как правило, бегают по разным страницам и уведомлениям
  • Отсутствуют функции наведения указателя мыши или предварительного просмотра, которые не позволяют пользователю увидеть или оценить место назначения ссылки, прежде чем щелкнуть
  • Можете ли вы определить символ Юникода в домене ниже?

Это становится эмоциональным — Как здесь учитываются домены эмодзи?

Точно так же, как специальные символы разных языков кодируются как punycode, так и постоянно растущая библиотека смайлов.Домен эмодзи — это буквально домен с эмодзи, например www.😉.com, для этого необходим punycode.
Вот недавний пример, обнаруженный интеллектуальной машиной машинного обучения Wandera, MI: RIAM:

Как при атаках Punycode могут использоваться смайлики? Используя смайлики a, хакер может скрыть элементы своей ссылки-подражателя, которые в противном случае выглядели бы подозрительно. Здесь кроется новая возможность для фишеров нацеливаться на более молодую аудиторию с помощью Punycode-фишинга, используемого как часть SMS-фишинговых кампаний, это может быть опасной комбинацией.

20 реальных примеров Punycode с крупными брендами

Фишинговое исследование нулевого дня компании Wandera выявляет атаки Punycode с 2017 года. За последние 12 месяцев количество доменов Punycode увеличилось на 250%:

Марка Что видит пользователь Punycode
Adidas adıdas.de http: // xn — addas-o4a.de /
Aerlingus aerlịngus.com xn--aerlngus-j80d.com
Aerlingus aeṛlingus.com xn--aelingus-of0d.com
Air France airfrạnce.com xn--airfrnce-rx0d.com
British Airways britishairẉays.com xn--britishairays-541g.com
British Airways britishạirways.com xn--britishirways-of2g.com
Google googĺe.com xn--googe-95a.com
Haribo harıbo.com xn--harbo-p4a.com
Иберия ibeṛia.com xn--ibeia-lp1b.com
ИКЕА iƙea.com xn--iea-f6a.com
Lidl lidǀ.com xn--lid-xbb.com
Milka mılka.com xn--mlka-lza.com
Milka mılka.de xn--mlka-lza.de
Rolex rolẹx.com xn--rolx-nu5a.com
Rolex rołex.com xn--roex-11a.com
Ryanair ryanaır.de xn--ryanar-t9a.de
Сингапурские авиалинии sıngaporeair.com xn — sngaporeair-zzb.com
Лонжерон spaɾ.com xn--spa-nxb.com
Старбакс starɓucks.com xn--starucks-hpd.com
Waitrose waıtrose.com xn--watrose-sfb.com

В некоторых из рассмотренных нами примеров сайты отображают конкурсы, предлагающие призы в обмен на обмен ссылкой через WhatsApp, а иногда они перенаправляют пользователя на другие мошеннические страницы, когда пользователь нажимает кнопку «Назад» несколько раз.В других случаях страницы немедленно перенаправляются на другие сайты, на которых отображается реклама обновлений программного обеспечения.
Вскоре после обнаружения и документирования содержимое большинства этих сайтов было удалено. Это доказательство того, насколько быстро действуют хакеры, и согласуется с другими формами фишинговых атак, которые мы наблюдаем.
Наше исследование показывает, что новый фишинговый сайт создается каждые 20 секунд, и обычно они работают всего четыре часа, прежде чем хакеры отключат их и перейдут к созданию нового ложного домена.Умный способ замести следы и избежать обнаружения.

7 способов избежать атаки Punycode

  1. Будьте осторожны, если сайт требует от вас что-то быстро. Это классическая стратегия хакеров, которая заставляет своих потенциальных жертв торопиться, чтобы они с меньшей вероятностью заметили что-нибудь подозрительное. Часто они предлагают сделку «только ограниченное время» и затрудняют выход со страницы с помощью всплывающих окон «Вы уверены, что хотите выйти?»: Все это тактика, чтобы заставить вас оставаться на их сайте дольше и сообщить им свои данные. .
  2. Если вам предлагают сделку, перейдите на исходный сайт компании и проверьте, доступна ли она и там, в противном случае это скорее всего мошенничество, пытающееся имитировать устоявшийся бренд и обманом заставить посетителей передать свои данные.
  3. Если некоторые буквы в адресной строке выглядят странно или дизайн веб-сайта выглядит иначе, перепишите его или посетите исходный URL-адрес компании в новой вкладке для сравнения. Странно выглядящие буквы в адресной строке — это ключевой показатель того, что punycode используется для того, чтобы заставить вас думать, что вы посещаете сайт хорошо зарекомендовавшего себя бренда, когда на самом деле вас перенаправляют на вредоносный сайт.
  4. Используйте менеджер паролей ; это снижает риск вставки паролей на сомнительные сайты.
  5. Заставить ваш браузер отображать имена Punycode, эта опция доступна в Firefox.
  6. Нажмите на замок, чтобы просмотреть и проверить сертификат HTTPS.
  7. Используйте решение мобильной безопасности. Wandera, например, использует машинное обучение и искусственный интеллект MI: RIAM для отслеживания всего трафика данных, а также для обнаружения и блокировки таких фишинговых ссылок.

Punycode — преобразование интернационализированных доменных имен

Punycode определяется IETF в RFC 3492 как возможное применение общего алгоритма кодирования, известного как строка загрузки. Алгоритм начальной загрузки позволяет отображать символьные строки произвольных наборов символов с ограниченным набором элементов. Разработка процедуры кодирования основана на шести принципах:

  • Полнота : Каждую выходную строку можно сопоставить с упрощенной строкой с помощью строки загрузки.
  • Уникальность : Назначение выходной строки соответствующей кодировке строки загрузки является уникальным. Каждому Punycode можно назначить ровно одну копию ASCII и наоборот.
  • Обратимость : Кодирование по загрузочной строке можно отменить в любое время без потери информации.
  • Эффективность : закодированная строка — если она вообще есть — только минимально длиннее выходной строки.
  • Простота : Bootstring использует простые алгоритмы кодирования и декодирования.
  • Читаемость : Кодируются только те символы, которые не могут быть представлены в целевом наборе символов. Все остальные символы остаются без изменений.

Punycode определяет начальную строку в соответствии с требованиями для интернационализированных доменных имен. Это должно позволить отображать символы Unicode через ранее разрешенные базовые символы.

Проиллюстрируем кодирование следующим примером.

IDN : müller-büromöbel

IDN müller-büromöbel содержит два символа с ü и ö , которые не включены в ранее разрешенный набор символов для доменных имен и поэтому должны быть закодированы через Punycode для обеспечения совместимости.

На первом этапе процедура кодирования обеспечивает нормализацию выходной строки символов. Все прописные буквы заменяются соответствующими строчными буквами.

На втором этапе удаляются все неосновных символа . Затем они добавляются к имени домена в закодированной форме и разделяются дефисом.

Если для кодирования интернет-адресов используется синтаксис Punycode, каждая строка результата снабжается так называемым префиксом ACE (сокращение от ASCII-совместимой кодировки ):

Префикс ACE : xn —

Префикс ACE гарантирует, что доменные имена, содержащие дефис, не будут неправильно истолкованы как международные доменные имена.

Это приводит к следующему кодированию для IDN müller-büromöbel :

ACE : xn — mller-brombel-rmb4fg

Что такое Punycode? Определение и объяснение

Определение

Рисунок: Punycode — Автор: Seobility — Лицензия: CC BY-SA 4.0

Punycode — это стандарт кодирования, разработанный для использования с интернационализированными доменными именами. Он позволяет кодировать и представлять символы Unicode для использования в разрешении имен хостов, которое поддерживает только символы ASCII (американский стандартный код для обмена информацией).Это означает, что, например, доменное имя может состоять из китайских иероглифов. Затем Punycode кодирует эти символы и делает их доступными в формате ASCII.

Поскольку Unicode представляет собой нечто большее, чем просто международные наборы символов, Punycode также может использоваться для разрешения имен хостов, использующих эмодзи. Это не широко поддерживаемый стандарт, поэтому существует лишь ограниченное подмножество доменов верхнего уровня, которые поддерживают смайлики в доменных именах.

Фон

Технология, лежащая в основе Интернета, началась еще в 1960-х годах и была разработана в основном американцами.Именно из-за этого ASCII исторически стал стандартом кодирования по умолчанию для многих компьютеров и серверов. ASCII был ограничен 128 символами, которые состояли в основном из латинского алфавита, цифр и знаков препинания.

ASCII не предлагал средств кодирования символов из других систем письма, таких как кандзи, хангыль или кириллица. Это создавало барьер для входа для многих, кто не умеет читать латинский алфавит, и означало, что компании на этих рынках не могли использовать действительно локализованные доменные имена.

Unicode — это система кодирования, разработанная с возможностью расширения и обслуживания как можно большего количества различных символов. Сегодня ASCII используется очень редко, но многие старые программы и оборудование все еще работают в кодировке ASCII. Чтобы преодолеть разрыв между современными системами, использующими Unicode, и более старыми системами, использующими ASCII, был создан Punycode.

Примеры

Punycode полезен для обработки интернационализированных доменных имен. Например, в Корее используется собственная система символов под названием хангыль.Символы хангыль не могут быть правильно закодированы с помощью ASCII, поэтому Punycode берет строки, закодированные с помощью Unicode, и преобразует их во что-то читаемое (и разрешимое) с помощью ASCII.

До появления Punycode компании и службы, работающие на таких рынках, как Корея, должны были адаптировать свои бренды в соответствии с ограничениями ASCII. Например, «날씨» на корейском означает «погода». Веб-сайту придется изменить свое доменное имя на что-то вроде «www.weather.co.kr». С Punycode они могут использовать доменное имя, например www.Вместо этого 날씨 .co.kr ‘, что позволяет брендам использовать свою идентичность и услуги, чтобы быть действительно локализованными для рынков, которые изначально не используют латинский алфавит. Поддержка Punycode также работает для доменов верхнего уровня, поэтому можно иметь имена хостов в Интернете, полностью состоящие из символов, отличных от ASCII, которые разрешаются в системах ASCII с помощью Punycode.

Для строки «날씨» Punycode преобразует ее в «xn — i20bj30b». Это уникальная строка, которая позволяет системам ASCII читать и интерпретировать строку, используя символы вне стандарта ASCII.Системы ASCII интерпретируют URL «www. 날씨 .co.kr» как «www.xn--i20bj30b.co.kr». Стоит отметить, что большинство браузеров отображают результат Punycode в своей адресной строке, чтобы предотвратить фишинговые атаки.

Фишинговые атаки Punycode могут происходить, когда кто-то регистрирует доменное имя, используя строку, закодированную Punycode. Можно купить определенные строки домена Punycode, которые при интерпретации выглядят очень похоже на доменные имена крупных брендов, но на самом деле заменяют один символ визуально похожим символом из другого набора символов, что делает его практически необнаружимым.

Как работает Punycode?

Punycode работает как экземпляр алгоритма загрузочной строки. Алгоритм загрузочной строки позволяет представить произвольный набор символов для использования в ограниченном наборе символов.

Это делается путем интерпретации любой переданной ему строки и анализа ее на наличие символов, отличных от ASCII. Затем Punycode выполняет ряд шагов, чтобы создать строку, которую можно использовать в системах ASCII.

Во-первых, все символы нормализуются путем преобразования их в нижний регистр, где это применимо.Затем символы ищутся на предмет совместимости с ASCII. Любые найденные символы, существующие в наборе символов ASCII, игнорируются; однако нестандартные символы ASCII удаляются из текста, а в конце строки ставится дефис.

При обнаружении нестандартных символов к строке добавляется префикс xn--. Это означает, что строка содержит ACE (кодировка, совместимая с ASCII) и что добавленный дефис следует интерпретировать с использованием Punycode, а не как часть самой строки.

Punycode затем анализирует символы, отличные от ASCII, и добавляет строку символов к дефису, который использует символы ASCII, чтобы указать, какие символы должны быть представлены и где они должны быть размещены в строке. При этом гарантируется, что конечный результат не превышает лимит в 63 символа.

Ссылки по теме

Похожие статьи

Конвертер Punycode

— Конвертер IDN

О преобразователе / ​​декодере Punycode IDN

Используйте бесплатный онлайн-инструмент для кодирования / декодирования доменов IDN (интернационализированных доменных имен).Инструмент преобразует доменное имя со специальными символами (Unicode) в кодировку Punycode (просто ASCII) или наоборот.

Что такое интернационализированное доменное имя (IDN)?

Со временем использование Интернета во всем мире растет. Сегодня в мире много разных языков и алфавитов. Сегодня в мире насчитывается примерно 4,66 миллиарда пользователей Интернета. Большинство также предпочитают использовать свой родной язык в Интернете.

Интернационализированные доменные имена (IDN) — это доменные имена со специальными символами.

  • Он написан на языках или алфавитах с использованием латинских букв с диакритическими знаками (акценты, такие как é или ü).
  • Ни в коем случае не использовать латинский алфавит.

До 2003 года имена доменов могли состоять только из символов

.
  • Латинский алфавит
  • Цифры от 0 до 9
  • Дефис

Мы можем легко понять эти границы, внимательно изучив систему доменных имен (DNS), отвечающую за выполнение поиска DNS.

DNS работает по схеме именования, основанной на Американском стандартном коде обмена информацией (ASCII). Эта система в основном построена на англоязычных клавиатурах и не знакома с международными проектами, такими как Интернет.

Чтобы преодолеть это ограниченное использование символов в доменном имени. Была разработана система интернационализации доменных имен (IDN). Эта система направлена ​​на определение стандартизированного перевода из Unicode в ASCII, что позволяет отображать каждый известный алфавит на каждом языке в доменах Интернета.

Стандартный Punycode RFC 3492 был разработан для отображения строк символов Unicode в символы ASCII без потери качества.

Эта система совершила одну из крупнейших революций в истории Интернета и особенно полезна для людей, использующих азиатские, африканские или арабские системы символов. Он позволяет каждому тексту Unicode находиться в домене IDN и предлагает отличный способ связи с вашим целевым рынком независимо от их родного языка.

Система IDN позволяет пользователям Интернета использовать весь алфавит своего языка в своих доменных именах.Они больше не ограничиваются английскими алфавитами от A до Z и могут использовать полный набор латинских символов и символы из других языков, включая китайский и японский.

Как работают IDN?

IDN работают путем кодирования доменного имени с помощью системы Punycode.

Если вы хотите зарегистрировать домен IDN, вы должны сначала закодировать его с помощью системы Punycode и зарегистрировать эту закодированную версию.

Когда веб-пользователь вводит URL-адрес, содержащий домен IDN, в строке своего браузера, браузер сначала преобразует этот домен IDN в Punycode, а затем разрешает этот домен.

Например, есть домен IDN aüc.com . Этот домен IDN сначала преобразуется в Punycode (ac-xka.com) , а затем будет добавлен префикс «xn--», чтобы сделать его пригодным для запросов DNS. Конечный результат будет (xn--ac-xka.com) .

Примечание: Не все TLD поддерживают все языки. Следовательно, при приобретении доменного имени вы должны выбрать язык, соответствующий символам, которые вы используете в своем домене.

Как использовать онлайн-инструмент кодировщика / декодера IDN для кодирования или декодирования домена IDN?

Чтобы воспользоваться этой возможностью, выполните следующие действия.

  • Откройте онлайн-инструмент кодировщика / декодера IDN .
  • Введите IDN-домен (faß.de) в текстовое поле под заголовком «Текст / IDN».
  • Нажмите кнопку «Преобразовать в Punycode».
  • Инструмент обработает ваш запрос и предоставит вам закодированную строку в текстовой области под заголовком «Punny Code / ASCII».
  • Результат будет в таком виде (xn--fa-hia.de) .
  • Скопируйте этот закодированный домен IDN и вставьте его в желаемое место для дальнейшего использования.

Интернационализированные доменные имена остаются угрозой в 2020 году

Еще в 2018 году журналист-расследователь Брайан Кребс предупреждал о нюансах использования интернационализированных доменных имен (IDN). Эти домены, которые содержат нелатинские символы, но, кажется, содержат таковые, могут использоваться для создания визуальной путаницы, что может оказаться особенно полезным при проведении заслуживающих доверия фишинговых кампаний с использованием Punycode.

В 2020 году сотни IDN продолжат регистрироваться, но их можно будет обнаружить с помощью новой и готовящейся к выпуску версии нашего фида данных Typosquatting.Мы начали внимательно изучать эти доменные имена и хотим выделить некоторые общие примеры, которые мы обнаружили, а также соответствующие передовые методы кибербезопасности.

Что такое фишинговые атаки на IDN или Punycode?

IDN открыли путь для использования символов, не принадлежащих Американскому стандартному коду обмена информацией (ASCII), в доменных именах. IDN помогают людям, не говорящим по-английски, создавать доменные имена на своем местном языке, используя свой алфавит.

Такие страны, как Япония, Китай, Германия и Польша, и многие другие, могут регистрировать доменные имена, используя свой местный алфавит, отличный от английского.Однако, поскольку система доменных имен (DNS) не может распознавать такие символы, доменные имена преобразуются в Punycode. Таким образом, они будут иметь стандартный префикс «xn—». Вот несколько примеров:

  • ? Ffice365 [.] Com (xn — ffice365-x80d [.] Com)
  • вне? Ce365 [.] Com (xn — offce365-ujb [.] Com)
  • offìce365 [.] Com (xn — offce365-41a [.] Com)

Однако для конечных пользователей имена доменов будут отображаться в их формате IDN. А поскольку есть символы, которые очень похожи на символы ASCII, легко ошибиться в их оценке и подумать, что они законны.По этой причине IDN можно эффективно использовать в фишинговых атаках punycode и мошенничестве с компрометацией корпоративной электронной почты (BEC).

Часто используемые символы, отличные от ASCII
Альтернативы букве «о»

Между microsoft [.] Com и micr0soft [.] Com легко отличить. Второй «о», очевидно, был заменен на ноль (0). Но, когда используются следующие похожие символы, вы вряд ли заметите разницу:

  • ? (? ffice365 [.] com, micr? soft [.] com)
  • ? (микро? футов [.] com)
  • ö (microsöft [.] Com)
Альтернативы букве «i»

Мы обнаружили несколько похожих доменов Instagram. Среди них есть те, в которых используются символы, отличные от ASCII, которые очень похожи на букву «i». В доменах, использующих типосквотирование Microsoft, Office 365 и Instagram, также используется пара символов, альтернативных «i».

  • ? (? nstagram [.] com)
  • í (ínstagram [.] Com)
  • ? (m? crosoft [.] net,? nstagram [.] xyz)
  • ? (m? crosoft [.] com)
  • ì (offìce365 [.] Com)
  • ? (off? ce365 [.] com)
Альтернативы букве «а»

Ниже приведены четыре варианта буквы «а», которые злоумышленники могут использовать для регистрации доменов для типографского сквоттинга:

  • ? (instagr? m [.] com)
  • à (instagràm [.] Com)
  • ? (inst? gram [.] com, inst? gram [.] com)
  • ? (lloydsb? nk [.] com)
Альтернативы букве «м»

Также были обнаружены два не-ASCII символа, которые могли заменить букву «m».Их использовали для имитации Microsoft и Instagram.

  • ? (? icrosoft [.] com, instagra? [.] com)
  • ? (? icrosoft [.] com, instagra? [.] com)
Защита от IDN или Punycode Typosquatting

Это только четыре из 26 символов алфавита, которые могут использоваться в атаках на основе IDN. Любой бренд, имеющий буквы «m», «a», «i» и «o», можно легко имитировать с помощью этих специальных символов.

Большинство случаев типосквоттинга могут остаться незамеченными даже для самых бдительных глаз.Например, вы не заметите ничего подозрительного в домене offìce365 [.] Com, пока не посмотрите внимательно на «ì» с серьезным ударением.

Вот несколько способов защиты организаций от таких злоупотреблений.

Раннее обнаружение типосквоттинга с помощью фида данных Typosquatting — Наш фид данных Typosquatting вскоре сможет обнаруживать IDN-имена, связанные с типосквоттингом, особенно те, которые зарегистрированы в один день с другими похожими доменами. О подозрительных доменах также сообщается через день после их регистрации в DNS, что позволяет службам безопасности действовать немедленно.Владельцы брендов также могут использовать базу данных, чтобы узнать, как другие используют их бренд.

Сравните записи WHOIS с записями легальных веб-сайтов — Подтвердить, действительно ли домен является доменом, использующим типосквоттинг, легко с помощью поиска WHOIS. Как только домен, связанный с типосквоттингом, обнаружен, он может пройти поиск в WHOIS, чтобы получить информацию о домене.

Возьмем, к примеру, offìce365 [.] Com. У законного домена office [.] Com есть эти данные регистранта:

С другой стороны, домен typosquatting был зарегистрирован в Японии, в то время как все остальные данные о регистранте были отредактированы для обеспечения конфиденциальности.

Распределение инфраструктуры домена — Для максимальной безопасности лучше всего исследовать домены, использующие типосквотирование, и просматривать другие связанные домены. Это можно сделать, составив карту инфраструктуры домена с помощью записей DNS.

Для иллюстрации вернемся к записи WHOIS оффис365 [.] Com. Поиск WHOIS показывает, что домен использует эти имена хостов:

  • gdns1 [.] Interlink [.] Или [.] Jp
  • gdns2 [.] Interlink.or [.] Jp

Запуск этих серверов имен на Reverse NS API вернет все доменные имена, которые их используют.Для каждого сервера имен инструмент обнаружил более 300 связанных доменов. Хотя мы не видели других доменов, имитирующих известные бренды, некоторые из них могли принадлежать законным малым предприятиям, которые могли бы делиться своей инфраструктурой с потенциальными фишерами.


Типосквоттинг на основе IDN может сделать BEC-мошенничество, фишинговые атаки Punycode и другие киберпреступления более успешными, поскольку пользователи с трудом могут отличить их от легитимных доменов. Следовательно, организации могут активизировать свои усилия по кибербезопасности, обнаруживая домены типосквоттинга как можно раньше.Они могут даже получить больше информации о домене по каждому домену, допускающему опечатку, с помощью поиска WHOIS, Reverse NS API и других инструментов анализа доменов.

Фишинг с «punycode» — когда иностранные буквы пишут английские слова — Naked Security

Система с любопытным названием, известная как punycode , представляет собой способ преобразования слов, которые нельзя записать в ASCII, таких как древнегреческая фраза ΓΝΩΘΙΣΕΑΥΤΟΝ (знай себя), в кодировку ASCII, например: xn --mxadglfwep7amk6b .

Это позволяет кодировать так называемые международные доменные имена (IDN), содержащие символы, отличные от ASCII, с использованием только латинских букв от A до Z, цифр от 0 до 9 и символа дефиса (-).

Это удобно, потому что глобальная система доменных имен (DNS), отвечающая за преобразование понятных человеку имен серверов в удобные для компьютеров сетевые номера, ограничена этим ограниченным набором символов ASCII в именах доменов.

(Раньше, когда был кодифицирован DNS, хранилище и пропускная способность сети были гораздо более ценными ресурсами, чем сегодня, в результате чего ограничения на максимальный размер всего, от наборов символов до сетевых пакетов, обычно гораздо более строгие в старых протоколах.)

Омографы — когда два слова похожи друг на друга

Если вам нужно было зарегистрировать домен…

 XN--MXADGLFWEP7AMK6B.EXAMPLE.COM.
 

… некоторые современные приложения могут распознавать punycoding и автоматически преобразовывать имя для отображения как…

 ΓΝΩΘΙΣΕΑΥΤΟΝ.EXAMPLE.COM.
 

Вы можете видеть, к чему это идет.

Некоторые буквы латинского алфавита имеют ту же форму (если не всегда то же самое звучание), что и буквы греческого, кириллического и других алфавитов, такие как буквы I, E, A, Y, T, O и N в примере. выше.

Таким образом, вы можете зарегистрировать доменное имя punycode, которое не похоже на известное название компании в кодировке ASCII, но, тем не менее, очень похоже на него.

Например, рассмотрим текстовую строку, состоящую из следующих строчных греческих букв: альфа, ро, ро, йота, эпсилон.

В punycode вы получите xn - mxail5aa , но при отображении (в зависимости от установленных вами шрифтов) вы получите: αρριϵ .

Punycode считается вредоносным

Исследователь безопасности по имени Сюйдун Чжэн недавно написал статью, в которой описывается, как разные браузеры используют разные подходы к проблеме гомографа.

Он зарегистрировал домен xn-80ak6aa92e.com , который представляет собой кириллическую версию вышеупомянутого греческого трюка apple — маловероятное кириллическое доменное имя, которое оказывается аррӏе при обратном преобразовании из punycode в «русский». текст.

Интересно, что многие браузеры занимают агрессивную позицию по отношению к подобного рода уловкам.

Safari и Edge, например, просто отображают его как обычный старый xn--80ak6aa92e.com , по крайней мере, если в настройках вашей системы нет кириллицы:

В конце концов, если вы вообще не можете прочитать кириллический текст, вы ничего не потеряете, увидев доменное имя в его формате punycode — на самом деле, вы выиграете от , а не от , увидев в нем вводящую в заблуждение фальшивку. Английский текст.

Internet Explorer также показывает простой URL-адрес punycode, если ваши настройки не подходят для языка, который был закодирован, а также всплывает удобное уведомление о наличии «букв и символов, которые не могут быть отображены» в Интернете. адрес:

Chrome и Firefox не будут автоматически декодировать URL-адреса punycode, если они смешивают несколько алфавитов или языков, на том основании, что такие текстовые строки маловероятны в реальной жизни и, следовательно, вызывают подозрение.

Но и Chrome, и Firefox будут автоматически преобразовывать URL-адреса punycode, которые содержат все свои символы на одном языке, например:

Предотвращение «путаницы»

По всей видимости, Chrome будет добавлять дополнительную защиту браузера, чтобы предотвратить эту автоконверсию, начиная со следующей версии (Chrome 58), даже несмотря на то, что существует риск того, что некоторые подлинные домены, отличные от ASCII, могут впоследствии появиться в браузере как URL-адреса punycode.

Программисты

Firefox, с другой стороны, решительно утверждают, что, поскольку желание Mozilla Foundation состоит в том, чтобы избежать фаворитизма и одинаково относиться ко всем языкам, такая защита нечувствительна с культурной точки зрения и технически нежелательна.

Они говорят, что браузер — не то место, где можно решать, когда ASCII должен занять «первоклассный статус» над какой-либо другой системой письма. (ASCII, кстати, означает Американский стандартный код обмена информацией .)

Некоторые из команды Mozilla предполагают, и не без оснований, что ответственность за предотвращение «сбивающих с толку» доменов, таких как тот, который использовал Сюйдун в своей статье в блоге, лежит на регистраторах каждого домена верхнего уровня.

Если регистраторы, как правило, должны пресекать мошеннические или преднамеренно вводящие в заблуждение регистрации доменов, говорит Mozilla, то им также следует предотвращать «вводящие в заблуждение», точно так же, как страны ожидают, что их автомобильные реестры будут избегать выдачи персонализированных номерных знаков с потенциально потенциально вводимыми в заблуждение. наступательные или B16OTED комбинаций букв и цифр.

Однако не все Mozillans согласны, указывая на то, что риск показаться «культурно нечувствительным» в отношении небольшого количества доменных имен, отличных от ASCII, является небольшой платой за усложнение жизни фишеров и мошенников в реальной жизни. .

В конце концов, решение о том, разрешить или запретить использование «ошибочного» доменного имени в первую очередь, само по себе является культурно субъективным упражнением.

Ой, какую запутанную паутину мы плетем…

Что делать?

У

Xudong есть два хороших предложения, к которым мы добавили треть собственного:

  • Используйте диспетчер паролей, который помогает снизить риск вставки паролей на любой сайт с неправильным названием. Диспетчер паролей не сопоставит ваш пароль Apple-in-ASCII с именем домена Apple-in-Cyrillic, независимо от того, какая система кодировки символов используется.
  • Заставить Firefox всегда отображать имена punycode. Если вы не читаете (или не умеете) читать какие-либо нелатинские алфавиты или системы письма, вы ничего не потеряете, перейдя на страницу about: config и установив network.IDN_show_punycode на true .
  • Нажмите на замок, чтобы отобразить сертификат HTTPS.. Это показывает доменное имя, для которого был выпущен сертификат, с использованием формата, удобного для DNS, только ASCII, поэтому, если имя начинается с xn - , вы смотрите на домен punycode, как бы он ни выглядел в адресной строке . (Примечание. Найдите параметр [Просмотр сертификата] .)

маленький code.js · GitHub

.
/ ** Наибольшее положительное знаковое 32-битное значение с плавающей запятой * /
const maxInt = 2147483647; // он же.31-1
/ ** Параметры начальной строки * /
const base = 36;
const tMin = 1;
const tMax = 26;
const skew = 38;
const damp = 700;
const initialBias = 72;
const initialN = 128; // 0x80
const delimiter = ‘-‘; // ‘\ x2D’
/ ** Регулярные выражения * /
const regexPunycode = / ^ xn — /;
const regexNonASCII = / [^ \ 0- \ x7E] /; // символы, отличные от ASCII
const regexSeparators = / [\ x2E \ u3002 \ uFF0E \ uFF61] / g; // RFC 3490 разделители
/ ** Сообщения об ошибках * /
постоянных ошибок = {
‘overflow’: ‘Overflow: входные данные требуют более широких целых чисел для обработки’,
‘not-basic’: ‘Недопустимый ввод> = 0x80 (не базовая кодовая точка)’,
‘invalid-input’: ‘Недействительный ввод’
};
/ ** Удобные горячие клавиши * /
const baseMinusTMin = base — tMin;
const floor = Math.пол;
const stringFromCharCode = String.fromCharCode;
/ * ———————————————— ————————— * /
/ **
* Общая служебная функция ошибок.
* @ частное
* @param {String} type Тип ошибки.
* @returns {Error} Выдает ошибку RangeError с соответствующим сообщением об ошибке.
* /
Ошибка функции (тип) {
выбросить новую RangeError (ошибки [тип]);
}
/ **
* Общая служебная функция `Array # map`.
* @ частное
* @param {Array} массив Массив, по которому выполняется итерация.
* обратный вызов @param {Function} Функция, которая вызывается для каждого массива
* шт.
* @returns {Array} Новый массив значений, возвращаемых функцией обратного вызова.
* /
функциональная карта (массив, fn) {
const result = [];
пусть длина = массив.длина;
в то время как (длина -) {
результат [длина] = fn (массив [длина]);
}
вернуть результат;
}
/ **
* Простая оболочка, похожая на `Array # map`, для работы со строками доменного имени или адресом электронной почты
* адресов.
* @ частное
* @param {String} домен Имя домена или адрес электронной почты.
* обратный вызов @param {Function} Функция, которая вызывается каждые
* персонаж.
* @returns {Array} Новая строка символов, возвращаемая функцией обратного вызова
* функция.
* /
функция mapDomain (строка, fn) {
константные части = string.split (‘@’);
пусть результат = »;
если (длина детали> 1) {
// В адресах электронной почты только доменное имя должно быть закодировано. Оставить
// локальная часть (т.е. все до `@`) в целости и сохранности.
результат = части [0] + ‘@’;
строка = части [1];
}
// Избегайте `split (regex)` для совместимости с IE8. См. № 17.
строка = строка.replace (regexSeparators, ‘\ x2E’);
константные метки = строка.расколоть(‘.’);
const encoded = карта (метки, fn) .join (‘.’);
возврат результата + закодированный;
}
/ **
* Создает массив, содержащий числовые кодовые точки каждого Unicode
* символ в строке.В то время как JavaScript внутренне использует UCS-2,
* эта функция преобразует пару суррогатных половин (каждая из которых
* UCS-2 представляет собой отдельные символы) в единую кодовую точку,
* соответствует UTF-16.
* @ см. `Punycode.ucs2.encode`
* @see
* @memberOf punycode.ucs2
* @ имя декодировать
* @param {String} строка Входная строка Unicode (UCS-2).
* @returns {Array} Новый массив кодовых точек.
* /
функция ucs2decode (строка) {
const output = [];
пусть счетчик = 0;
const length = строка.длина;
в то время как (счетчик <длина) {
const value = string.charCodeAt (counter ++);
if (значение> = 0xD800 && значение <= 0xDBFF && counter
// Это старший суррогат, и есть следующий символ.
const extra = строка.charCodeAt (счетчик ++);
if ((extra & 0xFC00) == 0xDC00) {// Низкий суррогат.
output.push (((значение & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
} else {
// Непревзойденный суррогат; добавляйте только эту кодовую единицу, в случае, если
// следующая единица кода — старший суррогат суррогатной пары.
output.push (значение);
счетчик—;
}
} else {
output.push (значение);
}
}
возвратный вывод;
}
/ **
* Создает строку на основе массива числовых кодовых точек.
* @ см. `Punycode.ucs2.decode`
* @memberOf punycode.ucs2
* @ имя кодировать
* @param {Array} codePoints Массив числовых кодовых точек.
* @returns {String} Новая строка Unicode (UCS-2).
* /
const ucs2encode = массив => Строка.fromCodePoint (… массив);
/ **
* Преобразует базовую кодовую точку в цифру / целое число.
* @see `digitToBasic ()`
* @ частное
* @param {Number} codePoint Базовое числовое значение кодовой точки.
* @returns {Number} Числовое значение базовой кодовой точки (для использования в
* представляет целые числа) в диапазоне от 0 до base — 1 или base, если
* кодовая точка не представляет значение.
* /
const basicToDigit = функция (codePoint) {
, если (codePoint — 0x30 <0x0A) {
код возврата Point — 0x16;
}
, если (codePoint — 0x41 <0x1A) {
код возврата Точка — 0x41;
}
, если (codePoint — 0x61 <0x1A) {
код возврата Point — 0x61;
}
возвратная база;
};
/ **
* Преобразует цифру / целое число в базовую кодовую точку.
* @see `basicToDigit ()`
* @ частное
* @param {Число} цифра Числовое значение базовой кодовой точки.
* @returns {Число} Базовая кодовая точка, значение которой (при использовании для
* представляет целые числа) — это `цифра`, которая должна быть в диапазоне
* из «0» в «base — 1».Если флаг не равен нулю, верхний регистр —
* б / у; в противном случае используется строчная форма. Поведение не определено
* если флаг не равен нулю и цифра не имеет прописной формы.
* /
const digitToBasic = функция (цифра, флаг) {
// 0..25 отображается в ASCII a ..z или A..Z
// 26..35 преобразовать в ASCII 0..9
вернуть цифру + 22 + 75 * (цифра <26) - ((flag! = 0) << 5);
};
/ **
* Функция адаптации смещения согласно разделу 3.4 RFC 3492.
* https: // инструменты.ietf.org/html/rfc3492#section-3.4
* @ частное
* /
const Adapt = функция (delta, numPoints, firstTime) {
пусть k = 0;
дельта = первое время? пол (дельта / влажность): дельта >> 1;
дельта + = этаж (дельта / количество точек);
для (/ * без инициализации * /; delta> baseMinusTMin * tMax >> 1; k + = base) {
дельта = пол (дельта / baseMinusTMin);
}
возвратный этаж (k + (baseMinusTMin + 1) * delta / (delta + skew));
};
/ **
* Преобразует строку Punycode, состоящую только из символов ASCII, в строку Unicode.
* символов.
* @memberOf punycode
* @param {String} input Строка Punycode, состоящая только из символов ASCII.
* @returns {String} Результирующая строка символов Юникода.
* /
const decode = функция (вход) {
// Не используйте UCS-2.
const output = [];
const inputLength = input.length;
пусть i = 0;
пусть n = initialN;
let bias = initialBias;
// Обработка основных кодовых точек: пусть `basic` будет номером входного кода
// указывает перед последним разделителем, или 0, если его нет, копировать
// первый базовый код указывает на вывод.
let basic = input.lastIndexOf (разделитель);
, если (базовый <0) {
базовый = 0;
}
для (пусть j = 0; j
// если это не базовая кодовая точка
если (вход.charCodeAt (j)> = 0x80) {
Ошибка («не-базовая»);
}
output.push (input.charCodeAt (j));
}
// Основной цикл декодирования: запускается сразу после последнего разделителя, если есть базовый код
// точки скопированы; в противном случае начните с самого начала.
for (let index = basic> 0? Basic + 1: 0; index
// `index` — это индекс следующего символа, который будет использоваться.
// Декодировать обобщенное целое число переменной длины в дельту,
// который добавляется к `i`.Проверить переполнение проще
// если мы увеличиваем `i` по ходу движения, то вычитаем его начальное
// значение в конце для получения `delta`.
пусть oldi = i;
для (пусть w = 1, k = base; / * без условия * /; k + = base) {
если (индекс> = inputLength) {
Ошибка («недопустимый ввод»);
}
const digit = basicToDigit (input.charCodeAt (индекс ++));
если (цифра> = основание || цифра> этаж ((maxInt — i) / w)) {
Ошибка («переполнение»);
}
i + = цифра * w;
const t = k <= смещение? tMin: (k> = смещение + tMax? tMax: k — смещение);
, если (цифра
перерыв;
}
const baseMinusT = base — t;
, если (w> пол (maxInt / baseMinusT)) {
Ошибка («переполнение»);
}
w * = baseMinusT;
}
const out = выход.длина + 1;
bias = приспосабливаться (i — oldi, out, oldi == 0);
// `i` должен был обернуться от` out` до `0`,
// каждый раз увеличиваем `n`, поэтому мы исправим это сейчас:
, если (пол (вход / выход)> maxInt — n) {
Ошибка («переполнение»);
}
n + = этаж (в / в);
i% = out;
// Вставьте `n` в позицию` i` вывода.
output.splice (i ++, 0, n);
}
return String.fromCodePoint (… output);
};
/ **
* Преобразует строку символов Юникода (например,грамм. метку доменного имени) на
* Строка Punycode, состоящая только из символов ASCII.
* @memberOf punycode
* @param {String} input Строка символов Юникода.
* @returns {String} Результирующая строка Punycode, состоящая только из символов ASCII.
* /
const encode = функция (вход) {
const output = [];
// Преобразование ввода в UCS-2 в массив кодовых точек Unicode.
input = ucs2decode (ввод);
// Кешировать длину.
пусть inputLength = input.length;
// Инициализируем состояние.
пусть n = initialN;
пусть дельта = 0;
let bias = initialBias;
// Обработка основных кодовых точек.
для (постоянное текущее значение входа) {
if (currentValue <0x80) {
output.push (stringFromCharCode (currentValue));
}
}
пусть basicLength = output.длина;
пусть handledCPCount = basicLength;
// `handledCPCount` — количество обработанных кодовых точек;
// `basicLength` — это количество базовых кодовых точек.
// Завершаем основную строку разделителем, если он не пуст.
если (основная длина) {
output.push (разделитель);
}
// Основной цикл кодирования:
в то время как (handledCPCount
// Все неосновные кодовые точки
// побольше:
let m = maxInt;
для (постоянное текущее значение входа) {
if (currentValue> = n && currentValue
m = currentValue;
}
}
// Увеличьте дельту настолько, чтобы перевести состояние декодера на ,
// но остерегайтесь переполнения.
константа handledCPCountPlusOne = handledCPCount + 1;
if (m — n> floor ((maxInt — delta) / handledCPCountPlusOne)) {
Ошибка («переполнение»);
}
delta + = (m — n) * handledCPCountPlusOne;
п = м;
для (постоянное текущее значение входа) {
if (currentValue maxInt) {
Ошибка («переполнение»);
}
if (currentValue == n) {
// Представляем дельту как обобщенное целое число переменной длины.
пусть q = дельта;
для (let k = base; / * без условия * /; k + = base) {
const t = k <= смещение? tMin: (k> = смещение + tMax? tMax: k — смещение);
, если (q
перерыв;
}
const qMinusT = q — t;
const baseMinusT = base — t;
вывод.толкать (
stringFromCharCode (digitToBasic (t + qMinusT% baseMinusT, 0))
);
q = этаж (qMinusT / baseMinusT);
}
output.push (stringFromCharCode (digitToBasic (q, 0)));
смещение = адаптировать (дельта, handledCPCountPlusOne, handledCPCount == basicLength);
дельта = 0;
++ handledCPCount;
}
}
++ дельта;
++ n;
}
возвратный вывод.присоединиться(»);
};
/ **
* Преобразует строку Punycode, представляющую имя домена или адрес электронной почты
* в Unicode. Преобразованы будут только части ввода с кодировкой Punycoded, т.е.
* не имеет значения, вызываете ли вы его в строке, которая уже была
* преобразован в Unicode.
* @memberOf punycode
* @param {String} введите Punycoded доменное имя или адрес электронной почты на
* конвертировать в Unicode.
* @returns {String} Юникодное представление данного Punycode
* строка.
* /
const toUnicode = функция (вход) {
return mapDomain (ввод, функция (строка) {
вернуть regexPunycode.тест (строка)
? декодировать (строка.slice (4) .toLowerCase ())
: строка;
});
};
/ **
* Преобразует строку Unicode, представляющую имя домена или адрес электронной почты, в
* Punycode.Преобразованы будут только части доменного имени, отличные от ASCII,
*, т.е. не имеет значения, если вы вызываете его с доменом, который уже находится в
* ASCII.
* @memberOf punycode
* @param {String} input Имя домена или адрес электронной почты для преобразования в виде
* Строка Unicode.
* @returns {String} Представление Punycode данного доменного имени или
* адрес электронной почты.
* /
const toASCII = функция (вход) {
return mapDomain (ввод, функция (строка) {
вернуть regexNonASCII.тест (строка)
? ‘xn--‘ + кодировать (строка)
: строка;
});
};
/ * ———————————————— ————————— * /
/ ** Определить общедоступный API * /
const punycode = {
/ **
* Строка, представляющая текущий Punycode.js номер версии.
* @memberOf punycode
* @type String
* /
‘версия’: ‘2.1.0’,
/ **
* Объект методов для преобразования из внутреннего символа JavaScript
* представление (UCS-2) в кодовые точки Unicode и обратно.
* @ см.
* @memberOf punycode
* @type Object
* /
‘ucs2’: {
‘декодировать’: ucs2decode,
‘кодировать’: ucs2encode
},
‘декодировать’: декодировать,
‘кодировать’: кодировать,
‘toASCII’: toASCII,
‘toUnicode’: toUnicode
};
.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *