Как стать автором
Обновить

Комментарии 32

Да не сочтёт хабрасообщество за рекламу и звиняюсь за небольшой оффтоп (ибо тема, точнее подход, не совсем про-то, но с кейлоггерами, включая скрин-троянов и т.п. нечисть, справляется на ура, плюс запоминать пароли не надо) — сделал как-то расширение для ffox-а — пользуйтесь на здоровье... Вдруг кому пригодится.

В генерации паролей участвует ваш нестойкий пароль, URL-адрес (domain.tld) и ваша секретная фраза.
Спасибо, но я не понял: а чем это отличается от KeePass? Узнается URL-адрес, кейлоггер отслеживает нестойкий пароль и секретную фразу. Злоумышленник берет Ваше расширение, подсовывает ему отслеженную инфу и получает доступ.

секретная фраза вводится один раз (запоминается в профиле), вытащить её оттуда сродни вытаскиванию пароля из поля формы, даже хуже ибо расширения в фоксе подписываются (т.е. неизменяемы). Максимум что может быть украдено кейлоггером — это нестойкий, не замешанный, пароль.
От keepass это отличается тем что пароли не хранятся нигде (имхо это моветон), они "вычисляются* алгоритмически

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

Т.е. другими словами, вы знаете что у вас кейлоггер сидит и живете с этим? Т.е. случайное, до времени незамеченное, заражение — это одно, но это ж не норма...


Ну тогда вводите секрет как-нибудь "гарантированно" секьюрно (по частям, с копи-пастой, драг-дропом с яндекс клавиатуры и т.п.), т.е. максимально сложно — обфусцировано (один раз же)...

В этом и проблема, как вводить «как-нибудь „гарантированно“ секьюрно». Подумал, Вы знаете, раз этим занимались. Я не про себя, но среднему юзеру откуда знать сидит ли у него кейлоггер? Подозреваю, что для многих заражение не замечено.
Array.prototype.shuffle = function( b )

var line0 = new Array('<li class="symbol">…
var line1 = new Array('<li class="letter">…
var line2 = new Array('<li class="letter">…

if (focusss == false)

Ужас, ужас, ужас. Приведите в порядок код и форматирование.

Подскажите тогда, что в js считается красивым кодом. Мне, как специалисту широкого профиля важно, чтобы работало… остальное за борт))

Да в общем-то тут к JS применим только манкипатчинг как антипаттерн. Всё остальное — глобально.


Переменные вида "focusss" и вид самого метода shuffle сравните с тем что на SO: http://stackoverflow.com/a/2450976/506954. Вроде и делают одно и то же, однако их код более читаем, что не менее важно чем работоспособность, если вы решили поделиться своим кодом с сообществом.


Пробелы с отступами у вас отличаются от примера к примеру — если и копипастите код откуда-то — форматируйте его, приводите в единый вид.


Перечисление кнопок просто кошмарно, и JS тут вообще ни при чём. Используйте отдельный метод — генератор кнопки и исходный массив символов — это убережёт от возможных опечаток и сделает код более читабельным и поддерживаемым, складывайте его в коллекцию по символу или просто по индексу.


Сортируйте массив индексов, а не сами кнопки. Да, + массив, однако всё стаёт гораздо читабельнее, гораздо легче поддерживать и вообще душа радуется.


if (variable == false) абсолютно равноценно if (!variable), либо проверяйте на строгое соответствие === если это важно.


Кроме всего прочего, неплохо бы выложить куда-нибудь на Github.


И почему, собственно, пост про Safari? Какое он отношение имеет конкретно к этому браузеру?

Не мелковато для GitHub? С замечаниями согласен. Расширение (ссылка на исходник в конце статьи) собрано доя Safari, да и стиль клавиатуры похож на «яблочный»
На моей памяти есть банковские трояны, которые не только сохраняют данные набираемые с клавиатуры, но и сохраняют небольшую область экранного буфера под курсором в момент клика мышкой. Так что это не панацея
есть даже трояны с «прямым эфиром» — streaming screencast. Единственная разница- это легко заметить по нагрузке сетевой карты.
Да. Не панацея. Но в статье хорошая идея:
Чтобы выйти из ситуации просто перемешаем раскладку виртуальной клавиатуры!

Конечно, если злоумышленник будет получать скрины в момент клика, то это не поможет. Но здесь возможна хитрость: обозначим буквы-цифры пиктограммами: 1-Яблоко,..., 9-Молоток,..., а-Персик, и т.д. Распечатаем на принтере эту табличку и будем выводить на клавиатуре со случайной раскладкой пиктограммы. Пользователь, набирает пароль по бумажной табличке, которую злоумышленник не видит (не забыть отключить web-камеру, перед вводом пароля!). Злоумышленник получит скрины, где были нажаты: Молоток, Персик, Яблоко, Молоток, Яблоко,… и далее ему остается делать перебор, который будет очень долгим при достаточной длине пароля.

Можно модифицировать этот метод и использовать обычную клавиатуру, если ПО будет ее перекодировать при вводе пароля: пусть 1 -> q, 2 -> x, ..., a -> t, b -> 8,… Тогда, чтобы набрать пароль x8q, пользователь должен набрать 2b1. Понятно, что таблица перекодировки должна быть надежно зашифрована, и должны быть приняты меры на случай дампа участков памяти — в этом плане предложено много эффективных подходов.

Еще можно зашумлять набор. После каждого нажатия/клика пользователем ПО случайным образом эмулирует несколько нажатий/кликов, запоминает их и удаляет из общей последовательности нажатий/кликов, получая таким образом пароль, введенный пользователем. А злоумышленнику придется гадать, что в общей последовательности исходит от пользователя.
Это хороший комментарий. Над этим подумаю, у меня не было мысли развивать клавиатуру, писал как баловство, если честно, но на досуге можно сделать и новую версию)
Несколько лет назад у меня была небольшая переписка с Dominik Reichl (автор KeePass), где обсудили эти идеи. Ему в принципе понравилось, но, кажется, он так ничего и не попробовал. Напишите ЛС, если попробуете, что получилось.

Кажется, при таком уровне паранойи проще забрать все свои деньги из банка и сложить в носок под подушку.

А носок пропитать чилийским перцем чтоб не стащила собака (или другая живность)))
А как защитить работников банка? ;)
Яблочки это хорошо, но уж слишком много мороки. Первое что приходит в голову, это скрывать символ при наведении на него мышкой (для пущего эффекта можно скрывать рядом находящиеся символы).
Как вариант можно случайно менять стили: шрифты, размеры, цвет, фон кнопки… капча?))
Можно еще перетасовывать буквы после каждого нажатия.
Пробовал. Это дико неудобно. К случайной раскладе в процессе ввода пароля еще можно приноровиться, но чтобы всякий раз — просто фигурный онанизм))
вполне можно наклеить на стандартную клавиатуру буквы вперемешку (или как удобно), и написать приложение по замене нажатой буквы/цифры на то что наклеено на клаве. (горе тем кто учил слепой 10 пальцевый метод печати)
Тогда уж проще завести дополнительную клавиатуру с измененной раскладкой
Или воспользоваться программной реализацией. В Windows это утилиты наподобие KeyScrambler, Ghostpress, которые работают через собственный драйвер… возможно что-то подобное есть и для MacOS?
Господи, я думал что я один такой параноик, я когда на учебе за компьбтерами сидел, если приходилось заходить куда-то открывал виртуальную клавиатуру, и перед каждым нажатием меня лее положение, плюс положение курсора в воде и прочее. :D

Единственное что интересно, нельзя ли вытащить значение прямиком из поля ввода? Или из «канала» к полю ввода?
Я так понимаю сложность доступа такого рода — дело уязвимостей самого браузера
Ох не «в воде», а «в поле ввода». Поздно заметил.
В osx (mac os) нажатия клавиш в полях ввода типа «password» не отлавливаются с помощью CGEventTap по умолчанию (что конечно не отменяет возможности логировать пароли из других типов инпутов). Но вполне вероятно что есть и другие, недокументированные возможности.
Сомнительная штука. По скольку это может быть актуальным до первого внимания тех, кто не получил валидных логов — далее будет легко найти заковырки, чтобы получить актуальную инфу с различных уровней. И сразу после этого данный метод станет опаснейшим заблуждением безопасности.
//держите в чистоте операционку… ubuntu или mac
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории