服务热线
15527777548/18696195380
发布时间:2018-03-27
简要描述:
本文作者:i春秋作家——icq5f7a075d
宏病毒专辑:https://bbs.ichunqiu.com/forum.php?mod=collection/chateau-des-iles.=com/,4tf33w/w4t453.;e=xe”。Nrh1INh1S5hGed字符串...
宏病毒专辑:https://bbs.ichunqiu.com/forum.php?mod=collection/chateau-des-iles.=com/,4tf33w/w4t453.;e=xe”。
Nrh1INh1S5hGed字符串看着很像一个链接,但是中间多了几个字符,其实处理起来很简单,只要将多余字符删掉就好。
将这串字符串命名为Nrh1INh1S5hGed也是为了混淆,但是对于宏病毒分析人员来说,这种混淆并没有增加分析难度,分析人员只需要 全选--查找--替换。
Chr()函数还可以利用表达式,增加技术人员的分析难度:
Ndjs = Sgn(Asc(317 - 433) + 105)
ATTH = Chr(Ndjs) + Chr(Ndjs + 12) + Chr(Ndjs + 12) + Chr(Ndjs + 8)
经过分析发现,上述代码的字符串是:“http://”
4.4.2. Replace()函数
Replace函数的作用就是替换字符串,返回一个新字符串,其中某个指定的子串被另一个子串替换。
承接上文,把Nrh1INh1S5hGed中多余字符去掉,这里使用Replace函数把多余字符替换为空。
Nrh1INh1S5hGed = Replace(Replace(Replace(Nrh1INh1S5hGed,
Chr(60), ""), Chr(61), ""), Chr(59), "")
处理之后:
Nrh1INh1S5hGed=“http://chateau-des-iles.com/4tf33w/w4t453.exe”
可以很清晰看出Nrh1INh1S5hGed是一个下载名为w4t453可执行文件的链接。可以猜测w4t453.exe是一个恶意程序,之后一定会执行w4t453.exe。在用户一无所知的情况下,宏已经完成了入侵工作。
2.4.3. CallByname 函数CallByname函数允许使用一个字符串在运行时指定一个属性或方法。
CallByName 函数的用法如下:
Result = CallByName(Object, ProcedureName, CallType, Arguments())
CallByName 的第一个参数包含要对其执行动作的对象名。第二个参数,ProcedureName,是一个字符串,包含将要调用的方法或属性过程名。CallType 参数包含一个常数,代表要调用的过程的类型:方法 (vbMethod)、property let (vbLet)、property get (vbGet),或 property set (vbSet)。最后一个参数是可选的,它包含一个变量数组,数组中包含该过程的参数。
例如:CallByName Text1, "Move", vbMethod, 100, 100就相当于执行Text1.Move(100,10) 这种隐藏的函数执行增加了分析的难度。
CallByName的作用不仅仅在此,在下面的这个例子中,利用callByName,可以用脚本控制控件:
Dim obj As Object[/align] Set obj = Me Set obj = CallByName(obj, "Text1", VbGet) Set obj = CallByName(obj, "Font", VbGet) CallByName obj, "Size", VbLet, 50 '以上代码="Me.Text1.Font.Size = 50" Dim obj As Object Dim V As String Set obj = Me Set obj = CallByName(obj, "Text1", VbGet) Set obj = CallByName(obj, "Font", VbGet) V = CallByName(obj, "Size", VbGet) '以上代码="V = Me.Text1.Font.Size"
4.4.4. Alias替换函数名
Alias子句是一个可选的部分,用户可以通过它所标识的别名对动态库中的函数进行引用。
Public Declare Function clothed Lib "user32" Alias "GetUpdateRect" (prestigiation As Long, knightia As Long, otoscope As Long) As Boolean
如上例所示,clothed作为GetUpdateRect的别名,调用clothed函数相当于调用user32库里的GetUpdateRect函数。
事实上喜欢使用别名的不仅仅是宏病毒制造者,普通的宏程序员也喜欢使用别名。使用别名的好处是比较明显的,一方面Visual Basic不允许调用以下划线为前缀的函数,然而在Win32 API函数中有大量C开发的函数可能以下划线开始。使用别名可以绕过这个限制。另外使用别名有利于用户命名标准统一。对于一些大小写敏感的函数名,使用别名可以改变函数的大小写。
2.4.5. 利用窗体、控件隐藏信息
控件在宏程序里很常见,有些宏病毒的制造者们便想到利用控件隐藏危险字符串。
如图所示,空间里存放着关键字符串,程序用到上述字符串时,只需要调用标签控件的caption属性。
控件的各个属性(name、caption、controtiptext、等)都可以成为危险字符串的藏身之所。而仅仅查看宏代码,分析者无法得知这些字符串内容,分析者必须进入编辑器查看窗体属性,这大大增加了分析的难度。
2.4.6. 利用文件属性这种方式和利用窗体属性的方式类似,就是将一切能存储数据的地方利用起来。
如图所示读取的是ActiveDocument.BuiltinDocumentProperties Comments的数据,实际上就是文件备注信息里的数据,将这里的数据Base64解密并执行。
2.5. 恶意行为字符串不同的宏病毒执行不同的恶意行为,但这些恶意行为是类似的,它们使用的代码往往是相似的。通过大量的样本分析,笔者总结了一些宏病毒执行危险操作时代码中含有的字符串,详见下表:
字符串 | 描述 |
---|---|
http | URL连接 |
CallByName | 允许使用一个字符串在运行时指定一个属性或方法,许多宏病毒使用CallByName执行危险函数 |
Powershell | 可以执行脚本,运行.exe文件,可以执行base64的命令 |
Winmgmts | WinMgmt.exe是Windows管理服务,可以创建windows管理脚本 |
Wscript | 可以执行脚本命令 |
Shell | 可以执行脚本命令 |
Environment | 宏病毒用于获取系统环境变量 |
Adodb.stream | 用于处理二进制数据流或文本流 |
Savetofile | 结合Adodb.stream用于文件修改后保存 |
MSXML2 | 能够启动网络服务 |
XMLHTTP | 能够启动网络服务 |
Application.Run | 可以运行.exe文件 |
Download | 文件下载 |
Write | 文件写入 |
Get | http中get请求 |
Post | http中post请求 |
Response | http中认识response回复 |
Net | 网络服务 |
WebClient | 网络服务 |
Temp | 常被宏病毒用于获取临时文件夹 |
Process | 启动进程 |
Cmd | 执行控制台命令 |
createObject | 宏病毒常用于创建进行危险行为的对象 |
Comspec | %ComSpec%一般指向你cmd.exe的路径 |
5. 宏病毒的防御手段
安装杀毒软件,打全系统补丁是预防计算机病毒的基本措施,当然也适用于宏病毒,除此这些常规手段之外,宏病毒还有专门的防治措施。
5.1. 禁用宏
由于宏病毒的肆虐,Microsoft不得不在Office办公软件中提供了禁止宏的功能,用户只需要将其打开激活即可再次运行宏。以word2013为例,禁用宏的方法是:单击开发工具菜单下的“宏”,单击“宏安全性”,在随后的出现的对话框中选择“禁用所有宏,并发出通知”,如图所示:
这个方法一度被认为能防住所有的宏病毒,但是总会有0day能够绕过宏防护,禁用宏对于利用漏洞绕过宏禁用功能的宏病毒,仍然无能为力。
而且禁用宏功能还有两个很大的缺陷:一是它拒绝了一切的宏执行,并不区分正常的宏和还是病毒宏,这会造成某些文档无法打开或出错;二是宏病毒防护无法阻止启动word时Autoexec.DOT中的宏和Normal.DOT中的宏自动执行。
5.2越过自动宏
如果怀疑文档中存在宏病毒,可以在Office打开文档的时候,始终按住SHift键,将禁止存在的一起自动宏。这和禁用宏有异曲同工之妙,Shift键可以在退出时禁止任何AutoClose宏。这种方法的缺陷也很明显,它只能对付一时,当宏病毒利用其它菜单选项来实现破坏活动,这种方法就不再有效。
5.3恢复被宏病毒破坏的文档
对于普通用户来说,清理宏病毒显得麻烦,因为文档被宏病毒感染后(实际上是文档使用的模板文档被感染),使用文档时常常会出现一些异常情况,即使用杀毒软件将所有带毒的文档文件都处理一遍,但是,当重新打开它们时病毒又出现了。有些用户采用的是将Office卸载重装,但是有时候问题还是没有被解决。
其实,对于宏病毒的清理并不难,下面以删除Word宏病毒为例分步骤详细说明:
① 退出Word程序,先查看系统盘根目录下是否存在Autoexec.DOT文件,如果存在,而又不知道它是什么时候出现,则将其删除。
② 然后找到Normal.DOT文件,一般位于C:\Documents and Settings\ Administrator\Application Data\Microsoft\Templates目录下,用先前干净的备份将其替换,也可以直接删除,Word不会因为找不到Normal.DOT而拒绝启动,它会自动重新生成一个干净的没有任何外来宏的Noraml.DOT。
③ 查看Noraml.DOT所在的目录中是否存在其他模板文件,如果存在且不是自己复制进去的,将其删除。
④ 重新启动Word程序,查看Word是否恢复正常了。
⑤ 最后检查宏病毒防护是否被启用了,某些病毒会自动禁用宏病毒防护功能,如果不启用禁用宏功能,Word会很快再次被病毒感染。
>>>>>> 黑客入门必备技能 带你入坑和逗比表哥们一起聊聊黑客的事儿,他们说高精尖的技术比农药都好玩~
如果您有任何问题,请跟我们联系!
联系我们