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

LockBit3.0-Сорцев похоже не будет

Статус
Закрыто для дальнейших ответов.
А вот непонял

.text:008B7308 push ebp
.text:008B7309 mov ebp, esp
.text:008B730B add esp, 0FFFFFFFCh
.text:008B730E push ebx
.text:008B730F call WaitDesktopVisible_WS_VISIBLE_style
.text:008B7314 push 1
.text:008B7316 call SetWallpaper
.text:008B731B push 0 ; refresh desktop
.text:008B731D push 0
.text:008B731F push 1000h ; SHCNF_FLUSH ? why not SHCNF_IDLIST
.text:008B731F ; The function should not return until the notification has been delivered to all affected components. As this flag modifies other data-type flags, it cannot by used by itself.
.text:008B7324 push 8000000h ; SHCNE_ASSOCCHANGED
.text:008B7324 ; A file type association has changed. SHCNF_IDLIST must be specified in the uFlags parameter. dwItem1 and dwItem2 are not used and must be NULL.
.text:008B7329 call SHChangeNotify ; Notifies the system of an event that an application has performed. An application should use this function if it performs an action that may affect the Shell.


Это ошибка или какая то хитрость?
Вроде это для того что бы десктоп обновить, по доку должно быть SHCNF_IDLIST. Пробовал гуглить пример с SHCNF_FLUSH, но че то не нашел ничего внятного.
 
Последнее редактирование:
Пара наблюдений.
По дефолту проверка языка отключена, но всем ведь похуй, теперь любая падла может работать по ру, прежде чем выкладывать наверное надо было это в билде захардкодить что бы по ру никак. А еще то что партнерка позволяет это ограничение обходить это так себе.
А еще есть "баг" который может приводить к зависанию =)
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
По дефолту проверка языка отключена, но всем ведь похуй, теперь любая падла может работать по ру,
Раньше это было по умолчанию в любой ПП, потом же (примерно год назад) все как-то вместе убрали. Не знаю , почему. Официально считается, что типа адверт работает вручную, и видит кого и что лочит. И если локнуть РУ контору, то овнер ПП бесплатно выдаст декриптор (а адверта выгонит).

Кребсы и прочие далекие от темы люди писали, что мол локер проверяет ру раскладку, поэтому для защиты просто ее себе добавьте. Но это бред полный, уже тогда писал, любой нормальный локер всегда проверял локаль, т.е. язык системы.
 
Fuck Off SRP!

Код:
.text:008B1B44 Terminate_runonce_exe_and_WaitDesktopVisible proc near
.text:008B1B44                                         ; CODE XREF: SpreadLanding+7?p
.text:008B1B44                 push    ebx
.text:008B1B45                 push    esi
.text:008B1B46                 call    DetermineOsVersion
.text:008B1B4B                 cmp     eax, '4'
.text:008B1B4E                 ja      short win_vista_plus ; why?
.text:008B1B50                 mov     esi, GetCurrentThreadDesktopHwnd ; GetDesktopWindow Minimum operating systems Windows 95, Windows NT 3.1
.text:008B1B56                 jmp     short loc_8B1B5E
.text:008B1B58 ; ---------------------------------------------------------------------------
.text:008B1B58
.text:008B1B58 win_vista_plus:                         ; CODE XREF: Terminate_runonce_exe_and_WaitDesktopVisible+A?j
.text:008B1B58                 mov     esi, GetShellWindow ; Minimum operating systems Windows 2000
.text:008B1B5E
.text:008B1B5E loc_8B1B5E:                             ; CODE XREF: Terminate_runonce_exe_and_WaitDesktopVisible+12?j
.text:008B1B5E                 call    terminate_process_runonce_exe
.text:008B1B63
.text:008B1B63 loc_8B1B63:                             ; CODE XREF: Terminate_runonce_exe_and_WaitDesktopVisible+47?j
.text:008B1B63                 call    esi ; GetCurrentThreadDesktopHwnd
.text:008B1B65                 mov     ebx, eax
.text:008B1B67                 test    ebx, ebx
.text:008B1B69                 jz      short loc_8B1B83
.text:008B1B6B
.text:008B1B6B loc_8B1B6B:                             ; CODE XREF: Terminate_runonce_exe_and_WaitDesktopVisible+3D?j
.text:008B1B6B                 push    ebx
.text:008B1B6C                 call    IsWindowVisible
.text:008B1B72                 test    eax, eax
.text:008B1B74                 jz      short loc_8B1B79
.text:008B1B76                 pop     esi
.text:008B1B77                 pop     ebx
.text:008B1B78                 retn
.text:008B1B79 ; ---------------------------------------------------------------------------
.text:008B1B79
.text:008B1B79 loc_8B1B79:                             ; CODE XREF: Terminate_runonce_exe_and_WaitDesktopVisible+30?j
.text:008B1B79                 push    64h
.text:008B1B7B                 call    Sleep
.text:008B1B81                 jmp     short loc_8B1B6B
.text:008B1B83 ; ---------------------------------------------------------------------------
.text:008B1B83
.text:008B1B83 loc_8B1B83:                             ; CODE XREF: Terminate_runonce_exe_and_WaitDesktopVisible+25?j
.text:008B1B83                 push    64h
.text:008B1B85                 call    Sleep
.text:008B1B8B                 jmp     short loc_8B1B63
.text:008B1B8B Terminate_runonce_exe_and_WaitDesktopVisible endp

Инетересно как эта процедура называется в оригинале. Не мог же компиль вот прямо так заоптимизировать...или мог? и почему до вин виста нельзя юзать GetShellWindow?
 
Раньше это было по умолчанию в любой ПП, потом же (примерно год назад) все как-то вместе убрали. Не знаю , почему. Официально считается, что типа адверт работает вручную, и видит кого и что лочит. И если локнуть РУ контору, то овнер ПП бесплатно выдаст декриптор (а адверта выгонит).

Кребсы и прочие далекие от темы люди писали, что мол локер проверяет ру раскладку, поэтому для защиты просто ее себе добавьте. Но это бред полный, уже тогда писал, любой нормальный локер всегда проверял локаль, т.е. язык системы.
Там два варианта, либо раскладку проверяет, либо язык системы. Отключают иногда, потому что кодеры это реализуют через жопу, условно говоря на той же Болгарии билд может не запустится
 
Не знаю, как там у локбита; но вообще, подобная техника была у некоторых локеров. Суть в чем - допустим у вас есть шифровальщик, и вы не хотите его палить аверам (чтобы не задетектили) и конкурентам (чтобы не украли илитную матчасть). Но как это сделать? Адвертам как не говори, все равно есть человеческий фактор, да и аверы и "кеш" винды и т.д. никто не отменял. Поэтому, придумали такую технологию - софт (ЕХЕ или DLL) шифруется каким-то алгоритмом, размещается допустим в ресурсах или еще где. Пишется софт вида PE лоадер, который принимает на вход ключ, которым расшифровывает тело локера и запускает в памяти. Самого локера на диске нигде нет, а билд "криптора" если и попадет к АВ, то они его не запустят по понятным причинам. Да, некоторые вещи типа sysmon логирует запуск ехе с аргументами, и мб тут еще что-то было, но я знаю это так.
Где ты этому обучился? Что ты читал, кого смотрел?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
это все хорошо, но что нам скажет LockBitSupp ??
Скажу, что тема создана для провакаций нервного кодера, чтобы заставить его на эмоциях слить исходники, которые так сильно нужны топик стартеру.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Там два варианта, либо раскладку проверяет, либо язык системы. Отключают иногда, потому что кодеры это реализуют через жопу, условно говоря на той же Болгарии билд может не запустится
Раскладка это бред, язык системы имхо норм проверка. Врядли пендос или немец будет сидеть за русской виндой. Хотя, и у нас в Мск встречал английские винсервера (хз зачем). Еще можно чекать домен АД, но тоже 50 на 50. Имхо при ручной работе это не проблема вообще. А при желании..ну давайте начистоту, пропатчить любой софт , отключив проверку по РУ, это дело 10 минут для кодера. Нашел и тупо занопил проверку.

Где ты этому обучился?
Чему "этому"?
 
Как смешать мягкое с теплым, что бы и не мягко и не тепло но работало?
Например так:

Код:
.text:008A8200 CreateBmpImageAndSetItForWallpaperIfFlagSet proc near
.text:008A8200                                         ; CODE XREF: sub_8B1E50+156?p
.text:008A8200                                         ; sub_8B6F90+317?p ...
.text:008A8200
.text:008A8200 var_2E0         = word ptr -2E0h
.text:008A8200 Source          = word ptr -0D8h
.text:008A8200 Str             = word ptr -0ACh
.text:008A8200 var_8C          = word ptr -8Ch
.text:008A8200 var_8A          = dword ptr -8Ah
.text:008A8200 var_86          = word ptr -86h
.text:008A8200 var_84          = word ptr -84h
.text:008A8200 var_82          = dword ptr -82h
.text:008A8200 Dst             = dword ptr -7Ch
.text:008A8200 var_78          = dword ptr -78h
.text:008A8200 var_74          = dword ptr -74h
.text:008A8200 var_70          = word ptr -70h
.text:008A8200 var_6E          = word ptr -6Eh
.text:008A8200 var_6C          = dword ptr -6Ch
.text:008A8200 var_68          = dword ptr -68h
.text:008A8200 var_50          = dword ptr -50h
.text:008A8200 var_4C          = dword ptr -4Ch
.text:008A8200 var_48          = dword ptr -48h
.text:008A8200 var_44          = dword ptr -44h
.text:008A8200 var_40          = dword ptr -40h
.text:008A8200 var_3C          = dword ptr -3Ch
.text:008A8200 var_38          = dword ptr -38h
.text:008A8200 var_34          = byte ptr -34h
.text:008A8200 var_30          = dword ptr -30h
.text:008A8200 P               = dword ptr -2Ch
.text:008A8200 pWallpaperFileW = dword ptr -28h
.text:008A8200 var_24          = dword ptr -24h
.text:008A8200 var_20          = dword ptr -20h
.text:008A8200 var_1C          = dword ptr -1Ch
.text:008A8200 var_18          = dword ptr -18h
.text:008A8200 var_14          = dword ptr -14h
.text:008A8200 var_10          = dword ptr -10h
.text:008A8200 var_C           = byte ptr -0Ch
.text:008A8200 var_8           = dword ptr -8
.text:008A8200 Handle          = dword ptr -4
.text:008A8200 bSetWallpaper   = dword ptr  8
.text:008A8200
.text:008A8200                 push    ebp
.text:008A8201                 mov     ebp, esp
.text:008A8203                 sub     esp, 2E0h
.text:008A8209                 push    ebx
.text:008A820A                 push    esi
.text:008A820B                 push    edi
.text:008A820C                 mov     [ebp+var_10], 0
.text:008A8213                 mov     [ebp+var_14], 0
.text:008A821A                 mov     [ebp+var_18], 0
.text:008A8221                 mov     [ebp+var_24], 0
.text:008A8228                 mov     [ebp+pWallpaperFileW], 0
.text:008A822F                 mov     [ebp+var_38], 0
.text:008A8236                 mov     [ebp+var_3C], 0
.text:008A823D                 mov     [ebp+Handle], 0
.text:008A8244                 mov     [ebp+var_8], 0
.text:008A824B                 mov     [ebp+P], 0
.text:008A8252                 cmp     fl_set_wallpaper, 0
.text:008A8259                 jnz     short loc_8A8260
.text:008A825B                 jmp     loc_8A8889
.text:008A8260 ; ---------------------------------------------------------------------------
.text:008A8260
.text:008A8260 loc_8A8260:                             ; CODE XREF: CreateBmpImageAndSetItForWallpaperIfFlagSet+59?j
.text:008A8260                 push    0
.text:008A8262                 call    GetDC
.text:008A8268                 mov     [ebp+var_10], eax
.text:008A826B                 cmp     [ebp+var_10], 0
.text:008A826F                 jnz     short loc_8A8276
.text:008A8271                 jmp     loc_8A8889
.text:008A8276 ; ---------------------------------------------------------------------------
.text:008A8276
.text:008A8276 loc_8A8276:                             ; CODE XREF: CreateBmpImageAndSetItForWallpaperIfFlagSet+6F?j
.text:008A8276                 push    [ebp+var_10]
.text:008A8279                 call    CreateCompatibleDC
.text:008A827F                 mov     [ebp+var_14], eax
.text:008A8282                 cmp     [ebp+var_14], 0
.....
И что же там не так спросит юный падаван? К чему докопался хитрый выманиватель сорцев на этот раз?
ответ вот где то здесь
.text:008A8252 cmp fl_set_wallpaper, 0
а вот кусочек из жсона конфигурации
...
"set_wallpaper": true,
...
Для разгадывания этого ребуса 8 лет опыта в кодинге будет не достаточно, и 9 тоже =)
 
Скажу, что тема создана для провакаций нервного кодера, чтобы заставить его на эмоциях слить исходники, которые так сильно нужны топик стартеру.
Кое что я и так оттуда возьму, точнее все что захочу =) Будут сорцы или нет.
 
Да пацаны там файл с востановленными импами корявый слегка, я его по сумболсам делал и не почистил сперва. Если нужен подчищенный спрашивайте. Впрочем там и самому подчистить не особо трудно.
 
И так на этот раз у нас маленькая но веселая процедурка, которая возвращает флаг и статус, что же может быть с ней так?
Какие веселые приколы могут произойти? будет ли это рандомщина которую заипешся ловить?
И так
Код:
.text:008A6E1C ; int __stdcall IsOs64bit(HANDLE ProcessHandle, int p64bitOsBoolFlag)
.text:008A6E1C IsOs64bit       proc near               ; CODE XREF: sub_8A77FC+2C4?p
.text:008A6E1C                                         ; sub_8AAE44+138?p ...
.text:008A6E1C
.text:008A6E1C ProcessInformation= dword ptr -4
.text:008A6E1C ProcessHandle   = dword ptr  8
.text:008A6E1C p64bitOsBoolFlag= dword ptr  0Ch
.text:008A6E1C
.text:008A6E1C                 push    ebp
.text:008A6E1D                 mov     ebp, esp
.text:008A6E1F                 add     esp, 0FFFFFFFCh
.text:008A6E22                 push    ebx
.text:008A6E23                 xor     ebx, ebx
.text:008A6E25                 push    0               ; ReturnLength
.text:008A6E27                 push    4               ; ProcessInformationLength
.text:008A6E29                 lea     eax, [ebp+ProcessInformation]
.text:008A6E2C                 push    eax             ; ProcessInformation
.text:008A6E2D                 push    1Ah             ; ProcessWow64Information
.text:008A6E2F                 push    [ebp+ProcessHandle] ; ProcessHandle
.text:008A6E32                 call    NtQueryInformationProcess
.text:008A6E38                 test    eax, eax
.text:008A6E3A                 jnz     short loc_8A6E4A
.text:008A6E3C                 xor     eax, eax
.text:008A6E3E                 cmp     [ebp+ProcessInformation], eax
.text:008A6E41                 setnz   al              ; 64bit os true
.text:008A6E44                 mov     ecx, [ebp+p64bitOsBoolFlag]
.text:008A6E47                 mov     [ecx], eax
.text:008A6E49                 inc     ebx             ; success flag
.text:008A6E4A
.text:008A6E4A loc_8A6E4A:                             ; CODE XREF: IsOs64bit+1E?j
.text:008A6E4A                 mov     eax, ebx
.text:008A6E4C                 pop     ebx
.text:008A6E4D                 mov     esp, ebp
.text:008A6E4F                 pop     ebp
.text:008A6E50                 retn    8
.text:008A6E50 IsOs64bit       endp
и так при успехе функа вернет 1, при фолсе 0. и только при успехе она возвращает в p64bitOsBoolFlag 0 - если ос32 и 1 если 64.

Как выглядят вызовы этого чуда?
.text:008AAF76 lea eax, [ebp+p64bitOsBoolFlag]
.text:008AAF79 push eax ; p64bitOsBoolFlag
.text:008AAF7A push 0FFFFFFFFh ; ProcessHandle
.text:008AAF7C call IsOs64bit
.text:008AAF81 cmp [ebp+p64bitOsBoolFlag], 0
.text:008AAF85 jz loc_8AB09F

.text:008A7ABA lea eax, [ebp+p64bitOsBoolFlag]
.text:008A7ABD push eax ; p64bitOsBoolFlag
.text:008A7ABE push 0FFFFFFFFh ; ProcessHandle
.text:008A7AC0 call IsOs64bit
.text:008A7AC5 cmp [ebp+p64bitOsBoolFlag], 0
.text:008A7AC9 jz short loc_8A7B0E

Статус код ясное дело никто не проверяет, ну а зачем, нет правда зачем?
А что же у нас будет в p64bitOsBoolFlag если фолс? Ну честно говоря я в 1м из случаев видел туда ноль клали =)

А в качестве закуски офигенный трюк характерный для ц малваро кодеров, чисто молодым на заметку
.text:008B0E3B lea eax, [ebp+s_hScreen] ; b'hScreen'
.text:008B0E41 mov dword ptr [eax], 0B7AF4050h
.text:008B0E47 mov dword ptr [eax+4], 0B78E405Bh
.text:008B0E4E mov dword ptr [eax+8], 0B799405Dh
.text:008B0E55 mov dword ptr [eax+0Ch], 0B7FC4056h
зедесь декриптим сроку и получаем wide hScreen
здесь его юзаем
а здесь нам надо wScreen
и мы вот так!
.text:008B0F0D lea eax, [ebp+s_hScreen] ; make wScreen
.text:008B0F13 add word ptr [eax], 0Fh
а вы как думали не делать же 2 строки когда различается всего 1 символ. Экономия бля.

То ли еще будет дорогие комрады. Не проходим мимо изучаем прорывные приемы коденга самой офигенной рансом малвары!
 
Интересно они там догадаются сказать что специально забагованную и нестабильную версию кинули в паблик, а партнеры юзают конечно совсем другую =) Я же еще не про все приколы рассказываю.
 
Интересно они там догадаются сказать что специально забагованную и нестабильную версию кинули в паблик, а партнеры юзают конечно совсем другую =) Я же еще не про все приколы рассказываю.
раскажи подробнее) а то на столько мало времени что не могу покулапать даже сей шедевр инженерной мысли
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Хороший у Шептуна бизнес план: реверсить сомнительные семплы, искать в них баги, на их базе писать свой собственный шкафчик. План надежный, как швейцарские часы, если я правильно понял.
 
ну это вполне рабочая бизнес модель)
Быстрее и надежнее с нуля реализовать локер, чем рипать чужой глючный код, локер это вообще самая простая малварь из всех что есть, из алгоритмов тебе потребуется только знание рекурсии и структуры деревьев для обхода папок и файлов и знание файловой системы на низком уровне, по сути на этом все заканчивается, потому как в 99% случаев алгоритмы шифрования профитнее использовать из готовых крипто-библиотек, потому что при реализации собственных имплементаций можно допустить ошибок (что кстати и сделал кодер локбита когда реализовал свой чача для шифрования, там был баг за который по словам локбита пришлось выплачивать обещанный багбаунти в 50к бачей)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
обещанный багбаунти в 50к бачей
Да-да, 50к из бюджета на фенибут кодерам. А по поводу странного кода, вы не понимаете просто, это элитный мусорный код, он на самом деле вызывается только внутри сендбоксов, специально вызывая странные баги, чтобы запутать аверов и ментов))
 
Хороший у Шептуна бизнес план: реверсить сомнительные семплы, искать в них баги, на их базе писать свой собственный шкафчик. План надежный, как швейцарские часы, если я правильно понял.

Ну господа у меня и в мыслях не было писать локер на основе этого чуда. Но кое что мне там интересно. Для чего же нужен реверс? Человеку который кодил в стол или не кодил малвару на реальные широкие раздачи это частно не понятно. Но я добрый и я вам все это сейчас расскажу. Реверес уже обкатанной в деле малвары нужен для того что бы посмотреть какие есть подводные камни в реалиализации тех или иных алгоримов, это штуковины типа если вин7 или выше делаем так, если ниже эдак, но если вин 8.0 то так, но если это 2016 сервер то сначало нужно.... Вот когда пишеш что то сам с нуля эти подводные камни и кушают наибольшее колечество времени, сил, нервов. Все что касаетя парсинга файлов, алгов шифрования, все эти трюки с хайдом строк и гейты ясное дело мне нах не нужны и совсем не интрересны, или обход/килл дефендера на который мне вообще пох, никогда с ним не ссорился. Но вы можете думать что я просто тупой и в навозе ищу алмазы =)
 
Статус
Закрыто для дальнейших ответов.
Верх