Как стать хакером для «самых маленьких»

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

6b01179e42bd3b6d2db72cd3229a3146.png

ПРИМЕЧАНИЕ! Данная статья не будет интересная для тех кто реально хочет стать хакером (ничего нового вы в ней не услышите), но будет очень полезна (для понимания подхода) системным администраторам, всевозможным скриптерам, джунам, лидам, стек овнерам, манагерам и тд (людям косвенно связанным с IT индустрией, и б***о-кодерам разумеется).

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

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

Какие бывают направления и уровни читерства:

Уровень №0 — «Я у мамки хацкер»
Цели — Бессмысленны и беспощадны (Или показать себе какой я классный программист)
Риски — Нет (Ой да кому ты нужен)
Потенциальная сатисфакция — Нет
Примеры — DDOS-атаки, читерство в играх (или создание читов, включая попытки взлома донаторских приблуд), создание вирусов из 2 команд (через shell api) в духе «удалить все из папки System32 и перезагрузить компьютер».
Противодействие — Контрится антивирусом

Уровень №1 — «Мелкий пакостник»
Цели — Троллинг, унижение и доминирование (В редких случаях что то хорошее)
Риски — Почти нет
Потенциальная сатисфакция — Нет?
Примеры — Взлом игр, взлом пользователей, взлом админок сайтов, почтовые рассылки, и тд
Противодействие — Не требуется

Уровень №2 — «Кибер-шантажист» (Самый массовый и основной, если такие термины применимы, поскольку таких людей очень мало, из за порога входа)
Цели — Доход
Риски — Минимальны, административное преследование
Потенциальная сатисфакция — Может быть, если повезет
Примеры — Взлом блогеров, инста-моделей, правительственных деятелей, банкиров и тд (в общем людей при деньгах) с целью шантажа (тайны есть у всех, а те у кого нет — легко байтятся).
Противодействие — Контрится наличием логики

Уровень №3 — «Тыжпрограммист или тру хакер»
Цели — Любые, зависят от настроения, но зачастую благие (пусть и не выглядят таковыми), так как особенности деятельности предполагают глубокое понимание философии, и важности общечеловеческих принципов
Риски — Уголовное преследование, смерть
Потенциальная сатисфакция — Любая, хакерская романтика
Примеры — Аутсорс, корпоративный шпионаж (в основном), аутсорс по отмыванию денег, аутсорс для инсайдерской торговли на бирже, или спекуляции индексами, любые проекты на благо человечества (к примеру крипта), либо «обворовывание богатых»
Противодействие — Невозможно (этот человек в любом случае получит то что хочет, так как процесс становления «ТЫЖПРОГРАММИСТОМ» подразумевает приобретения абсолютно разных навыков (помимо программирования), в абсолютно разных сферах, будь то нейрохирургия, сантехника, атомная энергетика, ремонт обуви, квантовая физика, и тд, все что угодно)

Собирательный образ типичных

Собирательный образ типичных «тыжпрограммистов»

Уровень №4 — «крысапрограммист», он же «белый хакер» (не путать с маркетинговым термином, хотя формальные «белые хакеры» по сути ничем не отличаются)
Цели — Любые, очень, очень плохие, так как этот человек не имеет морали, чести, человечности, мелочен действует из корыстных целей, ЧСВшен, беспринципен
Риски — По началу «видимость» тотальной безнаказанности, на деле смерть (в любом случае)
Потенциальная сатисфакция — Нет, скорее всего наоборот
Примеры — Работа на государство, создание настоящих вирусов с целю прямого причинения ущерба большому количеству людей, включая доведение до самоубийства, и провокации к терроризму (например вирус взломавший атомные объекты в Иране, созданный по крылом Массада)
Противодействие — Контрится очень талантливым «тыжпрограммистом»

Собирательный образ типичного

Собирательный образ типичного «белого хакера»

Примечание касательно «белых хакеров»

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

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

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

С чего начинается хакер

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

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

Яркий пример из моего опыта:

Это блокнот, с автодополнением и картинками (и видео) вместо фона, написан на С#, казалось бы для реализации нужно ковыряться в канвас, и чуть ли не описывать с нуля объект на подобие TextBox, но на деле это просто три формы (плюс заготовки с палитры компонентов) без рамки (одно для иконки меню, второе для фона, третье для текста), у которых выставлено вложенное свойство формы с частичной отрисовкой в true, а автодополнение просто берет текущую выбранную строку, вставляет в скрытый StaticText, и оттуда берет размер отступа за вычетом границ, все проще чем кажется.

Это блокнот, с автодополнением и картинками (и видео) вместо фона, написан на С#, казалось бы для реализации нужно ковыряться в канвас, и чуть ли не описывать с нуля объект на подобие TextBox, но на деле это просто три формы (плюс заготовки с палитры компонентов) без рамки (одно для иконки меню, второе для фона, третье для текста), у которых выставлено вложенное свойство формы с частичной отрисовкой в true, а автодополнение просто берет текущую выбранную строку, вставляет в скрытый StaticText, и оттуда берет размер отступа за вычетом границ, все проще чем кажется.

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

Хакер начинается с анонимности

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

Представим что в моем случае в роли руки в интернете выступал простой нетбук Dexp на Intel Atom (2 ядра, 2 гига), под Windows 7, в качестве сервера Open Server, в качестве сайта имейждбоард с названием http://www.funhub.lol/, пара порносайтов, и видеохостингов (довольно популярный вариант, ибо не пустовать же серверу, пусть приносит доход).

Представим что анонимность обеспечена связкой из домена, купленного на одноразовую банковскую карту (анонимную, или краденную, для примера paygoo gift), и маршрутизацией этого домена с сервером через сервис https://www.noip.com, а именно выставления домена No ip в качестве CNAME-записи у домена, ну и разумеется ловушки на самом сервере и ноутбуке.

И да хакерство требует вложений.

Рабочий инструмент хакера

В качестве рабочего инструмента хакера должен выступать «изолированный компьютер» (то есть компьютер не должен иметь какой либо связи с сетью, или выделенными устройствами, на подобие мобилки), основной рабочий компьютер НЕПОДХОДИТ для этой роли! От того насколько хорошо реализован инструмент хакера зависит его анонимность и возможности.

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

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

Сервер в свою очередь должен быть заражен мелопакастными вирусами, иметь много рекламы, и редиректов (чем больше — тем лучше). Для какого ни будь отдела «К» МФД РФ этого хватит с головой, для ЦРУ — нет.

Ближе к делу

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

357302a657c6f7bb0332ae058626bd33.png

Уровень №0

Утила для DDOS — открываем MS Visual Studio, и с политры компонентов кидаем на форму TextBox, Button и WebBrowser, двумя тыками по кнопке создаем метод (для этой кнопки), после чего пишем код:

    if (String.IsNullOrEmpty(TextBox1.Text)) return;
    webBrowser1.Navigate(new Uri(TextBox1.Text));

После чего прописываем в TextBox адрес сайта для ддоса и запускаем программу. Теперь, когда у нас есть скомпилированный файл просто запускаем кучу экземпляров этой программы.

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

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

Разберем еще один пример:

Для этого создадим папку на рабочем столе с произвольным названием (к примеру «aimp_5.30.2530_w64»), далее в этой папке создадим текстовый файл, который сразу переименуем в «aimp_5.30.2530_w64.exe .cmd» (в редакторе этого не отобразить, но задача сделать так, чтобы настоящие расширение скрылось за пределами рабочей области экрана, к примеру за пределами 1980 пикселей)

Вот так это будет выглядеть в папке

Вот так это будет выглядеть в папке

После чего откроем любым текстовым редактором и пишем внутри:

ECHO "LOH PIDR"
DEL *.*

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

В итоге мы получаем первый мелкопакастный вирус, который может испортить нервы невнимательному пользователю.

c6d3e1d55c315461dd648a7468850487.png

Можно пойти дальше и создать батник, который перезапишет содержимое файла hosts в C:\WINDOWS\system32\drivers\etc\, и скроет его, после чего создаст пустой файл hоsts в этой же папке, но вместо английской О в название поместит русскую (одинаковые буквы имеют разные коды), но по понятным причинам код описывать я не буду.

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

Уровень №2

Уровень 2 уже предполагает подготовки, а также обхода потенциальных ловушек в лице антивирусов, брандмауэров, всяких утил, и тд. Поэтому следует придерживается некоторых правил в разработке, к примеру:

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

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

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

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

Что это все значит? Давайте разберем на примере:

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

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

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

В общем есть простор для фантазии.

вот так выглядит оригинал рандумной программы для загрузки видосиков с ютюба

вот так выглядит оригинал рандумной программы для загрузки видосиков с ютюба

а вот так выглядит мой косплей этой программы, который я накидал за две минуты в конструкторе

а вот так выглядит мой косплей этой программы, который я накидал за две минуты в конструкторе

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

Уровень №3

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

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

Представим теоретическую задачу:

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

Мы не знаем что это за данные и где они находятся, все что мы знаем это название компании (пусть будет ОАО Интерком).

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

Представим что разными ухищрениями мы узнали что эта компания занимается обслуживанием гос. закупок, это крупная компания (более 1000 человек), которая имеет филиалы в разных городах (к примеру 3 филиала).

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

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

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

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

Вместо этого мы добавим в программу возможность «обновления», построим надежный мост для взаимодействия с нашей рукой в интернете, создадим синтаксис замаскированных логов-команд, которые будут интерпретироваться нашим вирусом, через сторонние программы в скрипт на каком ни будь встроенном в систему языке программирования (например Python или VB Scripts), и будут выполнятся уже внутри сети для «анализа изнутри», после чего по результатам анализа мы уже начинаем процесс внедрения самого вируса.

Опустим подробности.

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

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

Опустим подробности.

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

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

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

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

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

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

Что можно сказать по итогу?

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

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

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

Искусству тыжпрограммирования нельзя научиться из чужого опыта (более того описанные в этой статье методы также «малоэффективны»).

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

В общем поделитесь своими опытом и мнением в комментариях, или если есть чем дополнить, будет интересно почитать (особенно про этап 3, и сводные примеры).

Спасибо за внимание.

© Habrahabr.ru