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

Анализ LockBit Ransomware v2.0

yashechka

Генератор контента.Фанат Ильфака и Рикардо Нарвахи
Эксперт
Регистрация
24.11.2012
Сообщения
2 344
Реакции
3 563
С разрешения LockBitSupp публикую анализ Локбита, который сделал cpeter.
На анализ файла он потратил больше месяца, а на написание статьи больше недели.
Также ЛокБит выйграл гонку по скорости, которая была проведена совсем недавно - https://www.techrepublic.com/articl...-in-splunks-ransomware-encryption-speed-test/

Локбит CTI

4 февраля 2022 года ФБР выпустило рекомендации по безопасности по индикаторам компрометации (IOC), связанным с программой-вымогателем LockBit 2.0, одной из самых активных групп программ-вымогателей в текущей экосистеме киберпреступности.

Сообщество наиграмотнейших системных администраторов и программистов
LockBit (также известная как Bitwise Spider) является разработчиком LockBit Ransomware-as-a-Service (RaaS). Программа-вымогатель LockBit впервые появилась в сентябре 2019 года, а в июне 2021 года группа была переименована в LockBit 2.0, как это сделали несколько других семейств в 2021 году. LockBit 2.0 несет ответственность за различные громкие атаки в 2021 году, включая таких жертв, как Accenture, после запуска маркетинговой кампании по привлечению новых партнеров в середине 2021 года. Версия LockBit с ребрендингом включает в себя несколько новых функций, в том числе самораспространение, удаление теневых копий, обход контроля учетных записей (UAC), поддержку ESXi и печать заметок о выкупе через принтеры, обнаруженные в сети жертвы. Группа также гордится тем, что имеет самое быстрое шифрование на рынке программ-вымогателей. Это связано с тем, что он использует многопоточный подход к шифрованию и лишь частично шифрует файлы, поскольку в каждом файле шифруется только 4 КБ данных.

LockBit 2.0 представлен на русскоязычных форумах по киберпреступности как "LockBitSupp" на нескольких сайтах, включая RAMP, Exploit.in и xss.pro, где они вербуют аффилированных лиц и рекламируют свой RaaS. LockBit стала ведущей группой по наибольшему количеству жертв, опубликованных на сайте утечки в даркнете, после того, как обогнала Conti в начале 2022 года. Перед шифрованием партнеры Lockbit могут использовать приложение StealBit, полученное непосредственно из панели Lockbit, для эксфильтрации определенных типов файлов. Желаемые типы файлов могут быть настроены партнером, чтобы адаптировать атаку к жертве. Партнер настраивает приложение на желаемый путь к файлу, и после выполнения инструмент копирует файлы на сервер, контролируемый злоумышленником, используя http. Из-за характера партнерской модели некоторые злоумышленники используют другие доступные инструменты для кражи данных, такие как Rclone и MEGAsync, для достижения тех же результатов. Хакеры Lockbit 2.0 также используют облачные службы обмена файлами, включая privatlab.net, anonfiles.com, sendspace.com, fex.net, transfer.sh и send.exploit.in для отправлениях данных, украденные из сетей жертв.

Все заслуги в этой части принадлежат Уиллу Томасу (https://twitter.com/BushidoToken) из Equinix за потрясающую информацию о группе вымогателей!

Обзор

Этот отчет представляет собой мой краткий анализ программы-вымогателя LockBit v2.0.

В анализе я рассматриваю все функции программы-вымогателя LockBit. Тем не менее, я не упомянул подробности о некоторых функциях, потому что был очень ленив и выгорел к тому времени, когда закончил анализировать.

LockBit использует схему гибридной криптографии XSalsa20-Poly1305-Blake2b-Curve25519 Libsodium и AES-128-CBC для шифрования файлов. Конфигурация зловреда зашифрована методом XOR и хранится в статической памяти. Подобно REvil и BlackMatter, дочерние потоки LockBit используют общую структуру для разделения работы по шифрованию на несколько состояний при шифровании файла.

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


1648263542819.png


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

Мой анализ на 96% основан на статическом анализе в IDA, потому что я, к сожалению, слишком ленив для динамического анализа. Поэтому в этом отчете рассказывается только о том, что я вижу в коде и как я его понимаю. Присядьте и гаслаждайетесь!

IOCS

Образец, который я использовал, представляет собой 32-разрядный исполняемый файл Windows. Огромное спасибо vx-underground (https://twitter.com/vxunderground) за то, что поделились им.

MD5: 63dcf75ad743b292e4a6cd067ffc2c18

SHA256: 9feed0c7fa8c1d32390e1c168051267df61f11b048ec62aa5b8e66f60e8083af


Образец: https://bazaar.abuse.ch/sample/9feed0c7fa8c1d32390e1c168051267df61f11b048ec62aa5b8e66f60e8083af/

1648263582044.png


Записка о выкупе

Содержимое примечания о выкупе шифруется XOR в исполняемом файле LockBit, который динамически расшифровывается один раз и записывается в файл примечания о выкупе в каждом каталоге.

Имя файла примечания о выкупе — Restore-My-Files.txt.

1648263597348.png


Статический анализ кода

Анти-анализ: Анти-отладочная проверка


В начале функции точка входа LOCKBIT проверяет поле NtGlobalFlag в блоке управления процессом (PEB), чтобы определить, отлаживается ли вредоносный процесс.

Это делается путем сравнения значения поля с 0x70, что указывает на установленные флаги FLG_HEAP_ENABLE_TAIL_CHECK, FLG_HEAP_ENABLE_FREE_CHECK, FLG_HEAP_VALIDATE_PARAMETERS.

Если процесс отлаживается, вредоносное ПО зависает на неопределенный срок.

1648263610587.png


Антианализ: строка стека

Наиболее важные строки в исполняемом файле LockBit кодируются и хранятся в виде строки в стеке. Перед использованием они динамически декодируются с помощью некоторых простых вычислений, таких как сложение, вычитание или операция XOR.

1648263624730.png


Анти-анализ: встроенное динамическое разрешение API

Как и большинство основных программ-вымогателей, LockBit динамически разрешает API, чтобы затруднить статический анализ, но, в отличие от многих других, LockBit встраивает весь процесс резолва, делая декомпилированный код намного больше для анализа.

Во-первых, для динамического разрешения этих API их соответствующие библиотеки должны быть изначально загружены в память. Поскольку Kernel32 уже загружен из нескольких импортов LockBit, вредоносное ПО находит его и разрешает LoadLibraryA для загрузки других в память.

1648263640815.png


После получения LoadLibraryA LockBit разрешает имя каждой DLL как строку стека и вызывает LoadLibraryA, чтобы загрузить ее в память.

Ниже приведен список загруженных библиотек.

- gdiplus.dll, ws2_32.dll, shell32.dll, advapi32.dll, user32.dll, ole32.dll, netapi32.dll, gpredit.dll, oleaut32.dll, shlwapi.dll, msvcrt.dll, activeds.dll, gdiplus .dll, mpr.dll, bcrypt.dll, crypt32.dll, iphlpapi.dll, wtsapi32.dll, win32u.dll, Comdlg32.dll, cryptbase.dll, combase.dll, winspool.drv

При извлечении адреса API из памяти вредоносное ПО сначала находит базу своей DLL, перебирая связанный список модуля загрузчика PEB и проверяя имя библиотеки для каждой записи. Каждое имя (в нижнем регистре) хешируется с помощью FNV1A и сравнивается с жестко закодированным хешем, после чего возвращается соответствующая база DLL.

1648263669850.png


Используя базу DLL, LockBit получает доступ к своей таблице каталогов экспорта и перебирает имя каждого API экспорта. Для каждого имени API вредоносное ПО преобразует символы в нижний регистр и хеширует их с помощью FNV1A. Окончательный хэш сравнивается с целевым хэшем, и если хэши совпадают, вредоносное ПО извлекает адрес порядкового имени API и использует его для индексации в массиве AddressOfFunctions таблицы экспорта, чтобы вернуть целевой адрес API.

1648263685761.png


1648263695641.png


Для большинства API-интерфейсов, используемых во всем исполняемом файле, этот процесс каждый раз полностью встроен, что значительно увеличивает объем скомпилированного кода, на который нам нужно обратить внимание. LockBit хранит разрешенные базы DLL и API-интерфейсы в глобальной памяти для их повторного использования, поэтому, несмотря на большой статический код, количество динамических инструкций примерно такое же, как если бы этот процесс не был встроенным. Это делает реверс инжиниринг образца немного более раздражающим, не ставя под угрозу производительность самого кода.

Проверка языка компьютера

Как и многие программы-вымогатели, LockBit проверяет языки системы, чтобы избежать шифровальных машин в России и соседних странах.

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

- азербайджанский (кириллица, Азербайджан), азербайджанский (латиница, Азербайджан), армянский (Армения), белорусский (Беларусь), грузинский (Грузия), казахский (Казахстан), киргизский (Кыргызстан), русский (Молдова), русский (Россия), Таджикский (кириллица, Таджикистан), туркменский (Туркменистан), узбекский (кириллица, Узбекистан), узбекский (латиница, Узбекистан), украинский (Украина)

1648263714777.png


Если пользовательский или системный язык пользовательского интерфейса занесен в черный список, вредоносное ПО вызывает ExitProcess для немедленного завершения.

1648263729309.png


Отказ в доступе к процессу вымогателей

После загрузки всех необходимых библиотек в память LockBit пытается ограничить доступ к своему собственному процессу, изменяя собственный список контроля доступа.

Во-первых, он разрешает и вызывает NtOpenProcess, чтобы получить дескриптор текущего процесса программы-вымогателя. Затем вредоносное ПО разрешает и вызывает GetSecurityInfo для получения ACL-списка дескриптора безопасности процесса.

1648263744326.png


Затем LockBit разрешает и вызывает RtlAllocateAndInitializeSid для выделения и инициализации SID с полномочиями SECURITY_WORLD_SID_AUTHORITY для группы EVERYONE. Затем он вызывает RtlQueryInformationAcl и RtlLengthSid для получения длины ACL процесса, вычисляет размер нового ACL и выделяет для него виртуальный буфер. После создания буфера LockBit вызывает RtlCreateAcl для создания этого нового ACL и вызывает RtlAddAccessDeniedAce для добавления записи управления доступом (ACE) ACCESS_DENIED в этот ACL для группы EVERYONE, используя только что созданный SID, указанный выше.

1648263757449.png


Наконец, LockBit вызывает RtlGetAce для повторения каждой записи ACE в ACL процесса вымогателя и RtlAddAce для добавления ACE в новый ACL. После того, как все ACE добавлены в новый ACL, вредоносное ПО вызывает SetSecurityInfo, чтобы установить новый ACL для своего собственного запущенного процесса, который запрещает доступ от всех к себе.

1648263770058.png


Ошибка по умолчанию и настройка привилегий

LockBit вызывает NtSetInformationProcess, чтобы установить эти 3 флага для режима жесткой ошибки по умолчанию для текущего процесса.

- SEM_FAILCRITICALERRORS: система не отображает окно сообщения обработчика критических ошибок и отправляет ошибку вызывающему процессу.
- SEM_NOGPFAULTERRORBOX: система не отображает диалоговое окно отчетов об ошибках Windows.
- SEM_NOALIGNMENTFAULTEXCEPT: система автоматически исправляет ошибки выравнивания
.

Он также вызывает RtlAdjustPrivilege, чтобы включить привилегию SE_TAKE_OWNERSHIP_PRIVILEGE, чтобы иметь возможность позже стать владельцем файлов во время шифрования.

1648263790331.png


Расшифровка конфигурации

Конфигурация LockBit разделена на две разные части: данные и флаги.

Часть данных кодируется и хранится статически в исполняемом файле, который содержит следующие поля.

- EMF файл 1: Содержит векторную графику для текста "ВСЕ ВАШИ ВАЖНЫЕ ФАЙЛЫ Украдены и зашифрованы".
- EMF файл 2: содержит векторную графику для текста "LOCKBIT 2.0".
- Blender Pro Medium TTF файл
- TTF-файл Proxima Nova
- LockBit текст PNG
- Значок LockBit PNG
- Значок LockBit большой PNG
- Список процессов: список процессов для завершения, разделенных запятой.
- Список служб: список служб, которые нужно остановить, через запятую.


1648263820664.png


Процесс декодирования довольно прост, поскольку он просто выполняет XOR для каждого закодированного байта с 0x5F.

1648263833925.png


Вы можете найти файлы, перечисленные выше, здесь. (https://github.com/cdong1012/IDAPython-Malware-Scripts/tree/master/Lockbit/lockbit_dropped_files)

Ниже приведен процесс и служба для завершения списков.

- Список процессов:

wxServer,wxServerView,sqlmangr,RAgui,supervise,Culture,Defwatch,winword,QBW32,QBDBMgr,qbupdate,axlbridge,httpd,fdlauncher,MsDtSrvr,java,360se,360doctor,wdswfsafe,fdhost,GDscan,ZhuDongFangYu,QBDBMgrN,mysqld,AutodeskDesktopApp,acwebbrowser,Creative Cloud,Adobe Desktop Service,CoreSync,Adobe CEF,Helper,node,AdobeIPCBroker,sync-taskbar,sync-worker,InputPersonalization,AdobeCollabSync,BrCtrlCntr,BrCcUxSys,SimplyConnectionManager,Simply.SystemTrayIcon,fbguard,fbserver,ONENOTEM,wsa_service,koaly-exp-engine-service,TeamViewer_Service,TeamViewer,tv_w32,tv_x64,TitanV,Ssms,notepad,RdrCEF,sam,oracle,ocssd,dbsnmp,synctime,agntsvc,isqlplussvc,xfssvccon,mydesktopservice,ocautoupds,encsvc,tbirdconfig,mydesktopqos,ocomm,dbeng50,sqbcoreservice,excel,infopath,msaccess,mspub,onenote,outlook,powerpnt,steam,thebat,thunderbird,visio,wordpad,bedbh,vxmon,benetns,bengien,pvlsvr,beserver,raw_agent_svc,vsnapvss,CagService,DellSystemDetect,EnterpriseClient,ProcessHacker,Procexp64,Procexp,GlassWire,GWCtlSrv,WireShark,dumpcap,j0gnjko1,Autoruns,Autoruns64,Autoruns64a,Autorunsc,Autorunsc64,Autorunsc64a,Sysmon,Sysmon64,procexp64a,procmon,procmon64,procmon64a,ADExplorer,ADExplorer64,ADExplorer64a,tcpview,tcpview64,tcpview64a,avz,tdsskiller,RaccineElevatedCfg,RaccineSettings,Raccine_x86,Raccine,Sqlservr,RTVscan,sqlbrowser,tomcat6,QBIDPService,notepad++,SystemExplorer,SystemExplorerService,SystemExplorerService64,Totalcmd,Totalcmd64,VeeamDeploymentSvc

- Список сервисов

wrapper,DefWatch,ccEvtMgr,ccSetMgr,SavRoam,Sqlservr,sqlagent,sqladhlp,Culserver,RTVscan,sqlbrowser,SQLADHLP,QBIDPService,Intuit.QuickBooks.FCS,QBCFMonitorService, msmdsrv,tomcat6,zhudongfangyu,vmware-usbarbitator64,vmware-converter,dbsrv12,dbeng8,MSSQL$MICROSOFT##WID,MSSQL$VEEAMSQL2012,SQLAgent$VEEAMSQL2012,SQLBrowser,SQLWriter,FishbowlMySQL,MSSQL$MICROSOFT##WID,MySQL57,MSSQL$KAV_CS_ADMIN_KIT,MSSQLServerADHelper100,SQLAgent$KAV_CS_ADMIN_KIT,msftesql-Exchange,MSSQL$MICROSOFT##SSEE,MSSQL$SBSMONITORING,MSSQL$SHAREPOINT,MSSQLFDLauncher$SBSMONITORING,MSSQLFDLauncher$SHAREPOINT,SQLAgent$SBSMONITORING,SQLAgent$SHAREPOINT,QBFCService,QBVSS,YooBackup,YooIT,vss,sql,svc$,MSSQL,MSSQL$,memtas,mepocs,sophos,veeam,backup,bedbg,PDVFSService,BackupExecVSSProvider,BackupExecAgentAccelerator,BackupExecAgentBrowser,BackupExecDiveciMediaService,BackupExecJobEngine,BackupExecManagementService,BackupExecRPCService,MVArmor,MVarmor64,stc_raw_agent,VSNAPVSS,VeeamTransportSvc,VeeamDeploymentService,VeeamNFSSvc,AcronisAgent,ARSM,AcrSch2Svc,CASAD2DWebSvc,CAARCUpdateSvc,WSBExchange,MSExchange,MSExchange$

Поскольку имена служб/процессов разделены запятыми, вредоносное ПО выделяет отдельный массив в виртуальной памяти для хранения указателей на каждое имя, копируя имя в этот новый массив для быстрого доступа.

Список процессов также разбивается на два разных массива указателей: один для хранения имен в виде обычных строк ASCII, а другой — для их хранения в виде расширенных строк.

1648263894752.png


Часть с флагами конфигурации хранится в массиве байтов. Каждый байт соответствует определенному флагу выполнения, который проверяет LockBit. Флаг включен, если соответствующий байт равен 0xFF, и отключен, если соответствующий байт равен 0xAA.

1648263920502.png


Ниже приведены флаги и их порядок в массиве.

- Индекс 0: отключить обход UAC.
- Индекс 1: включить самоудаление
- Индекс 2: включить ведение журнала
- Индекс 3: включить обход сети для шифрования файлов.
- Индекс 4, 5, 6: если установлены все 3, установите групповые политики для Active Directory.
- Индекс 7: Установить реестр для значка по умолчанию расширения LockBit.
- Указатель 8: Распечатать записку о выкупе на сетевой принтер.

Повышение привилегий и перезапуск


В своей первой попытке LockBit пытается повысить привилегии, если пользователь, запускающий процесс программы-вымогателя, является служебной учетной записью.

Сначала вредоносное ПО разрешает NtOpenProcessToken и вызывает его для получения дескриптора токена своего собственного процесса. Затем он вызывает GetTokenInformation, используя этот дескриптор токена, чтобы получить информацию о пользователе, связанном с этим токеном.

1648263943815.png


Затем LockBit вызывает AllocateAndInitializeSid для создания SID с S-1-5-18 в качестве центра идентификации SID, который является SID учетной записи службы, используемой операционной системой. Затем он вызывает EqualSid для сравнения SID текущего пользователя с SID учетной записи службы, чтобы проверить, является ли текущий пользователь учетной записью службы.

1648263958036.png


Если текущая учетная запись пользователя является учетной записью службы, LockBit начинает эскалацию.

Во-первых, он вызывает LoadLibraryA для загрузки "Wtsapi32.dll" в память и вызывает GetProcAddress для получения адреса WTSQueryUserToken. Затем он вызывает GetModuleFileNameW, чтобы получить полный путь к собственному исполняемому файлу программы-вымогателя.

1648263971523.png


Затем вредоносное ПО вызывает WTSQueryUserToken с идентификатором сеанса INTERNAL_TS_ACTIVE_CONSOLE_ID (0x7FFE02D8), чтобы получить основной токен доступа для активного сеанса консоли служб терминалов. Если эта функция не работает, вредоносное ПО вызывает CreateProcessW для перезапуска собственного исполняемого файла в качестве интерактивного процесса с "winsta0\default" в качестве интерактивного сеанса по умолчанию.

1648263985912.png


Если вызов WTSQueryUserToken выполняется успешно, LockBit вызывает DuplicateTokenEx для дублирования маркера консоли служб терминалов и использует этот дублирующий маркер для создания процесса с повышенными правами для запуска себя через CreateProcessAsUserW.

1648263998325.png


Как только новый процесс создан, вредоносный процесс вызывает ExitProcess для завершения.

Логирование

Если флаг конфигурации с индексом 2 установлен, LockBit регистрирует свой процесс в отдельно работающем окне.

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

Функция настройки окна журнала сначала вызывает GetModuleHandleW, чтобы получить дескриптор запущенного исполняемого файла. Затем вредоносная программа заполняет структуру WNDCLASSEXW, используя этот дескриптор в качестве экземпляра окна ведения журнала. В поле оконной процедуры структуры задана функция, которая будет обрабатывать протоколирование обмена данными между основным процессом программы-вымогателя и окном. Опять же, я не буду рассказывать об этом, так как я действительно ценю свое психическое здоровье!

1648264013475.png


После завершения заполнения структуры WNDCLASSEXW вредоносная программа вызывает RegisterClassExW для регистрации класса окна и вызывает CreateWindowExW для создания окна регистрации с "LockBit_2_0_Ransom" в качестве имени класса и "LockBit 2.0 Ransom" в качестве имени окна.

1648264024543.png


После создания окна LockBit вызывает ShowWindow с флагом SW_HIDE, чтобы скрыть его, и UpdateWindow, чтобы обновить это изменение.

1648264036425.png


Чтобы иметь возможность отображать это окно вручную, разработчики LockBit добавляют вызов RegisterHotKey для регистрации комбинации Shift + F1 с идентификатором горячей клавиши 1, который будет связываться с оконным процессом для вызова ShowWindow с флагом SW_SHOW для отображения самого себя. Существует также еще один вызов RegisterHotKey для регистрации клавиши F1 с идентификатором горячей клавиши 2, что скроет окно регистрации, если оно отображается.

1648264048851.png


Каждый раз, когда основной поток хочет отобразить сообщение журнала, он вызывает функцию, которая внутренне вызывает SendMessageA для отправки этого сообщения в окно журнала.

1648264060493.png


Ниже представлен пользовательский интерфейс окна ведения журнала.

1648264071842.png


1648264081349.png


Аргументы командной строки

LockBit может работать как с аргументами командной строки, так и без них.

Аргументы командной строки могут быть представлены в виде пути к файлу или папке для обработки. Выполнение прекращается, когда целевой файл/папка зашифрованы.

Маскарад Explorer и обход UAC

Прежде чем выполнять обход UAC, LockBit сначала проверяет, есть ли у него права администратора. Это делается путем вызова NtOpenProcessToken для получения дескриптора токена процесса программы-вымогателя и NtQueryInformationToken для получения информации о повышении прав токена и возврата, если токен повышен.

1648264107513.png


Если процесс имеет повышенные права или установлен флаг конфигурации с индексом 0, обход UAC пропускается.

Чтобы начать обход UAC, вредоносное ПО проверяет, входит ли процесс в группу администраторов. Он вызывает NtOpenProcessToken для получения дескриптора текущего процесса и CreateWellKnownSid для создания SID с типом WinBuiltinAdministratorsSid.

1648264123670.png


Затем LockBit вызывает CheckTokenMembership, чтобы проверить, является ли текущий процесс членом группы SID администратора, после чего обход UAC пропускается.

Если текущий процесс не является членом группы, вредоносное ПО вызывает NtQueryInformationToken для получения дескриптора токена, связанного с текущим процессом, и снова вызывает CheckTokenMembership, чтобы проверить, является ли связанный токен членом группы SID администратора.

1648264137894.png


Если токен находится в группе администраторов, вредоносное ПО маскирует explorer.exe, чтобы обойти UAC.

Во-первых, он вызывает NtAllocateVirtualMemory для выделения виртуального буфера и записывает в него путь к каталогу Windows с добавлением "\explorer.exe".

1648264151617.png


1648264162983.png


Затем LockBit вызывает RtlInitUnicodeString для преобразования пути проводника в строку юникода и записывает его в путь к изображению процесса. Он также делает еще один вызов RtlInitUnicodeString для преобразования "explorer.exe" в Unicode и записывает его в командную строку процесса.

1648264174085.png


Затем вредоносное ПО вызывает RtlReleasePebLock для снятия блокировки PEB и LdrEnumerateLoadedModules для перечисления всех загруженных модулей в памяти и вызывает функцию для поиска и маскировки explorer.exe.

1648264298846.png


Для каждого загруженного модуля функция обратного вызова проверяет, совпадает ли базовый адрес модуля с базовым адресом LockBit, чтобы найти в памяти запись таблицы данных, соответствующую вредоносному процессу.

Если контекст функции обратного вызова заключается в маскировке проводника, функция сохраняет полное имя и базовое имя LockBit в глобальных переменных для последующего их восстановления. Затем полный путь проводника используется в качестве нового полного имени исполняемого файла для записи таблицы данных LockBit.

1648264311994.png


Наконец, функция вызывает RtlInitUnicodeString для записи полного пути Explorer к полному имени DLL записи LockBit и "explorer.exe" в качестве базового имени DLL, которое теперь маскирует процесс LockBit под процесс Explorer.

1648264323703.png


Маскируясь под Explorer, LockBit начинает выполнять обход UAC.

Сначала он разрешает адрес CoInitializeEx и CoUninitialize, вызывая GetProcAddress. Затем вредоносное ПО вызывает CoInitializeEx, чтобы инициализировать библиотеку COM для параллелизма объектов с многопоточностью.

1648264337772.png


Затем LockBit в основном выполняет обход UAC, используя COM-интерфейсы ColorDataProxy/CCMLuaUtil. Исходный код этой методики можно посмотреть здесь (https://github.com/hfiref0x/UACME/b...3ae4e06af/Source/Akagi/methods/hybrids.c#L877), поэтому я не буду углубляться в него.

Одноразовый мутант

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

Во-первых, он декодирует следующую строку стека "\BaseNamedObjects\{\%02X%02X%02X%02X-%02X%02X-%02X%02X-%02X%02X-%02X%02X%02X%02X%02X%02X }" и вызывает wsprintfW для записи отформатированных данных в буфер. Каждое отформатированное поле соответствует байту с определенным индексом жестко запрограммированного открытого ключа LockBit.

1648264356580.png


Затем LockBit вызывает RtlInitUnicodeString, чтобы преобразовать имя мутанта в строку Unicode, и NtCreateMutant, чтобы попытаться открыть мутант с указанным именем. Если результатом является STATUS_OBJECT_NAME_COLLISION, вредоносное ПО завершает работу, вызывая ExitProcess, чтобы избежать нескольких запущенных экземпляров.

1648264367421.png


Настройка групповой политики для Active Directory

Проверка работы на основном контроллере домена


Если вредоносный процесс имеет права администратора, версия ОС — Windows Vista и выше, и установлен любой из флагов конфигурации с индексами 4, 5, 6, LockBit пытается создать и установить новые групповые политики для других хостов через Active Directory.

Во-первых, LockBit проверяет, выполняется ли он в данный момент на основном контроллере домена. Он вызывает GetComputerNameW для получения NetBIOS-имени локального компьютера, на котором он работает.

1648264380518.png


Затем вредоносное ПО вызывает NetGetDCName, чтобы получить имя основного контроллера домена, и lstrcmpiW, чтобы сравнить имя локального ПК с этим именем контроллера домена.

1648264394761.png


Получение доменного имени DNS

Если LockBit работает на контроллере домена, он пытается получить доменное имя DNS. Сначала вредоносная программа вызывает NtOpenProcessToken, чтобы получить дескриптор токена процесса, и NtQueryInformationToken_1, чтобы получить информацию о пользователе, соответствующем этому токену.

1648264408344.png


Затем LockBit вызывает GetWindowsAccountDomainSid для получения SID домена SID пользователя. Затем он вызывает CreateWellKnownSid для создания SID для группы администраторов домена пользователя и CheckTokenMembership для проверки наличия у пользователя повышенных привилегий.

1648264419762.png


Если у пользователя есть права администратора, LockBit вызывает GetComputerNameExW для получения имени домена DNS локального компьютера.

1648264432203.png


Получение имени администратора учетной записи домена (получить имя администратора домена)

После выполнения обычной процедуры NtOpenProcessToken и NtQueryInformationToken для получения информации о токене пользователя-администратора LockBit вызывает LookupAccountSidW для поиска имени учетной записи администратора и имени домена.

1648264443690.png


Чтобы получить полное имя администратора домена, LockBit разрешает строку стека "//" и строит имя в формате "<имя домена>//<имя учетной записи>".

COM IGroupPolicyObject

Чтобы получить интерфейс IGroupPolicyObject, LockBit разрешает и вызывает CoCreateInstance с CLSID {EA502722-A23D-11D1-A7D3-0000F87571E3} и IID {EA502723-A23D-11d1-A7D3-0000F87571E3}.

1648264457274.png


...
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
Пожалуйста, обратите внимание, что пользователь заблокирован
Это твоя банда :) ТС спасибо, интересно было почитать
Какая еще банда? что за слова такие? у меня только опытные системные администраторы, которые учат (не бесплатно конечно же) уму разуму и передают свой опыт другим системным администраторам. Можно сказать что у меня университет.
 
Какая еще банда? что за слова такие? у меня только опытные системные администраторы, которые учат (не бесплатно конечно же) уму разуму и передают свой опыт другим системным администраторам. Можно сказать что у меня университет.
а ну да забыл, триада по вашему
 
Какая еще банда? что за слова такие? у меня только опытные системные администраторы, которые учат (не бесплатно конечно же) уму разуму и передают свой опыт другим системным администраторам. Можно сказать что у меня университет.
Дядя майор просит уточнить адрес университета
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Дядя майор просит уточнить адрес университета
Нет физического адреса, каждый системный администратор практикуется, набирается опыта и проводит платное обучение ленивых системных администраторов в любой точке планеты, очень удобно учитывая ковид и напряженную обстановку в мире. Купил деревеньку в Африке и живёшь по маленьку, спасибо Илону Маску за старлинк, без него бы было туго в Африканской деревне.
 
Код:
Поскольку Kernel32 уже загружен из нескольких импортов LockBit, вредоносное ПО находит его и разрешает LoadLibraryA для загрузки других в память.

kernel32 всегда грузится в адресное пространство осью, независимо есть ли импорты из этой длл или нет
 
Это кто?
Привет. Ну типа как я понял, типа паучка бинарного, который свою сеть по всей локалки расплетает а потом массово шифрует))
 
Какая еще банда? что за слова такие? у меня только опытные системные администраторы, которые учат (не бесплатно конечно же) уму разуму и передают свой опыт другим системным администраторам. Можно сказать что у меня университет.
Исправил так - Сообщество наиграмотнейших системных администраторов и программистов ))
 
Завтра остальную часть выложу, очень тяжелая статья, в ней 250 картинок, я решил разбить на несколько частей.
 
Да и вообще, нужно чтобы cpeter на такие каверзные вопросы отвечал, он же автор, не я. ))
 
Код:
Поскольку Kernel32 уже загружен из нескольких импортов LockBit, вредоносное ПО находит его и разрешает LoadLibraryA для загрузки других в память.

kernel32 всегда грузится в адресное пространство осью, независимо есть ли импорты из этой длл или нет
cpeter
 
There is no physical address, every system administrator practices, gains experience and conducts paid training for lazy system administrators anywhere in the world, very convenient given the covid and tense situation in the world. I bought a village in Africa and live small, thanks to Elon Musk for the starlink, without him it would be tight in the African village.
I hope it's in Tanzania, EA
 
Код:
Поскольку Kernel32 уже загружен из нескольких импортов LockBit, вредоносное ПО находит его и разрешает LoadLibraryA для загрузки других в память.

kernel32 всегда грузится в адресное пространство осью, независимо есть ли импорты из этой длл или нет
This is correct! Thanks for correcting me on this!
 
Пожалуйста, обратите внимание, что пользователь заблокирован
kernel32 всегда грузится в адресное пространство осью, независимо есть ли импорты из этой длл или нет
Ну сервисы вполне могут работать без нее, только с ntdll.dll, для windows и console подсистем, она всегда будет загружена, да.
 
Да и вообще, нужно чтобы cpeter на такие каверзные вопросы отвечал, он же автор, не я. ))
я не могу понять, ты новый ак качаешь или что ? в чём прикол выкладывать статью, которую написал другой мембер ?
 


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