Download presentation
Presentation is loading. Please wait.
Published byΠαύλος Γιαννακόπουλος Modified 5년 전
1
Telnet & SSH 조장 : 김보성 반장 : 홍세기 사장 : 권혁락 부장 : 최 율 자투리 : 나영진
2
* Telnet 동작 방법 * Telnet 설치 및 설정 * Telnet 의 취약점 * Wireshark 패킷 분석 * Telnet 보안 방법
3
Telnet SSH Telnet Telnet이란? ▶ Telnet은 원격지의 컴퓨터 시스템을 마치 자신의 컴퓨터처럼 사용할 수 있게 하는 원격 터미널 접속 서비스를 말함 ▶ OSI 7 Layer의 Application 에 위치 ▶ TCP/IP 프로토콜을 사용하는 응용프로그램 (port 23) ▶ RFC15를 시작으로 1969년에 개발되었으며 최초의 인터넷 표준들 가운데 하나로서 IETF STD 8로 표준화되었다.
4
Telnet SSH Telnet Telnet이란? ▶ Telnet 이용을 위한 필수 요소. - Telnet Client Software (telnet접속 도구) = Putty, SecureCRT, Xshell - Network Environment (telnet접속 라인) = Modem, ISDN, ADSL, VDSL 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다. Windows [ Putty ] Linux [ Xshell ]
5
Telnet SSH Telnet Telnet 동작 방법 ▶ byte스트림 형식의 전송방식 ▶ 모든 데이터의 평문 전송 - ID, PW를 포함한 모든 정보를 평문으로 전송한다. (보안의 취약) Telnet 클라이언트 Telnet 서버 Login 쉘 터미널 드라이버 TCP/IP 의사 터미널 커널 터미널에 있는 사용자 TCP 연결 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다.
6
Telnet SSH Telnet Telnet 동작 방법 ▶ NVT(Network Virtual Terminal) - Telnet은 일종의 터미널 에뮬레이션 프로토콜 이다. - 터미널 에뮬레이션을 위한 방법으로 NVT라고 불리는 가상 터미널의 개념 을 사용한다. - Telnet 클라이언트와 서버 사이의 데이터와 제어 명령의 전송에는 특별한 데이터 포멧 이 사용되는데 이를 NVT 포멧 이라 한다. - Telnet은 기본적으로 ASCII 코드가 사용 되는 것으로 가정한다. (NVT-ASCII) Line Feed LF 10 Carriage Return CR 13 Bell BEL 7 Backspace BS 8 Horizontal Tab HT 9 Vertical Tab VT 11 Form Feed FF 12 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다.
7
Telnet 동작 방법 Telnet ▶ 텔넷 옵션 협상 Telnet SSH
공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다.
8
Telnet 동작 방법 Telnet ▶ NVT 개념
SSH Telnet Telnet 동작 방법 ▶ NVT 개념 NVT는 각 터미널간의 서로 다른 특징을 공통적인 표현기준에 따라 기술한 외부 인터페이스 규격 Zero 라는 특별한 bit set 이 추가된다. The NVT has a "printer" (or display) and a "keyboard". The keyboard produces outgoing data, which is sent over the TELNET connection. The printer receives the incoming data. The basic characteristics of an NVT, unless they are modified by mutually agreed options are: The data representation is 7-bit ASCII transmitted in 8-bit bytes. The NVT is a half-duplex device operating in a line-buffered mode. The NVT provides a local echo function. All of these may be negotiated by the two hosts.
9
Telnet SSH Telnet Telnet 동작 방법 ▶ 텔넷 프로토콜 제어 명령어 - 명령어는 IAC(interpret as command)문자 다음에 보내진다. - IAC는 아스키 코드 255번이다. 이름 ASCII 의미 SE 240 End of sub-negotiation parameters NOP 241 No Operation DM 242 Data Mark. 데이터 스트림 내의 SYNCH 이벤트 위치를 나타낸다. 반드시 TCP Urgent Notification과 함께 한다. BRK 243 Break. "break" 혹은 "attention" 키가 눌러졌음을 나타내는 명령어. IP 244 NVT가 연결된 프로세스를 Suspend, Interrupt, 혹은 Abort하는 명령어. AO 245 Abort Output. 현재 프로세스가 수행을 종료하게 하지만, 사용자에게 출력을 전송하지는 않는다. AYT 246 Are You There. AYT가 수신된 가시적인 증거들을 NVT로 되돌려 보낸다. EC 247 Erase Character. 수신자는 데이터 스트림에서 가장 최근의 삭제되지 않은 문자를 삭제해야 한다. EL 248 Erase Line. 데이터 스트림에서 이전의 CRLF를 포함하지 않는 문자들을 삭제한다. GA 249 Go Ahead. 특정상황에서 상대편에게 전송 가능함을 알려주는데 사용하는 명령어. SB 250 Sub-negotiation. 서브옵션을 받으라는 명령어. WILL 251 해당 옵션을 사용하겠다는 것을 알려주는 명령어. WONT 252 해당 옵션을 사용하지 않겠다는 것을 알려주는 명령어. DO 253 해당 옵션을 사용하라고 상대편에게 요청하는 명령어. DONT 254 해당 옵션을 사용하지말라고 상대편에게 요청하는 명령어. IAC 255 Interpret As Command
10
environment variables
Telnet SSH Telnet Telnet 동작 방법 ▶ 텔넷 옵션 - telnet 연결은 옵션의 협상에서부터 시작한다. - 옵션들은 언제든지 재설정 가능. 서버나 클라이언트 어느 쪽에서도 설정할 수 있다. - 옵션의 정확한 스펙은 각각의 RFC 를 참고하여야 한다. ASCII 이름 RFC번호 1 echo 857 3 suppress go ahead 858 5 status 859 6 timing mark 860 24 terminal type 1091 31 window size 1073 32 terminal speed 1079 33 remote flow control 1372 34 linemode 1184 36 environment variables 1408 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다.
11
Telnet SSH Telnet Telnet 동작 방법 ▶ 옵션 전송 방식. - IAC + <요구의 형태(텔넷 명령어)> + <옵션> - 한쪽에서 요구를 하면 상대방은 응답을 해야 한다. 기호 ASCII 요구형태 WILL 251 옵션을 사용하겠다. DO 252 (상대에게) 옵션을 사용하라 WONT 253 옵션을 사용하지 않겠다. DONT 254 (상대방에게) 옵션을 사용하지 마라 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다. 251
12
Telnet 동작 방법 Telnet ▶ 요구와 응답의 조합은 다음의 경우에만 가능하다. 요구 응답 응답의 의미 WILL DO
SSH Telnet Telnet 동작 방법 ▶ 요구와 응답의 조합은 다음의 경우에만 가능하다. 요구 응답 응답의 의미 WILL DO 옵션 사용을 허락한다. DONT 옵션 사용을 허락하지 않는다. 옵션을 사용하겠다. WONT 옵션을 사용할 수 없다. 옵션을 사용하지 않겠다. 옵션을 사용하지 마라. 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다.
13
Telnet 동작 방법 Telnet ▶ 텔넷 옵션 협상의 예. Telnet SSH 터미널 타입에 대한 협상 요구
SENT WONT NEW-ENVIRON RCVD WILL SUPPRESS GO AHEAD RCVD DO NAWS SENT IAC SB NAWS 0 80 (80) 0 25 (25) RCVD DO LFLOW RCVD DONT LINEMODE RCVD DONT OLD-ENVIRON RCVD WILL STATUS RCVD IAC SB TERMINAL-SPEED SEND SENT IAC SB TERMINAL-SPEED IS 9600,9600 RCVD IAC SB X-DISPLAY-LOCATION SEND SENT IAC SB X-DISPLAY-LOCATION IS "monac:0.0" RCVD IAC SB TERMINAL-TYPE SEND SENT IAC SB TERMINAL-TYPE IS "XTERM" RCVD DO ECHO SENT WONT ECHO RCVD WILL ECHO SENT DO ECHO Debian GNU/Linux 1.3 monac.hackers.org monac login: Connection closed by foreign host. $ telnet telnet> toggle options Will show option processing. telnet> open localhost Trying Connected to localhost. Escape character is '^]'. SENT DO SUPPRESS GO AHEAD SENT WILL TERMINAL TYPE SENT WILL NAWS SENT WILL TSPEED SENT WILL LFLOW SENT WILL LINEMODE SENT WILL OLD-ENVIRON SENT DO STATUS SENT WILL XDISPLOC RCVD DO TERMINAL TYPE RCVD DO TSPEED RCVD DO XDISPLOC RCVD DO NEW-ENVIRON 터미널 타입에 대한 협상 요구 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다. 터미널 타입에 대한 협상 응답
14
# Telnet 설치 및 설정 # XP
15
Telnet 설치 및 설정 (xp) Telnet
SSH Telnet Telnet 설치 및 설정 (xp) ▶ telnet을 이용하기 위해선 3가지의 방법을 진행 해야 된다. - 보안 정책 설정 변경 = telnet을 사용하기 위해 보안 정책 수준 변경 - 계정 추가 = telnet으로 접속 하는 사용자 인증을 위해 필요 - 텔넷 서비스 실행 설정 = Server를 사용하기 위해 설정 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다.
16
Telnet 설치 및 설정 (xp) Telnet ▶ 보안 정책 설정 변경
SSH Telnet Telnet 설치 및 설정 (xp) ▶ 보안 정책 설정 변경 시작 → 제어판 → 관리도구 → 로컬 보안 정책 → 로컬 정책 → 보안 옵션 → 네트워크 엑서스: 로컬 계정에 대한 공유 및 보안 → 일반 – ‘로컬 사용자를 그대로 인증’ 으로 변경 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다. 일반 – 로컬 사용자를 그대로 인증 으로 설정
17
Telnet 설치 및 설정 (xp) Telnet ▶ 계정 추가
SSH Telnet Telnet 설치 및 설정 (xp) ▶ 계정 추가 시작메뉴 → 제어판 → 관리도구 → 컴퓨터관리 → 시스템도구 → 로컬 사용자 및 그룹 → 사용자 메뉴에서 → 동작 [새 사용자]로 계정 추가 계정 추가 후 패스워드 설정 필수!! 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다.
18
자동 으로 설정 하면 윈도우 부팅시 자동으로 Telnet 서비스가 실행됨
SSH Telnet Telnet 설치 및 설정 (xp) ▶ 텔넷 서비스 실행 시작메뉴 → 제어판 → 관리도구 → 서비스 목록에 Telnet 서비스를 실행 자동 으로 설정 하면 윈도우 부팅시 자동으로 Telnet 서비스가 실행됨 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다.
19
Telnet 설치 및 설정 (xp) Telnet ▶ 접속 Test CentOS → XP 로 접속 Telnet SSH
공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다.
20
vim /etc/sysconfig/i18n source /etc/sysconfig/i18n
Telnet SSH Telnet CentOS 화면 깨짐 현상 ▶ 화면 깨짐 현상 복구 하기 다음과 같이 한글이 깨지는 현상이 발생하면 환경설정 파일을 변경 해주어야 한다. 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다. 다음과 같이 수정 vim /etc/sysconfig/i18n 수정 후 reboot 또는 source /etc/sysconfig/i18n
21
# Telnet 설치 및 설정 # Linux
22
Telnet 설치 및 설정 (Linux) Telnet
SSH Telnet Telnet 설치 및 설정 (Linux) ▶ telnet을 이용하기 위해선 3가지의 방법을 진행 해야 된다. - Telnet Server 설치= Telnet Server를 운영하기 위해 필요 - xinetd 데몬 설정 및 재실행= 리눅스 시스템이 부팅될 때 적재되는 서비스 데몬들을 관장하는 수퍼데몬을 xinetd 데몬이라 하는데 설정 후 재실행 해주어야 설정정보를 참조함 - 방화벽 Telnet Port 열기 = 서비스를 위해 Telnet포트 열기 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다.
23
Telnet 설치 및 설정 (Linux) Telnet ▶ Telnet Server 설치하기
SSH Telnet Telnet 설치 및 설정 (Linux) ▶ Telnet Server 설치하기 1) rpm –qa | grep telnet-server 로 telnet서버의 rpm 설치 유무 확인 2) 미 설치시 yum –y install telnet-server 명령어로 설치 진행 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다.
24
disable를 yes에서 no로 설정해 줘야 telnet을 사용가능
SSH Telnet Telnet 설치 및 설정 (Linux) ▶ xinetd 데몬 설정 및 재실행 1) vim /etc/xinetd.d/telnet으로 들어가 다음과 같이 수정 2) 설정 후 /etx/init.d/xinetd restart xinetd 설정 socket_type tcp 기반이면 stream, udp 기반이면 dgram으로 설정 wait no 이면 동시접속 가능, yes 이면 동시접속 불가능 user 서비스 프로세스의 소유자를 나타냄 server 서비스 프로세스의 파일 경로 disable 서비스 사용유무(no:사용, yes:불가) 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다. disable를 yes에서 no로 설정해 줘야 telnet을 사용가능
25
23번 (Telnet) Port를 ACCEPT 시킴
SSH Telnet Telnet 설치 및 설정 (Linux) ▶ 방화벽 Telnet port 열기 1) vim /etc/sysconfig/iptables 에 가서 telnet의 포트를 열어 줌 (없다면 setup에서 방화벽 설정) 2) 설정 후 /etx/init.d/iptables restart 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다. 23번 (Telnet) Port를 ACCEPT 시킴 사용 안함은 DROP
26
Telnet 설치 및 설정 (Linux) Telnet ▶ Root 사용자 접속 허용 하기
SSH Telnet Telnet 설치 및 설정 (Linux) ▶ Root 사용자 접속 허용 하기 1) /etc/securetty의 파일의 이름을 잠시 바꾸어줌 (재사용시 다시 이름을 바꾸면 됨) 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다.
27
# Telnet 설치 및 설정 # Cisco Router
28
Telnet 설치 및 설정 Telnet ▶ Cisco Router Telnet 설정 PC -1
SSH Telnet Telnet 설치 및 설정 ▶ Cisco Router Telnet 설정 Router로 Telnet을 접속 하기 위해선 enable, console Mode의 Password 설정을 해야 한다. 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다. PC -1
29
# Telnet Port확인 #
30
Telnet port 확인하기 Telnet ▶ telnet [IP] [port번호]를 통해서 연결 상태를 확인 가능
SSH Telnet Telnet port 확인하기 ▶ telnet [IP] [port번호]를 통해서 연결 상태를 확인 가능 1) 방화벽 close (포트 막힘) = 포트 오픈 필요 2) 방화벽 open 프로세스가 off =프로세스를 실행 3) 방화벽 open, 프로세스 on Trying Trying telnet: Unable to connect to remote host: Connection refused 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다. Trying Connected to Escape character is '^]'.
31
Telnet SSH Telnet Telnet 취약점 ▶ Telnet은 모든 정보를 평문으로 전송함으로써 Wireshark의 promiscuous Mode로 쉽게 내용을 볼 수 있음 1) 사용자의 정보 노출 * ID, Password등 명령어까지 중요한 데이터가 쉽게 노출됨. 2) IP 위, 변조 위험 * Sniffing, Spoofing 등 을 통해 2차 공격 대상이 되기 쉬움 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다.
32
Telnet 취약점 Telnet ▶ 사용 가능한 공격 방법. Brute Force Attack
SSH Telnet Telnet 취약점 ▶ 사용 가능한 공격 방법. Brute Force Attack - 사용자 IP와 PW를 무작위로 시도해 볼 수 있다. Sniffing & Spoofing - 전송되는 패킷 정보를 획득하여 악용할 수 있다.(평문전송) Telnet 하이젝킹. - TCP는 시퀀스 번호만 보기때문에 이를 이용하여 해킹이 가능 Reverse Telnet Attack - 역으로 Telnet 서비스를 통해 공격자에게 접속하도록 유도하는 공격 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다.
33
# Wireshark 분석 # Telnet
34
Telnet SSH Telnet WireShark 패킷 분석 ▶ Test 환경 - telnet server = xp( ) - client = centos( ) - 접속 ID = user1 - Paassword = 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다.
35
Telnet SSH Telnet WireShark 패킷 분석 1) TCP Session Conection 3way handshake 방법을 통해 TCP 세션을 연결 한다. 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다. Centos(2)가 xp(1)에게 3way handshake 방법을 통해 TCP Session Conection을 시도 * 동작 방법 = SYN(cent) -> SYN,ACK(xp) -> ACK(cent)
36
Telnet SSH Telnet WireShark 패킷 분석 2) Data Transfer 실시간으로 데이터 전송해야 되기 때문에 지속적으로 PSH,ACK 가 발생 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다.
37
원래 16진수를 보아야 되지만 Wireshark는 ascii code로 변환 해줌
Telnet SSH Telnet WireShark 패킷 분석 2) Data Transfer telnet(23)에서 인증 프로세서를 시작하기 위해 login:을 요청 원래 16진수를 보아야 되지만 Wireshark는 ascii code로 변환 해줌 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다.
38
Telnet SSH Telnet WireShark 패킷 분석 2) Data Transfer telnet의 특성 상 Client 입력을 Server쪽에서 한번더 확인 후 TCP패킷을 전송 u라는 문자 입력시 3번의 동작이 발생 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다.
39
Telnet SSH Telnet WireShark 패킷 분석 2) Data Transfer telnet의 특성 상 Client 입력을 Server쪽에서 한번더 확인 후 TCP패킷을 전송 나 u 쳤어 Client Server ㅇㅋ u 맞지? Client Server 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다. Client Server 맞다 ACK 받아 [ Data Transfer 동작 ]
40
WireShark 패킷 분석 Telnet 2) Data Transfer Follow TCP Stream기능을
SSH Telnet WireShark 패킷 분석 2) Data Transfer Follow TCP Stream기능을 이용하면 Telnet의 모든 Data 흐름 동작들을 나열하여 쉽게 볼 수 있다. 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다.
41
* 동작 방법 = FIN,ACK(xp) -> FIN,ACK(cent) -> ACK(xp)
Telnet SSH Telnet WireShark 패킷 분석 3) Telnet 접속 종료 exit 명령어를 통해 telnet의 접속을 끊으면 다음과 같이 FIN, ACK 메세지를 통해 Session을 끊음 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다. * 동작 방법 = FIN,ACK(xp) -> FIN,ACK(cent) -> ACK(xp)
42
WireShark 패킷 분석 Telnet ▶ 결론
SSH Telnet WireShark 패킷 분석 ▶ 결론 - Telnet은 패킷을 전송하는 기준이 enter(input end)방식이 아니라 input 방식 - Telnet 통신할때 암호화 하지않기 때문에 정보가 쉽게 노출됨 - Telnet 서비스보단 암호화를 사용하는 ssh를 사용하는게 바람직 - Telnet 서비스 및 port를 차단을 통해 보안 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다.
43
# Telnet 보안 방법 #
44
Telnet 보안 Telnet xinetd 데몬 Telnet 사용 제거 disable를 no에서 yes로 설정
SSH Telnet Telnet 보안 xinetd 데몬 Telnet 사용 제거 1) vim /etc/xinetd.d/telnet으로 들어가 다음과 같이 수정 2) 설정 후 /etx/init.d/xinetd restart 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다. disable를 no에서 yes로 설정
45
23번 (Telnet) Port를 DROP 시킴
SSH Telnet Telnet 보안 ▶ 방화벽 Telnet port 닫기 1) vim /etc/sysconfig/iptables 에 가서 telnet의 포트를 닫음 2) 설정 후 /etx/init.d/iptables restart 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다. 23번 (Telnet) Port를 DROP 시킴
46
* SSH 동작 방법 * SSH 설치 및 설정 * SHH 의 취약점 * Wireshark 패킷 분석 * SSH 보안 방법
47
Telnet SSH SSH SSH 란? ▶ SSH(Secure Shell) 이란, 원격 로그인 과정에서 발생 하는 보안 문제를 해결하기 위해 개발된 텔넷 응용 프로그램 보안 버전 ▶ 기본적으로 22번 포트를 사용. 암호화 기법을 통해 통신 내용이 노출 되더라도 이해할 수 없는 암호화된 문자만 보여준다. ▶ ssh는 ssh1, ssh2 2개의 프로토콜을 사용 - ssh1 = RSA 키만을 지원 Public-key를 이용하여Session-Key를암호화 - ssh2 = RSA와 DSA 모두 지원, 서버에맞게 선택 Diffie-Hellman 방식의 암호화방식을 사용 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다.
48
SSH 란? ▶SSH의 4가지 기능 SSH 1. 인증(Authentication)
Telnet SSH SSH SSH 란? ▶SSH의 4가지 기능 1. 인증(Authentication) - 사용자는 SSH 서버에 접속할 때 신분을 증명해야 하는데, 전통적인 패스워드 인증 방식과 더불어 RSA, DSA등 공개키 방식의 인증 방법도 지원 - SSH 클라이언트는 처음 접속한 서버의 키를 저장함으로써 서버가 변경되었을 경우에도 판별 가능 2. 암호화(Encryption) - SSH는 네트워크를 통해 전달되는 데이터를 암호화함. 그래서 누군가 중간에서 데이터를 가로채더 라도 내용을 알 수가 없음. - 대칭키 방식의 암호화 방식을 제공하고 새로운 암호화기법을 추가할 수 있게 설계되어 있음 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다.
49
Telnet SSH SSH SSH 란? ▶SSH의 4가지 기능 3. 무결성(Integrity) - 네트워크를 통해 받은 데이터가 변경되지 않았음을 보장 - 누군가 데이터를 가로채서 다른 정보를 보내는 것을 방지할 수 있음 MAC(Message Authentication Code)을 통해 이를 구현 4. 압축(Compression) - SSH 연결을 통해 보낸 데이터를 압축 할 수 있음 - 데이터를 받는 쪽에서는 복호화(decryption)한 후 압축을 해제 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다.
50
# SSH 연결 동작 #
51
SSH 연결 동작 방법 SSH [Client] [Server]
Telnet SSH SSH SSH 연결 동작 방법 서버야 통신하자! 그래 연결되네 [Client] [Server] (1) 클라이언트가 서버에 접속을 위해 3way hand shake 수행 SSHv1/SSHv2 둘다 가능해 어떤 버전 쓸래? 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다. [Client] [Server] (2) 세션 연결시 서버는 클라이언트에게 SSH 어던 버전을 사용할지 물어봄
52
SSH 연결 동작 방법 SSH [Client] [Server] (3) 클라이언트는 SSHv2로 통신하자고 전달 [Client]
Telnet SSH SSH SSH 연결 동작 방법 SSHv1 가능 SSH-1.5 SSHv1 SSHv2 가능 SSH-1.99 SSHv2 가능 SSH-2.0 SSHv2로 연결 하자 [Client] [Server] (3) 클라이언트는 SSHv2로 통신하자고 전달 나의 공개키를 받아라!! 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다. [Client] [Server] (4) Server는 Public Key를 Cleint에게 전송
53
(5) 클라이언트는 Server공개키+ Client 비밀키 +데이터 = 암호화된 데이터 를 전송
Telnet SSH SSH SSH 연결 동작 방법 나의 암호화된 데이터를 받아라!! [Client] [Server] (5) 클라이언트는 Server공개키+ Client 비밀키 +데이터 = 암호화된 데이터 를 전송 이건 덤이다 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다. [Client] [Server] (6) 그리고 Client의 공개키도 전송
54
(7) Server는 Client의 공개키+ Server 비밀키 + 암호화된 데이터 를 복호화 시킴
Telnet SSH SSH SSH 연결 동작 방법 아하! 이런 내용이군!! [Client] [Server] 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다. (7) Server는 Client의 공개키+ Server 비밀키 + 암호화된 데이터 를 복호화 시킴
55
# Wireshark 분석 # SSH
56
Telnet SSH Telnet WireShark 패킷 분석 ▶ Test 환경 - telnet server = centos( ) - client = xp( ) - 접속 ID = user1 - Paassword = 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다.
57
Telnet SSH SSH WireShark 패킷 분석 한다. 1) TCP Session Conection 3way handshake 방법을 통해 TCP 세션을 연결 한다. 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다. xp가 centos에게 3way handshake 방법을 통해 TCP Session Conection을 시도 * 동작 방법 = SYN(xp) -> SYN,ACK(cent) -> ACK(xp)
58
WireShark 패킷 분석 SSH 2) SSH 버전 선택 두 PC에서 사용할 SSH 버전을 서로 협상 한다.
Telnet SSH SSH WireShark 패킷 분석 2) SSH 버전 선택 두 PC에서 사용할 SSH 버전을 서로 협상 한다. Sshv1으로 통신 하자 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다. Sshv2로 통신 하자
59
SSHv1의 Key교환 = Public Key, Session Key
Telnet SSH SSH WireShark 패킷 분석 ㄹㅀㄴㅇㄹ 3) Key 전달 데이터를 보내면서 Key값을 서로 전송 한다. 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다. SSHv1의 Key교환 = Public Key, Session Key
60
SSHv2의 Key = Exchange Init
Telnet SSH SSH WireShark 패킷 분석 3) Key 전달 데이터를 보내면서 Key값을 서로 전송 한다. SSHv2의 Key = Exchange Init 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다.
61
암호화를 통하여 XP, CentOS가 서로 통신 하는 모습
Telnet SSH SSH WireShark 패킷 분석 3) Key 전달 데이터를 보내면서 Key값을 서로 전송 한다. 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다. 암호화를 통하여 XP, CentOS가 서로 통신 하는 모습
62
* 동작 방법 = FIN,ACK(xp) -> FIN,ACK(cent) -> ACK(xp)
Telnet SSH Telnet WireShark 패킷 분석 4) ssh접속 종료 exit 명령어를 통해 ssh의 접속을 끊으면 다음과 같이 FIN, ACK 메세지를 통해 Session을 끊음 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다. * 동작 방법 = FIN,ACK(xp) -> FIN,ACK(cent) -> ACK(xp)
63
# SSH 보안 구성 #
64
SSH 보안 구성 SSH ▶ SSHv1 보다 SSHv2를 사용 ▶ 안전한 IP 대역대의 사용자에게만 해당 port를 열어준다.
Telnet SSH SSH SSH 보안 구성 ▶ SSHv1 보다 SSHv2를 사용 ▶ 안전한 IP 대역대의 사용자에게만 해당 port를 열어준다. /etc/host.allow 해당 IP에게만 해당 서비스 허용 ex) 만 ssh사용 가능 공격 개요 일반적인 웹 환경에서 사용자의 요청이 웹서버 전달되면, 웹서버에서는 사용자 요청을 완료하기 위해 DB 서버로 데이터 쿼리를 보내는 과정이 발생한다. SQL injection 공격의 핵심은 사용자의 요청에 SQL 구문을 삽입하여 DB 서버로 보내는 데이터 쿼리를 조작하는 것이다. /etc/host.deny 해당 IP에게만 해당 서비스 불가 ex) 모든 IP들에게 모든 서비스 접근 불가
Similar presentations