Удаленный доступ и взлом компьютеров в сети с использованием powershell — Powerpreter and Nishang 0.3.1 – Часть 2
Это вторая статья из цикла статей о powerpreter’е.
Это вторая статья из цикла статей о powerpreter’е. Первую вы можете прочитать здесь:
Мы можем использовать Powerpreter, чтобы получить удаленный доступ и взламывать другие машины в сети. Далее я предполагаю, что у нас есть права локального администратора к машине в какой-то сети. Также наша учетная запись имеет права на доступ к другим машинам в сети (как и в большинстве корпоративных сетей).
Powerpreter содержит функционал Pivot. Он основывается на Powershell Remoting, то есть все, что можно сделать через Pivot, можно сделать и с помощью Invoke-Command. По сути Pivot просто является оболочкой для Invoke-Command.
Он может быть использован как в интерактивном, так и в не интерактивном режиме. Можно использовать имя пользователя и пароль или авторизацию текущей сессии (например, используя WCE-сгенерированную powershell сессию).
Давайте рассмотрим процедуру получения удаленного контроля (Pivot) над одной машиной.
Мы можем проделать это и для нескольких машин. Давайте посмотрим результат не интерактивного Pivot’а на нескольких машинах.
Просто и удобно, не правда ли?
Не интерактивный режим, конечно хорош, но он не сравнится с интерактивным. Давайте посмотрим, как происходит интерактивное получение доступа с помощью WCE-сгенерированного powershell (с использованием хэша пароля).
Отлично! У нас тут две сессии. Можем использовать Get-PSSession cmdlet для их отображения. Для взаимодействия с сессией используем функцию powerpreter’а Use-Session
Для взаимодействия мы можем использовать встроенную cmdlet Enter-PSSession. Возникает вопрос, зачем мы используем разные функции для выполнения похожих действий? Это случается, когда имеет место попытка вызова Enter-PSSession из удаленной сессии powerpreter’а .
Что следует помнить в предыдущем примере:
- При использовании Pivot с удаленной машины, следует использовать учетные данные в форме «имя_компьютера\имя_пользователя»
- При попытке вызова Enter-PSSession из удаленной сессии, была получена ошибка, AFAIK не поддерживается.
- Но Use-Session работает!
Почему же Use-Session работает?
function Use-Session
<
Use-Session -id
Данная команда для подключения к целевому компьютеру использует учетные данные, доступные в текущей Powershell сессии. Она создает PSSsessions. Для взаимодействия с созданной сессией спользуйте Use-Session.
.LINK
http://code.google.com/p/nishang
#>
Param ( [Parameter(Position = 0, Mandatory = $True)] $id)
while($cmd -ne «exit»)
<
$sess = Get-PSSession -Id $id
$computername = $sess.ComputerName
write-host -NoNewline «$computername> »
$cmd = read-host
$sb = [scriptblock]::Create($cmd)
Invoke-Command -ScriptBlock $sb -Session $sess
>
>
Вызов Invoke-Command поддерживается из удаленной powershell сессии. Мы используем ее с ключом –Session, чтобы сохранить ее состояние и иметь возможность использовать ее интерактивно.
Теперь давайте рассмотрим еще некоторый функционал powerpreter’а, позволяющий взламывать компьютеры, находящиеся с вами в одной сети.
Как следует из названия, мы можем использовать данную функцию для сканирования портов на других компьютерах сети.
Стоит отметить, что для сканирования портов был использован ключ –ScanPort. По умолчанию выполняется только ping, а также существует набор портов, сканируемых данной командой, но можно задать и свой набор портов.
Давайте поищем MS SQL Server в нашей сети.
Бинго! Мы нашли один.
Данная функция позволяет осуществлять взлом перебором значений таких служб, как, MSSQL, ActiveDirectory, Web или FTP на других компьютерах (по умолчанию – MSSQL). Давайте взломаем ранее найденный MSSQL Server с именем пользователя sa.
Как вы видите, мы можем использовать словарь паролей (а также IP адресов и имен пользователей) вместо использования одного пароля. Здесь есть небольшая уловка: список паролей должен начинаться со слова «password», как в нашем примере.
Почему? Давайте взглянем на код.
Param(
[Parameter(Mandatory = $true,
Position = 0,
ValueFromPipeLineByPropertyName = $true)]
[Alias(«PSComputerName»,»CN»,»MachineName»,»
IP»,»IPAddress»,»ComputerName»,»Url»,»Ftp»
,»Domain»,»DistinguishedName»)]
[string]$Identity,
[parameter(Position = 1,
ValueFromPipeLineByPropertyName = $true)]
[string]$UserName,
[parameter(Position = 2,
ValueFromPipeLineByPropertyName = $true)]
[string]$Password,
[parameter(Position = 3)]
[ValidateSet(«SQL»,»FTP»,»ActiveDirectory»,»Web»)]
[string]$Service = «SQL»
Что ж, у нас есть учетные данные для MSSQL Server, что дальше? Для того чтобы понять работу Execute-Command-MSSQL, см. предыдущую статью цикла: http://www.labofapenetrationtester.com/2012/12/command-execution-on-ms-sql-server-using-powershell.html
Функция, которая может проверить учетные данные на удаленной машине, а также открыть PSSessions, если они являются актуальными. Для более детального ознакомления см. http://www.labofapenetrationtester.com/2013/04/poshing-the-hashes.html
В powerpreter и другие скрипты, используемые в рамках Nishang, внесены некоторые изменения. Поэтому я выпустил новую версию Nishang 0.3.1. Репозиторий здесь: http://code.google.com/p/nishang/
Как всегда делитесь впечатлениями, сообщайте, если найдете ошибки и оставляйте пожелания.
Утилита Raccine не дает шифровальщикам удалять теневые копии
Xakep #263. Кредитки в опасности
Журналисты Bleeping Computer обратили внимание на интересную утилиту, недавно созданную ИБ-экспертом Флорианом Ротом (Florian Roth). Разработка получила название Raccine (Ransomware vaccine, то есть «Вакцина от вымогателей») и она автоматически ликвидирует любые процессы, пытающиеся удалить теневые копии в Windows с помощью vssadmin.exe.
Дело в том, что операторы шифровальщиков не хотят, чтобы их жертвы использовали эту функцию ОС для бесплатного восстановления своих файлов, поэтому практически любая вымогательская малварь первым делом удаляет все теневые копии с зараженной машины. Так, один из способов их удаления, это использование команды vssadmin.exe: vssadmin delete shadows /all /quiet . Другой способ — использование команды resize, чтобы задать объем хранилища, который Windows выделяет для теневых копий. Эта команда также сотрет существующие снапшоты: vssadmin.exe resize shadowstorage /for=D: /on=D: /maxsize=401MB .
«Программы-вымогатели часто удаляют все теневые копии, используя vssadmin. Но что если бы мы могли просто перехватить этот запрос и остановить вызов процесса? Давайте попробуем создать простую вакцину», — пишет Рот на GitHub-странице проекта.
Raccine работает просто: регистрирует файл raccine.exe как дебаггер для vssadmin.exe через реестр Windows и ключ Image File Execution Options Windows. После регистрации при каждом запуске vssadmin.exe также запускается и Raccine, которая проверяет, не пытается ли vssadmin удалить теневые копии. Если утилита обнаруживает, что процесс использует vssadmin delete или vssadmin resize shadowstorage, она автоматически завершает его, тем самым мешая работе шифровальщика.
Журналисты Bleeping Computer отмечают, что некоторые современные вымогатели удаляют теневые копии с помощью других команд, включая:
Get-WmiObject Win32_Shadowcopy | ForEach-Object <$_.Delete();>
WMIC.exe shadowcopy delete /nointeractive
Увы, в таких случаях Raccine не сможет ничего поделать, но Рот обещает со временем расширить функциональность утилиты, чтобы она могла распознавать и такие способы. Также в будущем Рот планирует добавить некоторые программы в исключения Raccine, чтобы они не прекращали работу с сообщением об ошибке.