
TrustedSec Attack Platform — это надёжный метод для дропперов в инфраструктуре, позволяющий обеспечить установленные соединения с организацией.
TAP - конструктор удалённых платформ для тестирования на проникновение.
Автор: David Kennedy @HackingDave
Компания: TrustedSec (https://www.trustedsec.com)
Страница проекта: https://github.com/trustedsec/tap
Проект TrustedSec - Copyright 2020
Поддерживаемые операционные системы: Linux (предпочтительно Ubuntu Linux)
TAP — это конструктор удалённых платформ для тестирования на проникновение. Для людей в индустрии безопасности поездки часто становятся обузой и добавляют огромные расходы для заказчика. TAP был разработан, чтобы сделать развёртывание таких машин предельно простым и создать самовосстанавливающуюся и стабильную платформу для развёртывания удалённых платформ тестирования на проникновение. По сути, концепция проста: вы предварительно настраиваете новую машину и запускаете установочный файл TAP. Он установит в Linux службу, настроенную нужным вам образом. Эта служба установит обратный SSH-туннель к машине, доступной в Интернете. После этого вы можете обращаться к машине локально с сервера, к которому она подключается. TAP автоматически определяет, когда SSH-соединение устарело, и автоматически пересоздаёт его для вас.
У него также есть ряд других возможностей: например, если вы потеряете SSH, он подключится к текстовому файлу и выполнит за вас команды. Он также непрерывно обновляет сам себя, а также гарантирует, что у вас установлены последние пакеты для Ubuntu Linux (если это ваша ОС).
python setup.py - This will install TAP.
Для удаления TAP:
python setup.py - This will uninstall TAP.
При настройке TAP у вас может возникнуть вопрос об удалённом SSH-сервере (REMOTE ssh server) — это внешняя машина с открытым SSH. Это ваша машина, к которой должен подключаться TAP, то есть машина в Интернете, ожидающая подключений. Не рекомендуется использовать root, так как это ошибка с точки зрения безопасности. Используйте обычного пользователя для установки SSH-туннеля. Пока поддерживается только пароль, хотя позже мы добавим поддержку SSH-ключей. Пароль хранится с использованием AES, однако хранение ключа шифрования в настоящее время небезопасно. Тот, кто получит доступ к машине, сможет при достаточном количестве времени и настойчивости захватить ключ шифрования и расшифровать пароль в конфигурации. Мы исправим это в одном из следующих релизов.
Второй вопрос — ЛОКАЛЬНЫЙ порт (LOCAL port), который будет на УДАЛЁННОЙ машине (REMOTE box). Когда TAP подключается обратно через обратный SSH, он соединяется с удалённой машиной и открывает локальный порт на ней. Когда вы подключаетесь по SSH к удалённой машине в Интернете, вам нужно выполнить ssh user@localhost -p . Это порт, который TAP привязывает на удалённой системе, чтобы вы могли получить к ней доступ.
После настройки TAP использует путь по умолчанию для получения обновлений; вы можете изменить его на свой собственный путь обновления. Я намеренно не размещал его на GitHub, чтобы вы могли указать, что вам нужно для одобренных обновлений.
Затем вы можете отправлять команды на TAP; он проверяет наличие новых инструкций каждые две минуты. Вам нужно указать путь, например:
https://websiteurl/commands.txt
TAP будет проверять этот путь каждые две минуты в поисках новых команд. Обратите внимание, что следующая часть ВАЖНА. Первая строка текстового файла ДОЛЖНА содержать «EXECUTE COMMAND» (без двойных кавычек). Когда TAP обнаружит это, он проверит, выполнялась ли команда ранее, и если нет, выполнит команды построчно. Это полезно, когда вы теряете соединение с TAP и вам нужно вызвать команды для его восстановления.
После запуска установки файлы будут размещены в /usr/share/tap. TAP автоматически запустится, если вы укажете это, и будет автоматически проверять обновления, такие как обновления Debian, обновления TAP и т.д.
Вам также следует внести в белый список серверы обновлений, если вы используете Debian, а также вашу удалённую машину, к которой подключается TAP.
Вот и всё!
Если вы решите не использовать SSH-ключи, а использовать пароли, конфигурация хранит пароль в формате AES (требуется python-pycrypto). Если вам нужно обновить пароль, перейдите в каталог scripts, где есть скрипт update-password для обновления зашифрованного пароля и создания нового динамического ключа шифрования.
Ещё одна интересная возможность — небольшой инструмент, который мы написали для создания своего рода SSH-VPN. Он отлично работает, если у вас нет больших объёмов трафика, таких как сканирование портов, сканирование уязвимостей и т.п. Ниже представлен простой инструмент, который оборачивает sshuttle для создания VPN. Просто сохраните приведённый ниже файл как Python-файл и запустите его, используя указанные команды. Вы подключитесь по VPN к удалённой сети, где развёрнут TAP. Вы можете делать всё, что угодно, если только это не очень большой объём трафика (в целом стабильно).
Есть два способа организации VPN: первый — через метод, описанный ниже, с использованием SSHuttle. Также можно использовать прозрачный VPN, созданный Джеффом Уолтоном (Geoff Walton) из TrustedSec, который находится в папке scripts. Он создаст интерфейс TAP и подключит вас к системе через SSH. С SSHuttle такие вещи, как сканирование портов, работают некорректно; настоятельно рекомендую использовать скрипт ssh-tunnel.
SSHUTTLE — это инструмент, который позволяет использовать SSH в качестве метода для прозрачного прокси-VPN. Вы можете использовать этот скрипт для связи с удалённым устройством TAP и туннелирования вашей системы через прокси для получения полноценного VPN. Это позволяет проводить тестирование через ваше собственное устройство, а не через само устройство TAP.
import subprocess
import time
if not os.path.isfile("/usr/sbin/sshuttle"):
print "[!] SSHUTTLE does not appear to be installed, installing now"
subprocess.Popen("apt-get install sshuttle -f", shell=True).wait()
print("Welcome to the sshuttle wrapper for TAP.")
print("Enter the address for the SSH server, i.e. box.sshserver.com")
reverse1 = input("Enter SSH server (REMOTE server): ")
reverse2 = input("Enter the remote SSH port for %s:: " % (reverse1))
reverse3 = input("Enter the port to tunnel for the local TAP machine (i.e. TAP box localhost port): ")
reverse4 = input("Enter the username to connect to REMOTE system: ")
print)"Triggering tunnel now...")
time.sleep(2)
subprocess.Popen("ssh -f %s@%s -L %s:localhost:%s -N" % (reverse4, reverse1, reverse3, reverse2), shell=True).wait()
subprocess.Popen("sshuttle --dns -vr %s@localhost:%s 0/0" % (reverse4,reverse3), shell=True).wait()
TAP использует proxychains4 (proxychains-ng) для туннелирования всего вашего HTTP/HTTPS-трафика через SSH к вашей удалённой машине. Это помогает с фильтрацией контента/исходящего трафика, поэтому вы можете быть уверены, что у вас всегда всё актуально. Чтобы использовать proxychains, просто введите proxychains4 <command_you_want_to_use> — обновления TAP автоматически используют это.
В процессе установки TAP спросит, хотите ли вы вести журнал всех команд, выполняемых в системе. Если да, все команды, вводимые в системе, будут записываться в журнал, чтобы вы могли предоставить его заказчику или сохранить записи о том, что происходило на устройствах. Все журналы сохраняются в /var/log/messages.
Ubuntu 18.04 LTS (должен нормально работать на Debian и других версиях Ubuntu)