От создания до взлома: где проходит грань между программистом и хакером
Между понятиями «программист» и «хакер» есть как сходства, так и принципиальные различия. Оба работают с кодом и технологиями, но цели и подходы у них совершенно разные. В посте разберемся, чем эти специалисты отличаются друг от друга.
Чем занимается хакер, а чем программист
Оба специалиста пишут скрипты, но их задачи и подходы отличаются. Программист — это человек, который создает и сопровождает ПО. Для своей работы он должен хорошо знать стек технологий, уметь писать структурированный и «чистый» код.
Хакер тоже пишет скрипты для решения своих задач, но использует другой подход. Его не волнуют паттерны проектирования, «чистый» код и фреймворки. Чтобы выполнить задачу, он может написать кривой скрипт или использовать костыли, так как главное — найти уязвимость.
Например, хакеру нужно проникнуть в сеть некой фирмы, которая поставила на свои сервера очень умную 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-программиста на баг баунти программе, если найдет критическую уязвимость.
Отсюда и появляется разница в мышлении: хакеры не ограничены по времени и заработку, на программистов давит дедлайн и отсутствие желания делать что-то лучше «за эту зарплату и в этих условиях».
Чем программист отличается от хакера — итоги
Сфера деятельности программиста — разработка программного кода, хакер же сосредоточен на поиске уязвимых мест в системах и возможных способов обхода защиты. При этом у них много общего: программисты могут обладать знаниями в области эксплуатации уязвимостей, так же как и хакеры обладают технической экспертизой в написании программ и пишут код.
Но есть существенное различие: хакеры чаще используют свои знания в области ИБ для получения несанкционированного доступа и взлома систем. Программисты же сосредоточены на создании систем и их функциональности, могут использовать практики ИБ при разработке для защиты от взлома.
Кроме того, они применяют разные инструменты. Программист использует ПО для написания и тестирования программ, хакер — для взлома.
Еще момент — про чистоту кода. Программист может писать как в соответствии с общепринятым стилем (чистый код), так и не в соответствии — как и хакер. Но есть нюанс: хакерские программы написаны в особом стиле — запутанном, чтобы их было сложнее обнаружить.
Разработчик должен хорошо знать свой стек, фреймворки и методы программирования. Хакер обычно пишет минимально работоспособный скрипт и даже не задумывается о «чистом» коде.
Образ мышления у хакера и программиста скорее разный. Ход мыслей хакеров должен быть более нестандартный и креативный, иначе они бы не смогли создавать новый вредоносный софт и способы обхода защиты.
Анастасия Полубояринова, автор на программе онлайн-магистратуры Практикума «Кибербезопасность»:
В сфере программирования есть направления с задачами, близкими к хакингу, но с прямо противоположной целью: защита от взлома и его предотвращение. Если говорить о профессиях, то ближе всего профессия пентестера — они проверяют системы на уязвимости, имитируя действия злоумышленников.
Также можно рассмотреть профессии, связанные с безопасностью: инженер по кибербезопасности, специалисты по цифровой криминалистике, аналитики SOC (Security Operations Center). Они тоже имеют глубокую техническую экспертизу в устройстве систем и безопасности. Иногда им приходится «думать как хакер», чтобы расследовать инциденты и повышать уровень безопасности систем.
Научитесь распознавать утечки данных и выявлять мотивы киберпреступников в бесплатной вводной части курса «Специалист по информационной безопасности» — за 3 часа узнаете про взломы и хакеров, утечки информации, технологию OSINT, расследование киберпреступлений и сферу информационной безопасности в целом.
Реклама ООО «Яндекс», ИНН: 7736207543




















