Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.04.27;
Скачать: CL | DM;

Вниз

Наведение порчи на трояна :)   Найти похожие ветки 

 
Riply ©   (2008-03-14 15:01) [0]

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


 
DeadMeat ©   (2008-03-14 15:06) [1]

Точку входу поменять в PE заголовке?
Правда я в этом не спец...


 
Рамиль ©   (2008-03-14 15:10) [2]

Записать все нулями?


 
Loki ©   (2008-03-14 15:14) [3]

Службу остановить навсегда - коран не позволяет?

---
WBR, Loki®


 
Johnmen ©   (2008-03-14 15:15) [4]


> Riply ©   (14.03.08 15:01) 

По смещению 10С запиши 0С.
:)


 
clickmaker ©   (2008-03-14 15:17) [5]


> Riply ©   (14.03.08 15:01)

в 40 байте от начала exe (PE) живет адрес точки входа (4 байта)
Запиши нули по этому адресу


 
clickmaker ©   (2008-03-14 15:25) [6]

тьфу, блин. Не от начала экзе, конечно, от начала заголовка PE. А его смещение - 60


 
Riply ©   (2008-03-14 15:25) [7]

> [2] Рамиль © (14.03.08 15:10)
> Записать все нулями?

Пробовала, работает, но мне кажется это довольно рискованно.

> [4] Johnmen © (14.03.08 15:15)
> По смещению 10С запиши 0С.

> [5] clickmaker ©   (14.03.08 15:17)
> в 40 байте от начала exe (PE) живет адрес точки входа (4 байта)
> Запиши нули по этому адресу

Спасибо. Попробую. :)


 
clickmaker ©   (2008-03-14 15:26) [8]


> [6] clickmaker ©   (14.03.08 15:25)
> тьфу, блин. Не от начала экзе, конечно, от начала заголовка
> PE. А его смещение - 60

блин, да что я сегодня такой бестолковый? ) смещение заголовка PE прописано по адресу 60. Вот, теперь точно


 
Loginov Dmitry ©   (2008-03-14 15:35) [9]

Запиши "bugaga" в самом начале :)


 
KSergey ©   (2008-03-14 15:42) [10]

> Riply ©   (14.03.08 15:25) [7]
> > Записать все нулями?
>
> Пробовала, работает, но мне кажется это довольно рискованно.

Чем??! Какая вообще разница какую именно гадость в него внести?
К стати, если его размер больше размера калькулятора виндового к примеру - можно перенести в него содиржимое калькулятора, это вроде безопасная прога. Оставшийся хвост можно не трогать вообще.

К стати, как арвило если нельзя стереть - то всегда можно переименовать.


 
Johnmen ©   (2008-03-14 15:55) [11]


> clickmaker ©   (14.03.08 15:25) [6]

Опять промазал :)
Адрес PE-заголовка лежит по смещению, указанному по смещению 3C.


 
Riply ©   (2008-03-14 15:55) [12]

> [8] clickmaker ©   (14.03.08 15:26)
> смещение заголовка PE прописано по адресу 60.

Я правильно поняла:
Смещение заголовка PE прописано вот здесь IMAGE_DOS_HEADER._lfanew ?

>  [10] KSergey ©   (14.03.08 15:42)
> Чем??! Какая вообще разница какую именно гадость в него внести?

Дело в том, что процесс продолжает работать после изменения файла.
Мало ли какую инструкцию к действию или указатель он захочет прочитать оттуда ?
Черт его знает :)
Или можно не бояться этого ?


 
clickmaker ©   (2008-03-14 16:01) [13]


> [11] Johnmen ©   (14.03.08 15:55)

да нет.
По адресу 3C записано-таки смещение PE заголовка


 
Игорь Шевченко ©   (2008-03-14 16:03) [14]


> Пробовала затирать экзешник нулями.


Достаточно убрать MZ из заголовка


 
Riply ©   (2008-03-14 16:10) [15]

>  [14] Игорь Шевченко ©   (14.03.08 16:03)
> Достаточно убрать MZ из заголовка

А кто это и где находится ?


 
Джо ©   (2008-03-14 16:12) [16]

> [15] Riply ©   (14.03.08 16:10)
> >  [14] Игорь Шевченко ©   (14.03.08 16:03)
> > Достаточно убрать MZ из заголовка
>
> А кто это и где находится ?

По смещению 0 от начала файла :)


 
Johnmen ©   (2008-03-14 16:13) [17]


> clickmaker ©   (14.03.08 16:01) [13]
> да нет.По адресу 3C записано-таки смещение PE заголовка

Ну и я про это... другими словами :)


 
clickmaker ©   (2008-03-14 16:14) [18]


> [14] Игорь Шевченко ©   (14.03.08 16:03)

что прикольно, при этом выводится сообщение "program is too big to fit in memory" )


 
Riply ©   (2008-03-14 16:17) [19]

> [16] Джо ©   (14.03.08 16:12)
> По смещению 0 от начала файла :)

По смещению 0 находиться _IMAGE_DOS_HEADER ?
А MZ это кто ?


 
clickmaker ©   (2008-03-14 16:18) [20]


> [19] Riply ©   (14.03.08 16:17)

что, никогда экзешник блокнотом не открывала? )


 
Riply ©   (2008-03-14 16:24) [21]

>  [20] clickmaker ©   (14.03.08 16:18)
> что, никогда экзешник блокнотом не открывала? )

Открывала. :)
Значит, под "убрать MZ" имеется ввиду затереть первые два байта ?


 
antonn ©   (2008-03-14 16:26) [22]

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


 
Джо ©   (2008-03-14 16:27) [23]

> [19] Riply ©   (14.03.08 16:17)
> > [16] Джо ©   (14.03.08 16:12)
> > По смещению 0 от начала файла :)
>
> По смещению 0 находиться _IMAGE_DOS_HEADER ?
> А MZ это кто ?

А MZ — это Mark Zbikowski :)


 
clickmaker ©   (2008-03-14 16:32) [24]


> [23] Джо ©   (14.03.08 16:27)

что интересно, википедия называет его "one of the first computer hackers" )


 
Игорь Шевченко ©   (2008-03-14 17:05) [25]

Riply ©   (14.03.08 16:10) [15]

Винда - она не дура. Винда она смотрит, а что за файл ей дали на исполнение и какой он, зараза, формат имеет. Соответственно, по наличию MZ в заголовке и проверке смещений в ImageDosHeader она его пытается загружать, как EXECUTABLE, а уж какой он там - DOS Executable, New Executable или Portable Executable, она будет разбираться только после того, как MZ найдет. А если не найдет, то считает, что файл имеет формат COM, соотвественно, загружает его 64 кило - 256 байт и пытается исполнить, начиная с первого байта. Если ты первый байт запишешь $C3, то все исполнение на этом байте благополучно закончится.


 
Riply ©   (2008-03-14 17:49) [26]

> [25] Игорь Шевченко ©   (14.03.08 17:05)

Спасибо.
А что для нее(Винды) будет означать $C3 в данном случае ?


 
Riply ©   (2008-03-14 17:53) [27]

> [5] clickmaker ©   (14.03.08 15:17)
> в 40 байте живет адрес точки входа (4 байта)

В сороковом байте PE я нашла KernelCallbackTable.
Это и есть адрес точки входа или я не там смотрю ?


 
clickmaker ©   (2008-03-14 18:10) [28]


> В сороковом байте PE я нашла KernelCallbackTable

то есть? Так прямо и написано? )


 
Джо ©   (2008-03-14 18:14) [29]

> [26] Riply ©   (14.03.08 17:49)
> > [25] Игорь Шевченко ©   (14.03.08 17:05)
>
> Спасибо.
> А что для нее(Винды) будет означать $C3 в данном случае
> ?

ret, собственно.


 
clickmaker ©   (2008-03-14 18:23) [30]


> [27] Riply ©   (14.03.08 17:53)

заголовок PE состоит из двух частей
TFileHeader = packed record
   Sign: Cardinal;
   CPU: Word;
   NumOfSections: Word;
   TimeStamp: Cardinal;
   SymbolTablePtr: Cardinal;
   SymbolTableSize: Cardinal;
   OptionalHeaderSize: Word;
   Flags: Word;
 end;

TPEOptionalHeader = packed record
   Magic: Word;
   LinkerMajor: Byte;
   LinkerMinor: Byte;
   CodeSize: Cardinal;
   IDataSize: Cardinal;
   UDataSize: Cardinal;
   EntryPointAddr: Cardinal; <--- 28h от начала первой структуры
   ...


 
Riply ©   (2008-03-14 18:50) [31]

> [30] clickmaker ©   (14.03.08 18:23)
> заголовок PE состоит из двух частей

В Windows.pas объявления отличаются от твоих
и смещение до EntryPointAddr там получается на 4 байта меньше
чем у тебя.

PImageFileHeader = ^TImageFileHeader;
 _IMAGE_FILE_HEADER = packed record
   Machine: Word;
   NumberOfSections: Word;
   TimeDateStamp: DWORD;
   PointerToSymbolTable: DWORD;
   NumberOfSymbols: DWORD;
   SizeOfOptionalHeader: Word;
   Characteristics: Word;
 end;

  PImageOptionalHeader = ^TImageOptionalHeader;
 _IMAGE_OPTIONAL_HEADER = packed record
   { Standard fields. }
   Magic: Word;
   MajorLinkerVersion: Byte;
   MinorLinkerVersion: Byte;
   SizeOfCode: DWORD;
   SizeOfInitializedData: DWORD;
   SizeOfUninitializedData: DWORD;
   AddressOfEntryPoint: DWORD;


Разница в наличте одного поля: у них нет Sign: Cardinal;
Или это поле представлено у них в другом месте ? Тогда где ?


 
Riply ©   (2008-03-14 19:16) [32]

> [31] Riply ©   (14.03.08 18:50)

Нашла сбежавшее поле :)
Оно сидит в _IMAGE_NT_HEADERS


 
Игорь Шевченко ©   (2008-03-14 20:07) [33]

Riply ©   (14.03.08 17:49) [26]


> А что для нее(Винды) будет означать $C3 в данном случае
> ?


Для винды - ровным счетом ничего. Для процессора -завершение работы программы.


 
Тыщ   (2008-03-14 21:16) [34]

Почему бы просто не изменить сигнатуру "PE" на любую другую? Тогда exe-шник при следующем запуске выдаст "This program cannot be run in DOS mode." и заглохнет.


 
Игорь Шевченко ©   (2008-03-14 21:25) [35]


> Почему бы просто не изменить сигнатуру "PE" на любую другую?


так ее искать надо, а MZ оно в самом начале.

Кстати, вопрос к автору - а что ты за такой хитрый вирус пишешь ?


 
{RASkov} ©   (2008-03-14 21:48) [36]

> а что ты за такой хитрый вирус пишешь ?

дык наоборот говрит... гибель для вируса готовит :)


 
Германн ©   (2008-03-14 21:56) [37]


> {RASkov} ©   (14.03.08 21:48) [36]
>
> > а что ты за такой хитрый вирус пишешь ?
>
> дык наоборот говрит... гибель для вируса готовит :)
>

Скоро всем вирусописателям придется пересесть под Линукс. Под Виндой у них не останется никаких шансов.


 
{RASkov} ©   (2008-03-14 21:59) [38]

> [37] Германн ©   (14.03.08 21:56)

:) Значит поддержим мою тезку) ...Жаль что я в ее вопросах ни бум-бум :(


 
Riply ©   (2008-03-14 22:27) [39]

Смеетесь ? Да ? :)
А вот на форумах очень часто возникают вопросы как прибить
заразу, которую подцепили там-то и там-то.
Будет еще один вариант решения из многих других. :)

И потом, зря я что-ли с MFT мучалась ? Надо и что-то полезное из этого извлечь,
а то так и останется "голой, никому не нужной теорией" :)


 
Riply ©   (2008-03-14 22:34) [40]

> [35] Игорь Шевченко ©   (14.03.08 21:25)
> так ее искать надо, а MZ оно в самом начале.

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


 
{RASkov} ©   (2008-03-14 22:50) [41]

> [40] Riply ©   (14.03.08 22:34)
> Уж очень смущает факт, что процесс будет работать и после
> изменений. Вдруг попробует считать какую-нибудь команду ...

Что-то может я чего и не понимаю, но что ты так за него(вредоносный процесс) переживаешь? :)
или вирус со злости начнет винт форматировать ...или еще чего? )


 
Игорь Шевченко ©   (2008-03-14 22:52) [42]

Riply ©   (14.03.08 22:27) [39]

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

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


 
Riply ©   (2008-03-14 23:02) [43]

> [41] {RASkov} © (14.03.08 22:50)
> Что-то может я чего и не понимаю, но что ты так за него(вредоносный процесс) переживаешь? :)
> или вирус со злости начнет винт форматировать ...или еще чего? )

Мало ли что. Например он ведет запись в реест, а имя ключа считыват из файла.
Может быть все что угодно.

[цитата]  

>  [42] Игорь Шевченко © (14.03.08 22:52)
> Заразу прибить можно и не мучаясь.
> Зная куда зараза прописывается - это ограниченное число мест, проверить их все, ну и вычистить.

Ну не мне Вам рассказывать, что троян может и не иметь своего личного "места прописки запуска"
Вариантов масса. "Как в Бразилии Педров" :)

> А что до форумов - ну расскажешь ты, что нужно через
> MFT что-то там найти и вычистить - многие ли последуют такому совету ?

А если я дам готовый инструмент для этого ?


 
Игорь Шевченко ©   (2008-03-14 23:16) [44]

Riply ©   (14.03.08 23:02) [43]


> Ну не мне Вам рассказывать, что троян может и не иметь своего
> личного "места прописки запуска"


Не может. Иначе не запустится. Вирусы и трояны не возникают автомагически в системе.


> А если я дам готовый инструмент для этого ?


А чем он будет отличаться от банального антивируса, который все то же самое делает ?

И потом, кто мешает вирусу делать все те же самые действия, направленные на самовосстановление ?

В заразе все равно наибольшую роль будет играть человеческий фактор, а не механизмы.


 
easy ©   (2008-03-14 23:28) [45]

<офтоп>
и почему Вы мне так Женю Бабич напоминаете, а?..
</офтоп>


 
Riply ©   (2008-03-14 23:30) [46]

> [44] Игорь Шевченко ©   (14.03.08 23:16)
> А чем он будет отличаться от банального антивируса, который все то же самое делает ?

"Банальный антивирус" находит и убивает "известных" троянов.
А какую-нибудь дрянь, написаную Федей Синерыловым, студентом первого курса
не найдет, ибо нет ее в базе. IMHO, конечно.
А так мы видим, что появился новый процесс в системе после посещения некого сайта.
Вот и будет возможность с ним попрощаться :)

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


 
Riply ©   (2008-03-14 23:32) [47]

> [45] easy ©   (14.03.08 23:28)
> и почему Вы мне так Женю Бабич напоминаете, а?..

А кто такая "Женя Бабич" ?
"В законе ? Почему не знаю ?" (с)
И кому адресован вопрос ?


 
easy ©   (2008-03-14 23:42) [48]

образ такой. добивающийся истины несмотря на.
но эт отдельный разговор..


 
Eraser ©   (2008-03-15 00:00) [49]

> [46] Riply ©   (14.03.08 23:30)


> А так мы видим, что появился новый процесс в системе после
> посещения некого сайта.

а если так и должно быть, а аннтивирь прибъет процесс.. производители процесса и юзер будут возмущаться )
вообще эврестическая защита - самая сложная область антивирусной защиты, imho. и самое сложное не обезвредить, а опознать вредителя.. в общем случае задача не решается без ИИ ))


 
Riply ©   (2008-03-15 00:05) [50]

>  [49] Eraser ©   (15.03.08 00:00)

Ну на эвристику я и не замахивалась...  Пока еще :)
Я имела ввиду, что пользователь сам увидел "лишнее" и решил прибить.


 
Германн ©   (2008-03-15 00:56) [51]

Да чего вы все так напали на Сашу? :)
А вдруг она своим любимым методом найдет панацею от вредоносных "чужих"? Ну или хотя бы свежую струю в борьбе с ними?


 
Игорь Шевченко ©   (2008-03-15 01:11) [52]


> Я имела ввиду, что пользователь сам увидел "лишнее" и решил
> прибить.


Ну эта..."Завершить процесс" в task Manager-е...


 
Германн ©   (2008-03-15 01:18) [53]


> Игорь Шевченко ©   (15.03.08 01:11) [52]
>
>
> > Я имела ввиду, что пользователь сам увидел "лишнее" и
> решил
> > прибить.
>
>
> Ну эта..."Завершить процесс" в task Manager-е...
>

Тут сложнее вопрос. Тут идея ещё "голая" и
> еще рано думать об извлечении конкретной пользы из голой
> теории

Пусть идея пока развивается и приобретает одёжки. Тем более, что читать её обсуждение полезнее да и интереснее, чем многое другое в "Прочее".


 
Игорь Шевченко ©   (2008-03-15 01:22) [54]

Германн ©   (15.03.08 01:18) [53]

Что может быть сложнее прибивания процесса в Task manager ? :)

Я к чему - вместо того, чтобы мучиться со всякими там записями в файл, его (файл) можно просто переименовать, благо система позволяет. В следующий раз не запустится.

Ну и эта...процесс прибить в Task manager

Я к чему критикую идею в плане "избавления от троянов" - трояны, они ж хитрые, пропишутся в svchost службой или в WinLogon notification dll - и что, EXEшники от Winlogon или Svchost будем нулями прописывать ?
Прописать-то можно, но только до первой перезагрузки и последующей переустановки.


 
Германн ©   (2008-03-15 01:39) [55]


> Игорь Шевченко ©   (15.03.08 01:22) [54]

Опять ты не учёл, что идея пока голая. И что это идея Riply ©.
Её методы ненаучного тыка преследуют несколько иные цели, чем выяснить что больше и что меньше.

> Я к чему критикую идею в плане "избавления от троянов" -
>  трояны, они ж хитрые, пропишутся в svchost службой или
> в WinLogon notification dll - и что, EXEшники от Winlogon
> или Svchost будем нулями прописывать ?
> Прописать-то можно, но только до первой перезагрузки и последующей
> переустановки.
>


 
Дмитрий С   (2008-03-15 03:02) [56]


> его (файл) можно просто переименовать, благо система позволяет.

Я предпочитаю запретить полный доступ для всех через безопасность NTFS.


> и самое сложное не обезвредить, а опознать вредителя.. в
> общем случае задача не решается без ИИ ))
>

Тем более при наличии любопытного товарища на компе по имени Riply :)))


 
Германн ©   (2008-03-15 03:42) [57]


> Дмитрий С   (15.03.08 03:02) [56]
>
>
> > его (файл) можно просто переименовать, благо система позволяет.
>
>
> Я предпочитаю запретить полный доступ для всех через безопасность
> NTFS.
>
>


Юзер - он и есть юзер! Что с него взять?


 
Riply ©   (2008-03-15 11:38) [58]

Все не совсем так, как вы трактуете :)

Читаем форумы по программированию и видим, что с завидным упорством задают вопрос типа:
"как запуститься с флехи когда ее втыкают в комп чтоб юзер не знал ?"
Не менее часто звучит такой вопрос:
"как зделать так, чтобы юзер не мог убить мой процесс, например через таскменеджер ?"
(была попытка сохранить орфографию вопросов в оригинале).

Ну и сложив два и два, можно прийти к выводу, что программа,
убивающая "неубиваемые" процессы может оказаться полезной,
особенно там где все обмениваются флешками :)


 
boriskb ©   (2008-03-15 12:18) [59]

> [58] Riply ©   (15.03.08 11:38)


Да брось ты доказывыать полезность!! :)
Тебе интересно?
Этого достаточно.



Страницы: 1 2 вся ветка

Текущий архив: 2008.04.27;
Скачать: CL | DM;

Наверх




Память: 0.64 MB
Время: 0.016 c
15-1205681847
Поп Гапон
2008-03-16 18:37
2008.04.27
У вас доступ есть?


8-1176154110
sx1
2007-04-10 01:28
2008.04.27
MP3 писалка


2-1206991679
NieL
2008-03-31 23:27
2008.04.27
OnShortCut


6-1185475224
MikeLevin
2007-07-26 22:40
2008.04.27
Разбор заголовка и пакетов.


15-1205317206
^-k2-^
2008-03-12 13:20
2008.04.27
Авторское право.