(fwd) Объява (perl CrackMe) программа и комментарии

Andrey Gerzhov (kittle@freeland.alex-ua.com)
Sun, 10 Jan 1999 02:16:11 +0200 (EET)

-- forwarded message --
Path: freeland.alex-ua.com!routki.ki.yurteh.net!carrier.kiev.ua!srcc!newsfeed.gamma.ru!Gamma.RU!ddt.demos.su!fido-news-server
From: Mike <blazer@mail.nevalink.ru>
Newsgroups: fido7.ru.perl
Subject: Объява (perl CrackMe) программа и комментарии
Date: 6 Jan 1999 05:42:55 +0300
Organization: CGI Inc.
Lines: 91
Approved: <gateway@fido7.ru>
Message-ID: <36933DF9.E0596138@mail.nevalink.ru>
Reply-To: blazer@mail.nevalink.ru
NNTP-Posting-Host: ddt.demos.su
Content-Type: text/plain; charset=koi8-r
Content-Transfer-Encoding: 8bit
X-BeforeModerator-Path: not-for-mail
X-BeforeModerator-NNTP-Posting-Host: dyn-96-232.dialup.nevalink.ru
X-Mailer: Mozilla 4.05 [en] (Win95; U)
X-No-Archive: yes
Xref: freeland.alex-ua.com fido7.ru.perl:322

С любезного разрешения модератора вдогонку моей объяве о CrackMe
contest.

Вот ююк, в нём зип, в нём crackme.pl
======== cut ========
section 1 of uuencode 5.20 of file crackme.zip by R.E.M.

begin 644 crackme.zip
M4$L#!!0````(`,]\)":'DQ_J"P,``!0$```*````8W)A8VMM92YP;$V2:7.J
M2!2&/P^_HFTZ0(L*!I<8,*C@%N$&<8N#J,20B3.X%$MN6='_/HW.O35=1?79
MWN><`]`9(8E"X6V[%XY^&(#\MO[%'AL"WGK^'OVS:7V&?Q=H]SO@G/N(S\6O
M&A4E;R#Z1K+#\XC^EB_N^5R/Y$(6R6CE(,>5&0:ES^K"1!QK=O.3AU9&S4D9
M6UFP=?W);NAL@6)Y:.FJ-FG7.W=&%A:70A4U%)O<TIU:&7%:=3(9\6BM\>8U
M.1^I[:&NMHFHF^_RZYZNII26WD]SPOU<P?1"%R0B@J(K2&L#0\N59UC')GP@
MSK`I=T2],!KK:L>UN06+V_4%6[93BJP9.D^/9SEH](@LBZ7R0J5+?9XV9OR]
MZ`AFVJ/UNL1P?&,29-HG2W#5T;B'4PJ<*(*F6%EI02!CDX",K-3OU:H-,D/+
M,F`GWU.T>5>9EE\YYNY'#6;L6K4X43JO3I;`>"FEC.TLF8_DM$?&M3!M]+&&
M)FIOP5K#'+U^KE?FUD,E/R`;($>B#0-V,\V'J=%0))/+:H:AI)0J,C!M*CEH
M.:K8R(Q9+*=?HRQ62[5'IK)<#I)13<H;PVYV^,M,AH/2E/FHE&7YXS!+*:MB
MNSU?OX@OXJ5OVZ(I6M5;A7AY.DN/X#=!/S"CX7!0%F72R/_R`GB2J^=AK0P+
M%%RN&>EI)!J+1;X[G>EMTWIY7/7G)7M0N?M31LN^+,.K2*;0N5Z4J60?^%$$
M.`[%H`Y613$\_GSG4-/N3AW1Q1@P#$#Q4[&,P3<%P#'<[F/8WQ/"]AT<O2CZ
M>0C?%WLH4Q?@!Y'_OZKIM2;9Q]O@$0!8T+W8CV)O=R2]<`'>1-3U'_^=NLIW
M)\"AW;MWRJ'=89]#)]\+,9F."PX;+XBW.Y^+/K<?,3B?0>IA[$BY4J[LRM1-
MW=B!M)Q]]O:)%Y[8'-OQW\+_3-,+-Y_D;I(I@ZN?1I^3O7^]`N)1?P!RV&;R
M5Q+%)#KRC[&_>_-#8K]LXL/-^G'X^A74_<W-Q-<1(-HYZ>@NN*U!EN>*-5'D
M;ZND[^IVJ'\!4$L!`A0`%`````@`SWPD)H>3'^H+`P``%`0```H`````````
J`0`@`+:!`````&-R86-K;64N<&Q02P4&``````$``0`X````,P,`````
`
end
sum -r/size 45649/1264 section (from "begin" to "end")
sum -r/size 36792/897 entire input file
======== cut ========

Напоминаю - известен один пароль: DNSARQMO (после R буква "кью", после М
буква "оу", все буквы латинские),
действующий до March 1, 1998(это сразу будет видно при запуске).

Написание кейгена не требуется. Победителем считается тот, кто пришлёт
_любой_ пароль действующий на день отправки письма. Плюс пояснения, как
это получено. То есть никаких brute force.

Ждём 10 правильных ответов, имеем пока один, так что время есть. Но
плийз, если есть возможность, лучше нетмейлом - для скорости. В эху до
окончания конкурса плийз свои соображения не слать. Так сказать, для
чистоты эксперимента.

Вот ещё небольшие комментарии, если кто-то не сталкивался с принципом
crackme:

Значит идея вот какая. Условно говоря
надо хакнуть чужую программу (понимать это полезно, когда хочешь
сам написать защиту), и значит ты выловил тот маленький кусочек, обычно
сильно зашифрованный, в котором происходит собственно проверка пароля.
Теперь надо расшифровать, понять как он работает, и на основе этого
понимания сделать ключе-генератор или один безлимитный пароль. А CrackMe
- это и есть такой кусочек, только без реальной программы, а просто для
развивания мозгов. Как бы в чистом виде.

Я дал один пароль для демонстрации, что это работает.

Одним из очень неприятных мест перла является то, что на сервере
лежит открытый текст программы. Если это административная система или
база данных с разделённым доступом, то там лежат и пароли, или по
открытому тексту программы их очень легко восстановить. А у многих
провайдеров любой юзер может читать все директории других юзеров.
Бардак. А вчера взятая на работу девочка-оператор имеет доступ к любым
файлам, в том числе и к перл-коду. И если в случае экзешника, его надо
сосредоточенно кракать, чтоб получить пароли, то перл-код достаточно
немножко почитать, он абсолютно не защищён. Я уже некоторое время
понемножку думаю, как поступать, если нужна надёжность, если никак
нельзя, чтобы в систему влез посторонний.
Вот в этом crackme я и опробовал пару идей и хотел бы узнать насколько
они надёжны. А людям - развлечение с очень необычным кодом, некоторый
опыт "совсем другого перла" и сама парольная защита в подарок.

А интерфейс очень простой - ты вводишь пароль, тебе говорится либо что
он вообще неверный, либо дата, до которой этот пароль действует. Ну и
формальное условие игры, которое подтверждает, что человек разобрался
как там что сделано, - нужно сделать действующий пароль. То есть, чтобы
на его ввод программа отвечала
Valid until: и дата большая сегодняшней. Например
Valid until: September 20, 2000

Успехов!

-- 
==================================
Mike Blazer
blazer@mail.nevalink.ru
http://www.dux.ru/guest/fno/perl/
==================================
-- end of forwarded message --

-- 
С тем, что не помешает никогда,
                                               Kittle