Самый приятный аспект моей работы – это тестирование на проникновение (также известное как пентестирование). Пентестирование – это взлом в прямом смысле этого слова. Это битва интеллектов человека и машины. Человек – «атакующий» – может использовать собственную изобретательность и новые или существующие инструменты, когда исследует слабые стороны машин или людей. За все годы, что я занимался тестированием, хотя мне на это обычно дают недели, я успешно взламывал цель примерно за час. Самый долгий взлом, помню, продолжался три часа. Это касается любого банка, медицинского, правительственного или корпоративного учреждения, который когда-либо нанимал меня для тестирования на проникновение.
При этом я не могу назвать себя отличным пентестером. По шкале от 1 до 10, где 10 – высший балл, мои способности составляют примерно 6 или 7. С точки зрения специалиста по ИБ я чувствую себя лучшим в мире, но я весьма посредственный взломщик. Я был окружен потрясающими пентестерами, как мужчинами, так и женщинами, которые не помышляли о написании собственных инструментов пентестирования или не считали свои действия успешными, если не они привели к созданию хотя бы одного события с предупреждением в логах. Но даже люди, которых я оцениваю на 10 баллов, обычно считают себя середнячком и восхищаются другими пентестерами, которых, по их мнению, десятки. Насколько же хороши должны быть эти хакеры?
Вам не нужно быть исключительным, чтобы стать очень успешным хакером. Для начала карьеры даже не нужно успешно взламывать клиента, который вас нанял (я предполагаю, что вам платят за законные пентесты). На самом деле клиенты будут в абсолютном восторге, если вы не взломаете систему. Они смогут похвастаться, что наняли хакеров, а их сеть выдержала атаку. Это беспроигрышный вариант для всех участников. Вы получаете свои деньги, а они радуются, что атака отражена. На моей памяти это единственная работа, где не может быть плохого результата. К сожалению, я не знаком ни с одним пентестером, который когда-либо успешно взламывал все свои цели. Я уверен, что есть хакеры, которые терпят неудачу, но подавляющее большинство «сорвут свой куш».
Примечание. Если ваши тесты не обнаружили слабых мест, а клиент вскоре был скомпрометирован реальными злоумышленниками, это выставит вас не в лучшем свете. Если это произойдет несколько раз, дурная слава не обойдет вас стороной, и вы, вероятно, будет искать новую работу. Слабые места есть. Ищите их.
Обычно пентестеры делают что-то еще, чтобы произвести впечатление на своих клиентов. Например, удаленно снимают генерального директора за рабочим столом на веб-камеру или взламывают пароль к серверу и размещают «Веселого Роджера» на рабочем столе компьютера сетевого администратора. Это стоит тысячи слов. Не стоит недооценивать, насколько одна глупая картинка может повысить удовлетворенность клиентов вашей работой. Они будут вспоминать о ней (и хвастаться вами) спустя годы после того, как вы закончите работу. Если можете, всегда заканчивайте красивым жестом. Это мой «золотой совет».
Если у хакеров и есть секрет взлома, то он точно не в том, как ломать. Это процесс изучения правильных методов и использования верных инструментов, точно как у электриков, сантехников или строителей. Нет определенного способа взлома. Однако существует вполне конкретный набор шагов, которые объединяются в более крупные этапы; это процесс, который включает в себя все, что необходимо хакеру для выполнения задачи. Не каждый хакер проходит все шаги. Некоторые вообще делают только один. Но в целом, если вы будете следовать этапам, то, скорее всего, придете к успеху. Вы можете пропустить один или несколько шагов и все равно быть успешным хакером. Вредоносные программы и другие инструменты взлома часто позволяют пропускать шаги, но по крайней мере один из них – первоначальное проникновение – требуется всегда. Независимо от желания сделать официальную карьеру хакера, если вы собираетесь бороться со злоумышленниками, нужно понимать методологию взлома. Модели могут различаться, включая количество шагов, их названия и конкретные детали, но все они содержат одни и те же основные компоненты.
Методология взлома содержит следующие прогрессивные шаги.
1. Сбор информации.
2. Проникновение.
3. Упрощение доступа в будущем (необязательный).
4. Разведка системы.
5. Перемещение (необязательный).
6. Выполнение намеченного действия.
7. Заметание следов (необязательный).
Как правило, если хакер не рассчитывает взламывать все потенциально уязвимые сайты, он придерживается конкретной цели. Проникая в конкретную компанию, первое, что он делает, это собирает о ней всю информацию, которая поможет проникнуть в систему. Это IP-адреса, адреса электронной почты и доменные имена. Хакер узнает, сколько потенциальных сайтов и сервисов, к которым он может получить доступ, подключены к компании. Используя средства массовой информации и публичные документы, он находит сведения о руководителях высшего звена и прочих сотрудниках для проведения атак средствами социальной инженерии. Хакер просматривает новости, чтобы узнать, какое крупное программное обеспечение недавно купил объект, какие происходили слияния или разделения (такие мероприятия часто сопровождаются ослаблением уровня безопасности), и даже с какими партнерами взаимодействует «жертва». Многие компании были скомпрометированы гораздо более слабым партнером.
В большинстве хакерских атак важнее всего выяснить, с какими цифровыми активами связана компания. Обычно идентифицируются не только основные (публичные) сайты и службы; чаще злоумышленнику полезнее обратить внимание на менее популярные, такие как ресурсы сотрудников и партнеров. Такие сайты и серверы, скорее всего, имеют более слабую систему безопасности, нежели крупные порталы компаний.
Затем толковый хакер начинает собирать сведения обо всем ПО и сервисах, доступных на каждом из этих сайтов. Это процесс, известный как сбор цифровых отпечатков. Очень важно узнать, какие операционные системы (ОС) и их версии используются. Версии ОС могут сказать хакеру об уровнях защиты системы и ошибках, которые могут или не могут присутствовать. Представим, что он встречает операционную систему Windows Server 2012 R2 или Linux Centos 7.3-1611. По той же причине он ищет программы и вариации версий программного обеспечения, работающие на каждой из этих ОС. Если это веб-сервер, он может встретить Internet Information Server 8.5 на Windows или Apache 2.4.25 на Linux. Он проводит инвентаризацию каждого устройства, операционной системы, приложений и версий, запущенных на каждом из целевых объектов. Всегда лучше провести тщательную инвентаризацию, чтобы получить полную картину, но в других случаях хакер может найти крупную уязвимость на ранней стадии и перейти к следующему шагу. Если отбросить этот быстрый способ, как правило, чем больше информации хакер соберет о том, что работает, тем лучше. Каждое дополнительное ПО и версия предоставляет дополнительные возможные векторы атаки.
Примечание. Некоторые хакеры называют общий нетехнический сбор информации поиском следов, а поиск информации об операционной системе и программном обеспечении – сбором цифровых отпечатков.
Порой, когда хакер подключается к сайту, тот услужливо отвечает очень подробной информацией о версиях программного обеспечения, поэтому не нужны никакие дополнительные инструменты. На случай, если этого не происходит, существует много инструментов, упрощающих сбор цифровых отпечатков. На сегодня первый инструмент, который использует хакер для сбора цифровых отпечатков, – это Nmap (https://nmap.org/). Программа разработана в 1997 году. Она представлена в нескольких версиях, поддерживающих операционные системы Windows и Linux, и, по сути, представляет собой швейцарский армейский нож, только для хакера. Nmap может выполнять все виды сканирования и тестирования хоста, и это очень хороший способ сбора цифровых отпечатков. Для этого существуют и более мощные приложения, в частности сосредоточенные на сборе определенных данных, таких как информация о веб-серверах, базах данных или серверах электронной почты. Например, программа Nikto2 (https://cirt.net/Nikto2) не только эффективнее Nmap собирает цифровые отпечатки с веб-серверов, но и выполняет тысячи пентестов и позволяет выявить уязвимые места.