freeBuf
渗透测试之地基流量加密篇:Nim语言免杀所有杀软
2021-01-27 11:36:42

系列文章

专辑:渗透测试之地基篇

简介

渗透测试-地基篇

该篇章目的是重新牢固地基,加强每日训练操作的笔记,在记录地基笔记中会有很多跳跃性思维的操作和方式方法,望大家能共同加油学到东西。

请注意

本文仅用于技术讨论与研究,对于所有笔记中复现的这些终端或者服务器,都是自行搭建的环境进行渗透的。我将使用Kali Linux作为此次学习的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,本站及作者概不负责。

名言:

你对这行的兴趣,决定你在这行的成就!

一、前言

Nim(最初叫 Nimrod)是一门命令式静态类型编程语言,可以被编译成 C 或 JavaScript。它是开源的,维护很活跃,还结合了来自成熟语言(如Python,Ada和Modula)的成功概念。

Nim具有高效性,生成的执行文件小,编译器支持所有平台,非常适合嵌入式硬实时系统,支持各种后端编译等等,Nim强大的宏系统和独立性,接下来将介绍如何利用Nim配合C、C++和Winim进行免杀。

演示非常详细,共演示14种方法,存在12种方法能过杀软拿到权限,其中5种方法能免杀2021年如今所有杀软,从初部署环境到利用凯撒和三重数据加密算法进行最终免杀的过程,以及如何分析底层代码,如何修改底层代码方法的过2021年(所有操作均有时间截图)如今所有杀软的过程。

二、环境介绍

1608213735_5fdb64e7aa0655a649f8f.png!small?1608213737710

黑客(攻击者)

IP:192.168.175.145

系统:kali.2020.4

windows 2019系统是黑客用于Nim编程制作免杀exe的系统。

VPS服务器:

此次模拟环境将直接越过VPS平台,已成功在VPS上进行了钓鱼行为。

办公区域:

系统:windwos 10

IP:192.168.2.142

存在:360、360杀毒、火绒、deferencer,以及全球和全国杀软平台检测。

目前黑客通过kali系统进行攻击行为,通过钓鱼获得了对方的权限后,发现对方电脑上存在360、360杀毒、火绒、deferencer直接被杀软进行了查杀,无法进行反弹shell获得权限,如今将演示利用Nim框架配合C、C++、Winim语言进行凯撒和三重加密,以及底层分析生成免杀exe,并控制对方的过程。

三、环境部署

在Windows server 2019系统环境进行开始部署:

1、部署Nim环境

Nim官网:

https://nim-lang.org/install.html

1611718697_6010e029533c85d4ea580.png!small?1611718697964
进来选择点击Windows。

1611718703_6010e02fc1c027ed28648.png!small?1611718704721
选择点击Download x86_64.zip下载。

1611718711_6010e0373e8a73ea3c23c.png!small?1611718715065
复制bin目录地址C:\Users\dayu\Desktop\nim-1.4.2_x64\nim-1.4.2\bin

1611718717_6010e03da3aeafb3ba527.png!small?1611718721441
C:\Users\dayu\Desktop\nim-1.4.2_x64\nim-1.4.2\bin加入环境变量。

1611718724_6010e04441318b04dff29.png!small?1611718727762
在Cmd命令窗口输入Nim,看图红框提示成功安装。

2、安装C、C++编译器

Nim编译器需要C编译器才能编译软件。nim-1.4.2_x64文件夹包含一个简单应用程序finish.exe,可以点击finish.exe用来安装MingW。由于国内网络问题,我不推荐使用在线方式下载方式,建议离线方式提前下载并解压,配置环境变量。
1611718734_6010e04e2a1611e51d585.png!small?1611718740043
双击打开finish.exe。

1611718740_6010e0545e207b4334eac.png!small?1611718742220
输入确认Y,等待下载完成即可。

1611718745_6010e059ace9339924bd9.png!small?1611718747628
下载完成后会Nim包自带7z压缩工具,会自动解压到目录下。

1611718751_6010e05ff3666bee81513.png!small?1611718756130
等待解压完成进入该目录:C:\Users\dayu\Desktop\nim-1.4.2_x64\nim-1.4.2\dist\mingw64\bin,复制该目录。

1611718759_6010e06721f8a6efb0c4e.png!small?1611718766472
将目录加入环境变量,然后检查成功安装完成C和C++。

3、下载NimShellCodeLoader

项目地址:

https://github.com/aeverj/NimShellCodeLoader/releases/tag/0.2

1611718778_6010e07ae7dc6fb7dbbb5.png!small?1611718779831
下载NimShellCodeLoader_Winx64.zip

1611718797_6010e08d99ed9ef92ccae.png!small?1611718813677
下载加压后来到encryption目录下,进行编译:

nim c -d:release --opt:size Tdea.nim

nim c -d:release --opt:size Caesar.nim

成功编译。

1611718806_6010e096093926b23866b.png!small?1611718813678
编译完成后来到主目录双击codeLoader.exe打开图形化界面。

四、Nim免杀详细测试

接下来将介绍14种免杀方法,其中12种是可拿权限的,5种是过任何杀软的,开始!

1、CS生成payload

1611718814_6010e09e9083ba2a2b677.png!small?1611718816237
首先打开Cobalt Strike输出生成Raw的payload.bin后门文件。

1611718821_6010e0a59551defc1dc14.png!small?1611718827400
然后将payload.bin拖入界面。

2、Nimshellcode界面详解

1611718829_6010e0ad9b6d7ea7ce722.png!small?1611718832521
可看该图,细致的讲解了每个界面的用法。

加载shellcode-> 加密方式(凯撒和3des)-> shellcode加载方式-> 编译命令-> 编译过程输出
OEP Hiijack-Inject Load         # 入口点劫持注入加载
Thread Hiijack-Inject Load      # 线层劫持注入加载
APC-Ijnect Load                 # APC 注入加载(APC应该是异步)
Early Bird APC-Injetc Load      # Early Bird APC注入加载
Direct Load                     # 直接加载
GreateThreatPoolWait load       # (线程池、信号量等)加载
Fiber Load                      # (用户级线程)加载

详细讲解了界面,这里编译使用的命令会在最后如果底层分析讲解。

3、十四种免杀演示

Nimshellcode特点是支持两种加密技术,分别位3des加密和凯撒密码,密钥随机每次生成文件拥有不同hash!!

1. 入口点劫持加载

1611718848_6010e0c0ae18f58e77e66.png!small?1611718853102
利用入口点劫持注入加载生成凯撒和三重加密的随机生成的EXE文件。

1)入口点劫持- Caesar

1611718856_6010e0c8158e05cbf1296.png!small?1611718859246
测试凯撒算法随机生成的EXE文件被360秒杀了,火绒未报毒。

2) 入口点劫持- TDEA

1611718901_6010e0f52cdc308f4ceed.png!small?1611718913316
测试三重加密算法随机生成的EXE文件丢入后未被秒杀,但是执行后进行了拦截清理。

利用入口点劫持注入加载生成凯撒和三重加密的随机生成的两种EXE文件无法免杀!继续~

2. 线层劫持加载

1611718908_6010e0fc23d6a36c99fd6.png!small?1611718913316
利用线层劫持注入加载生成凯撒和三重加密的随机生成的EXE文件。

1)线层劫持 - Caesar
1611718922_6010e10a13ed1f080ebb6.png!small?1611718927447
测试凯撒算法随机生成的EXE文件被360清理了,火绒未报毒,这里需要提醒的是,刚将payload丢入后,未执行查杀,双击可上线,等待30多秒后才进行了自动查杀。

2)线层劫持 - TDEA
1611718931_6010e113ba38c43614729.png!small?1611718936569
测试三重加密算法随机生成的EXE文件被360清理了,火绒未报毒,这里需要提醒的是,刚将payload丢入后,未执行查杀,双击可上线,等待30多秒后才进行了自动查杀。

在经过测试线层劫持注入加载加密后,是可上线的,查杀后的shell也是还在运行的,那么这时候可以进行快速提权和迁移进程操作,shell可一直存在控制对方电脑,需要快速操作!

3. APC注入加载

1611718949_6010e1255d92b4301dbbd.png!small?1611718953819
利用APC 注入加载(APC应该是异步)生成凯撒和三重加密的随机生成的EXE文件。

1) APC注入- Ceasar

1611718956_6010e12c6796697d48e7c.png!small?1611718959424
测试凯撒算法随机生成的EXE文件被360清理了,火绒未报毒,这里需要提醒的是,刚将payload丢入后,未执行查杀,双击可上线,等待2分钟后才进行了自动查杀。

2) APC注入- TDEA

1611718976_6010e1407b7ef95f78d84.png!small?1611718981227
测试三重加密算法随机生成的EXE文件被360清理了,火绒未报毒,这里需要提醒的是,刚将payload丢入后,未执行查杀,双击可上线,等待2分钟后才进行了自动查杀。

在经过测试APC 注入加载(APC应该是异步)加密后,是可上线的,查杀后的shell也是还在运行的,那么这时候可以进行快速提权和迁移进程操作,shell可一直存在控制对方电脑,需要快速操作!

4. Early Bird加载

1611718983_6010e147df90e3bbf43b9.png!small?1611718989029
利用Early Bird APC注入加载生成凯撒和三重加密的随机生成的EXE文件。

1)Early Bird- Ceasar

1611719005_6010e15d730252c30d14c.png!small?1611719023585
测试凯撒算法随机生成的EXE文件被360清理了,火绒未报毒,这里需要提醒的是,刚将payload丢入后,未执行查杀,双击可上线,等待7~10分钟后才进行了自动查杀。

2)Early Bird- TDEA

1611719011_6010e1633b00fce483ba3.png!small?1611719029011

测试三重加密算法随机生成的EXE文件被360清理了,火绒未报毒,这里需要提醒的是,刚将payload丢入后,未执行查杀,双击可上线,等待7~10分钟后才进行了自动查杀。

在经过测试Early Bird APC注入加载加密后,是可上线的,查杀后的shell也是还在运行的,那么这时候可以进行快速提权和迁移进程操作,shell可一直存在控制对方电脑,检测较慢,可持续操作!

5. 直接加载

1611719023_6010e16f4e0d4897136db.png!small?1611719029012
利用直接加载生成凯撒和三重加密的随机生成的EXE文件。

1)直接加载- Ceasar

1611719030_6010e176e7700c745c985.png!small?1611719055857
测试凯撒算法随机生成的EXE文件最后还是被360清理了,火绒未报毒,图中明显的显示了开始初是未报读的,而是经过了长时间的操作后才进行了查杀,等待查杀时间不定,几分钟或者十几分钟。

2)直接加载- TDEA

1611719037_6010e17d0c5fe311a76a2.png!small?16117190591941611719042_6010e182274bdea24b072.png!small?1611719056230

1611719047_6010e187bd6ce781e695b.png!small?1611719059195
测试三重加密算法随机生成的EXE文件免杀了三件套,360和360杀毒、火绒、Defer!!然后丢到了国内和全球两个杀软平台显示,国内杀软全过!
全球杀软11款杀软秒杀了!

在经过测试直接加载加密后,达到了国内全免杀,是可上线的,凯撒加密查杀后的shell也是还在运行的,那么这时候可以进行快速提权和迁移进程操作,shell可一直存在控制对方电脑,检测较慢,可持续操作!

6. 线程池加载

1611719055_6010e18fd8775a820f39e.png!small?1611719059196
在利用(线程池、信号量等)加载生成凯撒和三重加密的随机生成的EXE文件时,报错了,需要winim语言模块进行编译!

1) git安装

1611719062_6010e1968a20137912608.png!small?1611719066083
需要在windows安装git环境:

https://git-scm.com/downloads

1611719068_6010e19cde4755cb8c7e3.png!small?1611719072645
根据需求下载即可。

1611719078_6010e1a63e92565590cd2.png!small?1611719082874
所有默认下一步安装。

1611719084_6010e1aca057d8131357f.png!small?1611719088403
安装完成后cmd验证安装成功。

2) 安装Winim

1611719090_6010e1b28f303aa812654.png!small?1611719095367
使用命令:
nimble install winim
可看到成功安装,此方法较慢,可自行到github下载。

1611719096_6010e1b82cae9e9507748.png!small?1611719100590
利用(线程池、信号量等)加载生成凯撒和三重加密的随机生成的EXE文件。

3)线程池- Caesar

1611719102_6010e1beea552379e6099.png!small?1611719112884

1611719117_6010e1cd90a0c0eb104ac.png!small?1611719123015测试凯撒加密算法随机生成的EXE文件免杀了三件套,360和360杀毒、火绒、Defer!!然后丢到了国内和全球两个杀软平台显示,国内杀软一款查杀!全球杀软2款杀软查杀了!

4)线程池- TDEA

1611719124_6010e1d48bbb738a7b7da.png!small?1611719165384

1611719129_6010e1d9b58904f2e819a.png!small测试三重加密算法随机生成的EXE文件免杀了三件套,360和360杀毒、火绒、Defer!!然后丢到了国内和全球两个杀软平台显示,国内和全球杀软情况就奥地利一款杀软查杀,其他全过!!非常给力。

7. 用户级线程加载

1611719135_6010e1df13aa5c1f819c6.png!small
利用(用户级线程)加载生成凯撒和三重加密的随机生成的EXE文件。

1) 用户级线程- Caesar

1611719673_6010e3f98d38f5505c08e.png!small?1611719693342

1611719145_6010e1e9ab137ee1f01d2.png!small
测试凯撒加密算法随机生成的EXE文件免杀了三件套,360和360杀毒、火绒、Defer!!然后丢到了国内和全球两个杀软平台显示,国内杀软一款查杀!全球杀软2款杀软查杀了!

2) 用户级线程- TDEA

1611719861_6010e4b563b9a59090aaa.png!small?1611719881912

1611719868_6010e4bc5aee7e5480a72.png!small?1611719881912

测试三重加密算法随机生成的EXE文件免杀了三件套,360和360杀毒、火绒、Defer!!然后丢到了国内和全球两个杀软平台显示,国内和全球杀软情况就奥地利一款杀软查杀,其他全过!!非常给力。

最后,这里的免杀加载的EXE都是可上线的。

五、底层分析

1、分析.ini文件

1611719305_6010e289c23a3ab3a3d0b.png!small?1611719315338

看图可详细看到就是在命令框中输入nim带入加密算法指向payload输出大小和文件类型,那么我们需要修改的第一步在这进行注入加载类型添加即可。

那么修改Compiler.ini文件,需要添加一行,key为加载方式,value为编译使用的命令行,其中为shellcode文件位置的占位符,为加密方式的占位符,其余可以自行定义即可。

2、分析.nim文件

1611719212_6010e22c1a4ca1ac6eee8.png!small?1611719247125

这里也很简单,调用module目录下的cpp文件。
那么这里需要新建nim代码文件,引用public,获取code(解密的明文shellcode)和codelen(明文shellcode长度)即可。

3、分析.cpp文件

1611719219_6010e2330d63eddad5bec.png!small?1611719247125

可看到nim调用.cpp文件,那么来分析cpp。

1611719223_6010e23781d6c4b5a5f18.png!small?1611719247125

.cpp文件又调用底层C++语言编写的.hpp文件,分析hpp文件就是利用了C++语言中APC、Early、OEP、Thred、Direct_Load进行加载注入,那么分析到这里就可以在.hpp中加入另外的注入加载函数去调试了。继续分析cpp文件可看图,我都详细写在图里了!

到这里就很简单了,学习固定一些注入形式的加载函数,写入C++的hpp文件,利用.ini调用.nim在调用.cpp文件即可!

六、总结

思路总结:

1)安装Nim、Git、mingw64(C和C++)、Winim环境
2)七种方式加载注入,两种加密方法,共14种shellcode
2)底层分析学Nim、C、C++基础函数

Nimshellcode自带七种注入加载方式,还可自行扩展方式,支持两种加密技术,分别位3des加密和凯撒密码,密钥随机,每次生成文件拥有不同hash,三种非常棒的框架都搭好了,那么后期如何免杀在Nim上,是很简单的。

当然在此基础上,可以更深入的去了解底层源码Nim、C和C++语言的同时,重新编写一款属于自己的加载方式,那么新的免杀就出现了,或者更深入的在加载注入中在添加一些混淆和多重算法,这样免杀效果更佳,打造自己的专属免杀shellcode,引路人大余!

希望大家提高安全意识,没有网络安全就没有国家安全!

今天基础牢固就到这里,虽然基础,但是必须牢记于心。

作者:大余

本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
文章目录