От создания до взлома: где проходит грань между программистом и хакером

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

Чем занимается хакер, а чем программист

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

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

Например, хакеру нужно проникнуть в сеть некой фирмы, которая поставила на свои сервера очень умную IDS/IPS систему, балансировщики нагрузки и дополнительно закрыла это все NAT’ом.

Одно из первых действий, которое сделает взломщик, — сканирование портов с доступных серверов. Но стандартные приложения для этого вроде nmap не подойдут, так как их сразу же обнаружит IDS/IPS. К тому же балансировщик может переписывать порт и адрес или отвечать на соединение по-своему, скрывая реальную структуру бэкенда. В такой ситуации остается только писать свой сканер портов, который будет имитировать поведение реальных клиентов.

Большинство программистов с такой задачей не справятся. Даже бэкенд разработчики плохо представляют работу сетевых протоколов, не говоря уже о том, чтобы помнить последовательности флагов при рукопожатии в каком-нибудь TLS и прочие специфичные вещи. А вот хакер справится: он быстро напишет кривой скрипт, найдет способ получить session id пользователя и будет дальше тестировать систему под видом обычного клиента.

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

Виды хакеров

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

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

Другие занимаются исследованием программного обеспечения: анализируют исполняемые файлы и занимаются реверс-инжинирингом, то есть пытаются понять принцип работы готовой программы. Часто такие люди пишут вирусы для операционных систем. Третьи изучают компьютерные сети. Они не просто хорошо ориентируются в стеке TCP/IP, а досконально понимают работу протоколов и сетевого оборудования.

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

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

Анастасия Полубояринова, автор на программе онлайн-магистратуры Практикума «Кибербезопасность»:

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

А еще разработчики тоже делятся по сферам деятельности: например, веб, десктопное ПО, мобильная разработка.

Может ли программист что-нибудь взломать

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

Аналогия — водитель машины. Он умеет управлять транспортом и примерно знает, как все работает под капотом, но общее понимание не делает водителя автомехаником. А навыки ремонта машин не делают механика хорошим водителем.

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

Таких хакеров, которые не имеют опыта взлома, но все-таки могут куда-то проникнуть при должном упорстве, называют script-kiddie, или «скрипт-кидди». Это любители, которые ломают, чтобы причинить кому-то вред или ради развлечения.

Разное мышление программиста и хакера

Хакер и программист — это не только про код, но и про образ мышления. Исследование Getting Into the Mindset of a Hacker университета Теннесси выделяет несколько аспектов хакерского мышления.

Взломщики более внимательны к деталям. Они умеют систематизировать и строить системы. Кроме того, они чаще попадают в состояние потока.

Склонность к латеральному мышлению. Это навык смотреть на вещи под другим «углом» и менять рамки задачи. Например, думать не «как это сломать», а «как защищали».

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

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

Компания заплатит до 20 млн рублей за критическое событие

Компания заплатит до 20 млн рублей за критическое событие

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

Чем программист отличается от хакера — итоги

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

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

  • Кроме того, они применяют разные инструменты. Программист использует ПО для написания и тестирования программ, хакер — для взлома.

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

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

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

Анастасия Полубояринова, автор на программе онлайн-магистратуры Практикума «Кибербезопасность»:

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

Также можно рассмотреть профессии, связанные с безопасностью: инженер по кибербезопасности, специалисты по цифровой криминалистике, аналитики SOC (Security Operations Center). Они тоже имеют глубокую техническую экспертизу в устройстве систем и безопасности. Иногда им приходится «думать как хакер», чтобы расследовать инциденты и повышать уровень безопасности систем.


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

Реклама ООО «Яндекс», ИНН: 7736207543

Пожалуйста, соблюдайте правила общения в блогах компаний