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

스니퍼

해시넷
이동: 둘러보기, 검색

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

개요[편집]

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

도구[편집]

스니퍼 도구는 여러 종류가 있지만 대표적으로 와이어샤크(Wireshark), 탑덤프(tcpdump) 등의 도구가 있다.[2]

와이어샤크[편집]

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

매뉴얼[편집]

와이어샤크의 기능 중 절반은 필터(Filter)가 차지한다. 필터는 네모 박스 안에서 수많은 패킷들 중 특정 패킷을 걸러내는 작업을 의미한다. 예를 들어 수많은 패킷 중 특정 ip 주소의 것을 걸러낸다.

  • eth.addr / eth.src / eth.dst : 맥 주소 / 맥 주소 송신지/ 맥 주소 수신지
  • ip.addr / ip.src / ip.dst : ip 주소 / ip 주소 송신지 / ip 주소 수신지
  • [protocol].port : 해당 프로토콜의 포트 확인 가능 tcp.port, udp.port
  • [protocol].srcport / [protocol].dstport : 해당 프로토콜의 송,수신지 포트로 확인
문법
  • &&, AND : AND 기호와 같다.
  • ||, OR : OR 기호와 같다.
  • !=, NOT : NOT 기호와 같다
  • / : 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]

특징[편집]

와이어샤크는 각기 다른 네트워크 프로토콜의 구조를 이해하는 소프트웨어이다. 그러므로 각기 다른 네트워크 프로토콜이 규정한 각기 다른 패킷의 의미와 더불어 필드와 요약 정보를 보여 줄 수 있다. 와이어샤크는 패킷 캡처를 이용하여 캡처를 포획하므로 패킷 캡처가 지원하는 종류의 네트워크의 패킷만 포획할 수 있다. 와이어샤크의 순수 네트워크 추적 파일 포맷은 리비캡 및 윈피캡이 지원하는 리비캡 형식으로 되어 있으므로 탑덤프와 CA 넷마스터를 포함하여 동일한 포맷을 이용하는 다른 응용 프로그램들과 네트워크 추적 파일을 상호 이용할 수 있다. 또, 스눕(snoop), 네트워크 제너럴의 스니퍼, 마이크로소프트 네트워크 모니터와 같은 다른 네트워크 가로채기 프로그램으로부터 포획한 데이터를 읽을 수 있다.

  • 실시간 네트워크 연결의 유선으로부터 데이터를 포획하고, 이미 포획한 패킷을 기록해 둔 파일로부터 데이터를 읽을 수 있다.
  • 실시간 데이터를 이더넷, IEEE 802.11, PPP, 루프백을 포함한 수많은 네트워크로부터 읽을 수 있다.
  • 포획한 네트워크 데이터 : GUI나 터미널 (명령 줄) 버전의 유틸리티 티샤크를 통해 탐색 가능하다.
  • 포획한 파일들은 에디텝(editcap) 프로그램으로의 명령줄 스위치를 통하여 프로그래밍하듯이 편집하거나 변환할 수 있다.
  • 데이터 표현은 디스플레이 필터를 이용해 정리할 수 있다.
  • 새로운 프로토콜 분석을 위해 플러그인을 만들 수 있다.
  • 포획한 트래픽 내의 VoIP 호출을 감지할 수 있으며 호환되는 인코딩으로 부호화되면 미디어 플로도 재생이 가능하다.
  • 와이어샤크를 통해 순수 USB 트래픽을 포획할 수 있으며 이 기능은 현재 리눅스에서만 이용할 수 있다.[3]

탑덤프[편집]

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

명령[편집]

탑덤프 명령은 네트워크 인터페이스에서 부울 표현식과 대응하는 패킷의 헤더를 인쇄하고 이 명령을 -w 플래그와 함께 실행하여 추가 분석을 위해 패킷 데이터를 파일에 저장할 수 있다. 또한 이 명령을 -r 플래그와 함께 사용하여 네트워크 인터페이스에서 패킷을 읽는 대신 저장된 패킷 파일에서 데이터를 읽을 수 있는 장점이 있다, 모든 경우에 표현식과 일치하는 패킷만 탑덤프 명령에 따라 처리된다. 이 명령이 -c와 함께 실행되지 않으면 탑덤프는 시긴트(Sigint) 신호(일반적으로 Ctrl-C) 또는 시긴텀(Sigterm) 신호(일반적으로 kill(1) 명령)로 인터럽트 될 때까지 패킷 캡처를 계속하게 된다. 탑덤프는 -c 플래그와 함께 실행되는 경우 시긴트 또는 시긴텀 신호에 의해 인터럽트 되거나 지정된 패킷 수가 처리 완료될 때까지 패킷을 캡처해 놓는다. 그 중 필터에 의해 수신된 패킷은 패킷이 필터 표현 식과 일치되는지 여부에 상관없이 모든 패킷을 계수하는 것이고, 커널에 의해 삭제된 패킷은 버퍼 공간의 부족으로 인해 삭제된 패킷의 수를 나타내는 것이다. 탑덤프 명령은 모든 패킷을 캡처한 후에 다음 개수를 리턴한다.[7]

가용 기본요소
  • dst host host : 패킷의 IPv4/v6 대상이 주소 또는 이름일 수 있는 호스트인 경우 참이다.
  • src host host : 패킷의 IPv4/v6 소스 필드가 호스트인 경우 참이다.
  • host host : IPv4/v6 소스 또는 패킷의 대상이 호스트인 경우 참이다. 위의 모든 호스트 표현식 앞에는 키워드 ip, arp, rarp 또는 ip6를 덧붙일 수 있다.(예시 : ether proto \ip and host host)
  • ether dst ehost : 이더넷 대상 주소가 ehost인 경우 참이며, Ehost는 /etc/ethers에서 생성된 이름이거나 숫자일수도 있는 명령이다.
  • ether src ehost : 이더넷 소스 주소가 ehost인 경우 참이다.
  • ether host ehost : 이더넷 소스 또는 대상 주소가 ehost인 경우 참이다.
  • gateway host : 패킷이 호스트를 게이트웨이로 사용한 경우 참이다.
  • dst net net : 패킷의 IPv4/v6 대상 주소에 네트의 네트워크 번호가 있는 경우 참이다.
  • src net net : 패킷의 IPv4/v6 소스 주소에 네트의 네트워크 번호가 있는 경우 참이다.
  • net net : 패킷의 IPv4/v6 소스 또는 대상 주소에 네트의 네트워크 번호가 있는 경우 참이다.
  • net net mask netmask : IP 주소가 고유의 넷마스크를 포함하는 네트와 일치하는 경우 참이다. src 또는 dst로 규정될 수 있으며 IPv6 net에서는 유효하지는 않는다.
  • net net/len : IPv4/v6 주소가 넷마스크 len 비트인 네트와 일치하는 경우 참이다. scr 또는 dst로 규정되기도 한다.
  • dst port port : 패킷이 ip/tcp, ip/udp, ip6/tcp orip6/udp이고 포트의 대상 포트 값을 포함할 경우 참이다, 이 포트는 숫자이거나 /etc/services에서 사용되는 이름(tcp(4P) 및 udp 이름을 사용 시 포트 번호 및 프로토콜을 모두 검사하지만 숫자 또는 모호한 이름을 사용하는 경우에는 포트 번호만 검사한다.
  • src port port : 패킷이 포트의 소스 포트 값을 가지는 경우 참이다.[7]

매개변수[편집]

  • A : 패킷의 내용을 화면에 ASCII로 보여 준다.
  • B : 운영체제가 캡처하는 버퍼 크기를 buffer_size로 바꾼다.
  • c : 주어진 수의 패킷을 받은 후 종료한다.
  • C : 방금 받은 패킷을 저장파일로 만들기 전에 파일이 파일 사이즈(file_size)보다 큰지 체크한다. 만약 그렇다면, 현재 저장 파일을 닫고 새로 하나를 연다. 저장된 파일의 이름은 -w 기호를 이용해 1부터 시작해 하나씩 늘어난다.
  • d : 컴파일된 패킷 매칭 코드(packet-matching code)를 사람이 읽을 수 있는 표준형으로 바꾼후 멈춘다.
  • dd : packet-matching 코드를 C 프로그램의 일부로 표현한다.
  • ddd : packet-matching 코드를 십진수로 표현해 준다.
  • D : 탑덤프가 패킷을 잡을 수 있는 시스템 상에 가능한 네트워크 인터페이스 목록을 출력한다. 각각의 네트워크 인터페이스에는 번호와 인터페이스 이름이 매겨져 있어야 하고 그에 해당하는 설명이 덧붙여져 있어야 한다. 이 기능은 탑덤프가 오래된 버전일 경우에 지원되지 않을 수 있다.
  • e : 링크 레벨 헤더를 각각 덤프라인에 출력한다.
  • f : 외부 IPv4 주소를 되도록 심볼(상징적)이 아닌 숫자로서 표현한다.
  • F : 파일을 필터식(filter expression)으로 입력한다. 추가적으로 명령창에 입력된 식은 무시된다.
  • G : 이 옵션을 지정하면 덤프 파일을 -w 옵션으로 매 초마다 회전해 회전된 덤프파일을 저장한 다음 저장된 파일은 -w 옵션으로 스트리프타임(strftime)으로 시간 정보가 정의 되어 이름에 포함되어야 하므로 만약 시간 형식이 저장되지 않으면 매번 새로운 파일은 원래 있던 파일에 덮어 씌워지며 만약 -C 옵션과 함께 쓰인다면 이름은 'file<count>'형식으로 저장된다.
  • i : 인터페이스를 정하는데 정해지지 않았으면 탑덤프는 시스템 인터페이스 목록에서 가장 낮은 숫자를 고른다.
  • I : 인터페이스를 모니터 모드(monitor mode)로 놓아 둔다. 이는 IEEE 802.11 와이파이 인터페이스에서만 작동되고 몇몇 운영 체제에서만 지원된다.[7]

대응책[편집]

[편집]

핑은 ICMP 프로토콜에서 해당 호스트까지 도달할 수 있는지 검사하는 신호로, 정상적인 경우라면 맥 주소가 유효하지 않음으로 응답이 오지 않는다. 대부분의 스니퍼는 일반TCP/IP에서 동작하며 이를 이용하여 의심이 가는 호스트에 (ping)을 보내는데, 존재하지 않는 맥 주소(MAC Address)로 위장해서 보낸다. 하지만 스니핑용 호스트라면 맥 주소와 무관하게 모든 정보를 다 수신받음으로 인터넷 제어 메시지 프로토콜(ICMP)에서 정상적으로 도달했다(reach)는 뜻의 에코 응답(Echo reply)을 보낸다.[8]

ARP[편집]

ARP는 기본적으로 TCP/IP에서 자신을 거쳐 가더라도 목적지가 자신이 아니라면 수신하지 않는 것이 일반적이지만 카드를 조작하여 목적지가 어디든 그냥 무조건 수신하도록 옵션을 줄 수 있다. 이 옵션을 ​프러미스큐어스 모드라고 한다. 이런 랜카드를 사용하는 호스트를 찾기 위해 그 어느 호스트도 목적지가 아닌 조작된 ARP 리퀘스트를 보냈는데 응답이 온다면 ​​​프러미스큐어스 모드를 사용하고 있는 것이다.[8]

DNS[편집]

DNS 서버에는 도메인 이름을 이용해서 호스트의 아이피를 얻기 위한 DNS 룩업 요청이 많다. 반대로 호스트의 아이피를 이용해서 도메인을 알고자 하는 ​역방향 DNS 조회(Reverse DNS lookup) 요청은 많지는 않은데, 스니핑 프로그램에서는 사용자의 편의를 위해 역방향 DNS 조회를 요청하는 경우가 많다. 로그 등에 도메인명을 출력해야 보기 편하기 때문이다. 역방향 DNS 조회를 한다고 해서 다 악성 프로그램은 아니지만 이를 통해 용의 선상을 줄일 수 있다. 테스트 대상 네트워크로 핑 스윕(Ping Sweep)을 보내고 역방향 DNS 조회를 감시하여 스니퍼를 탐지한다.[8]

유인[편집]

유인(Decoy)하는 방법은 스니핑 공격자의 주요 목적이 계정과 패스워드 획득에 있다는 것을 역이용해 가짜 계정과 패스워드를 네트워크에 뿌린 후 이 계정과 패스워드를 이용해 접속을 시도하는 호스트를 탐지하는 방법이다.[8]

arpwatch[편집]

스니퍼는 정보가 자신에게 수신되거나 거쳐 가도록 조작하기 위해 ARP 테이블을 변경하려고 할 수 있다. ARP 업데이트가 항상 비정상적인 행위는 아니지만, 초기 맥 주소와 아이피 주소의 대칭 값은 저장한 후 ARP 트래픽을 모니터링하여 이를 변하게 하는 이상 패킷이 발견되면 관리자에게 알려줌으로써 스니핑을 미연에 감지할 수 있다.[8]

네트워크 패킷[편집]

네트워크 패킷 스니퍼는 네트워크를 통해 전송된 정보를 모니터링하는 데 사용된다. 이는 스니퍼의 유형과 전반적인 목적에 따라 하드웨어 또는 소프트웨어일 수 있다. 네트워크 패킷 스니퍼는 네트워크 데이터 스트림에서 패킷을 수집하고 디코딩하여 정보를 읽는다. 스니퍼는 네트워크 문제 해결에서 비밀번호 및 민감한 정보 도용에 이르기까지 광범위한 합법적이고 불법적인 기능에 사용된다. 일부 네트워크 패킷 스니퍼는 네트워크의 활동을 모니터하기 위해 이를 수행하며, 이 스니퍼는 일반적으로 시스템 관리자가 네트워크의 문제를 확인하거나 사용자의 활동을 모니터링하기 위해 사용하는 기기이다. 대부분의 경우 패킷을 열고 내부를 볼 필요가 없다. 일반적으로 주소를 확인하고 둘 다 허용 가능한지 확인하는 것으로 충분하지만 패킷이 금지된 웹 사이트와 같은 제한된 컴퓨터로 들어오거나 나가는 경우 네트워크 위치를 기록하고 누가 사용했는지 확인할 수 있다. 패킷을 열고 내부의 데이터를 디코딩하는 것도 가능하다. 데이터 패킷의 인코딩 유형에 따라 시간이 오래 걸리는 프로세스일 수 있으며, 충분한 시간과 노력으로 종종 내부 데이터를 검색할 수 있다. 새로운 네트워킹 소프트웨어 디버깅과 같은 합법적인 이유로 이 작업을 수행 할 수 있지만, 이 유형의 패킷 분석기는 해킹 및 신원 도용에도 여러 가지 용도가 있다. 패킷 분석기는 디지털 해커를 위한 일반적인 도구이며, 해커들은 패킷을 가로채서 해독함으로써 몇 가지 사실을 알 수 있다. 가장 일반적인 정보 비트 중 하나는 알려진 시스템보다 보안 수준이 낮은 내부 네트워크 시스템의 주소와 관련이 있다. 또한 올바른 패킷을 도난당하면 로그인 정보와 이메일 주소를 얻을 수 있다.[9]

사건[편집]

2008년 8월 TJX는 스니퍼 프로그램을 이용해 와이파이 네트워크를 침입한 해커에 의해 4천 5백만 건 이상의 신용카드가 18개월에 걸쳐 탈취되었다. 이 사건의 핵심인물 중 한 명인 스티븐 와트(Stephen Watt)는 기업 컴퓨터 네트워크 내 고객 신용카드 정보를 포함한 데이터의 모니터 및 캡처에 이용하기 위해 조작된 스니퍼 프로그램을 제공한 혐의로 구속되었다.[10] 미국에서 스니퍼 프로그램을 이용해 기업의 무선통신망에 침입한 해킹 사건도 존재한다. 11명의 용의자가 반스앤 노블(Barnes & Noble), BTJX, 오피스맥스(OfficeMax) 등 9개 유통회사들의 무선 네트워크에 불법 침입해 4000만 건 이상의 신용카드 번호와 비밀번호를 빼낸 혐의로 미국 법무부에 기소되었다. 이들은 동유럽과 미국의 사설 서버에 저장된 훔친 개인정보를 이용해 현금인출기에서 다량의 현금을 인출하거나 인터넷으로 정보를 거래한 것으로 드러났다.[11]

각주[편집]

  1. 1.0 1.1 스니퍼〉, 《네이버 지식백과》
  2. 밤공기후하후하, 〈IT보안-스니퍼,Sniffer란 무엇인가〉, 《네이버 블로그》, 2019-04-10
  3. 3.0 3.1 와이어샤크〉, 《위키백과》
  4. hongPossible, 〈Wireshark란? / 설치법〉, 《티스토리》, 2018-11-16
  5. Cyp Cyp9715, 〈WireShark 매뉴얼〉, 《티스토리》, 2021-01-03
  6. tcpdump〉, 《위키백과》
  7. 7.0 7.1 7.2 tcpdump 명령〉, 《IBM》
  8. 8.0 8.1 8.2 8.3 8.4 by user_id, 〈스니퍼 대응책(스니핑 탐지법)〉, 《티스토리》, 2016-10-12
  9. 네트워크 패킷 스니퍼 란 무엇입니까?〉, 《네틴백》
  10. 김동빈 기자, 〈TJX 침해 범인, 국제적 사이버범죄 행각 드러나〉, 《시큐리티 월드》, 2009-01-12
  11. 백인성 기자, 〈미 최대 규모 해킹사건..신용카드번호 등 4000만건 훔쳐〉, 《전자신문》, 2014-11-06

참고자료[편집]

같이 보기[편집]


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