Easy-HackЛеонид «R0id» Стройков (stroikov@gameland.ru) Хакер, номер #114, стр. 114-038-1 Задача: провести обфускацию PHP-кодаРешение:В прошлом номере ][ мы уже говорили о такой проблеме, как запутывание собственного PHP-кода. С научной точки зрения, сей процесс называется обфускацией – приведением исходного текста исполняемого кода к виду, сохраняющему функциональность программы, но затрудняющему анализ и понимание алгоритмов ее работы. Сегодня мы решим задачу, пользуясь утилой от хакера DX под названием PHP Obfuscator. Скрипт написан полностью на PHP и предоставляется автором свободно и в открытом виде. Коротко ознакомлю тебя с основными возможностями обфускатора:
Как видишь, достоинств у тулзы намного больше, чем недостатков. Теперь рассмотрим, собственно, алгоритм наших действий, направленных на обфускацию нужного PHP-кода:
Скрипт имеет множество настроек и опций, посему процесс обфускации стал еще приятнее и удобнее :). Решение: Думаю, ты не раз задавался целью поиска открытых веб-камер в Сети. Не спорю, наблюдать за людьми/событиями, происходящими в другом конце Земли (или офиса :)), довольно забавно. Удобнее всего осуществлять поиск с помощью любимого Гугла. При составлении запросов тебе поможет знаменитый ресурс http://johnny.ihackstuff.com. Наиболее жизнеспособные запросы я приведу в качестве примера: inurl:"ViewerFrame?Mode=" inurl:netw_tcp.shtml intitle:"supervisioncam protocol" inurl:CgiStart?page=Single inurl:indexFrame.shtml?newstyle=Quad intitle:liveapplet inurl:LvAppl inurl:/showcam.php?camid inurl:video.cgi?resolution= inurl:image?cachebust= intitle:"Live View / - AXIS" inurl:view/view.shtml intext:"MOBOTIX M1" intext:"Open Menu" intitle:snc-rz30 inurl:home/ inurl:"MultiCameraFrame?Mode=" intitle:"EvoCam" inurl:"webcam.html?quot; intitle:"Live NetSnap Cam-Server feed" intitle:"Live View / - AXIS 206M" intitle:"Live View / - AXIS 206W" intitle:"Live View / - AXIS 210" inurl:indexFrame.shtml Axis inurl:"ViewerFrame?Mode=" inurl:"MultiCameraFrame?Mode=Motion" intitle:start inurl:cgistart intitle:"WJ-NT104 Main Page" intext:"MOBOTIX M1" intext:"Open Menu" intext:"MOBOTIX M10" intext:"Open Menu" intext:"MOBOTIX D10" intext:"Open Menu" intitle:snc-z20 inurl:home/ intitle:snc-cs3 inurl:home/ intitle:snc-rz30 inurl:home/ intitle:"sony network camera snc-p1" intitle:"sony network camera snc-m1" site:.viewnetcam.com -www.viewnetcam.com intitle:"Toshiba Network Camera" user login intitle:"netcam live image" intitle:"i-Catcher Console - Web Monitor" inurl:/home/home intitle:flexwatch intext:"Copyright by Seyeon TECH Co" intitle:"snc-rz30 home" intitle: Network camera Как видишь, каждый из запросов ориентирован на конкретный тип веб-камер, поэтому ты запросто можешь сконструировать несколько собственных. Алгоритм наших действий достаточно прост:
Чтобы не быть голословным, оставлю тебе на растерзание два рабочих линка на веб-камы: http://65.254.62.79/CgiStart?page=Single&Language=0 http://84.45.154.218:2220/CgiStart?page=Single&Language=0 Но учти, подглядывать – нехорошо. Задача: максимально быстро сбрутить md5-хэш, не используя ranbow-таблиц Решение: Как ты знаешь, большинство утил для брута мд5-хэшей довольно медлительны. Принцип их действия основывается на использовании мощностей процессора твоего компа. Однако, утила CUDA в своих «вычислениях» юзает видеокарту Nvidia (а точнее, ее мультипроцессоры, коих в последних версиях около 16). Результат подобного подхода налицо – сумасшедшая скорость перебора паролей. Рассмотрим все необходимые действия:
nvCUDA.exe -f=mypas.txt -s=7 -e=7 – где:
Предварительная атака 2..5 символов (0x21..0x7f) Командная строка: // перебирает 0..9,a..z nvCUDA.exe -f=mypas.txt -s=7 -e=7
Скорость перебора составляет на заявленной видеокарте порядка 105 mln pas/sec, так что – дерзай. Задача: получить доступ к файлам на компе в игровом клубеРешение:Сегодня каждый уважающий себя клуб либо интернет-кафе управляются при помощи специальной проги. В обязанности ее клиентской части может входить контроль интернет-трафика, времени пользования, ограничение управления компом и т.п. Нас будет интересовать доступ к файлам. Следующий метод будет работать во многих клубных системах – рассмотрим его на примере ClubControl (www.clubcontrol.ru). Если тестим в клубе, первые два пункта, естественно, можем пропустить.
У данного подхода есть один большой минус: несмотря на свою популярность, Winamp'a может не оказаться в игровом клубе. Плюсами являются универсальность по отношению к клубным прогам и возможность экспериментировать: получаем через прогу, установленную на компе игрока, доступ к explorer'у, и пытаемся обойти ограничение. Хочется отметить, что все ваши манипуляции при желании легко просматриваются (а возможно, логируются) с админского компа клуба, поэтому при выборе музыки стоит поторопиться :). Задача: обойти StarForce для запуска игры с образаРешение:Старфорс – всем известная система защиты дисков, основанная на их физическом строении.
Во избежание недоразумений: информация предоставлена только для тех, кто имеет оригинальный диск и просто ленится совать его в CD-ROM. Задача: изменить параметры окна запускаемого приложения из-под отладчикаРешение:Для чего это может понадобиться? Во-первых, иногда бывает необходимо изменить размер окна, которое не «растягивается» стандартными методами. Конечно, в таком случае можно использовать какую-либо утилиту, которая специально предназначена для манипуляции с окнами путем посылки им системных сообщений, но это – не путь настоящего крэкера :). Мы используем более изощренный метод, причем его можно применять не только для манипуляции с окнами, но и для задач сугубо «системного» толка. Ведь метод этот – подмена данных, передаваемых API-функции. Первое, что нам требуется узнать, – какая API-функция создает окно. Лезем в справочник и получаем ответ: CreateWindowExW (есть и другие функции, но будем считать, что мы их откинули, действуя методом исключения). После того, как мы это выяснили, остается одно – поставить точки останова на все вызовы данной функции, дождаться инициализации (а, следовательно, и остановки на нужном месте) программы под отладчиком, исследовать передаваемые параметры. Затем найти среди них те, что отвечают за размеры окна и подменить их либо в стеке, либо непосредственно по адресу, откуда происходит извлечение этого параметра. Рассмотрим этот несложный механизм на примере стандартного приложения notepad.exe, которое мы столько раз терзали.
0100466B PUSH DWORD PTR DS:[1009A70];Height = 139 (313.) 01004671 MOV ESI,notepad.01001394 01004676 PUSH DWORD PTR DS:[1009A74];Width = 39A (922.) 0100467C PUSH DWORD PTR DS:[1009A7C];Y = CA (202.) 01004682 PUSH DWORD PTR DS:[1009A78];X = 52 (82.) 01004688 PUSH 0CF0000 ; стилевые характеристики 0100468D PUSH ESI; имя окна 0100468E PUSH notepad.01009020;Class = "Notepad" 01004693 PUSH EBX; стилевые характеристики 01004694 CALL DWORD PTR DS:[<&USER32.CreateWindowExW>]; вызов функции Как ты можешь догадаться, по адресам 0100466B и 01004676 располагаются инструкции, выполняющие помещение в стек значений, которыми и определяется, соответственно, высота и ширина создаваемого окна. Ставим точку останова по адресу 0100466B и перезапускаем программу под отладчиком.
Обрати внимание, что API-функция CreateWindowExA приняла новые данные, результатом чего явилось изменение вертикальных размеров окна «Блокнота». Что и требовалось получить! Задача: замаскировать вызов API-функции, заменив его более сложным, неявным, вызовомРешение:Думаю, ты сразу понял, для чего необходима маскировка. Конечно, единственная ее цель – затруднить задачу реверсера. Здесь есть где разгуляться фантазии кодера! Можно вызывать функцию через серию переходов, можно вычислять адрес функции путем математических преобразований, да мало ли что еще можно придумать :). Чем необычнее подход, тем больше вероятность, что реверсер отступится от защищаемой программы. Для начала рассмотрим пример маскировки вызова с заменой конкретного адреса функции вычисляемым значением.
Теперь, когда ты знаешь теорию, можно применить этот несложный алгоритм на примере изменения простого PE-файла «ex.exe», который вызывает функцию MessageBoxA, под отладчиком OllyDbg. О том, как это сделать, ты можешь прочитать на нашем DVD или посмотреть мой видеоурок. |