Сейчас на форуме: asfa, Rio (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Алгоритм разбора блокеров
Посл.ответ Сообщение

Ранг: -0.1 (гость), 6thx
Активность: 0.010
Статус: Участник

Создано: 07 октября 2013 08:00
· Личное сообщение · #1

Доброго времени

Ходил к знакомым лечить windows блокера, загрузочная флешка и прочее проблему решило.
Забрал тельце с собой ... и слегка обломался в разборе.
Запускал из олли, ставил бряк на запись в реестре - судя по всему процесс запущенный в отладчике завершился, запустился другой процесс, и блокнул виртуалку.

Судя по зверьку писано непрофессионалами, ничем не паковано

Имеется пару вопросов:
Как предотвратить блокировку диспетчера задач, ну и там алт+таб и т.п.
Т.е. спокойно добраться до алгорима проверки ключа вирусней.

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

заранее спасибо




Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 07 октября 2013 08:32 · Поправил: ZaZa
· Личное сообщение · #2

SergeyIvan
А может забрать права на запись в реестр по путям, которые блокируют диспетчер задач и т.д.?

А можно еще тут прогнать сначала: --> Anubis <--
А потом просмотреть отчет и глянуть: где, что дергается, куда ломится и т.д.

-----
One death is a tragedy, one million is a statistic.




Ранг: -0.1 (гость), 6thx
Активность: 0.010
Статус: Участник

Создано: 07 октября 2013 09:01
· Личное сообщение · #3

ZaZa

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

Грузил в отладчик дергется пару фунок, и пару десятков mfc.000xxxx и дальше.



Ранг: 145.8 (ветеран), 190thx
Активность: 0.140.36
Статус: Участник

Создано: 07 октября 2013 09:04
· Личное сообщение · #4

И где файл то?



Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 07 октября 2013 09:19 · Поправил: Veliant
· Личное сообщение · #5

Большая часть винлоков написана на Delphi+KOL. Чтоб окно олли не блокировалось окном винлока, жмешь alt+f5 в олли, правда при этом могут отвалиться клавиши F1-F12.
Да и коды разблокировки есть от силы у половины винлоков. Так что покажи хотяб его скрин.

Еще часто встречаются винлоки написанные школотой с использованием PhpSoulEngine. Тогда ищешь в теле сигнатуру "SO!" с именем _EVENTS. И копируешь все вплоть до сигнутары "EO!" Полученные данные сначала декриптуешь по base64, потом zlib.

Add:
>>судя по всему процесс запущенный в отладчике завершился, запустился другой процесс
Значит упакован. Лови WriteProcessMemory во второй процесс и получишь распакованный ехе.




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 07 октября 2013 12:00
· Личное сообщение · #6

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

Судя по зверьку писано непрофессионалами
Из чего это следует? (просто любопытно)

Грузил в отладчик дергется пару фунок, и пару десятков mfc.000xxxx и дальше.
Флирты иды спасут отца русской демократии.

>>судя по всему процесс запущенный в отладчике завершился, запустился другой процесс
Значит упакован.


Нет, не значит. Если у меня в ресурсах одного ехе лежит другой ехе, то это не значит, что ехе № 2 упакован. Ловить надо вначале CreateProcessA/W.

Лично от себя добавлю, что мне интересна методика модификации загрузочных секторов жёсткого диска, с точки зрения "как это потом программно лечить". А остальное всё - детский лепет, а не локеры. (ну, мне так кажется)

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 07 октября 2013 12:12
· Личное сообщение · #7

ARCHANGEL пишет:
Лично от себя добавлю, что мне интересна методика модификации загрузочных секторов жёсткого диска, с точки зрения "как это потом программно лечить". А остальное всё - детский лепет, а не локеры. (ну, мне так кажется)

Не актуально уже. А по сабжу, mbrlocker'ы, как правило, делают копию оригинального mbr, которую восстанавливают и грузят после разблокировки. В самом распространенном локере оригинальный MBR лежит во втором секторе. В подмененном mbr ищешь чтение секторов (int 13h) и смотришь номера читаемых им секторов. Там таких вызовов будет несколько т.к. там еще читаются сектора с текстом локера и с битовой картой шрифтов.




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 07 октября 2013 14:26
· Личное сообщение · #8

Veliant пишет:
Не актуально уже.

Да, я просто в этих вопросах не очень в теме.

по сабжу, mbrlocker'ы, как правило, делают копию оригинального mbr, которую восстанавливают и грузят после разблокировки. В самом распространенном локере оригинальный MBR лежит во втором секторе.

Это хорошо всё, но мне бы пример кода, а лучше тьюториал (английский или русский языки), просто мне вот непонятно несколько пунктов:

1. Как это дело дебажить? Вот как бы мне отдебажить загрузочный сектор?
2. Как создать загрузочный сектор на каком-то носителе информации (флэшке, CD-ROM)?

У меня тут чисто академический интерес, поэтому мне не нужно зиродей разработки по vbr и т.д. mbr бы хватило.

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 431.7 (мудрец), 391thx
Активность: 0.730.32
Статус: Участник

Создано: 07 октября 2013 15:15 · Поправил: dosprog
· Личное сообщение · #9

ARCHANGEL,
"лечение" в таких случаях программе лучше не доверять. Ручками в DISKEDIT.EXE искать оригинальный сектор, если он не шифрован.
А вообще лучше иметь сохранённую копию MBR и в случае чего просто восстанавливать её, загрузившись в DOS.
Удобно пользоваться утилитой для этой цели. Есть разные, но мне нравится эта.
Дебажить реально загрузочный сектор можно с помощью Soft-ICE for DOS, который умеет выполнять "тёплую перезагрузку".



Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 07 октября 2013 15:20
· Личное сообщение · #10

ARCHANGEL пишет:
Как это дело дебажить? Вот как бы мне отдебажить загрузочный сектор?

Если это VMWare, то открываешь .vmx файл и добавляешь строки
Code:
  1. debugStub.listen.guest32 = "TRUE"
  2. debugStub.hideBreakpoints= "TRUE"
  3. monitor.debugOnStartGuest32 = "TRUE"

Далее открываешь IDA или любой другой front-end для gdb и подключаешься к удаленному отладчику localhost:8832.
Переходишь на адрес 0x7c00 и ставишь бряк, отпускаешь - voila! Ты на начальной инструкции MBR.
В иде после этого надо дополнительно переключить сегмент в 16 бит (по умолчанию 32)

| Сообщение посчитали полезным: ARCHANGEL, DenCoder, BoOMBoX, DimitarSerg, dosprog, Dimarik5, texsez

Ранг: -0.1 (гость), 6thx
Активность: 0.010
Статус: Участник

Создано: 07 октября 2013 22:19 · Поправил: SergeyIvan
· Личное сообщение · #11

Спасибо всем за ответы

ARCHANGEL пишет:
Из чего это следует? (просто любопытно)

Наверное следует из процесса лечения занявшего 5 минут, 4 из которых загрузка с флешки.

ARCHANGEL пишет:
Нет, не значит. Если у меня в ресурсах одного ехе лежит другой ехе, то это не значит, что ехе № 2 упакован. Ловить надо вначале CreateProcessA/W.


Вообщем общее уловил.
Про mbr не будем, вот туловище кому интересно - пароль на архив virus - http://rghost.ru/49217030
Цель (моя) - получить код разблокировки

А вот вопрос - поиск сигнатур pe-файла внутре жертвы - вариант ?

ЗЫ
по поводу мбр блокеров - может будет интересно - https://vazonez.com/



Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 07 октября 2013 22:46 · Поправил: Veliant
· Личное сообщение · #12

Собственно что я и говорил. По WriteProcessMemory инжектится декриптованный ехе, упакованный UPX. Под ним Delphi+KOL.

Code:
  1. UPX0:0040D878 a967671636      db '967671636',0        ; DATA XREF: sub_40B744+98Do


В OnCreate в окне создается невидимый editbox с кодом
Code:
  1.   v145 = Kol::NewEditbox(*(_DWORD *)(*(_DWORD *)v3 + 24), v144);
  2.   v146 = Kol::TControl::SetPosition(v145, 536, 48);
  3.   v147 = Kol::TControl::SetSize(v146, 156, 0);
  4.   *(_DWORD *)(*(_DWORD *)v3 + 72) = v147;
  5.   Kol::TControl::SetVisible(v147, 0);
  6.   Kol::TControl::SetCaption(*(_DWORD *)(*(_DWORD *)v3 + 72), "967671636");


Далее в обработчике OnPress (40E438) сравниваются введенный код с содержимым невидимого editbox
Code:
  1. Kol::TControl::GetCaption(*(_DWORD *)(a1 + 88), &v28);
  2.   v2 = v28;
  3.   Kol::TControl::GetCaption(*(_DWORD *)(v1 + 72), &v27);
  4.   System::__linkproc__ LStrCmp(v2, v27);
  5.   if ( v3 )
  6.   {

Ну и дальше создание kill.bat который удаляет винлок, забыв правда почистить реестр за собой

А вообще для этого винлока код = указанный номер без первой и последней цифры.

SergeyIvan пишет:
А вот вопрос - поиск сигнатур pe-файла внутре жертвы - вариант ?

Только если вы хотите поставить доставание ключей из винлоков на поток.

В аттаче если кому надо сигнатуры KOL для иды.

a9c9_07.10.2013_EXELAB.rU.tgz - kol.sig

| Сообщение посчитали полезным: Dazz, vden

Ранг: 23.2 (новичок), 8thx
Активность: 0.020
Статус: Участник

Создано: 07 октября 2013 23:02 · Поправил: GMax
· Личное сообщение · #13

windowssecurity

Там еще дропер есть

С&C http://networksecurityx.hopto.org



Ранг: 431.7 (мудрец), 391thx
Активность: 0.730.32
Статус: Участник

Создано: 07 октября 2013 23:57 · Поправил: dosprog
· Личное сообщение · #14

SergeyIvan,
коды вводи-не вводи, а реестр чистить ручками всё равно придётся. Поэтому лучше не играться в эти игры, а сразу приступать к действиям.
Кстати, смело вы так с флешки грузитесь... а ведь бывают нестандартные винчестеры на нетбуках, в этом случае загрузка с карточки без драйверов вам мало что даст. Поэтому самый нормальный способ - загрузка Windows по F8 Safe mode+Command Prompt, дальше запуск отруки Explorer.exe и уже тогда манипуляции с реестром, которые вы проделали. (Вообще можно и после обычной загрузки подержать Ctrl+Shift+Esc и в диспетчере задач ухитриться тыцнуть "Завершить". Ничем не хуже ввода дурацких цифер).
Игры с перечислениями денег - зряшная трата времени и этих денег. Одна знакомая попробовала... Всё равно пришлось звать на помощь.
И ещё - а кто-нибудь пробивал в гугле реквизиты, куда перечислять денюжки? - Я да. Интересные результаты, должен вам сказать ))).
Вот до кучи похожая вестчь: 989b_07.10.2013_EXELAB.rU.tgz - SBU_PORN.RAR <-- password is "1"



Ранг: 23.2 (новичок), 8thx
Активность: 0.020
Статус: Участник

Создано: 08 октября 2013 01:07 · Поправил: GMax
· Личное сообщение · #15

dosprog пишет:
Вот до кучи похожая вестчь


Процедура проверки:
Code:
  1. CODE:00409144 sub_409144      proc near               ; DATA XREF: sub_407D34+76Do
  2. CODE:00409144                 push    ebx
  3. CODE:00409145                 mov     ebx, eax
  4. CODE:00409147                 mov     eax, [ebx+80h]
  5. CODE:0040914D                 mov     dl, 1
  6. CODE:0040914F                 call    @Kol@TControl@SetVisible$qqro ; Kol::TControl::SetVisible(bool)
  7. CODE:00409154                 mov     eax, [ebx+80h]
  8. CODE:0040915A                 mov     edx, offset aProverkaVveden ; "Проверка введенных данных. Подождите..."...
  9. CODE:0040915F                 call    @Kol@TControl@SetCaption$qqrx17System@AnsiString ; Kol::TControl::SetCaption(System::AnsiString)
  10. CODE:00409164                 push    300             ; dwMilliseconds
  11. CODE:00409169                 call    Sleep
  12. CODE:0040916E                 mov     eax, [ebx+80h]
  13. CODE:00409174                 mov     edx, offset aPlatejPoDannom ; "платеж по данному номеру не идентифицир"...
  14. CODE:00409179                 call    @Kol@TControl@SetCaption$qqrx17System@AnsiString ; Kol::TControl::SetCaption(System::AnsiString)
  15. CODE:0040917E                 mov     eax, [ebx+74h]
  16. CODE:00409181                 call    @Kol@TControl@Clear$qqrv ; Kol::TControl::Clear(void)
  17. CODE:00409186                 pop     ebx
  18. CODE:00409187                 retn
  19. CODE:00409187 sub_409144      endp




Ранг: 8.3 (гость), 1thx
Активность: 0.020
Статус: Участник

Создано: 17 октября 2013 12:48
· Личное сообщение · #16

Интерестно
Если лог не врет то он достаточно свеж :
Time Stamp : 2013:10:02

Language Code : French ; А это еще интересней.)

.Я правильно понял что сначала CreateFile. А далее в него он инжект ?

Так же в Стринга есть такое дело .data:0040503C 0000001B C C:\windows\explorer.exe..\
Причем тут Explorer.exe?
Спасибо.




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 18 октября 2013 04:03
· Личное сообщение · #17

Veliant Это ты чем так кол раскладывал?

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 18 октября 2013 09:17
· Личное сообщение · #18

Isaev пишет:
Это ты чем так кол раскладывал?

Выставил галку в delphi чтоб при компиляции создавался OBJ-файл, потом из него сделал FLIRT-сигнатуры с помощью flair.

| Сообщение посчитали полезным: 4kusNick


Ранг: 324.3 (мудрец), 221thx
Активность: 0.480.37
Статус: Участник

Создано: 18 октября 2013 12:53
· Личное сообщение · #19

Dimarik5 пишет:
.Я правильно понял что сначала CreateFile. А далее в него он инжект ?

Тебе самому понятен вопрос?

Dimarik5 пишет:
Так же в Стринга есть такое дело .data:0040503C 0000001B C C:\windows\explorer.exe..\ Причем тут Explorer.exe?

Реверсишь только строки?

-----
IZ.RU




Ранг: 8.3 (гость), 1thx
Активность: 0.020
Статус: Участник

Создано: 21 октября 2013 00:34 · Поправил: Dimarik5
· Личное сообщение · #20

DenCoder Да вопрос задал глупо признаю.
Но хотелось бы побольше узнать об инжекте.
OpenProcess + VirtualAllocEx + WriteprocessMemory + CreateRemoteThread
Как я понимаю это простой способ инжекта. А в аргументы какой функции кладется смещение байт которые именно будут инжектироватся? И адресс по которому будет инжект в жертве.К примеру если инжект идет в невостребованное пространство между секциями.Надеюсь вопрос задал правильно.
Спасибо за ответы.




Ранг: 238.8 (наставник), 67thx
Активность: 0.20
Статус: Участник
CyberHunter

Создано: 21 октября 2013 06:37
· Личное сообщение · #21

Дык, VirtualAllocEx может выделять память по необходимому адресу, если он не занят. А вообще код для инжекта правильнее делать базонезависимым.

-----
Nulla aetas ad discendum sera


| Сообщение посчитали полезным: Dimarik5


Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 21 октября 2013 16:17
· Личное сообщение · #22

> К примеру если инжект идет в невостребованное пространство между секциями.

Да, это шедевр


 eXeL@B —› Вопросы новичков —› Алгоритм разбора блокеров
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати