来源第114天直播课件
#知识点:
1、Nim-加载工具-NimLoader
2、Nim-加载方式-OffensiveNim
2、Nim-分离加载-Socket&Http&Image
3、Nim-内存加载-UUID
#章节点:
编译代码面-ShellCode-混淆
编译代码面-编辑执行器-编写
编译代码面-分离加载器-编写
程序文件面-特征码定位-修改
程序文件面-加壳花指令-资源
代码加载面-Dll反射劫持-加载
权限逻辑面-杀毒进程干扰-结束
工具数据面-通讯内存流量-动态
安全开发面-CS二开魔改-动态
对抗目标:
X60 Defender 某绒 管家 卡巴 VT EDR等
编程语言:
C/C++ Python C# Go Powershell Ruby Java ASM NIM Vlang等。
涉及技术:
ShellCode混淆,无文件落地,分离拆分,白名单,DLL加载,Syscall,加壳加花,
资源修改,特征修改,二次开发CS,内存休眠,进程注入,反沙盒,反调试,CDN解析等
#基础点:
一般的编译参数:
c:编译成C语言。例如:nim c test.nim
cpp:编译成C++语言。例如:nim cpp test.nim
objc:编译成objc语言
js:编译成javascript脚本, 可以建一个html文件在<script src="test.js"></script>里运行.
-d:release:进行release编译。nim cc -d:release test.nim
-r:编译完成后运行程序
--cincludes:包含 当前目录(./)的 c头文件.
--cpu:指定架构,如:nim cc -cpu amd64 , nim cc -cpu:arm。
--cpu参数有:i386, m68k, alpha, powerpc, powerpc64, powerpc64el,
sparc, vm, hppa, ia64, amd64, mips, mipsel, arm, arm64, js, nimvm, avr, msp430, sparc64, mips64, mips64el, riscv64, esp, wasm32
编译x64
nim c -d:mingw --app:gui --cpu:amd64 -d:danger -d:strip --opt:size --passc=-flto --passl=-flto test.nim
编译x86
nim c -d:mingw --app:gui --cpu:i386 -d:danger -d:strip --opt:size --passc=-flto --passl=-flto test.nim
安装库:
nimble install
文章打包代码下载:
链接:https://pan.baidu.com/s/1VIPSAFhjONOdjioecUvSLA
提取码:xiao
参考来源:
https://github.com/byt3bl33d3r/OffensiveNim
https://github.com/aeverj/NimShellCodeLoader
https://github.com/ScxMes/Core-Nim-programming
https://mp.weixin.qq.com/s/YKkCcqeiQLwyw4cJvQHilA
测评结果:
1、某绒存活情况:
三种加载模式:回调函数
三种分离无文件:参数argv 协议Http 隐写Image
一种UUID加载:UUID
2、某60存活情况:
三种加载模式:ASM混编
三种分离无文件:协议Http 隐写Image
一种UUID加载:UUID
3、某DF存活情况:
三种加载模式:G
三种分离无文件:参数argv 协议Http 隐写Image
一种UUID加载:G
WEB安全/渗透测试/红蓝对抗/技术培训
主流语言加载ShellCode调用的函数已被标记特征,免杀效果不佳
因此小众新型语言成为新玩法,Nim语言有着同语法,编译快等特点
本文将介绍Nim三种加载方式,来进行ShellCode免杀测评
第
1
点
—The first—
加载模式
项目地址:
https://github.com/byt3bl33d3r/OffensiveNim
1、Nim ASM混编:
2、Nim 注入调用:
3、Nim 回调函数
第
2
点
—The second—
分离无文件落地
更多分离无文件方式:
➢ File-将shellcode从文本中提取
➢ Argv-将shellcode与加载器分离
➢ Http-将shellcode用远程协议加载
➢ Socket-将shellcode通过管道传输
➢ Images-将shellcode隐写进图片内
内存免杀是将shellcode直接加载进内存,
由于没有文件落地,因此可以绕过文件扫描策略的查杀。
为了使内存免杀的效果更好,在申请内存时一般采用渐进式
申请一块可读写内存,在运行时改为可执行,在执行的时候
遵循分离免杀的思想。分离免杀包含对特征和行为的分离两个维度,
把shellcode从放在程序转移到加载进内存,把整块的shellcode
通过分块传输的方法上传然后再拼接,这些体现了基本的”分离“思想。
A
Socket分离:利用管道传输关键ShellCode进行内存加载运行调用,实现无关键代码执行。
B
Argv分离:利用执行参数化传输关键ShellCode进行内存加载运行调用,实现无关键代码执行。
C
Image隐写:利用CTF隐写技术将Shellcode写入到正常图片中,通过特定的算法进行读取后加载内存执行。
第
3
点
—The third—
内存加载方式
#内存加载-UUID方式-ShellCode转换
通用唯一识别码(UUID),是用于计算机体系中以识别信息数目的一个128位标识符,根据标准方法生成,不依赖中央机构的注册和分配,UUID具有唯一性。
#内存加载-MAC地址-ShellCode转换
MAC地址也叫物理地址、硬件地址,由网络设备制造商生产时烧录在网卡的EPROM一种闪存芯片,通常可以通过程序擦写。IP地址与MAC地址在计算机里都是以二进制表示的,IP地址是32位的,而MAC地址则是48位(6个字节)的。
#内存加载-IPV4方式-ShellCode转换
IPv4是一种无连接的协议,操作在使用分组交换的链路层(如以太网)上。此协议会尽最大努力交付数据包,意即它不保证任何数据包均能送达目的地,也不保证所有数据包均按照正确的顺序无重复地到达。IPv4使用32位(4字节)地址。
E
N
D
小迪安全-技术培训
QQ及微信:471656814
个人博客:http://www.xiaodi8.com
原文始发于微信公众号(小迪安全):免杀对抗|冷门Nim语言加载ShellCode
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论