Мониторинг обменных курсов валют
18c0693f

загрузка библиотеки ws2_32 для работы с сокетами и ее инициализация


Имя в своем распоряжении функцию LoadLibraryA, shell-код загружает библиотеку ws_2_32 для работы с сокетами, имя которой передается непосредственно через стек и завершается двумя нулевыми байтами (хотя было бы достаточно и одного), формируемого командой PUSH BH (как мы помним, несколькими строками выше, EBX был обращен в ноль — см. листинг 9). PUSH BH

это двухбайтовая команда, в то время как PUSH EBX – однобайтовая. Но не будем придираться по мелочам.

Процедура MyGetProcAddress

снова принимает "магическое" число 3BFCEDCBh, которое после расшифровки под отладчиком оказывается API-функций WSAStartup, вызов которой совершенно неоправдан, поскольку для инициализации библиотеки сокетов ее достаточно вызвать один-единственный раз, что уже давно сделало уязвимое приложение, иначе как бы мы ухитрились его удаленно атаковать?

Последовательность последующих вызовов вполне стандартна: WSASocketA(2, 1, 0,0,0,0) à bind(s, {sockaddr_in.2; sin_port.0x621Eh}, 0x10) à listen(s,2) à accept

(s, *addr, *addrlen) à closesocket(s).

Дождавшись подключения на заданный порт, shell-код считывает ASCII-строку, передавая ее командному интерпретатору cmd.exe по следующей схеме: CreateProcessA(0, "cmd...", 0,0, 1,0,0,0, lpStartupInfo, lpProcessInformation) à WaitForSingleObject(hProc, -1) à ExitThread(0).

Злоумышленник может запускать любые программы и выполнять пакетные команды, что дает ему практически неограниченную власть над системой, разумеется, если брандмауэр будет не прочь, но про обход брандмауэров уже неоднократно писали.





Все публикации раздела



Самый выгодный курс обмена валюты