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

Возвращение

KraZz

(L3) cache
Пользователь
Регистрация
18.06.2009
Сообщения
196
Реакции
7
Решил немного стиль поменять - теперь буду свои обзоры(мини) каждый раз новой темой обозначать, ибо все в одной теме складывать хорошо, но не юзабельно..(не прижилась эта фича здесь) так что, если кому интересны мои записки сумасшедшего %)) придецца юзать поиск или хз. как-то еще просвещацца и искать истЕну %)))

Сразу оговорюсь!: - то, что вы сейчас будите читать, писалось еще в феврале, а сталобыть инфа стара как библия, но никто еще не отменял ее актуальности для начинающих или даже для тех, кто имеет уже давно вопросы и возможно здесь найдет на них ответы :)
Короче, я эти февральские темные мысли привел в божеский вид и решил запостить их здесь :)

Теория:
При написании первого своего криптора, новички сразу же нарушают первую заповедь, которая гласит:
«Не уподобься ближнему своему»
Что это означает?, да все очень просто!
Если послать стандартную прожку(ну скажем написанную на Delphi) на virustotal.com(здесь именно этот сервис будет выступать в качестве жертвы для обхода(остальным я лично не доверяю!)), то с большой долей вероятности, некоторое количество аверов укажут на присутствие засранчика в этом сэмпле
Это и есмь великий соблазн, который заставляет слишком быстро соблазницца и стать невинным грешником :)
Вот тема(для примера), которая показывает на практике выше описанное:
http://wasm.ru/forum/viewtopic.php?id=34258 - Heuristic.BehavesLike.Win32.xxx
Раз аверы на стандартные проги орут, сталобыть они неудачнеки и их детект гуано
К чему это ведет?
1. Гораздо проще не разобравшись в сути проблемы(детекта), перейти на сервисы более низкого уровня и обманывать себя и окружающих мнимостью их результатов – ИМХО
2. Забить на вполне возможное создание грамотной техники обхода аверов(чич-то из-за лени, неуверенности в себе, из-за быстрых денег итд.)
3. И так как на рынке есть потребительский спрос и криптор покупают таким вот дерьмом, то нах напрягаццо
В результате мы имеем еще один гуано криптор и ежедневный "онанизм" с чистками %)))

Практика:
Там в архиве все нужные файлы, рисунки, исходники и прочая х#й[пии..]ня
Сразу скажу часть файлов сделана еще в феврале так что.. Короче кому надо разберецца че к чему.

Warning: Сэмпл естественно при осуществлении проверки/отсылки обязательно должен быть не рабочим, иначе рискуете шансом попадания его в сигнатурные базы или даже(если немного серьезный пишите криптор), то может быть создана "мини-подпрограмма" для его детекта

Шлём наш условный сэмпл на virustotal.com (мы знаем, что там ничего нет в сэмпле) и видим результат, он на рисунке 1 из архива
Код:
AVG  9.0.0.730  2010.02.20  Injector.EZ
BitDefender  7.2  2010.02.20  Gen:Trojan.Heur.Hype.aq0@aSK7ePf
F-Secure  9.0.15370.0  2010.02.19  Gen:Trojan.Heur.Hype.aq0@aSK7ePf
GData  19  2010.02.20  Gen:Trojan.Heur.Hype.aq0@aSK7ePf
Symantec  20091.2.0.41  2010.02.20  Suspicious.Insight
Хе-хе нас спалили аж нах 5 антивирусов
Наша задача сделать выдачу этого семпла по нулям
Для начала попробуем из результатов убрать святую троицу с сигной Gen:trojan.Heur.Hype
Здесь я покажу причину появления такой сигны в результатах, ну а тот, кто знает хорошо ПЕ формат, естественно без проблем сможет пофиксить такую траблу в своем крипторе :)
Весь корень зла здесь кроется в импорте %))) если в массиве строк импорта имена библиотек идут первыми, то мы и будем наблюдать в результатах именно эту сигнатуру
На рисунке PE1 из архива красным выделены имена библ, а синим имена API-функий
А на рисунке PE2 из архива показано как должно быть правильно
Для не особо видящих разницу поясню, что все дело в положении имен - вначале должны идти имена API-функий, а вслед за ними уже имя библы из которой эти API импортируются
Вот так просто эту убогую троицу мы удалим из списка %)))

AVG 9.0.0.730 2010.02.20 Injector.EZ
Тоже удаляется из списка очень просто, путем добавления в сэмпл Rich сигнатуры(тут речь идет именно о СТАНДАРТЕ, исключительные ситуации естественно НЕ учитываются, так как инфа предназначена в основном для начинающих)
Линк уже не помню, короче исходный код RichFuke.asm в архиве найдете(я сам из него ChangeRICH юзаю)
Советую изучить этот сорс, грамотно сделан – ИМХО
Еще Rich формат хорошо описан:
http://www.ntcore.com/Files/richsign.htm - Microsoft's Rich Signature (undocumented)
Еще я в архив немного обновленную версию оффлайн чекера положил, может кому и понадобится, там детек Rich сигны добавлен, MD5, чекер на упакованность, короче энтропия и все такое что облегчает предварительный анализ, чтобы постоянно не отсылать на проверку..

Теперь атака на клоунов
Разбираемся с оставшейся сигной
Symantec 20091.2.0.41 2010.02.24 Suspicious.Insight
Есть аверы которые играют на рынке "не честно", ну или вернее тех кого "на выдаче глючит"
Вот этот Symantec и есть то самое гуано-чудо, но каг говорицца на хитрую жопу всегда найдецца ху[пии..] с винтом
Что мы делаем:
Берем стандартный файлег(системный) ну к примеру write.exe(это обертка над wordpad.exe, который вызываецца при помощи ShellExecute)
И шлем на проверку, нам могут показать надпись типа такой: «Файл уже проанализирован:»
Заставляем его еще раз проверить: «Повторить анализ сейчас»
И видим что этот ахтунг(Symantec) МОЛЧИТ
Теперь берем этот write.exe и меняем в нем дату компиляции при помощи того же PE Tools
File Header->Time/Date Stamp(кнопка ...) и в поле Decoded меняем год, день итд..
Смысл здесь в том, что это поле аверами не проверяется, потому как там может стоять любая дата компиляции, а вот MD5 тем самым мы изменяем!
И отправляем опять на проверку и видим что этот ахтунг(Symantec) светит нам туже сигну Suspicious.Insight
Теперь мы знаем то уЁбище, которое нам портит стату своим детектом по MD5(у них там походу большая база MD5 разных файлов(и системных в том числе) от разных windows(ну вернее было раньше так, может сейчас что-то и изменилось) и вот, если нет такой MD5, то ставит на "подозрение")
В "аське" заказчику/клиенту предоставляем эти данные о ахтунге – такая инфа любого убедит что криптор гуд
Ну, вот как оказалось ничего страшного в этом virustotal.com нет, главное знать, как обойти их "примитивные" детекты. %)))
 
хорошая информация , особенно про GDATA и F-Secure полезно было узнать, я даже представить не мог что такой бред может быть

и вот, если нет такой MD5, то ставит на "подозрение")
В "аське" заказчику/клиенту предоставляем эти данные о ахтунге – такая инфа любого убедит что криптор гуд
легко отделались от клиента :)
 
+1
Хорошие статьи пишешь, продолжай!

В стабе криптора главное разобраться с сигнатурами - это откинет почти треть беспонтовых ав из списка(на фаил-детекты можно не смотреть - всё равно народ эти антивирусы не юзает).
Далее идут уже подозрения на энтропию файла(почти треть ав, включая параноика авиру), импорт(ав смотрят на порядок вызовов: нод32, авира, кас), ну и конечно эмуляция файла(здесь на помощь приходят морф и всякие антиэмуль трюки). Это всё моё личное имхо.
 
Вот тема в тему по святой троице %)))
http://wasm.ru/forum/viewtopic.php?id=38584 - Вопрос по gData/bitDefender

karabas-barabas пишет:
легко отделались от клиента
не-не-не, я как раз из-за этого и писал эту приблуду, чтобы эти ахтунги не барзели ((пришел на рынок - будь добр играй честно! иначе иди на х#й, и тут без вариантов..) пусть народ знает каг просто их ипать в такой ситуации, ну а если заказчик/клиент тупо не понимает, что ему объясняют - так нах он нужен еще с ним после этого апщацца, если он не адекват; в игнор его и пусть отдыхает, ему же дороже потом выйдет.. ИМХО)
я вообще про этот Symantec даже и не догадывался о его существовании(он никогда у меня не писчал), а вот тогда он стучал лбом ап колокол достаточно долго(целую неделю, эт точно)
а остальное варианты обходов описал так чич-то за компанию, вообще их там больше 200 таких обходов, при этом, чтобы обойти некоторые сигны, нужно их юзать в комплексе
Бывает, доходит аж до 6-7, чтобы обойти только одну сигну...
 
семантикоподобные аверы занимают очень большую нишу на US рынке 1/4 это точно и заказчику обидно когда Sonar лопает файлик - обходил через добавление цифровой подписи к файлу

да вот Nod32 уже изрядно достал в последнее время, прям наваждениее - не могу отклеить его сигнатуру
 
да вот Nod32 уже изрядно достал в последнее время, прям наваждениее - не могу отклеить его сигнатуру
Скорее всего эмулятор раскручивает код. Т.к в своё время тоже мучался с ним - проходит по коду как нож в масло, решил проблему самодельными наработками(на тот момент времени знаний было не так много, поэтому шло простое запутывание кода). Вообщем не буду гадать на кофейной гуще - попробуй выложи более детальные результаты по скану, что и как делал - мб проблема решится.
 
Не-не, тут даже "речи не было" о качках, засранчиках и даже о клеях не упоминалось, только крипторы и ппц.
Там ведь "технологии детекта" разные, и в базах у них сигны по разным файликам раскиданы не просто такж..

Вот для примера: DarckSol выложил Nemesis Protector – смешно же его протектором или криптором называть
Я вообще не понимаю смысла юзанья .NET в нашем зоопарке, если б у всех стаяла хотя бы vista, то тогда да
А так тупо процент "пробива" уменьшать на 50% из-за одного присутствия .NET, тогда уже писали бы сразу на JAVA - его процент юзающих гораздо больше(ИМХО) %)))

Короче я все это к тому, что BitDefender, AntiVir("и их вечные друзья клоны") – это крипторы
DrWeb, Kaspersky итд. если детектят, то это..

Здесь важен принцип "выбора" на начальном этапе, куда плыть и какие техники юзать
Большинство юзают "клеи"(про что я чуть выше писал - Nemesis Protector) и называют их крипторами, другие(к примеру) примитивный полиморфный движок клонируют из паблик исходников итд.
Я же юзаю технологии, про которые обычно говорят: «они тяжелы в реализации и не оправдывают себя по времени и затраченных на них ресурсов»
ЗЫ: ИМХО

P. S.
Там кстати, частенько глючит подобным образом не только Symantec, если может кто замечал, их там бывает по количеству и 39, и 41, и 43(когда как)
они их там - то удаляют, то добавляют %)))
 
Вообщем сделал сегодня тест :)
В архиве сэмпл(и в сэмпле естественно ничего нет), который отсылался на проверку
Warning: Эта игрушка для просмотра.. и только для тех, кто так жаждет великого "о чуда" %))
Каждый бит этого сэмпла создан криптором :)
Результат(каг мы видим) выдачи нулевой, но если посмотреть внизу(нажав «Show all»), то увидим
Symantec reputation:Suspicious.Insight (http://www.symantec.com/security_response/writeup.jsp?docid=2010-021223-0550-99)
Suspicious.Insight is a detection for files that have not yet developed a strong reputation among Symantec’s community of users. Detections of this type are based on Symantec’s reputation-based security technology.

The reputation-based system uses “the wisdom of crowds” (Symantec’s tens of millions of end users) connected to cloud-based intelligence to compute a reputation score for an application, and in the process identify malicious software in an entirely new way beyond traditional signatures and behavior-based detection techniques.

When detections of this type are triggered in Norton products the user may be warned that the application is unproven, thus allowing the user to make the final decision. Future versions of Symantec's Endpoint Protection products will include this functionality. When used in these products, administrators will be able to configure blocking policies based on their specific tolerance for risk.

Today, the vast majority of malware is generated in real-time on a per-victim basis, which means that each such malicious program will be rated as being entirely new and low-prevalence by a reputation-based system. In contrast, most legitimate software has vastly different characteristics – it often comes from known publishers, has high adoption rates, shares much in common with earlier versions of the software, and so on. The Suspicious.Insight detection, therefore, is meant to inform the user that a given application is unproven and not yet well known to Symantec’s tens of millions of users.
Из написанного видно что сигна Suspicious.Insight никуда не исчезла, более того они пытаюцца создать целую доверительную сеть для зомбиков %))
ЗЫ: Каждый раз убеждаюсь, что за каждой сигнатурой, стоит лольная история %)))
 
accelerator пишет:
сделайте плз хайды поменьше
Нет. Хайды могут быть только выше!

P. S.
Уже который раз пишу/прошу - создавайте свои темы, ДЕЛИТЕСЬ СВОИМИ ЗНАНИЯМИ с мемберами DL и все у вас будет хорошо(не сразу конечно, через некоторое время(месяц-два))
DL – это полуприватный форум. ИНОГДА в личке мессаг бывает больше чем постов на форуме!!! + можете попасть в приватные разделы..
Просто иногда раздражать начинает "6000-12000 читателей"(активно юзающих ПМ) и 60 активных мемберов в день :)
ЗЫ: естественно не ради холивара написал, короче с просьбами и спасибами(спасибы шлите в личку!) в теме не флудим!
 
ну вот хотел поделиться инфой. не знаю может бред конечно
фишка вот в чем раньше активно юзал такой обход эмулятора антивиря
Код:
00438217    89C0            MOV     EAX, EAX
00438219    6A 70           PUSH    70
0043821B    EB 08           JMP     SHORT pinch.00438225
0043821D    60              PUSHAD
0043821E    31D2            XOR     EDX, EDX
00438220    83C2 C0         ADD     EDX, -40
00438223  ^ EB F2           JMP     SHORT pinch.00438217
00438225    011424          ADD     DWORD PTR SS:[ESP], EDX
00438228    89E0            MOV     EAX, ESP
0043822A    5A              POP     EDX
0043822B    64:8B02         MOV     EAX, DWORD PTR FS:[EDX]
0043822E    89C2            MOV     EDX, EAX
00438230    31C0            XOR     EAX, EAX
00438232    C642 02 02      MOV     BYTE PTR DS:[EDX+2], 2
00438236    8A42 02         MOV     AL, BYTE PTR DS:[EDX+2]
00438239    89D2            MOV     EDX, EDX
0043823B    8D80 43824300   LEA     EAX, DWORD PTR DS:[EAX+438243]
00438241    FFE0            JMP     EAX
00438243    FFE4            JMP     ESP
принцип. когда мы кладем в кучу байт 02 и след инструкцией забираем его от туда то должны забрать 02 т.е то что положили однако спустя квант времени значение будет сброшено на00
аналогично работает регистр GS
принцип основан на том что когда программа работает без отладчика то мы успеваем положить и забрать от туда 02 байта и использовать это для выхода из цикла к примеру, а когда программа работает под отладчиком(эмулятором) то значение 02 (в моем случаи) будет сброшено на 00 и мы идем по ложному следу.
так вот последнее время я обнаружил что в куче не идет сбрасывания с 02 на 00 (с чем связано не пойму может обновления винды или я гоню)юзал на xp сп3
сорь за корявый почерк.
 
интересно конечно, но если бы у эмуляторов были бы такие фичи как бы они распаковывали простенькие упаковщики, не вижу объяснения , ладно там эмулятор, но почему при отладчике такое возникало (при условии что другой поток не юзал это место), но и тут можно придумать ход с доп потоком
 
Народ делайте хайды повыше - недавно столкнулся с флудом, когда чел в онлайне пытался нафлудить кол-во постов, которые я поставил в хайде(пусть отрабатывают свой хлеб в другом месте!).

На счёт эмуляторов - кроме нода, каса, веба и нормана(ессентиалс я сюда не включаю, т.к само собой вещь норм) больше никаких не видел, и из них более-менее раскручивает код это ессентиался, дальше по убыванию веб, нод и т.д.
 
проверить как это работает теперь можно только на gs регистре
к примеру мы берем значение 05
и кладем туда инструкцией
Код:
xor eax,eax
mov eax,11b
xor edx,edx
mov gs,ax
mov dx,gs

тем самым при трассировке в олге в edx мы получим 00 однако когда программа
работает в нормальном режиме не в отладчике эмуляторе, то в edx мы получим 05
 
11b - в десятичном виде 3 :)

Код:
mov eax,11b
xor edx,edx
mov gs,ax
mov dx, gs
cmp dx, 3
jnz exit

continue:
...

exit:
push 0
call ExitProcess

Works fine :)

Вот ещё один кодес - эмуляторы по нему не проходят.
Давно валялся в закромах, решил поделиться. Взял кажется с васма.

Код:
    mov eax,11b
    xor edx,edx
    mov gs,ax
@@:
    mov dx,gs
    shr edx,1
    jc @b
    
    mov gs,ax
    mov ax,gs
    
    lea eax,[eax + edx + (offset DecryptEntry - 11b)]
    jmp eax
  ;...

    jmp short detect_
    nop
DecryptEntry:
;...

Также ещё полезный кодес, попробуйте поставить бряк на xor eax, eax
Код:
mov cx, ss
push 0
push something
push 0
push 0
call MessageBoxA

mov ss, cx
xor eax, eax

push 0
call ExitProcess

Факт планирования и измерение числа прерываний является хорошим способом обнаружения трассировки и антиэмуляции.
 
Помнится в мои былые времена с отладчиками боролись путем проверки идет ли конвейерная обработка - пишем инструкцию в память IP+4 a потом провераем что исполнилось. Но сийе пофиксали ужо давно. С таймером пока трюки прокатывают (кому интересно детали - в приват)
 
vomzh
http://xss.pro/index.php?topic=20402
http://xss.pro/index.php?topic=20460
Тут приват, там приват - форум для обсуждения создан, существует хайд для скрытия инфы, а иначе считается флудом.
 


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