恶意代码分析实战 — Lab 20-03

Idapro载入程序,查看strings,程序中可能会访问多个html页面

根据错误提示,推断程序功能与网络连接和请求访问有关,GET和POST请求,upload和download操作等,此程序可能是个恶意后门

查看imports导入表,调用ws2_32库,有很多关于socket操作

从main函数入口开始分析程序,首先config.dat作为参数调用sub_401ee0

进入函数,有个call sub_403180,此函数将CreateFileA读取config.dat文件,并且处理各种Exception

之后程序存储一些硬编码URL信息

之后call sub_401F80

进入此call,首先push hostshort和source,调用sub_403D50,此函数调用htos,socket,connect等来建立socket连接

然后调用sub_402FF0,此函数调用GetComputerNameA来获取victim information

然后调用sub_404ED0,此函数获取HTTP POST请求

Call sub_404B10处理response

综上,sub_401F80是一个信号发送的函数,根据返回响应来控制程序执行。

最后一个部分,在一个无线循环中,调用sleep和loc_402410

进入程序分析,首先call sub_403D50初始化网络连接,然后call sub_404CF0

发送GET请求,并处理response和args等

继续往下,switch 6 cases

[esi+4]地址值减去0x61,然后与0x5比较,大于5时会抛出异常,值为0-5时实现switch jump

来到跳转表,共有6个跳转地址,分别做分析

  1. Case 0: 实现delete
  • Case 1:  call sub_4025E0

atoi字符串变数字,sleep后返回

  • Case 2: call sub_402F80

主要是CreateProcessA

  • Case 3: call sub_402BA0,调用CreateFileA和WriteFile将response下载并写入本地磁盘
  • Case 4: call sub_402C70

CreateFileA和GetFileSize等操作upload文件到远程服务器

  • Case 5: call sub_402D30

GetUserNameA, GetComputerNameA, GetVersionExA, GetSystemDefaultLCID等获取目标系统信息,并response回服务器

您可能还喜欢...