본문 바로가기

Network Hacking

27~29일차] FTP 패킷 분석

FTP

파일 전송 프로토콜(File Transfer Protocol)의 약자로 TCP/IP 네트워크 상에서 컴퓨터들이 파일을 교환하기 위해 1971년에 최초로 공개된 통신 규약이다. 네트워크에 연결된 컴퓨터끼리 데이터를 원활하게 교환하기 위한 목적으로 개발되었다. 파생형으로 TLS 프로토콜과 결합한 FTPS, SSH 프로토콜과 결합한 SFTP가 있다. FTP와 FTPS는 보통 제어용으로 21번 포트 및 데이터 전송용으로 20번 포트를, SFTP는 보통 22번 포트를 쓰며 FTPS와 SFTP는 보안 전송이라는 특성 상 FTP보다 파일 전송 속도가 느린 편이다. [위키 백과]

 

vsFTP
Cris Evans에 의해 개발된 GPL기반의 FTP서버로 매우 안정적이면서 빠른속도와 강력한 보안기능을 제공하는 프로그램이다.
 
vsFTP의 특징
홈페이지 : http://vsftpd.beasts.org
           ftp://vsftpd.beasts.org/users/cevans (소스)
   - 가상 유저 설정을 통하여 계정의 쉘 로그인을 방지하여 안전한 서버운영을 지원
   - Standalone 또는  inetd 모드로 효율적인 데몬 관리 지원
   - 효율적인 서버관리를 위한 대역폭 조절 기능 지원 ( 전송량 제한)
   - 암호화된 패스워드를 통한 보안 강화 지원
   - 가상 호스트 기능 지원으로 아이피마다 독립적인 FTP 운영
   - TCP wrapper 통합으로 IP 접근제어 설정 가능
   - ASCII 모드로 파일이 전송되는 것을 금지하여 DoS 공격 방지

 

1. Server NETWORK-V(10.10.10.20) 서버 환경 구성

1). #> yum -y install vsftpd (서버 설치)   ,  #> service iptables stop ( 방화벽 해제 )

 

2). 주 설정 파일 수정 ( root 계정 접속을 위한 설정 )

#> vi /etc/vsftpd/vsftpd.conf

# 15번행 : 로컬 계정을 활성화

# 119번행 userlist_enable=yes : user_list 파일 활성화 ( 기본값)

# 120번행 userlist_deny=No :

 

3). #> vi /etc/vsftpd/ftpusers    //  ftp 로그인을 불허하는 명단이므로 root계정을 주석처리.

 

4). #> echo "FTP TEST" > /root/ftp_test               // 테스트용 ftp_test 파일 만들기.

5). #> service vsftpd start ( vsftp 데몬 실행 )

 

 

2. Client NETWORK-A(10.10.10.10)

1). #> yum -y install vsftpd(클라이언트 설치)

 

2). #> ftp 10.10.1020    // Server 접속

 

3). #> help         // 이용할 수 있는 명령어

 

4). 파일 받아오기(get) + 보내기(put)

 

+ server에서 로그 확인.

 

 

3. 위의 과정을 wireshark로 캡쳐하고 과정을 살펴보자 .

 

 

(출처 : 상명대학교 프로토콜 공학연구실)

 

 


 

데이터를 보내는 2가지 방식

 

1. PASSIVE MODE

패시브 모드는 기본 모드로서, 클라이언트는 랜덤한 포트로 접속하고 서버는 21번의 포트로 제어 및 접속을 위한 명령어를 전달한다.

그리고 데이터를 전송할 때는 서로 랜덤한 포트로 클라이언트가 서버에 데이터를 가져오거나 데이터를 준다. 이 과정을 WIRESHARK로 살펴보면 다음과 같다.

 

# 124번을 보면 서버가 클라이언트에게 어떤 포트로 데이터를 이동할지 포트번호를 알려주고 클라이언트는 서버에게 받은 포트를 통해 데이터를 보내거나 받아온다.

 

# 통신의 흐름..

 

 

 

2. ACTIVE MODE

# active 모드는 위의 패킷을보면 20번포트로 서버에서 데이터를 보내거나 가져오는 것을 확인 할 수 있다.

# 데이터를 보내거나 받아오기 전에 클라이언트에서는 랜덤한 포트번호를 서버에게 알려주는데 그 포트로 서버가 데이터를 보내거나 받아오는 것이다.

# 이런한 동작방식 때문에 클라이언트 입장에서는 데이터를 주고 받을 때마다 서버로부터 오는 데이터가 방화벽에 걸리는 문제가 있기 때문에 기본적으로 PASSIVE MODE를 이용 한다.

 

 


 

Q1. FTP의 목적은 무엇인가?
A1. FTP는 기본 파일 전송 프로토콜이다. 어떤 파일도 FTP을 이용해 전송될 수 있다.

 

Q2. FTP 통신에 사용되는 두 연결은 무엇인가?
A2. FTP 통신음 명령 채널에 첫 번째 연결을 사요하고, 데이터 채널에 두 번째 연결을 사용한다.

 

Q3. FTP PORT 명령의 목적은 무엇인가?
A3. PORT 명령은 능동모드 FTP 연결 설정 시 클라이언트가 사용한다. PORT는 FTP 서버에 의해 확립된 데이터 채널을 클라이언트가 수신하기 위해 IP 주소와 포트번호를 서버에게 말해주기 위해서 클라이언트에 의해 사용된다.

 

Q4. FTP PASV 명령의 목적은 무엇인가?
A4. PASV 명령은 수동모드 FTP 연결 설정 시 클라이언트가 사용한다. FTP 서버가 수동 모드 연결을 지원한다면 서버는 서버가 FTP 클라이언트에 의해 확립된 데이터 채널 연결을 수신하기 위해 IP 주소와 포트번호를 갖는 PASV 패킷을 응답한다.

 

Q5. FTP 트래픽은 얼마나 안전한가?
A5. FTP는 안전하지 않다. FTP 사용자 이름과 패스워드가 평문으로 전송되기 때문이다.

 

Q6. 21번 포트에서 동작하는 FTP 명령 트래픽을 수집하기 위한 구문과 디스플레이 필터는 무엇인가?
A6. 수집 필터 tcp port 21 / 디스플레이 필터 ftp