恶意代码分析实战Lab6

恶意代码分析实战Lab6

Lab6-1

1.由main函数调用的唯一子过程中发现的主要代码结构是什么?

静态分析

image.png

InternetGetConnectedState函数

https://docs.microsoft.com/en-us/windows/win32/api/wininet/nf-wininet-internetgetconnectedstate

image.png

获取系统网络链接状态

返回值

image.png

有网络链接返回TRUE,否则返回FALSE

调用的唯一子过程

image.png

image.png

2.位于Ox40105F的子过程是什么?

调用InternetGetConnectedState返回值在eax通过cmp和jz实现if分支

image.png

3.这个程序的目的是什么?

目的是判断是否有网络链接

Lab6-2

1.main函数调用的第一个子过程执行了什么操作?

分析

strings查看

image.png

peid查看

  • InternetOpenUrlA打开一个句柄
  • InternetCloseHandle关闭一个句柄
  • InternetReadFile通过InternetOpenUrlA打开的句柄中获取数据
  • InternetGetconnectedState网络链接状态
  • InternetOpen初始化WININET.dll

image.png

dns解析网址然后请求

image.png

第一个子过程进行的操作

进入sub_401000函数

image.png

连接成功和连接失败

image.png

2.位于0x40117F的子过程是什么?

image.png

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

image.png

3.被main函数调用的第二个子过程做了什么?

打开sub_401040

image.png

image.png

判断读取的前4个字符是否位<!–(html注释)

image.png

4.在这个子过程中使用了什么类型的代码结构?

buffer是0x200=512,将buffer转为数组

image.png

image.png

5.在这个程序中有任何基于网络的指示吗?

第一个 InternetExplorer7.5/pma作为http 的user-agent

第二个是下载了 http://www.practicalmalwareanalysis.com/cc.htm这个网页

image.png

6.这个恶意代码的目的是什么?

main的两个函数知道他是先判断是否有可用网络,有就链接网址并下载,下载成功就解析然后返回给mian,mian函数看解析成功了就打印一条信息然后就sleep了

Lab6-3

1.比较在main函数与实验6-2的main函数的调用。从main中调用的新的函数是什么?

静态分析

有注册表自启动

image.png

程序会创建目录

image.png

前几个函数都在lab2中出现了、新函数sub_401130

image.png

2.这个新的函数使用的参数是什么?

进入这个函数发现有两个正数即有两个参数

image.png

第一个是之前的得到的字符串var_8如果还记得话

第二个是程序本身名字,看argv知道而且给出了注释

image.png

3.这个函数包含的主要代码结构是什么?

switch语句

image.png

4.这个函数能够做什么?

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

2018051614463627.png

Temp目录不存在则创建,存在则将cc.exe复制到此目录(IpExistingFileName源文件是当前程序)

image.png

将注册表中的Malware项中写入cc.exe每次程序启动都会执行

image.png

5.在这个恶意代码中有什么本地特征吗?

本地特征1

image.png

本地特征2

image.png

6.这个恶意代码的目的是什么?

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

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

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

Lab6-4

1.在实验6-3和6-4的main函数中的调用之间的区别是什么?

静态分析

strings查看

Internet Explorer 7.50、pma%d

动态user-agent,%d为数字

image.png

第一个401000还是检查网络,401040是解析HTTP,4012B5是printf,401150是switch

2.什么新的代码结构已经被添加到main中?

蓝色线从低部指向上面(循环)

image.png

计数器

image.png

循环结束自增操作

image.png

3.这个实验的解析HTML的函数和前面实验中的那些有什么区别?

查看sub_401040

比之前多了个正数(参数),将arg_0给eax后push,字符串push,然后调用printf

1
printf("字符串%d",arg_);

image.png

esc 查看arg_0来源

image.png

即每次循环user_agent都会变化

4.这个程序会运行多久?(假设它已经连接到互联网。)

程序循环1440次

image.png

60000毫秒1分钟,所以共运行1440分钟

image.png

5.在这个恶意代码中有什么新的基于网络的迹象吗?

动态user_agent

image.png

6.这个恶意代码的目的是什么?

首先判断是否有网络连接,无网络连接则退出、否则动态user_agent下载网页

0%