Forwarded from Хатка бобра
В этом посте кратко познакомимся с инструментом atexec-pro (https://github.com/Ridter/atexec-pro). Позволяет выполнять команды (в том числе powershell), загружать-скачивать файлы и выполнять .NET в памяти. Для последних трех ограничение в размере - 1 МБ.
Atexec-pro под капотом использует сервис TSCH против привычного ATSVC и работает через TCP (т.е. пайпы не используем). На мой взгляд примечательно то, что в своей работе он файловую систему практически не трогает (кроме создания самой таски), но при этом позволяет получать нам вывод. Обычно подобные инструменты для этих целей используют промежуточный файл на диске, который затем удаляют (atexec, smbexec, wmiexec). AtExec-pro же для хранения вывода команды использует описание задачи :)
Давайте разберем принцип выполнения отдельной произвольной команды в этом инструменте:
1) Формируются рандомное имя задачи (состоит из 8 символов [A-Za-z]) и рандомный ключ
2) Команда, которую мы хотим исполнить шифруется этим ключом (AES) и в дальнейшем будет записана в описание задачи, думаю этим и вызван максимальный размер.
3) Далее берется шаблон PS скрипта, в нём мы указываем ключ из шага 1, который предварительно конвертировали в base64, и указываем имя задачи. В случае обычной команды это будет https://github.com/Ridter/atexec-pro/blob/main/libs/powershells/cmd.ps1. Сам скрипт по имени задачи дергает описание, расшифровывает его, выполняет команду и далее обновляет описание с выводом этой команды.
4) Далее полученный PS скрипт переводим в base64. Этот скрипт будем выполнять в самой задаче при выполнении через
5) Создаём задачу и запускаем её.
6) Далее в цикле дергаем задачу, ждём её остановки и забираем результат.
7) Удаляем задачу.
Что в итоге имеем на хосте?
Событие 4698 на создание задачи (будет в Action команда powershell.exe -NonInteractive -enc <...>)
События 4688 на запуск процесса
Событие 4104 на выполнение скрипта powershell
Событие 4702 на обновление задачи после выполнения команды (запись вывода)
Событие 4699 на удаление задачи
Наибольшую ценность в плане детекта имеют события 4698 и 4104.
4698 содержит описание созданной задачи, в ней мы можем зацепиться за фиксированное для atexec и atexec-pro строку
4104 в данном случае будет содержать переведенную из Base64 строку (то есть не обфусцированную), именно в ней можно увидеть ранее рассмотренный выше шаблон с заполненными полями. 4104 включается через Script Block Logging, если явно он не включен, то будет логироваться через AMSI (будет логировать только подозрительные на своё усмотрение в журнал Powershell/Operational). На основе этого события можно надергать ключевых элементов для детекта из поля script_block_text.
Если у вас используются RPC-фильтры, то действуем аналогично SCShell (https://t.me/beaverdreamer/169), в данном случае у сервиса UUID 86D35949-83C9-4044-B424-DB363231FD0C.
#rpc #atexec #schtasks
Atexec-pro под капотом использует сервис TSCH против привычного ATSVC и работает через TCP (т.е. пайпы не используем). На мой взгляд примечательно то, что в своей работе он файловую систему практически не трогает (кроме создания самой таски), но при этом позволяет получать нам вывод. Обычно подобные инструменты для этих целей используют промежуточный файл на диске, который затем удаляют (atexec, smbexec, wmiexec). AtExec-pro же для хранения вывода команды использует описание задачи :)
Давайте разберем принцип выполнения отдельной произвольной команды в этом инструменте:
1) Формируются рандомное имя задачи (состоит из 8 символов [A-Za-z]) и рандомный ключ
2) Команда, которую мы хотим исполнить шифруется этим ключом (AES) и в дальнейшем будет записана в описание задачи, думаю этим и вызван максимальный размер.
3) Далее берется шаблон PS скрипта, в нём мы указываем ключ из шага 1, который предварительно конвертировали в base64, и указываем имя задачи. В случае обычной команды это будет https://github.com/Ridter/atexec-pro/blob/main/libs/powershells/cmd.ps1. Сам скрипт по имени задачи дергает описание, расшифровывает его, выполняет команду и далее обновляет описание с выводом этой команды.
4) Далее полученный PS скрипт переводим в base64. Этот скрипт будем выполнять в самой задаче при выполнении через
powershell -enc.5) Создаём задачу и запускаем её.
6) Далее в цикле дергаем задачу, ждём её остановки и забираем результат.
7) Удаляем задачу.
Что в итоге имеем на хосте?
Событие 4698 на создание задачи (будет в Action команда powershell.exe -NonInteractive -enc <...>)
События 4688 на запуск процесса
Событие 4104 на выполнение скрипта powershell
Событие 4702 на обновление задачи после выполнения команды (запись вывода)
Событие 4699 на удаление задачи
Наибольшую ценность в плане детекта имеют события 4698 и 4104.
4698 содержит описание созданной задачи, в ней мы можем зацепиться за фиксированное для atexec и atexec-pro строку
<StartBoundary>2015-07-15T20:35:13.2757294</StartBoundary> в поле TaskContent.4104 в данном случае будет содержать переведенную из Base64 строку (то есть не обфусцированную), именно в ней можно увидеть ранее рассмотренный выше шаблон с заполненными полями. 4104 включается через Script Block Logging, если явно он не включен, то будет логироваться через AMSI (будет логировать только подозрительные на своё усмотрение в журнал Powershell/Operational). На основе этого события можно надергать ключевых элементов для детекта из поля script_block_text.
Если у вас используются RPC-фильтры, то действуем аналогично SCShell (https://t.me/beaverdreamer/169), в данном случае у сервиса UUID 86D35949-83C9-4044-B424-DB363231FD0C.
#rpc #atexec #schtasks
GitHub
GitHub - Ridter/atexec-pro: Fileless atexec, no more need for port 445
Fileless atexec, no more need for port 445. Contribute to Ridter/atexec-pro development by creating an account on GitHub.
Forwarded from Заметки Слонсера (Slonser)
HTML Universal Identifier
На VK Security Confab анонсировал свою тулзу для идентификации Html
Вот собственно и она:
https://github.com/Slonser/hui
Что можно делать сейчас:
- Идентифицировать flattening
- Находить неправильный mutation payloads
- Смотреть на разрешенные атрибуты и теги
- Идентифицировать библиотеку которая работает с html на бекенде
Нужно ещё много доработать но можно пользоваться уже сейчас
P.S. массово прописываем
На VK Security Confab анонсировал свою тулзу для идентификации Html
Вот собственно и она:
https://github.com/Slonser/hui
Что можно делать сейчас:
- Идентифицировать flattening
- Находить неправильный mutation payloads
- Смотреть на разрешенные атрибуты и теги
- Идентифицировать библиотеку которая работает с html на бекенде
Нужно ещё много доработать но можно пользоваться уже сейчас
P.S. массово прописываем
python -m pip install hui
GitHub
GitHub - Slonser/hui: HTML Universal Identifier
HTML Universal Identifier. Contribute to Slonser/hui development by creating an account on GitHub.
Наш Discord сервер
👆🏻Тут можно пообщаться и найти много полезной информации 🦈
👆🏻Тут можно пообщаться и найти много полезной информации 🦈
Forwarded from Proxy Bar
CVE-2024-38819
*
Spring Boot 3.3.4, based on Spring Framework 6.1.13 path traversal exploit
*
POC + docker
*
Spring Boot 3.3.4, based on Spring Framework 6.1.13 path traversal exploit
*
POC + docker
Наш Discord сервер
👆🏻Тут можно пообщаться и найти много полезной информации 🦈
👆🏻Тут можно пообщаться и найти много полезной информации 🦈
Forwarded from Ralf Hacker Channel (Ralf Hacker)
Forwarded from BlackFan
Сейчас появилась целая куча всевозможных облачных и локальных решений, совместимых с S3.
И помимо самого S3 API, в них могут быть реализованы и какие-нибудь свои фишки, которые важно знать.
Например, MinIO поддерживает листинг содержимого ZIP архивов и получение файлов из них.
Для использования данной функциональности необходимо чтобы объект в бакете имел расширение zip (проверяется по подстроке ".zip/") и HTTP запрос содержал дополнительный заголовок
Листинг содержимого архива:
Получение файла из архива:
В специфичных условиях подобное поведение может быть использовано для XSS если:
• Атакующий контролирует содержимое и имя объекта, но не контролирует Content-Type (в таки случаях также нужно проверять параметр response-content-type)
• Запросы к объектам кэшируются
Закэшировав XSS в ответе используя
Еще одна интересная функциональность в MinIO - подпись на события в бакете.
В случае, если бакет настроен небезопасно и для него разрешен action
Пример запроса (Полный список событий):
И помимо самого S3 API, в них могут быть реализованы и какие-нибудь свои фишки, которые важно знать.
Например, MinIO поддерживает листинг содержимого ZIP архивов и получение файлов из них.
Для использования данной функциональности необходимо чтобы объект в бакете имел расширение zip (проверяется по подстроке ".zip/") и HTTP запрос содержал дополнительный заголовок
x-minio-extract.Листинг содержимого архива:
GET /bucket/?prefix=archive.zip/&list-type=2 HTTP/1.1
Host: 127.0.0.1:9000
x-minio-extract: true
Получение файла из архива:
GET /bucket/archive.zip/test.html HTTP/1.1
Host: 127.0.0.1:9000
x-minio-extract: true
В специфичных условиях подобное поведение может быть использовано для XSS если:
• Атакующий контролирует содержимое и имя объекта, но не контролирует Content-Type (в таки случаях также нужно проверять параметр response-content-type)
• Запросы к объектам кэшируются
Закэшировав XSS в ответе используя
x-minio-extract, её можно будет использовать против других клиентов, так как этот заголовок не будет использоваться в ключе кэша.Еще одна интересная функциональность в MinIO - подпись на события в бакете.
В случае, если бакет настроен небезопасно и для него разрешен action
s3:ListenBucketNotification, это позволяет в режиме реального времени получать информацию о внутреннем адресе MinIO, изменениях объектов или запросах пользователей к объектам, включая IP адрес и User-Agent.Пример запроса (Полный список событий):
curl "http://127.0.0.1:9000/bucket/?events=s3:ObjectAccessed:*&ping=1"
Fsecurity | HH pinned «Ролик на канале 👾 https://youtu.be/1puFwvSOM2w Давайте накидайте комментарии, закидайте меня 🍅😁»
Наш Discord сервер
👆🏻Тут можно пообщаться и найти много полезной информации 🦈
👆🏻Тут можно пообщаться и найти много полезной информации 🦈
Доп. Информация:
Коллекция исполняемых файлов Windows для использования в тестах на проникновение./usr/share/windows-binaries/
Ссылка:
https://www.kali.org/tools/windows-binaries/
Инъекция по-черному. Обходим антивирусы при помощи Shellter
Ссылка:
https://xakep.ru/2015/11/30/shellter/
(Не актуален, можно посмотреть)
Небольшие и очень портативные тесты обнаружения, основанные на ATT&CK компании MITRE.
Ссылка:
https://github.com/redcanaryco/atomic-red-team
Скрипт Cobalt Strike для интеграции полезных нагрузок ScareCrow (EDR/AV-уклонение)
Ссылка:
https://github.com/GeorgePatsias/ScareCrow-CobaltStrike
(Не актуален, только посмотреть код)
Различные ресурсы для улучшения функциональности Cobalt Strike и его способности избегать обнаружения антивирусом / EDR
Ссылка:
https://github.com/RedefiningReality/Cobalt-Strike