Рубріки: Теория

Как стать хакером с нуля? Гайд для новичков

Сергей Рыльков

В этой справочной статье мы рассмотрим понятие «хакер», а также попытаемся разобраться, какие базовые навыки и знания потребуются, чтобы им стать.

Кто такой хакер?

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

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

Виды хакеров

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

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

Прежде всего хакеры делятся на две крупные категории (в зависимости от того законно или незаконно они осуществляют свою деятельность): это так называемые «черные шляпы») (c англ. black hat) и «белые шляпы» (c англ. white hat). «Черные шляпы» — это киберпреступники. «Белые шляпы» — специалисты по IT-безопасности, работающие на законных основаниях. Есть еще «серые шляпы» — это некий промежуточный вариант между черными и белыми, деятельность которых носит сомнительный характер на грани фола (на нем подробно останавливаться не будем). 

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

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

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

  • Сетевой хакер — специализируется на получении несанкционированного доступа к компьютерным сетям и сетевым серверам, либо выведении их из строя. Здесь выделяется подкатегория веб-хакинга — взлома сайтов.
  • Кракер — занимается взломом прикладного ПО с целью разблокировать полную функциональность и получить полноценную коммерческую версию. Также может разрабатывать ПО для взлома, так называемые кейгены.
  • Фрикер — исследует телефонные сети с целью найти возможность звонить бесплатно. Исторически фрикерство — самый первый вид хакерской деятельности, возникший еще в 60–70-е годы XX века. В последние годы фрикеры стали заниматься также и исследованием сетей для мобильных телефонов.
  • Кардер — занимается нелегальным получением номеров кредитных карт и сведений об их владельцах. Часто эта деятельность сочетается с хакерской. Кардерство считается наиболее серьезным преступлением, и поэтому является самым опасным видом хакерской деятельности.
  • Фишеры — собирают пользовательские данные, в том числе вводимые данные банковских карт на формах фальшивых сайтов и в поддельных приложениях (вид кардерства). Далее они продают эти данные дальше (например, кардером).
  • Вирусописатели — программисты, занимающиеся написанием программных вирусов. Вообще данный род деятельности нельзя отнести к хакерству. Однако часто таким программистам приходится изучать или выявлять уязвимости программ (например, при написании почтовых вирусов для программ типа Outlook), что уже можно отнести к хакерской деятельности.
  • Брутфорсеры — организуют ботнеты (сеть компьютеров под управлением хакеров) для подбора паролей методом перебора, брутфорсом (от англ. brute force — грубая сила). Владельцы зараженных компьютеров даже не подозревают, что их устройства взломаны вирусом и используются кем-то в своих целях.
  • Взломщики игр — крадут у игроков в онлайн-игры ценные игровые предметы и ресурсы, чтобы перепродать их за реальные деньги.
  • Охотники за криптовалютой — относительно новый вид, специализируются на взломе криптокошельков и смарт-контрактов. Также к этой категории относят взломщиков ПК и телефонов с целью установки и выполнения ПО для фонового майнинга крипты.

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

Скрипт-кидди (англ. Script kiddie) — это те, кто пользуется готовыми скриптами или другими сторонними инструментами для проведения хакерских атак, при этом часто не понимают принципов используемых алгоритмов. Говоря проще, это неквалифицированный хакер, не желающий учится и не принимающий хакерскую этику.

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

Навыки, которые нужны, чтобы стать хакером

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

Сформулируем определение этичного хакера.

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

И заострим внимание на следующих моментах:

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

Оставшаяся часть статьи базируется на приведенной трактовке.

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

  • Знание английского языка. Придется перемалывать тонны технической документации, просматривать форумы, проходить онлайн-курсы (в идеале специально для IT), просто общаться в чатах и т.д. И все это, в большинстве своем, на англоязычных сайтах. На русском языке можно найти к сожалению только небольшую часть информации, да и то часто в корявом переводе.
  • Программирование. Хакеру необходимо обладать навыками программирования. Они требуются как для взлома защит программ, написания вирусов, так и для автоматизации поиска уязвимостей на серверах, реализации алгоритмов подбора пароля. Основные языки для хакера — это C, C++, C#, JS, PHP, Python, Java, Assembler. Для старта неплохим решением будет курс от школы Hillel.
  • Принципы организации и функционирования компьютерных сетей (здесь можно выделить такие ключевые вопросы и понятия как — физическая организация сети, сетевое ПО, сетевые стандарты, стеки протоколов, модель ISO OSI, MAC-адреса, TCP/IP, Web, Internet, протоколы прикладного уровня HTTP и FTP, язык разметки HTML, язык XML, понятие безопасной связи, классификация сетевых атак, шифрование данных, HTTPS, SSL, электронная цифровая подпись (см. пункт криптография).
  • Криптография. Криптографические алгоритмы лежат в основе любой защиты от просмотра/модификации данных; электронная подпись также базируется на криптографии. Следовательно знание криптографии, хотя бы на начальном уровне, необходимо. А это в свою очередь, может потребовать изучения некоторых разделов высшей математики.
  • Знание архитектуры операционных систем (ОС) и навыки системного программирования под разные ОС. Если вы собираетесь специализироваться на взломе сетей начинайте изучение Unix, так как все с него начиналось и большая часть сетевого оборудования работает именно под ним. Изучение Windows — для тех, кто собирается специализироваться на взломе stand-alone-приложений, Android (ну и там же iOS) — мобильных.

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

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

Основное требование к хакеру как к программисту — это умение писать корректный код.

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

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

С чего начать знакомство с программированием?

На сегодняшний день, наиболее подходящим языком для того, чтобы начать изучать программирование, считается Python. Он один из самых простых для понимания и при этом имеет широчайшее распространение в различных сферах: от веб-разработки до таких наукоемких областей, как Deep Learning и Big Data. Python считается скриптовым языком и активно применяется для автоматизации, что очень полезно для задач хакинга.

В качестве альтернативы Python можно посоветовать Delphi или C#. Delphi является диалектом языка Object Pascal. Язык Pascal в свою очередь изначально разработан как язык для обучения программированию. Во главу угла ставилась стройность и удобочитаемость, а не максимальная производительность, как в случае с C. Delphi имеет мощнейшую среду визуальной разработки с большим количеством визуальных и невизуальных компонентов. Благодаря чему Delphi — отличный инструмент для прототипирования и проверки своих идей. Есть бесплатные аналоги Delphi: Lazarus, CodeTyphon.

С# — во многом духовный наследник Delphi, но имеет C-синтаксис. Так же, как и Delphi, он имеет одну из самых удобных визуальных сред разработки (IDE). Переняв многое от своих предшественников — языков C++Delphi, Modula, Smalltalk, Java — С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем.

Например, C# в отличие от C++ не поддерживает множественное наследование классов (между тем, допускается множественная реализация интерфейсов).

Необходимые языки программирования

Основные языки программирования, которые могут потребоваться: C, C++, Java Script, PHP, Python, Java, Ruby, Assembler. Возможно (скорее всего, наверняка), потребуется изучить какие то языки дополнительно, все зависит от итоговой специализации:

C, C++ (взлом ПО) — языки общего назначения, они используются для системного программирования. На них написано большинство операционных систем, что полезно при изучении архитектур ОС. Например, Unix — открытая ОС, ее исходные коды на языке С всегда можно просмотреть и проанализировать. Также эти языки могут быть использованы для написания разных системных утилит, защит или наоборот крэков, кейгенов. 

JavaScript (веб-хакинг) — широко распространенный скриптовый язык, повсеместно используется в веб-приложениях, как во фронтенде, в виде встроенных в HTML-страницу скриптов, так и в бэкенде, в обработчиках запросов сервера. Многие уязвимости основаны на запуске из браузера вредоносного скрипта на JavaScript. Язык PHP также очень распространен в области веб-разработки, но больше на стороне бэкенда.

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

Java (мобильные приложения) — основной язык при разработке под ОС Android. Также это один из самых широко используемых языков программирования в мире.

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

Ruby — в сфере исследований безопасности (этичного хакинга) Ruby очень быстро завоевал популярность. На этот язык повлияли Perl, Smalltalk, Eiffel, Ada и Lisp. Подобно Python, он легок для написания и чтения, а также приятен в работе.

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

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

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

Знакомство с операционными системами

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

На сегодняшний день существуют следующие семейства ОС:

  • Unix — одна из первых операционных систем (первоначально Unix была разработана в конце  1960-х годов сотрудниками Bell Labs), существует множество версий данной ОС. В настоящее время Unix-системы распространены в основном среди серверов, а также как встроенные системы для различного оборудования, включая смартфоны. Также Unix-системы доминируют на суперкомпьютерах. Среди ОС для рабочих станций и домашнего применения Unix и Unix-подобные ОС занимают после Microsoft Windows второе (macOS), третье (GNU/Linux) и многие последующие места по популярности. Существует множество свободных Unix-подобных операционных систем. Наиболее известна Linux, на основе которой создано множество дистрибутивов под разные цели.

Так как для сетевого хакера знание Unix — что называется must have, рекомендуется установить и изучить работу в одной из версий Unix. Обычно рекомендуют в качестве такого дистрибутива Kali Linux. Это специально разработанная для этичного взлома сборка, она содержит более 1000 хакерских инструментов для различных операций. 

  • Microsoft Windows — семейство коммерческих операционных систем корпорации Microsoft, ориентированных на управление с помощью графического интерфейса. Согласно данным ресурса Netmarket Shares, по состоянию на октябрь 2021 года под управлением операционных систем семейства Windows работает около 87% персональных компьютеров. Windows работает на платформах x86, x86-64 и ARM. Существовали также версии для DEC Alpha, MIPS, IA-64, PowerPC и SPARC. Последней на данный момент операционной системой Microsoft является Windows 11, представленная 24 июня 2021 года.
  • Android операционная система для смартфонов, планшетов, электронных книг, цифровых проигрывателей, наручных часов, фитнес-браслетов, игровых приставок, ноутбуков, нетбуков, смартбуков, телевизоров, проекторов и других устройств. Основана на ядре Linux с собственной реализацией виртуальной машины Java от компании Google. Android позволяет запускать Java-приложения, управляющие устройством через разработанные Google библиотеки. Android Native Development Kit позволяет портировать библиотеки и компоненты приложений, написанные на С и других языках. В 71% смартфонов, проданных во всем мире в октябре 2021 года, была установлена операционная система Android. Если вы собираетесь заниматься мобильными приложениями, то вам необходимо скачать и установить Android Studio.
  • macOS — изначально была представлена как Mac OS X в 2012 году. Это проприетарная операционная система от компании Apple. Семейство операционных систем macOS является второй по распространенности для десктопа (после Windows) и базируется на сильно модифицированном ядре FreeBSD (Unix).
  • iOS — мобильная операционная система для смартфонов, электронных планшетов, носимых проигрывателей и некоторых других устройств, разрабатываемая и выпускаемая американской компанией Apple. Выпущена в 2007 году; первоначально — для iPhone и iPod touch, позже — для таких устройств, как iPad. В 2014 году появилась поддержка автомобильных мультимедийных систем Apple CarPlay. В отличие от Android, является закрытой и выпускается только для устройств, производимых фирмой Apple.

Техническая документация

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

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

Блоги экспертов

В этом разделе пара ссылок с подборками блогов и других полезных ресурсов по хакингу:

Книги для начинающих хакеров

  • Джейми Бартлетт. «Подпольный интернет», 2017
  • Уильям Саймон. «Призрак в Сети. Кевин Митник», 2012
  • Алексей Малов. «Исповедь кардера», 2019
  • Джон Эриксон «Хакинг. Искусство эксплойта», 2018
  • Ник Билтон. «Киберпреступник №1», 2017
  • Сергей Бабин. «Лаборатория хакера»,2016
  • Михаил Фленов. «Компьютер глазами хакера», 2012
  • Михаил Фленов , «Web-сервер глазами хакера. — 3-е издание», 2021
  • Евгений Зобнин, «Android глазами хакера», 2021
  • Крэйг Хант , «TCP/IP. Сетевое администрирование», 3-е издание, 2007
  • Александр Кенин, Денис Колисниченко. Самоучитель системного администратора, 6-е издание
  • Фишерман Л.В. «Git. Практическое руководство. Управление и контроль версий в разработке программного обеспечения»
  • Колисниченко Д.Н. «Linux. Oт новичка к профессионалу.» — 7-е изд.
  • Л.Г. Гагарина, А.И. Кононова, «Архитектура вычислительных систем и Ассемблер», 2019
  • Одиноков В.В., Коцубинский В.П., «Программирование на ассемблере», 2011
  • Ярошенко А.А. «Хакинг на примерах. Уязвимости, взлом, защита», 2021
  • Марейн Хавербек, «Выразительный JavaScript. Современное введение в программирование», 2019
  • Андресс Джейсон, «Защита данных. От авторизации до аудита», 2021
  • Ройс Дэвис, «Искусство тестирования на проникновение в сеть», 2021

Книги для продвинутых хакеров

  • Хогланд Г., Мак-Гроу Г. “Взлом программного обеспечения. Анализ и использование кода”
  • Ethan Thorpe, «Kali Linux — Advanced Methods and Strategies to Learn Kali Linux»
  • Кристофер Негус, «Библия Linux — 10-е издание»
  • Спрингер Вильям, «Гид по Computer Science, расширенное издание», 2021
  • Hamza Megahed, «Penetration testing with Shellcode», 2020
  • Андрей Бирюков, «Собираем устройства для тестов на проникновение», 2018
  • Joshua J. Drake, Pau Oliva Fora, Zach Lanier, Collin Mulliner, Stephen A. Ridley Georg Wicherski , «Android Hacker’s Handbook»
  • «CCSP (ISC)2 Certified Cloud Security Professional», 2017
  • Bullock J., Parker J, «Wireshark for Security Professionals», 2017
  • Haber M.J., Hibbert B., «Privileged Attack Vectors», 2018
  • Justin Seitz, «Black Hat Python: Python Programming for Hackers and Pentesters»
  • Jason Andress, Ryan Linn, «Coding for Penetration Testers: Building Better Tools»

Полезные ссылки и ресурсы для начинающих

Итог

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

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

 

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023