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

Обзор или реверс? :)

KraZz

(L3) cache
Пользователь
Регистрация
18.06.2009
Сообщения
196
Реакции
7
Хех, не умею я темы называть правильно, ну да ладно..
Вообщем читаю данный форум, но я не из тех, кто просто читает, нужно немного пусть даже статус: бита %)), написать своего
ЗЫ: "Новостная лента" – нравится :)
Жертва анализа:
http://demonteam.narod.ru/download/calc_crypted.rar (65KB)
Не знаю чье это творчество, но посчитал, что именно на этом сэмпле лучше всего сделать "обзор", имеет место быть профессионализм у чела кто делал этот "криптор".. (на правах нуба, если что пишу – все ниже написанное: ИМХО)
Суть обзора заключается в том, чтобы указать те аспекты, на которые надо обращать при покупке/тесте криптора
Тут описаны будут вещи, ну скажем чич-то "технические", обычному юзеру тяжко будет понять – ИМХО

Всегда просите тест-крипт калькулятора(реверс/анализ такого сэмпла сделать всегда проще(реверс делайте всегда на VM!)), если файл палится(не содержащий в себе засранчика), значит это проблемы чич-то криптора
Это уже может на многое указывать, что криптует ламерок какой-то, не шарит даже в PE-формате и 99% делал с помощью чьих-то паблик, полу-приват(но, уже паленый) исходников итд..
Также смотрите на возможность изменить иконку, версию, image base(для dll) в файле и на возможность криптовать *.sys файлы
Если все это криптор умеет и после крипта траблов нет, значит, пишет его профессионал, знающий отлично PE-формат и оптимизацию
Ну и самое главное обращайте внимание на сам саппорт - криптор без поддержки это уже не криптор - ИМХО

И так посмотрим на сэмпл и сделаем первые выводы
Я здесь немного опишу софт который "юзаю", но че там в конце получиццо, хз. пишу чич-то сходу
PEview(31KB) - http://www.magma.ca/~wjr/PEview.zip
Показывает структуру PE-формата, очень удобная навигация по смещениям итд.
image base на стандартный не изменил(у калькулятора image base естественно "другой"), ставим минус
посмотрим на импорт, хм.. не изменен, но судя по структуре стаба.., сделать фейковый импорт запросто может – поставим минус
но с идеей, сразу стучимся в саппорт %))(ламерскими вопросами есссстено не тревожим)
шучу конечно-же, криптор импорт меняет, но стремно – не хватает библ типа GDI итд., разнообразия скажем так..
так теперь обратим внимание на Entry Point, кажет в первую секцию кода.. но "атрибуты" секции кода не радуют, должно быть 0x60000020, а имеем всего лишь банально 0xC0000000 – поставим минус
к ресурсам ламерское отношение – лижбы было да и хс.. - минус
на сим ламерский обзор заканчиваю, каждый более подробно может обратить внимание на все аспекты через утиль PEview или другую однотипную %)))

и так проанализируем следующее
вопрос, какие техники криптор юзает – ответ очевиден, достаточно посмотреть на код
инструмент юзаю стандартный, как и все Shadow(мод. ollydbg) более подробно читаем цикл статей на васме для нубов
для профи, посещаем - http://www.openrce.org/
из техник юзается обфускация и пермутиция
ЗЫ: вот есть пишут криптую в ручную – обычно это просто генерик рандомный(обфускация) для ламеров, чтобы повысить продажи и сделать вид, что трудиццо каг негр, но это просто сопли и не более %)))
декриптор скорее всего мутирует при каждом крипте – здесь плюс (даже с одно сэмпла, можно сделать такие выводы!)
Код:
[decrypt]
01013A63  E8 6D120000          	CALL 01014CD5                        
01014DBB  5E                    POP ESI                              
ESI=01013A68 
01014FD9  81EE CCF9FFFF        	SUB ESI,-634                        	
ESI=0101409C 
01014D65  56                    PUSH ESI                            	
01015413  81C6 CCF9FFFF        	ADD ESI,-634                        	
ESI=01013A68 
01015185  B8 81432F16          	MOV EAX,162F4381                    	
EAX=162F4381 
01015038  81F0 7B532F16        	XOR EAX,162F537B                    	
EAX=000010FA 
01014CA0  E9 99020000          	JMP 01014F3E                        	
01014F3E  F7DA                  NEG EDX                              
EDX=135E82FF 
01014F40  81EA 4C49725F        	SUB EDX,5F72494C                    	
EDX=B3EC39B3 
0101558A  8A1E                  MOV BL,BYTE PTR DS:[ESI]            	
EBX=010100F8 
0101513D  C0C3 04              	ROL BL,4                            	
EBX=0101008F 
01015503  C0CB 1B              	ROR BL,1B                            
EBX=010100F1 
01015566  80C3 C7              	ADD BL,0C7                          	
EBX=010100B8 
01015008  8AFB                  MOV BH,BL                            
EBX=0101B8B8 
010150C5  883E                  MOV BYTE PTR DS:[ESI],BH 
0101526F  46                    INC ESI                              
ESI=01013A69 
0101506E  48                    DEC EAX                              
EAX=000010F9 
01014B91  8BD0                  MOV EDX,EAX                          
EDX=000010F9 
010152BE  81EA 168358BD        	SUB EDX,BD588316                    	
EDX=42A78DE3 
01015306  81FA EA7CA742        	CMP EDX,42A77CEA                    	
0101530C  0F85 2EFCFFFF        	JNZ 01014F40   
01014F73  C3                    RETN                                	
0101409C  55                    PUSH EBP
но как я уже выше писал, атрибуты секции сведут на нет, эти "старания"
но его стаб позволяет внести небольшие изменения, чтобы убрать эти недостатки, скорее всего здесь просто еще не было траблов с аверами, поэтому все так просто..
морфа нет, сталобыть детект по "плавающим сигнатурам" возможен(ну вернее, при первом-же попадании к аверам его задетектят)
при этом, если обратить внимание на конструкции кода
Код:
01013587     81FA DB845519   CMP REG,IMM32
0101358D     87C9            XCHG ECX,ECX
0101358F     0F85 1FF9FFFF   JNZ 01012EB4

01012EB9     E8 8E0A0000     CALL 0101394C
0101394C     8D00            LEA EAX,DWORD PTR DS:[EAX]
0101394E     8F4424 FC       POP DWORD PTR SS:[ESP-4]
они по идее меняться долны при детекте, но.. на аналогичные, до следующего детекта
такие вот конструкции(ЛЯПЫ) оставляют, чтобы создать иллюзию поддержки, но суть здесь в том, что выигрывают "ВСЕ" и аверы и криптующий
авер через определенное время(от недели до месяца) "вносит сигнатуру в базу"(для тех кто реально платит), а криптующий сразу апгрэйдит и апает темы на всех форумах %)))
ЗЫ: проверяющий, вот так сразу врятли заметит такие ляпы – ИМХО
тут можно просто подумать, что это элемент пермутации и предназначен для прыжков на перестановленный код и доказать такой ляп никто не захочет!

Взглянем на конструкции которые юзаются для защиты от ав – назовем это все одним словом anti-av
Код:
[anti trace]
01012F43  B8 72C96241          	MOV EAX,4162C972                    	
0101377C  E9 A4020000          	JMP 01013A25                        	
01013A25  D2DF                  RCR BH,CL                            
01013A27  D2CD                  ROR CH,CL                            
01013556  81C0 AD326BB9        	ADD EAX,B96B32AD                    	
01013718  81F8 22AA668B        	CMP EAX,8B66AA22                    	
0101371E  0F85 03030000        	JNZ 01013A27                        	

[anti debug]
01012ECC  64:8B05 30000000      MOV EAX,DWORD PTR FS:[30]            
EAX=7FFDF000 
01013132  8B40 54              	MOV EAX,DWORD PTR DS:[EAX+54]        
EAX=7F6F0688 
01013187  8B40 04              	MOV EAX,DWORD PTR DS:[EAX+4]        	
EAX=7F6F06A0 
0101375C  8B40 04              	MOV EAX,DWORD PTR DS:[EAX+4]        	
EAX=7F6F2170 UNICODE "C:\WINDOWS" 
010131F2  8B40 04              	MOV EAX,DWORD PTR DS:[EAX+4]        	
EAX=0057005C 
010139DE  81E8 5D005700        	SUB EAX,57005D                      	
EAX=FFFFFFFF 
01013485  CD 2E                	INT 2E                              	
EAX=C000001C EDX=FFFFFFFF EDX=01013487 
01012DAF  2BD0                  SUB EDX,EAX                          
EDX=4101346B 
0101356E  81C2 1C0000C0        	ADD EDX,C000001C                    	
EDX=01013487 
01013A50  81EA 02000000        	SUB EDX,2                            
EDX=01013485 
01013081  8BC2                  MOV EAX,EDX                          
EAX=01013485 
01012F65  66:8138 CD2E          CMP WORD PTR DS:[EAX],2ECD          	DS:[01013485]=2ECD
01012F6A  E9 78040000          	JMP 010133E7                        	
010133E7  74 88                	JE SHORT 01013371                    
010138B7  C3                  RETN
01013371  E9 ED060000          	JMP 01013A63                        	

[anti emulator]
010140A3  B8 03000000          	MOV EAX,3                            
EAX=00000003 
010140A8  E9 77FEFFFF          	JMP 01013F24                        	
01013F24  33D2                  XOR EDX,EDX                          
EDX=00000000 
01013F26  66:8EE8              	MOV GS,AX                            
01013F29  E9 02FFFFFF          	JMP 01013E30                        	
01013E30  66:8CE8              	MOV AX,GS                            
EAX=00000000 
01013E33  D1C8                  ROR EAX,1                            
01013E35  72 F9                	JB SHORT 01013E30                    
01013E37  FC                    CLD
Я их разместил в порядке появления, по адресам.. думаю, понятно будет, где все находится
Не густо-о.., нового нет ничего и опять, можно сказать лижбы было – хех, минус

И еще не критично, но есть минус у него юзается конструкция для поиска загрузки адреса ntdll.dll(и не только)
Код:
[get ntdll.dll module handle]
01013A8C  68 F55ACF54          	PUSH 54CF5AF5  хеш                      
010146F7  E8 E3FEFFFF          	CALL 010145DF 
======                            
010145DF  55                    PUSH EBP                            	
010140B1  8BEC                  MOV EBP,ESP                          
EBP=0006FF58 
010140B3  53                    PUSH EBX                            	
010140B4  64:8B15 30000000      MOV EDX,DWORD PTR FS:[30]            
EDX=7FFD5000 
010140BB  8B52 0C              	MOV EDX,DWORD PTR DS:[EDX+C]        	
EDX=00191EA0 
01014922  8BDA                  MOV EBX,EDX                          
EBX=00191EA0 
01014924  83C3 0C              	ADD EBX,0C                          	
EBX=00191EAC 
010148DF  8B52 0C              	MOV EDX,DWORD PTR DS:[EDX+C]        	
EDX=00191EE0 
010148E2  8B12                  MOV EDX,DWORD PTR DS:[EDX]          	
EDX=00191F48 
010147CF  3BD3                  CMP EDX,EBX                          
010147D1  0F85 12010000        	JNZ 010148E9                        	
010148E9  8B4A 30              	MOV ECX,DWORD PTR DS:[EDX+30]        
ECX=7C9226A4 UNICODE "ntdll.dll" 
010148C2  33C0                  XOR EAX,EAX                          
EAX=00000000 
010148CE  66:8339 00            CMP WORD PTR DS:[ECX],0              DS:[7C9226A4]=006E
01014746  0F85 7A010000        	JNZ 010148C6                        	
010148C6  C1C0 07              	ROL EAX,7                            
010148C9  3201                  XOR AL,BYTE PTR DS:[ECX]            	
EAX=0000006E 
010148CB  83C1 02              	ADD ECX,2                            
ECX=7C9226A6 UNICODE "tdll.dll" 
010148CE  66:8339 00            CMP WORD PTR DS:[ECX],0              DS:[7C9226A8]=0064
01014746  0F85 7A010000        	JNZ 010148C6                        	
0101474C  F7D0                  NOT EAX                              
EAX=54CF5AF5 
0101474E  3B45 08              	CMP EAX,DWORD PTR SS:[EBP+8]        	
0101468F  0F85 36010000        	JNZ 010147CB                        	
01014695  8B42 18              	MOV EAX,DWORD PTR DS:[EDX+18]        
EAX=7C900000 IMAGEBASE "C:\WINDOWS\system32\ntdll.dll" 
01014698  E9 3A010000          	JMP 010147D7
	010147CB  8B12              MOV EDX,DWORD PTR DS:[EDX]
	010147CD  33C0              XOR EAX,EAX
	010147CF  3BD3              CMP EDX,EBX
	010147D1  0F85 12010000     JNZ 010148E9
010147D7  5B                    POP EBX                              
EBX=BEFE3F66 ESP=0006FF58 
01014334  C9                    LEAVE                                
ESP=0006FF5C EBP=0006FF84 
01014335  C2 0400              	RETN 4
Но тут трабла может выскочить, если имя ntdll.dll будет написано Ntdll.dll, файлег упадет, так как хеш уже будет другой
Но в паблике уже эту траблу обсосали, и даже готовое решение вложили - я про алго поиска, если что
Ну, далее это уже чич-то тех. аспекты и к теме отношения только косвенное имеют..(если честно надоело уже че-то писать) :)
Может кому пригодится :)
 
Мистер KraZz - тема данного обзора лично для меня очень интересна, однако прочитав пост у меня осталось впечатление того, что надо тупо выкачать тулзу для анализа и курить форумы/мануалы и пр. тоесть разбираться во всем самому. Большая просьба есть - препишите по человечьи обзор (желательно описать все по шагам как чего и зачем, побольше комментариев в коде). А так респект за тему поднятую.
 
Изменить стиль написания постов я не могу(есть ряд причин и свод правил), мне проще покинуть форум
Переписывать я ничего не буду, ликбезы я писать не умею, да и данный топ несет в себе совсем другие "нагрузкИ"
И вообще, я наоборот хотел сам услушать, более опытных мемберов по данной теме, просто выложил кое-какой "багаж" знаний

Раздел реверса я воспринимаю как свод правил, которые нарушать этика не позволяет
Здесь читать ничего не надо, надо брать сэмпл из первой ссылки и его дебажить! делать свои выводы и сравнить с моими, если есть что оспорить или добавить, милости просим!
Или реверсить сэмпл опираясь на то, что в первом посте написано, ЕСЛИ ЕСТЬ КОНКРЕТНЫЕ ВОПРОСЫ(непонятно что-то), СПРАШИВАЕМ(если знаю, постараюсь ответить)
И никто же не говорил что в реверсе все так легко, МОЗГ напрячь придется неслабо, короче.. как в кино(пришел, увидел, победил) НЕ получится!
ЗЫ: Просьба не писать больше посты типа: - Читал. Было интересно, но ничего не понял.. (ОК?)
ЗЫЫ: Со мной хотелось бы, чтобы общались на ТЫ (без Мистер), у меня большие сомнения что я "старше", мну всего лишь просто бит %))


Вот чтобы понятнее было о чем я, приведу ряд дополнений к коду
(прошу обратить на объем инфы!, тема обширна - желания нет на..)
ЗЫЫЫ: я не бравирую :), но меня тоже нужно понять, я сам тоже хочу новых знаний!!! ;)
Прошу обратить внимание на кодес(что это? копипаст?) с тегом [anti emulator], на авторство(?) и дату паблик релиза финчи, что тут еще можно подумать? (вопросы так чич-то условные(отвечать на них не надо), но ситуация интересная ;) )
Вот ссылка на почитать более подробно начиная с #27 поста (второй сверху)
http://wasm.ru/forum/viewtopic.php?id=32212&p=2

и вот, скорее всего по последнему коду с тегом [get ntdll.dll module handle] могут быть вопросы
вот ссылка на кодес(там полностью описывается для чего код, какие траблы могут быть и их фикс(ффсе на буржуйском в комментариях))
http://demonteam.narod.ru/download/GetKernel32Base.zip (32KB)
 
тема интересная правда многие анти-отладочные приемы уже не работают
а на счет анти трейса или можно воспользоваться старым способом
определить находиться ли программа под отладкой или нет
у многих антивирей это не работает
вот к примеру простой код


Код:
793A191E >  64:A1 18000000  MOV     EAX, DWORD PTR FS:[18]
793A1924    8B40 30         MOV     EAX, DWORD PTR DS:[EAX+30]
793A1927    0FB640 02       MOVZX   EAX, BYTE PTR DS:[EAX+2]// под отладкой будет1
---------------------------------------------------------------------
004011A9    0BC0            OR      EAX, EAX //если еах не равен 00 прыжок  JE  не активируеться
004011AB    74 05           JE      004011B2
думаю код понятен если программа находиться под отладкой в еах мы получим 1

а для анти эмуляции могу предложить такой способ мы берем
код выхода из эмулятора запихиваем его в стек
далее из стека помещаем код в SSe регистр он давольно большей по этому проблем быть не должно
после можно провести разные трюки с SSE регистром (мало кто это пройдет) например перемешивание хор ну и так далее
после выкладываем код в рабочею секцию и шагаем по нему для выхода.

вот вроде все по мне так это просто.
 
Более подробно про код с тегом [anti debug]
Вот здесь есть очень большой объем по паблик антиотладочным трюкам на русском
Не знаю, живы там ссылки(аттач) или нет, короче кому надо, найдет
http://cracklab.ru/f/index.php?action=vthr...m=1&topic=12273
Чел собрал все в кучу и описал(ну и скопипастил, он сам ап-ап этом писал)
Гы-гы, помню его учил как на асме цветные кнопки "рисовать"

Еще вот из этой темы (ликбезы на буржуском)
http://cracklab.ru/f/index.php?action=vthr...m=3&topic=11800
Они там их как сериалы выпускают, каждый "день" %))
Там в какой-то серии(в unpackers21 или unpackers22 не помню точно) из темы в каком-то pdf-файле
описывается и этот трюк с тегом [anti debug] "подробно"(скажем так)
Единственное здесь аффтор изобрел свой "велосипед" для получения в регистре EAX=FFFFFFFF (-1), хотя хз. может тоже скопипастил, за ним не заржавеет %)))
ЗЫ: все линки естесно на провах аццкого БАЯНА :P

Вообще все эти антидебаг трюки, изобретали пишущие протекторы, и уже умельцы, потом, оттуда рипали и юзали в своем кодесе
Скажем так [anti debug] процентов 80 из протов
Ну, вот теперь к САМОЙ СУТИ, если видите эти конструкции кода из "книжки", можете сразу сделать выводы о аффторе криптора
Такой, нового ничего не изобретет и смело ставьте такому 60% что он начинающий и потом может вас просто тупо иметь на "капусту"
Конечно многие копипастят кодес, но тут вот надо видеть разницу между тупым копипастом(то есть, если аффтора спросить что делает этот код(который он скопипастил), а он и не сможет ответить – это ламер 100%.. нах такого посылайте смело!) или вот как здесь из примера, чел "придумал"(изменил код получения в регистре EAX, -1)
Не скрою объем для начинающего антиотладочных трюков может быть очень огромен, но это поначалу, потом(через год %)) станет немного легче %)))
 
АП-АП-АП :)

RTFM – Metamorph
Metamorph - Это замена одной команды на несколько других "отличающихся", но выполняющих "теже" действия

Здесь я покажу пример морфа(метаморфа), чтобы было все понятно
Есть вот, советуют код типа такого
MOV reg32, imm32
и его "замену"(морф)
PUSH imm32
POP reg32
такие варианты были популярны у хекеров из журналов, давно и в прошлом
я вам советую НЕ выбирать такой криптор, если в нем ДОМИНИРУЕТ морф из 2-3 команд(хе-хе, но есть 90% крипторов, где его вообще нет!)

MOV reg32,23582398
NOT reg32
вот пример, какой должен быть морф одной команды
NOT reg32

Код:
MOV EAX,23582398
// NOT
MOV ECX,C7743393
XOR ECX,A15637BD
NEG ECX
AND ECX,BDFF3B61
OR ECX,6622C418
NEG ECX
ADD ECX,EAX
MOV EAX,0A7
SUB EAX,ECX
и при каждом "билдинге", он должен быть разный
Код:
MOV EAX,23582398
// NOT
MOV EDX,8D13
ADD EDX,EAX
MOV EAX,C2128FEA
XOR EAX,1AC29DE0
OR EAX,272F60E4
NEG EAX
SUB EAX,EDX

Если вы видите что написано, что криптор криптует Zeus, Рinch, Хinch итд.
Все это *.exe файлы и хорошему криптору должно быть пехернах на ИМЯ, все это для красивого словца написано и может показывать только одно - неуверенность автора
Должно быть написано, что криптор криптует *.exe *.dll *.sys - вот это и есть гуд 100%

Имена секций - эти загадочные слова
Если почитать что пишет автор зевса в readme, а там очень много всего, то можно заметить, что он пишет что бота делает максимально похожим на стандартный *.exe
Цитата:
[*] Написан новый PE-криптор, теперь PE-файл получается очень аккуратным и максимально имитирует результат работы MS Linker 9.0.

Вот немного СТАНДАРТНЫХ секций
Код:
.text
CODE
первая секция
-------------
DATA
вторая секция
-------------
BSS
.bss
-------------
.tls
-------------
.rsrc
-------------
.reloc
-------------
.rdata
.data
.idata
.edata
-------------

===========================================
Microsoft Visual C++ 5.0
.text
.rdata
.data
.idata
.rsrc
===========================================
Microsoft Visual C++ 4.x
8
.text
.bss
.rdata
.data
.idata
.edata
.rsrc
.reloc !?
===========================================
Microsoft Visual C++ 4.x
6
.text
.bss
.rdata
.data
.idata
.reloc !?
===========================================
Microsoft Visual Basic 5.0 / 6.0
3
.text
.data
.rsrc
===========================================
Dev-C++ v4
4
.text
.data
.bss
.idata
===========================================
Borland Delphi 6.0 - 7.0
8
CODE
DATA
BSS
.idata
.tls
.rdata
.reloc !?
.rsrc
===========================================
Borland Delphi
7
CODE
DATA
BSS
.idata
.edata
.reloc !?
.rsrc
===========================================
Microsoft Visual C++
5
.text
.rdata
.data
.rsrc
.reloc !?
===========================================
Borland C++ 1999
8
.text
.data
.tls
.rdata
.idata
.edata
.rsrc
.reloc !?
===========================================
Borland Delphi 4.0 - 5.0
CODE
DATA
BSS
.idata
.edata
.tls
.rdata
.reloc !?
.rsrc
===========================================

Код:
CODE
DATA
AUTO
BSS
TLS
.bss
.tls
.CRT
.INIT
.text
.data
.rsrc
.reloc
.idata
.rdata
.edata
.debug
DGROUP
 
Тут в начале уделить решил немного трабле, которая вгоняет большинство в тупик(судя по вопросам и пожеланиям)
Многие пишут, что почти все понятно, но в каком-то "месте" – хз что это вообще за такое
Здесь реверс это не просто прочитал и все понял, тут главное практика, то что я написал это просто направление для теста
Надо пробовать разные варианты и пытаться гуглить и делать по написанному, пытаться еще и еще..
Если видно что много вариантов было реализовано/опробовано, но все равно ничего не получается, здесь ничего страшного нет (тут просто еще не достаточно ОПЫТА)
Надо это просто отложить на потом, просто в процессе экспериментов мозг все запомнит(подсознательно)
Потом дальше, когда прейдет время, все само вспомницца и легко освоится – главное на начальном этапе не бросать
Здесь я приведу сравнение
К примеру в Москве ищем дом в районе где никогда раньше небыли, приходится спрашивать, искать.. еще раз спрашивать и так пока не найдешь, а что дальше.., после того как дом найден? Все, просто - съездив до этого дома раз пять, уже это все делается потом автоматом
ЗЫ: И еще совет – спрашивайте прямо здесь, если что-то не понятно, потому как я уже понял, что многие тут пытаются повторить написанное и сталобыть вместе вам обсудить будет проще, ну и здесь есть гуру, которые объяснить могут. Просто вопросы должны быть КОНКРЕТНЫЕ И ПОЛНЫЕ С ОПИСАНИЕМ ТОГО, ЧТО САМ ДЕЛАЛ

Хех, заканчиваю лирику сопли и слезы, переходим к практике %))
Вот ссылка на криптованого зевса
http://demonteam.narod.ru/download/NOvAfnm38H.rar
PASS: 666
Я решил поэтапно расписать что да как(но не вдаваясь полностью в подробности)
Пробуйте сами для начала снять дамп!, я лишь здесь(выложу куски кода, на которые стоит обратить внимание - ИМХО)
Криптор – здесь прост, обычный VB, но стаб реализован на "асме"(пока на этот каламбур слов, не обращайте внимание, потом все поймете;))
Экспериментируйте лучше на виртуалке(VMware)
Запускаем файл из архива в оле, и стоя на EP ставим бряк на API CallWindowProcA и жмем F9
После того как остановились, смотрим в окно стека и видим что-то подобное этому
Код:
0012F7EC   734DF7F5  CALL to CallWindowProcA from MSVBVM60.734DF7F3
0012F7F0   0015C370  PrevProc = 0015C370
0012F7F4   00000000  hWnd = NULL
0012F7F8   00000000  Message = WM_NULL
0012F7FC   00000000  wParam = 0
0012F800   00000000  lParam = 0
в окно стека жмем ЛКМ на адресе 0012F7F0 и сразу ПКМ и выбираем из контекстного меню пункт Follow in Dump
теперь переходим в окно дампа (что находится рядом с окном стека) и жмем ПКМ и выбираем из контекстного меню Disassemble
и видим такой код: (адреса могут отличацца)
Код:
0015C370    58              POP EAX
0015C371    59              POP ECX
0015C372    59              POP ECX
0015C373    59              POP ECX
0015C374    59              POP ECX
0015C375    50              PUSH EAX                                ; USER32.CallWindowProcA
0015C376    68 C8000000     PUSH 0C8
0015C37B    E8 C2606A7C     CALL kernel32.Sleep
0015C380    C3              RETN
Ставим железный бряк на адрес 0015C370 и жмем F9 и должны остановится на 0015C370(в целях экспериментов трассируем F7/F8)
Суть этого кода проста POP EAX забирает из стека адрес возврата, потом 4 POP ECX забирают из стека 4 параметра передаваемые функе CallWindowProcA и опять помещает в стек адрес возврата, который в регистре EAX снимали до этого
Потом выполняется API Sleep и возвращается обратно в VM VB
Далее при вызове других API мулька с POP аналогична, поэтому я поскипал POP и RETN из кода дабы сэкономить место в посте, чтобы он не выглядел огромным
Далее все повторяем и смотрим за последовательностью юзаемых API (Кстати, это один из детектов малвари, по последовательности вызовов API, аверами - ИМХО)
Код:
00155746    68 28144000     PUSH 401428
0015574B    68 64000000     PUSH 64
00155750    68 10030000     PUSH 310
00155755    68 00000000     PUSH 0
0015575A    E8 A734BE77     CALL USER32.SetTimer 
[…]
00401428     BA 7C224000        MOV EDX,0040227C
0040142D     B9 B0104000        MOV ECX,<JMP.&MSVBVM60.ProcCallEngine>
00401432   - FFE1               JMP ECX
Код:
0015C896    68 FA000000     PUSH 0FA
0015C89B    E8 A25B6A7C     CALL kernel32.Sleep
Код:
001558A6    68 00010000     PUSH 100
001558AB    68 28C91500     PUSH 15C928
001558B0    68 00000000     PUSH 0
001558B5    E8 9D5A6B7C     CALL kernel32.GetModuleFileNameA
Код:
001558A6    68 00010000     PUSH 100
001558AB    68 28C91500     PUSH 15C928
001558B0    68 00000000     PUSH 0
001558B5    E8 9D5A6B7C     CALL kernel32.GetModuleFileNameA
Код:
001558A6    68 40000000     PUSH 40
001558AB    68 38091D00     PUSH 1D0938; ASCII " MZ "
001558B0    68 B4EF1200     PUSH 12EFB4
001558B5    E8 97D87A7C     CALL ntdll.RtlMoveMemory  
[…] 
001D0938  4D 5A 90 00 03 00 00 00 04 00 00 00 FF FF 00 00  MZ
001D0948  B8 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00  
001D0958  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  
001D0968  00 00 00 00 00 00 00 00 00 00 00 00 08 01 00 00
Знакомая сигнатурка MZ %)) и ниже PE
Код:
001558A6    68 F8000000     PUSH 0F8
001558AB    68 400A1D00     PUSH 1D0A40; ASCII "PE"
001558B0    68 88F01200     PUSH 12F088
001558B5    E8 97D87A7C     CALL ntdll.RtlMoveMemory
Код:
0015B726    68 F4EF1200     PUSH 12EFF4
0015B72B    68 04F01200     PUSH 12F004
0015B730    68 00000000     PUSH 0
0015B735    68 00000000     PUSH 0
0015B73A    68 04000000     PUSH 4
0015B73F    68 00000000     PUSH 0
0015B744    68 00000000     PUSH 0
0015B749    68 00000000     PUSH 0
0015B74E    68 3C571500     PUSH 15573C                             ; UNICODE "X:\ g6sZf1j5wh\NOvAfnm38H.exe"
0015B753    68 00000000     PUSH 0
0015B758    E8 D56B6A7C     CALL kernel32.CreateProcessW
  
0012EFF4  00000000  ....
0012EFF8  00000000  ....
0012EFFC  00000000  ....
0012F000  00000000  ....
0012F004  00000044  ....
0012F008  00000000  ....
0012F00C  00000000  ....
0012F010  00000000  ....
0012F014  00000000  ....
0012F018  00000000  ....
0012F01C  00000000  ....
0012F020  00000000  ....
0012F024  00000000  ....
0012F028  00000000  ....
0012F02C  00000000  ....
0012F030  00000000  ....
0012F034  00000000  ....
0012F038  00000000  ....
0012F03C  00000000  ....
0012F040  00000000  ....
0012F044  00000000  ....
0012F048  00000000  ....
0012F04C  00000000  ....
0012F050  00000000  ....
0012F054  00000000  ....
0012F058  00000000  ....
0012F05C  00000000  ....
0012F060  00000000  ....
0012F064  00000000  ....
0012F068  00000000  ....
0012F06C  00000000  ....
0012F070  00000000  ....
0012F074  00000000  ....
0012F078  00000000  ....
0012F07C  00000000  ....
0012F080  00000000  ....
0012F084  00000000  ....

0012EFF4  0000007C  
0012EFF8  00000080  
0012EFFC  000007E4  
0012F000  00000458
Просьба обратить внимание на возвращаемые значения по адресу 0012EFF4 (эти адреса могут отличатся)
Код:
0015C376    68 00004000     PUSH 400000
0015C37B    68 7C000000     PUSH 7C
0015C380    E8 DB257B7C     CALL ntdll.ZwUnmapViewOfSection
API ZwUnmapViewOfSection можно сказать главное лицо - создающая проблемы для дампа и в тоже время освобождает занятую память
Здесь если не сказать что почти все дамперы(паблик) обламаются, но процесс жив и запустицца потом..
Код:
00196316    68 40000000     PUSH 40
0019631B    68 00300000     PUSH 3000
00196320    68 00700100     PUSH 17000
00196325    68 00004000     PUSH 400000
0019632A    68 7C000000     PUSH 7C
0019632F    E8 6E37677C     CALL kernel32.VirtualAllocEx
Код:
00196316    68 00000000     PUSH 0
0019631B    68 00040000     PUSH 400
00196320    68 38091D00     PUSH 1D0938
00196325    68 00004000     PUSH 400000
0019632A    68 7C000000     PUSH 7C
0019632F    E8 DBBE667C     CALL kernel32.WriteProcessMemory
По адресу 1D0938 находится код зевса, который и есть истинный (вернее его часть, а именно заголовок(header) файла) размером 400
400000 - Адрес, куда скопируется код
Код:
00196316    68 00000000     PUSH 0
0019631B    68 00020100     PUSH 10200                               
00196320    68 380D1D00     PUSH 1D0D38                              
00196325    68 00104000     PUSH 401000
0019632A    68 7C000000     PUSH 7C
0019632F    E8 DBBE667C     CALL kernel32.WriteProcessMemory
1D0D38 – секция кода и ее размер 10200
401000 - Адрес, куда скопируется код
Код:
00196316    68 00000000     PUSH 0
0019631B    68 002C0000     PUSH 2C00
00196320    68 380F1E00     PUSH 1E0F38
00196325    68 00204100     PUSH 412000
0019632A    68 7C000000     PUSH 7C
0019632F    E8 DBBE667C     CALL kernel32.WriteProcessMemory
Код:
00196316    68 00000000     PUSH 0
0019631B    68 00020000     PUSH 200
00196320    68 383B1E00     PUSH 1E3B38
00196325    68 00504100     PUSH 415000
0019632A    68 7C000000     PUSH 7C
0019632F    E8 DBBE667C     CALL kernel32.WriteProcessMemory
Код:
0015C376    68 E8EE1200     PUSH 12EEE8
0015C37B    68 80000000     PUSH 80
0015C380    E8 66CB6D7C     CALL kernel32.GetThreadContext
Получаем контекст процесса замороженного
По адресу 12EEE8 надо поместить 00010007 чтобы указать что получаем
Тут после того как получим значения регистров, надо в регистр EAX структуры CONTEXT записать адрес указывающий на EP зевса
Код:
0015C376    68 E8EE1200     PUSH 12EEE8
0015C37B    68 80000000     PUSH 80
0015C380    E8 C464707C     CALL kernel32.SetThreadContext
И стартуем функой ResumeThread зевса!
Код:
0015C376    68 80000000     PUSH 80
0015C37B    E8 AA256C7C     CALL kernel32.ResumeThread
Ну, вот как-то так в общих чертах
 
Бывает проснешься, мозг трещит.. сделафф литровый глоток пива – что-то проясняется
Под пивом нравится в арконе создавать какой-нибудь дом, потом редактировать в майя и пока рендерит макс, пить еще пива и писать скрипты на MEL %)))
Но сегодня чет мну потянуло написать очередную байку про крипт..
ЗЫ: много написал.. наверно не каждый асилит, дочитать до конца %)))
Кстати MEL это первый мой прогерский язык на пиньке с него все и началось, ну вернее я понял силу скриптов
Была сцена(в майя) и в ней надо было создать много(100-200) шаров(сфер) разного цвета, разного диаметра, они не должны были касаться друг друга, короче должны быть расположены в разных координатах в пространстве..
Имеет ли смысл создавать эти 100-200 шаров в ручную?, когда при лучшем раскладе на один шар требуется около 1 минуты
Я нашел скрипт, при вводе нужных параметров и нажатии всего одной кнопки создавались 100-1000 сфер с заданными параметрами(в ручную так охуительно никогда не сделаешь)..
это я привожу косвенное сравнение с ручным криптом, в конце выложу код созданный с помощью скрипта, вернее с использованием движка JIT(JIT примерно, такой как в Ruby, но только возможностей в раз 20 больше %)) хотя школьники могут заюзать и от Ruby исходники, тем более они опенсорс)
Хе-хе, ладно не буду прыгать с темы на тему, продолжу про крипторы
Скрывать не стоит, что всех интересует "не раскрытая" тема СТАТИК крипторов, ее и рассмотрим (ну вернее "похороним" и сравним)
Варнинг: кстати, забыл написать, все это ИМХО и никого не заставляют дальше читать! (а тем более верить тому, что я пишу)
Те, кто не знает, но думает что сможет написать криптор сразу(му-ха-ха), скажу что ВЫ только RTFM учить будите около полгода – ЗАПОМНИТЕ ЭТО, если кто-то вам пытается доказать что это можно сделать за месяц, сразу вешайте на него клеймо ламера
Есть исключения когда кто-то общается между собой на форуме и пишет что сделает (к примеру за 10 дней), но это уже чел скорее всего в теме не один год и с нубами он даже разговаривать не станет, а тем более рассказывать что-то приватное
Все это утрировано написано, просто не охота на эту тему большую демагогию разводить, всегда появится кто-нибудь "брызгающий слюной"
Статик крипторы были актуальны 2004-2006 году
Я помню, были такие крипторы от "ВАСЯ" с названиями "похернах", "суперкрипт" итд. %))
Так вот я смотрел их помню код, делал их один чел(ну может еще "кто-то", из тех же исходников) менял ники, аськи, мыла, названия крипторов, внешний вид(GUI) и продавал(можно много чего изменить, но код – это как подчерк - раз увидев, уже не спутаешь!), можно в качестве доказательств залить, да адреса для сравнения запостить, но думаю что и этой инфы достаточно чтобы сделать выводы, какой "беспредел существует"..
Так вот что такое статик - это когда стаб всегда один и тот же при каждом крипте
Но стоит отметить один плюс в статике - это когда начало кода всегда статично, просто тупо фейк сделанный под стандартную прогу(ну к примеру C++)
Код:
0040382C 55                    PUSH EBP
0040382D 8BEC                  MOV EBP,ESP
0040382F 6A FF                 PUSH -1
00403831 68 18424000           PUSH 00404218
00403836 68 20384000           PUSH 00403820
0040383B 64:A1 00000000        MOV EAX,DWORD PTR FS:[0]
00403841 50                    PUSH EAX
00403842 64:8925 00000000      MOV DWORD PTR FS:[0],ESP
00403849 83EC 68               SUB ESP,68
0040384C 53                    PUSH EBX
0040384D 56                    PUSH ESI
0040384E 57                    PUSH EDI
0040384F 8965 E8               MOV DWORD PTR SS:[EBP-18],ESP
И это плюс криптора, желательно чтобы авчекер при детекте определял, что это стандартная прога!

Представим что у нас в стабе есть такой код(и он при каждом крипте всегда одинаков)
Код:
1314118C     51             PUSH ECX
1314118D     53             PUSH EBX
1314118E     56             PUSH ESI
1314118F     57             PUSH EDI
13141190     8B5C24 14      MOV EBX,DWORD PTR SS:[ESP+14]
13141194     8B73 3C        MOV ESI,DWORD PTR DS:[EBX+3C]
13141197     8B741E 78      MOV ESI,DWORD PTR DS:[ESI+EBX+78]
1314119B     03F3           ADD ESI,EBX
1314119D     33C9           XOR ECX,ECX
1314119F     8B7E 20        MOV EDI,DWORD PTR DS:[ESI+20]
131411A2     03FB           ADD EDI,EBX
131411A4     3B4E 18        CMP ECX,DWORD PTR DS:[ESI+18]
131411A7     74 30          JE SHORT 131411D9
131411A9     8B4424 18      MOV EAX,DWORD PTR SS:[ESP+18]
131411AD     50             PUSH EAX
131411AE     8B048F         MOV EAX,DWORD PTR DS:[EDI+ECX*4]
131411B1     03C3           ADD EAX,EBX
131411B3     50             PUSH EAX
131411B4     E8 29000000    CALL 131411E2
131411B9     85C0           TEST EAX,EAX
131411BB     74 03          JE SHORT 131411C0
131411BD     41             INC ECX
131411BE   ^ EB E4          JMP SHORT 131411A4
131411C0     8B46 24        MOV EAX,DWORD PTR DS:[ESI+24]
131411C3     03C3           ADD EAX,EBX
131411C5     0FB70C48       MOVZX ECX,WORD PTR DS:[EAX+ECX*2]
131411C9     2B4E 10        SUB ECX,DWORD PTR DS:[ESI+10]
131411CC     41             INC ECX
131411CD     8B46 1C        MOV EAX,DWORD PTR DS:[ESI+1C]
131411D0     03C3           ADD EAX,EBX
131411D2     8B0488         MOV EAX,DWORD PTR DS:[EAX+ECX*4]
131411D5     03C3           ADD EAX,EBX
131411D7     EB 02          JMP SHORT 131411DB
131411D9     33C0           XOR EAX,EAX
131411DB     5F             POP EDI
131411DC     5E             POP ESI
131411DD     5B             POP EBX
131411DE     59             POP ECX
131411DF     C2 0800        RETN 8
Как же его AV могут задетектить?
Ну к примеру такой сигнатурой: (это без учета плавающих сигн, скрипт двигов, построителей графов, песочниц, VM итд.)
515356578B5C24148B733C8B741E78*5F5E5B59C20800
Здесь символ "*" – это wildcards, то есть вместо * может быть любое количество разных байтов – тут главное начало и конец
И так если мы изменим начало 515356 на 51905356 естественно уже сигна не сработает
Все написано утрировано и как можно проще, чтобы было понятно тем, кто в танке :)
Но допустим методом тыка, - ну это тупо изменив код, отправляем на проверку и смотрим, палят нас или нет
Если нет, стучим клиентам и говорим что чистка успешно сделана %))))
И так постоянно, но наступает правда а сталобыть и истена, в 2004-2006 годах гуано-крипторов было мало и аверские базы по детекту были ужасно скудны и малы
А что же 2008-2009? Ну надо посчитать количество крипторов и главное эти самые "чистки"
Количество велосипедов каждый день растет, диапазон для творчества уменьшается, AV-базы стабильно растут и детектят "почти все"
Отличный повод клиентам рассказать каг все трудно и хреново, при этом опустив один момент что айкью в геометрической прогрессии падает(не у всех) баланс нарушен, ужаснах..
Кстати использование "хитрых" асм инструкций, скорее облегчат детект, чем его затрудняет.. обусловлено это тем, что в обычных прогах или других крипторах такая комбинация один на миллион что встретится, сталобыть один раз любой юзер отошлет на virustotal и если дятлы работают на совесть, то "сигну" сразу добавят в базы. На платных авчекерах даже версии AV обычно значительно ниже, а хуля уже говорить о базах, а отослав на ПЛАТНОМ на проверку естественно детекта НЕ БУДЕТ, там ведь "версия стара" как дерьмо маманта., короче думайте сами за что бабло платите..
Статик крипторы еще могут быть полезны для личного пользования или единичные крипты друзьям, короче когда статик криптор юзаешь в единичных случаях или очень редко, так сказать для себя и впаривания школьникам, с которых и взять-то нечего - ИМХО
Гы-гы, кто-то скажет мы это знали, - ну так этоже тру епт %))
Теперь возможные решения(может те, кто выше написанное знал, предложит решение лучше??)
1. Начало (EP(EntryPoint)) должно как можно больше похоже на стандартные проги написанные на C++ Delphi итд. то есть "статичным"
Здесь тест лучше проводить на проге DIE автор Hellsp@wn (hi bro), ее так просто тупо не наипешь как PEiD..(и вообще ИМХО – выкиньте этот PEiD нах)
Если DIE показывает «Compiler: Microsoft Visual C++ [ver: x.x] | C/C++» - то это уже что-то хуево, нужно чтобы показывал типа такого
«Microsoft Visual C++ [ver: 6.0] | C/C++», короче чтобы иксов(x.x) не было
Если аверы определят что это стандартная сигнатура, то ставится один из плюсов("флагов"),что в засранчике ничего нет, чем больше таких плюсов, тем лучше и тем выше шанс не задектицца, еще палево наводит ПАКОВАННЫЙ засранчик(кстати многие этот факт доказали на практике, но продолжают дальше жать и сталобыть палицца), тут ставится один из минусов - лучше пусть будет размером больше, но Entropy попадать будет в нормальный "диапазон"
У аверов естественно тоже стоит не PEiD (все что я описываю, подразумевает virustotal(в плане повышения скила), другие сервисы - это гуано - ИМХО. и тут без вариантов!)
2. PE формат максимально должен быть похож на стандарт, то есть если EP фейк создавался под Delphi(к примеру), то и имена секций их атрибуты количество итд. тоже должно быть максимально идентичным
3. Обязательное применение пермутации, этот техник очень эффективен против детекта "плавающих сигнатур" и "построения графов"
Может, кто из читающих пытался разобрать код VMProtecta?, так вот там для детекта исполнителей байткода VM, достаточно плавающих сигнатур - это я к тому что, вот так просто можно задетектить даже такой гуано-код как в VMProtectе, у него весь код(исполнителей байткода) статичен, но изгажен обфускацией и пермутацией..
Из этого следует обязательный 4 пункт - морфить надо все и что даже не шевелится!
5. все надо разбавлять рандомным мусором
6. к регистрам и стеку должен применятся обязательно полиморф!
7. ...
...
в качестве примера два одинаковых кодеса
Это всего одна команда PUSH EDI с применением на ней выше описанных техник
Start 00401000
Код:
00401000 >  52              PUSH EDX
00401001    E8 1C000000     CALL 00401022
00401006    21FF            AND EDI,EDI
00401008    5C              POP ESP
00401009    860D EF5CA970   XCHG BYTE PTR DS:[70A95CEF],CL
0040100F    59              POP ECX
00401010    FA              CLI
00401011    9F              LAHF
00401012    EE              OUT DX,AL
00401013    48              DEC EAX
00401014    53              PUSH EBX
00401015    6D              INS DWORD PTR ES:[EDI],DX
00401016    BE AF379977     MOV ESI,779937AF
0040101B    3820            CMP BYTE PTR DS:[EAX],AH
0040101D    634CDD 85       ARPL WORD PTR SS:[EBP+EBX*8-7B],CX
00401021    50              PUSH EAX
00401022    55              PUSH EBP
00401023    89E5            MOV EBP,ESP
00401025    56              PUSH ESI
00401026    8B5D 08         MOV EBX,DWORD PTR SS:[EBP+8]
00401029    2AEF            SUB CH,BH
0040102B    B8 24617CC9     MOV EAX,C97C6124
00401030    0BCE            OR ECX,ESI
00401032    66:83C1 2D      ADD CX,2D
00401036    89D1            MOV ECX,EDX
00401038    81E8 0E6DE7C3   SUB EAX,C3E76D0E
0040103E    80ED E7         SUB CH,0E7
00401041    2ACC            SUB CL,AH
00401043    66:03CE         ADD CX,SI
00401046    81C0 F2000000   ADD EAX,0F2
0040104C    81C9 B7000000   OR ECX,0B7
00401052    F7D8            NEG EAX
00401054    81C0 35F99305   ADD EAX,593F935
0040105A    33C9            XOR ECX,ECX
0040105C    89F1            MOV ECX,ESI
0040105E    F7D0            NOT EAX
00401060    81F8 D2FB0000   CMP EAX,0FBD2
00401066  ^ 75 A7           JNZ SHORT 0040100F
00401068    66:03C9         ADD CX,CX
0040106B    52              PUSH EDX
0040106C    E8 1E000000     CALL 0040108F
00401071    8D6F 8B         LEA EBP,DWORD PTR DS:[EDI-75]
00401074    6A 8A           PUSH -76
00401076    17              POP SS
00401077    17              POP SS
00401078    F3:             PREFIX REP:
00401079    4F              DEC EDI
0040107A    F0:A4           LOCK MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]
0040107C  ^ 7C C5           JL SHORT 00401043
0040107E    94              XCHG EAX,ESP
0040107F    25 8CB26ABD     AND EAX,BD6AB28C
00401084    C2 6289         RETN 8962
00401087    CD F2           INT 0F2
00401089    1C 5D           SBB AL,5D
0040108B    45              INC EBP
0040108C    E7 E4           OUT 0E4,EAX
0040108E    47              INC EDI
0040108F    895C24 14       MOV DWORD PTR SS:[ESP+14],EBX
00401093    83EC EC         SUB ESP,-14
00401096    66:81C1 E319    ADD CX,19E3
Start 004010BC
Код:
00401000    55              PUSH EBP
00401001    89E5            MOV EBP,ESP
00401003    81C4 D4FFFFFF   ADD ESP,-2C
00401009    8B4D 08         MOV ECX,DWORD PTR SS:[EBP+8]
0040100C    BB B1820000     MOV EBX,82B1
00401011    81F0 FA000000   XOR EAX,0FA
00401017    82C0 A3         ADD AL,-5D
0040101A    2BC3            SUB EAX,EBX
0040101C    81F3 CE000000   XOR EBX,0CE
00401022    01C0            ADD EAX,EAX
00401024    66:B8 0AFE      MOV AX,0FE0A
00401028    81C3 3B000000   ADD EBX,3B
0040102E    66:29C0         SUB AX,AX
00401031    66:81C0 8100    ADD AX,81
00401036    81C0 D3720000   ADD EAX,72D3
0040103C    81C3 28000000   ADD EBX,28
00401042    66:B8 CC00      MOV AX,0CC
00401046    09C0            OR EAX,EAX
00401048    81F0 F1D00000   XOR EAX,0D0F1
0040104E    F7DB            NEG EBX
00401050    66:01D8         ADD AX,BX
00401053    31F8            XOR EAX,EDI
00401055    F7D3            NOT EBX
00401057    81FB E1820000   CMP EBX,82E1
0040105D  ^ 75 D8           JNZ SHORT 00401037
0040105F    50              PUSH EAX
00401060    68 D44D0000     PUSH 4DD4
00401065    57              PUSH EDI
00401066    E8 3F000000     CALL 004010AA
0040106B    A9 953B0A25     TEST EAX,250A3B95
00401070    43              INC EBX
00401071    E4 12           IN AL,12
00401073    C475 26         LES ESI,FWORD PTR SS:[EBP+26]
00401076    118D 5B8F6E04   ADC DWORD PTR SS:[EBP+46E8F5B],ECX
0040107C    F6              ???
0040107D    C9              LEAVE
0040107E    B5 59           MOV CH,59
00401080    096E A0         OR DWORD PTR DS:[ESI-60],EBP
00401083    F0:D6           LOCK SALC
00401085  - FFE6            JMP ESI
00401087    67:F1           INT1
00401089    BE 63230E43     MOV ESI,430E2363
0040108E    C9              LEAVE
0040108F    79 61           JNS SHORT 004010F2
00401091    59              POP ECX
00401092  - E9 98DA10E8     JMP E850EB2F
00401097    DC2D 4F5BB3CE   FSUBR QWORD PTR DS:[CEB35B4F]
0040109D    DD9F 73554727   FSTP QWORD PTR DS:[EDI+27475573]
004010A3    3227            XOR AH,BYTE PTR DS:[EDI]
004010A5    0A9A BC043A55   OR BL,BYTE PTR DS:[EDX+553A04BC]
004010AB    8BEC            MOV EBP,ESP
004010AD    53              PUSH EBX
004010AE    57              PUSH EDI
004010AF    894C24 58       MOV DWORD PTR SS:[ESP+58],ECX
004010B3    83C4 58         ADD ESP,58
004010B6    8D9D 50010000   LEA EBX,DWORD PTR SS:[EBP+150]
004010BC >  82C0 95         ADD AL,-6B
004010BF    66:81EB D400    SUB BX,0D4
004010C4    80EB EC         SUB BL,0EC
004010C7    68 D7D50000     PUSH 0D5D7
004010CC    68 34000000     PUSH 34
004010D1    57              PUSH EDI
004010D2    E8 29FFFFFF     CALL 00401000
004010D7  ^ 71 B2           JNO SHORT 0040108B
004010D9    4E              DEC ESI
004010DA    95              XCHG EAX,EBP
004010DB    AF              SCAS DWORD PTR ES:[EDI]
004010DC    41              INC ECX
004010DD    FA              CLI
004010DE    16              PUSH SS
004010DF    2349 AC         AND ECX,DWORD PTR DS:[ECX-54]
004010E2  ^ 77 F4           JA SHORT 004010D8
004010E4    05 000000E8     ADD EAX,E8000000

P. S.
То, что ниже напишу, может показаться откровенной бредятиной, но у меня просто физически времени нет, эту теорию проверить
Меня всегда удивляло, почему этих сервисов около 20 у всех, возможно есть причина?..
Возможные решения:
Собрать как можно больше ссылок таких сервисов(которые утверждают что не отправляют) посмотреть и сравнить какие версии AV их количество и их "бренды" присутствуют и где эти сервисы хостяцца
Собрать ссылки всех сервисов AV, которым можно отсылать на проверку
А может у кого-то уже есть такой полный список ссылок, чтобы здесь его запостить?
Тут просто у каждой конторы(но у некоторых, не для каждого школьника - это частичный ответ почему их ~20) есть свой сервис для проверки засранчиков, сталобыть пишем на коленке скрипт(именно сами пишем, а НЕ тупо юзаем готовое решение найденное в инете, так как могут быть нюансы, которые можно увидеть только при кодинге), но в принципе за основу можно взять и готовое решение
Может у кого-то есть такие скрипты и их много и может здесь сделать аттач такого сборника?
Делаем тест – отсылаем одиного засранчика всем и смотрим на результаты и сравниваем с выдачей нашего скрипта
Тут может незначительно отличатся выхлоп, но это не суть важно
Составить диаграмму удобную для просмотра и сравнения, чтобы ничего не упустить
Следующий этап – это осознать("теоретически") что проще и выгоднее отослать AV конторе или же реально сделать свой сервис
И так мы уже знаем, что возможен вариант создания любым школьником такого сервиса – пишем скрипт, делаем кул диз для сайта, создаем форму залива, делаем график выдачи, создаем систему приема платежей и мнимых бонусов, за пару дней можно все сделать.. тем более заюзать готовые решения на основе js-фраймворков, еще пару дней на тестирование и фиксы и пару дней на рекламу в качестве постов на хак-форумах отзывы от школьников ЗА СКИДКИ и ссылки на форумы где "проверка пройдена"
Всего неделя требуется, чтобы все заработало
Теперь как же удержать клиента это ведь потенциальный бакс в день, ну можно просто тупо сделать, чтобы выдача была менее "палевной"
И написать что аверам не отсылаем. Как они проверят? – да это и не важно ведь, главное дать им то, что нужно
А что нужно - да чтобы их меньше палили(чтобы они тоже писали на таких же хек-форумах что FUD)
И теперь кольцо замыкается
Кому из пишущих крипторы хочется реально напрягаться - да никому, и создается мнимая обстановка. чел который, пишет криптор платит такому сервису именно за то, чтобы в его такой же рекламе на хек-форумах, был отчет что не палится(FUD), главное красиво спеть и написать чтобы не отсылали на virustotal
Теперь что же надо сделать, чтобы реально создать такой сервис
Первое должна быть локально установлена версия AV на сервере, прокси/фаер итд. должен запрещать отсылку любой инфы от AV, тут нужен будет выделенный..
А кто же вот так просто разрешит запустить засранчика - да никто, минимум писочница + VM сталобыть ресурсы растут, а еще требуется высокая скорость проверки, а справится сервер с таким количеством AV? да естественно нет. с теми багами что аверы создают на одной системе больше дух не установить(это я утрировано), короче некоторые ав даже падать могут, че уже говорить о совместном существовании
Ежедневное обновление баз, AV версий(а доступ к ним?, неужели бесплатный для тех кто способствует криптописателям?). думаю, дальше не имеет смысла перечислять – тут можно просто тупо попробовать самому создать из ТРЕХ ОСНОВНЫХ AV и попробовать посчитать обслуживание такого сервиса, сколько будет стоить и ПРОЦЕНТ КЛИЕНТОВ, и главное если такой сервис постоянно ЧЕСТНО будет палить криптор(как на virustotal), будут ли его юзать реально те, кто пишет крипторы?
Можно полностью описать выгоду всех в данном круге, кроме юзера, который платит всем "вымогателям"(здесь аверы на первом месте)
Но пусть каждый сам для себя замкнет этот круг... %))))
ЗЫ: в написанном, есть противоречия написанному
ЗЫЫ: ИМХО

PP. S.
так все же, обзор или реверс? %)))
 
по ходу чтения - ряд вопросов.
>Кстати использование "хитрых" асм инструкций, скорее облегчат детект, чем его затрудняет.. обусловлено это тем, что в обычных прогах или других крипторах такая комбинация один на миллион что встретится

неужели это так? не верится. мне кажется что тот же Каспер спросит юзера - доверять ли "хитрой" проге (например,Кошельку.Яндекса) - чем отнесет его к угрозам.
т.е. по факту распишется в своем бессилии


должна быть локально установлена версия AV на сервере, прокси/фаер итд. должен запрещать отсылку любой инфы от AV, тут нужен будет выделенный.
и не один. я не думаю, что серьезный сервис держит на 1 сервере винду, никс и потоки проверок.
"красивый" фронтенд конечно же отделен от кухни физически. Но это и не так дорого, кстати. локалка из 2 компов- один-шлюз, второй- тестирующий+БД клиентов.
Стоимость новых версий и обновлений тут ни при чем - скорее это проблема техническая, а не финансовая...ИМХО.
Да, все платные сервисы уступают вирустотал, да их лояльность проверить почти невозможно -только подбросив что-то специально-заточенное под эксперимент. А кому оно надо.

Может у кого-то есть такие скрипты и их много и может здесь сделать аттач такого сборника?
Делаем тест – отсылаем одиного засранчика всем и смотрим на результаты и сравниваем с выдачей нашего скрипта
Тут может незначительно отличатся выхлоп, но это не суть важно
Составить диаграмму удобную для просмотра и сравнения, чтобы ничего не упустить
вооот- то "пишем на коленке", то "дайте скрипты" -:)
Тест делали, ты прогулял обзор Ares-a
А вот удобной диаграммы не было - это фаааааааааакт ))))))
Чего я подсознательно ожидала, видимо. Потому обзор показался не очень "солидным", но меня не поняли.
так все же, обзор или реверс? %)))
месье предлагает себя - на выбор? - если честно, не поняла.
Обзор, конечно обзор :) и..и реверсинг.
В общем, всего..всего и побольше =)
 
неужели это так?
Нет, это не про локальный детект написано, локальный AV - это скорее порванный презик, чем средство защиты
Речь шла о легкости создании "сигнатуры" аверами для таких "хитрых" конструкций на УРОВНЕ АССЕМБЛЕРА(низкоуровневых вещах)
Ключевое слово здесь «"хитрых" асм инструкций»
А мессаги от локальных AV – это для юзверей(вернее зомбиков), которые понятия не имеют для чего нужен код
Код:
7C80B5CF       90           NOP
7C80B5D0       90           NOP
7C80B5D1       90           NOP
7C80B5D2       90           NOP
7C80B5D3       90           NOP
7C80B5D4       8BFF       MOV EDI,EDI
Вот что ты процитировала, эта инфа написана ТОЛЬКО для тех, кто слету знает ответ на этот вопрос - зачем такой код в системных библах нужен..
ЗЫ: старался как можно "мягче" объяснить ;)

и не один. я не думаю, что серьезный сервис держит...
тут нужен будет выделенный..
Ну поэтому я там и поставил многоточие, предоставив возможность продолжить мысль читающему своими знаниями, против своих мыслей уже спорить не будут, ну как-то так что ли.. а сталобыть теория будет доказана без практики %)))

Тест делали, ты прогулял обзор Ares-a
Обзор я его читал.
Там про удобство юзанья сервисов(баги, диз, итд.) написано, а я про то что они все шлют аверам сэмплы и по каким "логическим" признакам это можно понять
Хотя может действительно существует и другая тема, которую я не видел..

если честно, не поняла.
Да это просто для фона написал, просто вначале увидел «Хех, не умею я темы называть правильно, ну да ладно..»
И вспомнил, о чем думал тогда, когда тему создавал
вот может кто-то вспомнит, о чем думал, когда первый раз читал %)))
 
Давно витает мысль взять старые добрые исходники любого троя. Сделать штук 15 билдов и всунуть внутрь каждого билда уникальную часть кода. В идеале - закриптовать один и тот же файл 15 разными сигнатурами. Затем скормить их по одному на сервис и ждать. Скажем месяц. Потом посмотреть что из них начало палиться. И всвязи с тем, что трой будет древний, вероятности что спалился чей-то "случайный" билд - практически не будет. Вот это было бы действительно интересно.

Теперь вопрос. Кто возьмется ЗАДАРОМ сделать 15 криптов с разными сигнатурами. Даже не разными, а УНИКАЛЬНЫМИ и в плане криптования и метода и т.д. т.е. максимально разными. А это крайне не простая задача. Вот если найдется такой человек - у меня почти везде остались после обзора аккаунты. Почти везде есть по паре баксов. Могу спонсировать или частично спонсировать данное начало. С удовольствием возьмусь за описательную часть. ГАРАНТИРУЮ объективность в независимости от результатов. А в качестве моих гарантий предлагаю привлечь несколько человек 3-4 с других ресурсов. (с репой) и результаты всех тестов по мере поступления сливать всем. Что бы в итоге меня вновь не обвиняли в заказном обзоре в сторону виртеста.
 
Затем скормить их по одному на сервис и ждать. Скажем месяц.
я еще летом кинул мини-троя на virustotal - как только не называл его bot_crypted, troyan - раз 10 кидал, как не палился так и не палится

вот он
http://www.virustotal.com/ru/analisis/11bffdb0c864eded4900797807cb671cf427794bd243e2c3c5a3f2c653c88538-1262795135

они скорее определяют по уникальным особенностям екзе и по частоте отправки на сервис
 
Как я понял, мы думаем про одно и тоже, как можно сделать проверку совсем "элементарно"..
кстати да, такой вариант я и хотел позже предложить..
Мне он видится несколько иначе
Собрали все линки этих сервисов, не обсуждали что надо, а взяли и сделали.. вот уверен, что у кого-то уже есть такой готовый список всех серверов, вот сколько их 15? 40? 100? Или больше.. (в обзоре их там около 10, а я думаю что их больше ИМХО)
[offtop]
Вот меня удивляет ситуация, значит мы тут пытаемся выяснить правду, а сами те, у кого эти серверы есть, тупо молчат и упорно не хотят делится инфой.. но, зато(тот же virtest.com) с легкостью в своих топиках дает ссыль на обзор где он лидер по качеству, мне такое нихрена не нравится
А я уверен, что у них есть такой список большинства сереверов, это же их конкуренты.. они, чтобы быть лидерами в этом бизе просто не могут его не иметь..
Ну или пусть возьмут опишут(в общих чертах) как внутри "движок" выглядит, какое железо юзают итд.
[/offtop]
Теперь берем криптуем(как сказал Ar3s) и рассылаем всем этим серверам разные копии и должны получить FUD(это обязательное условие) от всех этих серверов
Потом не месяц ждать, а неделю-дней десять и слать на virustotal.com ВСЕ ЭТИ КОПИИ и смотреть какие НЕ FUD сталобыть те сервесы и ОТСЫЛАЮТ
Почему на virustotal.com, да потому что, там всегда самые свежие версии AV и базы.. значит, если отсылают, то именно там сразу и начнут палицца, это же их "главный" общаг и источнег
А на других сервисах проверять еще раз бесполезно.. не паляцца они там, потому что, базы старые – ИМХО (вот про это противоречие я и писал)
Вот на exploit.in есть топик
http://exploit.in/forum/index.php?showtopic=891&st=380
постоянно там(каждый день и несколько раз на день и это и есть истена) тупо постит(я уже начал думать что это бот), ссылки на новые базы версии – и это только для одного AV
Неужели virtest.com му-ха-ха, с такой частотой обновляются для всех AV?

Теперь по поводу вопроса
Я могу криптануть хоть тысячу, но есть одно но, по моим понятиям это делать пока еще рано(хотя планы всегда могут поменяться еще сто раз)
Мне осталось докодить фейковый обработчик SEH`а и завязать его с импортом библы msvcrt.dll
И выбрать алго шифрования тела засранчика, тут RC4, свой алго, ксор dword`ом, или даже посмотреть в сторону сжатия на 10%
Это все за день под пивом сделать можно, но нихрена времени нет, да еще эти праздники, короче наверно только через месяц
Да и в этой теме я еще до "релиза криптора" планировал пару "обзорчиков" сделать..
ЗЫ: Такой ТЕСТ(пиар) криптору(да и тиме) только, на пользу пойдет %))), главное чтобы скила у мну хватило ;)

А в качестве моих гарантий предлагаю привлечь несколько человек 3-4 с других ресурсов.
Зачем такие жертвы, ТЕХ кто СОМНЕВАЕТСЯ в твоей ЧЕСТНОСТИ, надо слать нах С ЭТОГО ФОРУМА или даже банить – ИМХО
 
Сегодня на злом увидел у virtest
«скорость апдейтов антивирусных баз теперь в 10 раз выше»
Оперативно написать это хорошо :), но в реале-то оно действительно так или это просто буквы?
Вообщем несчадно поспамил я сегодня(в течении 1 часа) scanner.novirusthanks.org и virustotal.com
[offtop]
Оказалось нудная эта хрень.. даже не представляю, сколько времени ушло на обзор у Ar3s
наверно очень дохрена, но тут даже не времени, сколько терпения нужно было, чтобы его сделать эти скрины, описание итд.
как говорится, пока не попробуешь - не узнаешь..
[/offtop]

Вообщем незначительные изъяны что увидел: (по моим понятиям)
scanner.novirusthanks.org a-squared 04/01/2010 4.5.0.8
virustotal.com a-squared 4.5.0.48 2010.01.07

кстати отсылал друг за другом сразу и в то время как тормозил(была задержка) virustotal.com тоже самое было и у scanner.novirusthanks.org
разница по времени до полного анализа между ними virustotal.com в 3-4 раза быстрее на глаз.. притом, что у него на 20 AV больше

scanner.novirusthanks.org Kaspersky 07/01/2010 8.0.0.357 – здесь не палит
virustotal.com Kaspersky 7.0.0.125 2010.01.07 – здесь палит как Packed.Win32.Krap.w

scanner.novirusthanks.org BitDefender 07/01/2010 7.0.0.2555
virustotal.com BitDefender 7.2 2010.01.07
короче итд.

P. S.
Вообще, тот обзор что сделал Ar3s, явно повлиял на качество(реально в лучшую сторону) почти "всех" сервисов
Получается, в связи с их изменениями, нужен новый обзор, чтобы отражал действительную реальность с настоящим временем
Со стороны сервисов же, как минимум должен быть бесплатный доступ для теста и онлайн поддержка во время теста
ЗЫ: ИМХО
 
не надоело уже воду лить? :))) возьми и проведи нормальный тест, раз никому не веришь и т.д. Ar3s провёл качественный обзор, потратил своё личное время и разложил всё чётко по полочкам, за что ему оргомное спасибо.

з.ы. многое зависит от настроек самих ав на сервисах (эвристика, глубина сканирования, таймауты).
з.ы.ы. можно заодно потестить новый сервис scan4you.biz
 
Солидарен с мнением r00f...
Лучше бы ты(krazz) написал скажем статью по крипторам, разложил бы новичкам по полочкам(сам понимаю ты только начинаешь, как и многие тут), но это было бы даже очень неплохо, ато получается пишешь мессагу - никакого смысла, только твои личные доводы, иными словами вода. Без никаких обид, если хочешь репутации заработать - пиши качественные статьи, обдуманные посты. Против тебя(сразу говорю) ничего не имею.

По теме: сервисов этих проверочных в сети куча. Можно собрать список и дать каждому здесь мемберу на проверку, там самым сэкономив время.
А вообще моё личное мнение - завести себе виртуалку и поставить туда несколько норм. ав(5-8 шт.), настроить их, чтобы не грузили ситсему и юзать, а если надо доп. проверки, то юзать паблик сервисы, ну или на пож. случай - платные.
 
Кто вам сказал, что я пытаюсь что-то там против Ar3s сказать? Не надо свое желаемое, выдавать за чужое не действительное
Ладно, спорить и что-то доказывать не буду, закройте тему нах лучше, да удалите то, что по вашему мнению порочит чью-то честь :)
Короче, closed...
 
ну зачем же на критику так резко реагировать? может ты и не пытался никого обидеть, но именно так всё и выглядит. с твоих слов получается что озбзор был предвзятый. ну так соберись и проведи свой (с блэкджеком и шлюхами).
 
Да я знаю, что можно так прочитать, но я же специально тегом [offtop] выделил
Тут надо, когда читаешь просто тупо пропустить то, что между тэгами [offtop]
Короче те изъяны, на которые я указал – это из сделанных мной тестов %)))
Это я послал в течении часа около 30-40(точно не считал) сэмплов на scanner.novirusthanks.org и virustotal.com
Получилось где-то около ~70 страниц с результатами (~35 virustotal.com и ~35 scanner.novirusthanks.org) я их сравнил и выложил в верхнем посте эти изъяны(различия) указывая тем самим на то что надо обращать более детальное внимание
Бу-га-га, а ты наверно подумал что я искал изъяны в обзоре Ar3s, естественно нет!!! - это был мой "сегодняшний" тест %)))
ЗЫ: DiFor меня уже предупреждал о таких вещах, что хреново так писать, но по-другому я не умею!
 


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