一个藏在正常程序下的C#木马样本分析

前言

本文章只分析了木马加载的过程,不分析木马功能

背景

护网期间一个朋友发给我的样本让我帮忙分析一下

分析过程

  1. ExeinfoPe查了一下是一个C#的程序,然后加了个混淆直接de4dot处理一下拉入dnspy

    20210415111921
    反编译之后看没发现什么http请求,启动函数运行了一个frmMain窗体,看了看代码什么的发现是一个正常的窗体程序,什么也没发现

  2. 动态调试

    20210415112425
    程序肯定是有问题的,于是就动态调试发现,这个程序是一个加载程序,他找了一套正常程序的源码重写了一个属性的set函数 在set函数中,从资源文件拿到dll然后加载dll

  3. 利用反射加载dll之后 反射调用函数

    1. Type type = assembly.GetTypes()[0];

    2. MethodInfo method = type.GetMethod(“Click”);

    3. method.Invoke(0, parameters);

      20210415112756

      20210415112805

      反射获取到第一个类,然后获取该类的Client函数,参数分别是 “OVAGp”,”bAJs”,”Finast”

  4. 直接dnspy动态调试 dump出来dll文件

  5. dll也是C#的 然后加了混淆直接de4dot处理 然后拖入dnspy

  6. dnspy dll反编译

    20210415113101

    看着这样一个正常的程序,我们直接找一个Client的函数

    20210415113204

    一眼就是反射调用,不过他是通过vb.net的

    dll是保存在资源图片中的 这个不用关注 我们直接把处理之后的的rawAssembly 给dump出来就好了

  7. dump出来的dll还是一个C#的 是有复杂的混淆的 de4dot处理不了,我直接找画眉师傅给处理了一下然后拉到dnspy里面看了看 就是真实的木马样本。

总结

此样本是一个加载器 首先从资源文件中拿到dll通过C#的反射加载起来,然后该dll再次从资源文件中拿到一个图片,从图片中提取出来功能dll,通过Microsoft.VisualBasic库的反射加载起来功能dll,

加载器和dll都是伪装成了正常的程序,如果不仔细看的时候 就可能以为是一个正常程序放过去了

评论

:D 一言句子获取中...

加载中,最新评论有1分钟缓存...