先に結論
brew install winexe
で使えるwinexe
は使うのはWindows側の設定が大変&セキュリティ的にどうなんだろ、ということがあるので
新しく追加されたSSHサーバー機能を使いましょう。
https://www.atmarkit.co.jp/ait/articles/1903/28/news005.html
ということで以下はやったこと。(最終的に断念したが
まずPSTools
https://docs.microsoft.com/ja-JP/sysinternals/downloads/psexec
ホストとなるwindows上でリモートPCからコマンドを実行させるために必要。
ダウンロードして解凍、psexecが実行できるようにパスを通す。
macにてbrewからwinexeをインストール
そのままbrew install winexe
windowsホストの設定
- ポートを開ける
- TCP 135,137-139 (RPC)
- TCP 445 (SMB)
- UAC、レジストリの設定
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
というキーに値が必要。詳細は
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
LocalAccountTokenFilterPolicy REG_DWORD 1
コマンドにすると
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1
リモートUACを有効化?ということらしい。
- SMB1.0の有効化
やり方は調べたら出ますが、winexeの現行のバージョンではSMB1.0でしか通信できないそう。
(linuxのsmbにマージされたバージョンだと最新のSMBでもいけるそうですが詳しく見てない)
これはやらないとNT_STATUS_CONNECTION_RESET
というエラーがでる。
ここまでやればホストWindows上で自分に対してpsexec
コマンドが使えると思う。
psexec \\[PC名 or IP] -u \\[ユーザー名] cmd
このへんのコマンド例は他のページ等ご参照
ちなみにドメイン参加ユーザー等は、
ドメイン\ユーザー名
とする。
winexeからだと
winexe -U [ユーザー名] //[ホストPC名] cmd
のような感じ。
その後…
NT_STATUS_OBJECT_NAME_NOT_FOUND
や
NT_STATUS_INVALID_PARAMETER
が出たりする。
これ以上の解決はあきらめ、最近のリリースでWindowsでもSSHサーバーが使えるようになったようなのでそちらを使うことにした。
なお、winexecを使った後、winexesvcというサービスが登録される。
これはよくバックドアにも使われるそうで、Windowsセキュリティで警告が出ることがある。
(自分の環境では出た)
ということでwinexeは断念した。