- •Отзывы и пожелания
- •Список опечаток
- •Нарушение авторских прав
- •Предисловие
- •Кому адресована эта книга
- •О чем идет речь в книге
- •Как извлечь максимум из книги?
- •Загрузка примеров
- •Загрузка цветных изображений
- •Условные обозначения
- •Атаки на веб-приложения. Введение
- •Правила применения оружия
- •Вопросы конфиденциальности данных
- •Очистка
- •Инструментарий тестировщика
- •Kali Linux
- •Альтернативы Kali Linux
- •Прокси-сервер
- •Burp Suite
- •Zed Attack Proxy
- •Облачная инфраструктура
- •Дополнительные источники
- •Упражнения
- •Резюме
- •Глава 2
- •Эффективное обнаружение
- •Типы тестирования
- •Построение карты сети
- •Masscan
- •hatWeb
- •Nikto
- •CMS-сканеры
- •Эффективная атака методом полного перебора
- •Средства сканирования
- •Постоянное картирование контента
- •Обработка полезной нагрузки
- •«Полиглот»
- •Запутывание (обфускация) кода
- •Дополнительные источники
- •Упражнения
- •Резюме
- •Глава 3
- •Легкая добыча
- •Анализ сети
- •Ищем вход
- •Определение учетных данных
- •Есть способ получше
- •Очистка
- •Дополнительные ресурсы
- •Резюме
- •Глава 4
- •Продвинутые способы атаки с использованием метода полного перебора
- •Распыление подбора пароля
- •Спросим LinkedIn
- •Метаданные
- •Кассетная бомба
- •За семью прокси-серверами
- •ProxyCannon
- •Резюме
- •Глава 5
- •Внедрение файлов
- •Удаленное внедрение файлов
- •Локальное внедрение файлов
- •Внедрение файла для удаленного выполнения кода
- •Резюме
- •Обнаружение и эксплуатация уязвимостей в приложениях с помощью внешних сервисов
- •Распространенный сценарий
- •Командно-контрольный сервер
- •Центр сертификации Let’s Encrypt
- •INetSim
- •Подтверждение
- •Асинхронное извлечение данных
- •Построение выводов на основе анализа данных
- •Резюме
- •Расширение функциональных возможностей Burp Suite
- •Нелегальная аутентификация и злоупотребление учетными записями
- •Швейцарский нож
- •Запутывание кода
- •Collaborator
- •Открытый сервер
- •Выделенный сервер Collaborator
- •Резюме
- •Глава 8
- •Вредоносная сериализация
- •Использование десериализации
- •Атака на пользовательские протоколы
- •Анализ протокола
- •Эксплойт для осуществления атаки
- •Резюме
- •Практические атаки на стороне клиента
- •Правила ограничения домена
- •Совместное использование ресурсов разными источниками
- •Межсайтовый скриптинг
- •Постоянный XSS
- •DOM-модели
- •Межсайтовая подделка запроса
- •BeEF
- •Перехват
- •Атаки с применением методов социальной инженерии
- •Кейлоггер
- •Закрепление в системе
- •Автоматическая эксплуатация
- •Туннелирование трафика
- •Резюме
- •Практические атаки на стороне сервера
- •Внутренние и внешние ссылки
- •Атаки XXE
- •Атака billion laughs
- •Подделка запроса
- •Сканер портов
- •Утечка информации
- •«Слепой» XXE
- •Удаленное выполнение кода
- •Резюме
- •Глава 11
- •Атака на API
- •Протоколы передачи данных
- •SOAP
- •REST
- •Аутентификация с помощью API
- •Базовая аутентификация
- •Ключи API
- •Токены на предъявителя
- •Postman
- •Установка
- •Вышестоящий прокси-сервер
- •Среда выполнения
- •Коллекции
- •Запуск коллекции
- •Факторы атаки
- •Резюме
- •Глава 12
- •Атака на CMS
- •Оценка приложения
- •WPScan
- •sqlmap
- •Droopescan
- •Arachni
- •Взлом кода с помощью бэкдора
- •Закрепление в системе
- •Утечка учетных данных
- •Резюме
- •Глава 13
- •Взлом контейнеров
- •Сценарий уязвимости в Docker
- •Осведомленность о ситуации
- •Взлом контейнера
- •Резюме
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
|
|
|
C |
E |
|
|
|
|||||||
|
|
X |
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
||||||
|
- |
|
|
|
|
|
d |
|
|
- |
|
|
|
|
|
d |
|
||||||
|
F |
|
|
|
|
|
|
|
t |
|
|
F |
|
|
|
|
|
|
|
t |
|
||
|
D |
|
|
|
|
|
|
|
|
i |
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
|
|
|
|
|
|
r |
||||
P |
|
|
|
|
|
NOW! |
o |
P |
|
|
|
|
|
NOW! |
o |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
BUY |
|
|
За семью прокси-серверами 109 BUY |
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
w Click |
to |
|
|
|
|
|
|
|
|
|
|
|
to |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
m |
w Click |
|
|
|
|
|
|
|
m |
|||||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
||
|
w |
|
|
|
|
|
|
|
|
o |
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
g |
.c |
|
|
. |
|
|
|
|
g |
.c |
|
||||||
|
|
p |
|
|
|
|
|
|
|
|
|
p |
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
жение у небольшого числа потенциальных клиентов,запретив подключение к |
|
|
e |
|
|||||||||||||
|
|
|
df |
|
|
n |
e |
|
|
|
|
df |
|
|
n |
|
|||||||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
Tor, обычно приемлем для компаний.
Список выходных узлов выхода Tor можно найти здесь: https:// check.torproject.org/cgi-bin/TorBulkExitList.py.
ProxyCannon
Альтернативой использованию Tor для диверсификации IP-адресов является облако.
Существует бесчисленное множество IaaS-провайдеров, имеющих большое IP-пространство, бесплатное для виртуальных машин. Виртуальные машины дешевы,а иногда и вовсе бесплатны,поэтому маршрутизация нашеготрафика через них окажется довольно рентабельной.
Amazon,Microsoft и Google имеютпростой в использованииAPIдля автоматизации управления экземплярами виртуальных машин. Если можем периодически создавать новую виртуальную машину с новым внешним IP-адресом, то можем направлять через нее трафик к целевому приложению и замаскировать свое истинное происхождение, что в значительной степени помешает системам защиты обнаружить нас.
ProxyCannon – отличная утилита, выполняющая всю тяжелую работу: общение с AWS API, создание и уничтожение экземпляров виртуальных машин, ротацию внешних IP-адресов и маршрутизацию трафика через них.
ProxyCannon разработана Shellntel, она доступна на GitHub: https://github.com/Shellntel/scripts/blob/master/
proxyCannon.py.
Для работы с ProxyCannon нужна boto, библиотека Python, которая предоставляет API-доступ к Amazon AWS. Мы можем использовать команду Python pip для установки требуемой зависимости.
root@kali:~/tools# pip install -U boto
Collecting boto
Downloading boto-2.48.0-py2.py3-none-any.whl (1.4MB) [...]
Installing collected packages: boto Successfully installed boto-2.48.0
Теперь ProxyCannon готов к использованию. Параметр -h отображает все доступные опции.
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
|
|
|
|
C |
|
E |
|
|
|
||||||
|
|
X |
|
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
||||||
|
- |
|
|
|
|
|
d |
|
|
|
- |
|
|
|
|
|
d |
|
||||||
|
F |
|
|
|
|
|
|
|
t |
|
|
|
F |
|
|
|
|
|
|
|
t |
|
||
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
|
|
|
|
|
|
|
r |
||||
P |
|
|
|
|
NOW! |
o |
|
P |
|
|
|
|
|
NOW! |
o |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
Глава 4.Продвинутые способы атаки с использованием метода полного... |
BUY |
|
|
||||||||||||||
|
|
|
|
to |
BUY 110 |
|
|
|
|
|
|
|||||||||||||
w Click |
|
|
|
|
|
|
m |
|
w Click |
to |
|
|
|
|
|
|
m |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
||
|
w |
|
|
|
|
|
|
|
|
o |
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
g |
.c |
|
|
|
. |
|
|
|
|
g |
.c |
|
||||||
|
|
p |
|
|
|
|
|
|
|
|
|
|
p |
|
|
|
|
|
|
|
||||
|
|
|
df |
|
|
|
|
e |
|
|
|
|
|
df |
|
|
|
|
e |
|
||||
|
|
|
|
root@kali:~/tools# python proxyCannon.py -h |
|
|
|
|
|
n |
|
|
|
|
||||||||||
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
usage: proxyCannon.py [-h] [-id [IMAGE_ID]] [-t [IMAGE_TYPE]] [--region [REGION]] [-r] [-v] [--name [NAME]] [-i [INTERFACE]] [-l]
num_of_instances
positional arguments: |
|
num_of_instances |
The number of amazon |
|
instances you’d like to |
|
launch. |
optional arguments: |
|
-h, --help |
show this help message |
|
and exit |
-id [IMAGE_ID], --image-id [IMAGE_ID] |
Amazon ami image ID. |
|
Example: ami-d05e75b8. |
|
If not set, ami-d05e75b8. |
-t [IMAGE_TYPE], --image-type [IMAGE_TYPE] |
Amazon ami image type |
|
Example: t2.nano. If |
|
not set, defaults to |
|
t2.nano. |
--region [REGION] |
Select the region: |
|
Example: us-east-1. If |
|
not set, defaults to |
|
us-east-1. |
-r |
Enable Rotating AMI |
|
hosts. |
-v |
Enable verbose logging. |
|
All cmd’s should be |
|
printed to stdout |
--name [NAME] |
Set the name of the |
|
instance in the cluster |
-i [INTERFACE], --interface [INTERFACE] |
Interface to use, |
|
default is eth0 |
-l, --log |
Enable logging of WAN |
|
IP’s traffic is routed |
|
through. |
|
Output is to /tmp/ |
По умолчанию ProxyCannon создает виртуальные экземпляры t2.nano в AWS, которые должны быть бесплатными в течение ограниченного времени с новыми учетными записями.У них очень мало ресурсов, но обычно их достаточно для осуществления большинства атак. Чтобы изменитьтип экземпляра,
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
|
|
|
C |
E |
|
|
|
|||||||
|
|
X |
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
||||||
|
- |
|
|
|
|
|
d |
|
|
- |
|
|
|
|
|
d |
|
||||||
|
F |
|
|
|
|
|
|
|
t |
|
|
F |
|
|
|
|
|
|
|
t |
|
||
|
D |
|
|
|
|
|
|
|
|
i |
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
|
|
|
|
|
|
r |
||||
P |
|
|
|
|
|
NOW! |
o |
P |
|
|
|
|
|
NOW! |
o |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
BUY |
|
|
За семью прокси-серверами 111 BUY |
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
w Click |
to |
|
|
|
|
|
|
|
|
|
|
|
to |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
m |
w Click |
|
|
|
|
|
|
|
m |
|||||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
||
|
w |
|
|
|
|
|
|
|
|
o |
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
g |
.c |
|
|
. |
|
|
|
|
g |
.c |
|
||||||
|
|
p |
|
|
|
|
|
|
|
|
|
p |
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
можноиспользоватьопцию-t.Регионпоумолчанию– us-east-1,иегоможно |
|
|
e |
|
|||||||||||||
|
|
|
df |
|
|
n |
e |
|
|
|
|
df |
|
|
n |
|
|||||||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
настроить с помощью опции --region.
ProxyCannon создаст столько экземпляров, сколько указано в num_of_instances, и, используя опцию -r, будет регулярно осуществлять их ротацию. Опция -l также полезна, чтобы отслеживать, какие публичные IP-адреса ProxyCannon использует во время выполнения, что полезно при составлении отчетов: Синей команде может понадобиться список всех IP-адресов, использованных в ходе атаки.
Чтобы утилита могла взаимодействовать с нашей учетной записью AWS и автоматически управлять экземплярами, необходимо создать ключи доступа API в консоли AWS.
Интерфейс тут довольно простой и доступен на странице учетной записи
Security Credentials.
Рис.4.13. Генерация нового ключа доступа
Идентификатор ключа доступа и секретные ключи генерируются случайнымобразомидолжныхранитьсянадежно.Послезавершениязаданияследует удалить ключи в консоли AWS.
Можно запустить ProxyCannon, используя опции -r и -l, и указать, что нам нужно,чтобы одновременно работали три экземпляра.
root@kali:~/tools# python proxyCannon.py -r -l 3
What is the AWS Access Key Id: d2hhdCBhcmUgeW91IGRvaW5n What is the AWS Secret Access Key: dW5mb3J0dW5hdGVseSB0aGlzIGlzIG5vdCB0aGUgcmVhbCBrZXku
[...]
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
|
|
|
|
C |
|
E |
|
|
|
||||||
|
|
X |
|
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
||||||
|
- |
|
|
|
|
|
d |
|
|
|
- |
|
|
|
|
|
d |
|
||||||
|
F |
|
|
|
|
|
|
|
t |
|
|
F |
|
|
|
|
|
|
|
t |
|
|||
|
D |
|
|
|
|
|
|
|
|
i |
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
|
|
|
|
|
|
r |
||||
P |
|
|
|
|
NOW! |
|
o |
P |
|
|
|
|
|
NOW! |
o |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
Глава 4.Продвинутые способы атаки с использованием метода полного... |
BUY |
|
|
|||||||||||||
|
|
|
|
to |
BUY 112 |
|
|
|
|
|
|
|||||||||||||
w Click |
|
|
|
|
|
|
|
m |
w Click |
to |
|
|
|
|
|
|
m |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
||
|
w |
|
|
|
|
|
|
|
|
|
o |
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
g |
.c |
|
|
. |
|
|
|
|
g |
.c |
|
|||||||
|
|
p |
|
|
|
|
|
|
|
|
|
|
p |
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
e |
При первом запуске ProxyCannon запросит эти значения и сохранит их в |
|
|
|
e |
|
||||||||||
|
|
|
df |
|
|
n |
|
|
|
|
|
|
|
|
df |
|
|
n |
|
|
|
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
файле ~/.boto.
root@kali:~/tools# cat ~/.boto [default]
aws_access_key_id = d2hhdCBhcmUgeW91IGRvaW5n aws_secret_access_key = dW5mb3J0dW5hdGVseSB0aGlzIGlzIG5vdCB0aGUgcmVhbCBrZXku
Как видим, они хранятся в виде незашифрованного текста, поэтому убедитесь,что файл защищен должным образом.Amazon рекомендуетчасто выполнять ротацию ключей. Вероятно, неплохо было бы создавать новые ключи для каждого задания и удалять их из AWS, как только они станут не нужны.
ProxyCannon подключится к Amazon EC2, настроит SSH-ключи и группы безопасности и запустит экземпляры виртуальных машин. Этот процесс зай мет несколько минут.
[*]Connecting to Amazon's EC2...
[*]Generating ssh keypairs...
[*]Generating Amazon Security Group...
[~] Starting 3 instances, please give about 4 minutes for them to fully boot
[====================] 100%
ProxyCannon перезапишет текущую системную конфигурацию iptables для правильной маршрутизации всего трафика через любой выбранный экземпляр.
[*]Provisioning Hosts.....
[*]Saving existing iptables state
[*]Building new iptables...
[*]Done!
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Leave this terminal open and start another to run your commands.+
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[~] Press ctrl + c to terminate the script gracefully. [...]
Как и было обещано, ProxyCannon будет периодически выполнять ротацию нашего фактического внешнего IP-адреса с использованием SSH-туннелей и путем изменения таблицы маршрутизации. Все это осуществляется автоматически в фоновом режиме, пока Burp Suite или ZAP запускает атаку методом распыления пароля.
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
|
|
|
|
C |
E |
|
|
|
|||||||
|
|
X |
|
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
||||||
|
- |
|
|
|
|
|
d |
|
|
|
- |
|
|
|
|
|
d |
|
||||||
|
F |
|
|
|
|
|
|
|
t |
|
|
F |
|
|
|
|
|
|
|
t |
|
|||
|
D |
|
|
|
|
|
|
|
|
i |
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
|
|
|
|
|
|
r |
||||
P |
|
|
|
|
|
NOW! |
|
o |
P |
|
|
|
|
|
NOW! |
o |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
BUY |
|
|
|
За семью прокси-серверами 113 BUY |
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
w Click |
to |
|
|
|
|
|
|
|
|
|
|
|
|
to |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
m |
w Click |
|
|
|
|
|
|
|
m |
|||||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
||
|
w |
|
|
|
|
|
|
|
|
|
o |
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
g |
.c |
|
|
. |
|
|
|
|
g |
.c |
|
|||||||
|
|
p |
|
|
|
|
|
|
|
|
|
|
p |
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
e |
Ниже приведен периодический вывод ProxyCannon, показывающий рота- |
|
|
e |
|
|||||||||||
|
|
|
df |
|
|
n |
|
|
|
|
|
|
|
|
df |
|
|
n |
|
|
|
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
цию IP-адресов.
[*]Rotating IPs.
[*]Replaced 107.21.177.36 with 34.207.187.254 on tun0
[*]Replaced 34.234.91.233 with 52.91.91.157 on tun1
[*]Replaced 34.202.237.230 with 34.228.167.195 on tun2
[*]Replaced 34.207.187.254 with 34.228.158.208 on tun0
[*]Replaced 52.91.91.157 with 54.198.223.114 on tun1
На консоли AWS видны запущенные экземпляры t2.nano и их публичные IP-адреса.
Рис.4.14. Созданы экземпляры AWS для маршрутизации нашего трафика
Какивпредыдущемпримере,гдеиспользовалсяTor,мыможемпротестироватьProxyCannon,повторивзапросcurl кнашемуцелевомуприложениюспомощью команды watch. Нам не нужно вставлять оболочку, подобную torsocks, потому что ProxyCannon изменяетмаршрутизациюлокальной системы,чтобы помочь нам изменить внешний IP-адрес.
root@kali:~# watch -n30 curl http://c2.spider.ml
На стороне целевого приложения, c2.spider.ml, журнал сервера показывает попытки подключения с различных IP-адресов, принадлежащих адресному пространству Amazon.
52.91.91.157 - - [13:01:16] "GET / HTTP/1.1" 200 - 52.91.91.157 - - [13:01:22] "GET / HTTP/1.1" 200 – 34.228.158.208 - - [13:01:43] "GET / HTTP/1.1" 200 - 34.228.158.208 - - [13:01:48] "GET / HTTP/1.1" 200 - 54.198.223.114 - - [13:06:34] "GET / HTTP/1.1" 200 - 54.198.223.114 - - [13:06:39] "GET / HTTP/1.1" 200 –
Следует отметить, что на Amazon или любом другом облачном провайдере существует ограничение на частоту ротации IP-адресов. Запуск экземпляров