免杀Tips--利用GUID来加载shellcode

admin 2021年4月8日12:59:48评论175 views字数 1138阅读3分47秒阅读模式

 前几天,很多的公众号都复现了来自Lazarus组织的加载器的实现方法,UUID法,具体链接可以查看:https://research.nccgroup.com/2021/01/23/rift-analysing-a-lazarus-shellcode-execution-method/,然后今天带来一个类似的方法,即使用GUID来加载shellcode。原文链接可点击原文链接查看。


        GUID:一个全球唯一标识符 或 GUID 是一个假随机数用于软件中。虽然每个产生的GUID是不保证唯一的,但不同的标识符总数是(2128 也就是3.4028×1038)如此之大,以至于相同的数字被产生两次的机率是很相当小的。而这种加载方法也是从一个样本之中发现的。起初是国外的安全人员在样本中发现了大量的GUID字样,如下:


免杀Tips--利用GUID来加载shellcode


然后在IDA里分析是,发现了其加载代码以及解密代码(GUID做了部分变化):


免杀Tips--利用GUID来加载shellcode


免杀Tips--利用GUID来加载shellcode


然后我们发现,其中比较罕见的就是GUIDFromStringW该函数的调用。而作者也通过使用下面的方法成功的将GUID还原成立bin文件:


$GUIDs = Get-Content .guid.txt
foreach ($GUID in $GUIDs){ $Bytes += [System.Guid]::new($GUID).ToByteArray()}[io.file]::WriteAllBytes("C:UsersAdministratorDesktop2.bin",$Bytes)


然后通过火眼的https://github.com/fireeye/speakeasy工具得到了目标的部分信息(蓝队同学的工具+1)


那么了解到了这些之后,我们便可以学习这种思路,来编写我们自己的GUID的loader,首先就是GUID的生成。C#中提供了现成的代码:


using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;
namespace Part8{ class Program { static void Main(string[] args) { string hex = "0F1F006666660F1F8400000000000F1F"; Guid guid = new Guid(hex); Console.WriteLine(guid); } }}

免杀Tips--利用GUID来加载shellcode


剩下的就是像IDA里面一样,编写一个加载器来加载就好了,这边就不放代码出来了,有兴趣的小伙伴可以自己实现一下。


     ▼
更多精彩推荐,请关注我们

免杀Tips--利用GUID来加载shellcode



本文始发于微信公众号(鸿鹄实验室):免杀Tips--利用GUID来加载shellcode

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年4月8日12:59:48
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   免杀Tips--利用GUID来加载shellcodehttp://cn-sec.com/archives/326983.html

发表评论

匿名网友 填写信息