Q: Собираю информацию по определенному ресурсу. Как можно получить полную карту веб-приложения?
A: Для этого можно воспользоваться довольно известной программой Burp Suite. Если ты еще с ней незнаком, то рекомендую в срочном порядке скачать ее с официального сайта. Burp Suite — это интегрированная платформа, предназначенная для проведения атак на веб-приложения. BS включает в себя разнообразные утилиты со специально спроектированными интерфейсами, позволяющими улучшить и ускорить процесс атаки. Все эти инструменты основываются на мощном фреймворке, который позволяет им перехватывать и показывать пользователю HTTP-сообщения, работать с аутентификацией, прокси-серверами и производить логирование различных данных. Для решения нашей задачи нам нужен паук — Burp Spider, именно он собирает информацию о существующих директориях и файлах на исследуемом сервере, обходя найденные на страницах ссылки. Глубина входа по каждой ссылке гибко настраивается в настройках, также присутствует возможность исключения определенных типов файлов и URL страниц. Паук заглядывает в robots.txt, парсит JavaScript на наличие ссылок, обращается к корню каждой найденной папки для получения листинга и распознает формы в HTML. В общем, очень крутая штука. В качестве альтернативы можно воспользоваться OWASP ZAP, которая тоже способна составить карту веб-приложения и имеет довольно интересный функционал. Обе эти программы можно найти в дистрибутиве BackTrack или скачать с офсайтов.
Q: На ресурсе используется SSI (Server-Side Includes — включения на стороне сервера). Как можно это использовать со стороны атакующего?
A: Для начала, думаю, есть смысл разобраться вообще, что это за зверь такой. SSI — это директивы, вставляемые в HTML-код и служащие для передачи указаний веб-серверу. Встречая такие директивы, или, как их еще называют, SSI-вставки, веб-сервер интерпретирует их и выполняет соответствующие действия. В качестве примера можно привести вставку HTML-фрагмента из другого файла, динамическое формирование страниц в зависимости от некоторых переменных под определенный браузер и другие, не менее приятные фишки. Чаще всего используется расширение shtml или shtm, наличие которого и указывает веб-серверу предварительно обрабатывать страницы как положено. Стоит также отметить, что расширение может быть любое — в зависимости от конфигурации веб-сервера, но в большинстве случаев применяется именно shtml. SSI насчитывает что-то около десятка различных команд, выглядит примерно так:
<!--#cmd var="value" -->
где # означает начало SSI-вставки;
cmd — сама команда;
var — параметры SSI-команды.
Теперь переходим к самому интересному. Скажем, на странице у нас присутствует input box, можно попробовать провести атаку, введя в него
< !--#exec cmd="ls" -->
В случае успеха получим листинг директорий. Вдогонку даю список самых распространенных проверок SSI под Linux- и Windows-серверы:
<!--#exec cmd="/bin/ls /" -->
< !--#exec cmd="dir" -->
< !--#exec cmd="cd C:\WINDOWS\System32">
<!--#config errmsg="File not found, informs users and password"-->
Q: Совсем недавно начал работать в консоли. Порой, перемещаясь по директориям, не хватает кнопки «Назад». Есть ли подобная фишка в терминале?
A: Есть! Для этого нужно набрать:
cd -
Тем самым утилита переведет тебя назад. Также можно отметить еще пару фишек данной команды.
cd ..
поднимет на уровень вверх по каталогу. А команда
cd ~ или просто cd
переместит в домашнюю директорию.
Q: Хочу получить как можно больше информации об исследуемом сервере. Какие технологии используются, версии ПО, что за CMS и прочее. Что можешь порекомендовать?
A: Для этого есть много различных инструментов, со своими плюсами и минусами. Начать можно с Nmap или Zenmap, если ты не равнодушен к гуи. А дальше уже использовать более специфичные сканеры и анализаторы. Из тулз, которые определяют версии ПО на сервере, включая различные CMS и прочее, мне нравится WhatWeb. Из особенностей можно отметить: более 900 различных плагинов для проверки, возможность выставить уровень агрессии и тем самым управлять скоростью проверки (можно выставить полную проверку сайта, будет долго и весьма заметно, или же быстрое сканирование). Можно сканировать несколько сайтов одновременно, поддерживает прокси, включая тор. Выдает много полезной информации, что можно увидеть на скрине. Синтаксис несложен, для простого анализа достаточно команды
whatweb domain.com
Для более подробного ознакомления с опциями утилиты можно обратиться к справке или просмотреть сайт разработчиков.
Q: Недавно прочитал про атаки на рекурсивные ДНС. Захотелось проверить пару своих доменов, чем можно потестить?
A: Для этого можно обратиться к веб-сервису dnsinspect.com, который после сканирования всей доступной информации выведет красочный отчет. Причем на особо интимные места он обратит твое внимание, выделив пункты разноцветными алертами. Также стоит понимать, что для непосредственного осуществления атаки через DNS-сервер используются следующие принципы: DNS работает по протоколу UDP (следовательно, атакующий может подменить свой айпишник на адрес жертвы), и то, что DNS-запросы асимметричны — ответный трафик может превышать входящий в несколько раз. На основе этого знания можно описать несколько видов атак. Amplification attack (атака с усилением) направлена на перегрузку исходящего канала DNS-сервера. Она стартует с отправки огромного количества DNS-запросов, специально сформированных таким образом, чтобы получить очень большой ответ, размер которого может до 70 раз превышать размер запроса, что и приводит к перегрузке исходящего канала DNS-сервера и в конечном итоге к отказу в обслуживании. При reflection attack (атака с отражением) используются сторонние DNS-серверы для распространения DoS- или DDoS-атаки путем отправки большого количества запросов. При такой атаке адрес, с которого отправляются DNS-запросы, подменяется IP-адресом жертвы, и запрос будет иметь данные сервера жертвы, а не атакующего. В итоге, когда сервер имен будет получать запросы, он будет отправлять все ответы на IP-адрес жертвы. Большой объем такого «отраженного» трафика может вывести из строя сервер жертвы. Именно поэтому необходимо позаботиться о безопасности своего сервера и максимально ограничить доступ к нему.
Q: Что делать, если база MS SQL ушла в режим Suspect и не хочет из него выходить? При двойном клике выводит ошибку: The database is not accessible.
A: Для начала не паниковать. Если вдруг есть бэкапы (а они должны быть), то восстановить базу из них. Это сэкономит кучу времени и нервных клеток.В обратном случае погружаемся под капот MS SQL. Советую забэкапить mdf- и ldf-файлы БД. После чего делаем Detach database, удаляем журнал транзакций — это как раз файл с расширением ldf — и делаем Attach database. В мастере выбираем наш mdf-файл и жмем ОК. Если mdf-файл не поврежден, то он успешно присоединится и мы увидим нашу базу в диспетчере объектов целую и невредимую, но такое случается весьма нечасто. Чаще всего mdf-файл поврежден и присоединить базу не удается. Поэтому создаем новую базу данных с таким же именем, останавливаем сервер. Подменяем файл mdf-файлом от нашей базы, стартуем службу SQL Server и открываем Query analyzer или Management studio. В нем пишем:
Use master
go
sp_configure 'allow updates', 1
reconfigure with override
go
ALTER DATABASE db_name SET EMERGENCY, SINGLE_USER
GO
После этого наша БД должна быть видна в статусе EMERGENCY. Отлично, приступаем к восстановлению.
DBCC CHECKDB('db_name', REPAIR_ALLOW_DATA_LOSS)
GO
Теперь нужно немного подредактировать команду к виду
DBCC CHECKDB('db_name', REPAIR_REBUILD)
GO
Это должно убрать оставшиеся ошибки БД. После всего этого наша база приходит в нормальное состояние и уже доступна для работы, но только в однопользовательском режиме, поэтому завершаем наш процесс возвращением БД в многопользовательский режим.
alter database db_name set ONLINE, MULTI_USER
GO
Все, база успешно восстановлена. Рекомендую сразу сделать ее бэкап и заодно настроить шедулер для автоматизации этого действия.
Q: Ковыряю различные скули, и появился интересный вопрос. Есть ли какая-то шпаргалка по SQL inj, где была бы собрана вся наиболее интересная и вкусная инфа по теме?
A: Да! Есть такая шпаргалка. Держи. Она по наиболее известным БД, таким как MySQL, SQL Server, PostgreSQL, Oracle. Структурирована по типам инъекций и разделам, что облегчает поиск нужного материала.
Q: Недавно пришлось пользоваться стареньким ноутбуком без веб-камеры. А она так нужна. Правда, есть современный смартфон на андроиде. Возможно ли превратить смартфон в веб-камеру для скайпа?
A: Конечно! Можно даже еще и в микрофон превратить, помимо камеры. Из самых наиболее интересных приложений подобного типа есть IP Webcam и DroidCam Wireless Webcam. Принцип работы обеих программ схож, хоть и есть небольшие отличия. DroidCam может работать как через Wi-Fi, так и через Bluetooth и USB. А IP Webcam — либо через Wi-Fi, либо через мобильный интернет, зато имеет весьма крутые фишки:
Запись видео в форматах WebM, MOV и MPEG4.
Вещание звука в форматах WAV, Opus и AAC (AAC требует Android 4.1+).
Датчик движения с созданием события в Tasker и звуковой регистрацией.
Наложение даты, времени и состояния батареи на видео.
Захват сенсоров и отображение их на графике через веб-интерфейс.
В общем, как ты уже понял, одним скайпом тут дело не ограничивается. Целый полет для фантазии и комбинирования технологий. Все инструкции по настройке и установке драйверов (без них, кстати, веб-камера работать не будет) можно найти в мануалах, любезно составленных разработчиками приложений.
Q: Есть ли какой калькулятор XSS, чтобы можно было засунуть строку и получить на выходе разные варианты кодировки? Скажем, hex, Base64. И самое главное, чтобы это было в одном месте?
A: Конечно, есть. Подобных сервисов довольно много, различаются в основном по функционалу и удобству. Если хочется что-то полайтовей, то можно использовать подобный http://ha.ckers.org/xsscalc.html, где есть как раз все, что тебе нужно. Или же, если захочется больше функционала, возможностей и хардкора, то однозначно рекомендую это: yehg.net/encoding/?. Здесь и офлайн-версия для твоего браузера, и работа не только с XSS. И различное экранирование символов, перекодировка… да что рассказывать, заходи и сам смотри, глаза просто разбегаются от возможностей. Даже если использовать не будешь, то в закладки однозначно, никогда не знаешь, когда подобный инструмент понадобится.
Q: На днях откопал старый винт. Но если верить надписи на нем, SAS. С виду ничем особо не отличается от привычного SATA-диска. В чем же у них разница?
A: Предлагаю начать с SAS. У него есть следующие основные фичи, по сравнению с SATA.
Два полнодуплексных порта в отличие от одного полудуплексного у SATA. Это позволяет строить отказоустойчивые многодисковые топологии в системах хранения данных.
End-to-end data protection T10 — набор алгоритмов SAS, позволяющий с помощью чек-сумм быть уверенным в том, что данные, подготовленные на запись, без искажений записаны на устройство. Это помогает обезопасить данные от так называемых silent errors, то есть когда на винт пишутся ошибочные данные, но об этом еще никто не знает. К слову, silent errors — это тихая смерть SATA.
Multipath — возможность подключить корзину с дисками не одной, а, скажем, четырем линиям, тогда нагрузка будет на них распределяться и отказ линии на работоспособности системы не скажется — ОС может даже и не заметить сбоя, только снизится производительность. Стоит ли говорить, что на SATA такое невозможно.
Это лишь основные плюсы перед SATA. Также стоит отметить, что SAS-диски ориентированы на задачи, чувствительные к скорости и требующие многопоточного доступа:
СУБД;
высоконагруженные веб-серверы;
ERP-системы;
системы для работы с большим количеством пользователей;
терминальные серверы;
серверы удаленного доступа.
SATA-диски, в свою очередь, требуются для задач, связанных с большими объемами информации. Из самых распространенных задач, успешно решаемых SATA-дисками, можно выделить следующие:
потоковые операции, например кодирование видео;
хранилища данных;
системы резервного копирования;
объемные, но не нагруженные файл-серверы.
Как видишь, у каждой из этих технологий своя ниша. Большим преимуществом SATA-дисков является стоимость хранения мегабайта информации.
Q: Озаботился защитой своих Д-С серверов. Какие ДНС-серверы поддерживают RRL?
A: Если имеется в виду Response Rate Limiting, позволяющая ограничить интенсивность отправки ответов DNS-сервером, что дает админу средство эффективно защитить его сервер от вовлечения в DDoS-атаки, то я готов тебя обрадовать. Данную технологию поддерживает BIND, начиная с версии 9.9.4. Также хочу посоветовать обратить внимание на NSD — это сервер ДНС с открытым исходным кодом. Он, кстати, может использовать файлы BIND без изменений, что упрощает переход от одного решения к другому. Вся информация компилируется с помощью zonec в двоичный формат для ускорения загрузки. Также в процессе компиляции могут быть выявлены ошибки синтаксиса, что позволяет исправить их еще до того, как они станут доступны серверу, —однозначный плюс. Кроме того, демоны NSD работают от имени непривилегированного пользователя, так что, даже если в нем обнаружат уязвимость, она не даст сломать всю систему целиком.
Q: Захотелось мне подключиться к своей виртуальной машине по SSH. Машинка находится за натом. По логике, нужно как-то пробросить порт через виртуалбокс, как это сделать?
A: Для этого нужно отключить виртуальную машину и открыть ее свойства. Там выбираем вкладку «Сеть». Для примера возьмем айпи 10.10.1.15 и маску 255.255.255.0. Зная, что SSH — это по дефолту 22-й порт, жмякаем на кнопку проброс портов. Открывается очередное окошко, где мы вводим:
IP хоста — машина, где развернут виртуалбокс, скажем 127.0.0.1 порт хоста, любой, какой нравится, скажем 2525
IP гостя — адрес нашей виртуалки, в нашем примере это 10.10.1.15 порт гостя — собственно сам порт, это 22
На этом все, можно переходить к тестам. Для винды это PuTTY, для линукс привычный SSH.
Q: Какие еще сетевые утилиты, кроме пинга да трассировки для диагностики, можешь посоветовать на убунту, желательно из коробки?
A: Из тех инструментов, что предустановлены в операционной системе, можно выделить следующие. Из более простого — это Telnet и nc, что, думаю, особо объяснять не нужно. Более сложное, но не менее интересное — это netcat, который умеет показывать сетевые соединения (входящие/исходящие), таблицу маршрутизации, статистику по сетевым интерфейсам и еще кучу всего. К примеру, так выглядит список всех открытых TCP-портов:
netstat -at
Есть и более интересные вещи, к примеру список подключенных хостов:
Также интересна утилита ss, позволяющая просматривать инфу об используемых сокетах в системе. Эта команда обладает схожим с netstat функционалом, но есть и свои фичи. Например, можно фильтровать вывод по установленным соединениям с определенным портом. Утилита lsof умеет отображать процессы, которые работают с определенным файлом или сокетом. Также стоит отметить, что многие дистрибутивы сейчас по дефолту комплектуются Nmap’ом, о котором писали уже не раз и который предоставляет огромнейший функционал, заметно расширяемый за счет различных скриптов. Не менее интересной будет утилита mtr, совмещающая в себе команды пинга и трассировки с дополнительными графиками. В завершение хочется упомянуть про wireshark, о котором тоже не раз писали в нашем журнале и с которым можно разобрать практически любую сетевую проблему на мелкие запчасти. Одно «но» — далеко не везде он стоит из коробки, но зато он есть в репозиториях очень и очень многих дистрибутивов, что, как мне, решает этот вопрос.
Врезки
“БОЛЬШОЙ ВОПРОС”: Быть или не быть
Q: Появилась задача поставить Ubuntu на Hyper-V. Вроде тривиальная задача, ан нет, не все так просто. Нужен какой-то особый подход, какой?
A: О да, к винде почти всегда нужен особый подход. Особенно когда речь идет о практически несовместимом. Но выход есть и в данной ситуации. Первоначально нужно заинсталлить нашу убунту на виртуалку. Делается это обычно, без каких-либо ухищрений. Создали новую машину, к ней новый жесткий диск, выбрали образ убунты и через графический режим или любой другой по желанию преступили к установке. Сообщения о неправильном биосе можно смело игнорировать и ставить дальше. После установки перезагружаемся, идем по пути и открываем на редактирование файл
nano /etc/initramfs-tools/modules
Для корректной работы нашей системы нужно добавить следующие строки:
hv_vmbus
hv_storvsc
hv_blkvsc
hv_netvsc
hv_utils
Тем самым мы разрешаем загрузку необходимых нам модулей. После сохранения файла выполняем команду
sudo update-initramfs -u
Теперь переходим к настройке интерфейса. Открываем файл
nano /etc/network/interfaces
Для статики пишем примерно следующее:
Auto seth0
iface seth0 inet static
address x.x.x.x
netmask x.x.x.x
Gateway x.x.x.x
Обращаю внимание на новый синтетический сетевой интерфейс seth0. Если бы использовался устаревший сетевой интерфейс Legacy, то он бы назывался eth0. В случае если хотим поставить dhcp, прописываем:
Auto seth0
iface seth0 inet dhcp
Теперь можно перезагружаться. После ребута командой lsmod можно просмотреть загруженные модули, а командой ifconfig — увидеть свой интерфейс.
5 ШАГОВ: Да пребудет с тобой сила
Хочу проложить путь в ИБ через профессию сисадмина. Считаю, что это более правильно и знания будут более упорядочены, структурированы и, как говорится, по обе стороны баррикад. Какой путь изучения технологий для данной специальности порекомендуешь?
Вопрос хороший и довольно обширный. Ведь можно быть эдаким универсалом или же иметь узконаправленную специализацию. Но думаю, есть вещи, которые нужно знать при любом раскладе. На них и остановимся. Также стоит учесть, что теория без практики так и остается теорией, поэтому пробовать, тестить и щупать руками. А читать… читать все, что попадется под руки, особенно в самом начале. Книги дадут знания широкого спектра, и чем больше их будет, тем легче будет потом. После этого можно переходить уже к конкретике.
Хорошая книжка по сетям, про то, что такое DHCP, IP-маршрутизация, модель OSI и прочее. Многие скажут, что я не прав, но мой выбор Олиферы плюс лабы по цискам и игры в виртуальных машинах. Хочешь хардкора? Ставь виртуальную сеть, поднимай wireshark и изучай, куда чего передается, по каким протоколам и зачем. По виртуализации сетевых лабораторий уже не раз и не два было написано, вплоть до пунктов, где и как скачать, что и куда поставить. Заодно и гуглить научишься, тоже очень ценный навык практически в любой сфере.
DNS, понимать что за записи, для чего нужны. Читать Альбеца и Ли — самое толковое. Что-то по архитектуре операционных систем, скажем, пара талмудов по Win/Unix нехило прокачают и дадут трамплин к новым знаниям. Книжку по общему администрированию. Скажем, кирпич Томаса Лимончелли предотвратит наступание на целый сарай грабель. После этого можно переходить к командной строке и скриптам. Bash и power shell — наше все, автоматизация и лень приведут тебя на вершину этих навыков.
Английский язык. Да-да, знаю, ты в школе проходил, но тут другое. Попробуй найди на русском нормальные доки для консольных утилит или хак тулз, максимум, что описывают, — это пять первых ключей. Остальное для избранных. Так что запасайся терпением и погружайся. Первоначально непонятно, медленно и жутко, но потом привыкаешь и уже не замечаешь, как начинаешь читать англоязычные форумы и обсуждать новые техноновинки на зарубежных каналах.
Как сам понимаешь, такой объем просто невозможно уместить в пяти пунктах. Но начало есть, а дальше целый мир технологий. Тут тебе и веб-серверы, и базы данных, и работа с железом, и различные сервисы, и много чего другого. Что выбрать, чем заниматься, думаю, ты сможешь решить сам, посмотрев вакансии в своем городе, или просто — то, к чему душа лежит. В любом случае не забывай главное: никогда не переставай учиться и узнавать что-то новое, ведь это самое классное и это знание не даст тебе остаться на прежнем уровне.
ОДНОЗНАЧНОГО ОТВЕТА НЕТ: bank power
Q: Многие мои друзья накупили себе так называемых bank power. Действительно ли эти устройства настолько хороши, есть ли смысл в их покупке?
ОТВЕТ1
A. Да, есть, если ты постоянно в разъездах. У тебя с собой наверняка много девайсов вроде плеера, смартфона (а то и двух), планшета. Тогда покупай BP мощностью побольше, и будет тебе счастье. Больше не придется терзаться сомнениями, что делать — пройти еще один уровень в игрушке или сохранить заряд на важный звонок.
ОТВЕТ2
B. Цена на подобные устройства скачет от 500 до нескольких тысяч рублей, и неспроста. Дешевые устройства не держат заряд и очень вяло заряжают девайсы. Плюс дополнительная тяжесть в рюкзаке, забыл его зарядить (а его тоже нужно не забывать заряжать вечером) — лишний вес и мертвые гаджеты в самый неприятный момент.