[原创]新人第一次病毒分析(附专杀工具源码) |
您所在的位置:网站首页 › scr病毒专杀 › [原创]新人第一次病毒分析(附专杀工具源码) |
1. 样本概况1.1 样本信息样本名称:熊猫烧香 MD5: 19DBEC50735B5F2A72D4199C4E184960 SHA1: CA3A1070CFF311C0BA40AB60A8FE3266CFEFE870 实验平台:Windows 7 Ultimate With Service Pack 1 分析工具:PEiD v0.95、StudyPE x64 v1.11、IDA x32 v7.4、Bochs v2.6.9、VMWare WorkStation v15.56、x32dbg 初步行为观察:文件行为: 自复制到系统目录并运行,复制到其他盘符根目录隐藏,并且加入autorun.ini文件。感染exe文件,修改图标,感染后的文件体积增大。 注册表行为:创建启动项,删除系统程序,关闭安全中心
网络行为:访问IP地址192.168.232.1 字符串提取后,发现可能存在安全软件对抗,有可能会破坏安全软件的注册表项
存在一些特殊目录 疑似弱口令字典,可能存在弱口令猜解行为 导入表分析: 文件操作WriteFileUnhandledExceptionFilterSetFilePointerSetEndOfFileReadFileGetFileSizeGetFileTypeCreateFileGetWindowsDirectoryASetFileAttributesACopyFileA 文件、窗口遍历FindNextFileAFindFirstFileAFindCloseFindWindowA 注册表操作RegQueryValueExARegOpenKeyExARegCloseKeyRegSetValueExARegOpenKeyExARegDeleteValueARegCreateKeyExA 提升权限类OpenProcessTokenLookupPrivilegeValueAAdjustTokenPrivileges 网络连接WSACleanupWSAStartupgethostnamegethostbynamesocketinet_ntoainet_addrhtonsconnectclosesocketInternetGetConnectedStateInternetReadFileInternetOpenUrlAInternetOpenAInternetCloseHandle 服务类OpenServiceAOpenSCManagerADeleteServiceControlServiceCloseServiceHandle 添加计划任务,远程下载NetScheduleJobAddURLDownloadToFileA 2.具体行为分析2.1 主要行为 程序开头有两次条件判断: 用两个字符串进行运算,得到的结果与固定字符串“武汉男生感染下载者”进行比对,一致则继续,否则将退出程序。之后再次用两个字符串运算后判断,与” uup2..uxetm/vhjnx.fdu/”一致则继续,否则将退出程序。 该程序首次执行流程为: 判断恶意程序运行目录下是否存在”Desktop_.ini”文件,如果存在则删除。读取自身到内存,判断是否为已经感染的文件,如果是则附带运行原文件。判断当前运行目录是否为system32,不是则自复制到system\drivers目录下,文件名为spo0lsv.exe,并且执行该文件,然后结束自身。
第二次执行流程:当程序在drivers目录下执行且文件名为spo0lsv.exe时,则会执行感染传播部分(sub_40D18C)
感染传播部分流程:分为三个功能函数:感染传播部分第一个功能函数是建立一个线程,这个线程会遍历所有盘符下的文件夹 值得注意的是,程序会避开一些目录(如WINDOWS,WINNT),如果出现这些目录将会进入下一轮搜索。否则会在该目录下创建Desktop_.ini文件,内容为当前的系统时间。 而当检测到GHO文件时(GHOST备份文件),则会删除该文件。推测这样做是为了避免用户恢复系统 当搜索到EXE,SCR,PIF等可执行文件后缀时,会进入感染流程 感染流程为:读取搜索到的文件,读取检查是否出现WhBoy字符串,如果有则说明该文件已经被感染,将不会继续感染流程。如果不存在,则会把恶意程序自身复制后覆盖该文件。接着把读取的原文件写入到该文件的末尾。 而当搜索到的文件为setup.exe或者NTDETECT.COM时,不会执行感染流程,因为这两个文件可能为恶意程序自己释放的文件。 感染传播部分第二个功能函数为建立一个定时器,每6秒触发一次,定时器功能如下 遍历盘符(跳过ab盘),寻找盘符根目录是否有autorun.inf文件,如果存在,则搜索是否有setup.exe文件,对比是否为恶意程序本身,如果不是就删除该文件。最终会在每个盘符根目录留下一个隐藏属性的setup.exe(恶意程序本身),还有一个隐藏属性的autorun.inf(自动播放)文件。文件内容为“[AutoRun]\r\nOPEN=setup.exe\r\nshellexe”值得注意的是,该功能为计时器定时触发,当用户插入U盘时,也会受到感染。 感染传播部分第三个功能函数为网络传播,将会创建10个线程,对139,445端口进行漏洞利用,功能如下: 得到本机网段地址,对网段内主机139端口和445端口依次尝试连接 一旦连接成功,则会尝试使用默认账号和内置的弱口令字典进行漏洞利用,如果成功连接,将会拷贝恶意代码到远程主机,名为“GameSteup.exe”,并且使用添加计划任务的方式远程执行。 第三部分:第三部分共有六个计时器事件 第一个计时器:查找窗口信息,找到疑似杀毒软件或者安全辅助工具,将会使用postmessage发送WM_QUIT消息来使进程退出。
而后对杀毒软件进程进行遍历并且结束。 接着会注册为开机启动项(名为svcshare),并且修改注册表使得用户无法通过修改文件夹设置来查看隐藏文件CheckedValue(1→0) 第二个计时器:从http://www.ac86.cn/66/up.txt 读取内容,如果读取到的内容为“QQ”,则会进行文件下载并且执行 第三个计时器: 会创建一个线程用于和上个功能一样的下载,还会创建一个线程删除用户共享 第四个定时器:主要操作是关闭杀毒软件的服务项、计划任务项等 第五个计时器:功能为读取内置的一些网页
第六个计时器:功能同样为读取网页,根据结果决定是否要下载并执行文件 2. 解决方案(或总结) 结束并删除C:\Windows\System32\drivers\spo0lsv.exe文件 删除所有根目录下的autorun.inf文件以及setup.exe文件 删除所有Desktop_.ini文件 检查可移动设备根目录文件 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL\CheckedValue修改为1 删除自启动项HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\svcshare 使用专杀工具恢复所有被感染的文件最后附上我写的专杀工具(暂时只对EXE做了修复): 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165#include#include//#include #include #pragma comment(lib,"shlwapi.lib")#include#include using namespace std;const char Features[5] = { 'W','h','B','o','y' }; //检查是否为whboy病毒文件bool checkVirus(LPCWCHAR Filename) { FILE* F1 = NULL; if (0 == _wfopen_s(&F1, Filename, L"rb")) { //病毒本体大小 BYTE File[0x7531] = { 0 }; fread_s(File, 0x7531, 0x7531, 1, F1); //比较特征 if (memcmp(File + 0x4920, Features, 5)) { fclose(F1); return false; } else { fclose(F1); return true; } } return false;} void RepairFile(LPCWCHAR Filename) { FILE* F1 = NULL; if (0 == _wfopen_s(&F1, Filename, L"rb")) { //获取大小 fseek(F1, 0, SEEK_END); DWORD FileSize = ftell(F1); //筛选 if (FileSize>0x7531) { rewind(F1); BYTE* File = new BYTE[FileSize]; fread_s(File, FileSize, FileSize, 1, F1); rewind(F1); //如果特征符合 if (!memcmp(File + 0x4920, Features, 5)) { fclose(F1); FILE* F2 = NULL; if (0 == _wfopen_s(&F2, Filename, L"wb")) { fwrite(File + 0x7531, FileSize - 0x7531-0x1F, 1, F2); fclose(F2); wprintf(L"已修复%s\n", Filename); } } else { fclose(F1); } delete[]File; } else { fclose(F1); } } }void SearchInfected(LPCWSTR Path) { WIN32_FIND_DATA FileInfo = { 0 }; wstring FindPath = wstring(Path) + L"\\*"; HANDLE FindHnandle = FindFirstFile(FindPath.c_str(), &FileInfo); if (INVALID_HANDLE_VALUE!= FindHnandle) { do { if (FileInfo.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY) { if (_wcsicmp(FileInfo.cFileName, L".") && _wcsicmp(FileInfo.cFileName, L"..")&& _wcsicmp(FileInfo.cFileName, L"WINDOWS")&& _wcsicmp(FileInfo.cFileName, L"system32")) { wstring NextPath = wstring(Path) + L"\\" + FileInfo.cFileName; SearchInfected(NextPath.c_str()); } else { continue; } } else { if (!_wcsicmp(PathFindExtension(FileInfo.cFileName), L".exe")) { wstring FilePath = wstring(Path) + L"\\" + FileInfo.cFileName; RepairFile(FilePath.c_str()); } } } while (FindNextFile(FindHnandle, &FileInfo)); }} int main() { setlocale(LC_ALL, ""); wprintf(L"熊猫烧香专杀工具 v0.1\n"); wprintf(L"即将开始,在结束前请不要做其他操作\n"); system("pause"); //开始专杀部分 system("taskkill /F /IM spo0lsv.exe"); WCHAR Buf[50] = { 0 }; GetLogicalDriveStrings(50, Buf); WCHAR* Drive = Buf; printf("正在全盘扫描并修复文件\n"); //遍历盘符 while (*Drive!=NULL) { WCHAR FilePath[MAX_PATH] = { 0 }; wcscpy_s(FilePath, MAX_PATH, (WCHAR*)Drive); wcscat_s(FilePath, MAX_PATH, L"autorun.inf"); wprintf(L"%s\n", FilePath); //删除autorun.inf SetFileAttributes(FilePath, FILE_ATTRIBUTE_NORMAL); DeleteFile(FilePath); //删除setup.exe wcscpy_s(FilePath, MAX_PATH, (WCHAR*)Drive); wcscat_s(FilePath, MAX_PATH, L"setup.exe"); if (checkVirus(FilePath)) { SetFileAttributes(FilePath, FILE_ATTRIBUTE_NORMAL); DeleteFile(FilePath); } //扫描并修复文件 SearchInfected(Drive); Drive+=4; } system("reg add \"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\Folder\\Hidden\\SHOWALL\" /v CheckedValue /t reg_dword /d 1 /f"); system("reg delete \"HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run \" /v svcshare /f");system("pause");}[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界 最后于 2021-3-25 14:42 被Endali编辑 ,原因: #病毒木马 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |