一个藏在正常程序下的C#木马样本分析
前言
本文章只分析了木马加载的过程,不分析木马功能
背景
护网期间一个朋友发给我的样本让我帮忙分析一下
分析过程
ExeinfoPe查了一下是一个C#的程序,然后加了个混淆直接de4dot处理一下拉入dnspy
反编译之后看没发现什么http请求,启动函数运行了一个frmMain窗体,看了看代码什么的发现是一个正常的窗体程序,什么也没发现动态调试
程序肯定是有问题的,于是就动态调试发现,这个程序是一个加载程序,他找了一套正常程序的源码重写了一个属性的set函数 在set函数中,从资源文件拿到dll然后加载dll利用反射加载dll之后 反射调用函数
Type type = assembly.GetTypes()[0];
MethodInfo method = type.GetMethod(“Click”);
method.Invoke(0, parameters);
反射获取到第一个类,然后获取该类的Client函数,参数分别是 “OVAGp”,”bAJs”,”Finast”
直接dnspy动态调试 dump出来dll文件
dll也是C#的 然后加了混淆直接de4dot处理 然后拖入dnspy
dnspy dll反编译
看着这样一个正常的程序,我们直接找一个Client的函数
一眼就是反射调用,不过他是通过vb.net的
dll是保存在资源图片中的 这个不用关注 我们直接把处理之后的的rawAssembly 给dump出来就好了
dump出来的dll还是一个C#的 是有复杂的混淆的 de4dot处理不了,我直接找画眉师傅给处理了一下然后拉到dnspy里面看了看 就是真实的木马样本。
总结
此样本是一个加载器 首先从资源文件中拿到dll通过C#的反射加载起来,然后该dll再次从资源文件中拿到一个图片,从图片中提取出来功能dll,通过Microsoft.VisualBasic库的反射加载起来功能dll,
加载器和dll都是伪装成了正常的程序,如果不仔细看的时候 就可能以为是一个正常程序放过去了
1.minifilter-学习笔记1
2.Android Killer 不反编译资源
3.xposed 原理初探
4.AndroidStudio调试smali代码
5.jeb调试smali代码
6.xposed 小实战