SCROLL
Среднее время на прочтение: 3 мин.

Удаленное выполнение команд в системе Windows из консоли Linux. Установка из исходников Winexe 1.1 + Samba 4.5 на Debian 9 Stretch.

Задался недавно вопросом, как можно из консоли Linux, подключится к удаленной машине с ОС Windows на борту и выполнить на ней какую либо команду (прим. «ipconfig») или запустить за ранее написанный скрипт (*.bat, *.ps1).

Не рекомендую пользоваться данной статьей, ввиду того что предполагается использование протокола SMB 1.0 (Server Message Block), а он является небезопасным/уязвимым, и не рекомендуется использовать ее на устройствах в локальной сети.

SMB 1.0 (Server Message Block) по умолчанию отключен в последних версиях Windows 11 и 10, а также в Windows Server 2019/2022.

В ходе поиска решения данного вопроса, был найден инструмент Winexe, который по сути является аналогом psexec под Windows. Winexe работает в связке с samba, поэтому последняя должна присутствовать в системе.

Из замеченных неудобств работы с Winexe, хочу отметить что для корректного отображения «кириллицы», необходимо конвертировать вывод в UTF-8 из cp866/cp1251. Так же в случае запуска на удаленной машине «cmd», «powershell» не работают клавиши курсора, «backspace» и возможен задвоенный ввод символов.

Установка будет производится на Debian 9 Stretch. В ходе установки будет использоваться Fork пакета Winexe 1.1 (https://sourceforge.net/u/mstowe/winexe/ci/v0.2/tree/), а так же версия Samba 4.5.16 из стандартные репозиториев Debian.

Подготовка системы

Обновляем систему до актуального состояния:

apt-get update && apt-get upgrade -y

Устанавливаем необходимые пакеты для сборки и работы winexe:

apt-get install gcc gcc-mingw-w64 make git python-dev pkg-config libgnutls28-dev libacl1-dev libldap2-dev samba-dev libsmbclient-dev -y

Для корректной сборки winexe делаем необходимые симлинки:

ln -s /usr/lib/x86_64-linux-gnu/samba/libcli-ldap.so.0 /usr/lib/x86_64-linux-gnu/samba/libcli-ldap-samba4.so.0 
ln -s /usr/lib/x86_64-linux-gnu/samba/libdcerpc-samba.so.0 /usr/lib/x86_64-linux-gnu/samba/libdcerpc-samba-samba4.so.0 
ln -s /usr/lib/x86_64-linux-gnu/samba/libsmbclient-raw.so.0 /usr/lib/x86_64-linux-gnu/samba/libsmbclient-raw-samba4.so.0
ln -s /usr/lib/x86_64-linux-gnu/samba/libsamba-debug.so.0 /usr/lib/x86_64-linux-gnu/samba/libsamba-debug-samba4.so.0

Установка Winexe

Скачиваем исходники winexe, выполняем компиляцию и установку:

cd /opt
git clone git://git.code.sf.net/u/mstowe/winexe u-mstowe-winexe
cd u-mstowe-winexe/source
./waf configure build

Копируем скомпилированный winexe в /usr/bin:

cp build/winexe /usr/bin/

Использование Winexe

Синтаксис использования winexe:

winexe -U [Domain/]User%Password //host command

Для примера выполним на удаленной машине команду ipconfig:

winexe -U Администратор%Aa1234567 //192.168.1.2 'ipconfig'

 ⣠®©ª  ¯௢®ª®«  IP ¤«ퟗindows


¤ ¯⦠ Ethernet Ethernet:

DNS-⤤䨪®¤ª«痢¨힮 . . . . : 
®ª «쮫© IPv6- ¤ড ª  «  . . . : fe80::de2:f63f:7ae5:518d%6
IPv4- ¤ড. . . . . . . . . . . . : 192.168.1.2
 ᪠ ¯®¤ᦢ¨ . . . . . . . . . . : 255.255.255.0
᭮¢®© 謮§. . . . . . . . . : 192.168.1.1

Как я и писал в начале, что в случае вывода с локалью отличной от вашей, мы получим кракозябры. В примере выше, вывод был получен в кодировке cp866, а текущая локаль моей системы UTF-8.

Исправить это поможет пакет luit, рассмотрим его установку и применение ниже.

Установка luit

Скачиваем исходники luit, распаковываем архив:

wget https://invisible-island.net/datafiles/release/luit.tar.gz
tar -zxvf luit.tar.gz 
cd luit-20190106/

Выполняем сборку и установку пакета luit:

./configure --prefix= --datadir=/usr/share/luid
make
make install

Теперь перед запуском winexe, указываем перекодировку из cp866 в текущую:

luit -encoding cp866 winexe -U Администратор //192.168.1.2 'ipconfig'

Настройка протокола IP для Windows


Адаптер Ethernet Ethernet:

DNS-суффикс подключения . . . . . : 
Локальный IPv6-адрес канала . . . : fe80::de2:f63f:7ae5:518d%6
IPv4-адрес. . . . . . . . . . . . : 192.168.1.2
Маска подсети . . . . . . . . . . : 255.255.255.0
Основной шлюз. . . . . . . . . : 192.168.1.1

Дополнительно

Работоспособность пакета winexe проверил на системах Windows 7, 10, 2012R2, 2019. В случае с Windows 2012R2, 2019 пришлось на них установить компонент SMB 1.0/CIFS File Sharing Support

 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ

Обсуждение

2 комментариев