PowerShell脚本样本分析

PowerShell脚本样本分析

haidragon 安全狗的⾃我修养 2022-11-06 15:34

PowerShell脚本样本分析

该恶意⽂件为ACE压缩⽂件,内含4个jpg⽂件和⼀个PE⽂件,利⽤WinRAR漏洞(CVE2018-20250),诱使受害者解压⽂件触发漏洞释放PE⽂件到启动⽬录,等待计算机重启后⾃动执⾏。通过⾃启的PE⽂件,释放powershell脚本、vbs脚本,并写⼊⾃启项到注册表,层层解密得到Y终的powershell攻击脚本,计算机启动后⾃动执⾏攻击脚本。脚本包含功能:远端下载⽂件、接收执⾏远端命令、解码数据等功能。powershell脚本经过⼏⼗次的混淆,⼿动反混淆⽐较费时间,定位到混淆⽤到的指令iex所在C#库,修改替换库可以⽐较⽅便的获取到混淆之前的代码。

1. 样本概况

1.1 样本信息

⽂ 件 名 : 9CFB87F063AB3EA5C4F3934A23E1D6F9Size: 410224 bytesMD5:

9CFB87F063AB3EA5C4F3934A23E1D6F9SHA1:

7E181CE4CD405836E658C888334CD5893637FB1ACRC32: 7A9FCD5C

1.2 测试环境及⼯具

运⾏平台:Windows 7 X64系统监控⼯具:⽕绒剑调试⼯具:IDA Pro、Windows

Powershell ISE

2. 沙箱监控

使⽤WinRAR打开查看压缩包内容,包含4个jpg图⽚⽂件和⼀个exe⽂件Dropbox.exe,并 设 置 有 路 径 : C:\C:C:..\AppData\Roaming\Microsoft\Windows\Start

Menu\Programs\Startup

解 压 后 会 触 发 WinRAR 漏 洞 ( CVE-2018-20250 ) , 释 放 exe 到 启 动 ⽬ 录 。

Dropbox.exe将在计算机启动时⾃动运⾏。其详细功能⻅逆向分析。

3. 逆向分析

3.1 CVE-2018-20250

WinRAR⽬录穿越漏洞(CVE-2018-20250):该漏洞是由于WinRAR 所使⽤的⼀个陈旧的动态链接库UNACEV2.dll所造成的,该动态链接库在2006 年被编译,没有任何的基础保护机制(ASLR,DEP 等)。该动态链接库的作⽤是处理ACE 格式⽂件。⽽在解压处理过程中存在⼀处⽬录穿越漏洞,允许解压过程写⼊⽂件⾄开机启动项,导致代码执⾏。

3.2 Dropbox.exe分析

将 Dropbox.exe 脱 掉 upx 壳

壳 后 的 PE ⽂ 件 信 息

使 ⽤ IDA Pro 静 态 分 析 , 主 要 ⾏ 为 : 释 放 并 执 ⾏ ps1 脚 本 。

释 放 ⽬ 录 :

3.3 释放的脚本a.ps1

主要⾏为:解密⽣成并执⾏vbs脚本

3.4 释放的vbs脚本

主 要 ⾏ 为 : 创 建 id.png ⽂ 件 , 被 加 密 的 powershell 脚 本 ⽂ 件 ”

创 建 tmp.vbs ⽂ 件 , ⽤ 于 隐 藏 窗 ⼝ 执 ⾏ 命 令

注册开机⾃启服务CortanaService,作⽤为—启动tmp.vbs⽆窗⼝执⾏解密脚本,解密脚 本 解 密 id.png ⽂ 件 , 得 到 “ 被 混 淆 的 powershell 脚 本 ” , ⻅ 下 图 。

脚 本 执 ⾏ 完 成 后 , ⽂ 件 资 源 管 理 器 查 看 被 释 放 的 ⽂ 件 :

解 密 脚 本 :

解密得到被混淆的ps1脚本,该脚本分析⻅下节。

3.5 反混淆powershell脚本混 淆 脚 本 ⻅ 下 图 :

脚本使⽤Invoke-Expression指令,将混淆脚本代码字符串作为命令执⾏,并使⽤字符串反转、字符串替换等⼿段混淆脚本。修改替换Invoke-Expression指令对应的库,在执⾏ iex 函 数 执 ⾏ 命 令 时 保 存 命 令 ⽂ 本 , 得 到 如 下 明 ⽂ 脚 本 :

该脚本开机时被执⾏,详细分析⻅下节。

3.6 明⽂powershell脚本

运⾏时⾸先进⼊如下循环:(该循环作⽤为连接服务端并上传设备信息)尝试获取设备信 息 , 并 连 接 服 务 器 , 连 接 成 功 则 跳 出 循 环 进 ⾏ 下 ⼀ 步 操 作 。

获取设备信息操作如下:(1)收集当前环境信息:Windows版本;内⽹IP地址;系统位数 ; 计 算 机 名 称 ; ⽤ 户 组 ; 公 ⽹ 地 址 。 (2) 计 算hash得 到 ⼀ 个 设 备 识 别id。

( 3 ) 获 取 计 算 机 当 前 公 ⽹ 地 址 如 下

连 接 服 务 端 报 错 ⽇ 志 :

由于样本的远端服务器失效,将在死循环请求连接。⼿动跳出循环观察后续⾏为:

进 ⼊ 下 ⼀ 个 循 环 : ( 本 循 环 ⽤ 于 接 收 服 务 端 指 令 )

分 发 服 务 端 返 回 的 指 示 , 并 执 ⾏ 对 应 指 示 操 作 :

该 循 环 的 主 要 ⾏ 为 整 理 如 下 :

4. ⽹络⾏为

4.1 上传设备信息的post请求:

url:http://162.223.89.53/oa/data:序列化的设备信息

4.2 接收服务端指令的get请求

url:http://162.223.89.53/oc/api/?t={deviceID}

4.3 发送服务端指令执⾏结果

url:http://162.223.89.53/or/?t={deviceID}data: 处理结果

4.4 查询计算机所在公⽹ip

## 5. 溯源

5.1 IP关联

样 本 请 求 的 服 务 器 地 址 被 收 录 在 微 步 开 源 情 报 , 地 址 标 签 归 属 于 APT 组 织

MuddyWater。

5.2 公开报告

根据APT组织MuddyWater与样本利⽤漏洞检索发现微软曾发布如下报告:利⽤WinRAR CVE-2018-20250漏洞的针对性攻击分析。报告提供CVE-2018-20250利⽤的攻击链与本 样 本 ⼀ 致 :

5.3 APT组织简介

在收录的apt组织利⽤⼿段信息库中 , 本 次 样 本 的 利 ⽤ ⽅ 式 , 也 匹 配 该 组 织 曾 使 ⽤ 的 技 术 ⼿ 段 。

点击关注,共同学习!
安全狗的自我修养

github haidragon

https://github.com/haidragon

posted @ 2022-11-06 15:40  syscallwww  阅读(144)  评论(0编辑  收藏  举报