天天看點

系統權限遠端線程注入到Explorer.exe提升為系統權限,注入到explorer中

目錄

  • 提升為系統權限,注入到explorer中
    • 一丶簡介
    • 二丶注入效果圖

提升為系統權限,注入到explorer中

一丶簡介

我們上一面說了系統服務擁有系統權限.并且擁有system權限.還嘗試啟動了一個程序.

那麼我們是不是可以做點壞事了.

我們有一個系統權限程序.而調用 CreateRemoteThread可以建立遠端線程,是否可以注入到我們桌面資料總管當中那.

答案是可以的.我也試過提權的方式注入.可惜都是拒絕通路.是以我提升為system權限(系統服務,建立的我們程序就是system權限)

然後進行注入的.最後是可以注入的.

我們資料總管是64位的,是以我們的程序需要也是64.我們的DLL 也要64.當然網上很多32程序注入DLL到64位各種都很多.

這裡為了友善.直接 64程序+64DLL進行注入的.

代碼如下:

void Cx64InjectProcessDlg::OnBnClickedOk()
{

    //AdjustPrivileges();
    // TODO:  在此添加控件通知處理程式代碼
    HANDLE                   hProcessSnap = NULL;
    BOOL                       bRet = FALSE;
    PROCESSENTRY32   pe32 = { 0 };

    hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if (hProcessSnap == INVALID_HANDLE_VALUE)
        return;

    pe32.dwSize = sizeof(PROCESSENTRY32);

    if (Process32First(hProcessSnap, &pe32))
    {
        do
        {
            if (!wcscmp(_wcsupr(pe32.szExeFile), _wcsupr(TEXT("EXPLORER.EXE"))))
            {
                HANDLE   hProHandle =
                    OpenProcess(PROCESS_ALL_ACCESS,
                    FALSE, pe32.th32ProcessID);
                //進行注入
                if (NULL == hProHandle)
                {
                    OutputDebugString(TEXT("權限失敗"));
                    return;
                }
                LPVOID lpAddr = VirtualAllocEx(hProHandle, NULL, 0x1000, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
                if (NULL == lpAddr)
                {
                    return;
                }

                TCHAR szBuf[MAX_PATH] = TEXT("x64Test.dll");
                //GetCurrentDirectory(sizeof(szBuf), szBuf); //這三行代碼主要是拼接我們的DLL,DLL是我們自己寫的
                //wcscat(szBuf, TEXT("x64Test.dll"));//DLL這裡就不寫了,用我的吧,我會發上去的
                OutputDebugString(szBuf);
                BOOL bRet = WriteProcessMemory(hProHandle, lpAddr, szBuf, wcslen(szBuf) + 2, NULL);
                if (!bRet)
                {

                    return;
                }

                HANDLE hThreadHandle = CreateRemoteThread(hProHandle,
                    NULL,
                    0,
                    (LPTHREAD_START_ROUTINE)LoadLibrary,
                    lpAddr,
                    0,
                    NULL);
                if (!hThreadHandle)
                {
                    OutputDebugString(TEXT("注入失敗了"));
                    return;
                }
                OutputDebugString(TEXT("注入了"));

                return;
            }
        } while (Process32Next(hProcessSnap, &pe32));
        bRet = TRUE;
    }
    else
        bRet = FALSE;

    CloseHandle(hProcessSnap);
    return  CDialogEx::OnOK();
}           

複制

二丶注入效果圖

系統權限遠端線程注入到Explorer.exe提升為系統權限,注入到explorer中