Auto remove 360 with PyautoGUI
Auto remove 360 with PyautoGUI
S0cke3t突发奇想
今天早上无意间在一个微信公众号中看到一篇关于python第三方键鼠操作库PyautoGUI介绍的文章,看完感觉还是挺有意思的一个扩展库,然后突发奇想看看能不能利用这个库写点在渗透中能用到的东西,既然它是一个键鼠自动化操作的库,那么首先我想到就是能不能用它来自动化的干掉一些防病毒软件,于是就有了下面这篇文章
着手实现
既然我们要用,第一步就是先安装它,这个于其他库安装方法一样直接在终端运行pip install pyautogui
即可。接下来就是拿谁开刀的问题了,思前想后最后还是决定拿国内用户群体比较多的某60安全卫士下手。
环境和目标定好以后,接下来考虑的第一步就是如何调出程序的卸载界面,通过网上冲浪我找到了几种办法
1.使用wmic call uninstall
2.查询注册表获取uninstallstring后使用os.system启动
3.直接打开软件安装目录,模拟点击卸载程序
在经过试验后发现使用wmic有些软件并不会出现在安装列表中,此方法pass。查询注册表使用uninstallstring,试 验后发现此方法会触发敏感操作报警,此方法pass。所以现在最靠谱的方法就是直接模拟用户点击进行卸载程序的显示
代码如下:os.startfile(r"C:\Program Files (x86)\360\360Safe")
打开后我们就需要模拟用户使用滚轮查找卸载程序的操作,可以使用pyautogui.scroll(num or -num)
,正数表示滚轮向上,负数则向下
由于滚动的数值有范围限制,所以我们需要多执行几次,具体视情况而定,确保能定位到卸载程序位置
代码如下:pyautogui.scroll(-1000)
接下来就要定位卸载程序的焦点,并模拟用户点击,可以使用pyautogui.locateOnScreen('step-1.png')
,此方法需要我们准备一个要捕获的目标图片,locateOnScreen会在屏幕上查找匹配的元素,并返回相对位置信息。至于目标图片我们直接截图即可,像这样
准备好图片之后就可以写代码了
识别并获取元素在屏幕上的相对位置信息uninstalllocation = pyautogui.locateOnScreen('step-1.png')
定位到其中心点,转换为坐标uninstallpoint = pyautogui.center(uninstalllocation)
分离坐标ux,uy = uninstallpoint
模拟点击 clicks=2为双击,默认为单击pyautogui.click(ux, uy,clicks=2)
接下来的操作就可以参照此步骤,如法炮制,截取目标图片,识别元素位置,并将其转化为坐标信息,最后模拟用户点击,但这里需要注意的是由于竞争问题在每次获取位置信息时我们需要在上次获取信息后让程序等待几秒,确定点击了上一步的按钮后再执行下一步的操作,否则可能获取不到位置信息。
到这里基本的流程大致实现了,下一步就要考虑简化操作的问题了,由于程序要读取目标图片才能获取位置信息,我们在使用时需要连同脚本图片一同放到目录里,这样很不利于使用。
解决这个问题我可以将图片进行base64编码,嵌入到脚本里。在运行时,先释放我们的目标图片文件,再进行后续操作,这样我们只需要上传一个脚本即可。
最终的效果如下:
此代码只是个demo还有很多需要优化地方,如果需要实际应用,请自行更改相关的代码
应用场景
当我们需要在目标上执行一些恶意程序,但手上的程序并不免杀,且无法进行远程桌面操作时,可以考虑这种简单粗暴的方法。
存在问题
1.可能存在模拟点击错位的情况,导致卸载失败
2.未加入异常处理