A multipurpose Hacking Tool for MITM ettercap ettercap A multipurpose Hacking Tool for MITM 보증팀 김광연, 원작 이삼일 2006-12-02
목차 선행연구 (ARP 프로토콜, DNS Recursion, sniffing) ettercap 개요 화면별 내용 설명 부록 Man in the middle redirect (경로 재설정) Plugins - 해킹관련 개략 설명 부록 참고 사이트
선행연구 (ARP 프로토콜, Sniffing)
TCP/IP 와 OSI 모델
ARP 프로토콜(1) ARP ARP cache Address Resolution Protocol IP 주소 값으로 MAC 주소 값을 알아내는 프로토콜 ARP cache IP주소 및 그에 대응하는 MAC주소가 들어 있는 테이블이 저장되는 메모리 영역. ARP 캐쉬 시간은 라우터는 통산 4시간.
ARP 프로토콜(2) ARP Request ARP Response
ARP 프로토콜(3) ARP 프로토콜 필드 Hard type : 하드웨어 종류 이더넷, FDDI, 토큰링등 Proto type : 프로토콜 종류 ARP 프로토콜의 경우 0806 Hard size : 하드웨어 주소의 길이 Proto size : 프로토콜 주소의 길이 OP : ARP 패킷의 작동 값 1: ARP 요청 2: ARP 응답 Sender Ethernet Addr : 송신자 MAC Sender IP Addr : 송신자 IP Addr Target Ethernet Addr : 수신자 MAC Target IP Addr : 수신자 IP Addr
ARP 프로토콜(4) ARP 작동 원리 라우터를 통해 외부로부터 A 서버로 접속하려는 요청이 들어옴 라우터에 ARP cache 에 A 서버에 대한 IP & MAC 의 매핑이 없으면 ARP 패킷을 Broadcast (ARP Request) 한다. B서버, C서버는 자신의 IP가 아니므로 패킷을 drop A서버는 자신의 MAC을 적은 패킷을 Unicast(ARP Response)한다. 라우터와 A서버는 서로의 MAC주소 공유 통신이 가능한 상태가 됨
DNS Recursion(1) www.yahoo.co.kr kr co yahoo
DNS Recursion(2) DNS Recursion 로컬 호스트에서 www.yahoo.co.kr 요청 로컬 호스트에 설정된 DNS SERVER (DNS Client 로 명칭)로 IP 요청 요청된 도메인에 대한 캐싱이 없으면 ROOT DNS 서버로 요청 ROOT DNS 서버는 .kr 을 관장하는 DNS 서버로 요청하라는 답을 줌 DNS Client 는 다시 .kr 을 관장하는 DNS 서버로 요청 위와 같은 과정을 RECURSION 하여 해당 도메인의 IP를 얻어내면 DNS Client는 실제 요청한 PC에게 IP를 전달한다. PC 는 자신의 Gateway (Router)로 이 요구를 전달하여 www.yahoo.co.kr로 접속을 시도함
스니핑(Sniffing) 네트워크상의 데이터를 몰래 캡쳐하는 행위 스니퍼 사용 : Ethereal, ettercap Promiscuous mode : 네트웍 상의 모든 패킷 탐지 동일 네트워크 세그먼트
스니퍼(Sniffer) <Sniffer> NIC을 Promiscuous mode 로 세팅 192.168.0.1 192.168.0.2 Packet목적지 192.168.0.3 <Sniffer> NIC을 Promiscuous mode 로 세팅 192.168.0.3
스니핑 기법(1) MAC Flooding 공격 (switch 환경하에서 sniffing) ARP Spoofing 공격 위조된 MAC을 지속적으로 발생시켜 스위치의 ARP테이블을 Flooding Dummy 허브와 같이 모든 port에 Broadcasting (Fail open) ARP Spoofing 공격 내부 네트워크내의 Spoofing 하려는 Hosts 의 arp cache 변경 공격자 B -> Host A (IP:10.0.0.3 은 MAC(공격자) 주소 CC) 공격자 B -> Host C (IP:10.0.0.2 는 MAC(공격자) 주소 CC) 공격자 B IP : 10.0.0.4 MAC 주소 : CC Host A IP : 10.0.0.2 MAC 주소 : AA Host C IP : 10.0.0.3 MAC 주소 : BB
스니핑 기법(2) ARP Redirect 공격 공격자가 게이트웨이인 것처럼 위조된 MAC을 네트웍 상에 Broadcast한다. LAN 상의 모든 호스트들은 공격자의 ARP Cashe 정보를 갱신 게이트웨이로 가는 모든 패킷을 공격자를 거처가게 된다.
스니핑 기법(4) ICMP ICMP Redirect ICMP Redirect 공격 네트웍 에러 메시지 및 네트웍 흐름을 통제하기 위한 프로토콜 ICMP Redirect 하나의 네트웍에 여러 개의 라우터가 있을 경우 호스트가 패킷을 올바른 최적 경로의 라우터에게 보내도록 알려주는 역할 ICMP Redirect 공격 다른 세그먼트에 있는 호스트에게 위조된 ICMP Redirect 메시지를 보내 공격자의 호스트로 패킷을 보내도록 하여 패킷을 스니핑하는 방법
스니핑 방지 대책 암호화 SSL, SSH, VPN 스위칭 환경의 네트워크 구성 상용 스니퍼를 사용하여 탐지
ettercap 개요
ettercap 개요 Man in the middle attack 공격을 위한 종합 선물세트 툴 프리웨어, 오픈 소스 ettercap.sourceforge.net Man in the middle attack 공격을 위한 종합 선물세트 툴 MITM : ARP poisoning, icmp redirection, dhcp poisoning, port stealing SSH1, SSL 암호화 sniffing. 연결된 세션에 data, character injection. Packet filtering 또는 dropping. Password 수집 Passive OS fingerprint Sniffing 하는 동안 연결 된 호스트들간의 Connection 을 kill 가능 프리웨어, 오픈 소스
Ettercap 주요 프로그램 구성 ettercap etterlog etterfilter Text editor 노트패드 등등 etter.conf 등 설정 파일 etterlog 바이너리 로그파일 ettercap Text editor 노트패드 등등 텍스트 주요정보파일 바이너리 필더설정파일 텍스트 로컬 호스트 정보파일 etterfilter 텍스트 필터설정파일
필요 라이브러리 리눅스/유닉스에서 컴파일 및 실행 하는 경우 윈도우에서 실행 하는 경우 필수: libpcap >= 0.8.1, libnet >= 1.1.2.1, Libpthread, zlib 옵션 libltdl (plugin 지원), libpcre (perl regexp 지원), openssl 0.9.7 (SSH, SSL 지원), ncurses 5.3 이상 (cursed GUI) GTK+ GUI pkgconfig 0.15.0 이상, Glib 2.4.x 이상, Gtk+ 2.4.x 이상, Atk 1.6.x 이상, Pango 1.4.x 이상 윈도우에서 실행 하는 경우 필수: winpcap 실행 파일: ettercap-NG-0.7.3-win32.exe
UI -T Text only -C Ncurses 기반 GUI -G GTK2기반 GUI
스니핑 모드 - Unified, Bridged Unified - 단일 NIC에서 스니핑 Bridged - Inline 방식으로 분석 후 전달
화면 별 내용 설명
시작 화면
Unified 스니핑 -> 시작
스니핑선택 후 새로운 메뉴 시작 Start 스니핑 시작/중지 대상 Targets IP, MAC, 포트에 따른 대상 지정 및 예외 지정 호스트 Hosts 로컬 호스트 검색/목록 보기 View 연결 - 통신 상태, 내용 프로파일 - 감지된 호스트 IP, MAC, OS, 서비스, 암호 통계 - 트래픽 및 감지/탐지 내용에 대한 통계 해킹 MITM ARP 망치기, ICMP 재설정, 포트 훔치기, DHCP 변조 필터 Filters 필터 가져 오기, 필터링 멈추기 로깅 Logging 스니핑 중에만 작동, 스니핑 중지하면 작동 안 함 (바이너리 형태 정보, 텍스트 형태 주요 추출 정보) 플러그인 Plugins ARP_COP, Finger, link_type, DNS_spoof, dos_attack, isolate, rand_flood, remote_browser, reply_arp
GUI 메뉴
호스트 - 로컬 호스트 의미 세부 정보 없음
프로파일 - 탐지된 호스트 정보 세부 정보: 감지된 호스트 IP, MAC, OS, 서비스, 암호 (컬럼에 X 경우)
탐지된 연결 정보 세부 정보: 감지된 호스트 IP, MAC, OS, 서비스, 암호 (컬럼에 * 경우)
연결 트래픽 데이터 흐름에 따라 보기, 호스트에 따라 개별적으로 보기
통계
MITM - 해킹위해 Redirect (경로 재설정) Target - 대상 관계 깊음 ARP poisoning 특정 타겟의 ARP cache를 망침 ettercap으로 트래픽을 redirect 가능해짐 ICMP redirect 더 좋은 라우팅 경로라고 속임 ettercap으로 트래픽을 redirect 가능해짐 Port stealing <- 스위치의 포트 스위치 환경에서 ARP 포이즈닝이 효과 없을 경우 스니핑에 유용 ARP 패킷 대량 발생 시킴 DHCP spoofing 게이트웨이 주소 조작하여 IP 설정 정보 제공
플러그인 - Search, Detection Find_ip Subnet 안에서 사용하지 않는 ip 주소를 찾아준다. Finger 수동적으로 리모트 호스트 핑거프린팅 gre_relay GRE redirected 리모트 트래픽 탐지 gw_discover Gateway 찾아준다. scan_poisoner 다른 감염된 ARP poisoner 를 찾아준다. search_promisc 두 가지 각기 다른 ARP request를 보내서 응답 있으면 난잡 모드로 판단 실제 ARP request를 보내는 경우에는 작동 안 하는 것이 좋음 Link_type hub/switch 환경인지 탐지한다. arp_cop 의심스러운 ARP 트래픽 리포트 - ARP 포이즈닝, IP 충돌, IP 변동 호스트 리스트 있으면 좀 더 정확하게 탐지 가능 find_conn LAN(스위칭 환경) 상에서 접속된 현황을 찾아준다. find_ettercap Ettercap을 작동하고 있는 패킷 탐지 remote_browser 리모트 웹 페이지 내용을 보여 줌
플러그인 - Attack chk_poison DNS_spoof dos_attack isolate rand_flood ARP 포이즈닝 공격이 성공했는지 체크 DNS_spoof DNS 쿼리를 가로채서 엉뚱한 응답, 목록 파일로 etter.dns 사용 dos_attack 대상 호스트에 대해 포트 스캔을 실행하여 SYN flooding 수행 가상 호스트 이용 IP 스푸핑 사용, 공격 모드에서 작동 isolate 특정 호스트를 LAN에서 분리, ARP cache를 감염시킴 파라메터로 희생량과 통신불가 호스트 리스트 가짐 rand_flood 임의의 MAC 주소로 LAN을 감염 시킴 reply_arp 공격자의 MAC 주소로 응답 SMB_clear 프로토콜 협상 조작 통해 클라이언트가 smb 암호를 clear-text 형태로 보내도록 함, 윈도우 환경에서는 실패 할 수 있음 SMB_Down SMB 인증 동안에 클라이언트가 NTLM2 암호 교환을 사용 안 하도록 세팅. LC4를 이용해 크랙 하기 쉬워짐 stp_mangler 최고 우선 순위의 스위치로 가장하는 Spanning tree BPDUs를 보냄 Ettercap이 unmanaged 네트워크 트래픽을 갖도록 함 PPTP PPTP_chapms1, PPTP_clear, PPTP_pap, PPTP_reneg
외장 툴: etterfilter, etterlog 바이너리 형태로 필터 파일 생성 필터 내용은 순차적이며 if 조건 가능, loop 지원 않음 C와 유사 etterlog : ettercap에서 생성한 로그 보기 프로그램 콘솔 커맨드
데모
시나리오(1) Live connections 이용 Live connections 를 계속적으로 탐지 호스트별 Profile 이 업데이트되는 것을 확인한다. Resolve IP Address를 선택하여 IP Address를 도메인으로 전환
시나리오(2) ID, PW 스니핑 (http) ID, PW 스니핑 (ftp) ID, PW 스니핑 (telnet) www.daum.net 에 접속 ID/PW를 입력하고 로그인한다. Ettercap 창에 ID/PW 정보가 뜨는 것을 확인한다. ID, PW 스니핑 (ftp) ftp superuser.co.kr 에 접속 ID, PW 스니핑 (telnet) telnet 10.3.254.36 에 접속 Ettercap 창에 ID/PW 정보가 뜨는 것을 확인한다
시나리오(3) Nmap 스케닝 nmap –sS –O 10.3.xxx.xx –p 1-1024 Ettercap 의 [view]-[connections]에서 패킷이 탐지되는 것을 확인한다.
시나리오(4) Passive OS Fingerprinting MITM Attack (ARP Poisoning) Sniffing 후 View -> Profiles 선택 (Etter) Localhost 에서 www.empas.com 로 접속을 시도한다. (Local) Host name => www.empas.com 란을 Double Click!! 한다. (Etter) Profile details 창이 뜨면서 해당 사이트의 다양한 서버 정보를 확인하다. (Etter) MITM Attack (ARP Poisoning) 내부 host <-> gateway, ARP Poisoning 후 내부 host -> 외부 telnet 연결 ID/PW sniffing, data (character) injection, kill connection
시나리오(5) MITM Attack (DNS Spoofing) /share/etter.dns 에서 특정 사이트에 대한 ip 를 다르게 세팅한다. cmd(win) 창에서 nslookup 으로 www.empas.com 확인 (세팅 전) Ettercap 을 실행 후 sniffing 모드에서 DNS_spoof 플러그인 적용 cmd(win) 창에서 nslookup 으로 www.empas.com 확인 (세팅 후)
부록
참고 사이트 ettercap.sourceforge.net http://www.milw0rm.org/