“魔术远控”木马分析
本帖最后由 安静的小酒吧 于 2015-12-29 15:15 编辑“魔术远控”分析报告--我在吾爱的第四个样本分析
安静的小酒吧基本信息名称:魔术远控
类型:木马
运行环境:XP、Vista
开发语言:MicrosoftVisual C++ ver. ~6.0~7.10
分析环境:XP
分析时间:2015-12-23
MD5:
主模块(名称任意):40D9BF6C01917C5871F773DE0D0701E7
dll390.dll: 157083B14C66FB03FC7B4A0CF653E9BB
简介“魔术远控”如此有名,以至于百度百科都有词条了(http://baike.baidu.com/link?url=f1nRKOCRmRbQPwI8JWLnJ0XaaiySZsVz1Os9RB_0BScAYNksdlc2Esxxgouncyd63twYUq9xT9DHnfmUQs0TgQsInlnte7drK48yPLAD_jxh_FvotDdjc_T9Sow-vHKb),好像是一款专业级的远程协助软件一样,搞得我都不敢把它当木马来分析。我拿到的应该是2009年的一个版本的,控制端服务端都有,甚至还有一个“魔术远控白皮书”。所以这是一个老马了,分析的目的就是拿来练练手,这是一个商业木马,是专门用来卖钱的木马,白皮书里有各种标价,我拿到的可能不是最牛逼的版本,至少白皮书里的有些功能没有看到。样本声称很牛逼,但是连最基本的免杀处理都没有,ida直接使用F5插件代码十分清晰,都不用动态调试就知道样本的基本流程。
执行流程0x00 释放并加载DLL样本在一开始直接释放了一个保存在资源部分的dll文件到temp目录,然后加载。释放dll文件加载dll文件0x01 主模块sleep一段时间后删除自身,并退出通过释放执行一个bat文件来删除自身 接下来的工作都是在释放的dll的入口函数里面执行0x02 通过当前的路径是否在系统目录中,来判断自身是否已经驻扎到系统中0x03 枚举进程,查找卡巴斯基的avp.exe进程avp.exe属于Kaspersky卡巴斯基杀毒软件相关程序。有两个avp.exe属正常现象,一个用户名是电脑名字,一个用户名是系统,一个是实时监控的进程(也就是监控其他的),另一个是卡巴自我保护的进程。0x04 释放文件到系统驱动目录,并创建相关服务释放的文件名为MgicRc.sys,是一个驱动文件,我对驱动不是很熟悉。简单根据分析应该是用来做特定文件驱动级隐藏的。
0x05 将自身拷贝到系统目录下,命名为chike.dll0x06 创建自启动服务,并启动 %SystemRoot%\system32\svchost.exe-k netsvcs通过修改注册表,用自身来替换netsvcs
710022B7|.5>push eax ; /pDisposition = 0012F31C
710022B8|.8>lea eax, ; |
710022BB|.5>push eax ; |pHandle = 0012F31C
710022BC|.5>push ebx ; |pSecurity = NULL
710022BD|.6>push 0x2 ; |Access = KEY_SET_VALUE
710022BF|.5>push ebx ; |Options = REG_OPTION_NON_VOLATILE
710022C0|.5>push ebx ; |Class = NULL
710022C1|.5>push ebx ; |Reserved = 0x0
710022C2|.8>lea eax, ; |
710022C8|.5>push eax ; |Subkey = "SYSTEM\CurrentControlSet\Services\6to4\Parameters"
710022C9|.6>push 0x80000002 ; |hKey = HKEY_LOCAL_MACHINE
710022CE|.8>mov ,ebx ; |
710022D1|.F>call dword ptr ds:[<&ADVAPI32.RegCreateKeyExA>] ; \RegCreateKeyExA
0x07 服务启动时dll已经处于系统目录中,此时样本的自启动、隐藏等工作已经完成,接下来就是主要的连接工作。创建线程,主要用于回连控制端。(r_开头的函数名是我识别后按照自己的命名习惯,重新命名的)0x08 接下来的工作就是一个常见的远控木马的工作了,以下简单列举(其中回连的方式、地址、端口都是服务端配置时设置的参数)。(1) 通过http下载文件(2) socket连接(3) 收集并回传系统的基本信息,包括设备信息、操作系统版本等(4) 消息及其对应的功能实现都是采用启动新线程或者下载可执行文件实现,如下:switch ( *(_BYTE *)(v3 + 1) ){
case 2:
r_createthread(a1, v6, 0);
break;
case 5:
r_createthread(a1, v6, 1);
break;
case 8:
r_createthread(a1, v6, 2);
break;
case 0xB:
r_createthread(a1, v6, 3);
break;
case 0x10:
r_createthread(a1, v6, 4);
break;
case 0x13:
r_createthread(a1, v6, 5);
break;
case 3:
r_download_dll_run_fun(a1, v6, v7, 0);
break;
case 6:
r_download_dll_run_fun(a1, v6, v7, 1);
break;
case 9:
r_download_dll_run_fun(a1, v6, v7, 2);
break;
case 0xC:
r_download_dll_run_fun(a1, v6, v7, 3);
break;
case 0x11:
r_download_dll_run_fun(a1, v6, v7, 4);
break;
case 0x14:
r_download_dll_run_fun(a1, v6, v7, 5);
break;
case 0xD:
v8 = LoadLibraryA("Shell32.dll");
v9 = (void (__stdcall *)(_DWORD, const char *, int, _DWORD, _DWORD, _DWORD))GetProcAddress(v8, "ShellExecuteA");
if ( v9 )
v9(0, "open", v6, 0, 0, 0);
break;
case 0xE:
v10 = CreateThread(0, 0, r_download_run_pe, v6, 0, 0);
CloseHandle(v10);
break;
default:
return 0;
}其他这是一个老马,也是一个传统中规中矩的木马,不是很有新意,但是功能齐全,自身比较小巧的木马。分析不合理的地方还请大牛指出,共同学习进步。样本、idb文件、分析报告都在这(解压密码52pojie):
static/image/hrline/3.gif
对了,今天是圣诞节哦!!!
/\~~~~~~~~~~~~~\ ▓ ^*^ ☆ $$ .☆ ./ \~~~▓~ ~~~~\ ◆ 圣诞 .快乐 * $◢◣$ * / ^^ \ ══════\.◆ * * * $◢★◣$ * ..▎[] ▎田 田 ▎ |┃◆ . * $◢■■◣$ * &&▎ ▎ ▎'|'▎ @ * $◢■■■◣$ * # ■■■■■■■■■■〓▄▃▂▁愿你圣诞快乐︸︸||︸︸
dongwenqi 发表于 2015-12-26 11:57
卡巴斯基可以杀了
这是比较老的木马了,本身也没有太多免杀处理,杀软基本都会杀吧 xiaorui 发表于 2015-12-26 00:07
楼主,这个控制端有后门吗?
控制端没有分析,不太清楚,有时间分析下。 学习了,支持一个 分析的很详细,学习了——圣诞快乐 小白 不明觉厉 感谢分享 技术贴,很好,受教了,谢谢楼主! 感谢分享,学习了 分析的不错就是看不懂啊 感谢分享技术贴,圣诞快乐 楼主,这个控制端有后门吗?