среда, 27 июня 2012 г.


Азы хака. Подборка инструментов.


Хакерами не рождаются!
Ну что, приятель, задвинул на слабые попытки хакнуть банкомат соседского сбербанка? А зря! Ты что, думал, так всё сразу получится, подойдешь к нему с молотком и зубилом, и он тебе сразу все бабки выложит на блюдечке с голубой каемочкой? Ни фига! Хаку надо учиться, это искусство, это как на скейтборде кататься: вроде на доске, в принципе, любой стоять умеет, а вот с крыши прыгнуть на четыре колеса и шею не сломать - это децил сложнее. Поэтому готовься - если ты ещё не крутой хацкер, но очень хочешь им быть, мне есть что тебе рассказать. Но начну-то я, естественно, с азов - не со взлома банкоматов, а, к примеру, с обзора несложных, но настоящих софтверных инструментов, которыми пользуются хакеры и кракеры, чтобы юзать просроченные `шаровары` (shareware) или под шумок утянутую из приватных каталогов известной фирмы утилитку. Главное, начать, как любил говаривать Билли Гейтс в начале своей карьеры.

Во-первых, любому хакеру или тому, кто хочет им стать, надобно знать ассемблер. Со знанием одного бейсика-васика и второго трубопоскакаля далеко не уедешь, ведь рассматривать содержимое программ, исследовать их приходится преимущественно в совершенно `сыром` виде - машинных кодах и ассемблере. Есть у меня один знакомый, так тот вообще может декодировать команды из набора байтов в файле прямо в уме. Тут главное - немного терпения. Опыт придет со временем, и все будет на все сто. А то и на двести.

Вспомогательные утилиты

Итак, инструменты. Конечно, в первую очередь это программы, позволяющие определить, что именно перед тобой - картинка с длинными ногами и большими сиськами или запакованный ехе-файл. Некоторые детекторы позволяют определить тип файла, если он был запакован (отдельную статью о паковке exe-файлов смотри в следующих номерах журнала). И даже - попытаться снять защиту. Рекомендую ExeInfo by Adam Lojewski - весьма полезная вещь для анализа исполняемых файлов. Для удобства ее интерфейс пропатчили (спасибо STI) на предмет русских названий меню и надписей - от этого она только увеличила свою привлекательность для новичков и тех, кто ею пользовался до этого. Отвлекусь на пару слов, отхлебну пивка и скажу про Compare2Unlimited by Professor Nimnull. После того как дело сделано и в программу внесены изменения, неплохо бывает получить список измененных байтов. Выписывать вручную - слишком утомительно, и наверное, поэтому существует большое количество программ для автоматизации этой процедуры. Но C2U - одна из лучших. А для создания *.xck файлов хочется отметить XCKMaker 2.0 by Spider.

Hex-редакторы

Одним из основных инструментов кул хацкера (сразу после пива) является hex-редактор. Обычно, такая прога совмещает в себе возможности просмотра-редактирования файлов в шестнадцатиричном/текстовом (ASCII) формате и некоторые дополнительные фичи. Некоторые особо навороченные позволяют декодировать байты файла в инструкции ассемблера и даже писать на ассемблере и менять инструкции, что называется, не отходя от кассы. Здесь можно отметить, пожалуй, только две программы, сохраняющие популярность в течение уже ооочень большого периода времени. Программы хорошие и, что немаловажно в совдепии, бесплатные. Хотя, как говорится, для хакера из Багдада нет преграды... Но что-то же должно быть бесплатным! `Не все нужно ломать, надо же на чем-то и сидеть`, - как сказал один мой знакомый. Одна из программ называется Hacker`s View (HIEW) by SEИ.
Несмотря на кажущуюся простоту HIEW, я уже не мыслю работы на своём замечательном пивзаводе без неё. Кроме того что она сама управляет пивоваренными котлами и подвальными холодильниками, она имеет полнофункциональную поддержку pe/ne и кучи других форматов файлов и такие очень удобные фичи, как поиск инструкции по маске (например, хочу я найти присвоения регистру AX, тогда указываю: mov ax,? - и все - дело в шляпе. Будут найдены и mov ax,1, и mov ax,dx и т.д.). Все это позволяет мне сказать, что это лучший редактор. Как его (да и остальной софт, о котором я рассказываю) использовать, я буду говорить непосредственно перед тем, как буду этот софт юзать. Второй HEX-редактор - QView by ABC Product. Внешне - смотрится гораздо лучше, чем HIEW. Но вот с содержанием до HIEW ему далеко, хотя новые версии наверняка восполнят этот пробел. Хотя, вообще-то, редактор не обязательно должен быть красивым, как унитаз - скорее, простым, и практичным, как туалетная бумага.

Отладчики

Третий тип инструментов взлома - нет, не фомки и не лом. Отладчики. Наверняка все, кто хоть как-то знаком с хаком (хотя бы и понаслышке), знают об их существовании и о том, как сильно они помогают кракерам в их тяжелой работе. Они есть под все платформы и операционные системы. Изначально они были призваны облегчить жизнь обычным кодерам-программистам. Но потом стали появляться кодеры, которые использовали отладчики не только на своих программах, но и на программах коллег по работе/учебе. Ведь всегда интересно, что же там эти ламеры наваяли? А некоторые считают, что гораздо круче поковыряться в уже откомпиленном ехе-шнике и сделать такое у себя, подкрутив там и подправив здесь, чем корпеть над этим самому. Хотя я с ними не согласен. Ладно - вернемся к нашим баранам, то есть отладчикам. Самым известным `фирменным` отладчиком был и остается Soft-Ice by NuMega Corp. Его реализации есть как для DOS, так и для Windows 9x/NT. При этом он дружит практически со всеми extender`ами вроде EMM386 и QEMM. Установить его, научиться пользоваться им и всеми его крутыми фичами - немалый шаг к успеху в нашем скромном предприятии, как сказал бы AtH. Очень мощное средство. Собственно говоря, именно его я использую для взлома всех программ для Windows и почти всех для DOS. Однако кроме него есть еще довольно много очень приятных в использовании трасеров-дебагеров, как их называют некоторые кракеры. Например, очень даже неплох DeGlucker. Сделан он ручками Gorokhov и... после того, как они его бросили, им занялся CrazyMax. Правда, у него есть некоторые минусы (например, необходимо загружать операционку без extender`ов, потому что DG работает только в V86 режиме и ни в каком другом), да и свежую версию, свободную от глюков, мы не дождемся - авторы его бросили. Правда, перед окончательным `хэппи-эндом` проекта CrazyMax выставил на всеобщее обозрение его сорцы (исходники, стало быть). И есть надежда, что найдутся пиплы с большим количеством свободного времени, ума и пивы - довести это дело до ума. Говоря о дебагерах в приложении к хаку, я почти ничего не могу сказать о таких вещах, как Turbo Debugger фирмы Borland и CodeView от `Мелкомягких товарищей партии`. Эти отладчики помогут отладить базу данных для родного предприятия в случае, если имеются исходники к ней, но никак не помогут понять устройство какой-нибудь библиотеки хитрой программы с клевым предложением `REGISTER!` в меню. Хотя я, например, использую Turbo Debugger, чтобы отлаживать вирии. Еще не могу обойти вниманием такой отладчик, как AXE-Hack. В отличие от DG (обладая более расширенными свойствами и сервис-фичами), он позволяет работать прямо в окне DOS под Windows и эмулирует (то есть дает программе подумать, что он что-то делает, а на самом деле - филонит по страшному) часть команд процессора, что иногда становится серьезным подспорьем в борьбе с какой-нибудь супер-пупер заSHITой. Вообще, не фирменных дебагеров довольно много. Но рассказывать обо всех не имеет смысла. Для хака вполне хватит и тех, о которых я уже рассказал.
Дизассемблеры

В некоторых случаях одними отладчиками не обойтись. И тогда на арену выходят дизассемблеры. Но и здесь есть свои подводные камни. Такие дизассемблеры, как Sourcer, например, просто декодируют команды и выискивают ссылки на уже определенные участки кода. Немного изобретательности - и Sourcer выдаст на-гора километры ненужных file.lst, содержащих полностью перечисленные байты файла, но ни строчки по существу. И все - больше он практически ни на что не способен. Зато с его помощью можно получить вполне приятный дамп BIOS. А ещё компактом, на котором этот дизазм записан, можно в кого-нибудь кинуть. Иными словами, ему применение почти всегда найдется.

Другое дело (в хорошем смысле этого слова) IDA - Interactive Disassembler by Ilfak Guilfanov. Автор этого чудесного дизассемблера сделал упор на работу, прежде всего на взаимодействие с пользователем (или, по-нашему, хакером). IDA не выдает текстовый файлик мегабайт этак на 20, в отличие от Sourcer`а.

Нет - IDA есть приятное междумордие (interface) для юзверя и позволяет просматривать и помечать просмотренные участки кода именами/кличками, чтобы их потом можно было легко найти. Плюс возможность писать комментарии везде, где только это радует глаз! И возможность писать свои процедуры анализа на встроенном макроязыке! Такой подход позволяет исследователю восполнить все пробелы `тупой железячки`. И это далеко не все возможности. Дело в том, что IDA поставляется вместе с набором специальных плагинов - для автоматического распознавания. Например, есть программа, написанная на Borland C++ 5.0. Если IDA определит (а она определит, то есть не если - когда), что эта прога скомпилена именно на BC, он подгрузит соответствующий плагин и сможет распознать и обозначать стандартные функции (например, exit и biosdisk на экране будут не просто асмовым листингом, а именно exit и biosdisk), что уменьшает время, необходимое для поиска `лишнего` кода. В общем, IDA намного опередила всех своих коллег по жанру. Очень рекомендую.
INT-Мониторы

INT-Монитор - программа для отслеживания и записи всех (или только указанных) прерываний, вызываемых подопытной программой. Для DOS это - INTController и INTIndicator by Maxim Chirkov. Это небольшие резиденты, которые висят на нужных прерываниях и следят за частотой их вызова. А для win32 существует прекрасная вещь - APISPY32 by Yariv Kaplan. Правда, чтобы `шпиён` ловил вызовы какой-нибудь апишной функции, ему необходимо в специальном файле прописать имя этой функции и тип ее аргументов - несколько утомительно, и если используются функции из собственных библиотек, поставляемых вместе с программой, - ничего уже не сделаешь. Но это единственный известный мне вариант подобной утилиты под win32. Пригодится.

Унпакеры-распаковщики (unpackers)

Предназначены для снятия так называемых `навесных` защит. Например, есть уже готовая программа, и лень лезть и встраивать защиту. Или хочется, чтобы она занимала меньше места на диске. Тогда берется программа пакер-паковщик (packer), и `натравливается` на бедный

ехе-шник. Паковщик упаковывает код проги и пишет свой распаковщик в начало, а потом дописывает все остальное в конец. Когда программа вызывается, то сначала отработает распаковщик, затем уже будет выполняться запакованная программа. В результате, такую программу невозможно пропатчить, не распаковывая, так как нужные байты, как правило, запакованы-шифрованы, и найти их не удается. Но можно распаковать весь файл и исследовать/патчить его отдельно. А потом при желании запаковать (тем же или другим паковщиком - для экономии availspace на hdd). Для тех, кто на бронепоезде - именно этим (распаковкой) и занимаются унпакеры. Существуют унпакеры как универсальные (CUP386[DOS], ProcDump[WIN] - лучшие из них, на мой взгляд), так и `заточенные` под конкретный паковщик. Из вторых могу посоветовать Universal Unpacker Package by Predator 666 - сборник унпакеров для самых популярных пакеров + универсальный унпакер. Из первых - все же лучше CUP386; единственное, что придется делать самому - так это мучительно вспоминать, `куда же он делся? после вчерашнего...`, а остальное он сделает сам (если найдешь, конечно). Для Win32 лидером пока что остается ProcDump. Это по совместительству унпакер и дампер. Есть хорошие фичи, вроде примитивных скриптов, на которых можно описать принцип действий унпакера для конкретного паковщика.

Вродетогопослесловиеиливродетого

Вот такое вот оно - хакерское дело. И софта в нем занято немерено, и юзать его ещё научиться надо. Но ты - ты научишься обязательно. Как говорится, у страха глаза велики, зато енг маленький. Только начнешь - всё получится и всё будет в порядке. Ах да! Где софт взять? Чуть ни забыл. Почти все, о чем здесь шла речь, можно слить (или найти ссылку, а потом слить) с http://i.am/wwh, http://dore.on.ru, http://www.idapro.com, www.internals.com.

Ну всё, дерзай, а то пиво стынет. Удачи. Как знать, может ты - потенциальный избранный? Время покажет.

Комментариев нет:

Отправить комментарий