恶意代码分析实战 Lab6

lab06-01

1先静态分析一波:

没加壳,看看导入函数:有检查是否有可用网络连接的函数,可能有联网行为


再看看字符串:一些程序提示信息字符串


再回到main函数看看程序结构,查看main的程序流程图(view--Graphs--Flow chart(快捷键F12)),可以发现结构很简单基本就两个函数调用,然后对第一个函数(InternetGetConnectedState)返回值进行判断,然后看关键push语句可以推测这是一个输出函数(第二个问题答案).所以程序就是看InternetGetConnectedState的返回值打印相应信息就结束了(第三个问题答案).然后可以运行一下程序检验一下,那么这个程序的分析就差不多结束了,程序的主要结构很明显就是if语句了



然而我断开网络后还是返回success,不同xp什么情况

win7下返回正确



Lab06-02

1静态分析一波,没有加壳,再看看函数,嗯相比较上一个程序多了几个函数都是网络相关,主要就是打开一个链接并且读取数据


再看看字符串,你会发现和上个程序蛮像的,多了一个URL链接,多了几个提示信息而已


查看程序main函数的流程图,第一次判断sub_401000函数的返回值,第二次判断sub_401040返回值


具体看第一个函数在做什么:双击查看,发现一个熟悉的函数InternetGetConnectedState,基本可以断定他是在检查是否有可用网络了

2 0x40117F,看到熟悉的  push    offset aSuccessParsedC ; "Success: Parsed command is %c\n"基本可以断定这是一个printf

3查看第二个函数0x401040,双击查看:简单看下这段代码(看汇编重点看call和跳转摸清程序流程而不是细节),所以看到internetopenurlA,以及它的参数,就知道在打开一个链接,然后是判断成功与否成功就跳转去执行40109D,该处第一个函数就是internetwritefile函数就知道他在干嘛了,不成功就关闭返回了,所以第二个函数作用就是打开一个链接并且读取一些信息(读取啥呢?看上面字符串信息有个加黄色的第一个就是那个网页)返回到数组.然后成功读取后他还跳到4010E5做了些比较操作


4啥类型?if啊还有啥,课本后答案也是答非所问可能觉得问题太蠢,所以还是说点别的,看下两个图变化,我将四个16进制转换为ASCII字符,然后定义了Buffer数组,第二个图是不是一目了然,明显是在比较buffer的头几个字符是不是<!--嘛.


5网络指示之前分析已经显现了一个是InternetExplorer7.5/pma作为http 的user-agent,第二个是下载了 http://www.practicalmalwareanalysis.com/cc.htm这个网页

6程序在干什么其实已经分析差不多了,我们前面分析了main的两个函数知道他是先判断是否有可用网络,有就链接网址并下载,下载成功就解析然后返回给mian,mian函数看解析成功了就打印一条信息然后就sleep了,解析不成功就byebye了.

程序在win7下运行:可以知道是读取的buffer不对,我用ollydbg跟踪程序查看buffer结果如下,可以看到多了一个<!DOCTYPE html>导致程序出错



xp下程序运行也出错:但是用浏览器打开网页正常,实在不懂为什么,internetopenurl返回0,lasterror是2F06,查了下这个错误:ERROR_INTERNET_SEC_CERT_CN_INVALID 12038 解释说是网站证书和输入网址不一样造成,证书是,而网址不是这个.那么同样情况为啥win7可以?不晓得呢



lab6-03

1在打印信息后多了一个sub_401130函数调用

2第一个是之前的得到的字符串var_8如果还记得话,第二个是程序本身名字,看argv知道而且给出了注释


3看关键注释,这是个switch结果,打开流程图也可以看出来


4根据给的信息做指定的动作,一共六种情况下面五种还有一个是直接打印信息


5本机特征下面两个字符串,可以推测可能写了个cc.exe并且还把他写到自启动项里面

.data:00407170 0000002E C Software\\Microsoft\\Windows\\CurrentVersion\\Run

.data:004071A0 0000000F C C:\\Temp\\cc.exe

6目的是什么,,,前面分析那么多他的行为就是目的咯.还有啥好说的

lab6-4

1函数区别,,,第一个401000还是检查网络,401040是解析HTTP,4012B5是printf,401150是switch对号入座即可,从1-4基本都差不多

2很明显看流程图可以看出结构成了循环了不再是之前的if了

3很明显在开头多了一个_sprintf的调用,这个函数把Internet Explorer 7.50/pma%d 写到了szagent,对比lab6-3发现原来user-agent是固定不变的Internet Explorer 7.5/pma,现在是可变的了关键在与%d填充了啥看参数可以知道是eax也就是第一个参数,回去看函数调用知道是var_c,再看看对var_c的一系列操作,先赋值为0,还跟5A0h比较,应该中间是有做加法的,在具体分析代码可以知道这是控制循环的那个变量,每次循环后加一和5A0h比较超出就结束



4sleep多久看他参数就好 0EA60h,10进制是多少呢24小时


5新的网络迹象就只有可变的user-agent了

6这个恶意代码的目的跟lab6-3是一样的只是多了一个使用可变的特殊user-agent来下载html而已

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值