stihl не предоставил(а) никакой дополнительной информации.
сидел себе смотрел на семплы с malwarebazaar-а и вижу, что последний добавленный семпл является представителем семьи Lumma стиллеров
и подумал - а почему бы и нет?
семпл имеет 27/71 на момент написания статьи
скачал семпл, malwarebazaar уже пометил его меткой tag:STEALER и family:LUMMASTEALER( bazaar.abuse.ch/sample/bac52ffc8072893ff26cdbf1df1ecbcbb1762ded80249d3c9d420f62ed0dc202/ ) , но app.any.run все еще не видит ничего кроме stealer(похоже, что еще не обновили БД)
так-же на app.any.run вижу следующую активность со стороны стиллера -
(bac52ffc8072893ff26cdbf1df1ecbcbb1762ded80249d3c9d420f62ed0dc202)
Если честно - не вижу даже смысла разбирать сам дроппер - тут все как обычно.
Семпл спавнит замороженный rundll32.exe и потом холловит его exeшкой луммы, отлавливается это дело при помощи условного system informer-а и бряка на Wow64GetThreadContext - к моменту когда оно брякнется, то в памяти захоловленного rundll32 будет лежать Read-Write-Execute память, в которой можно будет увидеть следующую картину:
Дампим....
После того, как я сдампил из памяти захоловленного rundll32.exe 32ух битную ехе стиллера мне захотелось посмотреть на строки, видим следующую картину:
по строкам parse_error можно с точностью сказать, что в стиллере присутствует JSON либка...
виднеется очень потужный антидебаг / анти-анализ
Так как ехе пакнут, а я хочу еще посмотреть его в иде, то снова запускаем виртуалку, стартуем билд стиллера в дебаггере...
Раскидываю дефолтные бряки на следующие функции -> RaiseException,GetProcAddress,LoadLibrary,MessageBoxA,MessageBoxW, ExitProcess...
И вижу следующую картину при нажатии кнопки Run:
Люмма вызывает GetProcAddress пытаясь получить следующие функции: LdrLoadDll, LdrGetDllHandle, LdrGetProcedureAddress;
LdrLoadDll как замена LoadLibrary(для более скрытного лоада дллок)
LdrGetDllHandle как замена GetModuleHandle
LdrGetProcedureAddress как замена GetProcAddress
Потом грузятся следующие длл: psapi.dll, imagehlp.dll...
после чего пошла уже пробежка по APIшкам которые использует стиллер, они грузятся через LdrGetProcedureAddress
Вот те апи, которые я смог увидеть:
Сразу можно увидеть, что при какой-либо ошибке, люмма завершит свой процесс через ExitProcess.
Я все еще хочу проанализировать данный билд через ИДУ, по этому я сейчас добегу до ближайшего ExitProcess-а и просто сдамплю ехе уже со всеми импортами через Scylla
На выходе получаю названный мной lol.exe, фиксшу дамп, PE и прочее
гружу уже это в иду и вижу следующую картину:
152 импорта, 1 экспорт(main), 1332 строки на весь файл, хотя строк сверху все еще не видно...
удостоверяюсь в том, что я правильно сдампил билд открывая случайную функцию с вызовом импорта:
так-же наблюдаем в билде самый обычный xorstr с гитхаба:
Но из-за того, что файл пакнут LLVM морфером проку от анализа в статике будет мало..
По этому, запускаем виртуалку с дебаггером снова и идем смотреть в рантайме на то, что смотрели только что в иде
Первой пробемой является проверка чексуммы путем вызова апи MapFileAndCheckSumW, пропатчить ее не так уж и сложно
После того, как мы пробежали чексумму, то нас встречает уже другое окно:
Ввожу то, что от меня требует стиллак и окно закрывается, а экзекуция продолжается
Бежим дальше и встречаем вот это -
RU,AZ,AM,AB,BY,GE,KZ,KG,MD,TJ,TM,UA,UZ,LT,LV,EE
оставлю эту ссылку тут, на нее стучит этот билд - Для просмотра ссылки Войдиили Зарегистрируйся
постараюсь чтобы вторая часть с анализом уже по существу вышла завтра тк эта уже затянулась, но не похоже, что тут будет что-то особенно интересное :/
и подумал - а почему бы и нет?
семпл имеет 27/71 на момент написания статьи
скачал семпл, malwarebazaar уже пометил его меткой tag:STEALER и family:LUMMASTEALER( bazaar.abuse.ch/sample/bac52ffc8072893ff26cdbf1df1ecbcbb1762ded80249d3c9d420f62ed0dc202/ ) , но app.any.run все еще не видит ничего кроме stealer(похоже, что еще не обновили БД)
так-же на app.any.run вижу следующую активность со стороны стиллера -
(bac52ffc8072893ff26cdbf1df1ecbcbb1762ded80249d3c9d420f62ed0dc202)
Если честно - не вижу даже смысла разбирать сам дроппер - тут все как обычно.
Семпл спавнит замороженный rundll32.exe и потом холловит его exeшкой луммы, отлавливается это дело при помощи условного system informer-а и бряка на Wow64GetThreadContext - к моменту когда оно брякнется, то в памяти захоловленного rundll32 будет лежать Read-Write-Execute память, в которой можно будет увидеть следующую картину:
Дампим....
После того, как я сдампил из памяти захоловленного rundll32.exe 32ух битную ехе стиллера мне захотелось посмотреть на строки, видим следующую картину:
по строкам parse_error можно с точностью сказать, что в стиллере присутствует JSON либка...
виднеется очень потужный антидебаг / анти-анализ
Код:
0x4154b5 | 0xfeff5b23 | 0x30c | ollydbg.exe
0x419fb4 | 0x41be6a | 0x498 | JohnDoe
0x41a1db | 0x460fb0 | 0x6c | avghookx.dll
0x41a1db | 0x460fb0 | 0x69 | Wookx.dll
Раскидываю дефолтные бряки на следующие функции -> RaiseException,GetProcAddress,LoadLibrary,MessageBoxA,MessageBoxW, ExitProcess...
И вижу следующую картину при нажатии кнопки Run:
Люмма вызывает GetProcAddress пытаясь получить следующие функции: LdrLoadDll, LdrGetDllHandle, LdrGetProcedureAddress;
LdrLoadDll как замена LoadLibrary(для более скрытного лоада дллок)
LdrGetDllHandle как замена GetModuleHandle
LdrGetProcedureAddress как замена GetProcAddress
Потом грузятся следующие длл: psapi.dll, imagehlp.dll...
после чего пошла уже пробежка по APIшкам которые использует стиллер, они грузятся через LdrGetProcedureAddress
Вот те апи, которые я смог увидеть:
Код:
LdrGetProcedureAddress ->>
GetWindowTextLengthW
GetComputerNameW
GetSystemDefaultLCID
GetWindowTextW
CreateToolhelp32Snapshot
GetUserDefaultLCID
GlobalMemoryStatusEx
NtClose
CloseHandle
WinExec
RegisterClassW
GetModuleHandleA
MessageBoxW
NtSetContextThread
DefWindowProcW
CreateWindowExW
MapFileAndCheckSumW
GetSysColorBrush
GetModuleFileNameA
TranslateMessage
DispatchMessageW
WideCharToMultiByte
GetFileSizeEx
GetSystemMetrics
GetTickCount
GetDesktopWindow
DestroyWindow
CreateFileA
SetWindowTextW
NtCreateDebugObject
GetLocaleInfoA
Process32FirstW
PostQuitMessage
NtGetContextThread
GetLastInputInfo
MultiByteToWideChar
GetModuleFileNameW
ExitProcess
GetUserNameW
GetForegroundWindow
NtQueryObject
GetMessageW
EnumProcesses
GetSystemInfo
Sleep
GetWindowRect
Process32NextW
Я все еще хочу проанализировать данный билд через ИДУ, по этому я сейчас добегу до ближайшего ExitProcess-а и просто сдамплю ехе уже со всеми импортами через Scylla
На выходе получаю названный мной lol.exe, фиксшу дамп, PE и прочее
гружу уже это в иду и вижу следующую картину:
152 импорта, 1 экспорт(main), 1332 строки на весь файл, хотя строк сверху все еще не видно...
удостоверяюсь в том, что я правильно сдампил билд открывая случайную функцию с вызовом импорта:
так-же наблюдаем в билде самый обычный xorstr с гитхаба:
Но из-за того, что файл пакнут LLVM морфером проку от анализа в статике будет мало..
По этому, запускаем виртуалку с дебаггером снова и идем смотреть в рантайме на то, что смотрели только что в иде
Первой пробемой является проверка чексуммы путем вызова апи MapFileAndCheckSumW, пропатчить ее не так уж и сложно
После того, как мы пробежали чексумму, то нас встречает уже другое окно:
Ввожу то, что от меня требует стиллак и окно закрывается, а экзекуция продолжается
Бежим дальше и встречаем вот это -
RU,AZ,AM,AB,BY,GE,KZ,KG,MD,TJ,TM,UA,UZ,LT,LV,EE
оставлю эту ссылку тут, на нее стучит этот билд - Для просмотра ссылки Войди
постараюсь чтобы вторая часть с анализом уже по существу вышла завтра тк эта уже затянулась, но не похоже, что тут будет что-то особенно интересное :/