Код программы подбора пароля

Содержание
Читайте также:
Какая программа является графическим редактором Microsoft

Статьи по автоматизации разработки и тестирования, построение процессов и карьерный рост. DevOps и SecDevOps. Алгоритмический трейдинг и автоматизация торгов на бирже.

вторник, 25 сентября 2012 г.

Password Bruter — программа для многопоточного подбора учетных данных к страничкам с form-based авторизацией

Перед разработчиками и тестировщиками web-приложений периодически встают задачи тестирования безопасности разрабатываемого продукта. Один из наиболее известных классификаторов угроз и уязвимостей для web-приложений — The Web Application Security Consortium (The WASC) Threat Classification v2.0.

Одна из популярных уязвимостей (Weaknesses — в классификаторе), встречающихся для web-приложений — это недостатки подсистемы авторизации (WASC-02 Insufficient Authorization). На web-приложение, имеющее данную уязвимость, могут попытаться осуществить атаку (Attacks — в классификаторе) типа «Брутфорс» (WASC-11 Brute Force). При этом злоумышленник может попытаться осуществить подбор учетных данных на странице авторизации, если она недостаточно защищена.

ПОДБОР ПАРОЛЯ ОТ WIFI СЕТИ

К недостаткам защиты страницы авторизации можно отнести:
— отсутствие ограничения по числу попыток авторизации,
— отсутствие поля для ввода дополнительной информации — капчи (capture),
— отсутствие временной задержки между попытками авторизации и другие.

Наличие указанных недостатков в реализации подсистемы авторизации упрощает злоумышленнику доступ к web-приложению.

Одна из разновидностей атаки брутфорсом — подбор учетных данных (Brute Forcing Log-in Credentials) для страницы авторизации (Form-based Auth). Для имитации данного типа атаки был написан свой многопоточный брутфорсер Password Bruter на Python 3.2. В качестве цели было развернуто и использовано уязвимое web-приложение Damn Vulnerable Web Application (DVWA).

1. Краткое описание

Password Bruter — программа для многопоточного подбора учетных данных вида к страничкам с form-based авторизацией, написанная на Python 3.2.

Пример странички с form-based авторизацией расположен в DVWA на вкладке «Brute Force».

  1. Установленный Python 3.2.
  2. Установленный и настроенный пакет Selenium WebDriver для Python 3.2.
  1. Универсальность применения. Bruter подходит для большинства html-форм авторизации, так как поля логина, пароля, кнопки подтверждения входа, условия успешной и неуспешной авторизаций задаются в файле конфигурации через xPath-адресацию.
  2. Многопоточный перебор. Учетные данные перебираются в отдельных потоках.
  3. Имитация действий пользователя. Атака фактически осуществляется в браузерах, запущенных Selenium WebDriver.
  4. Предварительное разбиение множества паролей по отдельным потокам.
  5. Возможность случайного перебора вместо последовательного, для повышения вероятности нахождения валидных учетных данных.
  6. Генератор для создания файла со списком псевдослучайных строк, состоящих из выбранных символов различных алфавитов.
  7. Настройка большинства параметров запуска программы как через командную строку, так и через файл конфигурации.
  8. Предварительная оценка времени работы, ведение подробного лога, формирование отчета о фактическом времени работы, результатах перебора в отдельных потоках, и прочее.

2. Программный код.

Структура проекта

pwd_brut — корень проекта.

400 ТЫСЯЧ ПАРОЛЕЙ В СЕКУНДУ: Hashcat + Aircrack-NG | Как защитить WiFi сеть от взлома? | UnderMind


/browser_drivers — каталог с Windows-драйверами для chrome и ie.
/ff_profile — каталог для индивидуального профиля мозиллы (пустой по умолчанию).
/dict — каталог по умолчанию для словарей со списками учетных данных.
pwd.txt — текстовый файл по умолчанию для списка паролей.
users.txt — текстовый файл по умолчанию для списка логинов.
pwd_brut.py — основной модуль для многопоточного запуска брутфорса.
bruter_lib.py — библиотека функций брутфорсера.
config.py — файл с переменными для конфигурации программы.
readme.txt — актуальная информация по проекту.
result.txt — текстовый файл по умолчанию для вывода результатов брутфорса.

Содержимое модуля pwd_brut.py

Main() # Инициализация параметров, создание и сопровождение потоков, открытие браузеров, запуск брутфорса в потоках.

def Main(): «»» Multithread runner. «»» try: # Getting users and separate password’s list. print(‘%s — Getting list of users . ‘ % datetime.now().strftime(‘%H:%M:%S %d.%m.%Y’)) usersList = GetListFromFile(config.usersFile) print(‘%s — Getting list of passwords . ‘ % datetime.now().strftime(‘%H:%M:%S %d.%m.%Y’)) passwordsList = [GetListFromFile(config.passwordsFile)] if len(passwordsList[0]) / config.brutThreads 1: print(‘%s — Separate passwords list by threads . ‘ % datetime.now().strftime(‘%H:%M:%S %d.%m.%Y’)) passwordsList = SeparateListByPieces(passwordsList[0], config.brutThreads) print(‘%s — Bruter initialize, status: oK’ % datetime.now().strftime(‘%H:%M:%S %d.%m.%Y’)) # Open new browser’s instance, going to form-based auth page and start brute. for i in range(config.brutThreads): OpenBrowser(i, config.timeout, config.selBrowserString, config.selFFProfile) GoingToTarget(i, config.timeout, config.target, config.xPathLogin, config.xPathPassword, config.xPathAcceptButton) threads.append(threading.Thread( target=Bruter, args=(i, config.timeout, config.xPathLogin, config.xPathPassword, config.xPathAcceptButton, config.xPathSuccessAuth, config.xPathFailAuth, usersList, passwordsList[i], config.randomCredentials, config.resultFile))) et = EstimateTime(len(usersList), len(passwordsList[i]), config.timeout, round(config.rumpUpPeriod / config.brutThreads)) print(‘%s — Thread #%d, %s’ % (datetime.now().strftime(‘%H:%M:%S %d.%m.%Y’), i, et)) threads[i].start() if (config.brutThreads > 1) and (config.rumpUpPeriod > 0) and (i != config.brutThreads — 1): time.sleep(config.rumpUpPeriod / config.brutThreads) # Waiting until all threads done. threadsAreInProgress = True while threadsAreInProgress: for t in threads: if t != None: threadsAreInProgress = True break else: threadsAreInProgress = False except BaseException: print(‘%s — Bruter initialize, status: error’ % datetime.now().strftime(‘%H:%M:%S %d.%m.%Y’)) traceback.print_exc() finally: status = Cleaner() sys.exit(status)

Содержимое модуля bruter_lib.py

Основные глобальные переменные:
workDir = os.path.abspath(os.curdir) # Рабочая директория проекта, относительно которой строятся другие пути.
threads = [] # Список потоков.
browsers = [] # Список запущенных браузеров. Каждый браузер в отдельном потоке.

Основные функции:

ParseArgs() # Парсер аргументов командной строки.

def ParseArgs(): «»» Function get and parse command line keys. «»» args = [] try: parser = argparse.ArgumentParser() parser.add_argument(«-t», «—target», type=str, help=»Target URL for Bruter. For example: ‘—target=http://mysite.com/admin/'») parser.add_argument(«-b», «—browser», type=str, help=»Browser for Bruter (*firefox, *ie, *chrome). *firefox by default.») parser.add_argument(«-r», «—random», type=str, help=»If this key is True then Bruter uses random user and password in every iteration.») parser.add_argument(«-T», «—threads», type=int, help=»Thread’s number.») parser.add_argument(«-w», «—wait», type=int, help=»Waiting for operation’s finish (sec.).») parser.add_argument(«-p», «—period», type=int, help=»Rump up period shows time (sec.) in which all test suite threads will start.») parser.add_argument(«-L», «—logins», type=str, help=»Path to user’s list.

Default: dict/users.txt») parser.add_argument(«-P», «—passwords», type=str, help=»Path to password’s list. Default: dict/pwd.txt») parser.add_argument(«-R», «—results», type=str, help=»Path to result file. Default: result.txt») parser.add_argument(«-g», «—generator», type=str, help=»Generate a lot of random strings for Bruter. Example: ‘-g [100,8,1,1,1,0,0,0]’.n» + «This means:n» + «1 number — number of strings, 2 — string’s length, 3 — use or not Numbers,» + «4 — use or not Latin Upper Case Chars, 5 — use or not Latin Lower Case Chars» + «6 — use or not Russian Upper case chars, 7 — use or not Russian Lower Case Chars,» «8 — use or not Special Simbols.

Output file: dict/rnd_.txt») args = parser.parse_args() if args.target != None: config.target = args.target if (args.browser == ‘*chrome’) or (args.browser == ‘*ie’): config.selBrowserString = args.browser else: config.selBrowserString = ‘*firefox’ if args.random != None: if args.random == ‘True’: config.randomCredentials = True else: config.randomCredentials = False if args.threads != None: config.brutThreads = args.threads if args.wait != None: config.timeout = args.wait if args.period != None: config.rumpUpPeriod = args.period if args.logins != None: if os.path.exists(args.logins): config.usersFile = args.logins else: config.usersFile = ‘dict/users.txt’ if args.passwords != None: if os.path.exists(args.passwords): config.passwordsFile = args.passwords else: config.passwordsFile = ‘dict/pwd.txt’ if args.results != None: if os.path.exists(args.results): config.resultFile = args.results else: config.resultFile = ‘result.txt’ if args.generator != None: params = [] try: params = StringOfNumToNumsList(args.generator) except: pass finally: if len(params) >= 8: config.randomGeneratorParameter = params else: print(‘%s — Generator using default parameters from config file: %s’ % (datetime.now().strftime(‘%H:%M:%S %d.%m.%Y’), config.randomGeneratorParameter)) print(‘%s — Parsing command line arguments, status: oK’ % datetime.now().strftime(‘%H:%M:%S %d.%m.%Y’)) except BaseException: print(‘%s — Parsing command line arguments, status: error’ % datetime.now().strftime(‘%H:%M:%S %d.%m.%Y’)) traceback.print_exc() finally: return args

Читайте также:
Какие есть программы для развития лпх

EstimateTime(numLogins, numPasswords, waitInSec, rumpUp, treadsNum) # Функция расчета ожидаемого времени работы.

def EstimateTime(numLogins=0, numPasswords=0, waitInSec=1, timeForStartingTreads=0): «»» Function returns info about estimate time. «»» try: es = numLogins * numPasswords * waitInSec + timeForStartingTreads eh = round(es / 3600) info = ‘Users: %d, Passwords: %d, Full Estimated Time: %d sec. (~%d hours).’ % (numLogins, numPasswords, es, eh) except BaseException: traceback.print_exc() return ‘Can’t compute estimate time!’ return info
DurationOperation(func) # Декоратор для оценки времени работы функций.
def DurationOperation(func): «»» This is decorator for compute duration operation of functions.

It works only with functions returning number >= 0. «»» def wrapper(*args, **kwargs): startTime = datetime.now() print(‘%s — Thread #%d, %s, starting . ‘ % (startTime.strftime(‘%H:%M:%S %d.%m.%Y’), args[0], str(func))) status = func(*args, **kwargs) stopTime = datetime.now() if status == 0: print(‘%s — Thread #%d, %s, status: oK’ % (stopTime.strftime(‘%H:%M:%S %d.%m.%Y’), args[0], str(func))) else: print(‘%s — Thread #%d, %s, status: error’ % (stopTime.strftime(‘%H:%M:%S %d.%m.%Y’), args[0], str(func))) duration = stopTime — startTime print(‘%s — Thread #%d, %s, duration operation: %s’ % (stopTime.strftime(‘%H:%M:%S %d.%m.%Y’), args[0], str(func), str(duration))) return status return wrapper
StringOfNumToNumsList(string) # Конвертер строки чисел с разделителями в список чисел.

def StringOfNumToNumsList(string): «»» Get some string with numbers and other simbols, for example:'[572,573,604,650]’ or similar and convert it to list of numbers as [572, 573, 604, 650]. «»» numList = [] try: while len(string) != 0: s = » i = 0 flag = True while flag and i < len(string): if string[i] in ‘0123456789’: s = s + string[i] i += 1 else: flag = False if s != »: numList.append(int(s)) string = string[i + 1:] except: print(‘%s — Can’t parse your string of numbers to list of numbers!’ % datetime.now().strftime(‘%H:%M:%S %d.%m.%Y’)) traceback.print_exc() return [] return numList
GetListFromfile(file) # Получение списка строк из файла.
def GetListFromFile(file): «»» This function get strings from file and put into list. Text-file must have #13#10 «»» listFromFile = [] if os.path.exists(file): try: with open(file) as fh: allStrings = fh.read() listFromFile = allStrings.split(‘n’) except BaseException: print(‘%s — Can’t get list from file: %s’ % (datetime.now().strftime(‘%H:%M:%S %d.%m.%Y’), file)) traceback.print_exc() return [] return listFromFile

SeparateListByPieces(fullList, piecesNum) # Возвращает список списков, полученных разбиением входного списка на указанное число «кусков».

def SeparateListByPieces(fullList, piecesNum): «»» Function get full list of objects and then divided into a number of parts. Last part may be bigger, than other. Function return a list of part of full list. «»» separate = [] listLen = len(fullList) if (listLen > 0) and (piecesNum > 1): try: objectsInPieces = listLen // piecesNum for i in range(piecesNum): piece = [fullList[i * objectsInPieces + k] for k in range(objectsInPieces)] separate.append(piece) separate[piecesNum — 1] += fullList[piecesNum * objectsInPieces:] except BaseException: print(‘%s — Can’t separate list of objects!’ % datetime.now().strftime(‘%H:%M:%S %d.%m.%Y’)) traceback.print_exc() return [fullList] else: separate = [fullList] return separate
Reporting(instance, file, creds, users, passwords, actualTime) # Репортер для брутфорсера.

OpenBrowser(instance, opTimeout, browserString, ffProfile) # Открытие и подготовка браузера к работе.

GoingToTarget(instance, opTimeout, targetURL, loginField, passwordField, acceptButton) # Переход к целевой страничке.

CloseBrowser(instance=0) # Завершение работы браузера.
Cleaner() # Функция для корректного завершения всех операций и потоков программы.

def Cleaner(): «»» Finalization step for Bruter. «»» status = 0 try: # Stopping compute threads and closing browsers. for t in threads: if t != None: t._stop() t = None for b in range(len(browsers)): status += CloseBrowser(b) if status == 0: print(‘%s — Bruter finalize, status: oK’ % datetime.now().strftime(‘%H:%M:%S %d.%m.%Y’)) except BaseException: print(‘%s — Bruter finalize, status: error’ % datetime.now().strftime(‘%H:%M:%S %d.%m.%Y’)) traceback.print_exc() return 1 return status

GenerateRandomString(length, useNum, useEngUp, useEngLo, useRuUp, useRuLo, useSpecial) # Генерация псевдослучайной строки указанной длины, состоящей из символов указанных алфавитов.

GenerateListOfRandomStrings(numbers, length, useNum, useEngUp, useEngLo, useRuUp, useRuLo, useSpecial) # Генерация листа с указанным числом псевдослучайных строк.

def GenerateListOfRandomStrings(numbers=10, length=8, useNum=True, useEngUp=True, useEngLo=True, useRuUp=False, useRuLo=False, useSpecial=False): «»» Function return list of random text-string definite length, that will be use as login or password. 1 number — number of strings, 2 — string’s length, 3 — use or not Numbers, 4 — use or not English Upper Case Chars, 5 — use or not English Lower Case Chars, 6 — use or not Russian Upper case chars, 7 — use or not Russian Lower Case Chars, 8 — use or not Special Simbols. «»» rndList = [] try: if numbers > 0: for i in range(numbers): rndList.append(GenerateRandomString(length, useNum, useEngUp, useEngLo, useRuUp, useRuLo, useSpecial)) except BaseException: rndList = [] print(‘%s — Can’t generate list of random string!’ % datetime.now().strftime(‘%H:%M:%S %d.%m.%Y’)) traceback.print_exc() finally: return rndList

GenerateFileWithRandomStrings(par) # Генерация файла со списком псевдослучайных строк.
def GenerateFileWithRandomStrings(par=None): «»» Function create file with random text-string, that will be use as login or password. Example: Par = [100, 5, 1, 1, 1, 0, 0, 0] 1 number — number of strings, 2 — string’s length, 3 — use or not Numbers, 4 — use or not English Upper Case Chars, 5 — use or not English Lower Case Chars, 6 — use or not Russian Upper case chars, 7 — use or not Russian Lower Case Chars, 8 — use or not Special Simbols. «»» file = ‘dict/rnd_’ + datetime.now().strftime(‘%d_%m_%Y_%H_%M_%S’) + ‘.txt’ try: if not (os.path.exists(‘dict’)): os.mkdir(‘dict’) fileTo = open(file, ‘a’) if len(par) >= 8: for i in range(2, 8): if par[i] == 1: par[i] = True else: par[i] = False rndList = GenerateListOfRandomStrings(par[0], par[1], par[2], par[3], par[4], par[5], par[6], par[7]) else: rndList = GenerateListOfRandomStrings(numbers=10, length=8, useNum=True, useEngUp=True, useEngLo=True, useRuUp=False, useRuLo=False, useSpecial=False) if len(rndList) > 0: for string in rndList: fileTo.write(string + ‘n’) print(‘%s — Generate file with random strings: %s’ % (datetime.now().strftime(‘%H:%M:%S %d.%m.%Y’), file)) fileTo.close() except BaseException: print(‘%s — Can’t generate file with random strings!’ % datetime.now().strftime(‘%H:%M:%S %d.%m.%Y’)) traceback.print_exc() return 1 return 0

Bruter(instance, opTimeout, loginField, passwordField, acceptButton, successAuth, failAuth, users=None, passwords, randomization, result) # Основная функция для перебора учётных данных.

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

3. Запуск программы.

Password Bruter можно запустить без параметров, в этом случае он начнет подбирать учетные данные согласно настройкам по умолчанию, заданным в файле конфигурации config.py. Все параметры содержат комментарии. Рекомендуется не изменять имена переменных-параметров.

Источник: forworktests.blogspot.com

Подбор паролей

Программа позволяет получить учетные данные пользователей через WiFi.

Bully

Приложение для получения ключей и паролей.

Advanced Office Password Recovery

программа для восстановления забытых паролей к документам Microsoft Office всех версий.

Daossoft ZIP Password Rescuer

Инструмент для восстановления паролей ZIP-архивов.

Free ZIP Password Recovery

Инструмент для восстановления и подбора паролей к ZIP-архивам.

iSunshare Outlook Password Genius

Инструмент для восстановления паролей от офисных файлов Outlook.

Accent ZIP Password Recovery

Профессиональный инструмент для восстановления паролей к ZIP/WinZip архивам.

Accent OFFICE Password Recovery

Программа для восстановления и удаления утраченных паролей в документах Microsoft Office и LibreOffice всех версий.

Accent Word Password Recovery

Accent Word Password Recovery — маленькая программа с большими возможностями. Она поможет восстановить утерянные пароли к документам Microsoft® Word версий 6.0/95/97/2000/XP.

Accent Excel Password Recovery

Программа для восстановления паролей от документов любых версий Microsoft Excel.

Accent PDF Password Recovery

Accent PDF Password Recovery – программа для удаления и восстановления паролей.

VBA Password Bypasser

инструмент для обхода парольной защиты Visual Basic для приложений VBA.

Cain https://www.securitylab.ru/software/1223/» target=»_blank»]www.securitylab.ru[/mask_link]

Способы взлома Ваших паролей

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

Далее речь пойдет о том, какие методы могут применяться для взлома пользовательских паролей и почему вы уязвимы перед такими атаками. А в конце вы найдете список онлайн сервисов, которые позволят узнать, был ли уже взломан Ваш пароль. Также Вам будет интересен материал Как проверить компьютер 68 антивирусами одновременно и Windows 10 отключение «шпионских» функций.

Какие методы используются для взлома паролей

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

Фишинг

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

Суть метода в том, что вы попадаете на, как вам кажется, знакомый сайт (тот же Gmail, ВК или Одноклассники, например), и по той или иной причине вас просят ввести ваш логин и пароль (для входа, подтверждения чего-либо, для его смены и т.п.). Сразу после ввода пароль оказывается у злоумышленников.

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

Как я уже отметил, очень многие пользователи попадаются на это, и обычно это связано с невнимательностью:

  • При получении письма, которое в том или ином виде предлагает вам войти в ваш аккаунт на том или ином сайте, обращайте внимание, действительно ли оно было отправлено с адреса почты на этом сайте: обычно используются похожие адреса. Например, вместо Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript. , может быть Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript. или нечто подобное. Однако, правильный адрес не всегда гарантирует, что все в порядке.
  • Прежде чем куда-либо ввести свой пароль, внимательно посмотрите в адресную строку браузера. Прежде всего, там должен быть указан именно тот сайт, на который вы хотите зайти. Однако, в случае с вредоносным ПО на компьютере этого недостаточно. Следует также обратить внимание на наличие шифрования соединения, которое можно определить по использованию протокола https вместо http и изображению «замка» в адресной строке, по нажатии на который, можно убедиться, что вы на настоящем сайте. Почти все серьезные ресурсы, требующие входа в учетную запись, используют шифрование.

Кстати, тут отмечу, что и фишинговые атаки и методы перебора паролей (описано ниже) не подразумевают сегодня кропотливой муторной работы одного человека (т.е. ему не нужно вводить миллион паролей вручную) — все это делают специальные программы, быстро и в больших объемах, а потом отчитываются об успехах злоумышленнику. Более того, эти программы могут работать не на компьютере хакера, а скрытно на вашем и у тысяч других пользователей, что в разы повышает эффективность взломов. Смотрите также Windows 10 Как удалить встроенные приложения и Windows 10 Как включить защиту от потенциально нежелательных программ в Windows Defender.

Подбор паролей

Атаки с использованием подбора паролей (Brute Force, грубая сила по-русски) также достаточно распространены. Если несколько лет назад большинство таких атак представляли собой действительно перебор всех комбинаций определенного набора символов для составления паролей определенной длины, то на данный момент всё обстоит несколько проще (для хакеров).

Анализ утекших за последние годы миллионов паролей показывает, что менее половины из них уникальны, при этом на тех сайтах, где «обитают» преимущественно неопытные пользователи, процент совсем мал.

Что это означает? В общем случае — то, что хакеру нет необходимости перебирать несчетные миллионы комбинаций: имея базу из 10-15 миллионов паролей (приблизительное число, но близкое к истине) и подставляя только эти комбинации, он может взломать почти половину аккаунтов на любом сайте.

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

Обратите внимание: если вы используете один и тот же пароль для различных сайтов и сервисов, то как только ваш пароль и соответствующий адрес электронной почты будут скомпрометированы на любом из них, с помощью специального ПО это же сочетание логина и пароля будет опробовано на сотнях других сайтах. Например, сразу после утечки нескольких миллионов паролей Gmail и Яндекс в конце прошлого года, прокатилась волна взломов аккаунтов Origin, Steam, Battle.net и Uplay (думаю, и многих других, просто по указанным игровым сервисам ко мне многократно обращались).

Взлом сайтов и получение хэшей паролей

Большинство серьезных сайтов не хранят ваш пароль в том виде, в котором его знаете вы. В базе данных хранится лишь хэш — результат применения необратимой функции (то есть из этого результата нельзя снова получить ваш пароль) к паролю. При вашем входе на сайт, заново вычисляется хэш и, если он совпадает с тем, что хранится в базе данных, значит вы ввели пароль верно.

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

password hash example

Однако, довольно часто, сделать это он может:

  1. Для вычисления хэша используются определенные алгоритмы, в большинстве своем — известные и распространенные (т.е. каждый может их использовать).
  2. Имея базы с миллионами паролей (из пункта про перебор), злоумышленник также имеет и доступ к хэшам этих паролей, вычисленным по всем доступным алгоритмам.
  3. Сопоставляя информацию из полученной базы данных и хэши паролей из собственной базы, можно определить, какой алгоритм используется и узнать реальные пароли для части записей в базе путем простого сопоставления (для всех неуникальных). А средства перебора помогут узнать остальные уникальные, но короткие пароли.

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

Шпионские программы (SpyWare)

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

Помимо прочего, отдельные виды SpyWare, например, кейлоггеры (программы, отслеживающие нажимаемые вами клавиши) или скрытые анализаторы траффика, могут использоваться (и используются) для получения пользовательских паролей.

Социальная инженерия и вопросы для восстановления пароля

Как говорит нам Википедия, социальная инженерия — метод доступа к информации, основанный на особенностях психологии человека (сюда можно отнести и упоминавшийся выше фишинг). В Интернете вы можете найти множество примеров использования социальной инженерии (рекомендую поискать и почитать — это интересно), некоторые из которых поражают своей изящностью. В общих чертах метод сводится к тому, что почти любую информацию, необходимую для доступа к конфиденциальной информации, можно получить, используя слабости человека.

А я приведу лишь простой и не особенно изящный бытовой пример, имеющий отношение к паролям. Как вы знаете, на многих сайтах для восстановления пароля достаточно ввести ответ на контрольный вопрос: в какой школе вы учились, девичья фамилия матери, кличка домашнего животного… Даже если вы уже не разместили эту информацию в открытом доступе в социальных сетях, как думаете, сложно ли с помощью тех же социальных сетей, будучи знакомым с вами, или специально познакомившись, ненавязчиво получить такую информацию?

Атака с использованием словарей

При этом используется простой файл, содержащий слова, которые можно, сюрприз-сюрприз, найти в словаре. Другими словами, атаки такого типа перебирают именно слова, которые многие люди используют в качестве пароля.

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

Атака методом полного перебора (грубой силы)

Этот метод похож на атаку по словарю, но с дополнительным бонусом — конечно, для хакера, который позволяет обнаружить слова, не содержащиеся в словаре, перебирая все возможные буквенно-цифровые комбинации от aaa1 до zzz10.

Это не быстрый способ, особенно, если ваш пароль состоит из нескольких символов, но, в конечном счете, пароль будет раскрыт. Метод полного перебора может быть упрощен с помощью использования дополнительных вычислительных мощностей компьютера, в том числе, с использованием возможностей Вашей видеокарты GPU — и, например, использования распределенных вычислительных моделей и зомби-ботнетов.

Атака с использованием радужной таблицы

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

Стоит сказать о возможности существования усложненных радужных таблиц, но они были бы настолько велики, что их было бы трудно использовать на практике. Они, скорее всего, работали бы только с набором заранее заданных «случайных величин», при этом пароль должен состоять менее чем из 12 символов, иначе размер таблицы будет непомерно велик, даже для хакеров государственного уровня.

Оффлайн хакинг

Легко представить себе, что пароли в безопасности, когда они защищены системами блокировки, которые блокируют пользователей после трех-четырех неудачных попыток набора пароля, что также позволяет блокировать приложения автоматического подбора паролей. Это было бы верно, если бы не тот факт, что большинство взломов паролей происходит в оффлайне, с использованием набора хэшей в файле паролей, которые были «получены» от скомпрометированной системы.

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

Подглядывание через плечо

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

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

Метод «пауков»

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

Действительно опытные хакеры автоматизировали процесс и запускают «паутинные» приложения, аналогичные тем, которые применяются ведущими поисковыми системами, чтобы определить ключевые слова, собрать и обработать списки для взлома.

Догадки

Лучшим другом взломщиков паролей, конечно, является предсказуемость пользователей. Если действительно случайный пароль был создан с помощью программного обеспечения, предназначенного для этой задачи, то пользовательский «случайный» пароль, вряд ли будет напоминать что-то подобное.

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

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

  • https://haveibeenpwned.com/
  • https://breachalarm.com/
  • https://pwnedlist.com/query

Обнаружили ваш аккаунт в списке ставших известных хакерам — Срочно меняйте пароль.

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

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