Вариант управления компьютером на Windows из-под консоли Linux
Бывают попадаются задачи, когда надо что-то сделать из-под Linux-а на машине, на которой установлен Windows, но не через RDP или VNC. Или например, как в моём случае, основная машина на Linux и необходимо управлять группой серверов. И для простых задач, например простого запроса типа dsquery group -name «Группа» | dsget group -members | dsget user , который выдаст полный список членов группы в Active Directory со всеми полями — не запускать же ради такого сеанс RDP.
Простого и удобного инструментария я, если честно, не нашёл. За исключением двух утилит: wmic и winexe, которые входят в комплекты Zenoss и OpenVAS. Вернее входили в Zenoss. Не суть, отдельно их я не нашёл, поэтому далее предлагаю свой вариант, большей частью для конкретного дистрибутива (Xubuntu 13.04), но при должной сноровке — всё можно сделать и в любом другом.
Итак, начнём:
Далее либо вручную либо с помощью patch -p0 -i patchfile применяем изменения из https://gist.github.com/raw/843062/5bb87c4fa13688f65ca8b1e54fc42676aee42e5a/fix_winexe_service.diff.
Потом:
После чего можно уже делать:
или Первая команда winexe позволяет запускать любые консольные команды через RPC на Windows-машине, вторая позволяет делать WMI-запросы, что вообщем-то даёт ещё больше возможностей (вот справочник по WQL, это вариант SQL for WMI — http://msdn.microsoft.com/en-us/library/windows/desktop/aa394606%28v=vs.85%29.aspx).
Однако есть проблема с выводом консоли winexe от удалённой машины, поскольку Microsoft любит и UTF-16, и CP1251, и CP866 разом. А местами и вовсе UCS-2. Точнее, в моём случае, вывод был в старой доброй CP866. Проблема решается очень просто: И на выводе затем мы имеем:
Однако, опять таки в моём случае, luit 1.1 категорически не хотел видеть charmaps для cp866 и выдавал Warning: couldn’t find charset data for locale XXXX; using ISO 8859-1 (похоже на https://bugs.launchpad.net/ubuntu/+source/x11-utils/+bug/280449, фикс есть, пакета нет). Я решил для себя, что проще скачать исходники сильно свежего luit-а — http://invisible-island.net/luit. Увидеть его в составе x11-utils, где обычно он и бывает, вряд ли будет возможно. Далее:Возможно не будет каких-то зависимостей, всё решаемо. У меня всё пролетело быстро.
Свежескомпилированный luit 2.0 прекрасно переконвертирует на лету из 866 в UTF-8, т.е. в целом моя задача выполнена.
В целом руководствовался тем, что конкретная рабочая машина, настроенная один раз будет управлять любой дефолтной Windows-машиной, на которой запущен RPC и есть права.
Надеюсь на критику, комментарии и предложения.
Источник
Управление Windows компьютерами из консоли Linux
Здесь рассматривалась задача управления компьютером на Windows из Linux. Решалась с помощью winexe.
Подобная задача удаленной установки софта, проверки состояния, дистанционного выключения/перезагрузки большой группы Windows компьютеров (учебные классы) ниже решается с помощью freeSSHd — ssh-сервера для Windows.
На сайте лежит только последняя версия freeSSHd — 1.3.1. У меня она работает неустойчиво (иногда падает сервис). Предыдущая версия — 1.2.4 — работает прекрасно от XP до Win8.1, хотя и есть небольшой эксплоит — но вроде ничего кроме, как завалить сервис FreeSSHDService не получается, поэтому можно закрыть на это глаза. На всякий случай положил эту версию здесь (размер — 782456)
Запускаем установщик, в процессе меняем путь установки («C:\Program Files (x86)\FreeSSHD») на C:\bin\FreeSSHD — так проще его найти на системах с разной архитектурой и конфиг будет везде одинаковый. (C:\bin надо предварительно создать.)
Дальше все по умолчанию — в конце запускается сервис FreeSSHDService. Его можно настроить, щелкнув значок в трее, но проще скопировать готовые настройки в файл настроек C:\bin\FreeSSHD\FreeSSHDService.ini и рестартить сервис.
Теперь надо дооформить объявленного юзера admin — создать файл C:\bin\FreeSSHD\admin и записать туда публичный ключ.
Либо используем уже имеющийся id_dsa.pub, либо в консоли Linux набираем
и получаем пару ключей — id_dsa и id_dsa.pub
На Windows копируем id_dsa.pub в каталог C:\bin\FreeSSHD и переименовываем в C:\bin\FreeSSHD\admin
Рестартим сервис FreeSSHDService:
На Linux проверяем подключение (листинг корня C:\):
Если хост отверг подключение (на win7-win8 вероятно), настраиваем Брандмауэр в «Центре управления сетями . »:
Брандмауэр Windows -> устранение неполадок в сети -> входящие подключения -> что-то другое -> обзор -> C:\bin\FreeSSHD\FreeSSHDService.exe
Если все получилось, копируем каталог C:\bin\FreeSSHD\ на все прочие компы — тогда во время установки FreeSSHD задаст гораздо меньше вопросов и запустится уже настроенный. Можно, конечно, это все и настройку Брандмауэра реализовать через Group Policy, но я этим не заморачивался — все компы клонировались из одного удачного образа.
Теперь на любом компе можно выполнить любую (почти) команду.
Например, перезагрузка:
Установка 1с (тихая):
Поскольку доступ консольный, то при попытке запуска программы с GUI надо использовать запуск из нового окна — «start ». Хотя тихая установка 1C и не требует GUI.
Когда компьютеров много, запуск команд по очереди неэффективен, надо форкать сессии.
Демо-програмка на Python, которая опрашивает компы в диапазоне 192.168.0.210-192.168.0.220 и записывает их имена в лог /tmp/rexec.log. Не ответившие помечаются как NA, а зависшие сессии — ?T:
(Исходная программа была CGI-скриптом, отсюда такой минимализм вывода)
Сложные и длинные команды лучше оформлять в виде пакетного файла и размещать в доступном сетевом пути. На Samba ресурсе надо дать файлу права на выполнение и оформить концы строк в стиле Windows.
Источник
Удаленный доступ к системам Windows из Linux
Эта статья содержит набор методов для подключения к удаленной системе 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 в случае подключение к удаленному (графическому) рабочему столу.
Более подробная информация об этом включена в обзорную таблицу ниже.
Обзорная таблица
В следующей таблице приводится сводка всех методов удаленного доступа, описанных в этой статье.
Вы можете увидеть, какой тип удаленного выполнения возможен с использованием каждого метода, а также подробную информацию о том, какие сетевые порты используются во время соединения.
Источник
Linux/BSD Проще не бывает!
Знакомство с winexe или как рулить виндой из по Linux
Недавно совершенно случайно узнал о чудесной проге под названием winexe. Прелесть программы в том что она позволяет рулить виндовым сервером удаленно прямо из Linux/UNIX shell (проще говоря, линуховой консоли). Короче, наткнувшись гдето в инете на подобное описание сразу захотелось покрутить. Но проблема номер раз — в репозитариях моего горячо любимого Debian программы нету 🙁 Ну чтож, в опенсорс прелесть в том что этот самый сорс можно найти и скомпились, коли руки ростут одтуда одкуда надо 😀 Но честно говоря, проверять собственную пряморукость не пришлось, так как в гугле довольно быстро нашелся готовый deb пакет (правда под Ubuntu) которые вмиг установился командой
# dpkg -i _path_to_deb_
updated: Подсказка коллеги — есть репозитарий под разные дистры по адресу
$ winexe -U DOMAIN / black // server «cmd.exe»
Password for [ DOMAIN\black ] :
Microsoft Windows [ ������ 5.2.3790 ]
( � ) ��௮����� ����������, 1985 — 2003 .
C:\WINDOWS\system32 > ipconfig
ipconfig
DNS-������� ����� ����������� . . :
IP-����� . . . . . . . . . . . . : 10.0.100.3
����� ������� . . . . . . . . . . : 255.255.255.0
�������� ���� . . . . . . . . . . : 10.0.100.1
C:\WINDOWS\system32 > exit
exit
black@black:
Есть проблема с кодировкой, так как у меня локаль UTF8, а выхлоп от виндосервака возвращается в CP1251, но в общем видим как оно работает 🙂
Использование программы — это уже отдельный разговор. Тут все зависит от уровня знаний виндового cmd и полета фантазий админа.
К примеру у меня на предприятии 2 сервера где народ по RDP ходит в 1С, бывает там подвисают сессии или некорректно отрабатывает подключение локальных принтеров и приходится сбрасывать сессию для того чтобы дать возможность пользователю перезайти. Раньше для этого приходилось заходить на сервер и килять мышкой из Диспетчера задач сессию определенного пользователя. Теперь же я эту процедуру упростил до выполнения одной простой команды из линуксовой консоли:
/ work / scripts$ . / rdp_kill.sh black
srv1 — Для пользователя black номер сессии — 95
srv1 — Выполняем команду reset session 95
black @ black:
А под капотом у этого скриптика написано вот такое:
/ work / scripts$ cat rdp_kill.sh
#!/bin/bash
SERVERS = «srv1 srv2»
if [ -n «$1» ] ; then
for SERVER in $SERVERS
do
SESSION_ID = ` winexe -U DOMAIN / black % _my_domain_password_ // $SERVER «query session $1» 2 >/ dev / null | grep $1 | awk ‘
if [ [ $SESSION_ID = [ 0 — 9 ] * ] ] ; then
echo » $SERVER — Для пользователя $1 номер сессии — $SESSION_ID »
echo » $SERVER — Выполняем команду reset session $SESSION_ID »
winexe -U DOMAIN / black % _my_domain_password_ // $SERVER «reset session $SESSION_ID » && echo OK
break
fi
done
else
echo «Задайте хотябы одного пользователя! Например $0 rdp_user_1»
fi
black @ black:
Как вы понимаете, данная прога дает вам возможность рулить в винде всем тем что можно настроить через штатный cmd, а это довольно много. Тут и системные настройки, и сервисы и службы и процессы и тд и тп.
Както мне на семерке надо было полностью застопить firewall … удалось такой командой с линуксовой машины:
Но это уже отдельная история …. но в целом прога очень полезная — поэтому рекомендую 😉
Источник
Linux winexe windows 10
Run commands on Windows system remotely using Winexe:
Winexe is a GNU/Linux-based application that allows users to execute commands remotely on WindowsNT/2000/XP/2003/Vista/7/8 systems. It installs a service on the remote system, executes the command, and uninstalls the service. Winexe allows execution of most of the windows shell commands.
How to install:
You can download the source package from here [Current version is winexe-1.00.tar.gz]
- tar -xvf winexe-1.00.tar.gz
- cd winexe-1.00/source4/
- ./autogen.sh
- ./configure
- make basics bin/winexe
- make “CPP=gcc -E -ffreestanding” basics bin/winexe (For X64 bit)
this will create a [ winexe ] binary file in the bin folder. You can use that binary to execute the windows commands from Linux.
or else there is some compiled version of the binary itself available for download. You can download and use it from here.
How to use it:
- ./winexe -U [Domain/]User%Password //host command
Examples:
- ./winexe -U HOME/Administrator%Pass123 //192.168.0.1 “netstat -a”
- ./winexe -U HOME/Administrator%Pass123 //192.168.0.1 “ipconfig -all”
- /winexe -U HOME/Administrator%Pass123 //192.168.0.1 “ping localhost”
To launch a windows shell from inside your Linux box. Using this below command,
/winexe -U HOME/Administrator%Pass123 //192.168.0.1 “cmd.exe”
Winexe Binarycd winexe-1.00/source4/
SanerNow Endpoint Management
With SanerNow Endpoint Management you can run commands and scripts remotely keeping your workforce fully secure. Gain complete visibility and control with SanerNow.
Источник