Cracking в Linux

Discussion in 'Реверсинг' started by Un_0, 19 Jul 2007.

  1. Un_0

    Un_0 Elder - Старейшина

    Joined:
    11 Apr 2007
    Messages:
    43
    Likes Received:
    42
    Reputations:
    17
    В последнее время наблюдается рост коммерческих приложений в Linux. Таким образом, возникает потребность в реинженеринге защитных механизмов в новых условиях. Крекеры, пришедшие с Windows не находят удобных инструментов, да и «родные» не знают о многих из них.

    В данном обзоре я постараюсь восполнить информацию об инструментах крекера в Linux. Статья не претендует на полноту, эксклюзивность и ориентирована на новичков. (поиск юзал, такой темы не нашел)

    Анализаторы файлов
    Прежде чем ломать программу, необходимо проанализировать ее. Для этих целей служат следующие программы:

    file
    Показывает информацию о файле: тип, архитектуру, факт использования разделяемых библиотек, была ли удалена символьная информация командой strip.

    nm
    Выводит таблицу внешних символов. Показывает имена переменных, функций, метки. (Это справедливо только для файлов, не обработанных командой strip)

    size
    Выводит размеры всех секций программы (при указании флага -А).

    strings
    Выводит все текстовые строки, содержащиеся в файле. Бывает очень полезна при поиске регистрационных кодов, хранящихся в открытом виде. (на практике все еще попадается такая слабая защита).

    ldd
    Показывает зависимости программы от динамических библиотек. Программистам пользы больше, чем крекерам.

    [​IMG]

    readelf
    Исследует файл. Выводит намного больше информации, чем команда file.

    Показывает тип файла, архитектуру, точку входа и другие не менее важные для крекера данные.

    [​IMG]

    Дизассемблеры
    Objdump
    Больше, чем просто дизассемблер.

    Показывает заголовки программы, секции файла (флаг -х)
    Дизассемблирует файл (флаг -D)
    Показывает содержимое секций в шестнадцатеричном виде (флаг -s)
    и т.д.

    Замечание. При дизассемблировании файла, лучше скидывать листинг в файл: objdump -D > ./file, чтобы хоть как-то уменьшить вероятность вывиха обеих глаз.

    Dissy
    «Обертка» для утилит nm, readelf и objdump. (из-за этого файлы без символьной информации не анализируются)

    Имеет графический интерфейс, работать намного приятнее, чем с objdump. Главное окно разделено на две части, в верхней – имена функций, в нижней – их дизассемблерный листинг. Программа показывает переходы, осуществляет навигацию по ним и по вызовам процедур.

    [​IMG]

    Сравнение objdump и Dissy:

    [​IMG]

    Lida (Linux Interactive DisAssembler)

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

    LDasm (Linux Disassembler)

    Еще одна оболочка для objdump/binutils, написанная на Perl/Tk. По словам автора, "to imitate the look'n'feel of W32Dasm" Так что не мешает ознакомиться.
    К сожалению, не обновлялся с декабря 2002 года.

    Bastard
    Дизассемблер под Linux&FreeBSD, понимаетELF/PE/bin-форматы.

    Шестнадцатеричные редакторы
    Отобразить в шестнадцатеричном виде файлы могут утилиты objdump, hexdump, od.

    KHexEdit
    Входит в среду KDE. Имеет графический интерфейс.

    Bless
    Написанный на моно шестнадцатеричный редактор. Поддерживает вкладки.

    Biew
    Консольный редактор. Позволяет просматривать и редактировать файлы в текстовом, шестнадцатеричном, ассемблерном виде.

    HTE
    Также консольный редактор, но функционально на голову выше прочих. Дизассемблирует файлы, поддерживает перекрестные ссылки, указывает имена функций и пр.

    В Linux достаточно много шестнадцатеричных редакторов, я указал лишь самые интересные (на мой взгляд).

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

    Я нашел только два достойных дампера.

    PD by ilo
    Опубликованный в журнале Phrack. Мне так и не удалось получить запускаемый дамп с помощью этой программы.

    Process Dumper (pd)
    Программа довольно неплохо снимает дамп с запущенных процессов.
    Запуск: pd -p pid > dump

    Далее нужно обработать файл напильником. Например, в KHexEdit

    [​IMG]

    Удаляем символьный мусор до заголовка.

    Таким образом мне получилось сделать запускающийся дамп с программой, запакованной UPX.

    Отладчики
    Тяжелая артиллерия:
    gdb и все, все, все (графические оболочки)
    Довольно мощный отладчик, но при работе можно вывихнуть руки (А без рук и без глаз какой же вы крекер?). Работать с ним довольно сложно, но можно.

    Вердикт: для гуру.

    EDB
    Сравнительно недавно появился отладчик, напоминающий OllyDbg, только для Linux. Причем он написан с нуля, а не является оберткой для других утилит.

    Окно разделено на 4 части: дизассемблер, стек, дамп памяти со вкладками, содержание регистров.

    В работе этот отладчик очень удобен и интуитивно понятен. Программа позволяет ставить точки прерывания, искать строки, переходы к регистрам, и имеет очень много других полезных функций.

    [​IMG]

    Linice
    Неофициальный порт Softice под Linux. При установке требует древнее ядро и квалифицированного шамана с бубном. (Даже не стал париться)

    В заключение несколько скринов с примерами работы:

    Поиск по строкам утилитой strings:

    [​IMG]


    Отладка в EDB, сравнение паролей:

    [​IMG]

    Исследование файла при помощи nm & hte:

    [​IMG]

    Также не помешает исследовать виртуальную файловую систему /proc для взлома программ.

    ================

    LINKS:
    PD by ilo: http://www.reversing.org
    Process Dumper: http://www.trapkit.de/research/forensic/pd/
    Dissy: http://www.ipd.bth.se/ska/sim_home/dissy.html
    EDB: http://www.codef00.com
    Linice: www.linice.com
    HTE: www.hte.sourceforge.net
    LDasm: http://www.feedface.com/projects/ldasm.html
    Lida: http://lida.sourceforge.net/
    Bastard: http://bastard.sourceforge.net/

    Другие утилиты входят в поставку стандартного дистрибутива.
     
    #1 Un_0, 19 Jul 2007
    Last edited: 23 Jul 2007
    13 people like this.
  2. 0x0c0de

    0x0c0de Elder - Старейшина

    Joined:
    25 May 2007
    Messages:
    441
    Likes Received:
    395
    Reputations:
    297
    Итак, вновь поднимаю эту тему, так как материал в ней представленный представляет ценность и не заслуживает быть затерянным в ряду всех остальных тем. Оффтоп потерт - теперь только дополнения к обзору, ссылки на мануалы etc.
    Дополняю

    Hex editors

    HexCurse
    hexedit
    shed

    http://www.sourcefiles.org/Editors/Hex/
     
    #2 0x0c0de, 30 Oct 2007
    Last edited: 8 Jul 2008
  3. Ky3bMu4

    Ky3bMu4 Elder - Старейшина

    Joined:
    3 Feb 2007
    Messages:
    490
    Likes Received:
    285
    Reputations:
    42
    Debuggers:​


    Port: acpicatools
    Path: /usr/ports/devel/acpicatools
    Info: Some utilities for Intel ACPICA (Debugger, ASL Compiler and etc.)
    WWW: http://developer.intel.com/technology/iapc/acpi/index.htm

    Port: ald
    Path: /usr/ports/devel/ald
    Info: Debugger for assembly level programs
    WWW: http://ald.sourceforge.net

    Port: cgdb
    Path: /usr/ports/devel/cgdb
    Info: A curses-based interface to the GNU Debugger
    WWW: http://cgdb.sourceforge.net/

    Port: ddd
    Path: /usr/ports/devel/ddd
    Info: Data Display Debugger -- a common graphical front-end for GDB/DBX/XDB
    WWW: http://www.gnu.org/software/ddd/

    Port: kodos
    Path: /usr/ports/devel/kodos
    Info: The Python Regular Expression Debugger
    WWW: http://kodos.sourceforge.net/

    Port: ups
    Path: /usr/ports/devel/ups-debug
    Info: X based source level debugger for C, C++, and Fortran
    WWW: http://ups.sourceforge.net/

    Port: bfe2
    Path: /usr/ports/emulators/bfe
    Info: X11 GUI for the bochs debugger (revision 2)
    WWW: http://bfe.sourceforge.net/
     
    1 person likes this.
  4. Un_0

    Un_0 Elder - Старейшина

    Joined:
    11 Apr 2007
    Messages:
    43
    Likes Received:
    42
    Reputations:
    17
    Дополняю)

    http://www.cs.utexas.edu/~ygz/378-03S/IBM-debug.pdf - статья про отладку. Ничего так, есть описание дебаггеров. На английском.

    http://www.opennet.ru/prog/sml/28.shtml - много интересного по отладке и оценке кода, хотя многое уже имеется в этой теме.

    http://www.jbixbe.com/ - ява-отладчик. Платный, но вроде триал есть)
     
  5. Ky3bMu4

    Ky3bMu4 Elder - Старейшина

    Joined:
    3 Feb 2007
    Messages:
    490
    Likes Received:
    285
    Reputations:
    42
    mitya.pp.ru/gdb/gdb_toc.html - офф ман про gdb переведённый на русский
    linuxforum.ru/index.php?showtopic=69439 - информация к размышлению
     
  6. TruPAC

    TruPAC Elder - Старейшина

    Joined:
    20 Dec 2007
    Messages:
    29
    Likes Received:
    6
    Reputations:
    0
    strace - trace system calls and signals
     
    #6 TruPAC, 27 May 2009
    Last edited: 27 May 2009
Loading...