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

Hack-Faq

Евгений «Corwin» Ермаков

Хакер, номер #102, стр. 060

(hack-faq@real.xakep.ru, http://c0rwin.net)

Q: Чем можно определить статус человека в моем ICQ-контакте? Весь софт, которым я пользовался раньше, сейчас не работает.

A: Совсем недавно ру-асечники написали новую программу для чека статуса номеров - newest invisibility checker (http://forum.asechka.ru/downloads/nic20_04032007.zip). Но эта утилита не гарантирует стопроцентно правильного определения статуса. Перед ее применением советую зарегистрировать новый ненужный аккаунт, поскольку после нескольких проверок аккаунт могут блокировать.

Q: Слышал про некий софт, с помощью которого легко можно «убить» любую мобилу. Там вроде как отправляется специальная sms’ка, которая выключает телефон. Где такой можно достать?

A: Скажу сразу, лично я подобных программ не видел, да и вряд ли они существуют. Вот несколько лет назад было вполне возможно отправить телефон в даун посредством некой sms’ки, поскольку некоторые модели телефонов (например, Ericsson) некорректно обрабатывали определенные символы, но сейчас это неактуально. Альтернативный способ взлома - использование уязвимостей в блютусе. Благо здесь нехватки софта нет.

Q: Насколько безопасна функция rand() для генерирования важных данных? Язык C++.

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

Я советую писать свои алгоритмы для генерации случайных значений, принимающие несколько параметров, которые не будут известны никому, кроме разработчика. Вот пример генератора случайных чисел в интервале от 0 до 2^32-5 (0xFFFFFFFB) из книги «Математические и компьютерные основы криптологии»:

X(n+1) = (1176*X(n) + 1476*X(n-1) + 1776*X(n-2)) % (2^32 - 5)

При инициализации задается 3 числа. X(n) - последовательность, n - номер числа в последовательности.

Однако можно воспользоваться и CryptGenRandom(), входящей в Crypt API (определена в WinCrypt.h), которая генерирует непредсказуемые последовательности чисел. Генерация основывается на множестве данных: текущем времени, идентификаторе процесса, данных множества счетчиков производительности, информации о процессах и даже возможном содержимом буфера обмена. После генерации идет хэширование по SHA-1.

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

http://rfc.dotsrc.org/rfc/rfc1750.html - RFC 1750 Randomness Recommendations for Security;

http://rsdn.ru/article/crypto/usingcryptoapi.xml, http://forum.vingrad.ru/base/CryptoAPI-2701.html - подробный мануал по использованию Crypto API;

http://citforum.ru/security/articles/defense - статья «Delphi и Windows API для защиты секретов».

Q: Реально ли сейчас заработать на киберсквоттинге - регистрации и продаже красивых доменов? И как определить стоимость домена?

A: Получить прибыль, сопоставимую с той, которую можно было выручить пару лет назад, сейчас, конечно, не удастся. Большинство красивых доменов уже занято. Советую посетить специализированные ру-форумы по теме - http://dndialog.com, http://domenforum.net. Там можно продавать, оценивать домены, устраивать аукционы. Существует онлайн-сервис по оценке доменов - http://rus-shopping.com, но доверять ему в полной мере не стоит :). Вот что мне выдал анализатор на домен http://xakep.ru: «Рыночная стоимость данного адреса составляет от $25218,87 до $27460,55» (надо бы толкнуть его незаметно, а деньги пропить всей редакцией :) - прим. Forb’а).

Q: Недавно стал админить сервак, но опыта мало, и поэтому быстро поломали. Не знаю, с чего начать, где какие баги закрыть?

A: Сначала смотрим на присутствие веб-сервера и наличие различных скриптов, как правило взломщики получают доступ именно через бажные скрипты. Сразу же включаем защищенный режим - SAFE_MODE. Если используются паблик-скрипты, то тут прямая дорога на багтраки вроде http://security.nnov.ru с последующим латанием дыр. Смотрим листинг портов netstat -an |grep LISTEN. Затем переходим к различным сервисам, таким как FTP, SSH и т.д. Составляем список всех сервисов, смотрим версию ядра и опять-таки обращаемся к багтракам. Если обнаружены бажные сервисы, то обновляем их. Но если взломщик получил полные права – права рута, то без специализированных утилит тут не обойтись. Обычно во взломанную машину устанавливается руткит, который можно отловить тулзами Rootkithunter (http://rootkit.nl) или Chrootkit. Они выявляют большинство известных руткитов и бэкдоров, смотрят чексуммы приложений, права и ищут подозрительные LKM-модули. Ну и стоит поставить IDS, например iptables или SNORT.

Q: Как начинающий программист на C++ под Linux, хочу спросить, каким багам подвержены приложения под пингвином и как от них защититься?

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

char* variable = getline(NULL, 0, stdin);

Q: Друг говорит, что ему удалось каким-то образом сломать сервер через логи. Но как такое возможно?

A: По-видимому, твой друг получил права в системе посредством локального инклуда логов сервера, в которых прописана строка-шелл. Telnet'ом или через браузер посылается запрос содержащий шелл/команду:

http://target.com/<script language=php>phpinfo();</script>

Далее, имея на сервере бажный скрипт, мы инклудим логи:

http://target.com/script.php?parametr=http://apache/logs/error_log

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

Список возможных путей в Апаче смотри на нашем DVD.

Q: В журнале писали об IDS в Wi-Fi сетях, позволяющих вычислить хакера, но как взломщику не попасться на такие системы и не дать себя обнаружить?

A: Самые известные методы - это подделать MAC-адрес и не использовать активное сканирование. Как и в случае логирующих серверов, которые можно задосить, в беспроводных сетях возможен DoS на сенсоры систем IDS. Также во время перехвата трафика следует уменьшать мощность передатчика. Но все эти приемы тебе не помогут, если ты будешь тупо бродить по зданию с ноутом :).

Q: Каким образом запретить подключение к MySql из сети? Нужна обработка запросов только с локальной машины.

A: Очень просто! Для этого открываем файл my.cnf и в разделе [mysqld] пишем «skip-networking» или биндим к ip – «bind-address = 127.0.0.1».

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

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

Q: Я немного освоил основы крякинга, но не могу найти программы с простой защитой. Какие утилиты можешь посоветовать для практики?

A: Ну, проще всего взломать программу с ключом, лежащим в открытом виде. Программы, на которых можно потренироваться, можно найти на форуме Cracklab’а: http://cracklab.ru/f/index.php?action=vthread&forum=5&topic=6085. Но в любом случае я тебе этого делать не советую хотя бы потому, что это противозаконно ;), лучше зайди на сайт вроде http://crackmes.de и выбери для практики специально предназначенные для взлома crackme.

Q: Прочитал про угон ботнетов, но сразу понял, что у самого не получится. Во-первых, не сумел установить sandbox, во-вторых, открывать порты на своем ПК опасно. Есть ли альтернатива?

A: Прийти к другу и ловить разного рода тварей на его компьютер :). Нет, альтернатива, конечно же, есть, но в любом случае придется идти на некий риск. Например, можно использовать программы, создающие контрольные точки-копии твоего харда и после перезагрузки возвращающие систему в исходное состояние. Это такие утилиты, как Disk Write Copy, DeepFreeze.

Содержание
ttfb: 4.1790008544922 ms