В этой справочной статье мы рассмотрим понятие «хакер», а также попытаемся разобраться, какие базовые навыки и знания потребуются, чтобы им стать.
Содержание
Слово хакер образовано от многозначного английского глагола to hack, в значении «обтесывать», «рубить», «врубаться». На заре компьютерной эры хакерами называли высококлассных программистов, способных быстро врубиться разобраться и обтесать исправить, оптимизировать программный код. Однако со временем значение слова сильно изменилось.
Сегодня хакером (синоним: взломщик) называют специалиста, занимающегося разрушением или обходом защит компьютерных систем с целью несанкционированного доступа к информационным и вычислительным ресурсам.
Классификация — дело неблагодарное, так как количество способов разбить множество на классы практически неограниченно. Поэтому я отобрал необходимый для понимания структуры сообщества (с моей точки зрения) минимальный набор классификаций: по законности, по мотивации, по специализации.
Начать свой путь в мире IT можно с помощью специальных курсов. Их ведут практикующие специалисты, которые великолепно разбираются в разработке и могут ответить на любой вопрос. Рекомендуем курсы от наших друзей Mate Academy, Powercode и Hillel.
Прежде всего хакеры делятся на две крупные категории (в зависимости от того законно или незаконно они осуществляют свою деятельность): это так называемые «черные шляпы») (c англ. black hat) и «белые шляпы» (c англ. white hat). «Черные шляпы» — это киберпреступники. «Белые шляпы» — специалисты по IT-безопасности, работающие на законных основаниях. Есть еще «серые шляпы» — это некий промежуточный вариант между черными и белыми, деятельность которых носит сомнительный характер на грани фола (на нем подробно останавливаться не будем).
Далее рассмотрим, на какие виды делятся хакеры по их мотивации. Для «белых шляп» все достаточно просто — их основная цель — зарабатывание денег на этом как на легальной работе. А вот для «черных» все несколько разнообразнее. Здесь выделяются:
Как правило, хакеры, как и большинство IT-специалистов, имеют достаточно узкую специализацию. Вот основные категории, на которые делятся хакеры по роду их занятий:
Есть еще несколько типов хакеров, которые я не включил в классификацию, но о которых необходимо упомянуть.
Скрипт-кидди (англ. Script kiddie) — это те, кто пользуется готовыми скриптами или другими сторонними инструментами для проведения хакерских атак, при этом часто не понимают принципов используемых алгоритмов. Говоря проще, это неквалифицированный хакер, не желающий учится и не принимающий хакерскую этику.
Поддерживаемые государством — государства нелегально используют хакеров для вмешательства во внутренние дела других государств. В связи с подобными прецедентами появился термин «кибервойна». Кибервойна — это один из видов информационной войны, когда военные действия осуществляются не физически, а электронно, оружием в этой войне являются компьютеры и интернет. Это наиболее скрытная часть андеграунда, которая часто маскируется под другие преступные группы для маскировки своих истинных мотивов, например, изображая себя в роли хактивистов или безобидных гиков.
Для начала отметим, что вопрос «Как стать хакером?», мы рассматриваем исключительно как теоретический вопрос, либо как желание стать «белой шляпой» (этичным хакером). Незаконная деятельность «черных шляп» (особенно из категории «плохих парней») автором всячески осуждается.
Сформулируем определение этичного хакера.
Этичный хакер — это специалист по защите информации высокого уровня, основным направлением деятельности которого является поиск уязвимостей в компьютерных системах.
И заострим внимание на следующих моментах:
Оставшаяся часть статьи базируется на приведенной трактовке.
Какие навыки обычно требуются профи кибербезопасности:
Необходимо отметить, что это только базовые навыки, которые необходимы всем категориям хакеров, вне зависимости от специализации. Когда они будут более менее освоены, появится понимание того в каком направлении и как развиваться дальше, поскольку на этом этапе вы станете достаточно грамотным специалистом в области 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 — что называется must have, рекомендуется установить и изучить работу в одной из версий Unix. Обычно рекомендуют в качестве такого дистрибутива Kali Linux. Это специально разработанная для этичного взлома сборка, она содержит более 1000 хакерских инструментов для различных операций.
Да, хакеру, скорее всего, придется читать много технической документации: хелпы, мануалы, даташиты, rfc, howto, разного рода статьи и прочее. Любые доступные документы, из которых можно почерпнуть нужную информацию.
Далее приведены ссылки на некоторые из ресурсов, удобных для начального ознакомления с темой хакинга.
В этом разделе пара ссылок с подборками блогов и других полезных ресурсов по хакингу:
Итак, в этой обширной справочной статье мы попытались разобраться кто такие хакеры, какие бывают разновидности хакеров, какие навыки и знания нужны, чтобы стать ими, дали подборки ссылок на полезные ресурсы. Конечно, эта тема настолько обширна, что вряд ли можно охватить ее полностью даже в одной толстой книге, так как вопросы кибербезопасности затрагивают практически всю сферу IT.
Тем не менее, для того чтобы сделать первый шаг в выбранном направлении, думаю, статья будет полезна. В заключение, это подробное видео-введение в хакерство, станет ценным дополнением к этому материалу:
Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…
В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…
Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…
Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…
Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…
IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…