lab06-01

1先静态分析一波:

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

恶意代码分析实战 Lab6

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

恶意代码分析实战 Lab6

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

恶意代码分析实战 Lab6

恶意代码分析实战 Lab6

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

win7下返回正确

恶意代码分析实战 Lab6

恶意代码分析实战 Lab6

Lab06-02

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

恶意代码分析实战 Lab6

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

恶意代码分析实战 Lab6

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

恶意代码分析实战 Lab6

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

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

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

恶意代码分析实战 Lab6

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

恶意代码分析实战 Lab6恶意代码分析实战 Lab6

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>导致程序出错

恶意代码分析实战 Lab6

恶意代码分析实战 Lab6

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

恶意代码分析实战 Lab6

恶意代码分析实战 Lab6

lab6-03

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

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

恶意代码分析实战 Lab6

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

恶意代码分析实战 Lab6

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

恶意代码分析实战 Lab6

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比较超出就结束

恶意代码分析实战 Lab6恶意代码分析实战 Lab6

恶意代码分析实战 Lab6

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

恶意代码分析实战 Lab6

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

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

相关文章:

  • 2021-05-01
  • 2021-05-06
  • 2021-08-25
  • 2021-10-14
  • 2021-06-26
  • 2021-07-07
  • 2021-04-22
  • 2021-11-17
猜你喜欢
  • 2021-07-03
  • 2021-10-17
  • 2022-01-07
  • 2021-09-24
  • 2021-08-21
相关资源
相似解决方案