[Network] 스니핑

목차

  1. 스니핑이란 무엇인가?
  2. 스니핑은 어떻게 동작하는가?
  3. 스니핑 소프트웨어
  4. MITM
  5. ARP spoofing
  6. MAC flooding
  7. 라우팅 조작
  8. 스니핑 대비



스니핑이란 무엇인가?

스니퍼(sniffer)는 공격자가 사용할 수 있는 중요한 정보를 네트워크에서 모니터링하는 프로그램이나 툴을 의미하는데, 이러한 스니퍼를 이용하여 네트워크 통신 내용을 몰래 엿보는 수동적인 공격입니다.

스니핑은 어떻게 동작하는가?

스니핑을 하는 방법은 두 가지가 있습니다. 예전 허브1(hub) 환경에서는 컴퓨터가 하나의 로컬 선을 공유했기 때문에 모든 컴퓨터에서 네트워크 트래픽을 볼 수 있었지만, 성능을 위해 NIC2(NIC)에서 트래픽을 필터링하여 자신에게만 오는 트래픽만 받도록 만들었습니다. 스니핑은 이 필터를 비활성화해서 NIC를 “promiscuous 모드”로 만듭니다. 그렇게 하면 대량의 트래픽을 캡쳐할 수 있습니다. 최근에는 스위치를 통해 컴퓨터가 연결되는 경우가 많습니다. 스위치는 네트워크 트래픽을 모든 노드로 보내는 대신 허브에서 트래픽을 필터링하므로 공격자는 다른 컴퓨터의 트래픽을 볼 수 없습니다. 네트워크 어댑터를 promicsuous모드로 설정해도 마찬가지입니다. 공격자는 스위치/라우터의 와이어를 공격해야 합니다.(후에 설명함)

스니핑 소프트웨어

  1. Wireshark(Ethereal)
  2. Network Associates Sniffer Pro
  3. TCPDump
  4. dsniff

이 외에도 많이 존재하는데 주로 TCPDump를 일반적으로 쓰고 dsniff를 자동화 툴로 쓰는 듯?

여담이지만 주로 참고한 책이 2002년도 책이라 ethereal이라고만 나와있어서 이게 뭔가 했던 기억이…



고급 스니핑 기법 몇 가지를 알아보겠습니다.

MITM

man-in-the-middle (MITM) 공격은 통신을 연결하는 두 사람 사이에 중간자가 침입하여, 중간자가 정보를 도청 및 조작하여 둘 사이에서 전달하는 정보를 조작하는 방식입니다. 예를 들어 공격자는 https://www.amazon.com과 같은 요청에 응답하는 서버를 실행할 수 있습니다. 이 머신에 접속하는 사용자는 자신이 Amazon.com과 세션을 연결했다고 착각할 것입니다. 공격자는 실제 amazon.com에 접속하여 그 사용자인 것처럼 행동합니다. 공격자는 서버와 클라이언트 사이에서 정보를 도청하고 조작할 수 있습니다.

앞으로 소개할 3가지 방법은 스위칭 네트워크에서 스니핑하는 방법입니다.

ARP spoofing

스위치는 내부적으로 각 포트에 해당하는 MAC 주소 목록을 저장하고 있어, 목적지 호스트가 그 포트를 사용하고 있을 때만 트래픽을 전송합니다. 하지만 ARP 캐시를 덮어쓰는 것이 가능하므로 MAC 주소와 기본 게이트웨이의 IP 주소를 연결할 수 있어 외부로 나가는 모든 트래픽을 공격자가 송신할 수 있습니다. (공격자의 호스트에서 그 트래픽을 실제 기본 게이트웨이로 전송하기 위한 ARP 테이블 항목을 수동으로 추가해야하고 IP forwading을 활성화해야함) 이해가 안 가신다면 여기에서 친절히 설명하고 있으니 참고하셔도 좋을 거 같습니다.

MAC flooding

Switch Jamming이라고도 불리는 방법을 소개하겠습니다. 스위치는 각 포트로부터 전송되는 모든 MAC 주소를 저장하고 있습니다. 만약 한 포트에서 대량의 주소가 나와서 주소 목록을 다 채운다면(오버플로우하면) 스위치는 공격 대상 호스트의 MAC 주소가 어떤 포트에 연결되어 있는지 기록하지 못합니다. 스위치가 어떤 주소가 어떤 포트에 해당하는지 알지 못 하면 스위치는 그 주소에 대한 프레임의 복사본을 모든 포트로 전송합니다. dsniff에는 존재하는 macof라는 프로그램이 이런 공격 기법을 사용합니다.

라우팅 조작

가짜 route advertisement 메시지를 보내 호스트의 라우팅 테이블을 변경하면 호스트는 공격자의 호스트를 기본 게이트웨이로 인식해 모든 트래픽이 그 쪽으로 전송딥니다. 이 때, 공격자의 호스트는 IP forwading을 활성화하고, 기본 게이트웨이는 실제 네트워크 게이트웨이로 설정해야 합니다. 그럼 공격 대상 호스트에서 외부로 나가는 트래픽은 공격자의 호스트를 거친 뒤 실제 네트워크 게이트웨이로 전송되는데, 응답 트래픽을 받지 못할 수 있습니다. 응답 트래픽을 받으려면, 기본 게이트웨이의 라우팅 테이블을 조작하여야 합니다.

스니핑 대비

  • SSH

암호화 프로토콜로 서버와 클라이언트가 공개 키 암호화를 사용해 세션을 암호화합니다. 또한 이 프로토콜에서는 임의의 포트를 암호화된 채널로 포워딩하는 기능도 제공합니다.

  • SSL

인증과 암호화 서비스르 제공합니다. 완벽하게 안전한 건 아니라 특수한 조건에서의 MITM 공격인 SSL Strip 공격으로 스니핑을 시도할 수 있습니다.

  • PGP, S/MIME

SMTP 상에서 보내는 e-mail을 암호화하는데 사용하는 표준 프로토콜



1: 이더넷 네트워크에서 여러 대의 컴퓨터, 네트워크 장비를 연결하는 장치. 모든 신호를 브로드캐스트(Broadcase)함. 자세한 건 출처 3번 참고.
2: NETWORK INTERFACE CARD의 약자. LAN에 연결 지점을 제공하기 위해 컴퓨터에 설치하는 장치. LAN카드라 불림. 자세한 건 출처 4번 참고.
3: 간이 전자 우편 전송 프로토콜(Simple Mail Transfer Protocol, SMTP)은 인터넷에서 이메일을 보내기 위해 이용되는 프로토콜. 자세한 건 출처 6번 참고.



출처

  1. 네트워크 해킹 퇴치 비법(HACK PROOFING YOUR NETWORK)
  2. 스니핑 관련 내용 블로그
  3. 허브 관련 내용 블로그
  4. NIC 관련 내용 블로그
  5. MITM 위키 백과
  6. SMTP 위키 백과
  7. SSL strip 관련 내용 포스트
  8. sniffer 관련 내용 포스트
  9. sniffer 관련 내용 포스트
  10. sniffer 관련 내용 포스트