程序分析 - task9

有人想看就提前发

程序分析

主体程序流程

主体程序加壳UPX3.08,壳上稍微做了修改导致自动解压的时候有问题,不过使用手动方式让其解压之后带壳调试,顺便dump一份代码到IDA对比查看还是可以的。dump出来的文件内容远小于解压前的文件内容,说明该文件有资源段,资源段存有数据。

image-20191113150628258

从DIE中能看到使用的连接器是一个不常见的连接器Polink 2.50,去网上查询之后,能够看到对应的编译器应该是Pelles C,这是种小众的编译器,IDA对其很不友好,主要是他的参数变量规则和普通的经典x86程序有很大区别,感觉他没有很分明栈帧,有些时候会跨栈帧取用数据。同时从汇编代码的一部分,能看出来这个编译器的优化是很垃圾的,很多垃圾代码没有被优化掉。


image-20191113151044512

前面这一部分都是分配空间创建结构体,没有什么实质的作用和改变,浮点数运算也只是为将一个计数器迭代到6000000.0,接下来循环体一定会进入,循环体内的内容为:

image-20191113151204283


首先第一个函数内容为:

image-20191113151240199

这里的第二个参数都是加密过后的,解密用到的key和加密过后的密文初始化都在这个函数中进行。


第二个函数的内容为:

image-20191113151625604

就是用key解密密文,得到API函数名


image-20191113151708933

接下来连续获取了两步基地址,而且都一样,有一个GetProcAddress也是两个参数为0,不太清楚用意。

只能理解为编译器的优化有问题。


image-20191113151825401

接下来会有很多个类似于这样的结构一开始不知道传参是怎么进去的,还有返回值那些,后来发现就是通过字符串,然后遍历动态链接库,然后遍历动态链接库的导出表函数地址,找到合适的,使用CallWindowProcA去调用函数。其中参数就是在红框上面初始化的,是初始化成一个结构体的样子。

伪代码看起来是这样的:

image-20191113152255330

看懂之后还是比较好理解。

image-20191113152326463

通过连续调用一些函数来获取到文件路径、文件大小、分配空间等操作。


image-20191113152807937

之后会读取自己文件内容然后分配空间拷贝进去,最后初始化一个字符串然后解密数据内容,解密方法应该是RC4


sub_402653理论上是程序正常运行的最后一个函数,因为他创建一个自己的进程,然后使用傀儡进程的方式将进程内容改写,运行的新解密出来的数据内容,新解密的数据为一个标准的PE文件。

image-20191113153029460

image-20191113153038602

image-20191113153100017

image-20191113153116395


但是如果运行失败的话是不会立即退出的。之后还有一个函数。

image-20191113153355161

函数本身没看出来有啥作用或者建立连接是哪里的,不过用到了这个网络库应该是建立了一个连接,因为没走到这里,暂时不知道具体有啥作用。


傀儡进程相关资料: https://www.52pojie.cn/thread-501486-1-1.html


解密的PE文件分析:

image-20191113153821298

相对而言就友好很多了。


image-20191113161945250

主程序里面能看到命令行参数待-shell的时候会走一条不一样的路径

带有-shell的路径里面能看到会创建一个注册表项Software\WindowsId Manager Reader注册表项名称为CFlagXXXz,值为1。之后会对注册表进行很多操作

image-20191113162357666

image-20191113162411743

根据版本和字长的不一样,会有不同的执行分支,不过大概内容差不多都是写带有-shell的自启动项,然后关闭Windows的自动更新,写出文件,还会禁用一些程序的自启动。

image-20191113162626196

接下来就是取到自己的全路径写自启动,并重启系统。


image-20191113162711968貌似这里是注册了一个自启动项,好像是一个截屏工具。


image-20191113162845962

之后启动了画图和svchost程序,并且通过之前傀儡进程的方式把另一段从资源段加载的代码写入这两个进程空间。

自身好像是依托于explorer的,因为一共用火绒剑看到了3个进程出了这两个就只有explorer


资源文件释放的文件应该是一个远程控制的DDOS程序,带有多种攻击模式,用受感染者的主机通过连接C2服务器下发命令执行ddos

image-20191113165724007


也有盗取密码相关函数,匹配网络流量有包含他定义的特征字符串的都发送给远程服务器

image-20191113170227535


image-20191113170845595

邮件FTP相关的登录账号密码也会被盗取