安全矩阵

 找回密码
 立即注册
搜索
查看: 2238|回复: 0

Nim套娃加载.NET程序集

[复制链接]

221

主题

233

帖子

792

积分

高级会员

Rank: 4

积分
792
发表于 2021-8-29 16:44:36 | 显示全部楼层 |阅读模式
本帖最后由 1337163122 于 2021-8-29 16:46 编辑

Nim套娃加载.NET程序集 (qq.com)Nim套娃加载.NET程序集原创 RedTeamWing RedTeaming 昨天

简介使用OffensiveNim绕过常见杀软。

Start the game主要用到的库是WINIM
  1. import winim/clr
  2. import sugar
  3. import strformat

  4. # Just pops a message box... or does it? ;)
  5. var buf: array[4608, byte] = [byte 0x4d,0x5a,0x90,0x0]

  6. echo "[*] Installed .NET versions"
  7. for v in clrVersions():
  8.     echo fmt"    \--- {v}"
  9. echo "\n"

  10. echo ""

  11. var assembly = load(buf)
  12. dump assembly


  13. var arr = toCLRVariant([""], VT_BSTR) # Passing no arguments
  14. assembly.EntryPoint.Invoke(nil, toCLRVariant([arr]))

  15. arr = toCLRVariant(["From Nim & .NET!"], VT_BSTR) # Actually passing some args
  16. assembly.EntryPoint.Invoke(nil, toCLRVariant([arr]))
复制代码
作者提供了一个ps脚本将exe转为符合nim的bytes数组。
  1. function CSharpToNimByteArray
  2. {

  3. Param
  4.     (
  5.         [string]
  6.         $inputfile,
  7.             [switch]
  8.         $folder
  9. )

  10.     if ($folder)
  11.     {
  12.         $Files = Get-Childitem -Path $inputfile -File
  13.         $fullname = $Files.FullName
  14.         foreach($file in $fullname)
  15.         {
  16.             Write-Host "Converting $file"
  17.             $outfile = $File + "NimByteArray.txt"
  18.    
  19.             [byte[]] $hex = get-content -encoding byte -path $File
  20.             $hexString = ($hex|ForEach-Object ToString X2) -join ',0x'
  21.             $Results = $hexString.Insert(0,"var buf: array[" + $hex.Length + ", byte] = [byte 0x")
  22.             $Results = $Results + "]"         
  23.             $Results | out-file $outfile
  24.          
  25.         }
  26.         Write-Host -ForegroundColor yellow "Results Written to the same folder"
  27.     }
  28.     else
  29.     {
  30.         Write-Host "Converting $inputfile"
  31.         $outfile = $inputfile + "NimByteArray.txt"
  32.         
  33.         [byte[]] $hex = get-content -encoding byte -path $inputfile
  34.         $hexString = ($hex|ForEach-Object ToString X2) -join ',0x'
  35.         $Results = $hexString.Insert(0,"var buf: array[" + $hex.Length + ", byte] = [byte 0x")
  36.         $Results = $Results + "]"         
  37.         $Results | out-file $outfile
  38.         Write-Host "Result Written to $outfile"
  39.     }
  40. }
复制代码



体积有点大。

编译
nim c -d=mingw --app=console --cpu=amd64 execute_assembly.nimBingo

体积只有800k。

现在还没法执行自定义参数,源码修改后如下:
  1. import winim/clr
  2. import sugar
  3. import strformat
  4. import os

  5. # Just pops a message box... or does it? ;)
  6. var buf: array[4608, byte] = [byte 0x4d,0x5a,0x90,0x0]

  7. echo "[*] Installed .NET versions"
  8. for v in clrVersions():
  9.     echo fmt"    \--- {v}"
  10. echo "\n"

  11. echo ""

  12. var assembly = load(buf)
  13. dump assembly


  14. var cmd: seq[string]
  15. var i = 1
  16. while i <= paramCount():
  17.     cmd.add(paramStr(i))
  18.     inc(i)
  19. echo cmd
  20. var arr = toCLRVariant(cmd, VT_BSTR)
  21. assembly.EntryPoint.Invoke(nil, toCLRVariant([arr]))
复制代码



OJBK.
要更进一步隐藏的话,需要对字节进行加密解密。

nim感觉搞懂winim这个库就能写好多小工具了。

戳我直达原文地址


插播一条广告,使用语雀开了一个红队知识库的空间,免费共享。
详情地址 https://www.yuque.com/u212486/hqo6tb/rmzr1u


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-29 16:43 , Processed in 0.012680 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表