-
UID:17777
-
- 注册时间2007-05-02
- 最后登录2025-05-02
- 在线时间18636小时
-
- 发帖786303
- 搜Ta的帖子
- 精华0
- 飞翔币211574
- 威望215717
- 飞扬币2615486
- 信誉值8
-
访问TA的空间加好友用道具
- 发帖
- 786303
- 飞翔币
- 211574
- 威望
- 215717
- 飞扬币
- 2615486
- 信誉值
- 8
|
1.熊猫烧香病毒介绍 熊猫烧香病毒其实是一种蠕虫病毒的变种,而且是经过多次变种而来的,由于中毒电脑的可执行文件会出现“熊猫烧香”图案,所以也被称为 “熊猫烧香”病毒。该病毒是一款拥有自动传播、自动感染硬盘能力和强大的破坏能力的病毒,它不但能感染系统中exe,com,pif,src,html,asp等文件,它还能中止大量的反病毒软件进程并且会删除扩展名为gho的文件。2.熊猫烧香病毒的行为特征1.该病毒在路径C:WINDOWSsystem32drivers创建了一个名为“spoclsv.exe”的进程2.终止任务管理器和注册表的运行,让c盘打不开3.在HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun键项中添加svcshare中创建svcshare,用于在开机时启动位于在系统目录下面的创建的spoclsv.exe4.HKLMSOFTWAREMicrosoftWindowsCurrentVersionExplorerAdvancedFolderHiddenSHOWALL 中的CheckedValue的键值设置为0,进行文件隐藏,防止用户查看释放的病毒5.创建autorun.inf用于病毒的自启动,该文件属性都为隐藏.6.创建名为”Desktop_.ini”的隐藏文件3.病毒文件介绍及样本信息文件: spo0lsv.exe(熊猫烧香)大小: 29.30KBMD5:512301C535C88255C9A252FDF70B7A03SHA1: CA3A1070CFF311C0BA40AB60A8FE3266CFEFE870CRC32:E334747C本人上传的文件为病毒库备份文件,后缀名为.vir,这实质是一个exe的可执行文件,修改后缀名就可以运行。4.病毒文件脱壳处理1. 病毒加了fsg壳,接下来,我对它进行脱壳处理。 2.把exe文件拖到OD中,往下拖动鼠标,发现代码不多,使用单步法脱壳。 3.当运行到4001D1时,在按f8跳到OEP处,并按 Ctrl + A 强制分析 4.接着用LordPE和ImportREC工具进行后续的脱壳 5.获取内存转储文件 当病毒运行时,任务管理器会立马退出,注册表编辑器运行不久也会退出并且在电脑中会产生Desktop_.ini文件和autorun.inf文件,在路径C:WINDOWSsystem32drivers创建了一个名为“spoclsv.exe”的进程。当病毒程序运行一段时间之后,使用DumpIt工具转储内存,获得内存镜像文件,随后我把它改名为virus.exe。 6.用volatility框架分析熊猫烧香病毒行为痕迹1.使用pstree插件分析出系统中存在spo0lsv.exe病毒进程 2.使用printkey插件发现CheckedValue键值为0,意味着进行文件隐藏,防止用户查看释放的病毒 3.接下来使用filescan插件来分析病毒创建的Desktop_.ini文件,我这里使用了一个正常的转储文件WIN-93QJSQFSAIP-20190110-022750.raw进行对比,发现被熊猫烧香病毒感染的系统转储文件中存在Desktop_.ini文件,而正常的没有,因此该病毒创建了该文件。 4.使用filescan插件来分析病毒创建的autorun.inf文件,同样使用对比的方法,正常的转储文件没有该文件,而被熊猫烧香病毒感染的系统转储文件中存在着该文件 7.专杀熊猫烧香病毒代码分析1.在内存中查找病毒是否存在的函数FindTargetProcrss,该函数的思路是首先遍历转储文件中所有的进程,并且判断这些进程中是否有名为spoclsv.exe,有则判断内存中存在熊猫烧香病毒bool C专杀工具Dlg::FindTargetProcrss(char *pszProcessName, DWORD *dwpid){ bool bFind = false; HANDLE hprocessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);//进程快照 if (hprocessSnap ==INVALID_HANDLE_VALUE) { return bFind; } PROCESSENTRY32 pe = {0}; pe.dwSize = sizeof(pe); BOOL bRet = Process32First(hprocessSnap,&pe); //循环初始化值 while (bRet) { if (lstrcmp(pe.szExeFile,(LPCWSTR)pszProcessName)==0) { *dwpid = pe.th32ProcessID; bFind = true; break; } bRet = Process32Next(hprocessSnap,&pe); } CloseHandle(hprocessSnap); return bFind;}2.提升权限函数EnableDebugPrivilege,该函数使用了三个提升权限的函数OpenProcessToken,LookupPrivilegeValue,AdjustTokenPrivileges。EnableDebugPrivilege函数帮助杀毒程序提升了自己的权限bool C专杀工具Dlg::EnableDebugPrivilege(char * pszPrivilege){ HANDLE hToken = INVALID_HANDLE_VALUE; LUID luid; TOKEN_PRIVILEGES tp; BOOL bRet = OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken) if (bRet == FALSE) { return bRet; } bRet = LookupPrivilegeValue(NULL, (LPCWSTR)pszPrivilege, &luid);//这里需要进行类型转换,将pszPrivilege转换成LPCWSTR类型 if (bRet == FALSE) { return bRet; } tp.PrivilegeCount = 1; tp.Privileges[0].Luid = luid; tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; bRet = AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(tp), NULL, NULL); return bRet;}3.寻址磁盘文件函数FindFiles,该函数遍历磁盘中所有的文件,并判断内存是否存在病毒创建的Desktop_.ini文件和autorun.inf文件,如果存在则去除文件的隐藏、系统以及只读属性DWORD WINAPI FindFiles(LPVOID lpszPath){ WIN32_FIND_DATA stFindFile; HANDLE hFindFile; // 扫描路径 char szPath[MAX_PATH]; char szFindFile[MAX_PATH]; char szSearch[MAX_PATH]; char *szFilter; int len; int ret = 0; szFilter = "*.*"; lstrcpy(szPath, (char *)lpszPath); len = lstrlen(szPath); if(szPath[len-1] != '\') { szPath[len] = '\'; szPath[len+1] = ' |