初始样本伪装成防火墙安装程序,使用的NSIS打包程序,NSIS是一个开源的打包安装项目,该样本对其源码进行了修改,常规的NSIS提取脚本无法提取NSIS安装设置脚本
动态创建一系列文件







通过动态函数调用注入代码到windows.storage.dll里创建cmd.exe进程,传入参数为”\“C:\\Windows\\System32\\cmd.exe\“ /c copy Kilometers Kilometers.cmd && Kilometers.cmd”,这里创建进程通过dwCreationFlags 中传入 CREATE_SUSPENDED,新进程的主线程将处于挂起状态

Kilometers.cmd脚本经过高度混淆
解混淆之后,主要的操作有将原本的文件Montreal处理后生成pin.com文件,将之前释放的其他文件合并成W文件cmd /c copy /b ..\Donations + ..\Advantages + ..\Longitude + ..\Shopzilla + ..\Terror + ..\Sunrise + ..\Ko + ..\Deny + ..\Curve + ..\Bundle + ..\Shakira W
之后通过resumethread重启cmd.exe进程的主线程,使得上面的cmd脚本运行

恢复主线程后,就在目标目录释放pin.com文件并传入w文件作为参数启动,之后删除W文件
创建W文件过程,将之前释放的文件合并成W文件cmd /c copy /b ..\Donations + ..\Advantages + ..\Longitude + ..\Shopzilla + ..\Terror + ..\Sunrise + ..\Ko + ..\Deny + ..\Curve + ..\Bundle + ..\Shakira W
PIN.COM的执行,传入W文件后才会进入正确分支,参数不对将执行错误逻辑
打开W文件

解密W文件
解码后的指令
提取指令执行
通过操作名称遍历注册的操作获取操作功能的代码执行地址
将后门代码注入explorer进程执行
openprocess通过动态函数调用

最终在explorer.exe中执行后门逻辑