Oci.dll
获取当前session 其实session概念是从visit之后才出现的,在XP中所有程序都在session 0中运行
遍历进程 找explorer.exe
获取explorer.exe的token
调用CreateProcessAsUserA函数 在session 0中运行 syncnet.exe
在OD跟的时候和实际检测到的命令行是不一样的 实际上是使msdtc服务自动运行
到这里 oci.dll的任务完成了 syncnet.exe随之运行
Syncnet.exe
读setup.ini中的字符
直接以命令行的形式运行 实际上是在开机运行中加了start.exe文件
最后在注册表中加了一个键 并设置了一个值 现在还不知道是干什么的
Dllhost.exe
将解压的代码复制到0x10000000处
Map各个节区
解压IAT
关键跳转
其实这个阶段和解压阶段时候inst.exe解压config.dat的操作是一样的
在Application Data目录下创建limit目录
在目录下创建crossfire.exe
通过CreateProcess运行crossfire.exe
在0x10001F80进入远控环节
【不要问我为啥换了OD版本………因为那个版本崩了好几次我闹心了
获取主机名
向58.20.79.4建立TCP连接
发送数据包
获取本机计算机名 系统信息等
创建新线程 重复运行此函数 以保持远控连接
监控网络连接 发现与58.20.79.4:2015已经被建立了远控
Start.exe
在临时文件目录下创建了一个日志文件
写日志文件
其实这个exe文件的每一步做完都写了日志文件
我懒得开日志文件看了
设置环境变量
通过CreateProcess运行load.exe
在注册表建新键 并设置键值 和上面syncnet.exe的操作是一模一样的
其实分析到这里,这个样本的流程已经差不多完全出来了,我并没有从头到尾把所有行为都写出来,只写了一些关键部分,实际上最关键的部分是dllhost.exe这是远控的主体,剩下的无非是使远控能不断运行,包括开机自启动,几个主要文件循环运行。
再次梳理一下样本的流程(主要是我懒得画流程图了 就用字儿写吧)
首先 由样本1234(1)解压出irsetup.exe与lua.dll并运行irsetup.exe
然后 由irsetup.exe 在目录下解压出config.dat Inst.exe io.dat TenioDL_core.dll四个文件并运行Inst.exe文件
然后由Inst.exe在windows目录下创建了oci.dll 在PolicyDefine目录下创建了 setup.ini与syncnet.exe文件 在Slimit目录下创建了 config.dat dllhost.exe load.exe setup.ini start.exe TenioDL_core.dll
直接运行dllhost.exe开启远控
通过修改注册表启动msdtc服务时加载oci.dll 由oci.dll加载syncnet.exe
到现在可能有人注意到为什么没有提那个crossfire.exe……………这次真的是我不知道那个文件到底做了什么,在VT上检测这个文件也是白的 我去分析 也没发现什么恶意行为……所以就没写。
事实上…………..这是我分析的第一个远控……………………………….