Пользователь
0,0
рейтинг
23 июня 2011 в 23:29

Разработка → Подбор паролей к WPA/WPA2 с использованием видеокарты из песочницы

Привет, Хабр!
Сегодня я расскажу и покажу вам, как можно использовать всю мощность ваших видеокарт для игр перебора паролей к Wi-Fi. Как-то не комильфо в наше время использовать только процессорные мощности под эти задачи (в частности aircrack-ng), когда в 80% компьютеров есть видеокарта. Поэтому разумно использовать всю потенциальную мощность ваших систем. А именно, речь пойдет о замечательной программе pyrit.

Немного о программе:
Pyrit позволяет создавать огромные базы данных, для вычислений WPA/WPA2-PSK аутентификации. Используя вычислительную мощность многоядерных и других платформ через ATI-Stream, Nvidia CUDA и OpenCL, в настоящее время, безусловно, самая мощная атака против одной из наиболее часто используемых в мире безопасности протоколов.

WPA/WPA2-PSK является подмножеством стандарта IEEE 802.11 WPA/WPA2, что усложняет распределение ключей и аутентификации клиента путем присвоения каждому участвующему Pre-Shared Key. Это главный ключ получается из пароля, который пользователю необходимо предварительно настроить, например, на своем ноутбуке и точке доступа. Когда ноутбук создает соединение с точкой доступа, новый ключ сессии происходит от мастер-ключа для шифрования и аутентификации.Когда лаптоп создает соединение к точке доступа, новый ключ сессии генерируется на основе мастер-ключа чтобы зашифровать и авторизовать последующий трафик. «Экономия» на использовании единственного мастер-ключа вместо отдельных ключей для каждого пользователя упрощает развертывание WPA/WPA2 сетей в домах и мелких офисах ценой уязвимости протокола к брутфорсу фазы передачи ключа. Это позволяет полностью раскрыть пароль, который защищает сеть.

В чем профит? Сравните количество pmk/s на aircrack-ng и pyrit:
image image

Разумно заметить, что все действия проводились в ubuntu 10.04 R2 x86_64 с видеокартой Ati R6950 Twin Frozr III.
(Т.е. все справедливо для любых ubuntu-подобных систем, в частности для backtrack 5, с минимальными различиями для 32 и 64 битными системами).
Установка
Список необходимых программ:
1. AMD driver 11.6
2. AMD APP SDK 2.4 тырк 1 тырк 2
3. Pyrit svn checkout pyrit.googlecode.com/svn/trunk pyrit_svn
4. Calpp++ тырк

1.Установка драйвера:
chmod +x ati-driver-installer-11-5-x86.x86_64.run
sudo ./ati-driver-installer-11-5-x86.x86_64.run
sudo reboot


2.Установка AMD APP SDK 2.4:
cp /home/user/Downloads/AMD-APP-SDK-v2.4-lnx64.tgz /home/user
cd /home/user
tar -xvzf AMD-APP-SDK-v2.4-lnx64.tgz
sudo gedit ~/.bashrc

Внизу этого файла добавляем следующие строки:

export AMDAPPSDKROOT
export AMDAPPSDKSAMPLESROOT
export AMDAPPSDKROOT=/home/user/AMD-APP-SDK-v2.4-lnx64
export AMDAPPSDKSAMPLESROOT=/home/user/AMD-APP-SDK-v2.4-lnx64/samples
export LD_LIBRARY_PATH=$AMDAPPSDKROOT/lib/x86:$AMDAPPSDKROOT/lib/x86_x64:$LD_LIBRARY_PATH

image

! Поменяйте /user/ на свое имя пользователя
Разумно заметить, что выше приведенный вариант работает для систем любой разрядности.

Logout

3.Регистрируем icd-registration:
tar xfz $AMDAPPSDKROOT/icd-registration.tgz
sudo cp $AMDAPPSDKROOT/etc /etc


ВАЖНО!
В некоторых англоязычных руководствах описана установка обеих технологий, которые используют карты Ati для взаимодействия непосредственно с карточкой, это OpenCL которая морально и физически устарела для этого дела, и Calpp с библиотеками libboost, которую мы и будем использовать.

4.Установка Calpp:
sudo apt-get install libboost1.40-all-dev cmake
tar -xvzf calpp-0.90.tar.gz
cd calpp-0.90
sudo gedit CMakeLists.txt


Исправляем FIND_LIBRARY на следующие значения:
FIND_LIBRARY( LIB_ATICALCL aticalcl PATHS "/home/user/AMD-APP-SDK-v2.4-lnx64/lib/x86_64/" )
FIND_LIBRARY( LIB_ATICALRT aticalrt PATHS "/home/user/AMD-APP-SDK-v2.4-lnx64/lib/x86_64/" )
FIND_PATH( LIB_ATICAL_INCLUDE NAMES cal.h calcl.h PATHS "/home/user/AMD-APP-SDK-v2.4-lnx64/include/CAL" )

image

sudo cmake .
sudo make install


5.Установка pyrit:
sudo apt-get install g++ python-dev zlib1g-dev libssl-dev python-scapy libpcap0.8 libpcap0.8-dev libpcap-dev
svn checkout pyrit.googlecode.com/svn/trunk pyrit_svn
cd /pyrit_svn/pyrit
sudo python setup.py build install
cd ..
cd cpyrit_calpp
sudo python setup.py build install


На этом установка закончена.
Проверяем правильность установки:
pyrit selftest

Использование

1. Смотрим доступные ядра процессора/видеокарт:
pyrit list_cores

2. Запускаем оценочный тест:
pyrit benchmark

вывод (количество pmk/s естественно будет зависеть от вашей видеокарты):

#1: 'CAL++ Device #1 'ATI CYPRESS'': 82426.3 PMKs/s (RTT 2.4)
#2: 'CPU-Core (SSE2)': 643.5 PMKs/s (RTT 3.0)
#3: 'CPU-Core (SSE2)': 655.1 PMKs/s (RTT 3.0)
#4: 'CPU-Core (SSE2)': 691.0 PMKs/s (RTT 2.9)
#5: 'Network-Clients': 0.0 PMKs/s (RTT 0.0)


Разумно заметить, что 1 видеокарта заменяет 1 ядро процессора, т.е. если у вас 2 и более карт, либо карта двухчиповая, то вывод будет таким:

#1: 'CAL++ Device #1 'ATI CYPRESS'': 82426.3 PMKs/s (RTT 2.4)
#2: 'CAL++ Device #2 'ATI JUNIPER'': 41805.7 PMKs/s (RTT 2.6)
#3: 'CPU-Core (SSE2)': 655.1 PMKs/s (RTT 3.0)
#4: 'CPU-Core (SSE2)': 691.0 PMKs/s (RTT 2.9)
#5: 'Network-Clients': 0.0 PMKs/s (RTT 0.0)

Далее все приведенные действия основываются на том, у вас уже есть .cap файл с перехваченным handshake'ом (как перехватить handshake).

ВАЖНО!
В pyrit'е можно создавать целые базы прекомпилированных хешей для подбора паролей. Есть 2 варианта хранения и использования этих баз:
Вариант 1 — хранение базы в скрытой домашней папке пользователя. Я его называю мобильным, т.е. берется файл с 1 миллионом часто встречающихся паролей, после чего к нему добавляются любые essid'ы для быстрой проверки (1 миллион слов + 1 essid на моей карте это примерно минута времени).
Плюсы:
Файл с паролями залил 1 раз и забыл (можно заливать сколько угодно, но НЕжелательно)
Любое количество essid'ов с любыми именами
Маленькие затраты по времени
Минусы:
При использовании словарей более 20 миллионов и хотя бы 10 разных essid'ов время тратится значительно больше.
Вывод — плюсы плавно перетекают в минусы и наоборот. От себя замечу, что это идеальный вариант при наличии пробивного словаря до 1 миллиона слов, который позволит вам чекать разные .cap файлы с большой скоростью.
Пример использования:

pyrit -i /путь/до/файла/с/паролями/пароли.тхт import_passwords
pyrit -r cap-01.cap analyze
pyrit -r cap-01.cap -b 00:11:22:33:44:55 attack_batch
либо
pyrit -r cap-01.cap attack_batch

Вариант 2 — хранение базы в любой указанной папке пользователя. Это более основательный подход к делу. Позволяет создать базу для конкретных essid'ов и конкретным числом паролей, т.е. берется файл с 100 миллионами паролей, после чего к нему добавляются любые essid'ы с уникальными именами. После чего база компилируется и привязывается к конкретным essid'ам которые вы в нее залили. После компиляции скорость увеличивается в 5-7 раз. Отличный вариант скажете вы, и будете правы, но ложка дектя конечно же есть :) подвох заключен во времени компиляции, которые естественно зависит от кол-ва паролей и essid'ов и составляет продолжительное время.
Плюсы:
Допустим 1 база на 10 уникальных essid'ов может использоваться для любых точек доступа при условии что имя точки совпадает с тем, что находится в базе. Т.е. если у двух ваших соседей имя точки доступа dlink, но естественно разные mac-адреса, это НЕ помешает вам перебирать их по своей базе без необходится создания новой базы.
Скорость
Огромная скорость
Сделал 1 базу на самые часто встречающиеся essid'ы и чекай их за минимальное время в любых!!! количествах.
Минусы:
Время компилирования
Занимает много места на жестком диске.
Вывод — сухие факты про мою базу: 850 миллионов слов, 24 essid'а, 32 часа компилирования, 650.000 pmk/s перебор по базе, вес 240 gb.
Естественно при меньшем кол-ве паролей и essid'ов затраты по времени уменьшаются прямопропорционально. Стоит это того или нет, каждый решает сам.
Пример использования:

pyrit -u file:///путь/до/файла/где/будет/база.db -i /путь/до/файла/с/паролями/пароли.тхт import_passwords
pyrit -u file:///путь/до/файла/где/будет/база.db -e linksys create_essid
pyrit -u file:///путь/до/файла/где/будет/база.db eval
pyrit -u file:///путь/до/файла/где/будет/база.db batch
pyrit -u file:///путь/до/файла/где/будет/база.db eval
pyrit -u file:///путь/до/файла/где/будет/база.db -r /путь/до/файла/с/cap/output-01.cap attack_db

Заключение
Для тех кто постоянно/проффесионально занимается подбором паролей к Wi-Fi наличие подобных программ существенно облегчает жизнь. В наше время грех не использовать все мощности своего железа, не зря же апгрейд делаем :) (еще раз напомню разницу — перебор на процессоре ~3.000 pmk/s, перебор на видеокарте ~85.000 pmk/s). Пару слов про аналоги — это программа commview for wifi, сделана под винду, я ее в глаза не видел и не трогал, потому что воняет не пользуюсь виндой. Она, конечно, платная (500$ профит).

Ссылки по теме:
pyrit
aircrack-ng
@Mach1ne
карма
31,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (60)

  • +3
    Вы как то хитро объединили два метода: брутфорса и атаки по Rainbow-tables. Когда готовишь таблицы в принципе то не так критично 1 неделя времени или 1 неделя и 3 дня. Там вопрос только в том, чтобы места было достаточно.
    + Последующий анализ упирается в скорость чтения такого массива данных.
    Кстати, а как насчет CUDA пробовали, как результаты?
    • 0
      Computed 1011.43 PMKs/s total.
      #1: 'CUDA-Device #1 'GeForce G102M'': 684.3 PMKs/s (RTT 2.9)
      #2: 'CPU-Core (SSE2)': 397.9 PMKs/s (RTT 3.0)
      • 0
        Попробовал ради интереса на макбуке:
        Computed 1055.81 PMKs/s total.
        #1: 'OpenCL-Device 'GeForce 9400M'': 510.2 PMKs/s (RTT 3.2)
        #2: 'CPU-Core (SSE2)': 612.2 PMKs/s (RTT 2.9)


        Вечером установлю CUDA, интересно на сколько изменятся показатели.
        • 0
          а не подскажете как установить на макбуке?
          Спасибо
          • 0
            На сайте есть пошаговая инструкция.
            Собираете\устанавливаете основной модуль и поддержку для OpenCL.
    • 0
      + Последующий анализ упирается в скорость чтения такого массива данных.
      Кстати, а как насчет CUDA пробовали, как результаты?


      Скорость чтения такой базы выше в 5-7 раз чем прямой перебор. CUDA был хорош 2 года назад, сейчас Ati вырывается вперед.
  • –5
    Статья по праву достойна избранного, спасибо!
  • +14
    Разумеется всё только в образовательных целях? :)
    • +46
      Способ восстановления потерянного ключа к своей домашней WiFi точке.
      • –5
        Не легче ли сбросить настройки?
        • +5
          Вы действительно на столько наивны?)
    • +3
      Конечно, я стал постоянно забывать пароли от вай-фая, что же такое :)
      • +1
        Причем забывать не только от свои wifi-роутеров :-))
  • +27
    Вижу 5 закрытых сетей у себя дома

    «Хорошая видеокарта экономит до 1000 рублей в месяц на Интернете»
    • +10
      А при некоторых раскладах и до квартплаты, оплаты питания и выбора мест проживания на несколько лет вперёд.
    • 0
      я тоже много видел. из них три штуки были с WEP-шифрованием. Теперь не вижу
      • 0
        WEP — это просто подарок ) Наловили пакетиков кучку и за 2 минуты ключик подобрали, прекрасная технология, мне она кучу денюжек на инет сэкономила
  • 0
    Вопросы
    1. как настроить имея nVidia (570 GTX у меня) карту?
    2. Как это хозяйство будет работать в виртуалке — не проверяли?
    Спасибо
    • 0
      Я не проверял, но виртуалка по идее должна работать медленнее. Лучше установите себе на флешку BackTrack и загружайтесь с неё.
      • +4
        на виртуалке не будет работать никак, туда карточку не передашь как NVIDIA. Она будет как некоторый универсальный графический адаптер и уж конечно без поддержки CUDA и OpenCL
        • 0
          Очень малую подчасть 3d виртуализации поддерживает например виртуалбокс, но для gpgpu этого недостаточно. В принципе можно допилить, но слишком уж много пилить придется…
        • –2
          может вы не в курсе, но приличные компы давно уже умеют IOMMU (AMD-Vi и VT-d)
    • 0
      Зачем виртуалка? Есть и виндовое решение — Airowizard, главное чтоб Wi-Fi карта ваша поддерживалась (вот список: airodump.net/airowizard-windows-wlan-hacking/ ).
      • +1
        так это вроде как обёртка для «aircrack-ng» который не работает с видео картой.
        • 0
          Да, кажется вы правы.
    • 0
      1. Вам нужно вместо Ati stream поставить Nvidia CUDA. Ссылка на установку

      2. Никак. Работать не будет.
  • НЛО прилетело и опубликовало эту надпись здесь
    • +3
      уникальная — это какая? вы работаете там, где показывает 50 защищенных сетей из соседнего дома, а в офисе инет блокирован на соц.сети и прозрачный трафик?
    • +2
      Йоту себе купите.
      • +6
        Йоду :)
        • +4
          йаду :)
        • –2
          Йода лучше :)
  • +3
    У WPA ломается только режим WPA-PSK. Если бы автор соизволил изучить алгоритм формирования набора ключей данного режима (стандарт IEEE 802.11i), то заметил бы, что использование радужных таблиц имеет нулевую эффективность в связи с тем, что в формировании ключей помимо essid используются случайные числа, генерируемые клиентом и точкой доступа в момент аутентификации.

    Следовательно подбор возможен только по сырым свежим данным. Скорости перебора следующие — для видеокарты NVIDIA GeForce GTX 480 при достаточно древнем остальном железе скорость проверки паролей из словаря составляет около 30000 ключей/с. Для ознакомления — ПО проприетарное, но на трекерах можно найти ключики =)

    Кому интересно, обращайтесь по вопросу подбора ключей WPA-PSK в личку, есть собственные реализации с использованием видеокарт работающие даже чутка шустрее пендосовских аналогов
    • 0
      P.S. ~85.000 pmk/s — голубая мечта брутеров )))
      • 0
        Может просто дело в более подходящей архитектуре чипов ATI?
        • 0
          Зависит от того, как писался код для gpgpu, некоторые операции намного быстрее на ати, некоторые — наоборот. В принципе, ати подход более подходящий для «классического» gpgpu, если не использовать cuda (но опять же, зависит от того, кто сам код писал и как).
          • +2
            как правило на картах ATI больше универсальных вычислителей, следовательно проще поддерживать одновременное выполнение бОльшого количества потоков, выполняющих перебор. Для задачи взлома пароля по словарю это один из определяющих факторов увеличения быстродействия
    • 0
      Ostrovski
      Пожалуйста, напишите лучше, я буду только за.

      И что же это за реализации у вас такие? Университетский кластер?
      • 0
        Нет, одна карта всего. Я говорю об увеличении всего порядка нескольких процентов, не более 10
  • 0
    Русский катастрофически хромает. Сперва даже подумал что это машинный перевод.

    «Ярлык» использования одного мастер-ключа, а не для отдельных пользовательских ключей облегчает развертывание WPA/WPA2-защищенных сетей для дома и малого офиса в использовании, за счет принятия протокола уязвимы для брутфорса, что позволяет в конечном итоге раскрыть пароль, который защищает сети.

    • +1
      Спасибо, опечатки и недочеты исправил.
  • 0
    А судя по форуму, автор hashcat скоро внесет поддержку ключей WPA в код своих приложений. А это значит, что под Windows, помимо коммерческого Elcomsoft Wireless Auditor, появится совершенно бесплатный и более гибкий аналог.
    • 0
      оба, WPA и WPA2?
      • 0
        Подозреваю, что и TKIP, и CCMP. То есть, грубо говоря, aircrack, но без сниффера и, соответственно, дампа авторизационных пакетов, но с CUDA/OpenCL. Плюс полноценная кроссплатформенность.

        Так или иначе, все в руках автора (Atom на форуме hashcat). Он обещал несколько раз рассмотреть всерьез возможность реализации в рамках всех трех hashcatов. Учитывая скорость, с которой выходят новые версии и расширяется фунционал, я не удивлюсь, если до зимы мы это увидим. Вернее, удивлюсь, если не.

        Пока это наиболее быстрый в мире «взломщик» MD5, если моя информация верна. Не вижу, почему не стать таковым для WPA.
        • +1
          С этим сравнивали 3.14.by/ru/md5 от barsmonster?
          • 0
            разница между взломом WPA-PSK и WPA2-PSK всего в 1 функции хэширования. При подсчете целостности сообщения в WPA2 SHA-1 заменена на md5. Так что если будет реализация, то сразу для обоих алгоритмов
            • 0
              Я про самый быстрый «взломщик» MD5.
              • 0
                Да это я не тот коммент ответил, промахнулся в кнопочку =) Нужно было чуть выше
          • 0
            Нет, не сравнивал.

            Сравню. Благодарю за.
  • 0
    У кого-нибудь получалось подобрать пароль для сети с шифрованием WPA2?
    По моим подсчетам для подбора пароля мин. длины (8 символов), состоящего только из цифр и маленьких букв английского алфавита, требуется около 1 года.
    • 0
      36^8 комбинаций, а это 2821109907456 паролей. При скорости 100000 ключей/с это 28211099,07456 сек, то есть 326,5 дней. Если удастся на одной карте считать с такой скоростью, то считайте, что Вам сильно повезло. И поделитесь тогда моделькой карты, куплю себе такую ) Никто полным перебором не считает WPA-PSK, используйте словари
      • 0
        и я про тоже, только использование словарей — не панацея :-)
        вот я и задаюсь вопросом: у кого-нибудь был успех в таком подборе? (на домашнем компе)
        • +1
          Гоняясь за скоростями я слишком мало уделяю внимания практике подбора. Реальные сетки только WEP ломал.

          Сейчас беда в том, что по стандарту (IEEE 802.11i) в качестве пароля можно использовать любую фразу от 8 до 63 символов с 32 по 126 символы ASCII. Собственно программы ломающие так и делают, во всяком случае aircrack. А мы с вами всеми живем в замечательной стране России, где национальный язык русский. Товарищи из Майкрософт, со своей неугомонной тягой к локализации всего подряд, позволяют в Windows 7 при установлении сети Wi-Fi использовать русские пароли. На этом весь перебор оканчивается… Собственно ради этого я и пишу собственную реализацию. С учетом языковых специфик.

          P.S. Написал статью про алгоритм подбора WPA-PSK, думаю собравшимся здесь она будет интересна, но вот не могу опубликовать из-за кармы… Не сочтите за наглость только =) Сумнящимся готов отправить в личку на ознакомление
      • 0
        Вопрос к вам как специалисту, у меня на домашней wifi точке стоял пароль по шаблону BIGab0cde WPA2-PSK, за какое время такой пароль подбирается? Дело в том что точку ломанули и попали в локалку.
        • 0
          Подбирается он исключительно, если присутствует в словаре, по которому ведется подбор. Причем на каком смещении он там от начала находится, за такое время и подбирается. Пароль конечно не суперстойкий на вид, но и не словарный… Возможно у Вас увели каким-нибудь другим образом. Кто имел доступ к сети? Есть же и другие виды атак, Hole 196 , например
  • –1
    Продал свой старый ноутбук, сейчас только нетбук с Windows, на котором есть интегрированная видеокарта и nVidia ION. На нём реально брутить? Если да, то каким софтом?
  • +1
    С таким железом вам сюда
  • –5
    я вот смотрю статьи на хабре
    и такое чувство, что видеокарты много раз мощнее процессоров
    и то ли здравый смысл, то ли еще что-то, но мне кажется, что здесь пиздеж
    • +2
      Учите матчасть! Видеокарты от процессоров общего назначения значительно отличаются архитектурой. Если процессоры берут спекулятивным исполнением команд, конвейеризацией и многоуровневым кэшированием, то карты выигрывают за счет поддержки огромного количества одновременно выполняемых потоков и дешевой с точки зрения временных затрат смены контекста. А дальше уже нужно плясать от этих особенностей и смотреть, что принесет больший выигрыш при решении той или иной вычислительной задачи.

      P.S. А матом ругаться не красиво, Вас родители разве этому не учили?
    • +1
      Если просто, то процессор универсален, а видеокарта великолепно считает математику (да и только), при меньшей частоте кол-во ядер может исчисляться сотнями, что даёт ускорение до десяти раз и больше при параллелизации задач (которой поддаются не все алгоритмы).

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.