LFW - Winexe 0.80

Linux Fuck Windows

开一个Linux监控Windows系列的大坑

先从不同版本的winexe搞起

Winexe 0.80

这里选择的代码是 https://github.com/greenbone/openvas-smb

原因是最近还有在更新

1
[/root/test/openvas-smb-21.4.0/winexe/winexe.c:90:parse_args()] winexe version 0.80

编译

分别记录一下Fedora和CentOS7两种系统下的编译过程

搞了两套是因为

  • CentOS7的EPEL源移除了mingw相关的包
  • 在Fedora上编译完之后要迁往CentOS7,要同时迁移N多依赖,也很不方便

先说一下共有问题

No package ‘heimdal-gssapi’ found

dnf/yum出来的heimdal-devel不支持pkgconfig,后续许多操作都很麻烦,建议按下面的方法自己先compile一个

https://community.greenbone.net/t/full-gvm-11-build-guide-for-centos-8/5425

1
2
3
4
5
6
7
./configure --enable-otp=no --prefix=/opt/heimdal
make && make install

echo "/opt/heimdal/lib" > /etc/ld.so.conf.d/heimdal-xxx.conf
ldconfig

export PKG_CONFIG_PATH=/opt/heimdal/lib/pkgconfig

ld -ltspi

ld问题参考 https://www.hbspy.moe/2021/06/07/ld_cannot_find/

1
ln -s /usr/lib64/libtspi.so.1 /usr/lib64/libtspi.so

Fedora 编译

mingw can no longer be found in the Centos 7 EPEL Repository See bugzilla.redhat.com/show_bug.cgi?id=1807975 and pagure.io/fesco/issue/2333

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
yum install gcc cmake pkg-config mingw64-gcc gnutls-devel \
perl-base popt-devel glib2-devel \
libunistring-devel krb5-devel

yum install mingw32-gcc-c++ \
mingw32-gcc \
mingw32-pthreads \
mingw32-w32api \
mingw32-binutils \
mingw32-runtime \
mingw32-filesystem \
mingw32-cpp \
mingw32-dlfcn-static

mkdir build
cd build
cmake ..
make && make install

https://wiki.videolan.org/Win32Compile_Under_Fedora/

CentOS7 编译

CentOS7多一个popt的问题,类似heimdal,也是yum出来的包不支持pkgconfig

参照heimdal的处理自己先compile一个

1
2
3
4
5
6
7
8
./autogen.sh
./configure --prefix=/opt/popt
make && make install

echo "/opt/popt/lib/" > /etc/ld.so.conf.d/popt.conf
ldconfig

export PKG_CONFIG_PATH=/opt/popt/lib/pkgconfig

主要需要搞定mingw的问题

这里分享一个可用的repo: https://copr.fedorainfracloud.org/coprs/alonid/mingw-epel7/

使用的时候需要只enable它,yum install --disablerepo=* --enablerepo=mingw-epel7 xxx

常见问题

NT_STATUS_IO_TIMEOUT

  1. 一种可能是0.80似乎只支持SBMv1

smb1protocol

https://docs.microsoft.com/zh-cn/windows-server/storage/file-server/troubleshoot/detect-enable-and-disable-smbv1-v2-v3

顺便分享一些远程安装启用的命令

是在Windows下使用的

首先利用SysinternalsSuite包中提供的PsExec拉Dism,用WMIC process call create应该也行

NOTE 这里加了/NoRestart,主要是由于Dism提供的重启不够强力,可能造成卡住

后面用WMIC shutdown -r -f强制重启

1
2
.\PsExec.exe \\[IP] -u [user] -p [passwd] Dism /online /Enable-Feature /FeatureName:smb1protocol /NoRestart /ALL
wmic /node:[IP] /user:[user] /password:[passwd] process call create "shutdown -r -f -t 0"
  1. 另一种可能的原因是防火墙

可以查看目前网络配置文件是公用还是专用。如果是公用,进一步查看是否开启了公用网络的防火墙

可以考虑直接切换到专用,关闭或配置专用网络的防火墙规则

本机上的system32目录内容与winexe cmd.exe dir出来的不一致

这是一个32-bit/64-bit问题

winexe新一点的版本会有[–ostype=0|1|2]选项,来指定x86/x64

可以通过echo %programfiles%看判断

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
C:\Windows\system32>echo %programfiles%
echo %programfiles%
C:\Program Files (x86)

C:\Windows\system32>dir nv*

2020/10/13 16:40 5,972,824 nvapi.dll
2020/10/13 16:42 4,174,064 nvcuda.dll
2020/10/13 16:42 6,860,184 nvcuvid.dll
2020/10/13 16:42 657,304 nvEncodeAPI.dll
2020/10/13 16:42 1,585,560 NvFBC.dll
2020/10/13 16:43 1,161,112 NvIFR.dll
2020/10/13 16:43 555,248 NvIFROpenGL.dll
2020/10/13 16:43 543,128 nvofapi.dll
8 21,509,424
0 ¼ 55,284,584,448

这里%programfiles%会被认为是 (x86)

没有nvidia-smi.exe

我们可以直接拉"c:\windows\sysnative\cmd.exe"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
C:\Windows\system32>echo %programfiles%
echo %programfiles%
C:\Program Files

C:\Windows\system32>dir nv*

2020/10/13 16:41 7,001,536 nvapi64.dll
2020/10/13 16:42 5,519,600 nvcpl.dll
2020/10/13 16:42 2,508,528 nvcuda.dll
2020/10/13 16:42 7,707,544 nvcuvid.dll
2020/10/13 16:42 445,848 nvdebugdump.exe
2020/10/13 16:42 813,464 nvEncodeAPI64.dll
2020/10/13 16:43 2,098,072 NvFBC64.dll
2020/10/13 16:43 589,208 nvidia-smi.exe
2020/10/13 16:43 1,507,224 NvIFR64.dll
2020/10/13 16:43 670,616 NvIFROpenGL.dll
2020/10/01 15:14 80,930 nvinfo.pb
2020/10/13 16:43 816,368 nvmcumd.dll
2020/10/13 16:43 1,023,216 nvml.dll
2020/10/13 16:43 673,520 nvofapi64.dll
14 31,455,674
0 ¼ 55,284,584,448

这样就正常了

参考 https://ss64.com/nt/syntax-64bit.html