리버스 텔넷(Reverse telnet)

2020. 6. 6. 12:38Security ★ Development/시스템

반응형

텔넷은 인터넷이나 로컬 영역 네트워크 연결에 쓰이는 네트워크 프로토콜입니다.  리버스 텔넷은 텔넷의 이런 특성을 반대로 이용한 공격 방법입니다.  보통 네트워크를 통해 공격을 하기 위해선 방화벽 등을 통과해야 하는데 inbound 패킷에 대해 정책이 걸려있는 시스템을 뚫기란 쉽지 않습니다.  하지만 방화벽 정책 설정 시 outbound 패킷에 대해서는 보통 특별한 정책을 설정해주지 않는데 이러한 취약점을 이용합니다.

공격 대상이 되는 서버 등에서 먼저 공격자 pc로 연결을 하게 함으로써 시스템의 보안 정책을 우회하도록 합니다.  

데모를 해보겠습니다.

 

공격자 pc

공격자 pc의 ip 주소는 192.168.0.2입니다.

 

포트 open

공격자 pc에서 3174 포트를 열어둡니다.

이 데모에서는 netcat(nc)라는 프로그램을 사용합니다. 

netcat은 tcp 또는 udp를 사용하여 네트워크 연결을 읽고 쓰는 데 사용되는 컴퓨터 네트워킹 유틸리티입니다.  -l은 listen mode란 뜻이고, -p는 열어놓을 포트를 지정합니다.

리버스 텔넷을 위해 꼭 nc를 사용할 필요는 없고 원격 pc간 네트워크를 통해 접속을 지원하는 프로그램이면 모두 가능합니다.

 

공격 대상 pc

공격 대상 pc의 ip 주소는 192.168.0.5입니다.

 

공격자 pc로 접속

공격 대상 pc에서 공격자 pc로 nc를 이용해 접속합니다.

-e옵션은 연결후 실행할 프로그램이고 공격자 pc인 192.168.0.2의 3174 포트로 연결을 하도록 합니다.

여기서는 공격대상 pc가 공격자 pc로 연결을 하도록 해주지만 실제 공격 시나리오에서는 서버에 파일을 올리거나 메모리를 변조해서 해당 네트워크 프로그램이 서버에서 직접 실행돼서 스스로 공격자 pc로 접속을 하도록 해야 합니다.

 

공격 대상 pc로 접속 성공

공격자 pc의 상황을 보면 nc명령어 후 대기 상태이던 console 창이 변경된 걸 확인할 수 있습니다.  console의 현재 경로를 보면 공격 대상 pc의 위치입니다.  공격자 pc의 cmd.exe 실행을 통해 접속이 된 상태입니다.  ip 주소를 확인해보면 공격 대상 pc의 ip 주소(192.168.0.5)입니다. 

공격 대상 pc에 접속이 된 상태이고 cmd.exe 실행 결과인 console을 통해 작업을 할 수 있습니다.

 

리버스 텔넷을 방어하기 위해서는 방화벽 등의 정책에서 outbound 패킷도 관리를 해줘야 합니다.  직접적인 방법이 이거고 부가적으로는 서버의 실행 프로그램 제한, 리버스 텔넷을 유도하는 command가 작성된 파일의 서버 업로드 제한 등의 command 실행 예방이 있습니다.