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

 eXeL@B —› Вопросы новичков —› SEH etc.
<< . 1 . 2 . 3 . >>
Посл.ответ Сообщение

Ранг: 47.7 (посетитель), 17thx
Активность: 0.090
Статус: Участник

Создано: 09 ноября 2011 21:15
· Личное сообщение · #1

Здрасти

Такая вот задача. Есть ссылка. Нужно по этой ссылке прочитать значение так, чтобы всё не упало. Юзермод.

Сразу скажу что ставить сех не годно - код вне модуля. Посему скажу требования:

1. Код вне модулей, сех мы юзать не можем.
2. Про никакие модуля мы ничего не знаем, соответственно VEH мы заюзать не можем.
3. Всякие апи не доступны - про модуля ничего не известно.
4. Авер за нами следит, соответственно мы не можем дёрнуть то, что нельзя.

Предлагайте решение.



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

Создано: 12 ноября 2011 22:02
· Личное сообщение · #2

Юзермод - VirtualQuery / NtQueryVirtualMemory
Кернелмод - MmIsAddressValid / чтение PDE и PTE (второе очень не рекомендую).

P.S. Нужно обязательно искать апи, никакой системно-зависимой ереси с int2e/sysenter.
P.P.S. А еще лучше так не делать, потому что валидная область памяти может стать невалидной между проверкой и обращением. Юзайте нормальные валидные модули, нормальные исключения и нормальные API.

-----
PGP key <0x1B6A24550F33E44A>




Ранг: 0.0 (гость)
Активность: 0.250
Статус: Участник

Создано: 12 ноября 2011 22:22
· Личное сообщение · #3

ntldr
Юзайте нормальные валидные модули, нормальные исключения и нормальные API.

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



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

Создано: 12 ноября 2011 23:55
· Личное сообщение · #4

PE_Kill, покажи свой вариант с проверкой на запись, если он не такой, как предлагалось.
Насчёт misalignment'а: да, адрес стоит выровнять перед вызовом, это не критично

ntldr, такой смешной

F_a_u_s_t пишет:
да и в малваре не жилательно

ммм, а вот в соседнем топике кто-то писал, что в малваре не разбирается, и вдруг советы даёт…




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 13 ноября 2011 07:45
· Личное сообщение · #5

vptrlx да такой же, только сервис другой.

-----
Yann Tiersen best and do not fuck




Ранг: 0.0 (гость)
Активность: 0.250
Статус: Участник

Создано: 13 ноября 2011 10:34 · Поправил: F_a_u_s_t
· Личное сообщение · #6

vptrlx
Если почитаешь другую млю тему,то увидишь что я пишу утиль типа AVZ.
Если малварь не может работать на любой оси,то накуй она нужна?
PE_Kill
Так то оно так,только ты учти время разработки и кто даст гарантию что завтра не будет в базах.




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 13 ноября 2011 11:34
· Личное сообщение · #7

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

-----
Yann Tiersen best and do not fuck




Ранг: -0.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 13 ноября 2011 12:07 · Поправил: lomeavae
· Личное сообщение · #8

ntldr

> P.S. Нужно обязательно искать апи, никакой системно-зависимой ереси с int2e/sysenter.

Не нужно ничего искать, код выше рабочий во всей линейке. Даже в W8, которою инде никада не юзал.

> Юзайте нормальные валидные модули, нормальные исключения и нормальные API.

Для некоторых задач это не приемлимо.

F_a_u_s_t
> Если почитаешь другую млю тему,то увидишь что я пишу утиль типа AVZ.
> Если малварь не может работать на любой оси,то накуй она нужна?

Есчо один авер, почему это оно не будет работать ?

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

К стате ту тему прикрыли про EP, посему напишу тут.

В качестве стартап адреса можно взять фактически любую инструкцию и использовать её как стаб. Простейший пример - инструкция самая простая рет, которых в нэйтиве тысячи. Ну сохраню я на стеке адрес возврата и запущу поток, который выполнит рет и перейдёт на мой код. Вы получите системный стартап адрес. Так можно использовать миллионы инструкций. Да и не только исполнять - можно вызвать фолт. Можно подменить сегмент(для аверов это епик фейл, ибо дерьмо это детектить нормально не может - они думают что сегмент всегда KGDT_R3_CODE). Я всегда создаю потоки через такой стаб, вдобавок к этому юзаю сех и вызываю апи также через стаб(см STPT). В младших версиях был функционал(ThreadQuerySetWin32StartAddress), который юзался до вызова EP модуля, но его можно менять как угодно.
Code:
  1. NtQueryInformationThread():
  2.          ...
  3. PAGE:0065BCD8                 mov     eax, [ebp+arg_4]         ; InfoClass
  4. PAGE:0065BCDB                 cmp     eax, 14h
  5. PAGE:0065BCDE                 jg      loc_65C2D8      ; > 0x14
  6. PAGE:0065BCE4                 jz      loc_65C263      ; ThreadIsTerminated
  7. PAGE:0065BCEA                 cmp     eax, 0Ch
  8. PAGE:0065BCED                 jg      loc_65C05F      ; > 0xC
  9. PAGE:0065BCF3                 jz      loc_65C00D      ; ThreadAmILastThread
  10. PAGE:0065BCF9                 sub     eax, ecx
  11. PAGE:0065BCFB                 jz      loc_65BF35      ; 0
  12. PAGE:0065BD01                 dec     eax       ; 11
  13. PAGE:0065BD02                 jz      loc_65BE51      ; ThreadPerformanceCount
  14. PAGE:0065BD08                 sub     eax, 5
  15. PAGE:0065BD0B                 jz      loc_65BE18      ; 6, ThreadDescriptorTableEntry
  16. PAGE:0065BD11                 sub     eax, 3
  17. PAGE:0065BD14                 jz      loc_65BD9F      ; ThreadBasePriority
  18. PAGE:0065BD1A                 dec     eax
  19. PAGE:0065BD1B                 dec     eax
  20. PAGE:0065BD1C                 jnz     loc_65C7BD
  21.  
  22. PAGE:0065C7BD loc_65C7BD:
  23. PAGE:0065C7BD
  24. PAGE:0065C7BD                 mov     eax, 0C0000003h ; STATUS_INVALID_INFO_CLASS
  25. PAGE:0065C7C2                 jmp     loc_65CA1E


Это W8, ядро 6.2.8102.101. В W7 аналогично. Не пойму как оно у вас работать может

PE_Kill
Никто ничего не забивает обычно в виде хардкода. Ид сисколов можно определить динамически(и теневых тоже), но обычно их напрямую не юзают, есть стабы.



Ранг: 0.0 (гость)
Активность: 0.250
Статус: Участник

Создано: 13 ноября 2011 12:22 · Поправил: F_a_u_s_t
· Личное сообщение · #9

lomeavae
>Есчо один авер, почему это оно не будет работать ?

Дело в не будет работь,а как будет и время затраченое,и как долго будет отстук.

>К стате ту тему прикрыли про EP, посему напишу тут.
Когда я смотрел было наместе,билд правда не скажу на память.

Add:
Залей с Windows 7 либу.



Ранг: -0.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 13 ноября 2011 12:44
· Личное сообщение · #10

F_a_u_s_t

Не, в 7 есть, не то я смотрел:
Code:
  1.          mov edi,dword ptr ss:[ebp+14]
  2.          mov eax,dword ptr ss:[ebp+C]
  3.          push 14
  4.          pop esi
  5.          cmp eax,esi
  6.          jg ntoskrnl.00627B23      ; >0x14
  7.          je ntoskrnl.00627AB2      ; 0x14
  8.          cmp eax,0C
  9.          jg ntoskrnl.006278A7      ; >0xC
  10.          je ntoskrnl.00627859      ; 0xC
  11.          sub eax,0
  12.          je ntoskrnl.0062776E      ; 0, baseinfo
  13.          dec eax                  
  14.          je ntoskrnl.0062766A      ; 1, times
  15.          sub eax,5
  16.          je ntoskrnl.0062762B      ; 6, ldt
  17.          sub eax,3
  18.          je ntoskrnl.006275B5      ; 9, EP
  19.          ...
  20. 006275B5:
  21.          cmp edi,4        ; infolen
  22.          jnz ntoskrnl.00627773
  23.          push 0
  24.          lea eax,dword ptr ss:[ebp-10C]
  25.          push eax
  26.          push dword ptr ss:[ebp-30] 
  27.          push dword ptr ds:[PsThreadType]
  28.          push 40
  29.          push dword ptr ss:[ebp-2C]
  30.          call ntoskrnl.ObReferenceObjectByHandle
  31.          mov esi,eax
  32.          test esi,esi
  33.          jl ntoskrnl.006281F4
  34.          mov ecx,dword ptr ss:[ebp-10C]
  35.          mov edi,dword ptr ds:[ecx+260]     ; ep
  36.          call ntoskrnl.ObfDereferenceObject

Выпилили походу сие чудо тока в 8.



Ранг: 0.0 (гость)
Активность: 0.250
Статус: Участник

Создано: 13 ноября 2011 12:51
· Личное сообщение · #11

lomeavae
Сосредоточтесь.
Залей с Windows 8.



Ранг: -0.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 13 ноября 2011 13:08 · Поправил: lomeavae
· Личное сообщение · #12

F_a_u_s_t
Вот



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

Создано: 13 ноября 2011 13:10
· Личное сообщение · #13

lomeavae

Ты реально упоротый наркоман или это от фазы луны?




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 13 ноября 2011 13:12
· Личное сообщение · #14

lomeavae пишет:
Никто ничего не забивает обычно в виде хардкода. Ид сисколов можно определить динамически(и теневых тоже), но обычно их напрямую не юзают, есть стабы.

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

-----
Yann Tiersen best and do not fuck




Ранг: -0.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 13 ноября 2011 13:14
· Личное сообщение · #15

Alchemistry
Нечего сказать, тогда иди дальше уроки делай. Наркоман, это зависит от фазы луны. Чем это поможет ?



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

Создано: 13 ноября 2011 14:24
· Личное сообщение · #16

lomeavae пишет:
Не нужно ничего искать, код выше рабочий во всей линейке. Даже в W8, которою инде никада не юзал.

Ужоснах. У меня возникает ощущение что ваши программы состоят из недокументированных и потенциально нестабильных приемов чуть менее чем полностью. Оно где-нибудь кроме как у вас работает? Учитывая еще что вы пишите на асме, скорее всего ваш код никогда не был в продакшене.

lomeavae пишет:
Для некоторых задач это не приемлимо.

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


Может я хреновый программист, но у меня допустимый лимит андок приемов - 2-3 на сложный проект и не больше одного на простой. Каждый такой прием оборачивается долгим тестированием, множественными багрепортами и выносом мозга пользователями у которых оно не работает (причину почему не работает не всегда удается установить). Если что-то можно сделать документированным или близким к документированному способом, пусть даже написав в 5 раз больше кода, то я так и делаю. А если делаю андок, то пихаю 100500 проверок всех мелочей (проверки часто занимают больше, чем сам код) из соображений что лучше пусть выдает внятную ошибку и не работает, чем непредсказуемо падает или тихо глючит.

-----
PGP key <0x1B6A24550F33E44A>




Ранг: -0.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 13 ноября 2011 14:36 · Поправил: lomeavae
· Личное сообщение · #17

ntldr

> Оно где-нибудь кроме как у вас работает?

Так попробуйте. То что вы считаете андоком и не стабильностью это глоссы. Проверьте сами приведённый выше код. Он в принципе не может быть не стабильным(тот юзермодный).

> Меняйте подход

Как его изменить то, как чекать память без копания в экспорте ?

Вы видимо всегда обёртывали в сех не безопасный код, но для этого нужно запилить свой менеджер сех, ибо бесполезен он если код не в модуле, а обычно это так(у меня). Скажу что документированными методами я вообще ничего не могу решить, так как эти задачи выходят за стандартные рамки. Документированно вообще нельзя лазить по коду и знать ассемблер. Я малварщик, у нас почти всё андок. Вините в этом мс, почему они не запилили апи типо InfectFile() или EscalateWin32k()



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

Создано: 13 ноября 2011 14:42
· Личное сообщение · #18

ntldr, ну не умеете — так не юзайте. что на других-то кричать.

lomeavae пишет:
Вините в этом мс, почему они не запилили апи типо InfectFile() или EscalateWin32k()

Да-да, категорически не хватает! Предлагаю предложить их мс-у для повышения стабильности: чтобы малварь реже систему роняла.



Ранг: 0.0 (гость)
Активность: 0.250
Статус: Участник

Создано: 13 ноября 2011 15:13
· Личное сообщение · #19

vptrlx
Дело в не умении,а втом что багрепорты жертвы не пришлет,а софта учень много и не всегда написаного прямыми руками,а крэш для малвари это писец.




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 13 ноября 2011 15:32
· Личное сообщение · #20

F_a_u_s_t пишет:
а крэш для малвари это писец

Блин, как дитя малое. Креш для малвари - это (-1) в ботнете, не больше.

-----
Yann Tiersen best and do not fuck




Ранг: 0.0 (гость)
Активность: 0.250
Статус: Участник

Создано: 13 ноября 2011 15:37
· Личное сообщение · #21

PE_Kill
Ок,пример.
Ты хватаешь или кто то из родни и идет постоянный крэш ты разве не посмотришь что за нах?
Профессия программист очень популярная и пользователи не все чайники,кто то да отошлет сэмпл и ботнет начнет резко сокращаться.



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

Создано: 13 ноября 2011 15:47
· Личное сообщение · #22

lomeavae пишет:
Проверьте сами приведённый выше код. Он в принципе не может быть не стабильным(тот юзермодный).

Сначала проверим ваш кернелмодный код, вот этот:

Code:
  1. CHK_4R_KM macro p4R
  2. Local Load
  3.          push ebx
  4.          pushfd  ; IF
  5.          cli
  6.          mov ebx,p4R
  7.          sub esp,2*4
  8.          sidt [esp]
  9.          Call Load
  10.          add esp,4*4      ; !CF
  11.          jmp @f
  12. Load:
  13.          mov edx,[esp + 2]         ; IDT base
  14.          mov cx,[edx + 14*8 + 6]   ; hi ptr
  15.          mov ax,[edx + 14*8]       ; lo ptr
  16.          pop word ptr [edx + 14*8]
  17.          pop word ptr [edx + 14*8 + 6]
  18.          mov ebx,[ebx]    ; test R
  19.          stc     ; CF
  20. @@:
  21.          lea esp,[esp + 2*4]
  22.          mov [edx + 14*8],ax
  23.          mov [edx + 14*8 + 6],cx
  24.          popfd   ; IF
  25.          pop ebx
  26. endm

Начнем с того что он просто не работает. Нигде. Ошибка в mov edx,[esp + 2] ; IDT base, надо mov edx,[esp + 6]. Исправляем, теперь вроде-бы работает. Итого: в простейшем коде аналоге MmIsAddressValid нам удалось наступить на грабли и получить проблемы с портабельностью на x64, и всё из-за применения асма не по делу.

Теперь проверим ваш юзермодный код:

Code:
  1. CHK_4R_UM macro p4R
  2. Local Exit
  3.          push p4R
  4.          xor ebx,ebx
  5.  @@:
  6.          mov edx,MM_SHARED_USER_DATA_VA + X86_PAGE_SIZE - sizeof(HANDLE)        ; 0x7FFE0FFC
  7.          mov eax,ebx
  8.          Int 2eh
  9.          cmp al,8
  10.          je @f
  11.          inc ebx
  12.          bt ebx,10
  13.          jnc @b
  14.          jmp Exit         ; !ZF
  15.  @@:
  16.          pop edx
  17.          mov eax,ebx
  18.          Int 2eh
  19.          cmp al,5
  20. ; ZF
  21. Exit:
  22. endm

На x64 не работает сходу. И не заработает, потому что системные вызовы из Wow64 идут не через int 0x2E. На 32х битах можно получить бсод если какая-нибудь кривая шняга криво похукала инты (а на 32х битах такой шняги хватает, слава Microsoft что хоть на x64 отучили криворуких лезть в такие места). Вот такая вот

-----
PGP key <0x1B6A24550F33E44A>




Ранг: -0.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 13 ноября 2011 19:52 · Поправил: lomeavae
· Личное сообщение · #23

ntldr

Это x86 код. Что вы его тестите на другой архитектуре. Вы на ракету загрузите и потом обвените меня что она не летает

> Ошибка в mov edx,[esp + 2]

А ну точна, адрес возврата же в стеке. Но я его на коленке собрал и торчал тогда, так что не нужно меня обвинять. И что вы всё про MmIsAddressValid, это кривая апишка. Но идея полностью годная. Какбы вы не выпендривались с вашим скриптом будет #PF.

> На 32х битах можно получить бсод

Не возможно. Этот код, в отличие от ядерного многократно откатан и проверен. А бсод можно на любой инструкции получить. Так что вы товарищ идёте лесом, ибо нихуя не шарите.

И вообще товарищ, я например пэхопэ не знаю и не лезу туда, так же и вы должны - раз нихера не понимаете, то и суваться не стоит. Свинья в апельсинах не шарит. Я заметил что вы вроде как(это есчо не факт) разбираетесь в криптографии, вам был задан вопрос http://exelab.ru/f/action=vthread&forum=1&topic=19161&page=0#23



Ранг: 0.0 (гость)
Активность: 0.250
Статус: Участник

Создано: 13 ноября 2011 20:04
· Личное сообщение · #24

lomeavae
>То что вы считаете андоком и не стабильностью это глоссы.
ntldr
> получить проблемы с портабельностью на x64, и всё из-за применения асма не по делу.
:
Инде вы противоречете себеs1:



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

Создано: 13 ноября 2011 20:24
· Личное сообщение · #25

F_a_u_s_t
Ты совсем придурок чтоле, раз не понимаешь разницы между архитектурами.




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

Создано: 13 ноября 2011 20:37
· Личное сообщение · #26

Просто интересно, как решат проблему с Инде, если понадобится забанить его нахрен? Т.е. чтоб он не заходил сюда под другими никами? Инде, пока вы ещё тут, скажите, а какие-либо ваши поделки попадали когда-нибудь на анализ аверам? Если да, то можно увидеть их имена, результаты анализа и т.д. Если сильно палевно (стыдно, не хочется показывать массам), то можно в личку.

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




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

Создано: 13 ноября 2011 20:46 · Поправил: nepwk
· Личное сообщение · #27

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

> как решат проблему с Инде, если понадобится забанить его нахрен?

Никак, закрыть регистрацию, либо не тролить или обсудить. Выбор не большой.




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

Создано: 13 ноября 2011 20:51
· Личное сообщение · #28

nepwk
Вы говорите очевидные факты. Я же имею ввиду конкретные примеры - названия, образцы, описания, техники. Т.е. сугубо практические вещи. Такое есть? Т.е. когда-то была эпидемия некоего вируса Sector.16 (Dr.WEB) ака Sality (Касперчег), он был не идеален, но про него есть хоть какая-то инфа. Так же и про Зевса, TDL3 и многих других. У вас есть что-то известное?

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




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

Создано: 13 ноября 2011 20:56
· Личное сообщение · #29

ARCHANGEL
Вы слишком много хотите. Дать вам скопиленный семпл это дать вам всё. Если вам нужны сигнатуры - возьмите любую базу, их там миллионы.




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

Создано: 13 ноября 2011 21:01
· Личное сообщение · #30

nepwk
Не пойму, что скрывать. Я ж не говорю про свежие сэмплы, которые приватны. Я говорю про уже сдетекченые образцы, известные аверам. Чего их жалеть?

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




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

Создано: 13 ноября 2011 21:02
· Личное сообщение · #31

ARCHANGEL
У аверов есть сигнатуры. Зачем мне вам давать свои поделки ?


<< . 1 . 2 . 3 . >>
 eXeL@B —› Вопросы новичков —› SEH etc.
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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