Bueno, ni Java ni .Net son lenguajes ideales para hacer eso, tal vez para el cliente sí pueda ser viable si te sientes comodo programando en esos lenguajes, pero el servidor tiene que ser un programa pequeño, rápido y que no dependa de librarías ni nada externo a él, con lo que para hacer el server los lenguajes más adecuados son C y/o ASM.
Para empezar, lo primero que se suele hacer (una vez definido qué quieres hacer exactamente) es la conexión, desarrollas un protocolo de comunicación y ahí empiezas a codear. También es buena idea ver códigos de herramientas similares a la que vas a hacer antes de empezar la tuya, unos cuantos post más abajo tienes a un usuario que desarrolló un prototipo de RAT en java, y de C tambien hay varios ejemplos open source.
Saludos