Авторские статьи Подбор пароля к WPA/WPA2 с использованием видеокарты

Discussion in 'Статьи' started by Machine, 23 Jun 2011.

  1. Machine

    Machine Elder - Старейшина

    Joined:
    23 Jun 2008
    Messages:
    403
    Likes Received:
    116
    Reputations:
    117
    Автор: Machine.
    При копировании на другие ресурсы использовать копирайт.

    Сегодня я расскажу и покажу вам как можно использовать всю мощность ваших видеокарт для перебора паролей к 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:


    [​IMG]
    [​IMG]

    Разумно заметить, что все действия проводились в 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
    http://orwell.fiit.stuba.sk/~nou/amd-app_2.4_amd64.deb
    тырк 2
    3. Pyrit
    Code:
    svn checkout http://pyrit.googlecode.com/svn/trunk/ pyrit_svn
    4. Calpp++ тырк

    1.Установка драйвера:
    Code:
     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:
    Code:
     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 
     gedit ~/.bashrс
    Внизу этого файла добавляем следующие строки:

    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

    [​IMG]

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


    Code:
    sudo logout
    3.Регистрируем icd-registration:
    Code:
     tar xfz $AMDAPPSDKROOT/icd-registration.tgz
     sudo cp $AMDAPPSDKROOT/etc /etc
    ВАЖНО!
    В некоторых англоязычных руководствах описана установка обеих технологий, которые используют карты Ati для взаимодействия непосредственно с карточкой, это OpenCL которая морально и физически устарела для этого дела, и Calpp с библиотеками libboost, которую мы и будем использовать.

    4.Установка Calpp:
    Code:
     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" )

    [​IMG]

    Code:
     sudo cmake .
     sudo make install
    5.Установка pyrit:
    Code:
     sudo apt-get install g++ python-dev zlib1g-dev libssl-dev python-scapy libpcap0.8 libpcap0.8-dev libpcap-dev
     svn checkout http://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
    На этом установка закончена.
    Проверяем правильность установки:
    Code:
    pyrit selftest
    Использование

    1. Смотрим доступные ядра процессора/видеокарт:
    Code:
    pyrit list_cores
    2. Запускаем оценочный тест:
    Code:
    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'ом.
    ВАЖНО!
    В pyrit'е можно создавать целые базы прекомпилированных хешей для подбора паролей. Есть 2 варианта хранения и использования этих баз:

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

    Вывод - плюсы плавно перетекают в минусы и наоборот. От себя замечу, что это идеальный вариант при наличии пробивного словаря до 1 миллиона слов, который позволит вам чекать разные .cap файлы с большой скоростью.
    Пример использования:

    Code:
    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'ов затраты по времени уменьшаются прямопропорционально. Стоит это того или нет, каждый решает сам.
    Пример использования:

    Code:
    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 наличие подобных программ существенно облегчает жизнь. Пару слов про аналоги - это программа commview for wifi , сделана под винду, я ее в глаза не видел и не трогал, потому что не пользуюсь виндой. Она, конечно, платная (500$ профит).

    Ссылки по теме:
    pyrit
    Замеры скорости перебора на Вашем компьютере

    Вопросы по commview здесь НЕ обсуждаются (только сравнение).
    Вопросы не по теме будут караться.


    Machine. 495260250
     
    #1 Machine, 23 Jun 2011
    Last edited: 23 Jun 2011
    quite gray, penixx, Coques and 7 others like this.
  2. теща

    теща Экстрасенс

    Joined:
    14 Sep 2005
    Messages:
    2,040
    Likes Received:
    500
    Reputations:
    285
    время компиляцыи убило насмерть 10 гигов компилировало более 3 часов

    + не видит видеокарту (но дрова встали 11/8 версия)








    добавлено в карту раздела
     
    #2 теща, 23 Jun 2011
    Last edited: 25 Sep 2011
  3. FlatL1ne

    FlatL1ne Elder - Старейшина

    Joined:
    5 Oct 2007
    Messages:
    87
    Likes Received:
    28
    Reputations:
    10
    Молодец. Так это ты ее на хабре запостил?
     
  4. Machine

    Machine Elder - Старейшина

    Joined:
    23 Jun 2008
    Messages:
    403
    Likes Received:
    116
    Reputations:
    117
    Да, зеркало на хабре :)

    http://habrahabr.ru/blogs/infosecurity/122553/

    добавляйтесь во френды
     
    #4 Machine, 24 Jun 2011
    Last edited: 27 Jun 2011
  5. defolder

    defolder Banned

    Joined:
    23 Dec 2010
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Прошу помочь

    Устанавливал так :
    1.
    # svn checkout http://pyrit.googlecode.com/svn/trunk/ pyrit_svn
    2.
    # sudo apt-get install libssl-dev
    # sudo apt-get install scapy
    # sudo apt-get install python-dev
    3.
    # cd /pyrit_svn/pyrit
    # sudo python setup.py build
    # sudo python setup.py install
    4.
    4.1# http://developer.nvidia.com/cuda-toolkit-32-downloads
    4.2# cd to /pyrit_svn/cpyrit_cuda
    4.3 #sudo python setup.py build
    4.4 # sudo python setup.py install

    На шаге : 4.3 # ssudo python setup.py build
    выдало следующее :

    oot@bt:~/pyrit_svn/cpyrit_cuda# sudo python setup.py build
    The CUDA compiler and headers required to build kernel were not found. Trying to continue anyway...
    running build
    running build_ext
    /bin/sh: nvcc: command not found
    None
    Failed to execute command 'nvcc -V'
    Traceback (most recent call last):
    File "setup.py", line 175, in <module>
    setup(**setup_args)
    File "/usr/lib/python2.6/distutils/core.py", line 152, in setup
    dist.run_commands()
    File "/usr/lib/python2.6/distutils/dist.py", line 975, in run_commands
    self.run_command(cmd)
    File "/usr/lib/python2.6/distutils/dist.py", line 995, in run_command
    cmd_obj.run()
    File "/usr/lib/python2.6/distutils/command/build.py", line 135, in run
    self.run_command(cmd_name)
    File "/usr/lib/python2.6/distutils/cmd.py", line 333, in run_command
    self.distribution.run_command(command)
    File "/usr/lib/python2.6/distutils/dist.py", line 995, in run_command
    cmd_obj.run()
    File "setup.py", line 82, in run
    raise SystemError("Nvidia's CUDA-compiler 'nvcc' can't be " \
    SystemError: Nvidia's CUDA-compiler 'nvcc' can't be found.
    root@bt:~/pyrit_svn/cpyrit_cuda#

    Гугл не помог =( запутал еще сильнее .
    . Установлено BT5 , видюха NVIDIA GTS 250 (стоят дрова NVIDIA-Linux-x86-275.09.07.run )
     
  6. Machine

    Machine Elder - Старейшина

    Joined:
    23 Jun 2008
    Messages:
    403
    Likes Received:
    116
    Reputations:
    117
    Вот тут хедеры не встали:
    The CUDA compiler and headers required to build kernel were not found. Trying to continue anyway...

    Просто я с cuda дело не имел, кури тему на сайте пирита в разделе issuses
     
  7. mashka25

    mashka25 Banned

    Joined:
    24 May 2011
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    хакырь однако, статья +
     
  8. Kastor

    Kastor Elder - Старейшина

    Joined:
    19 Jan 2010
    Messages:
    127
    Likes Received:
    18
    Reputations:
    13
    Спасибо за статью!
     
  9. Shawn1x

    Shawn1x Banned

    Joined:
    24 Aug 2007
    Messages:
    299
    Likes Received:
    467
    Reputations:
    -18
    Спасибо за статью!
     
  10. dupD0M

    dupD0M Elder - Старейшина

    Joined:
    18 May 2010
    Messages:
    1,142
    Likes Received:
    73
    Reputations:
    34
    отличная статья!раадует что в ВТ это все есть и устанавливать не пришлось)
     
  11. wMw_

    wMw_ New Member

    Joined:
    1 Jun 2009
    Messages:
    41
    Likes Received:
    3
    Reputations:
    0
    На BackTrack 5 вообще никаких проблем не было с pyrit + cuda

    Библиотеки нужные ставишь, dev-пакеты, компилишь pyriy_cuda, потом pyrit =)

    Спасибо за статью
     
  12. dupD0M

    dupD0M Elder - Старейшина

    Joined:
    18 May 2010
    Messages:
    1,142
    Likes Received:
    73
    Reputations:
    34
    root@dupd0m-Satellite-A300:/home# python setup.py build
    python: can't open file 'setup.py': [Errno 2] No such file or directory

    в чем проблема помогите?
     
  13. <Cyber-punk>

    <Cyber-punk> Smash the Stack

    Joined:
    1 Oct 2009
    Messages:
    658
    Likes Received:
    315
    Reputations:
    430
    Помог тёща при настройке, интересная штуковина, и работает с пол-тычка!
     
    _________________________
  14. теща

    теща Экстрасенс

    Joined:
    14 Sep 2005
    Messages:
    2,040
    Likes Received:
    500
    Reputations:
    285
    помог однозначно!!!!!

    проблемка появилась ? Пирит не видит ядро видюхи ? почему . ?
     
  15. dupD0M

    dupD0M Elder - Старейшина

    Joined:
    18 May 2010
    Messages:
    1,142
    Likes Received:
    73
    Reputations:
    34
    такая же история!поставил на убунту и видит ток ядра проца и все а они слабенькие....
     
  16. gpuhash

    gpuhash Elder - Старейшина

    Joined:
    22 Sep 2011
    Messages:
    481
    Likes Received:
    2,005
    Reputations:
    97
    Добавлю пару слов о режимах атаки pyrit:

    attack_passthrough - атака по словарю из файла (путь к файлу словаря задается ключом -i). при такой атаке вычисляемые PMK не сохраняются на диск, идет только проверка подошел пароль или нет. pyrit показывает реальную скорость GPU.

    attack_db - атака только по предварительно вычесленным радужным таблицам (rainbow tables). GPU не задействуется, скорость атаки зависит от производительности центрального процессора и диска, а так же от формата базы данных pyrit (file, sqlite, mysql). самая быстрая атака - на хороших машинах скорость легко превышает 2М PMK/s (!)

    attack_batch - комбинированная атака, использует (при наличии) предварительно рассчитанные таблицы, при отстуствии задействует GPU и сохраняет данные в базу данных для дальнейшего использования. скорость демонстрируемая pyrit может быть меньше реальной скорости GPU т.к. требуется оверхед для сохранения PMKs в базу данных.

    batch - просто расчет заданных ESSID в радужные таблицы для дальнешего использования.

    eval - показать состояние базы данных (число паролей в БД и состояние радужных таблиц)

    import_passwords - импортировать пароли из файла в БД с проверкой уникальности (медленно)

    import_unique_passwords - импортировать заведомо уникальные пароли в БД (быстро, но забота о уникальности паролей лежит на генераторе)

    Надеюсь будет полезно.
     
  17. Machine

    Machine Elder - Старейшина

    Joined:
    23 Jun 2008
    Messages:
    403
    Likes Received:
    116
    Reputations:
    117
    Решил его проблему.
     
  18. gpuhash

    gpuhash Elder - Старейшина

    Joined:
    22 Sep 2011
    Messages:
    481
    Likes Received:
    2,005
    Reputations:
    97
    Несколько слов об оптимизации скорости pyrit.

    Для многих пользователей pyrit - черный ящик, который выдает какие-то цифры и иногда пароли :)
    Этой заметкой я хочу помочь страждущим разобраться с оптимизацией своей системы для повышения скорости перебора с использованием pyrit.

    1. Оценку скорости нужно проводить только в режиме attack_passthrough и желательно с приличным (1-2Гб) словарем. Встроенная оценка по команде pyrit benchmark всегда немного завышает результат, атаки attack_batch будут давать большой разброс показаний в плюс или минус в зависимости от того, был ли уже посчитан текущий ESSID, от скорости диска, типа базы данных

    2. Если у вас в системе несколько GPU - отключите CrossFire (у NVIDIA это SLI). CrossFire балансирует нагрузку между GPU что сильно снижает суммарную производительность системы. Отключение CrossFire:
    aticonfig --adapter=all --cf=off
    после этого необходимо перезапустить Х-сервер.

    3. Если у вас карта ATI (AMD) используйте CAL++ и свежую версию pyrit из svn. CAL++ дает значительный выигрыш по скорости (до 30%) над OpenCL на адаптерах 5ххх и 6ххх серий.

    4. Отключите Hyperthreading. Несмотря на большее число "виртуальных" ядер в режиме Hyperthreading суммарная производительность pyrit только снизится. Особенно опасны ситуации когда pyrit будет пытаться считать на ядре, предназначенном для "кормления" GPU данными - снижение производительности неизбежно! Для систем с мощными видеокартами (100-150К PMK/s) можно вообще отключить возможность расчетов на CPU.

    5. Установите параметр workunit_size в конфиге pyrit (обычно ~/.pyrit/config) в размере двойной скорости вашей видеокарты. По умолчанию там стоит 75000 что может быть маловато для быстрых карт.

    6. Следите за температурой GPU. Если она приближается к 90С - обеспечьте лучшее охлаждение железа.

    Выполнение всех этих пунктов позволило мне получить 155К PMK/s на стоковом HD 6990 без разгона (изначально "из коробки" было 80-90К).

    Ну и немного оффтопика - oclHashcat-plus-0.06 с ключом --gpu-loops 4096 обгоняет pyrit в моей конфигурации и выдает 166К PMK/s, но через 10-15 минут работы вылетает с перегревом GPU. Для длительного использования приходится задавать --gpu-loops 2048 что дает в результате те же 150-155К и приемлемую температуру GPU 88-89C.
     
    quite gray, теща and gibson like this.
  19. rebux

    rebux New Member

    Joined:
    12 Oct 2011
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Какой аналог во FreeBSD проги pyrit?
     
  20. s4pf1r0v

    s4pf1r0v New Member

    Joined:
    9 Apr 2012
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    подскажите пож а через виртуальную машину будет видна видео карточка?
    я все сделал вроде правильно
    но выдает только это

    111@bt:~$ pyrit list_cores
    Pyrit 0.4.0 (C) 2008-2011 Lukas Lueg http://pyrit.googlecode.com
    This code is distributed under the GNU General Public License v3+

    The following cores seem available...
    #1: 'CPU-Core (SSE2)'
    111@bt:~$
     
Loading...