恶意样本分析——XOR加密与进程注入

VSole2021-12-09 07:39:32

本文是一篇关于《恶意代码分析实战》书中的实验Lab12-02样本的分析报告,这个样本涉及到进程注入和XOR加密技术,样本难度适中。

分析中如有不当的地方还请各位大佬指教。

分析工具:

PEID

PEView

IDA pro

火绒剑

strings提取字符串

WinHex

分析环境:Windows xp系统,VMware虚拟机

基础静态分析

1、查壳:

无壳。

2、提串:

一堆乱码,全是A,说明这个样本加密了,但是刚刚查壳有发现没有壳,于是打算看看PE文件有没有加密的迹象。

3、查看PE文件:

可以看到这部分没什么问题,并没有加密的迹象,我一个一个节查看,发现后面的资源节有问题,被加密了,就如我提串时看到的字符串一样全是A,如下图。

至此,我可以确定,这个样本使用了资源节加密技术,而且加密的资源节类型是UNICODE,名字是LOCALIZATION,但是加密方法、密钥我都不知道,所以接下来的分析就要注意这个问题。

4、查看导入表:

我看到有几个明显的可疑函数:

VirtualAllocEx、WriteProcessMemory这几个函数一般用来进程替换,所以推测这个样本可能还使用了进程替换技术;

SizeofResource、LoadResource、FindResource都是用来加密资源节必要的函数,证明了之前的判断。

到此,静态分析结束,我得到如下结论:

样本使用了资源节加密技术,目前并不清楚加密方法和密钥;

样本可能使用了进程替换技术,目前只是猜测。

基础动态分析

双击运行恶意样本程序,用火绒剑观察进程变化。

没运行时的初始状态:

运行之后的前一小段时间,进程中出现了Lab12-02.exe进程和它创建的子进程svchost.exe。

一段时间后,只剩下svchost.exe进程。

IDA pro反汇编分析

进入_main函数:

看到字符串“\svchost.exe”,极有可能就是代表在此目录下创建svchost.exe进程(正如动态分析时看到的那样),所以跳转到sub_40132C函数(sub_40149D函数跳转进去只是一些字符串的操作,对分析的帮助不大)。

跳转到loc_401362的位置,出现了”UNICODE”和”LOCALIZATION”字符串,刚好和加密的资源节名称吻合,猜测下面是加密功能的代码,接着向下进行。

出现了之前导入表中和资源节加密有关的一系列函数,说明 sub_40132C 函数应该就是加密资源节的作用,所以接着向下分析,看看能不能找出加密方法和密钥。

到这里我看到有一个函数sub_401000被调用,而之前的所有代码调用的只有导入表中存在的API,所以我判断这个函数一定和加密的内核功能有关联,并且我注意到了这个函数还有一个参数41h被传入进去,这是个16进制数。跳转进去。

一步一步向下分析,就到了跳转到loc_401016这个位置。有一条指令引起了我的注意:xor al, [ebp+arg_8]。这条指令在对寄存器eax的低8位内容进行异或运算,而一般的异或运算大多都是寄存器自身异或来清除内容,所以这个异或运算显得很不寻常。

这里使用了一些跳转语句,像是循环结构,所以按下空格键查看一下代码结构。

这里就清晰的看出了这是个典型的循环结构,而核心部分就在图中高亮的那行代码,显而易见,这个循环结构的目的就是让所有的内容进行一次异或运算,所以我判断,资源节加密的加密方法就是异或运算加密,密钥就是之前传入的参数41h。

之后,我导出了PE文件中加密:

的文件,用WinHex进行解密,果然显现出了明文,证明了我的判断,这里就不放图了。

回到_main函数,恶意代码完成资源节加密操作后,又调用了sub_4010EA函数,跳转过去看看。

往后看,发现了一些用于进程替换的函数调用(之前在导入表看到过),看到ntdll.dll,之前动态运行的时候在恶意进程中看到过这个文件。

 

再次回到_main函数后,再往下的代码并没有什么实际作用可以分析,至此,反汇编分析结束。

总结

这个恶意样本有如下恶意行为和功能:

该恶意样本进行了资源节内容加密,并且在运行时解码内容,释放出一个二进制文件。加密方法是异或运算加密,密钥是41h,可以用WinHex解密查看明文内容;

该恶意样本使用了进程替换技术,用释放的二进制文件替换svchost.exe;

总体来看,该恶意样本的目的就是利用进程替换,秘密地执行自己的进程。

异或
本作品采用《CC 协议》,转载必须注明作者和本文链接
这次的 PWNHUB 内部赛的两道题目都不是常规题,babyboa 考察的是 Boa Webserver 的 cgi 文件的利用,美好的异或考察的则是通过逆向分析解密函数来构造栈溢出 ROP。两道题目的考点都非常新颖,其中第一道题更是结合了 Web,值得大家复现学习。
2021年5月13日:c++ shellcode启动器,截至2021年5月13日,0/26完全未被检测到。在KaliLinux上,只需'apt-get install mingw-w64*'就可以了!使用git clone存储库,生成命名为beacon.bin的shellcode文件,然后运行charlotte.py注:使用msfvenom -p测试以及CobaltStrike原始格式Payload!
神兵利器 - XORpassWAF
2022-11-25 09:39:43
使用清除 PHP 函数:使用该函数的 XOR 绕过:$ python3 xorpass.py -e " system ". 为什么 PHP 将我们的有效负载视为字符串?^ 是异或运算符,这意味着我们实际上是在处理二进制值。那么让我们分解一下发生的事情。二进制值的 XOR 运算符将返回 1,其中只有一位为 1,否则返回 0 。当您对字符使用 XOR 时,您使用的是它们的 ASCII 值。这些 ASCII 值是整数,因此我们需要将它们转换为二进制以查看实际发生的情况。如果我们做一个'echo "A"^"S"^"B";'?
巧解一道CTF Android题
2022-08-10 16:15:40
无须还原代码,穷举爆破。我们打开jeb工具,定位到当前activity。我们看一下saveSN方法,可以看到这是一个native方法。我们解包一下apk,获取到so文件。下面进入ida分析。导出函数并没有相关java的native方法,说明是动态注册。我们看下JNI_ONLOAD函数:jint JNI_OnLoad{ if ( !
尽管存在 Exploit/PoC 的漏洞占比超过 5%,但只有1.8% 比例的漏洞有公开来源信息显示存在有在野利用。考虑到在野利用漏洞的危害性,仅通过标记漏洞是否存在公开 Exploit 来判定漏洞的现实威胁还是不够的。无 CVE 的漏洞占比接近三分之一,因此,有大量的漏洞在 CVE 的视野之外。漏洞是否与 0day 或 APT 活 动相关,这意味着漏洞可能被用于攻击高价值的目标。
隐私权和个人信息权益究竟是何种关系,是隐私权包含了个人信息权益,还是隐私权与个人信息权益应当并行适用、互不干扰,抑或它们存在重叠关系,应当交叉适用?回答这个问题,对于正确理解适用《民法典》、《个人信息保护法》的规定,妥当裁判相关纠纷,更好地保护隐私权和个人信息权益,至关重要。
前置知识UAF,异或加密,hook利用版本新增保护介绍2.33版本的glibc不同于以往,对于堆块地址的释放之后,对于同一大小的fastbin以及tcache有效的fd永远只有一个,剩余的bin照旧。对于2.33版本下对于fastbin以及tcache的fd指针会被进行异或操作加密,用来异或的值随堆地址发生改变。
NO.1 前言之前介绍了CobaltStrike4.3的License认证分析,今天介绍一下CobaltStrike4.3去除CheckSum8特征的方法,CheckSum8的特征和具体算法不在此细说,
Counter-Strike 1.6社区版发布,经过一段时间的实战测试,还是比较舒服的,但是自己现在逐渐脱离实战,开发的动力变小,所以放出来一个公开版本,大家提提建议,不定期更新一下修修BUG以及添加一些内部版本过时的功能到这上面,但也是比市面上的Evasion效果都好很多了,只有知识星球用户可以获取。
软件安全之CRC检测
2023-04-19 09:47:57
k++)//因为这里异或是从数据的高位开始,所以需要计算的数据左移8位,这里就需要计算8次。1)//判断最高位是否为1. 0xEDB88320;//最高位为1,右移一位,然后与0xEDB88320异或???相当于例子2中110与000异或值是不变的
VSole
网络安全专家