九维团队-青队(处置)| 恶意软件的混淆技术(四)

九维团队-青队(处置)| 恶意软件的混淆技术(四)


写在前边

1.本文原文为K A, Monnappa. 2018年发表的《Learning Malware Analysis》,本文均为译者对相关内容的翻译及实践记录,仅供各位学术交流使用。另出于易读性考虑,对部分字句有所删改。 
2.如各位需要引用,请做原文引用,格式如下所示: 
[序号]K A, Monnappa. LearningMalware Analysis[M]. 2018.06. Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK. 
3.因文章整体内容较长,完整内容将会在本公众号拆分为多篇内容分别发出。本文为该系列的第四篇。
往期内容请参见合集《Learning Malware Analysis》




恶意软件加密


恶意软件的作者经常会使用简单的编码技术,因为这已足以掩盖数据。但有时,攻击者也会使用加密技术。为了识别二进制文件中加密功能的使用,我们可以寻找加密指标(签名),如:

  • 引用加密功能的字符串或导入表

  • 加密的常量

  • 加密程序使用的独特指令序列



01

使用Signsrch识别加密货币签名

搜索文件或进程中的加密签名的一个有用工具是Signsrch。

网址:http://aluigi.altervista.org/mytoolz.html

*左右滑动查看更多


该工具依靠密码学签名来检测加密算法。加密签名位于一个文本文件中,即signsrch.sig。在下面的输出中,当signsrch以-e选项运行时,它显示在二进制文件中检测到DES签名的相对虚拟地址。

C:signsrch>signsrch.exe -e kav.exe   Signsrch 0.2.4   by Luigi Auriemma   e-mail: aluigi@autistici.org   web: aluigi.org     optimized search function by Andrew http://www.team5150.com/~andrew/     disassembler engine by Oleh Yuschuk   - open file "kav.exe"   - 91712 bytes allocated   - load signatures   - open file C:signsrchsignsrch.sig   - 3075 signatures in the database    - start 1 threads   - start signatures scanning:     offset num description [bits.endian.size]     --------------------------------------------   00410438 1918 DES initial permutation IP [..64]   00410478 2330 DES_fp [..64]   004104b8 2331 DES_ei [..48]   004104e8 2332 DES_p32i [..32]00410508 1920 DES permuted choice table (key) [..56] 00410540 1921 DES permuted choice key (table) [..48] 00410580 1922 DES S-boxes [..512][Removed]

*左右滑动查看更多
 

一旦知道了加密指标所在的地址,就可以用IDA导航到该地址。例如,如果想导航到地址00410438(DES的初始排列组合IP),在IDA中加载二进制文件并选择Jump|Jump to address(跳转|跳转到地址)(或G热键)并输入地址,如图所示。

九维团队-青队(处置)| 恶意软件的混淆技术(四)


一旦点击确定,你将到达包含指标的地址(在这种情况下,DES初始permutation IP,标记为DES_ip),如以下截图所示。

九维团队-青队(处置)| 恶意软件的混淆技术(四)


现在,要知道这个加密指标在代码中的使用位置和方式,你可以使用交叉引用(Xrefs-to)功能。使用交叉引用(Xrefs to)功能显示,DES_ip在地址为0x4032E0(loc_4032E0)的函数sub_4032B0中被引用。

九维团队-青队(处置)| 恶意软件的混淆技术(四)


现在,导航到地址0x4032E0可以直接进入DES加密函数,如下面的截图所示。一旦找到了加密函数,你可以使用交叉引用来进一步检查,以了解在什么情况下加密函数被调用以及用于加密数据的密钥。

九维团队-青队(处置)| 恶意软件的混淆技术(四)


与其使用-e选项来定位签名,然后手动浏览使用签名的代码,你可以使用-F选项,它将给你使用加密指标的第一条指令的地址。在下面的输出中,用-F选项运行signsrch直接显示了代码中使用加密指标DES初始排列IP(DES_ip)的地址0x4032E0。

C:signsrch>signsrch.exe -F kav.exe[removed]
offset num description [bits.endian.size]--------------------------------------------[removed]004032e0 1918 DES initial permutation IP [..64]00403490 2330 DES_fp [..64]

*左右滑动查看更多


-e和-F选项显示相对于PE头中指定的首选基址的地址。例如,如果二进制文件的首选基址是0x00400000,那么由-e和-F选项返回的地址是通过将相对虚拟地址与首选基址0x00400000相加而确定的。


当你运行(或调试)二进制文件时,它可以在首选基地址以外的任何地址被加载(例如,0x01350000)。如果你希望在一个正在运行的进程中或在调试二进制文件时(在IDA或x64dbg中)找到加密指标的地址,那么你可以用-P <pid或进程名称>选项运行signsrch。-P选项会自动确定加载可执行文件的基本地址,然后计算出加密签名的虚拟地址,如下所示。

C:signsrch>signsrch.exe -P kav.exe [removed]- 01350000 0001b000 C:UserstestDesktopkav.exe - pid 3068- base address 0x01350000- offset 01350000 size 0001b000   - 110592 bytes allocated   - load signatures   - open file C:signsrchsignsrch.sig   - 3075 signatures in the database   - start 1 threads   - start signatures scanning:offset num description [bits.endian.size] -------------------------------------------- 01360438 1918 DES initial permutation IP [..64] 01360478 2330 DES_fp [..64]     013604b8 2331 DES_ei [..48]

*左右滑动查看更多


除了检测加密算法外,Signsrch还可以检测压缩算法、一些反调试代码和Windows加密函数,通常以Crypt开头,如CryptDecrypt()和CryptImportKey()。



02

使用FindCrypt2检测加密常量


Findcrypt2是一个IDA Pro插件,可以在内存中搜索许多不同算法所使用的加密常数。要使用该插件,请下载它,并将findcrypt.plw文件复制到IDA插件文件夹中。

http://www.hexblog.com/ida_pro/files/findcrypt2.zip如该链接无法下载,推荐换一种yara的匹配方式https://github.com/polymorf/findcrypt-yara

*左右滑动查看更多


现在,当加载二进制文件时,该插件会自动运行,或者我们可以通过选择Edit | Plugins | Find crypt v2(编辑|插件|查找密码v2)来手动调用它。该插件的结果会显示在输出窗口。

九维团队-青队(处置)| 恶意软件的混淆技术(四)


FindCrypt2插件也可以在调试模式下运行。如果使用IDA 6.x或更低的版本,FindCrypt2工作得很好;但可能是由于IDA 7.x API的变化,它似乎不能在IDA 7.x版本中工作。



03

利用YARA检测加密签名


另一种识别二进制文件中使用加密技术的方法是用包含加密签名的YARA规则扫描二进制文件。你可以自己编写YARA规则,或者下载其他安全研究人员编写的YARA规则,然后用YARA规则扫描二进制文件。

其他YARA规则示例:https://github.com/x64dbg/yarasigs/blob/master/crypto_signatures.yara

*左右滑动查看更多


x64dbg集成了YARA;如果你想在调试时扫描二进制文件中的加密签名,这很有用。我们可以将二进制文件加载到x64dbg中(确保执行在二进制文件的某个地方暂停),然后右键点击CPU窗口,选择YARA(或Ctrl + Y);这将带来这里显示的Yara对话框。点击 "文件",加载包含YARA规则的文件。也可以通过点击目录按钮从一个目录中加载含有YARA规则的多个文件。

九维团队-青队(处置)| 恶意软件的混淆技术(四)


下面的截图显示了用包含加密签名的YARA规则扫描恶意二进制文件后检测到的加密常量。现在你可以右击任何一个条目,选择在转储中关注,以查看转储窗口中的数据,或者,如果签名与加密程序有关,那么你可以双击任何一个条目来浏览代码。

九维团队-青队(处置)| 恶意软件的混淆技术(四)


像RC4这样的加密算法不使用加密常数,因为它不容易用加密签名来检测。通常,你会看到攻击者使用RC4来加密数据,因为它很容易实现。

RC4的使用步骤:http://blog.talosintelligence.com/2014/06/an-introduction-to-recognizing-and.html

*左右滑动查看更多



04

使用Python解密


在确定了加密算法和用于加密数据的密钥后,可以使用PyCryto的Python模块来解密数据。要安装PyCrypto,你可以使用apt-get install python-crypto 或 pip install pycrypto 或从源代码中编译它。

PyCryto下载网址:https://www.dlitz.net/software/pycrypto/

*左右滑动查看更多


Pycrypto支持散列算法,如MD2、MD4、MD5、RIPEMD、SHA1和SHA256。它还支持加密算法,如AES、ARC2、Blowfish、CAST、DES、DES3(Triple DES)、IDEA、RC5和ARC4。


下面的Python命令演示了如何使用Pycrypto模块生成MD5、SHA1和SHA256哈希值。

# 由于原脚本存在bug,这里给出的是调整过的脚本
>>> from Crypto.Hash import MD5,SHA256,SHA1>>> text = "explorer.exe">>> MD5.new(str.encode(text)).hexdigest()'cde09bcdf5fde1e2eac52c0f93362b79'>>> SHA256.new(str.encode(text)).hexdigest() '7592a3326e8f8297547f8c170b96b8aa8f5234027fd76593841a6574f098759c'>>> SHA1.new(str.encode(text)).hexdigest() '7a0fd90576e08807bde2cc57bcf9854bbce05fe3'

*左右滑动查看更多


为了解密内容,从Crypto.Cipher中导入适当的加密模块。下面的例子显示了如何在ECB模式下使用DES进行加密和解密。

# 由于原脚本存在bug,这里给出的是调整过的脚本
>>> from Crypto.Cipher import DES>>> text = "hostname=blank78">>> key = "14834567">>> des = DES.new(str.encode(key), DES.MODE_ECB)>>> cipher_text = des.encrypt(str.encode(text))>>> cipher_text'xdexaftxd5)sNj`xf5xaexfdxb8xd3fxf7'>>> plain_text = des.decrypt(cipher_text)>>> plain_text'hostname=blank78'

*左右滑动查看更多


(未完待续)




—  往期回顾  —


九维团队-青队(处置)| 恶意软件的混淆技术(四)

九维团队-青队(处置)| 恶意软件的混淆技术(四)

九维团队-青队(处置)| 恶意软件的混淆技术(四)

九维团队-青队(处置)| 恶意软件的混淆技术(四)

九维团队-青队(处置)| 恶意软件的混淆技术(四)



关于安恒信息安全服务团队
安恒信息安全服务团队由九维安全能力专家构成,其职责分别为:红队持续突破、橙队擅于赋能、黄队致力建设、绿队跟踪改进、青队快速处置、蓝队实时防御,紫队不断优化、暗队专注情报和研究、白队运营管理,以体系化的安全人才及技术为客户赋能。

九维团队-青队(处置)| 恶意软件的混淆技术(四)

九维团队-青队(处置)| 恶意软件的混淆技术(四)

九维团队-青队(处置)| 恶意软件的混淆技术(四)

原文始发于微信公众号(安恒信息安全服务):九维团队-青队(处置)| 恶意软件的混淆技术(四)

版权声明:admin 发表于 2022年12月16日 上午9:28。
转载请注明:九维团队-青队(处置)| 恶意软件的混淆技术(四) | CTF导航

相关文章

暂无评论

暂无评论...