一、介紹
1. 什么是白加黑
通俗的講白加黑中的白就是指被殺軟列入到可信任列表中的文件。比如說微軟自帶的系統(tǒng)文件或者一些有有效證書簽名的文件,什么是微軟文件,或者什么是有效簽名文件在后面我們會提到他的辨別方法。黑就是指我們自己的文件,沒有有效證書簽名,也不是微軟文件。通常這種文件會被殺軟加入到可疑名單中。
2. 白加黑的作用是什么
在很多的殺軟中會對白文件的操作進行放行,如果我們將黑程序和白程序在一個進程中是否就可以繞過一些殺軟的檢測。
二、如何挖掘利用白文件
1. 思考->解決
問:如果我們想要將我們的黑程序載入到白文件中有什么辦法?
答:通常情況下我們可以利用注入去將一個程序執(zhí)行到另外的程序中。
問:在程序執(zhí)行的開始,如何加載一個DLL。
答:程序加載的時候會優(yōu)先加載當前文件夾下的文件下的DLL,當然這些DLL要存在于可執(zhí)行程序的導入表中。
2. 挖掘白文件
首先我們先去找?guī)讉€有簽名的文件或者微軟的可執(zhí)行文件。
下圖就是簽名的鑒別方式。必須是正常數(shù)字簽名才行。
?
這里有一些我們常用的軟件也可以利用,我們盡量去看看目錄里面體積小的文件,這樣方便我們在攻擊的時候投入。
這里我們在steam中找到一個uninstall.exe的exe,用ProcessMonitor可以監(jiān)控到他執(zhí)行的時候加載了一個
“C:WindowsSystem32wow64log.dll” ,那么我們是否可以寫一個這個dll放到和他在相同的目錄下讓他加載我們的wow64log.dll不去加載System32下的wow64log.dll呢?
那么我們?nèi)L試下
3. 如何構(gòu)造wow64log.dll
首先我們要知道一個exe加載這個dll后他調(diào)用了哪些函數(shù),我們要去偽造這些函數(shù),不然他肯定是加載不起來的。有很多方式可以查看比如說LordPe,或者說VS帶有的dumpbin。這里我們用dumpbin來看下白程序的導入表,看看wow64log.dll用到了哪些函數(shù)。
C:UsersAdministratorDesktop1>dumpbin /imports uninstall.exe Microsoft (R) COFF/PE Dumper Version 14.36.32535.0 Copyright (C) Microsoft Corporation. All rights reserved. Dump of file?uninstall.exe File Type: EXECUTABLE IMAGE ??Section contains the following imports: ????KERNEL32.dll ????????????????408070?Import Address Table ????????????????408614?Import Name Table ?????????????????????0?time date stamp ?????????????????????0?Index of first?forwarder reference ??????????????????30B SetCurrentDirectoryW ??????????????????161?GetFileAttributesW ??????????????????16A GetFullPathNameW ??????????????????356?Sleep ??????????????????1DF GetTickCount ???????????????????56?CreateFileW ??????????????????163?GetFileSize ??????????????????271?MoveFileW ??????????????????31A SetFileAttributesW ??????????????????17E GetModuleFileNameW ???????????????????46?CopyFileW ???????????????????B9 ExitProcess ??????????????????314?SetEnvironmentVariableW ??????????????????1F4 GetWindowsDirectoryW ??????????????????1D6 GetTempPathW ??????????????????111?GetCommandLineW ??????????????????1E8 GetVersion ??????????????????315?SetErrorMode ??????????????????390?WaitForSingleObject ??????????????????142?GetCurrentProcess ???????????????????39?CompareFileTime ??????????????????20A GlobalUnlock ??????????????????203?GlobalLock ???????????????????6F CreateThread ??????????????????171?GetLastError ???????????????????4E CreateDirectoryW ???????????????????69?CreateProcessW ??????????????????2C5 RemoveDirectoryW ??????????????????3C3 lstrcmpiA ??????????????????1D4 GetTempFileNameW ??????????????????3A4 WriteFile ??????????????????3C6 lstrcpyA ??????????????????3C7 lstrcpyW ??????????????????270?MoveFileExW ??????????????????3BE lstrcatW ??????????????????1C2 GetSystemDirectoryW ??????????????????1A0 GetProcAddress ??????????????????17F GetModuleHandleA ??????????????????1FF GlobalFree ??????????????????1F8 GlobalAlloc ??????????????????1B6 GetShortPathNameW ??????????????????2DC SearchPathW ??????????????????3C4 lstrcmpiW ??????????????????31F SetFileTime ???????????????????34?CloseHandle ???????????????????BD ExpandEnvironmentStringsW ??????????????????3C1 lstrcmpW ??????????????????150?GetDiskFreeSpaceW ??????????????????3CD lstrlenW ??????????????????3CA lstrcpynW ??????????????????15A GetExitCodeProcess ???????????????????D5 FindFirstFileW ???????????????????DD FindNextFileW ???????????????????84?DeleteFileW ??????????????????31B SetFilePointer ??????????????????2B5 ReadFile ???????????????????CE FindClose ??????????????????274?MulDiv ??????????????????275?MultiByteToWideChar ??????????????????3CC lstrlenA ??????????????????394?WideCharToMultiByte ??????????????????19D GetPrivateProfileStringW ??????????????????3AA WritePrivateProfileStringW ???????????????????F8 FreeLibrary ??????????????????254?LoadLibraryExW ??????????????????182?GetModuleHandleW ????USER32.dll ????????????????408198?Import Address Table ????????????????40873C Import Name Table ?????????????????????0?time date stamp ?????????????????????0?Index of first?forwarder reference ??????????????????15C GetSystemMenu ??????????????????248?SetClassLongW ??????????????????1AE IsWindowEnabled ???????????????????C2 EnableMenuItem ??????????????????283?SetWindowPos ??????????????????15A GetSysColor ??????????????????16F GetWindowLongW ??????????????????24D SetCursor ??????????????????1BD LoadCursorW ???????????????????38?CheckDlgButton ??????????????????13C GetMessagePos ??????????????????1B9 LoadBitmapW ???????????????????1C CallWindowProcW ??????????????????1B1 IsWindowVisible ???????????????????42?CloseClipboard ??????????????????24A SetClipboardData ???????????????????C1 EmptyClipboard ??????????????????1F6 OpenClipboard ??????????????????2D8 wsprintfW ??????????????????231?ScreenToClient ??????????????????174?GetWindowRect ??????????????????15D GetSystemMetrics ??????????????????254?SetDlgItemTextW ??????????????????114?GetDlgItemTextW ??????????????????1E3 MessageBoxIndirectW ???????????????????2F CharPrevW ???????????????????2A CharNextA ??????????????????2D7 wsprintfA ???????????????????A2 DispatchMessageW ??????????????????201?PeekMessageW ??????????????????10C GetDC ??????????????????22A ReleaseDC ???????????????????C4 EnableWindow ??????????????????193?InvalidateRect ??????????????????240?SendMessageW ???????????????????8F DefWindowProcW ????????????????????D BeginPaint ???????????????????FF GetClientRect ???????????????????E2 FillRect ???????????????????C6 EndDialog ??????????????????219?RegisterClassW ??????????????????29A SystemParametersInfoW ???????????????????61?CreateWindowExW ???????????????????F9 GetClassInfoW ???????????????????9F DialogBoxParamW ???????????????????2C CharNextW ???????????????????E1 ExitWindowsEx ???????????????????99?DestroyWindow ??????????????????1C1 LoadImageW ??????????????????27A SetTimer ??????????????????287?SetWindowTextW ??????????????????204?PostQuitMessage ??????????????????292?ShowWindow ??????????????????111?GetDlgItem ??????????????????1AD IsWindow ??????????????????281?SetWindowLongW ???????????????????E5 FindWindowExW ??????????????????2A4 TrackPopupMenu ????????????????????9?AppendMenuW ???????????????????5E CreatePopupMenu ???????????????????BF DrawTextW ???????????????????C8 EndPaint ???????????????????56?CreateDialogParamW ??????????????????23F SendMessageTimeoutW ??????????????????257?SetForegroundWindow ????GDI32.dll ????????????????40804C Import Address Table ????????????????4085F0 Import Name Table ?????????????????????0?time date stamp ?????????????????????0?Index of first?forwarder reference ??????????????????20E SelectObject ??????????????????216?SetBkMode ???????????????????3D CreateFontIndirectW ??????????????????23C SetTextColor ???????????????????8F DeleteObject ??????????????????16B GetDeviceCaps ???????????????????29?CreateBrushIndirect ??????????????????215?SetBkColor ????SHELL32.dll ????????????????40817C Import Address Table ????????????????408720?Import Name Table ?????????????????????0?time date stamp ?????????????????????0?Index of first?forwarder reference ???????????????????C3 SHGetSpecialFolderLocation ???????????????????BD SHGetPathFromIDListW ???????????????????7A SHBrowseForFolderW ???????????????????AD SHGetFileInfoW ??????????????????10B ShellExecuteW ???????????????????9B SHFileOperationW ????ADVAPI32.dll ????????????????408000?Import Address Table ????????????????4085A4 Import Name Table ?????????????????????0?time date stamp ?????????????????????0?Index of first?forwarder reference ??????????????????1D7 RegDeleteKeyW ??????????????????22F SetFileSecurityW ??????????????????1AC OpenProcessToken ??????????????????150?LookupPrivilegeValueW ???????????????????1C AdjustTokenPrivileges ??????????????????1ED RegOpenKeyExW ??????????????????1E2 RegEnumValueW ??????????????????1D9 RegDeleteValueW ??????????????????1CB RegCloseKey ??????????????????1D2 RegCreateKeyExW ??????????????????205?RegSetValueExW ??????????????????1F8 RegQueryValueExW ??????????????????1E0 RegEnumKeyW ????COMCTL32.dll ????????????????408038?Import Address Table ????????????????4085DC Import Name Table ?????????????????????0?time date stamp ?????????????????????0?Index of first?forwarder reference ???????????????????34?ImageList_AddMasked ??????????????????????Ordinal 17 ???????????????????38?ImageList_Destroy ???????????????????37?ImageList_Create ????ole32.dll ????????????????4082A0 Import Address Table ????????????????408844?Import Name Table ?????????????????????0?time date stamp ?????????????????????0?Index of first?forwarder reference ??????????????????105?OleUninitialize ???????????????????EE OleInitialize ???????????????????65?CoTaskMemFree ???????????????????10?CoCreateInstance ??Summary ???????21000?.data ???????36000?.ndata ????????2000?.rdata ???????13000?.rsrc ????????7000?.text C:UsersAdministratorDesktop1>
可以發(fā)現(xiàn)這里面并沒有wow64log.dll這個導入dll,那么他有可能是動態(tài)加載的,也有可能是默認加載的。這樣我們就不需要考慮這個dll的導出函數(shù)了,直接偽造一個dll即可。
首先我們要知道這個可執(zhí)行程序32位還是64位,我們可以用DIE或者x64dbg去查看。
這里看得出來是PE32,那么我們要構(gòu)造的dll也就是32位的dll。
我們在進程附加的時候去彈出一個信息框
這里我們選擇和程序?qū)募軜?gòu)。X86編譯出來就是PE32。
編譯好之后我們和可執(zhí)行文件放到同目錄下去執(zhí)行文件即可。
很遺憾我們并沒有去加載成功我們的dll,此時就說明此文件不是我們可以利用的程序,我們需要去更換程序。我們需要繼續(xù)去以上步驟去重新找白程序文件。
這里我們找到一個企業(yè)微信里面的exe我們再去嘗試一下。
可以看出我們先加載了dbghelp.dll我們將我們之前的文件名字改成這個名字看看是否可以運行。
此時看到這個圖,不要認為我們又要換白程序了,報錯是成功的一大步,到這里就說明我們已經(jīng)成功百分之90了,這里的問題是我們dll雖然有了但是程序加載我們的dll后調(diào)用的函數(shù)我們并沒有提供,好的我們用dumpbin來看下。
?
?
C:UsersAdministratorDesktop1>dumpbin /imports minidump.exe Microsoft (R) COFF/PE Dumper Version 14.36.32535.0 Copyright (C) Microsoft Corporation. All rights reserved. Dump of file?minidump.exe File Type: EXECUTABLE IMAGE ??Section contains the following imports: ????dbghelp.dll ????????????????403108?Import Address Table ????????????????403A6C Import Name Table ?????????????????????0?time date stamp ?????????????????????0?Index of first?forwarder reference ???????????????????1D MiniDumpWriteDump
?
?
這里可以看到我們的dll需要一個MiniDumpWriteDump這個函數(shù),我們在代碼中添加一下。
我們編譯再去執(zhí)行下。
這里我們就可以彈出我們的信息框了。
三、如何檢測是否為白加黑程序
1. 殺軟檢測
殺軟很容易檢測的這些簡單的白加黑文件,因為我們找的黑dll是系統(tǒng)自帶的文件,殺軟只需對比Hash就可過了出是不可信文件,一般情況下也不會有程序去偽造系統(tǒng)的dll文件。(這里也好解決我們只需要找一些加載不是系統(tǒng)文件的白程序即可。)
2. 手動檢測
手動檢測的方式也很簡單,我們只需要多注意這種exe只帶有一個dll的文件,因為如果是木馬的話他一般不會有很多文件,我們可以dll右鍵屬性看看是否有簽名,如果沒有就很可疑,如果有的話看看簽名是否有效,這里也可以用代碼去代替這個過程。
以上兩種都可以懷疑此程序是可疑程序。
編輯:黃飛
?
評論
查看更多