как правильно написать методичку по взлому и зашите

Тема в разделе "WASM.HEAP", создана пользователем Алексей123, 11 окт 2006.

  1. Алексей123

    Алексей123 New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2006
    Сообщения:
    3
    Здравствуйте.Я сейчас занят написанием методички для проведения лабораторной работы
    в институте по взлому и защите программ.Я хотел бы построить лабораторную работу
    по принципу от простого к сложному т.е. сначала студентам предлагается некоторая защита
    (например проверка регистрационного кода),если они сами не смогут найти ключ или обойти
    проверку,то чуть ниже будет написано как это сделать.Потом предлагается защита чуть сложнее,
    ну и т.д.Т.К. у меня нет опыта в этой области я хотел бы услышать от опытных и знающих
    людей как это лучше сделать т.е. какие конкретно методы защиты и средства из обхода/взлома
    лучше использовавть(желательно привести примеры).Учитывая мой уровень знаний хотелось бы услышать
    подробный ответ и ссылки на конкретные примеры реализации т.е. что бы был пример
    защиты и рассматривался метод взлома.
    Заранее спасибо.
     
  2. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Алексей123
    Совсем нет? Не представляю себе как можно учить тому, чего сам не знаешь.

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

    Потом можно добавить в код грязи (обфускация), чтобы понять его суть было уже не так просто.

    Далее можно будет добавить парочку антиотладочных приёмов (уровня IsDebuggerPresent или тривиального int 3 + SEH). Студент научится обнаруживать и обходить подобные "детские" приёмчики.

    И только потом можно будет задействовать что-то уровня пакера или даже протектора, с привязкой к железу и т.д.
     
  3. Копатель

    Копатель МакС

    Публикаций:
    0
    Регистрация:
    9 окт 2006
    Сообщения:
    7
    Адрес:
    Днепр
    Алексей123
    Советую для начала внимательно присмотреться в сторону книг Криса Касперски ("Техника отладки программ без исходных кодов, фундаментальные основы хакерства" и т.п.) По поводу ссылок можно посмотреть тут:
    http://www.wasm.ru/forum/viewtopic.php?id=13991
    http://www.wasm.ru/forum/viewtopic.php?id=11030
    http://www.wasm.ru/forum/viewtopic.php?id=10699
     
  4. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    во до чего прогресс дошел!
    а на экзамене типа будете кейгены на время варить? ))
    принимали меня когда-то давным-давно в группу Orion - так я 3 штуки за 2 часа сдал...
     
  5. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    z0mailbox
    Не вирусологией же всё-таки занимаются. А подобные лабораторные должны научить их в будущем писать нормальные защиты для коммерческого софта, чтобы Орионам жизнь малиной не казалась :) Не одной же трекерской музыкой должны жить лунпуты :)
     
  6. Алексей123

    Алексей123 New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2006
    Сообщения:
    3
    Если не сложно напишите пожалуйста как это можно реализовать и как это потом обойти.

    Спасибо всем участникам форума за ответы.Очень приятно что глупые вопросы новичков не остаются без ответа.
     
  7. SnugForce

    SnugForce New Member

    Публикаций:
    0
    Регистрация:
    2 май 2005
    Сообщения:
    373
    Адрес:
    Из домУ
    Алексей123
    cracklab.ru статьи по исследованию и взлому
     
  8. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
  9. drmad

    drmad New Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    332
    Адрес:
    Russia
    Задавался тем же вопросом. Решал ту же проблему. Тоже писал методички. Пытался их "внедрить". В результате накопил массу аргументов в пользу "нэ трэба цього".

    Аргументы:
    1. "Методичкой" не отделаешься. Это нужно писать толстые тома. Причем они очень быстро устаревают и теряют актуальность.
    2. Нужна _очень_ специфическая предварительная подготовка студентов. Просто знание ассемблера или архитектуры операционной системы - абсолютно не катят.
    3. Для 99% студентов это тяжело, скучно и ненужно (даже тем, для кого профильная специализация - "комплексная защита инфы"). "Простые" программисты все будут либо писать базы данных, либо рисовать сайты. "Защищальщики" все уйдут в админы.
    4. Чтобы написать такое, желательно самому нехило владеть проблемной областью. Готовность есть?
    5. Чтобы "внедрить" такое, желательно обеспечить N (по количеству студентов) _уникальных_ лабораторных заданий. Если 2..3 - нормально. А если 25 ?
    6. Смешной, но важный аргумент. В Америке есть DMCA, в России недавно приняли какой-то новый закон об авторских правах. Пока ты флудишь на форумах или выкладываешь статьи в Интернет - это твое личное дело. Но преподаватель - официальное лицо. Посадить - не посадят, статьи в УК такой нет, но... "Срочно: в Урюпинске разоблачен профессор-хакер. Подонок заставлял наших детей заниматься незаконным взломом программного обеспечения" - не изволите-с? :dntknw:

    Если есть интерес, мыль drmad(гав!)dr.com, поделюсь наработками.
     
  10. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    drmad
    1 - 2. Отчасти согласен.

    У меня каждый семестр от 10 до 30 студентов проходят предмет схожей направленности (на лабораторных разбираем чужие крякмисы и пишем свои). 99% как раз проявляют первостепенный интерес ко взлому. Защитой, правда, интересуются только некоторые (не 1%, но около того :) А скучно и/или тяжело копаться в отладчике бывает только в очень редких случаях, которые не задерживаются у меня.

    Тут важно не переборщить с уровнем сложности!

    Естественно, нужно использовать легальные инструменты и ломать только крякмисы, а не коммерческие игры и т.п. софт.
     
  11. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    drmad, Quantum, а вы где преподаете =)
     
  12. drmad

    drmad New Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    332
    Адрес:
    Russia
    Quantum
    Ну, это как я понимаю, что-то вроде семинаров или спецкурсов, на которые магистранты сами записываются по желанию?

    n0name

    http://drmad.chat.ru/kostya.htm
     
  13. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    drmad
    Это обязательный курс для студентов Computer Science.

    n0name
    Как-то volodya забраковал фотографию на моей персональной страничке. Поэтому, ограничусь ссылкой на страничку факультета: http://www.unal.edu.co/dis/

    И ещё тут я работаю.
     
  14. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    Кстати тоже в СГАУ на ПМ обучаюсь;) Реальных безопасников не готовят... книжки - лучшие друзья.
     
  15. drmad

    drmad New Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    332
    Адрес:
    Russia
    asmfan

    Ну, у вас Сергеев открыл же специализацию "Комплексная защита информации" и чего-то там. На нее даже вроде бы прием был объявлен, абитура кипятком писяла. А потом вдруг выяснилось, что преподов под это дело нет и вообще никому заниматься не охота. И вроде бы какой-то первый фак решил это дело "подхватить". Трирдцать восемь раз "ха-ха".

    З.Ы. Подробностей не знаю, доходят только слухи.
     
  16. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    Сколько народа и все из Самары. Привет от СамГТУ.
     
  17. Алексей123

    Алексей123 New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2006
    Сообщения:
    3
    Полностью согласен.Вот и хотелось бы сделать что бы было просто и интресно.

    Ответьте пожалуйста на несколько простых вопросов:
    1)Как обойти/взломать функцию IsDebuggerPresent?
    2)Как зашифровать сообщение о удачной/ошибочной регистрации,что бы IDA вместо
    этих сообщений видела кракозяблы и как это можно обойти?
    3)Как сделать что бы вычислялся хэш от введеного пароля и этот хэш сравнивался с правильным и как это потом обойти?

    Спасибо.
     
  18. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    1. http://www.wasm.ru/print.php?article=wayround
    2. В начале ксоришь каким то ключом, потом записываешь получившиеся значение в программу, через 0x, для расшифровки опять ксоришь тем же ключом.
     
  19. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    2. Обойти: найти алгоритм дешифровки строки и применить его к строке, можно с помощью скрипта для IDA.
    3. md5. обойти: подправить условный прыжок.
     
  20. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Алексей123
    На C/C++ можно вместо
    Код (Text):
    1. char szMsg[] = "Invalid password";
    написать, например, так:
    Код (Text):
    1. #define XOR 0x55
    2. char szMsg[] = {
    3.    'I' ^ XOR,'n' ^ XOR,'v' ^ XOR,'a' ^ XOR,
    4.    'l' ^ XOR,'i' ^ XOR,'d' ^ XOR,'p' ^ XOR,
    5.    'a' ^ XOR,'s' ^ XOR,'s' ^ XOR,'w' ^ XOR,
    6.    'o' ^ XOR,'r' ^ XOR,'d' ^ XOR,XOR
    7. };
    Последний xor играет роль нулевого байта.

    Перед непосредственным использованием нужно строку "расшифровать":
    Код (Text):
    1. char *p_msg = szMsg;
    2.    while(*p_msg != XOR) *p_msg++ ^= XOR;
    3.    *p_msg = 0;
    Сразу после использования её желательно зашифровать обратно, иначе её могут заметить в дампе отладчика:
    Код (Text):
    1. p_msg = szMsg;
    2.    while(*p_msg) *p_msg++ ^= XOR;
    3.    *p_msg = XOR;
    Естественно, вместо XOR можно использовать что-нибудь более серьёзное (DES, ГОСТ, ...)Чтобы обойти подобное шифрование нужно искать в отладчике то место, где строка используется по каким-то косвенным признакам (bpx на MessageBoxA или что-то в этом роде), потом анализировать алгоритм расшифровки (обычный xor распознаётся очень легко). В любом случае, это всё значительно усложняет процесс реверсирования.