Заражение файла

Тема в разделе "WASM.BEGINNERS", создана пользователем temi4, 18 янв 2011.

  1. temi4

    temi4 New Member

    Публикаций:
    0
    Регистрация:
    17 янв 2011
    Сообщения:
    22
    Здравствуйте, простите за возможный, повтор в поиске не смог найти подходящей темы.

    Я читал статью про то, как пишутся вирусы под Вин32.

    Мне надо написать пошаговое (учебное) выполнение самого примитивного вируса, с возможностью отследить всех его шагов.
    Суть вируса встроить MassageBox с сообщением допустим: "привет здесь вирус".

    объясните более детально как происходит передача управления вирусу, те там высчитывается EIP? Что такое EIP вообще?

    А еще вопрос реально ли записать только часть кода вируса, допустим только как раз сам MessageBox. И еще обязательно ли использовать Асм или можно это провернуть на С++. Просто интересно?

    Спасибо за любую помощь.
     
  2. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Наверное есть смысл написать примитивний Hello World
    и познакомиться с самым примитивными дебагером.
    а потом поискать в гугле по запросу "samples of PE infection".
    Отключить (помолясь) антивирус и пройти дебагером по "находке"
    )))
     
  3. pashe4ka13

    pashe4ka13 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2010
    Сообщения:
    263
    EIP это 32-х разрядный регистр процессора. В нем содержится адрес исполняемой команды процессора. Изменять его можно командами передачи управления. Вирус можно написать даже на делфи. А путей заражения файла очень много.
     
  4. temi4

    temi4 New Member

    Публикаций:
    0
    Регистрация:
    17 янв 2011
    Сообщения:
    22
    _sheva740, спасибо)) за совет обязательно познакомлюсь с дебагерами

    pashe4ka13, спасибо, понял.

    Тогда если не сложно не общими словами можете объяснить следующее:
    Если мне надо встроить месседж бокс, то я должен встраивать только как раз часть которая просто его вызовет?
    Просто не могу понять, как именно встроить не весь код, а только нужный фрагмент, нужно ли вообще в таком случае страивать поиск kernel32? и как используется дельта смещение при внедрение или написание кода?
    Код (Text):
    1.    
    2. szTitle               db      "Title",0
    3. szMessage         db      "Message",0
    4. запихиваем в eax адресс MessageBox в памяти
    5. message_start label db:
    6.     push  0
    7.     push  offset szTitle
    8.     push  offset szMessage
    9.     push  0
    10.     call  eax
    11. message_end label db
    как после закрытия месседж бокс вернуть управление программе, в которую я ее встроил?

    Понимаю вопросы глупые, но все когда то чему-то учатся, а база у меня в данной области очень маленькая( Помогите если не составит труда разабраться.
     
  5. pashe4ka13

    pashe4ka13 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2010
    Сообщения:
    263
    На этом сайте есть раздел Статьи, в нем подраздел Вирусология, в нем есть статьи Billy Belcebu в переводе Aquila. Почитайте, а потом задавайте вопросы.
     
  6. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    temi4
    Так задача - внедрить код в открытый процесс?
     
  7. kernel16

    kernel16 Human Vl

    Публикаций:
    0
    Регистрация:
    29 окт 2010
    Сообщения:
    316
    Ну во первых в незаражённом файле ентри поинт указывает туда, где начинается программа. Вы же при заражении меняете либо её либо по этому адресу ставите jmp на свой вирус. Отсюда следует, что этот адрес нужно сохранить до заражения в первом случае и прыгнуть на него после меседжа. Во втором поставить на секцию кода атрибут для записи и после меседжа кинуть туда то, что должно быть на месте твоего jmp'а и перейти на сохранённый ентри поинт, т.е. в начало оригинальной программы.
     
  8. kernel16

    kernel16 Human Vl

    Публикаций:
    0
    Регистрация:
    29 окт 2010
    Сообщения:
    316
    А он про это что ли? ( просто пока я писал sheva740 ответил)
     
  9. temi4

    temi4 New Member

    Публикаций:
    0
    Регистрация:
    17 янв 2011
    Сообщения:
    22
    нет задача взять какой нибудь ехе файл, самый простой, допустим я его укажу сам руками. И внедрить в него МесседжБокс, но так чтобы файл в который я внедрю код, далее никого не заражал, а просто стал файлом с МесседжБоксом при его запуске. Но надо чтобы это было проделано программно.

    kernel16, спасибо.
     
  10. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Тут не понять. Как это чтоб никто не заражал?
     
  11. temi4

    temi4 New Member

    Публикаций:
    0
    Регистрация:
    17 янв 2011
    Сообщения:
    22
    _sheva740, те есть носитель вируса наш exe, который заражает того, кого мы укажем.
    а зараженные программы были просто модифицированы так, что при их запуске выводился МесседжБокс, а далее они работи как до заражения.

    Те в заражаемую программу надо записать не все тело вируса, а только кусок с выводом МесседжБокса
     
  12. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    temi4
    Немного о PE - читал?
    Что такое PE - секция знаешь?
    На С, masm, fasm?
     
  13. temi4

    temi4 New Member

    Публикаций:
    0
    Регистрация:
    17 янв 2011
    Сообщения:
    22
    _sheva740, читал понял что и где находиться порыл в hex редакторе. Знаю что такое секция.
    ковырял pe на С. также попробовал на Fasm. Но лучше на С.
     
  14. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Ну вот например
    [​IMG]
    На с, добавляет секцию.
    Писано (с) lolguy.
     
  15. kernel16

    kernel16 Human Vl

    Публикаций:
    0
    Регистрация:
    29 окт 2010
    Сообщения:
    316
    первое гляньте здесь там обсуждалось про текст в mz заголовке
    http://www.wasm.ru/forum/viewtopic.php?id=39744
    ещё можно при проверки на братство если в вашем коде от его начала набрать определёный текст типа: "Message box virus by temi4". Такое совпадения врят ли и строка орегинальная. можно проводить сравнение. И ещё: поаккуратнее -
    если файл защищён криптором\пакером, он может биться при распаковке. неплохобы при заражении проверять сигнатуры файлов или как-то кроме месейджа придётся ещё, наверное, элокить у виндовса память, копировать туда тело вируса и обрезать от памяти, выделеной под exe'шник, ваш вирус. С элокеной секции потом прыгать на программный код. отэлокеная память будет висеть на поцессе до его завершения

    надеюсь твоя понимать моя русския язык)
     
  16. kernel16

    kernel16 Human Vl

    Публикаций:
    0
    Регистрация:
    29 окт 2010
    Сообщения:
    316
    P.S. Прикол: месейд спрашивает: "Ты умный", ответы: "да" и "нет". отвечаешь "нет" - программа запускается, отвечаешь "да" - эксайт процесс. клёво!
     
  17. temi4

    temi4 New Member

    Публикаций:
    0
    Регистрация:
    17 янв 2011
    Сообщения:
    22
    Спасибо за помощь, сделал под тасмом, подскажите почему он вылетает после начала работы, не могу понять в отладчике, идет попытка записи в переменную расположенную в конце секции .code (переменная ProgEIP), но почему то при попытке записи в нее программа вылетает. В чем может быть дело?
     
  18. niakris

    niakris Дмитрий

    Публикаций:
    0
    Регистрация:
    3 сен 2008
    Сообщения:
    45
    Вот тебе простенькая реализация :)
    Тестировал на XP SP2

    P.S. kernel16 Хорошая идея :)
     
  19. 0xJace

    0xJace New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2010
    Сообщения:
    54
    temi4
    наверное потому, что секция кода не имеет прав для записи, лишь чтение/выполнение. Вариантов несколько:
    1. Указать при компиляции ключ, который задает характеристику секции кода, разрешающую запись.
    2. Поправить это дело в PEInsight например.
    3. Через тот же hex-редактор. Последние 4 байта секции в таблице секций PE заголовка - характеристика, которая указывает права доступа. Заменить последний байт характеристики на 0F0h
     
  20. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    temi4
    Читайте статьи на данном сайте, в разделе Вирусология. Там все есть, все разжевано по 100 раз.