Фундаментальные основы хакерства. Проверка аутентичности и базовый взлом защиты — Хакер

Оглавление

«неспелый qiwi»

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

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

Оплату дилеры принимали в основном на самые популярные ЭПС*, но в основном на Киви-кошелек по номеру телефона. На балансе таких кошельках находились огромные деньги. Получить доступ к кошельку Киви -означало получить эти самые деньги. Наркодилеры не принимали никаких файлов, не переходили по внешним ссылкам, старались не вступать в тесный контакт с клиентом. Все, что у нас было, это номер кошелька Киви.

* электронная платежная система

«сломай барыгу»

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

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

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

Не секрет, что самыми прибыльными в темной стороне интернета были люди, занимающиеся отмыванием и обналичиванием денег, а также наркодилеры, занимающиеся продажей наркотиков. В целом, изучая «dark web», то выбор пал именно на торговцев наркотиков. Изначально использовали они наш любимый корявый skype, старенькую icq, а также jabber и Brosix. Тема со взломом icq будет дальше раскрыта.

Я знал, как взламывать скайпы различными методами, поэтому мы без труда взламывали по 3-5 магазинов в день. Заходя на аккаунт дилера, можно было довольствоваться огромной базой клиентов-торчков. Их количество зависело от репутации магазина. Суть заработка состояла в том, чтобы подменять кошелек магазина на свой, на который оплачивали деньги клиенты.

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

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

Advanced penetration testing: hacking the world’s most secure networks

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

Hacking: the art of exploitation

Джон Эриксон написал книгу «Hacking: The Art of Exploitation», которая научит вас основам программирования на C с точки зрения хакера. Вы также познакомитесь с тактиками взлома, такими как переполнение буферов и захват сетевых подключений, узнаете об обходе мер безопасности, использовании уязвимостей и т. д.

Kali linux: некоторый полезный софт

  • NMAP :- Nmap (“Network Mapper”) бесплатная open-source программа, которая является предустановленной в Kali. Написана Gordon Lyon (также известен под псевдонимом Fyodor Vaskovich). Она нужна для обнаружения хостов и различных сервисов, создавая таким образом “карту сети”. Она используется для проверки сети или аудита безопасности, для быстрого сканирования больших сетей, хотя она отлично работает с одиночными хостами. Программное обеспечение предоставляет ряд функций для исследование компьютерных сетей, включая обнаружение узлов и операционной системы. Nmap использует необработанные IP-пакеты чтобы определить, какие хосты доступны в сети, какие службы (имя и версия приложения) эти хосты предлагают, какие ОС они запускают, какие типы фильтров пакетов/файрволлы используют, а также десятки других характеристик.
  • Aircrack-Ng :- Aircrack – это одна из самых популярных программ для взлома WEP/WPA/WPA2 протокола. Комплект Aircrack-ng содержит инструменты для захвата пакетов и “рукопожатий”, деавторизации подключённых пользователей, создания трафика и инструментов для брутфорса сети и атак по словарю.

Linux. базовое знание системы

Это прям MUST HAVE для всех. Нашему брату лучше сразу себе поставить Kali Linux или Parrot OS в качестве домашней системы -для быстрого въезжания в суть вопроса.

РЕСУРСЫ:

Mastering hacking (the art of information gathering & scanning)

Харш Ботра посвятил книгу «Mastering Hacking» тестированию на проникновение. Он также охватил стратегии поиска уязвимостей и другие актуальные для интересующихся кибербезопасностью темы. Цель книги – представить лучшие практики и методы в простом формате, поэтому материал будет полезен не только техническим специалистам.

The basics of hacking and penetration testing

Патрик Энгебретсон написал «The Basics of Hacking and Penetration Testing». Он предназначен для ознакомления с процедурами, необходимыми для проведения теста на проникновение, чтобы выполнить этический взлом от начала до конца. Книга учит студентов, как использовать и анализировать хакерские инструменты, необходимые для выполнения теста на проникновение. Каждая глава в этой книге предлагает примеры и упражнения, призванные научить читателей оценивать и применять результаты.

Надеюсь, мой список показался вам полезным. Успешных взломов и не нарушайте закон – в этом нет никакой необходимости. Удачи!

The web application hacker’s handbook: finding and exploiting security flaws

Книга Даффида Статтарда и Маркуса Пинто рассказывает о многих современных технологиях, используемых в веб-приложениях. Она научит вас сложным техникам хакерских атак с упором на клиентскую сторону. В книге также рассматриваются новые платформы удаленного взаимодействия, HTML5, подходы к междоменной интеграции, исправление пользовательского интерфейса, блокировка фреймов, атаки на гибридные файлы и другие интересные темы. Это самая свежая публикация по теме выявления, использования и исправления уязвимостей онлайн-приложений.

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

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

Английский язык

Без него на самом деле никуда. Огромное количество учебного материала, документации – все то на английском языке. Для изучения Английского языка мы поступаем следующим образом:

Все это находится на канале Александра Бебриса – лучшего преподавателя английского языка в Ютубе на просторах Рунета

Атакуем skype

«Человек – самый надежный и одновременно самый уязвимый источник информации.»А. Брединский

Взлом icq

Те, кто использовал icq, тоже были уязвимы. Способов взломать аську было много, но знали о них единицы. Я же использовал социальную инженерию и все тот же способ через техническую поддержку. Служба поддержки ICQ требовала один важный пункт: необходимо, чтобы 3-5 друзей из твоего контакт-листа подтвердили, что это твой аккаунт.

Тут тоже есть свои лазейки. Конкретная версия клиента icq 6.х позволяла увидеть email, привязанный к аккаунту прямо в личных данных пользователя. Надо лишь добавить жертву, а она в свою очередь должна авторизовать вас. Тогда вы сможете просмотреть ее почту, если жертва регистрировала ICQ не на телефон.

А далее мы уже переходим к почте и взламываем ее. Многие почты были несуществующими, что давало 100% шанс успеха. Мы просто создавали эту почту и отправляли на нее пароль с сайта ICQ. Это было очень просто. Некоторые email мы взламывали подбором пароля, некоторые через секретный вопрос, другие же вовсе находили в публичных базах взломанных сайтов.

Взлом скайпа с помощью «фрукта»

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

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

Выкуп

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

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

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

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

Для пользователей windows

Если вы используете Windows, для вас есть хорошая новость: не надо удалять текущую систему и форматировать диск. Есть несколько вариантов работы с Linux:

  1. Изучите VirtualBox (программа-эмулятор для операционной системы). Изучив его, вы сможете запускать операционную систему в операционной системе. Звучит страшно, но программа бывает очень полезна.
  2. Установите Linux рядом с Windows. Если вы всё сделаете правильно, загрузчики систем не будут конфликтовать. Делается это довольно просто: есть много мануалов в Интернете.

Доверенность

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

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

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

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

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

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

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

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

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

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

* проверить или узнать информацию о ком-либо, чём-либо ** лицо, предоставляющее услуги по пробиву

Изучить и использовать unix-систему, например, ubuntu или macos

Изначально UNIX-системы были предназначены для программистов, разрабатывающих ПО, а не для пользователей, которые никак не относятся к сфере IT. UNIX-системы – это системы, на которых стоит почти весь Интернет, т. к. в качестве сервера в основном используют их же (чаще всего Debian и Ubuntu). Вы не можете стать хакером, не изучив их и не научившись работать с терминалом.

Изучить устройства сетей

Вы должны чётко понимать устройства сетей и принципы их работы, если хотите стать хакером. Важно понять, как создаются сети, понять различие между протоколами TCP/IP и UDP и проч. Узнайте, какой сетью пользуетесь вы. Научитесь настраивать её. Выясняйте возможные векторы атаки.

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

Это неотъемлемая часть обучения. Необходимо понимать алгоритмы различных шифров, например, SHA-512, алгоритм OpenSSL и проч. Также нужно разобраться с хешированием. Криптография используется везде: пароли, банковские карты, криптовалюты, торговые площадки и проч.

Изучить язык разметки html

Если вы ещё не знакомы с программированием,

тогда я вообще не понимаю, что вы делаете на этом сайте

 тогда у вас есть отличная возможность начать свой путь с изучения

. Независимо от того, что вы видите на сайте, знайте, что всё это HTML.

Листинг 1. пример простейшей системы аутентификации

#include "stdafx.h"
// Простейшая система аутентификации — 
// посимвольное сравнение пароля 
#include <stdio.h>
#include <string.h>
#define PASSWORD_SIZE 100
#define PASSWORD "myGOODpasswordn"
// Этот перенос нужен затем, чтобы 
// не выкусывать перенос из строки,
// введенной пользователем
int main()
{
    // Счетчик неудачных попыток аутентификации 
    int count=0;
    // Буфер для пароля, введенного пользователем 
    char buff[PASSWORD_SIZE];
    // Главный цикл аутентификации 
    for(;;)
    {
        // Запрашиваем и считываем пользовательский 
        // пароль
        printf("Enter password:"); 
        fgets(&buff[0],PASSWORD_SIZE,stdin);
        // Сравниваем оригинальный и введенный пароль 
        if (strcmp(&buff[0],PASSWORD))
        // Если пароли не совпадают — «ругаемся»
        printf("Wrong passwordn");
        // Иначе (если пароли идентичны)
        // выходим из цикла аутентификации
        else break;
        // Увеличиваем счетчик неудачных попыток 
        // аутентификации и, если все попытки 
        // исчерпаны, завершаем программу 
        if (  count>3) return -1;
    }
    // Раз мы здесь, то пользователь ввел правильный 
    // пароль 
    printf("Password OKn");
}

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

Не так уж редко пароли представляют собой осмысленные слова наподобие Ferrari, QWERTY, имена любимых хомячков или названия географических пунктов. Угадывание пароля сродни гаданию на кофейной гуще — никаких гарантий на успех нет, остается рассчитывать на одно лишь везение. А удача, как известно, птица гордая — палец в рот ей не клади. Нет ли более надежного способа взлома?

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

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

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

Что ж, пусть это будет секция данных! Остается только найти удобный инструмент для просмотра двоичного файла. Можно, конечно, нажать клавишу F3 в своей любимой оболочке (FAR, например) и, придавив кирпичом клавишу Page Down, любоваться бегущими цифирьками до тех пор, пока не надоест.

Можно воспользоваться любым hex-редактором (QView, Hiew…) — кому какой по вкусу, — но в статье, по соображениям наглядности, приведен результат работы утилиты DUMPBIN из штатной поставки Microsoft Visual Studio. DUMPBIN запускается из Developer Command Prompt.

Натравим утилиту на исполняемый файл нашей программы, в котором лежит пароль, и попросим ее распечатать содержащую инициализированные только для чтения данные секцию rdata (ключ /SECTION:.rdata) в «сыром» виде (ключ /RAWDATA:BYTES), указав значок > для перенаправления вывода в файл (ответ программы занимает много места, и на экране помещается один лишь «хвост»).

Листинг 2

> dumpbin /RAWDATA:BYTES /SECTION:.rdata passCompare1.exe > rdata.txt
004020E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
004020F0: 18 30 40 00 68 30 40 00 45 6E 74 65 72 20 70 61  .0@.h0@.Enter pa
00402100: 73 73 77 6F 72 64 3A 00 6D 79 47 4F 4F 44 70 61  ssword:.myGOODpa
00402110: 73 73 77 6F 72 64 0A 00 57 72 6F 6E 67 20 70 61  ssword..Wrong pa
00402120: 73 73 77 6F 72 64 0A 00 50 61 73 73 77 6F 72 64  ssword..Password
00402130: 20 4F 4B 0A 00 00 00 00 00 00 00 00 00 00 00 00   OK.............
00402140: 00 00 00 00 90 0A C1 5B 00 00 00 00 02 00 00 00  ......A[........
00402150: 48 00 00 00 24 22 00 00 24 14 00 00 00 00 00 00  H...$"..$.......

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

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

В Microsoft Visual C для этой цели предусмотрена специальная прагма data_seg, указывающая, в какую секцию помещать следующие за ней инициализированные переменные. Неинициализированные переменные по умолчанию располагаются в секции .bss и управляются прагмой bss_seg соответственно.

В листинг 1 перед функцией main добавим новую секцию, в которой будем хранить наш пароль:

// С этого момента все инициализированные переменные будут 
// размещаться в секции .kpnc
#pragma data_seg(".kpnc") 
#define PASSWORD_SIZE 100
#define PASSWORD "myGOODpasswordn"
char passwd[] = PASSWORD;
#pragma data_seg()

Внутри функции main проинициализируем массив:

// Теперь все инициализированные переменные вновь будут 
// размещаться в секции по умолчанию, то есть .rdata 
char buff[PASSWORD_SIZE]="";

Немного изменилось условие сравнения строк в цикле:

if (strcmp(&buff[0],&passwd[0]))

Натравим утилиту DUMPBIN на новый исполняемый файл:

> dumpbin /RAWDATA:BYTES /SECTION:.rdata passCompare2.exe > rdata.txt
004020C0: D3 17 40 00 00 00 00 00 D8 11 40 00 00 00 00 00  O.@.....O.@.....
004020D0: 00 00 00 00 2C 11 40 00 D0 11 40 00 00 00 00 00  ....,.@.?.@.....
004020E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
004020F0: 18 30 40 00 68 30 40 00 45 6E 74 65 72 20 70 61  .0@.h0@.Enter pa
00402100: 73 73 77 6F 72 64 3A 00 57 72 6F 6E 67 20 70 61  ssword:.Wrong pa
00402110: 73 73 77 6F 72 64 0A 00 50 61 73 73 77 6F 72 64  ssword..Password
00402120: 20 4F 4B 0A 00 00 00 00 00 00 00 00 00 00 00 00   OK.............
00402130: 00 00 00 00 6F CB C4 5B 00 00 00 00 02 00 00 00  ....oEA[........
00402140: 48 00 00 00 14 22 00 00 14 14 00 00 00 00 00 00  H...."..........
00402150: 6F CB C4 5B 00 00 00 00 0C 00 00 00 14 00 00 00  oEA[............

Ага, теперь в секции данных пароля нет и хакеры «отдыхают»! Но не спешите с выводами. Давайте сначала выведем на экран список всех секций, имеющихся в файле:

> dumpbin passCompare2.exe
Summary
    1000 .data
    1000 .kpnc
    1000 .rdata
    1000 .reloc
    1000 .rsrc
    1000 .text

Нестандартная секция .kpnc сразу же приковывает к себе внимание. А ну-ка посмотрим, что там в ней?

> dumpbin /SECTION:.kpnc /RAWDATA passCompare2.exe
RAW DATA #4
    00404000: 6D 79 47 4F 4F 44 70 61 73 73 77 6F 72 64 0A 00  myGOODpassword..

Вот он, пароль! Спрятали, называется… Можно, конечно, извратиться и засунуть секретные данные в секцию неинициализированных данных (.bss) или даже секцию кода (.text) — не все там догадаются поискать, а работоспособность программы такое размещение не нарушит.

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

Площадки для оттачивания навыков

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

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

Поддержка

На момент 2022 года Skype был одним из самых популярных месенджеров. На то время Скайп уже входил в состав Microsoft. Баги и уязвимости находили чуть ли не каждый день. Тогда уже прикрыли много ошибок, например, с восстановлением при помощи маркера пароля, неправильной фильтрации и т.д.

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

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

• Почта, привязанная к аккаунту;• Примерная дата создания аккаунта;• Дата последнего входа в аккаунт;• 3 и более ваших друзей, находящихся в списке вашего аккаунта;• А также — дата рождения, страна и еще несколько не столь важных пунктов (я их просто опущу).

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

Подмена

Скажу честно, до такого было не так трудно додуматься. Труднее было это реализовать. И так, почти все платежные средства, а также мобильные операторы, предоставляют возможность использовать USSD запросы. На сайте киви такие команды тоже были. Объясню доступным языком.

Предположим, у вас есть киви-кошелек, на котором активирована функция USSD. Активируется она в настройках кошелька и, как правило, включена автоматически. Если сим-карта находится у вас в телефоне, то вы можете совершить перевод средств простой смс командой «перевод 89123456789 1000» на номер 7494.

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

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

Тут возникает другой вопрос, а ведь короткий номер к чему-то должен привязываться? И да, действительно, у каждого короткого номера есть федеральный. И мне удалось его найти. Точнее был даже не один номер, а целая корпоративная группа. Номер был оформлен на компанию ООО «Бифри», использовался тариф «мобильное информирование», баланс на номере минус 400 тысяч рублей. Главное, что если отправить на этот номер смс, то автоматически переадресуется на короткий 7494. То, что нужно!

Приступаем к атаке. Находим рабочий сервис с подменой смс отправителя. Указываем отправителем номер нашей жертвы, номер получателя – федеральный номер Киви, а в теле письма пишем следующую команду: «перевод 89123456789 1000», где 89123456789 – номер нашего Киви.

Отправляем смс и со счета жертвы снимается 1000 рублей и переводится на наш номер – 89123456789. Максимально можно было переводить по 5000 рублей. Поэтому приходилось совершать сразу несколько команд, если на кошельке была большая сумма. Пир был не долгим.

Читайте также  Включение/выключение сохранённых логинов, синхронизации входа и автозаполнения в Firefox Preview | Справка Firefox для Android

Проверка аутентичности

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

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

  • защиты, основанные на знании (пароля, серийного номера);
  • защиты, основанные на обладании (ключевым диском, документацией).
Основные типы защит
Основные типы защит

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

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

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

Продолжение следует?

Итак, ты прочел (прочел ведь?) начальный отрывок классической книги Криса Касперски «Фундаментальные основы хакерства» в современном переосмыслении. Получилось ли у нас обновить эти знания до актуального уровня? Стоит ли продолжать? Поделись своим мнением в комментариях.

Шаг 2. заявка

Перед подачей заявки очень важно было уточнить один момент. Если жертва находится в Англии, а вы пытаетесь подать заявку через IP, скажем, Италии, то у администрации скайпа будут очень большие сомнения и в 99% вам откажут. Поэтому надо было настроить прокси сервер на страну жертвы.

Указав все собранные нами данные, обязательно надо описать историю потери доступа «к своему» аккаунту. От имени жертвы мы пишем примерно следующее:

«Здравствуйте. Я был(а) в отпуске последний месяц. После возвращения домой я не смог(ла) войти в свой аккаунт. Я не уверен(а), что точно помню свой пароль, но подозреваю, что мои данные могли получить мошенники, потому как на почту я войти тоже не могу. Прошу помочь мне.»

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

Шаг второй. знакомство с дизассемблером

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

Хакнуть, говорите? Что ж, это несложно! Куда проблематичнее определиться, чем именно ее хакать. Инструментарий хакеров чрезвычайно разнообразен, чего тут только нет: и дизассемблеры, и отладчики, и API-, и message-шпионы, и мониторы обращений к файлам (портам, реестру), и распаковщики исполняемых файлов, и… Сложновато начинающему кодокопателю со всем этим хозяйством разобраться!

Впрочем, шпионы, мониторы, распаковщики — второстепенные утилиты заднего плана, а основное оружие взломщика — отладчик и дизассемблер.

Итак, дизассемблер применим для исследования откомпилированных программ и частично пригоден для анализа псевдокомпилированного кода. Раз так, он должен подойти для вскрытия парольной защиты passCompare1.exe. Весь вопрос в том, какой дизассемблер выбрать.

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

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

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

> dumpbin /SECTION:.text /DISASM passCompare1.exe > code-text.txt

Заглянем еще раз в секцию данных (или в другую — в зависимости от того, где хранится пароль): см. листинг 2.

Запомним найденный пароль: myGOODpassword. В отличие от Visual C 6.0, которой пользовался Крис, Visual C 2022 не обращается к инициализированным переменным по шестнадцатеричному смещению, а подставляет значение прямо в секцию кода. Таким образом, попробуем найти выявленный ранее пароль в дизассемблированном листинге тривиальным контекстным поиском с помощью любого текстового редактора.

0040107D: B9 08 21 40 00     mov         ecx,offset ??_C@_0BA@PCMCJPMK@myGOODpassword?6?$AA@
00401082: 8A 10              mov         dl,byte ptr [eax]
00401084: 3A 11              cmp         dl,byte ptr [ecx]
00401086: 75 1A              jne         004010A2
00401088: 84 D2              test        dl,dl
0040108A: 74 12              je          0040109E

Смотрите, центральная часть этого листинга отвечает за сравнение значений регистров EAX и ECX. В последний, как мы видим, в первой строке листинга записывается эталонный пароль, следовательно, в первом — введенный пользователем. Затем происходит сравнение и выполняются переходы почти в одну и ту же точку: 0x4010A2 и 0x40109E. Заглянем, что там:

0040109E: 33 C0              xor         eax,eax
004010A0: EB 05              jmp         004010A7
004010A2: 1B C0              sbb         eax,eax
004010A4: 83 C8 01           or          eax,1
004010A7: 85 C0              test        eax,eax
004010A9: 74 63              je          0040110E
004010AB: 0F 1F 44 00 00     nop         dword ptr [eax eax]
004010B0: 68 18 21 40 00     push        offset ??_C@_0BA@EHHIHKNJ@Wrong?5password?6?$AA@
004010B5: E8 56 FF FF FF     call        _printf

Здесь центральную роль играет инструкция test eax,eax, расположенная по смещению 0x4010A7. В случае если eax равен 0, следующая за ней команда JE совершает прыжок на 0x40110E. В противном же случае на вершину стека выталкивается строка Wrong password:

push        offset ??_C@_0BA@EHHIHKNJ@Wrong?5password?6?$AA@

а следом — вызов функции с говорящим названием:

call        _printf

Значит, ненулевое значение EAX свидетельствует о ложном пароле, а ноль — об истинном.

О’кей, тогда переходим к анализу валидной ветви программы, что делается после прыжка на 0x40110E. А тут притаилась инструкция, которая помещает строку Password OK на вершину стека, после чего вызывается процедура _printf, которая, очевидно, выводит строку на экран:

0040110E: 68 28 21 40 00     push        offset ??_C@_0N@MBEFNJID@Password?5OK?6?$AA@
00401113: E8 F8 FE FF FF     call        _printf

Оперативные соображения следующие: если заменить команду JE на JNE, то программа отвергнет истинный пароль как неправильный, а любой неправильный пароль воспримет как истинный. А если заменить TEST EAX,EAX на XOR EAX,EAX, то после исполнения этой команды регистр EAX будет всегда равен нулю, какой бы пароль ни вводился.

Дело за малым — найти эти самые байтики в исполняемом файле и слегка подправить их.

Шаг первый. разминочный

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

Достоинство такой защиты — крайне простая программная реализация. Ее ядро состоит фактически из одной строки, которую на языке С можно записать так:

if (strcmp(введенный пароль, эталонный пароль)) {/* Пароль неверен */} else {/* Пароль ОK*/}

Давайте дополним этот код процедурами запроса пароля и вывода результатов сравнения, а затем испытаем полученную программу на прочность, то есть на стойкость к взлому:

Шаг третий. хирургический

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

Ну, с «выкидыванием запчастей» справиться как раз таки просто — достаточно забить код командами NOP (опкод которой 0x90, а вовсе не 0x0, как почему-то думают многие начинающие кодокопатели), то есть пустой операцией (вообще-то NOP — это просто другая форма записи инструкции XCHG EAX,EAX — если интересно).

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

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

86, прекрасно уживающуюся с Windows 10. Запустим ее, указав имя файла в командной строке hiew32 passCompare1.exe, двойным нажатием клавиши Enter, переключимся в режим ассемблера и при помощи клавиши F5 перейдем к требуемому адресу. Как мы помним, команда TEST, проверяющая результат на равенство нулю, располагалась по адресу 0x4010A7.

Чтобы Hiew мог отличить адрес от смещения в самом файле, предварим его символом точки: .4010A7.

004010A7: 85 C0              test        eax,eax
004010A9: 74 63              je          0040110E

Ага, как раз то, что нам надо! Нажмем клавишу F3 для перевода Hiew в режим правки, подведем курсор к команде TEST EAX,EAX и, нажав клавишу Enter, заменим ее на XOR EAX,EAX.

004010A7: 33 C0              xor         eax,eax
004010A9: 74 63              je          0040110E
Hiew в режиме правки ассемблерной команды
Hiew в режиме правки ассемблерной команды

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

>passCompare1
Enter password:Привет, шляпа!
Password OK

Получилось! Защита пала! Хорошо, а как бы мы действовали, не умей Hiew «переваривать» PE-файлы? Тогда пришлось бы прибегнуть к контекстному поиску. Обратим свой взор на шестнадцатеричный дамп, расположенный дизассемблером слева от ассемблерных команд.

Конечно, если пытаться найти последовательность 85 C0 — код команды TEST EAX,EAX, ничего хорошего из этого не выйдет — этих самых TEST’ов в программе может быть несколько сотен, а то и больше. А вот адрес перехода, скорее всего, во всех ветках программы различен, и подстрока TEST EAX,EAX/JE 0040110E имеет хорошие шансы на уникальность. Попробуем найти в файле соответствующий ей код: 85 C0 74 63 (в Hiew для этого достаточно нажать клавишу F7).

Опп-с! Найдено только одно вхождение, что нам, собственно, и нужно. Давайте теперь попробуем модифицировать файл непосредственно в hex-режиме, не переходя в ассемблер. Попутно возьмем себе на заметку — инверсия младшего бита кода команды приводит к изменению условия перехода на противоположное, то есть 74 JE -> 75 JNE.

Hiew в режиме правки шестнадцатеричного кода
Hiew в режиме правки шестнадцатеричного кода

Работает? В смысле защита свихнулась окончательно — не признает истинные пароли, зато радостно приветствует остальные. Замечательно!

Взломанная программа принимает любые пароли
Взломанная программа принимает любые пароли

Этичный хакинг

Большая MindMap по пентесту на русском языке – тут вы можете изучить отличную Mindmap на Русском языке, в которой представлено огромное количество информации для каждого этапа проведения тестирования на проникновение.

Перевод курса “Секреты Хакеров” – очень мягкое и легкое погружение в тему. Как прогулка по парку

Перевод курса Ermin Kreponic от команды Codeby – отличное погружение в этичный хакинг, всего по чуть-чуть и вы уже в теме

За тобой не придут с болгаркой vol.1 и vol.2 – лучшие курсы по анонимности и безопасности в Рунете

Ютуб Канал VectorT13 – это все про анонимность и чтобы Вас не отследили. Также все очень грамотно и разжевано

Супер курс от HackerDom – супер курс для полных бананов, где все отлично разжевано и разложено по полочкам

Telegram канал Мифодия Келевры – выше сверху вы посмотрели курсы Мефодия, сразу же после этого следуйте в его канал

Авторский Telegram канал White2Hack – один из лучших телеграм каналов по хакингу с кучей ссылок и ресурсов

Ветка форума Codeby посвященная этичному хакингу – тут вы найдете огромное число ответов на огромное количество ваших вопросов

Телеграм канал Ralph Hacker – зарубежный ресурс и очень крутой

Телеграм канал S.E. Book – тут вообще есть все что нужно. Зайдете, поймете

Телеграм канал Geek Girl – тут постят просто какой-то нереальный жир в нереальном количестве. Но опять же знание языка необходимо

Обязательная статья №1 для изучения

Обязательная статья №2 для изучения

Обязательная статья №3 для изучения

Обязательная статья для Web-пентеста

Дневник начинающего Хакера

Лучшее видео этого года на тему хакинга. Must see всем начинающим и немного понимающим английский язык

BOOKS:

Языки программирования

Тут сложно что-то рекомендовать, но я все же порекомендую. Не знаете какой язык программирования учить – тупо учите Python! Python нужен во многих сферах хакинга, это универсальный язык и очень хороший язык для того чтобы начать.

Ресурсы по Python я приводить не буду их море, и это тема отдельной статьи

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

Заключение

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

Понравилась статья? Поделиться с друзьями:
ТВОЙ ВК
Добавить комментарий

Adblock
detector