FTP (File Transfer Protocol)

Slides:



Advertisements
Similar presentations
7 장. 원격지에서 리눅스서버를 관리하자. 텔넷서버를 설치 / 운영한다. SSH 서버를 운영한다. VNC 서버를 설치 / 운영한다.
Advertisements

HTTP (Hypertext Transfer Protocol)
Format String Attack! 포맷 스트링 공격 경일대학교 사이버보안학과 학년 남주호.

정보 보안 개론과 실습 네트워크 해킹과 보안 3부 해킹 전 정보 획득 Chapter 10. 목록화.
Oozie Web API 기능 테스트 이승엽.
제어판 –> 네트워크 및 인터넷 –> 네트워크 및 공유센터 이동 후 화면에서 “새 연결 또는 네트워크 설정” 클릭
Chapter 4: 이더넷 (Ethernet)
Image & Video processing
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 11장 프로세스간 통신 인공지능실험실 석사 2학기 이희재
Postfix MTA SPARCS 08 진준호 ( Alex ).
Ch.07-5 xml-rpc 사용하기 김상엽.
Network Lab. Young-Chul Hwang
PHP입문 Izayoi 김조흔.
소켓 모델 주소 지정 in_addr_t inet_addr(const char *ip_address) 연결 지향 모델 (TCP)
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
FTP 와 Filezilla 프로그램 사용법
File Transfer Protocol
Chapter 6: 인터넷 제어 메시지 프로토콜(ICMP)
제 14장 Multicast & Broadcast
Traceroute 기능 분석 및 프로그래밍
Chapter 3: AMAN 2002 구성 및 사용법
UDP (User Datagram Protocol)
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
IP (Internet Protocol)
Chapter 21 Network Layer: ARP, ICMP (IGMP).
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
FTP 프로그램 채계화 박재은 박수민.
제 19 장 TFTP 19.1 메시지 19.2 연결 19.3 데이터 전송 19.4 UTP 포트 19.5 TFTP 예제
인공지능실험실 박사 1학기 장성만 TCP/IP Socket Programming… 9장 소켓의 다양한 옵션 인공지능실험실 박사 1학기 장성만
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
NJM Messenger 박상원 박연호.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
01. DHCP의 개념 조직의 네트워크에 연결되어 있는 워크스테이션의 TCP/IP 설정을 자동화하기 위한 표준 프로토콜
메시지 큐[5] – test1.c 메시지 제어: msgctl(2) #include <sys/msg.h>
제 18 장 FTP 18.1 연결 18.2 통신 18.3 명령어 처리 18.4 파일 전송 18.5 사용자 인터페이스
KHS JDBC Programming 4 KHS
TCP/IP Socket Programming…
Trivial File Transfer Protocol (TFTP)
시스템 인터페이스 Lab3 Unix 사용법 실습.
Network Security WireShark를 활용한 프로토콜 분석 I.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
24장. 파일 입출력.
제 15 장 BOOTP와 DHCP BOOTP 15.2 동적 호스트 설정 프로토콜.
제 27 장 파일 전송 프로토콜.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
오라클 넷(Oracle Net)의 개념 및 구성
웹디자인
Network 네트워크 이론 및 실습 TCP / IP 4장.
Packet sniffing 응용 레벨이 아닌 네트워크 디바이스 레벨에서의 데이타을 얻는 것 네트워크 상의 트래픽을 분석
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
01. DHCP의 개념 조직의 네트워크에 연결되어 있는 워크스테이션의 TCP/IP 설정을 자동화하기 위한 표준 프로토콜
학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성. 학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성.
웹(WWW).
연습 문제 풀이 HTTP 메시지의 종류 요청/ 응답 구별  메소드로 시작되므로 요청 메시지임
Introduction to JSP & Servlet
WZC 무선 연결 방법 (Windows 7 Ver.).
~27 윤형기 Python 프로그래밍 (보충) ~27 윤형기
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
세션에 대해 알아보고 HttpSession 에 대해 이해한다 세션 관리에 사용되는 요소들을 살펴본다
시스템 인터페이스 Lab1 X-window 및 명령어 사용.
슬라이드 쇼의 설정 슬라이드 쇼의 실행 파일과 폴더의 관리 글꼴을 포함해서 저장 웹 페이지로 게시 압축 파일
인공지능실험실 박사 1학기 장성만 TCP/IP Socket Programming… 제 8장 도메인 이름과 인터네 주소 인공지능실험실 박사 1학기 장성만
Part 05 TCP/IP 1. 네트워크 2. 포트번호.
채팅 및 파일전송 프로그램 권 경 곤 김 창 년.
FTP 스캔 설정 방법 강사 : 이성휘 대리.
Network Lab. Young-Chul Hwang
운영체제보안 SELinux 실습 박민재
ARP.
Presentation transcript:

FTP (File Transfer Protocol) Chapter 11: FTP (File Transfer Protocol) 2003. 3.

FTP 기능 네트워크 상에서 파일을 다른 시스템으로 전달하는 프로토콜 제어 연결(포트 21번)과 데이터 연결(포트 20번)로 구성 파일 이름의 구조, 텍스트 표현 방식, 디렉토리 구조 고려 사용자 인터페이스 사용자 프로토콜 인터프리터 사용자 데이터 전송 기능 클라이언트 서버 프로토콜 서버 데이터 서버 파일 시스템 제어 연결 데이터 연결 (FTP 명령/응답)

제어 연결과 데이터 연결 제어 연결 데이터 연결 전송시의 제어 명령을 전달 포트 21번 이용 데이터 연결관련 제어 정보 : 데이터 전송 포트, 전송 모드, 데이터 표현 타입 등 파일 관련 명령 : 파일 저장, 첨부, 삭제 등 데이터 연결 포트 20번 이용 데이터(파일) 전송을 위한 연결

제어 연결 설정 제어 프로세스 데이터 전송 21 6000 a. 서버의 수동 오픈 b. 클라이언트의 능동 오픈 자식 제어 생성 7000 c. 서버의 원 제어 프로세스와 자식 제어 프로세스 상태 클라이언트 서버

데이터 연결 설정 제어 프로세스 데이터 전송 21 6000 수동 오픈 a. 클라이언트의 수동 오픈 6100 c. 서버의 데이터 전송 프로세스가 자식 데이터 전송 프로세스 생성 20 b. 클라이언트의 수동 오픈 포트 번호를 서버로 전달 PORT 6100 자식 데이터 전송 프로세스 7100 d. 자식 데이터 전송 프로세스와의 통신 클라이언트 서버

데이터 연결 설정을 통한 통신 데이터 타입 데이터 구조 전송 모드 다양한 데이터 타입 설정 ASCII, EBCDIC, IMAGE, LOCAL 타입 TYPE 명령을 통해 변경 데이터 구조 파일 구조, 레코드 구조, 페이지 구조 STRU 명령을 통해 변경 전송 모드 전송 방식, MODE 명령을 통해 변경 스트림 모드, 블록 모드, 압축 모드

FTP 명령 접근 제어 명령 전송 변수 명령 서비스 명령 접근 권한 및 인증 절차를 위해 사용되는 명령 USER, PASS, ACCT, CWD, CDUP, SMNT, REIN, QUIT 전송 변수 명령 기본적으로 할당된 변수의 값을 변경할 때 PORT, PASV, TYPE, STRU, MODE 서비스 명령 파일 전송 관련 제어 정보를 전달 RETR, STOR, STOU, APPE, ALLO, REST, RNFR, RNTO, ABOR, DELE, RMD, MKD, PWD, LIST, NLIST, SITE, SYST, STAT, HELP

FTP 응답 코드 FTP 응답 메시지의 첫번째 십진수 의미 FTP 응답 메시지의 두번째 십진수 의미 십진수 의미 1yz 요청한 명령이 초기화 됨 (긍정의 준비 응답) 2yz 요청한 명령이 성공적으로 완료됨 (긍정의 완성 응답) 3yz 명령은 수락되었지만 정보가 더 필요함 (긍정의 진행 중 응답) 4yz 명령이 수락되지 않음 (일시적인 부정의 완료 응답) 5yz 명령이 수락되지 않음 (영구적인 부정의 완료 응답) 십진수 의미 x0z 문법 에러 x1z 정보 – 상태나 도움말 등 정보 요청에 대한 응답 x2z 연결 – 제어 연결과 데이터 연결 참조에 대한 응답 x3z 인증과 계정 – 로그인과 계정 확인 절차에 대한 응답 x4z 지정되지 않음 x5z 파일 시스템 – 파일 시스템 서버의 상태

FTP 패킷 분석 FTP 제어 연결을 통한 전송

FTP 패킷 분석 44 45 4C 45 20 74 65 73 74 2E 74 78 74 0D 0A Test.txt 파일 제거 DELE 명령 서비스 명령 디렉토리 명이나 파일명을 매개변수로 전달 명령 매개변수 DELE 공백 Test.txt 라인의 끝 44 45 4C 45 20 74 65 73 74 2E 74 78 74 0D 0A

FTP 패킷 분석 FTP 데이터 연결을 통한 전송 데이터 연결을 통한 파일 확인 (test.txt)

FTP 패킷 분석 FTP 포트 20번을 이용한 데이터 전송 전달된 파일 크기 : 44 바이트 파일 내용 파일 데이터 (test.txt) 54 68 69 73 20 69 73 20 74 65 73 74 20 66 6F 72 20 46 54 50 T h i s i s t e s t f o r F T P 28 46 69 6C 65 20 54 72 61 6E 73 66 65 72 20 50 72 6F 74 6F 63 6F 6C 29 ( F i l e T r a n s f e r P r o t o c o l )

연습 문제 헥사 값의 의미 FTP 응답 코드의 의미 분석 54 59 50 45 20 41 0D 0A 32 30 30 20 54 79 70 65 20 73 65 74 20 74 6F 20 41 2E 0D 0A (a) (b)

Guru를 이용한 FTP 패킷 분석

FTP 패킷 캡처 프로그램 작성 (FtpViewer)

프로젝트 생성 및 환경 설정 다이얼로그 기반의 프로젝트 생성 Include 경로 및 라이브러리 경로 설정 Include files : C:\AMAN2002\include Library files : C:\AMAN2002\lib Tools->Options 메뉴 이용 Ncap 라이브러리(Ncapd.lib)를 프로젝트에 포함 Project->Settings 메뉴 이용

대화상자 디자인 FtpViewer 메인 대화상자 디자인 List Control Edit Box Button 1 2 3 4 5 6 7 8 Button

Control 속성 # 종류 ID 속성 변수 1 List Control IDC_LIST View: Report CListCtrl m_LIST_PacketInfo 2 Edit Box IDC_EDIT_AsciiResult Read-Only CString m_EDIT_strAsciiResult 3 IDC_EDIT_HexaResult CString m_EDIT_strHexaResult 4 EditBox IDC_EDIT_Monitoring int m_EDIT_iCountInput 5 IDC_EDIT_Monitored int m_EDIT_iCountOutput 6 Button IDC_BUTTON_StartCapture 7 IDC_BUTTON_Info 8 IDCANCEL Default Button

이벤트 처리 # 종류 ID 메시지 함수명 1 List Control IDC_LIST NM_CLICK OnClickList() 6 Button IDC_BUTTON_StartCapture BN_CLICKED OnBUTTONStartCapture() 7 IDC_BUTTON_Info OnBUTTONInfo() 8 IDCANCEL OnCancel()

어댑터 열기 // 선택된 네트워크 어뎁터를 사용할 수 있도록 초기화. // FTP는 TCP를 기반으로 데이터를 획득하므로 TCP 필터 설정 if(pDlg->OpenAdaptor(2)) { ::AfxMessageBox("Adaptor open 실패"); pDlg->CloseAdaptor(); delete pDlg; return; }

패킷 캡처 //패킷을 획득하여 List Control에 표시. #define MaxBufferLen 2048 #define EtherHeaderLength 14 … int i = 0; unsigned char arrTemp[MaxBufferLen]; while(i < m_EDIT_iCountInput) { memset(arrTemp, 0, MaxBufferLen); //패킷을 하나 획득함. 음수가 return되면 에러가 발생한 것. int iLengthOfPacket = pDlg->Ncap(arrTemp, MaxBufferLen); if(iLengthOfPacket <0 ) continue; // 패킷 분석 (슬라이드 22) }

패킷 분석 //MASK unsigned char MASK1 = 0x0F; //IP 헤더의 헤더길이 정보를 얻기 위해 사용 unsigned char MASK2 = 0xF0; //TCP 헤더의 헤더길이 정보를 얻기 위해 사용 // IP 헤더 길이 정보 획득 arrTemp[EtherHeaderLength] = arrTemp[EtherHeaderLength] & MASK1; int iIpHeaderLength = arrTemp[EtherHeaderLength]<<2; // TCP 헤더의 근원지 포트 번호 unsigned int iSourcePort = pDlg->Twobytes_to_number( arrTemp[EtherHeaderLength + iIpHeaderLength], arrTemp[EtherHeaderLength + iIpHeaderLength+1]); // TCP 헤더의 목적지 포트 정보 획득 unsigned int iDestinationPort = pDlg-> Twobytes_to_number( arrTemp[EtherHeaderLength + iIpHeaderLength +2], arrTemp[EtherHeaderLength + iIpHeaderLength+1+2]); // FTP 패킷 구별 (슬라이드 23) …

FTP 패킷 구별 if(iSourcePort == 20 || iDestinationPort == 20 || iSourcePort == 21 || iDestinationPort == 21) { … // 근원지 포트 및 목적지 포트를 리스트에 출력 // TCP 헤더 길이 정보 획득 arrTemp[EtherHeaderLength + iIpHeaderLength + 12] = arrTemp[EtherHeaderLength + iIpHeaderLength + 12] & MASK2; arrTemp[EtherHeaderLength + iIpHeaderLength + 12]>>4; int iTcpHeaderLength = arrTemp[EtherHeaderLength + iIpHeaderLength + 12] << 2; // FTP 메시지 전체 출력 (슬라이드 24) }

FTP 메시지 전체 출력 // 메시지 CString strFtpMessage = _T(""); CString strTemp = _T(""); // FTP 데이터의 시작 지점 int iFtpDataStart = EtherHeaderLength + iIpHeaderLength + iTcpHeaderLength; for(int j=iFtpDataStart; j< iLengthOfPacket; j++) { strTemp.Format(_T("%c"), arrTemp[j]); // 아스키 형태로 출력 m_strDataBuffer[i] += strTemp; strTemp.Format(_T("%02X "), arrTemp[j]); // 헥사 형태로 출력 strFtpMessage += strTemp; } m_LIST_PacketInfo.SetItem(i, 3, LVIF_TEXT, strFtpMessage, 0, 0, 0, 0);

FtpViewer 실행 모습

FtpViewer를 이용한 FTP 패킷 분석 포트 21번 제어 연결을 통해 제어 명령 전달 (요청) TYPE I 명령 : 데이터 타입을 Image 형으로 변경 명령 매개변수 TYPE 공백 I 라인의 끝 54 59 50 45 20 49 0D 0A

FtpViewer를 이용한 FTP 패킷 분석 응답 코드 200번 : 명령을 완료함 응답 코드 응답코드 설명 200 공백 Type set to I 라인의 끝 32 30 30 20 54 79 70 65 20 73 65 74 20 74 6F 20 49 2E 0D 0A

참고 문헌 서승호 외, AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍, 정익사, 2002. RFC 959, J. Postel, J.K. Reynolds. File Transfer Protocol, Oct 1985. RFC 854, J. Postel, J. Reynolds, Telnet Protocol Specification, May 1983. RFC 1635, P. Deutsch, A. Emtage(Bunyip), A. Marine(NASA NAIC), How to Use Anonymous FTP, May 1994. RFC 697, Jim Lieb, SUMEX-AIM, CWD Command of FTP, July 1975. RFC 412, G. Hicks, User FTP Documentation, Nov 1972. RFC 463, A.K. Bhushan. FTP commants and response, Feb 1973. 11.7 W. Richard Stevens, “TCP/IP Illustrated, Volume I”, Addison wesley, 1996. Behrouz A. Forouzan, “TCP/IP Protocol Suite”, McGraw-Hill, 2000. 김영탁, 김종근, 조유제, 한기준 공저, “데이타 통신 및 컴퓨터망”, 정익사, 1999.