加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

两种姿势批量解密恶意驱动中的上百条字串

发布时间:2019-04-26 06:05:14 所属栏目:建站 来源:JiaYu
导读:作者:JiaYu 转自公家号:信口杂谈 1. 概述 在 360Netlab 的旧文 《双枪木马的基本办法更新及响应撒播方法的说明》 中,提到了 双枪 木马撒播进程中的一个恶意驱动措施 kemon.sys ,个中有颠末自界说加密的 Ascii 字符串和 Unicode 字符串 100+ 条: 这在
副问题[/!--empirenews.page--]

两种姿势批量解密恶意驱动中的上百条字串

作者:JiaYu 转自公家号:信口杂谈

 1. 概述

在 360Netlab 的旧文 《“双枪”木马的基本办法更新及响应撒播方法的说明》 中,提到了 双枪 木马撒播进程中的一个恶意驱动措施 kemon.sys ,个中有颠末自界说加密的 Ascii 字符串和 Unicode 字符串 100+ 条:

两种姿势批量解密恶意驱动中的上百条字串

这在 双枪 木马的撒播链条中只是一个很小的技能点,以是文中也没说详细是什么样的加密算法以及奈何解密,供说明员更利便地做样天职析事变。但这个技能点还算有点意思,尤其是对逆向入门阶段的伴侣来说,可以参考一下解法。最近又遇到了这个驱动措施的最新变种,跟团队的老司机请教了一番,索性写篇随笔记录一下。

感激老司机们解惑。也接待各路师傅不惜见教,提一些更快准狠的解法。

2. 样本轮廓

MD5: b001c32571dd72dc28fd4dba20027a88

2.1 字符串加密环境

驱动措施顶用到的 100+ 条字符串都做了自界说加密处理赏罚,在配置完各 IRP 调派函数和卸载例程之后,第一步操纵就是依次解密这些字符串。IDA 中打开样本,部门解密进程如下:

两种姿势批量解密恶意驱动中的上百条字串

整个解密进程的函数是 sub_100038C4 ,内里会多次挪用两个详细的解密函数:sub10003871 和 sub_10003898。前者解密 Ascii 字串,后者解密 Unicode 字串,都有两个参数:arg1—>要解密的字符串地点;arg2—>字符串长度。后头会把这两个函数别离定名为 DecryptAsciiStr 和 DecryptUnicodeStr 。这两个函数在 IDA 中看到的 xrefs 状况如下:

两种姿势批量解密恶意驱动中的上百条字串
两种姿势批量解密恶意驱动中的上百条字串

2.2 加密算法

前面说了,算法不伟大。以 DecryptAsciiStr 函数为例:

两种姿势批量解密恶意驱动中的上百条字串

反编译看看:

两种姿势批量解密恶意驱动中的上百条字串

DecryptUnicodeStr 算法着实沟通,只是由于字节组成差异,以是是两个解密函数分隔写:

两种姿势批量解密恶意驱动中的上百条字串

简朴总结起来,这套解密进程着实就是:把当前字节后头特定偏移处的字节与 0xC 异或,然后替代掉当前字节,把解密后的字节写入到当前位置,即完成解密。本人对暗码学不熟,不知道这是不是已著名号的加密算法,看起来像是 凯撒暗码 的变形增强版?对此有相识的伴侣接待指教。

3. 解密

相识了上面的环境之后,就该着手解密这百十多条字符串了。既然是用 IDA 来说明这个样本,抱负的状况应该是把这些字串批量解出来,直接在 IDA 中泛起,然后就可以举办后续说明白。既然是要自动化批量解密,写 IDAPython 应该算是最便捷的做法了。最终结果如图:

两种姿势批量解密恶意驱动中的上百条字串

3.1 姿势 1——自行实现解密算法

起首想到的思绪是:就两个解密算法,并且不伟大,不妨直接写个 IDAPython 剧本,实现这两个解密算法。解密之后把明笔墨串直接写到 IDB 文件中,在 IDA 中泛起。两个解密算法的 Python 版天职别如下(附带对 IDB 的 Patch 操纵):

两种姿势批量解密恶意驱动中的上百条字串
两种姿势批量解密恶意驱动中的上百条字串

这里轻微表明一下 make unicode str 时的操纵:

  1. old_type = idc.GetLongPrm(INF_STRTYPE) 
  2. idc.SetLongPrm(idc.INF_STRTYPE, idc.ASCSTR_UNICODE) 
  3. idc.MakeStr(argv[0], argv[0]+(argv[1]*2)) 
  4. idc.SetLongPrm(idc.INF_STRTYPE, old_type) 

在 IDA 的 UI 界面中,可以选择天生的字符串的范例(如下图),快捷键只有一个 A,对应的 idc 函数是 idc.MakeStr(0。然而 ida.MakeStr() 函数默认是天生 Ascii 字串的,要想天生 Unicode 字串,就必要挪用 idc.SetLongPrm() 函数配置一下字符串的范例。

两种姿势批量解密恶意驱动中的上百条字串

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读