Как стать автором
Обновить

Комментарии 48

Вы не могли бы почаще выкладывать подобные вещи? хоть и не все понял, ибо асму не знаю, но очень увлекло.
Не, чаще точно не буду. Потому что когда я работаю, я все это держу в голове и в IDAшной базе. Чтобы записать эту информацию, анализ нужно, фактически, заново производить, и времени будет уходить гораздо больше... Начитывать на диктофон - тоже не выход, да и коллеги не поймут :-)
Все равно, главное не останавливайтесь. Всегда любил читать обзоры про вирусы. Вам плюсик.
на диктофон=)? прям как патологоанатом был бы=)
И в отдельный блог, чтоб потом легче искать было.
Дык это и есть отдельный блог. Я сюда буду писать в основном про вирусятину, для остального у меня ЖЖ есть :-)
Выложил. На ближайшие дни хватит с меня :-)
Спасибо за статью. Однозначно в избранное.
После прочтения возникли несколько вопросов:
Как Вы достали данный файл?
Где можно почитать про методы обнаружения и вышибания VMWare?
Я вирусным аналитиком работаю, такого "добра" приходит несколько штук в неделю. Притащил домой, разобрал по косточкам... :-)
Про обнуружение и защиту ВМВАРИ - http://www.google.ru/search?hl=ru&q=VMXh
Целенаправленные атаки - тут http://www.securitylab.ru/search/index.p…
Пока я встречал только один вирус, который VMWare в BSOD уводил. И делали ли это он специально - тоже вопрос...
Ох и корявый код для расшифровки xor-ом... Это же Си-строки, то есть в конце стоит 0. Код в трояне эквивалентен примерно такому

char* lpString;
for(int pos=0;pos&gtlstrlenA(lpString);pos++)
lpString[pos]^=key;

неудачно написано...

лучше так
char* lpString;
for(char* t=lpString;*t!=0;t++)
*t^=key;

зачем lstrlen вызывать?..
Корявый :-) Мало того, что strlen, так еще и в каждой итерации цикла она будет вызываться :-) Я для расшифровки на IDAScript написал как раз с проверкой на нулевой байт.
почему lstrlen?
делфя...
Я имею ввиду логику автора, который вместо того, чтобы искать в конце ноль, выбрал именно такой способ. Просто он мыслил делфей.
А... Хм, не задумывался об этом. Хотя, это может быть довольно распространенной ошибкой: for (i=0;i
Тьфу, lstrlen, конечно! Но ссылка верная.
Товарисч, я нихрена не понял, но вы просто ГУРУ. )
Да не гуру я. Троян простой, да и не до конца расковырял. Для меня есть много тем в это области, в которых я "ни в зуб ногой". Гуру - они куда как более серьезными вещами занимаются.
Круто. Не часто встретишь настолько продуманный троян. Защита от дебага (само-модифицирующийся код), защита от ВМВейр и.т.д... А также не часто встретишь настолько хорошего специалиста =).
Да обычный троян. Разве что написан понятно. Кстати, тут НЕТ самомодификации кода, только противодействие отладке и ВМвари. Из самомодифицирующегося кода сразу вспоминается какой-то упаковщик, он в коде 1 байт правил, после чего переходил на начало себя, проверял этот байт и выполнялась уже другая его ветвь.
Ну, не скромничайте ;)
Я довольно объективно оцениваю свои способности. У нас на работе ТАКИЕ монстры есть, что для них это - детский лепет :-)
Сейчас разбираю ftp34.dll, которую этот троян дропает. Вот там - действительно интересно!
В очередной раз интересно и увлекательно. Спасибо!
А защита от VMWare срабатывает на MS VirtualPC/MS Virtual Server? Просто интересно.
Не должна. Фишка с VMXh - специфична для VMWare.
очень интересно было прочитать, теперь примерно представляю как антивирусные лаборатории разбирают всякие трояны и др. вредоносные программы. Спасибо.
Ну, как Каспер их разбирает - мне неведомо. Ибо НАСТОЛЬКО неверное имя дать - это умудриться надо было :-)
Обычно, кстати, такой детальный анализ я не провожу, функционал примерно ясен по поведению и/или по строкам в файле.
залупко, как мило)
Интересно, хотя мало что понятно =)
А если юзать не WmWare, а Virtual PC, например?
Не знаю, не пробовал. Проще пропатчить вмварь, тогда такой очевидный способ перестанет работать, но останутся другие, о которых ничего определенного сказать не могу.
интересно сколько времени заняло написание этого трояна и сколько времени ушло на его детальное понимание? интересно соотношение времени пишущих и копающих :)
Хм... Ну настолько детальное понимание съело около 2 часов на работе. Дома повторный анализ занял 4 часа, потому как у меня не ВМ, пришлось дважды с образов восстанавливаться. Да и неудобно с одной машины на другую материалы гонять - я на одной машине ковырялся, на второй описалово писал :-)
Сколько у создателей ушло - не знаю, но думаю что не меньше тех же 4 часов.
НЛО прилетело и опубликовало эту надпись здесь
Хороший логотип и нейминг!
Да URL для списка файлов тоже хорош: manda.php :-D
Не понял только зачем нужно было метать какашку в огород делфи.
Никто и не метал. Я констатировал 2 факта: код, аналогичный приведенному на дельфи будет занимать пару страниц, то есть в несколько раз больше. И второй факт - я не люблю дельфи.
Врёте.

program SXor;

uses
Windows;

Var S:String;
I:Dword;
begin
S:='AsdfgsdfgsdfFdsgfhfhgjfukik';
for I:= 1 to Length(S) do S[I]:=CHR(ORD(S[I]) XOR 15);
Writeln(S);
end.

004040D9 . BA 5C414000 mov edx, SXor.0040415C ; ASCII "AsdfgsdfgsdfFdsgfhfhgjfukik"
004040DE . E8 D9F9FFFF call SXor.00403ABC
004040E3 . A1 F0874000 mov eax, dword ptr [4087F0]
004040E8 . 85C0 test eax, eax
004040EA . 74 05 je short SXor.004040F1
004040EC . 83E8 04 sub eax, 4
004040EF . 8B00 mov eax, dword ptr [eax]
004040F1 > 8BF0 mov esi, eax
004040F3 . 85F6 test esi, esi
004040F5 . 76 25 jbe short SXor.0040411C
004040F7 . BB 01000000 mov ebx, 1
004040FC > B8 F0874000 mov eax, SXor.004087F0
00404101 . E8 6AFAFFFF call SXor.00403B70
00404106 . 8B15 F0874000 mov edx, dword ptr [4087F0]
0040410C . 0FB6541A FF movzx edx, byte ptr [edx+ebx-1]
00404111 . 80F2 0F xor dl, 0F
00404114 . 885418 FF mov byte ptr [eax+ebx-1], dl
00404118 . 43 inc ebx
00404119 . 4E dec esi
0040411A .^ 75 E0 jnz short SXor.004040FC
0040411C > A1 94574000 mov eax, dword ptr [405794]
00404121 . 8B15 F0874000 mov edx, dword ptr [4087F0]
00404127 . E8 4CFAFFFF call SXor.00403B78
0040412C . E8 CFEFFFFF call SXor.00403100
Если ваш код короткий, это еще не говорит о том, что он не может быть длинным. Циклы XOR видел и существенно длиннее.
Просто я считаю что дело не совсем в компиляторе, даже если он далеко не образцовый ;)
Да компилятор-то, черт с ним... А вот постоянные Call'ы к библиотечным функциям, огромный размер библиотечного кода (даже в элементарных проектах) - вот это не есть гуд. Был бы под рукой Banker какой - смог бы показать соотношение либ к юзерскому коду. Да и Delphi нет, на примере Hello World тоже не покажу.
Соглашусь, но это если использовать делфи таким, каким его продают.
Отличный дизайн лого.
Артемий?
Душевно, подробно и читаемо. Почти профессионально. Общее впечатление сильно портит эпатаж про Delphi - пионэрский и неуместный.
Обещаю, больше не буду.
спасибо, в который раз увлекаете своими разборами.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации