[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: zombie



2007/1/16, Felipe Augusto van de Wiel (faw) <felipe@cathedrallabs.org>:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 01/15/2007 11:30 PM, Marcos Lazarini wrote:
> 2007/1/15, Felipe Augusto van de Wiel (faw) <felipe@cathedrallabs.org>:
>> On 01/14/2007 06:32 PM, sluiz wrote:
>> > Estou precisando criar um processo zombei, ou seja, preciso matar o
>> > processo pai e manter o filho funcionando.
>>
>>         Hmmm, isso não é um processo zombie.
>>
>>
>> > Toda vez que utilizo kill -9 $PPID mato o processo atual também.
>> > Já tentei executar o script filho com & no final, já
>> > tentei nohup, mas não adianta esse filho tá muito ligado ao pai.
>> > Aguém tem ulguma idéi para separar esse dois?
>>
>>         Não é beeeeem assim que funciona. A idéia de pai e filho
>> está ligada à cadeia de execução, um dos exemplos tradicionais é
>> a execução da chamada fork() em um programa C.
>>
>>         Você pode chegar próximo disso via sheel (fazer pai e
>> filho), mas pra criar um processo zombie a história é outra.
>
> Vcs não criam um processo zombie, um processo fica zombie - quase
> todos do seu micro são candidatos a ficar zombie... ainda bem que a
> grande maioria não fica muito tempo :-)

        Tem certeza? Você já viu o funcionamento de alguns rootkits? :)

Ahhhh.... mas ai vc apelou né? Estavamos falando aqui até agora de um
sistema são, kernel padrão, etc e tal. Não que não seja interessante
saber disso, mas o foco da questão aqui não era esse; alias essa é a
excessão da regra.
Então eu vou criar um kernel e trocar as letras R e Z de lugar na
tabela... ai vai virar tudo zombie... hehehe


>> Processos zombie são so que não morrem, mas também não estão
>> mais em estado de interação ou seja, eles estão apenas na pilha
>> de processos consumindo recursos (ou, criando oportunidade para
>> algum tipo de ataque ou DoS).
>
> Aqui eu discordo. O processo zombie já morreu.

        Tem _certeza_? :-)

        Alguns rootkits modificam de tal forma a estrutura de
execução que os processos zombies na verdade estão fazendo porcaria
no sistema.


> Eu já expliquei isso outras vezes aqui, mas em resumo:
> Qdo vc faz um fork, o pai-filho mantém um grau de parentesco. É
> possível que o filho mande 'sinais' para o pai (não lembro se
> vice-versa é verdade). O pai precisa implementar a rotina de
> tratamento de sinais, pq mesmo se o filho não manda nada, quando ele
> morre ele SEMPRE sinaliza para o pai. Entre a 'hora da morte' do filho
> e a recepção e tratamento do sinal pelo pai, o processo fica zombie.
>
> Façam o teste:
> abra um shell, que vai servir p/ monitorar os processos com um 'ps f'
> abra um outro shell, e dentro dele rode alguma coisa (pode ser até
> outro shell) - esse vai ser o filho. Agora, volte no outro terminal e
> rode 'kill -SIGSTOP <pid_do_pai>'; volte ao 2o. shell e encerre o
> processo filho. Pronto! Vc está com um processo zombie até dar o 'kill
> -SIGCONT <pid_do_pai>'
>
> Depois que o processo virou zombie, ele já morreu - só resta o corpo
> ainda... :-)

        Num mundo perfeito sim.

        Quando começamos a falar de modificações na pilha de
execução e de códigos C bizarros pra área de segurança, isso
não beeeeem assim.

Bom, como disse antes, essa é a excessão da regra. Primeiro temos que
conhecer muito bem as regras, p/ depois podermos quebrá-las :-)
A questão inicial era como obter um processo zombie, e eu dei minha
sugestão. A sua então é instalar um rootkit? :-)

PS: aposto que o cara que fez o rootkit não diz 'criar um zombie' e
sim 'torna-se zombie'... uhahuahuauha ;-)

Sem mais venenos, :-D
Marcos



Reply to: