검수요청.png검수요청.png

스니퍼

해시넷
dudrb0106 (토론 | 기여)님의 2021년 8월 9일 (월) 12:30 판
이동: 둘러보기, 검색

스니퍼

스니퍼(sniffer)란 네트워크트래픽를 감시하고 분석하는 프로그램으로 트래픽 데이터를 분석하여 네트워크를 최적화하고 패킷에 잠입하여 정보를 가로채는 대표적인 크래킹 기술을 의미하거나 데이터베이스 분석 프로그램을 뜻하는 것이다.[1]

상세

네트워크에서 병목현상 등과 같은 문제점을 발견해 내는 프로그램으로 트래픽의 동향을 효율적으로 이용하게 해주는 기술이며 랜포트 에 접속시키면 랜에 올려져 있는 거의 모든 트래픽 데이터를 분석할 수 있다. 이더넷·토큰링·FDDI·WAN·ATM 버전이 모듈화 되어 있으며, 원격지트래픽를 분석할 수 있는 것으로 DSS(Distributed Sniffer System) 가 있다. 운영체제에 따라 마스터 1대 또는 여러 대의 전용 서버로 구성되기도 한다. 또한 가장 많이 이용되는 크래킹 기술을 표현하기도 하며 네트워크로 전송되는 패킷들은 어떤 사용자가 어느 호스트에 로그인했다는 등 다양한 정보를 가지고 있어서 여기에 잠입하여 발신지와 수신지 주소는 물론 패킷의 데이터까지 알아낼 수 있기도 하며 한편 데이터베이스에 어떤 데이터가 중복되고 있는지를 분석하는 데이터분석 프로그램을 의미하기도 하는 내용이다.[1]

다른 의미

  1. 가스 샘플을 채취하여 방사능 함량을 분석하는 기기를 뜻하는 것이다.
  2. 염수 샘플을 채취하여 그 탄화수소 함량을 분석하는 기기를 나타내는 것이다.

개요

스니핑(Snipping)에서 나온 말이며 사전적 뜻으로는 냄새를 맡다 이며 이러한 행위를 하는 도구를 스니퍼라고 한다.

도구

스니퍼 도구 종류는 여려가지가 있지만 그중 대표적인 도구는wireshark, tcpdump같은 도구가 있다.[2]

wireshark

와이어샤크(Wireshark)는 자유 및 오픈 소스 패킷 분석 프로그램이며, 네트워크의 문제, 분석, 소프트웨어 및 통신 프로토콜 개발, 교육에 쓰이는 것이며, 원래 이름은 Ethereal이었으나 2006년 5월에 상표 문제로 말미암아 와이어샤크로 이름을 바꾸었으며, 와이어샤크는 크로스 플랫폼으로, Qt 위젯 툴킷 을 이용하여 사용자 인터페이스를 제공하며, pcap을 이용하여 패킷을 포획하고 리눅스, 맥 OS X, BSD, 솔라리스 를 포함한 다양한 유닉스 계열 운영 체제와 마이크로소프트 윈도우에서 동작하고 GUI다 없는 터미널 기반 버전인 티샤크(TShark)도 제공하고 와이어샤크는 또 TShark와 같은 프로그램과 함께 배포되는 여러 프로그램은 자유 소프트웨어로, GNU 일반 공중 사용 허가서의 조건으로 공개된다.[3]

기본작동개념

같은 네트워크 구간의 Noel과 Susan은 이메일이나 메신저 등을 통해 대화를 주고받으면서 여기에서 Wireshark를 사용하는 제3자는 이 둘 사이의 네트워크로 돌아다니는 패킷( 네트워크상의 데이터 )을 수신하여 저장하는데 이때, PCAP이라는 파일 포맷으로 저장되고, PCAP 은 Packet Capture의 약자로 네트워크 트래픽을 캡처하는 API 구성으로 Wireshark는 자체 프로그램으로 네트워크 트래픽을 캡처하는 것이 아니고, 운영체제에서 지원하는 캡처 라이브러리를 이용하여 수집하는 것이다. (아래는 참고하는 버전)

  1. 유닉스 : libpcap
  2. 윈도우 : Winpcap[4]

기능

WIreShark 의 기능 중 절반은 필터(Filter) 가 차지하며 필터란 네모 박스 안에서 수많은 패킷들 중 특정 패킷을 '걸러내는' 작업을 의미하며, 예시로 수많은 패킷 중 특정 ip 주소의 것을 걸러낸다(ip. addr == "12.12.12.12")다음은 필터 사용법 : 설명 순으로 보여주는 것이다.

  1. eth.addr / eth.src / eth.dst : 맥 주소 / 맥 주소 송신지/ 맥 주소 수신지
  2. ip.addr / ip.src / ip.dst : ip 주소 / ip 주소 송신지 / ip 주소 수신지
  3. [protocol].port : 해당 프로토콜의 포트 확인 가능 tcp.port, udp.port
  4. [protocol].srcport / [protocol].dstport : 해당 프로토콜의 송,수신지 포트로 확인

다음은 문법 설명이다.

  1. &&, AND : AND 기호와 같다.
  2. ||, OR : OR 기호와 같다.
  3. !=, NOT : NOT 기호와 같다
  4. / : ip.addr == 192.168.200.16/16→ 192.168.x.x 에 해당되는 IP 주소만 검색, 8 == 192.x.x.x, 16 == 192.168.x.x, 24 == 192.168.200.x, 32 == 192.168.200.16[5]

tcpdump

tcpdump는 명령한 줄에서 실행하는 일반적인 패킷 가로채기 소프트웨어이다. 사용자가 TCP/IP뿐 아니라, 컴퓨터에 부착된 네트워크를 통해 송수신되는 기타 패킷을 가로채고 표시할 수 있게 도와준다. BSD 허가서를 통해 배포되는[2] tcpdump는 자유 소프트웨어이다. tcpdump는 리눅스, 솔라리스, BSD, 맥 OS X, HP-UX, AIX 따위의 대부분의 유닉스 계열 운영 체제에서 동작하며 여기서 libpcap 라이브러리를 사용하여 패킷을 포획한다. 윈도우용 tcpdump 이식판으로는WinDump가 있으며, 이는 libpcap의 윈도 이식 판인 WinPcap을 이용한다.[6]

명령

tcpdump 명령은 네트워크 인터페이스에서 부울 표현식 과 대응하는 패킷의 헤더를 인쇄하고 이 명령을 -w 플래그와 함께 실행하여 추가 분석을 위해 패킷 데이터를 파일에 저장할 수 있다, 또한 이 명령을 -r 플래그와 함께 사용하여 네트워크 인터페이스에서 패킷을 읽는 대신 저장된 패킷 파일에서 데이터를 읽을 수 있는 장점이 있다, 모든 경우에 표현 식과 일치하는 패킷만 tcpdump 명령에 따라 처리된다. 이 명령이 -c와 함께 실행되지 않으면 tcpdump는 SIGINT 신호(일반적으로 Ctrl-C) 또는 SIGTERM 신호(일반적으로 kill(1) 명령)로 인터럽트 될 때까지 패킷 캡처를 계속하게 된다, tcpdump는 -c 플래그와 함께 실행되는 경우 SIGINT 또는 SIGTERM 신호에 의해 인터럽트되 거나 지정된 패킷 수가 처리 완료될 때까지 패킷을 캡처해 놓는다. tcpdump 명령은 모든 패킷을 캡처한 후에 다음 개수를 돌려보내는 기능이다.

  1. 필터에 의해 수신된 패킷 : 패킷이 필터 표현 식과 일치되는지 여부에 상관없이 모든 패킷을 계수하는 것이다.
  2. 커널에 의해 삭제된 패킷 : 버퍼 공간의 부족으로 인해 삭제된 패킷의 수를 나타내는 것이다.[7]

가용 기본요소

자세한것은 링크를 참고하고 몇가지만 소개해주는 것이다.

  1. dst host host : 패킷의 IPv4/v6 대상이 주소 또는 이름일 수 있는 호스트인 경우 참이다.
  2. src host host : 패킷의 IPv4/v6 소스 필드가 호스트인 경우 참이다.
  3. host host : IPv4/v6 소스 또는 패킷의 대상이 호스트인 경우 참이다. 위의 모든 호스트 표현식 앞에는 키워드 ip, arp, rarp 또는 ip6를 덧붙일 수 있는 것이다.

매개변수

  1. A : 패킷의 내용을 화면에 ASCII로 보여주는 것이다.
  2. B : 운영 체제가 캡처하는 버퍼 크기를 buffer_size로 바꾸어 주는 것이다.
  3. c : 주어진 수의 패킷을 받은 후 종료하는 기능이다.
  4. C : 방금 받은 패킷을 저장파일로 만들기 전에 파일이 file_size보다 큰지 체크한다. 만약 그렇다면, 현재 저장파일을 닫고 새로 하나를 연다. 저장된 파일의 이름은 -w 기호를 이용해 1부터 시작해 하나씩 늘어나는 기능이다.(1,048,576 바이트가 아니라 1,000,000바이트이다)
  5. d : 컴파일된 packet-matching code를 사람이 읽을 수 있는 표준형으로 바꾼후 멈추는 기능이다.
  6. dd : packet-matching 코드를 C 프로그램의 일부로 표현하는 기능이다.
  7. ddd : packet-matching 코드를 십진수로 표현해주는 것이다.
  8. D : tcpdump가 패킷을 잡을 수 있는 시스템 상에 가능한 네트워크 인터페이스 목록을 출력한다. 각각의 네트워크 인터페이스에는 번호와 인터페이스 이름이 매겨져 있어야 하고 그에 해당하는 설명이 덧붙여져 있어야 한다. 이 기능은 tcpdump가 오래된 버전일 경우에 지원되지 않을 수 있는 것이다.
  9. e : 링크 레벨 헤더를 각각 덤프라인에 출력하는 기능이다.
  10. f : 외부 IPv4 주소를 되도록 심볼(상징적)이 아닌 숫자로서 표현하는 방식이다.
  11. F : 파일을 필터식(filter expression)으로 입력한다. 추가적으로 명령창에 입력된 식은 무시되는 것이다.
  12. G : 이 옵션을 지정하면 덤프 파일을 -w 옵션으로 매 초마다 회전해 회전된 덤프파일을 저장한 다음 저장된 파일은 -w 옵션으로 strftime으로 시간 정보가 정의 되어 이름에 포함되어야 하므로 만약 시간 형식이 저장되지 않으면 매번 새로운 파일은 원래 있던 파일에 덮어 씌워 지며 만약 -C 옵션과 함께 쓰인다면 이름은 'file<count>'형식으로 저장되는 것이다.
  13. i : 인터페이스를 정하는데 정해지지 않았으면 tcpdump는 시스템 인터페이스 목록에서 가장 낮은 숫자를 고르는 것이다.
  14. I : 인터페이스를 "monitor mode"로 놓아둔다 이는 IEEE 802.11 와이파이 인터페이스에서만 작동되고 몇몇 운영 체제에서만 지원되는 기능이다.
  15. 위의 설명에 대한 예시 : tcpdump [ -AdDefIKlLnNOpqRStuUvxX ][ -B buffer_size ][ -c count ][ -C file_size ][ -G rotate_seconds ][ -F file ][ -i interface ][ -m module ][ -M secret ][ -r file ][ -s snaplen ][ -T type ][ -w file ][ -W filecount ][ -E spi@ipaddr algo:secret,... ][ -y datalinktype ][ -z postrotate-command ][ -Z user ]

[7]

각주

  1. 1.0 1.1 스니퍼〉, 《네이버 지식백과》
  2. 밤공기후하후하, 〈[https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=on21life&logNo=221510631083 스니퍼 도구〉, 《네이버 블로그》, 2019-04-10
  3. wireshark〉, 《위키백과》
  4. hongPossible, 〈[https://hongpossible.tistory.com/entry/Wireshark%EB%9E%80-%EC%84%A4%EC%B9%98%EB%B2%95 스니퍼 도구〉, 《티스토리》, 2018-11-16
  5. Cyp Cyp9715, 〈[https://cypsw.tistory.com/39 기능〉, 《티스토리》, 2021-01-03
  6. tcpdump〉, 《위키백과》
  7. 7.0 7.1 tcpdump〉, 《IBM》

참고자료

같이보기

  1. 토큰링
  2. 랜포트
  3. FDDI
  4. 모듈화
  5. DSS
  6. BSD
  7. 맥 OS X
  8. HP-UX
  9. libpcap
  10. WinDump
  11. WinPcap
  12. 버퍼
  13. 덤프라인
  14. 심볼
  15. 필터식


  검수요청.png검수요청.png 이 스니퍼 문서는 보안에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.