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

FAQ

Маг (icq 884888, http://wap-chat.ru)


Q: Слышал, что прямо в Интернете можно заказывать настоящие кредитки. Не знаешь, каким образом и где?

A: Насчет кредиток не знаю, но вот дебетовые и просто ATM карты заказать прямиком из Интернета вполне реально. Если ты работаешь в SEO-партнерках вроде Glavmed.Com, то наверняка знаешь, что саппорт может бесплатно предоставить тебе карты EPassporte (Visa) и Payoneer (MasterCard). В иных случаях легче будет воспользоваться сервисом всем известных WebMoney - http://cards.webmoney.ru.

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

  1. WebMoney Banquecard (предназначена для оперативного снятия средств с WMZ-кошельков системы в банкоматах, подключенных к АТМ-сети (имеющих логотип Star или Plus);
  2. WebMoney Payoneer (предназначена для оперативного снятия средств с WMZ-кошельков системы в банкоматах, подключенных к АТМ-сети (имеющих логотип Mastercard);
  3. WebMoney Virtual (предназначена для оплаты покупок (товаров, услуг, лицевых счетов) в Сети).

Лично я пользуюсь Banquecard для обналичивания WMZ, а Payoneer для оплаты любых оффлайновых покупок.

Q: Ддосят мой выделенный сервер, не знаешь какого-либо простого решения для защиты от этой мерзости?

A: Простого решения не существует. В случае сильного ддоса тебе поможет лишь комплекс программно-аппаратных средств. Зато от слабого и среднего ддоса сможет помочь простой файрвол. В случае винды с этим вполне справится Agnitum Outpost Firewall, а в случае никсов, конечно же, iptables :)

А вот и простой скриптик, который сможет на краткое время облегчить твою нелегкую участь (для никсов, вставлять в страницу, на которую идет мусорный трафик):

<?php
$dir = '/home/your-site.com/www/';
$antibot_cookie = md5('random phrase'.getenv('HTTP_USER_AGENT'));
$ban_file = 'banned.txt';

if(strstr(@file_get_contents($dir.$ban_file), $_SERVER['REMOTE_ADDR']))
exit;

$f = fopen($dir . $_SERVER["REMOTE_ADDR"], "a");
fwrite($f, "string\n");
fclose($f);
$counter = @file($dir . $_SERVER["REMOTE_ADDR"]);

if (!isset($_COOKIE['ddos']))
setcookie('ddos', $antibot_cookie, time() + 3600*24*7*356);
elseif ($_COOKIE['ddos'] !== $antibot_cookie || count($counter) > 10)
{
system("iptables -A INPUT -s ".$_SERVER["REMOTE_ADDR"]." -j DROP");
$f = fopen($dir.$ban_file, "a");
fwrite($f, $_SERVER['REMOTE_ADDR'].'|');
fclose($f);
header('Location: http://'.gethostbyaddr($_SERVER["REMOTE_ADDR"]));
exit;
}
?>

Q: Всем хорош Google Analytics, но мне не нравится, что абсолютно все данные о посетителях моего сайта сливаются всевидящему и всемогущему Гуглу. Не подскажешь бесплатную и не менее функциональную альтернативу данному сервису?

A: Советую попробовать халявный php-скрипт статистики под названием Piwik (http://piwik.org, проект развился из известного PhpMyVisits). Помимо того, что статистика будет работать на твоем собственном сервере (и, соответственно, видеть данные по своим сайтам сможешь только ты), скрипт обладает еще и впечатляющей преимуществами и функциональностью, практически ни в чем не уступающей аналогичному сервису от Google:

  • гибкая система плагинов;
  • открытые API-интерфейсы;
  • экспорт данных в XML, JSON, PHP, CSV;
  • использование настраиваемых виджетов в пользовательском интерфейсе;
  • отображение поисковых движков и ключевых слов;
  • подсчет просмотренных страниц, действий и переходов по внешним ссылкам;
  • страны, браузеры, языки, континеты, разрешения мониторов, провайдеры, разрешения экрана посетителей;
  • мультиюзерность, мультиязычность и мультисайты;
  • отображение live посетителей;
  • рефералы, действия, goals;
  • множество видов графиков (круговые, столбчатые диаграммы и т.д.);
  • отображение посетителей по местному и серверному времени.

И это еще не все возможности тулзы! Множество плагинов увеличивают до бесконечности и так прекрасный функционал скрипта. Так что, советую немедленно его попробовать.

Q: Проводя SQL-инъекцию в PostgreSQL, столкнулся с такой проблемой: эта база данных не поддерживает конструкцию вида "LIMIT 1,1". Не подскажешь альтернативу?

A: Как раз таки оператор LIMIT присутствует в PostgreSQL, но состоит из двух частей: LIMIT и OFFSET. LIMIT отвечает за количество записей, а OFFSET - за номер записи, с которой производится вывод данных. Наглядней смотри на следующем примере:

site.com/index.php?id=-1 UNION SELECT TABLE_NAME,NULL FROM INFORMATION_SCHEMA.TABLES LIMIT 1 OFFSET 0 --

Этот SQL-запрос выведет имя первой таблицы из INFORMATION_SCHEMA.TABLES.

Q: Нашел SQL-инъекцию на одном сайте, но никак не могу подобрать имя таблицы с аккаунтами пользователей. Какие наиболее распространенные имена у таких таблиц?

A: Специально для тебя товарищ aka PSIH с Античата подготовил небольшой список наиболее используемых таблиц, в которых могут содержаться зарегистрированные пользователи на сайте жертвы:

account
accounts
adm
admin
admins
administrator
administrators
adminlogin
login
logins
usr
user
users
nick
nicks
name
names
usrlogin
usr_login
userlogin
user_login
usr_name
username
user_name
nickname
nick_name
user_nick
nickuser
nick_user
nickusers
nick_users
client
clients
member
members

Q: В последнее время мой iframe стал палиться антивирусами. Подскажи, как бы его похитрее зашифровать.

A: В нелегком деле шифровки ифрейма тебе поможет мой любимый сервис http://seotrance.com/tools/redirect-iframe-encoder/ (кстати, тут можно зашифровать не только ифрейм, но и javascript и вообще любой html-код).

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

Q: Слышал о каких-то системных переменных в MySQL, которые могут помочь узнать дополнительную информацию о сервере при проведении SQL-инъекции. Расскажи поподробней.

A: Действительно, в MySQL присутствует такой замечательный инструмент, как Server System Variables (за подробностями бегом штудировать официальный мануал http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html).

Системных переменных существуют десятки, но наиболее полезными для нас будут следующие:

  1. basedir - директория, в которой установлен MySQL;
  2. datadir - директория, в которых MySQL хранит свои данные;
  3. tmpdir - директория для хранения временных файлов и таблиц;
  4. version_compile_os - операционная система, на которой работает MySQL.

Использовать эти системные переменные при скуль-инъекциях необходимо следующим образом:

http://site.com/index.php?id=-1 UNION SELECT @@basedir,2,3/*

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

Q: При использовании load_file() в SQL-инъекциях частенько приходится заморачиваться с различными сервисами, помогающими перекодировать строку в char. Подскажи, как можно упростить этот процесс.

A: Советую сохранить к себе на сервер небольшой php-скрипт, содержащий удобную функцию перекодировки в char:

<?php
function tochar($str)
{
$returnstr='';
for($i=0;$i<256;$i++)
{
$arr[chr($i)]=$i;
}
for($i=0;$i<strlen($str);$i++)
{
$i!=(strlen($str)-1) ? $returnstr .= $arr[substr($str,$i,1)].',' : $returnstr .= $arr[substr($str,$i,1)];
}
return $returnstr;
}
?>

А вот функция, выполняющая обратное преобразование (в качестве аргумента принимает строку вида "12,32,53,64,25"):

<?php
function fromchar($str)
{
$arr2=explode(',',$str);
$returnstr='';
for($i=0;$i<count($arr2);$i++)
{
$returnstr .= chr($arr2[$i]);
}
return $returnstr;
}
?>

Q: Подскажи, каким образом можно надежно определить версию WordPress?

A: Очень просто! Авторы движка предоставляют тебе сразу несколько вариантов (во всех вариантах смотри html-код страницы):

  1. site.com/?feed=rss2
  2. site.com/wp-includes/js/tinymce/wp-mce-help.php
  3. site.com (зачастую просто в теге <meta name="generator" content="WordPress [версия]" />)
  4. site.com/readme.html
  5. site.com/wp-admin/upgrade.php

Также чисто визуально можно отличить страницы http://site.com/wp-login.php, благо в ветках 2.3.x, 2.5.x, 2.6.x, 2.7.x они разные (скачать и сравнить страницы входа разных версий можно на официальном сайте в Release Archive http://wordpress.org/download/release-archive/).

Если же блог довольно-таки старый и версию узнать нельзя, то попробуй проверить существование файла wp-app.php, так как в составе движка он появляется только начиная с 2.2.x ветки.

Q: Подскажи, пожалуйста, средство для брутфорса SSH.

A: Есть несколько вариантов:

  1. SSH Brute Forcer (http://www.securiteam.com/tools/5QP0L2K60E.html) – чрезвычайно простой shell-скрипт для никсов.
  2. SSHatter (http://freshmeat.net/projects/sshatter) – добротно написанный на Perl'е скрипт, который проверяет связки логин-пароль, пытаясь залогинится в систему по SSH.
  3. SSH BruteForcer (http://www.darkc0de.com/bruteforce/). А этот скрипт уже написан на Python, причем помимо основной версии, которая пытается отыскать пароль по словарю, ты можешь найти варианты утилиты, оптимизированные на работу в несколько потоков, а также возможностью поиска SSH-демонов в заданном диапазоне IP-адресов

Q: Что такое поднял 2х хоповый ssh тунель (2-hop ssh tunnel)?

A: SSH очень часто используется как транспортный протокол для безопасной передачи данных между другими приложениями, например, небезопасного VNC (удаленный рабочий стол). Однако бывают ситуации, когда установить туннель невозможно: например, между двумя хостами нет возможности прямого подключения (банально из-за ограничений файрвола). Однако если ввести некоторый хост, с которым подключением может установить каждая из сторон, то его можно использовать как посредника, воспользовавшись приемом two hop tunneling (или проще говоря – туннель через дополнительный гейт).

Достигается это следующим образом: сперва мы используем ssh для того чтобы переадресовать трафик на порт той машины, с которой возможно установить соединение и далее заставляем ее переадресовывать трафик на нужный нам хост (с которым для нее также возможен коннект). В следующим примере, мы будем осуществлять подключения с машины "myhome.example.org", в качестве промежуточного хоста будет выступать "gateway.example.com", а в качестве желанной машины будет недоступный напрямую SSH-демон на "server.example.com".

Наша задача - создать двух-хоповый туннель. Для этого на машине "myhome.example.org" мы запускаем команду:

ssh -f -N -L 51526:server.example.com:22 -2 gateway.example.com

Вот и все! В результате, SSH подключения на 51526 порт на машине myhome.example.org будут туннелироваться на нужный хост, т.е. server.example.com. Другими словами, вместо невозможного напрямую соединения на server.example.com:22, мы просто подключаемся на локальныйхост и порт 51526, а все заморочки возьмет на себя механизм SSH. Кстати говоря, в качестве порта можно использовать и любой другой, но желательно из диапазона 49152-65535

Q: Как перенести реальную систему в виртуальное окружение VMware?

A: На этот случай командой VMware разработана специальная утилита VMware vCenter Converter (http://www.vmware.com/products/converter/). Программа делает полный снимок системы и преобразует файлы виртуальной машины.

Q: А как перенести гостевую ОС из виртуального окружения на реальный физический компьютер?

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

  1. Устанавливаем Symantec Backup Exec (http://www.symantec.com/business/backup-exec-for-windows-servers).
  2. Далее делаем бэкап всей системы
  3. С помощью Backup Exec создаем IDR загрузочный восстановительный образ винды - Intellegent Disaster Recovery.
  4. Записываем полученный образ на CD.
  5. Загружаемся с CD, нажимая при загрузке F2 - Automated System Recovery.
  6. Далее начинается автоматическая установка винды. На последнем этапе установщик попросит подкллючиться к бэкап-серверу. Вводим логин-пароль и о чудо: установщик восстанавливает всю файловую стуктуру и состояние системы на момент бэкапа (реестр, настройки, службы и т.д.).

Готово!

Содержание